always error if VERIFY

This commit is contained in:
Tolik 2025-10-21 22:22:07 +10:00
parent 029da1a946
commit 5d912a7320

View File

@ -7,7 +7,7 @@
; The Spectrum ROMs are copyright Amstrad, who have kindly given permission ; The Spectrum ROMs are copyright Amstrad, who have kindly given permission
; to reverse engineer and publish ROM disassemblies. ; to reverse engineer and publish ROM disassemblies.
DEFINE NEW_TAP_PROC ; DEFINE NEW_TAP_PROC
; ===== ; =====
; NOTES ; NOTES
; ===== ; =====
@ -1397,10 +1397,10 @@ L04AA: CALL L24FB ; routine SCANNING to evaluate expression.
ELSE ;--------------------------------------------------------------------- ELSE ;---------------------------------------------------------------------
NEW_TAP: ; ¤®áâ ñ¬ ¯ à ¬¥âàë NEW_TAP: ; ¤®áâ ñ¬ ¯ à ¬¥âàë
; áâ ¢¨¬ SYS_PAGE ; áâ ¢¨¬ SYS_PAGE
PUSH AF ;RL E ; CF - verify/read
EX AF,AF' ; AF ------------------v
; ;
LD A,#0F ; make the border white and mic off.
OUT (BorderColor),A ; output to port.
; ;
LD C,SLOT3 LD C,SLOT3
IN B,(C) IN B,(C)
@ -1410,13 +1410,13 @@ NEW_TAP: ;
OUT (C),A OUT (C),A
; ¡¥àñ¬ 㪠§ â¥«ì ­  ⥪ã饥 ¯®«®¦¥­¨¥ ¢ ¡«®ª¥ ¨ ¢â몠¥¬ ¡«®ª ; ¡¥àñ¬ 㪠§ â¥«ì ­  ⥪ã饥 ¯®«®¦¥­¨¥ ¢ ¡«®ª¥ ¨ ¢â몠¥¬ ¡«®ª
EXX EXX
; LD HL,(SYS_PAGE.TAP_FULL_SIZE)
; LD A,(SYS_PAGE.TAP_FULL_SIZE + 2)
; OR H
; IN A,(SLOT2)
; LD C,A
LD A,(SYS_PAGE.TAP_RAM_BLK) LD A,(SYS_PAGE.TAP_RAM_BLK)
INC A ; INC A
; RET Z ; error, end TAP
; DEC A
OUT (SLOT2),A
LD L,A
LD A,#0F ; make the border white and mic off.
JP NEW_TAP2.MAIN JP NEW_TAP2.MAIN
; ;
_mInfoBLOCK #04C2-$,#FF _mInfoBLOCK #04C2-$,#FF
@ -1931,93 +1931,47 @@ L05ED: INC B ; increment the time-out counter.
L0556: L0556:
NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET
PUSH HL ; is saved on stack as terminating routine. PUSH HL ; is saved on stack as terminating routine.
RET NC ; !FIXIT ­¥ ¯®¤¤¥à¦¨¢ ¥âáï Verify RET NC
; ;
.next_blk: DI .next_blk: DI
EXX EXX
PUSH BC PUSH BC
PUSH DE PUSH DE
PUSH HL PUSH HL
;LD L,1 ; ¬ àª¥à ¡«®ª  ¯à®¯ãáª/ç⥭¨¥ - 0/1
CALL NEW_TAP CALL NEW_TAP
; ;
EX AF,AF' ; AF ------------------v EX AF,AF' ; AF ------------------v
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD (SYS_PAGE.TAP_RAM_POINT),HL EX AF,AF' ; AF ------------------^
EXX JR C,.save_HL
JR NZ,.no_save_HL
.save_HL: LD (SYS_PAGE.TAP_RAM_POINT),HL
.no_save_HL: EXX
OUT (C),B OUT (C),B
POP HL POP HL
POP DE POP DE
POP BC .exit: POP BC
EXX EXX
.shared_Exit: EX AF,AF' ; AF ------------------^
;LD DE,0
;LD A,1
RET RET
; ;
.MAIN: ; ; AF ------------------v
;OUT (SLOT2),A
; LD L,A
;!FIXIT ᤥ« âì ¯¥à¥¬®âªã ¡«®ª  ; LD A,#0F ; make the border white and mic off.
.error_size: POP AF OUT (BorderColor),A ; output to port.
.error_end_tap: XOR A
INC A
RET
;
.SetNewPage: LD A,SYS_PAGE
OUT (SLOT3),A
EX AF,AF' ; AF ------------------v
; A = current page of ram block
LD HL,(SYS_PAGE.TAP_RAM_BLK)
LD H, high SYS_PAGE.RAM_TABLE LD H, high SYS_PAGE.RAM_TABLE
LD A,(HL) LD A,(HL)
LD (SYS_PAGE.TAP_RAM_BLK),A
LD HL,#C000
EXX
OUT (C),B
EXX
CP #FF
JR NZ,.shared_Exit
; error
EX AF,AF' ; AF ------------------^
SCF
RET ; error
;
.MAIN: ;=======================================================
JP Z,.error_size
DEC A
;;;;;
OUT (SLOT2),A
LD L,A
LD H, high SYS_PAGE.RAM_TABLE
LD A,(HL)
;
LD HL,(SYS_PAGE.TAP_RAM_POINT) LD HL,(SYS_PAGE.TAP_RAM_POINT)
RES 6,H RES 6,H
SET 7,H
OUT (SLOT3),A OUT (SLOT3),A
;IN A,(SLOT2) ; ®¡à ¡®âª  ¡«®ª  TAP
;;;;;
;EX AF,AF' ; AF ------------------v
; EXX
; OUT (C),B
; EXX
; ;
; POP AF
; ; ®¡à ¡®âª  ¡«®ª  TAP
; EX AF,AF' ; AF ------------------v
; OUT (SLOT3),A
; ¡¥àñ¬ ¤«¨­ã ¡«®ª  ; ¡¥àñ¬ ¤«¨­ã ¡«®ª 
LD A,(HL) LD A,(HL)
INC HL INC HL
;
LD B,(HL) LD B,(HL)
INC HL INC HL
;
LD C,(HL) LD C,(HL)
INC HL INC HL
SET 6,H SET 6,H
@ -2025,8 +1979,11 @@ NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET
EXX EXX
OUT (C),B OUT (C),B
RES 5,C RES 5,C
PUSH AF
IN A,(SLOT2) IN A,(SLOT2)
OUT (C),H OUT (C),H
CP #FF
JR Z,.exit
LD H,A LD H,A
SET 5,C SET 5,C
LD L,1 ; ¬ àª¥à ¡«®ª  ¯à®¯ãáª/ç⥭¨¥ - 0/1 LD L,1 ; ¬ àª¥à ¡«®ª  ¯à®¯ãáª/ç⥭¨¥ - 0/1
@ -2043,15 +2000,12 @@ NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET
; ;
EXX EXX
; ZF = 0 ¥á«¨ ­ã¦­ë© ¡«®ª ; ZF = 0 ¥á«¨ ­ã¦­ë© ¡«®ª
EX AF,AF' ; AF ------------------v
LD A,H LD A,H
EX AF,AF' ; AF ------------------^
JR Z,.ThatBlock JR Z,.ThatBlock
LD L,0 ; ¯à®¯ã᪠¡«®ª  LD L,0 ; ¯à®¯ã᪠¡«®ª 
;LD E,A ; âà¥¡ã¥¬ë© ¡«®ª
.ThatBlock: EXX .ThatBlock: EXX
; ¢®ááâ ­ ¢«¨¢ ¥¬ áâà ­¨æã ¯®«ì§®¢ â¥«ï
; EX AF,AF'
; IN A,(SLOT3)
EX AF,AF'
; ZF = 0 ¥á«¨ ­ã¦­ë© ¡«®ª ; ZF = 0 ¥á«¨ ­ã¦­ë© ¡«®ª
JR NZ,.normSize JR NZ,.normSize
; ¯à®¢¥à塞 ᮮ⢥âá⢨¥ à §¬¥à  ¡«®ª  § ¯à è¨¢ ¥¬®¬ã ; ¯à®¢¥à塞 ᮮ⢥âá⢨¥ à §¬¥à  ¡«®ª  § ¯à è¨¢ ¥¬®¬ã
@ -2064,14 +2018,30 @@ NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET
RET NZ ;!FIXIT ᤥ« âì ¯¥à¥¬®âªã ¡«®ª  RET NZ ;!FIXIT ᤥ« âì ¯¥à¥¬®âªã ¡«®ª 
; ;
.normSize: INC BC ; á ãçñ⮬ ¡ ©â  ª®­â஫쭮© áã¬¬ë ¢ ª®­æ¥ ¡«®ª  TAP .normSize: INC BC ; á ãçñ⮬ ¡ ©â  ª®­â஫쭮© áã¬¬ë ¢ ª®­æ¥ ¡«®ª  TAP
.LoopTAP: LD A,H .LoopTAP: BIT 7,H
OR L JR NZ,.ok_HL
CALL Z,.SetNewPage
JR C,.error_end_tap
; ;
EX AF,AF' .SetNewPage: LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
EX AF,AF' LD A,#C0
OR H
LD H,A
EX AF,AF' ; AF ------------------v
; A = current page of ram block
LD D, high SYS_PAGE.RAM_TABLE
LD E,A
LD A,(DE)
LD (SYS_PAGE.TAP_RAM_BLK),A
EXX
OUT (C),B
EXX
CP #FF
RET Z ; error
EX AF,AF' ; AF ------------------^
;
.ok_HL: EX AF,AF' ; AF ------------------v
OUT (SLOT3),A
EX AF,AF' ; AF ------------------^
LD A,(HL) LD A,(HL)
CPI CPI
EXX EXX
@ -2084,21 +2054,21 @@ NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET
AND A AND A
JR Z,.LoopTAP ; skip write JR Z,.LoopTAP ; skip write
EXX EXX
;!FIXIT ¤®¡ ¢¨âì âãâ Verify ;RR E ; CF - verify/read
;LD A,H ;JR C,.noVerify
;XOR (IX) ;LD A,(IX)
;RET NZ ;XOR H
; ;EXX
LD (IX),H ; RET NZ
;EXX
.noVerify: LD (IX),H
;RL E ; CF - verify/read
EXX EXX
INC IX INC IX
JR .LoopTAP JR .LoopTAP
;======================================================= ;
_mInfoBLOCK #0605-$,#FF _mInfoBLOCK #0605-$,#FF
ENDIF ENDIF ;=======================================================
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------