From d47321c53b63c307950e7b6831c36a88d26fb730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Fri, 30 Jul 2021 16:06:56 +0300 Subject: [PATCH] Scan for ^Z --- edlin.asm | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/edlin.asm b/edlin.asm index 3a63945..c1a8820 100644 --- a/edlin.asm +++ b/edlin.asm @@ -28,6 +28,10 @@ sys_block_read equ 0x27 db 0x03, 0xF9 ; 023E add di, cx (direction swapped) %endmacro +%macro sub_cx_di 0 + db 0x2b, 0xcf ; sub cx, di (direction swapped) +%endmacro + %macro or_al_al 0 db 0x0a, 0xc0 ; or al, al (direction swapped) %endmacro @@ -42,8 +46,11 @@ sys_block_read equ 0x27 %macro mov_dx_cx 0 db 0x8b, 0xD1 ; mov dx, cx (direction swapped) %endmacro +%macro mov_di_cx 0 + db 0x8b, 0xf9 ; mov di, cx (direction swapped) +%endmacro %macro mov_di_dx 0 - db 0x8B, 0xfa ; mov di, dx (direction swapped) + db 0x8b, 0xfa ; mov di, dx (direction swapped) %endmacro %macro cmp_byteaddr_bytext 2 @@ -175,7 +182,7 @@ read_file: mov dx, psp_fcb_1 mov ah, sys_block_read int 0x21 - call __035e + call find_file_end_char add_di_cx __0240: @@ -300,18 +307,22 @@ db 0x17 ; 035A pop ss db 0x04, 0xA6 ; 035B add al,0xa6 db 0x08 ; 035D db 0x08 -__035e: -db 0x57 ; 035E push di -db 0x51 ; 035F push cx -db 0xB0, 0x1A ; 0360 mov al,0x1a -db 0xF2, 0xAE ; 0362 repne scasb -db 0x8B, 0xF9 ; 0364 mov di,cx -db 0x59 ; 0366 pop cx -db 0x9F ; 0367 lahf -db 0x2B, 0xCF ; 0368 sub cx,di -db 0x9E ; 036A sahf -db 0x5F ; 036B pop di -db 0xC3 ; 036C ret +find_file_end_char: ; 035e + push di + push cx + + mov al, 0x1a ; ^Z + repne scasb + mov_di_cx + + pop cx + lahf + sub_cx_di + sahf + + pop di + ret + db 0xE9, 0x8E, 0x00 ; 036D jmp 0x3fe db 0xF6, 0x06, 0x7E, 0x0A, 0xFF ; 0370 test byte [0xa7e],0xff db 0x75, 0xF6 ; 0375 jnz 0x36d