From d9e98b2f836bbd5a5cde0915e5ebbe07e7975e9f Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Wed, 22 Oct 2025 18:23:06 +1000 Subject: [PATCH] tap_48: fixed #0562 --- SP__48.ASM | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/SP__48.ASM b/SP__48.ASM index dbdea77..2a4926f 100644 --- a/SP__48.ASM +++ b/SP__48.ASM @@ -1398,7 +1398,7 @@ L04AA: CALL L24FB ; routine SCANNING to evaluate expression. NEW_TAP: ; достаём параметры ; ставим SYS_PAGE ;RL E ; CF - verify/read - EX AF,AF' ; AF ------------------v + ;EX AF,AF' ; AF ------------------v ; ; @@ -1416,7 +1416,9 @@ NEW_TAP: ; ; DEC A OUT (SLOT2),A LD L,A - LD A,#0F ; make the border white and mic off. + ;LD A,#0F ; make the border white and mic off. + LD H, high SYS_PAGE.RAM_TABLE + LD A,(HL) JP NEW_TAP2.MAIN ; _mInfoBLOCK #04C2-$,#FF @@ -1675,7 +1677,6 @@ L0554: POP AF ; restore the accumulator. ; and DE holds the length of bytes to be loaded. If, on entry the carry flag ; is set then data is loaded, if reset then it is verified. - IFNDEF NEW_TAP_PROC;--------------------------------------------------------- ;; LD-BYTES L0556: INC D ; reset the zero flag without disturbing carry. @@ -1690,6 +1691,7 @@ L0556: INC D ; reset the zero flag without disturbing carry. LD HL,L053F ; Address: SA/LD-RET PUSH HL ; is saved on stack as terminating routine. + IFNDEF NEW_TAP_PROC;--------------------------------------------------------- ; the reading of the EAR bit (D6) will always be preceded by a test of the ; space key (D0), so store the initial post-test state. ;!TODO RAM-TAP LOADER @@ -1928,13 +1930,21 @@ L05ED: INC B ; increment the time-out counter. RET ; return. ELSE ;--------------------------------------------------------------------- -L0556: -NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET - PUSH HL ; is saved on stack as terminating routine. - RET NC +L0562: +NEW_TAP2: POP BC + PUSH BC + PUSH HL + LD HL,-#053F + ADD HL,BC + POP HL + JR NC,.no_556 ; -.next_blk: DI - EXX + EX AF,AF' + RET NC + EX AF,AF' + ; + ;DI +.no_556: EXX PUSH BC PUSH DE PUSH HL @@ -1959,9 +1969,9 @@ NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET ;OUT (SLOT2),A ; LD L,A ; LD A,#0F ; make the border white and mic off. - OUT (BorderColor),A ; output to port. - LD H, high SYS_PAGE.RAM_TABLE - LD A,(HL) + ;OUT (BorderColor),A ; output to port. + ; LD H, high SYS_PAGE.RAM_TABLE + ; LD A,(HL) LD HL,(SYS_PAGE.TAP_RAM_POINT) RES 6,H SET 7,H @@ -2004,7 +2014,7 @@ NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET LD A,H EX AF,AF' ; AF ------------------^ JR Z,.ThatBlock - LD L,0 ; пропуск блока +.verify_err: LD L,0 ; пропуск блока .ThatBlock: EXX ; ZF = 0 если нужный блок JR NZ,.normSize @@ -2058,9 +2068,8 @@ NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET ;JR C,.noVerify ;LD A,(IX) ;XOR H - ;EXX - ; RET NZ - ;EXX + ;!TODO сохранять для выхода статус ошибки верификации после перемотки + ;JR NZ,.verify_err .noVerify: LD (IX),H ;RL E ; CF - verify/read EXX