From fae5f003ad22087a7f057184c0f883b7fe82ae22 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Tue, 26 Aug 2014 21:34:06 +0200 Subject: [PATCH] [Reduction] #193: bread This function doesn't seem to be used outside pfopen(), and IDA struggles with that function, which explains the missing references. --- libs/master.lib/bread.asm | 80 +++++++++++++++++++++++++++++++++++++++ th02_main.asm | 46 +--------------------- th02_maine.asm | 47 +---------------------- th02_op.asm | 29 +------------- th03_main.asm | 29 +------------- th03_mainl.asm | 29 +------------- th03_op.asm | 29 +------------- th04_main.asm | 36 +----------------- th04_maine.asm | 32 +--------------- th04_op.asm | 33 +--------------- th05_main.asm | 30 +-------------- th05_maine.asm | 30 +-------------- th05_op.asm | 30 +-------------- 13 files changed, 95 insertions(+), 385 deletions(-) create mode 100644 libs/master.lib/bread.asm diff --git a/libs/master.lib/bread.asm b/libs/master.lib/bread.asm new file mode 100644 index 00000000..03df3e37 --- /dev/null +++ b/libs/master.lib/bread.asm @@ -0,0 +1,80 @@ +; master library - (pf.lib) +; +; Description: +; ファイルからの読み込み +; +; Functions/Procedures: +; int bread(void *buf,int size,bf_t bf); +; +; Parameters: +; buf 読み込み先 +; size 読み込みバイトバイト数 +; bf bfileハンドル +; +; Returns: +; 読み込んだバイト数 +; +; Binding Target: +; Microsoft-C / Turbo-C / Turbo Pascal +; +; Running Target: +; MS-DOS +; +; Requiring Resources: +; CPU: 186 +; +; Notes: +; buf+sizeが10000hを越えてはならない。 +; +; Assembly Language Note: +; +; +; Compiler/Assembler: +; TASM 3.0 +; OPTASM 1.6 +; +; Author: +; iR +; 恋塚昭彦 +; +; Revision History: +; BREAD.ASM 607 94-05-30 13:43 +; 95/ 1/10 Initial: bread.asm/master.lib 0.23 + +func BREAD ; bread() { + push BP + mov BP,SP + push SI + push DI + + ;arg buf:dataptr,siz:word,bf:word + buf = (RETSIZE+3)*2 + siz = (RETSIZE+2)*2 + bf = (RETSIZE+1)*2 + + mov DI,[BP+buf] + mov SI,[BP+siz] + cmp SI,0 + jle short @@_return + +@@_loop: push word ptr [BP+bf] + _call BGETC + + inc AH + jz short @@_return + s_mov [DI],AL + _mov ES,[BP+buf+2] + _mov ES:[DI],AL + inc DI + dec SI + jnz short @@_loop + +@@_return: + mov AX,DI + sub AX,[BP+buf] + + pop DI + pop SI + pop BP + ret (2+DATASIZE)*2 +endfunc ; } diff --git a/th02_main.asm b/th02_main.asm index 68f19fc2..1126b35e 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -120,48 +120,7 @@ loc_5C1: retf 4 sub_574 endp -; --------------------------------------------------------------------------- - nop - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_5C8 proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - mov di, [bp+arg_4] - mov si, [bp+arg_2] - cmp si, 0 - jle short loc_5ED - -loc_5D8: - push [bp+arg_0] - call bgetc - inc ah - jz short loc_5ED - mov es, [bp+arg_6] - mov es:[di], al - inc di - dec si - jnz short loc_5D8 - -loc_5ED: - mov ax, di - sub ax, [bp+arg_4] - pop di - pop si - pop bp - retf 8 -sub_5C8 endp +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp @@ -5914,8 +5873,7 @@ loc_3D20: push di push 20h ; ' ' push word ptr es:0 - push cs - call near ptr sub_5C8 + call bread inc byte_1E309 cmp byte_1E309, 0FFh mov bx, 2 diff --git a/th02_maine.asm b/th02_maine.asm index 0dd4ed11..db7ae9a4 100644 --- a/th02_maine.asm +++ b/th02_maine.asm @@ -161,49 +161,7 @@ loc_605: retf 4 sub_5B8 endp -; --------------------------------------------------------------------------- - nop - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_60C proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - push si - push di - mov di, [bp+arg_4] - mov si, [bp+arg_2] - cmp si, 0 - jle short loc_631 - -loc_61C: - push [bp+arg_0] - call bgetc - inc ah - jz short loc_631 - mov es, [bp+arg_6] - mov es:[di], al - inc di - dec si - jnz short loc_61C - -loc_631: - mov ax, di - sub ax, [bp+arg_4] - pop di - pop si - pop bp - retf 8 -sub_60C endp - +include libs/master.lib/bread.asm ; =============== S U B R O U T I N E ======================================= @@ -3588,8 +3546,7 @@ loc_2C26: push di push 20h ; ' ' push word ptr es:0 - push cs - call near ptr sub_60C + call bread inc byte_D713 cmp byte_D713, 0FFh mov bx, 2 diff --git a/th02_op.asm b/th02_op.asm index 4cc5a1a4..b3bc98b7 100644 --- a/th02_op.asm +++ b/th02_op.asm @@ -152,34 +152,7 @@ loc_605: pop bp retf 4 ; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_631 - -loc_61C: - push word ptr [bp+6] - call bgetc - inc ah - jz short loc_631 - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_61C - -loc_631: - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th03_main.asm b/th03_main.asm index aff0f03f..2f4c7b55 100644 --- a/th03_main.asm +++ b/th03_main.asm @@ -110,34 +110,7 @@ loc_5C1: pop bp retf 4 ; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_5ED - -loc_5D8: - push word ptr [bp+6] - call bgetc - inc ah - jz short loc_5ED - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_5D8 - -loc_5ED: - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th03_mainl.asm b/th03_mainl.asm index 2629c77e..57e8d9d0 100644 --- a/th03_mainl.asm +++ b/th03_mainl.asm @@ -163,34 +163,7 @@ loc_605: sub_5B8 endp ; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_631 - -loc_61C: - push word ptr [bp+6] - call bgetc - inc ah - jz short loc_631 - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_61C - -loc_631: - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th03_op.asm b/th03_op.asm index 0c5066f4..ca672eca 100644 --- a/th03_op.asm +++ b/th03_op.asm @@ -123,34 +123,7 @@ loc_5C1: sub_574 endp ; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_5ED - -loc_5D8: - push word ptr [bp+6] - call bgetc - inc ah - jz short loc_5ED - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_5D8 - -loc_5ED: - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th04_main.asm b/th04_main.asm index a86e5233..50bac6e5 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -163,38 +163,7 @@ loc_6F1: sub_6A4 endp ; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_71D - -loc_708: - push word ptr [bp+6] - call bgetc - inc ah - -loc_711: - ; sub_2266+9r - jz short loc_71D - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_708 - -loc_71D: - ; seg000:loc_711j - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp @@ -3564,8 +3533,7 @@ arg_2 = word ptr 6 push di xor ax, ax mov es, ax - assume es:seg000 - mov al, byte ptr es:loc_711+1 + mov al, byte ptr es:[712h] inc ax mov dx, ax shl dx, 1 diff --git a/th04_maine.asm b/th04_maine.asm index d142d1a5..3c494425 100644 --- a/th04_maine.asm +++ b/th04_maine.asm @@ -162,37 +162,7 @@ loc_6F1: sub_6A4 endp ; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_71D - -loc_708: - push word ptr [bp+6] - call bgetc - inc ah - -loc_711: - jz short loc_71D - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_708 - -loc_71D: - ; seg000:loc_711j - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th04_op.asm b/th04_op.asm index c94c796a..16a27255 100644 --- a/th04_op.asm +++ b/th04_op.asm @@ -151,38 +151,7 @@ loc_6F1: pop bp retf 4 ; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_71D - -loc_708: - push word ptr [bp+6] - call bgetc - inc ah - -loc_711: - ; seg000:250Er ... - jz short loc_71D - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_708 - -loc_71D: - ; seg000:loc_711j - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th05_main.asm b/th05_main.asm index aba7300c..e446eb68 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -161,35 +161,7 @@ loc_6CF: retf 4 sub_682 endp -; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_6FB - -loc_6E6: - push word ptr [bp+6] - call bgetc - inc ah - jz short loc_6FB - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_6E6 - -loc_6FB: - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th05_maine.asm b/th05_maine.asm index e4d6fe71..9e8451f2 100644 --- a/th05_maine.asm +++ b/th05_maine.asm @@ -162,35 +162,7 @@ loc_6CF: retf 4 sub_682 endp -; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_6FB - -loc_6E6: - push word ptr [bp+6] - call bgetc - inc ah - jz short loc_6FB - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_6E6 - -loc_6FB: - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp diff --git a/th05_op.asm b/th05_op.asm index 927f9711..a4682cf4 100644 --- a/th05_op.asm +++ b/th05_op.asm @@ -160,35 +160,7 @@ loc_6CF: retf 4 sub_682 endp -; --------------------------------------------------------------------------- - nop - push bp - mov bp, sp - push si - push di - mov di, [bp+0Ah] - mov si, [bp+8] - cmp si, 0 - jle short loc_6FB - -loc_6E6: - push word ptr [bp+6] - call bgetc - inc ah - jz short loc_6FB - mov es, word ptr [bp+0Ch] - mov es:[di], al - inc di - dec si - jnz short loc_6E6 - -loc_6FB: - mov ax, di - sub ax, [bp+0Ah] - pop di - pop si - pop bp - retf 8 +include libs/master.lib/bread.asm ; --------------------------------------------------------------------------- push bp mov bp, sp