From 776c094c0a76f8f978cf629fa46eeb713700657b Mon Sep 17 00:00:00 2001 From: nmlgc Date: Thu, 28 Aug 2014 08:12:58 +0200 Subject: [PATCH] [Reduction] #253: super_clean --- libs/master.lib/super_clean.asm | 70 +++++++++++++++++++++++++++++++++ th02_main.asm | 45 ++++----------------- th04_main.asm | 37 ++--------------- th04_main_seg3+4.inc | 2 +- th05_main.asm | 38 ++---------------- 5 files changed, 85 insertions(+), 107 deletions(-) create mode 100644 libs/master.lib/super_clean.asm diff --git a/libs/master.lib/super_clean.asm b/libs/master.lib/super_clean.asm new file mode 100644 index 00000000..049d5b69 --- /dev/null +++ b/libs/master.lib/super_clean.asm @@ -0,0 +1,70 @@ +; superimpose & master library module +; +; Description: +; 指定番号範囲のパターンをすべて開放する +; +; Function/Procedures: +; void super_clean( int min_pat, int max_pat ) ; +; +; Parameters: +; min_pat 消去する最小パターン番号 +; max_pat 消去する最大パターン番号 +; +; Returns: +; none +; +; Binding Target: +; Microsoft-C / Turbo-C / Turbo Pascal +; +; Running Target: +; 8086 +; +; Requiring Resources: +; CPU: 8086 +; +; Notes: +; min_pat > max_pat だと何もしません。 +; +; Assembly Language Note: +; +; +; Compiler/Assembler: +; TASM 3.0 +; OPTASM 1.6 +; +; Author: +; 恋塚昭彦 +; +; Revision History: +; 93/12/25 Initial: supercln.asm/master.lib 0.22 + +func SUPER_CLEAN ; super_clean() { + push SI + mov SI,SP + push DI + + ; 引数 + @@min_pat = (RETSIZE+2)*2 + @@max_pat = (RETSIZE+1)*2 + + mov DI,SS:[SI+@@max_pat] + cmp DI,super_patnum + jl short @@MAX_OK + mov DI,super_patnum + dec DI +@@MAX_OK: + mov SI,SS:[SI+@@min_pat] + cmp SI,DI + ja short @@RETURN +@@C_LOOP: + push SI + _call SUPER_CANCEL_PAT +@@SKIP: + inc SI + cmp SI,DI + jbe short @@C_LOOP +@@RETURN: + pop DI + pop SI + ret 4 +endfunc ; } diff --git a/th02_main.asm b/th02_main.asm index 54a3e78e..55579c54 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -2767,38 +2767,7 @@ sub_2C40 endp include libs/master.lib/super_entry_at.asm include libs/master.lib/super_entry_bfnt.asm include libs/master.lib/super_cancel_pat.asm - -; =============== S U B R O U T I N E ======================================= - - -sub_2F56 proc far - ; sub_199B3+10P ... - push si - mov si, sp - push di - mov di, ss:[si+6] - cmp di, super_patnum - jl short loc_2F69 - mov di, super_patnum - dec di - -loc_2F69: - mov si, ss:[si+8] - cmp si, di - ja short loc_2F7B - -loc_2F71: - push si - call super_cancel_pat - inc si - cmp si, di - jbe short loc_2F71 - -loc_2F7B: - pop di - pop si - retf 4 -sub_2F56 endp +include libs/master.lib/super_clean.asm ; --------------------------------------------------------------------------- @@ -40559,7 +40528,7 @@ sub_1696B proc far mov byte_2287E, 2 call sub_12DE0 push large 8000C0h - call sub_2F56 + call super_clean mov super_patnum, 80h ; '' push ds push offset aStage5b1_bft ; "stage5b1.bft" @@ -46105,7 +46074,7 @@ sub_199B3 proc far call sub_1A6C5 call sub_12DE0 push large 8000C0h - call sub_2F56 + call super_clean push ds push offset aMima_bft ; "mima.bft" call super_entry_bfnt @@ -46115,7 +46084,7 @@ sub_199B3 proc far call sub_F618 call sub_1A529 push large 8000C0h - call sub_2F56 + call super_clean mov super_patnum, 80h ; '' push ds push offset aMima1_bft ; "mima1.bft" @@ -46410,7 +46379,7 @@ sub_19C8D proc near loc_19D48: push large 8000C0h - call sub_2F56 + call super_clean mov super_patnum, 80h ; '' push ds push offset aMima2_bft ; "mima2.bft" @@ -47638,7 +47607,7 @@ sub_1A7D5 proc far call sub_1A6C5 call sub_12DE0 push large 8000C0h - call sub_2F56 + call super_clean mov super_patnum, 80h ; '' push ds push offset aMima_bft_0 ; "mima.bft" @@ -47651,7 +47620,7 @@ sub_1A7D5 proc far push 0 call sub_1310B push large 8001FFh - call sub_2F56 + call super_clean mov super_patnum, 80h ; '' push ds push offset aStage3_b_bft ; "stage3_b.bft" diff --git a/th04_main.asm b/th04_main.asm index da5ca334..52e63b84 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -2607,38 +2607,7 @@ loc_29F5: include libs/master.lib/super_entry_at.asm include libs/master.lib/super_entry_bfnt.asm include libs/master.lib/super_cancel_pat.asm - -; =============== S U B R O U T I N E ======================================= - - -sub_2B4E proc far - ; sub_D1BC+2E2P ... - push si - mov si, sp - push di - mov di, ss:[si+6] - cmp di, super_patnum - jl short loc_2B61 - mov di, super_patnum - dec di - -loc_2B61: - mov si, ss:[si+8] - cmp si, di - ja short loc_2B73 - -loc_2B69: - push si - call super_cancel_pat - inc si - cmp si, di - jbe short loc_2B69 - -loc_2B73: - pop di - pop si - retf 4 -sub_2B4E endp +include libs/master.lib/super_clean.asm ; --------------------------------------------------------------------------- @@ -16364,7 +16333,7 @@ sub_B29E proc near call sub_B79E call sub_B9BB push large 800100h - call sub_2B4E + call super_clean mov si, 8 jmp short loc_B2C7 ; --------------------------------------------------------------------------- @@ -21220,7 +21189,7 @@ loc_D47B: loc_D498: push large 800100h ; jumptable 0000D1EC case 99 - call sub_2B4E + call super_clean jmp short loc_D508 ; --------------------------------------------------------------------------- diff --git a/th04_main_seg3+4.inc b/th04_main_seg3+4.inc index bfc8a0a5..a2cabf2b 100644 --- a/th04_main_seg3+4.inc +++ b/th04_main_seg3+4.inc @@ -20803,7 +20803,7 @@ loc_1E801: cmp byte_266D4, 6 jnz loc_1E8A4 push large 800100h - call sub_2B4E + call super_clean call sub_D6EB cmp byte_2D01E, 0 jnz short loc_1E89B diff --git a/th05_main.asm b/th05_main.asm index f3db2bb2..a1b603f4 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -2804,37 +2804,7 @@ loc_2C97: include libs/master.lib/super_entry_at.asm include libs/master.lib/super_entry_bfnt.asm include libs/master.lib/super_cancel_pat.asm - -; =============== S U B R O U T I N E ======================================= - - -sub_2DF0 proc far - push si - mov si, sp - push di - mov di, ss:[si+6] - cmp di, super_patnum - jl short loc_2E03 - mov di, super_patnum - dec di - -loc_2E03: - mov si, ss:[si+8] - cmp si, di - ja short loc_2E15 - -loc_2E0B: - push si - call super_cancel_pat - inc si - cmp si, di - jbe short loc_2E0B - -loc_2E15: - pop di - pop si - retf 4 -sub_2DF0 endp +include libs/master.lib/super_clean.asm ; --------------------------------------------------------------------------- @@ -16589,7 +16559,7 @@ sub_B609 proc near call sub_BEA4 call sub_BB82 push large 0B40100h - call sub_2DF0 + call super_clean mov si, 1 jmp short loc_B630 ; --------------------------------------------------------------------------- @@ -24851,7 +24821,7 @@ loc_F07C: cmp byte_25FEA, 6 jz short loc_F091 push large 0B40140h - call sub_2DF0 + call super_clean jmp loc_F181 ; --------------------------------------------------------------------------- @@ -25383,7 +25353,7 @@ sub_F4DD proc near mov bp, sp push si push large 240140h - call sub_2DF0 + call super_clean push ds push offset aSt06_16_bft ; "st06_16.bft" call super_entry_bfnt