mirror of
https://github.com/Tolik-Trek/ZX-SP-ROMs.git
synced 2026-06-17 10:20:33 +03:00
tap fixes
This commit is contained in:
parent
8246c09cf5
commit
029da1a946
287
SP__48.ASM
287
SP__48.ASM
@ -1395,28 +1395,31 @@ L04AA: CALL L24FB ; routine SCANNING to evaluate expression.
|
||||
RET ; return.
|
||||
|
||||
ELSE ;---------------------------------------------------------------------
|
||||
NEW_TAP.MAIN: ; ¤®áâ ñ¬ ¯ à ¬¥âàë
|
||||
.MAIN: ; áâ ¢¨¬ SYS_PAGE
|
||||
PUSH AF
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
; ¡¥àñ¬ 㪠§ ⥫ì ⥪ã饥 ¯®«®¦¥¨¥ ¢ ¡«®ª¥ ¨ ¢âëª ¥¬ ¡«®ª
|
||||
EXX
|
||||
; LD HL,(SYS_PAGE.TAP_RAM_BLK)
|
||||
; LD H, high SYS_PAGE.RAM_TABLE
|
||||
; LD A,(HL)
|
||||
LD A,(SYS_PAGE.TAP_RAM_BLK)
|
||||
;!TODO check error - 0 or FF
|
||||
LD HL,(SYS_PAGE.TAP_RAM_POINT)
|
||||
EX AF,AF'
|
||||
NEW_TAP: ; ¤®áâ ñ¬ ¯ à ¬¥âàë
|
||||
; áâ ¢¨¬ SYS_PAGE
|
||||
PUSH AF
|
||||
;
|
||||
LD A,#0F ; make the border white and mic off.
|
||||
OUT (BorderColor),A ; output to port.
|
||||
;
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
IN A,(SLOT2)
|
||||
LD H,A
|
||||
.skip: LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
; ¡¥àñ¬ 㪠§ ⥫ì ⥪ã饥 ¯®«®¦¥¨¥ ¢ ¡«®ª¥ ¨ ¢âëª ¥¬ ¡«®ª
|
||||
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)
|
||||
INC A
|
||||
JP NEW_TAP2.MAIN
|
||||
;
|
||||
OUT (C),B
|
||||
POP AF
|
||||
JP NEW_TAP.MAIN2
|
||||
BLOCK #04C2-$,#FF
|
||||
_mInfoBLOCK #04C2-$,#FF
|
||||
ENDIF
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
@ -1926,121 +1929,175 @@ L05ED: INC B ; increment the time-out counter.
|
||||
|
||||
ELSE ;---------------------------------------------------------------------
|
||||
L0556:
|
||||
NEW_TAP: DI
|
||||
;JR NC,.Error ; ¥ ¯®¤¤¥à¦¨¢ ¥âáï Verify
|
||||
RET NC
|
||||
NEW_TAP2: LD HL,L053F ; Address: SA/LD-RET
|
||||
PUSH HL ; is saved on stack as terminating routine.
|
||||
RET NC ; !FIXIT ¥ ¯®¤¤¥à¦¨¢ ¥âáï Verify
|
||||
;
|
||||
.next_blk: DI
|
||||
EXX
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
EXX
|
||||
CALL NEW_TAP.MAIN
|
||||
;LD L,1 ; ¬ àª¥à ¡«®ª ¯à®¯ãáª/ç⥨¥ - 0/1
|
||||
CALL NEW_TAP
|
||||
;
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
INC HL
|
||||
LD (SYS_PAGE.TAP_RAM_POINT),HL
|
||||
EX AF,AF' ; AF ------------------v
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD (SYS_PAGE.TAP_RAM_POINT),HL
|
||||
EXX
|
||||
OUT (C),B
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
EXX
|
||||
LD DE,0
|
||||
OUT (C),B
|
||||
EX AF,AF'
|
||||
EI
|
||||
.shared_Exit: EX AF,AF' ; AF ------------------^
|
||||
;LD DE,0
|
||||
;LD A,1
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
|
||||
;!FIXIT ᤥ« âì ¯¥à¥¬®âªã ¡«®ª
|
||||
.error_size: POP AF
|
||||
.error_end_tap: XOR A
|
||||
INC A
|
||||
RET
|
||||
;
|
||||
.MAIN2: PUSH DE ; à §¬¥à ¤ ëå
|
||||
; ®¡à ¡®âª ¡«®ª TAP
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
; ¡¥àñ¬ ¤«¨ã ¡«®ª
|
||||
EXX
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD D,(HL)
|
||||
INC HL
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
EX AF,AF'
|
||||
; ¯à®¢¥à塞 ⨯ ¡«®ª ¨ âà¥¡ã¥¬ë© ¡«®ª
|
||||
CP E
|
||||
EX AF,AF'
|
||||
LD E,A
|
||||
EX AF,AF'
|
||||
DEC DE
|
||||
DEC DE
|
||||
EXX
|
||||
JR NZ,.skipThatBlock
|
||||
.skipThatBlock: ;!FIXIT
|
||||
; ¢®ááâ ¢«¨¢ ¥¬ áâà ¨æã ¯®«ì§®¢ ⥫ï
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
OUT (C),B
|
||||
; ¯à®¢¥à塞 ᮮ⢥âá⢨¥ à §¬¥à ¡«®ª § ¯à 訢 ¥¬®¬ã
|
||||
EXX
|
||||
POP BC
|
||||
EX DE,HL
|
||||
AND A
|
||||
SBC HL,BC
|
||||
EX DE,HL
|
||||
SCF
|
||||
CCF
|
||||
RET NZ
|
||||
;
|
||||
;EXX
|
||||
.LoopTAP: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD A,(HL)
|
||||
;CPI
|
||||
INC HL
|
||||
DEC BC
|
||||
EXX
|
||||
OUT (C),B
|
||||
EXX
|
||||
LD (IX),A
|
||||
INC IX
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,.NoSetNewPage
|
||||
;
|
||||
;;;;;;;;;;;;;;;;;;;;
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD HL,#C000
|
||||
EXX
|
||||
.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
|
||||
EX AF,AF'
|
||||
LD A,(HL)
|
||||
LD (SYS_PAGE.TAP_RAM_BLK),A
|
||||
OUT (C),B
|
||||
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)
|
||||
RES 6,H
|
||||
OUT (SLOT3),A
|
||||
;IN A,(SLOT2)
|
||||
;;;;;
|
||||
;EX AF,AF' ; AF ------------------v
|
||||
; EXX
|
||||
; OUT (C),B
|
||||
; EXX
|
||||
; ;
|
||||
; POP AF
|
||||
|
||||
; ; ®¡à ¡®âª ¡«®ª TAP
|
||||
; EX AF,AF' ; AF ------------------v
|
||||
; OUT (SLOT3),A
|
||||
; ¡¥àñ¬ ¤«¨ã ¡«®ª
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
;
|
||||
LD B,(HL)
|
||||
INC HL
|
||||
;
|
||||
LD C,(HL)
|
||||
INC HL
|
||||
SET 6,H
|
||||
EX AF,AF' ; AF ------------------^
|
||||
EXX
|
||||
OUT (C),B
|
||||
RES 5,C
|
||||
IN A,(SLOT2)
|
||||
OUT (C),H
|
||||
LD H,A
|
||||
SET 5,C
|
||||
LD L,1 ; ¬ àª¥à ¡«®ª ¯à®¯ãáª/ç⥨¥ - 0/1
|
||||
EXX
|
||||
; ¯à®¢¥à塞 ⨯ ¡«®ª ¨ âà¥¡ã¥¬ë© ¡«®ª
|
||||
POP AF
|
||||
CP C
|
||||
; ZF = 0 ¥á«¨ ã¦ë© ¡«®ª
|
||||
EX AF,AF' ; AF ------------------v
|
||||
LD C,A
|
||||
EX AF,AF' ; AF ------------------^
|
||||
DEC BC
|
||||
DEC BC
|
||||
;
|
||||
EXX
|
||||
CP #FF
|
||||
JR NZ,.NotEnd
|
||||
;
|
||||
EX AF,AF;
|
||||
LD A,B
|
||||
OR C
|
||||
RET NZ
|
||||
EX AF,AF;
|
||||
.NotEnd: EX AF,AF'
|
||||
;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
.NoSetNewPage: LD A,B
|
||||
OR C
|
||||
JR NZ,.LoopTAP
|
||||
; ZF = 0 ¥á«¨ ã¦ë© ¡«®ª
|
||||
LD A,H
|
||||
JR Z,.ThatBlock
|
||||
LD L,0 ; ¯à®¯ã᪠¡«®ª
|
||||
;LD E,A ; âà¥¡ã¥¬ë© ¡«®ª
|
||||
.ThatBlock: EXX
|
||||
; ¢®ááâ ¢«¨¢ ¥¬ áâà ¨æã ¯®«ì§®¢ ⥫ï
|
||||
; EX AF,AF'
|
||||
; IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
; ZF = 0 ¥á«¨ ã¦ë© ¡«®ª
|
||||
JR NZ,.normSize
|
||||
; ¯à®¢¥à塞 ᮮ⢥âá⢨¥ à §¬¥à ¡«®ª § ¯à 訢 ¥¬®¬ã
|
||||
EX HL,DE ; ( ¤à¥á ¢ à ¬¡«®ª¥ TAP) <-> (à §¬¥à ¢å®¤®©)
|
||||
AND A
|
||||
SBC HL,BC ; (à §¬¥à ¢å®¤®©) - (à §¬¥à ¨§ â ¯)
|
||||
EX HL,DE ; (à §¬¥à ¤ ëå) <-> ( ¤à¥á ¢ à ¬¡«®ª¥ TAP)
|
||||
SCF
|
||||
CCF
|
||||
RET NZ ;!FIXIT ᤥ« âì ¯¥à¥¬®âªã ¡«®ª
|
||||
;
|
||||
SCF
|
||||
RET
|
||||
.normSize: INC BC ; á ãçñ⮬ ¡ ©â ª®â஫쮩 áã¬¬ë ¢ ª®æ¥ ¡«®ª TAP
|
||||
.LoopTAP: LD A,H
|
||||
OR L
|
||||
CALL Z,.SetNewPage
|
||||
JR C,.error_end_tap
|
||||
;
|
||||
BLOCK #0605-$,#FF
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD A,(HL)
|
||||
CPI
|
||||
EXX
|
||||
OUT (C),B
|
||||
LD H,A
|
||||
LD A,L
|
||||
EXX
|
||||
SCF
|
||||
RET PO
|
||||
AND A
|
||||
JR Z,.LoopTAP ; skip write
|
||||
EXX
|
||||
;!FIXIT ¤®¡ ¢¨âì âãâ Verify
|
||||
;LD A,H
|
||||
;XOR (IX)
|
||||
;RET NZ
|
||||
;
|
||||
LD (IX),H
|
||||
EXX
|
||||
INC IX
|
||||
JR .LoopTAP
|
||||
;=======================================================
|
||||
|
||||
|
||||
|
||||
_mInfoBLOCK #0605-$,#FF
|
||||
ENDIF
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit a9cc74a9eba4044c35c930159bda0b0dde5d429b
|
||||
Subproject commit 4da18d54c12e0f2ff4183be7a1cbf5882da1bd4f
|
||||
Loading…
Reference in New Issue
Block a user