-bug with zx_screen in func_ram_rom_drv.asm

This commit is contained in:
Anatoliy Belyanskiy 2023-11-05 04:52:10 +10:00
parent fe3456f584
commit 6d2385871e
5 changed files with 75 additions and 63 deletions

View File

@ -711,23 +711,24 @@ FN_5x_Parser:
; ‚室 ¢ ä㭪樨 <20>ˆŽ ¨§ TR-DOS ; ‚室 ¢ ä㭪樨 <20>ˆŽ ¨§ TR-DOS
EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠 EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠
EX (SP),HL ;EX (SP),HL
IN A,(RGADR) ;IN A,(RGADR)
LD L,A ;LD L,A
LD A,#C0 ;LD A,#C0
OUT (PORT_Y),A ;OUT (PORT_Y),A
LD A,H ;LD A,H
EX (SP),HL ; (SP) = port_y ;EX (SP),HL ; (SP) = port_y
POP AF
; ;
CALL EXP_FNS_RST18 CALL EXP_FNS_RST18
CALL DOS_ON CALL DOS_ON
; ¢®§¢à é ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠 ; ¢®§¢à é ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠
EX (SP),HL ;EX (SP),HL
PUSH AF ;PUSH AF
LD A,L ;LD A,L
OUT (RGADR),A ;OUT (RGADR),A
POP AF ;POP AF
POP HL ;POP HL
; ¢®§¢à â ; ¢®§¢à â
JP EXP_FNS_RET JP EXP_FNS_RET

View File

@ -30,18 +30,18 @@ EMM.GetMemSize:
; ;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR ;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
; ˆ­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨. ; ˆ­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨.
EMM.InitMem: EMM.InitMem:
PUSH BC PUSH BC
PUSH HL PUSH HL
PUSH DE PUSH DE
IN A,(SLOT1) IN A,(SLOT3)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD HL,SYS_PAGE.RAMD_FAT - #4000 - #4000 ; €¤à¥á FAT އ“. LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000 ; €¤à¥á FAT އ“.
; ®¡­ã«ï¥¬ â ¡«¨æã ; ®¡­ã«ï¥¬ â ¡«¨æã
XOR A XOR A
.loopFree: .loopFree:
@ -68,20 +68,20 @@ EMM.InitMem:
LD (HL),A LD (HL),A
; ˆ­¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks ; ˆ­¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
XOR A XOR A
LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000 LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000
LD B,SYS_PAGE.RAMD_KEYS.NUM LD B,SYS_PAGE.RAMD_KEYS.NUM
.loop2: LD (HL),A .loop2: LD (HL),A
INC L INC L
DJNZ .loop2 DJNZ .loop2
; [x] 4/11/23 ; [x] 4/11/23
LD HL,SYS_PAGE.Sp_RAMD_KEYS - #4000 - #4000 LD HL,SYS_PAGE.Sp_RAMD_KEYS; - #4000 - #4000
LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
.loop3: LD (HL),A .loop3: LD (HL),A
INC L INC L
DJNZ .loop3 DJNZ .loop3
; ;
LD A,C LD A,C
OUT (SLOT1),A OUT (SLOT3),A
POP DE POP DE
POP HL POP HL
POP BC POP BC
@ -115,7 +115,7 @@ RESERVED_PAGES:
; ;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR ;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
; <20>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes, ; <20>®«ãç¨âì ¡«®ª ¯ ¬ï⨠N bytes,
; ‚室: B - ç¨á«® ­¥®¡å®¤¨¬ëå ¡«®ª®¢ ; ‚室: B - ç¨á«® ­¥®¡å®¤¨¬ëå ¡«®ª®¢
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨ ; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
@ -124,12 +124,12 @@ RESERVED_PAGES:
EMM.GetMem: EMM.GetMem:
;PUSH DE ;PUSH DE
PUSH BC PUSH BC
IN A,(SLOT1) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD C,B ; á®åà ­¨âì ç¨á«® ­ã¦­ëå ¡«®ª®¢ LD C,B ; á®åà ­¨âì ç¨á«® ­ã¦­ëå ¡«®ª®¢
LD HL,SYS_PAGE.RAMD_FAT - #4000 - #4000 LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
; –¨ª« ¯à®¢¥àª¨ ­ «¨ç¨ï ­ã¦­ëå ¡«®ª®¢. ; –¨ª« ¯à®¢¥àª¨ ­ «¨ç¨ï ­ã¦­ëå ¡«®ª®¢.
.loop: DEC L .loop: DEC L
JR Z,.noRAM JR Z,.noRAM
@ -141,7 +141,7 @@ EMM.GetMem:
; Œ¥áâ® ¥áâì ! ; Œ¥áâ® ¥áâì !
LD B,C ; ‚®ááâ ­®¢¨âì ­ã¦­ë© ®¡ê¥¬ ¤¨áª  LD B,C ; ‚®ááâ ­®¢¨âì ­ã¦­ë© ®¡ê¥¬ ¤¨áª 
LD C,#FF ; Œ…’Š€ ŠŽ<C5A0>€ RAM-Disk LD C,#FF ; Œ…’Š€ ŠŽ<C5A0>€ RAM-Disk
LD HL,SYS_PAGE.RAMD_FAT - #4000 - #4000 LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
; ‡ ¯®«­¨âì RAMD_FAT ; ‡ ¯®«­¨âì RAMD_FAT
.loop2: DEC L .loop2: DEC L
@ -154,7 +154,7 @@ EMM.GetMem:
; L - 㪠§ â¥«ì 楯®çª¨. ; L - 㪠§ â¥«ì 楯®çª¨.
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT3),A
LD A,L LD A,L
AND A AND A
POP BC POP BC
@ -163,7 +163,7 @@ EMM.GetMem:
.noRAM: LD L,1 ; <20> <20>€ŒŸˆ .noRAM: LD L,1 ; <20> <20>€ŒŸˆ
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT3),A
LD A,L LD A,L
SCF SCF
POP BC POP BC
@ -212,13 +212,14 @@ EMM.FreeMemRMD:
SCF SCF
RET Z RET Z
LD C,A LD C,A
IN A,(SLOT1) IN A,(SLOT3)
LD B,A LD B,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD H,high SYS_PAGE.RAMD_FAT; - #4000 - #4000
LD (HL),0 LD (HL),0
LD A,B LD A,B
OUT (SLOT1),A OUT (SLOT3),A
LD A,C LD A,C
;JR EMM.FreeMem ;JR EMM.FreeMem
;------[ ;------[
@ -231,12 +232,12 @@ EMM.FreeMem:
RET Z RET Z
LD L,A LD L,A
IN A,(SLOT1) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) ; !FIXIT SAFE_RGADR LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000) ; !FIXIT SAFE_RGADR +
LD A,L LD A,L
EMM_F3M_L1: EMM_F3M_L1:
LD L,A LD L,A
@ -248,14 +249,14 @@ EMM_F3M_L1:
JR NZ,EMM_F3M_L1 ; ¯à®¤®«¦ âì JR NZ,EMM_F3M_L1 ; ¯à®¤®«¦ âì
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT3),A
LD A,0 ;!FIXIT ­¥¤®ªã¬¥­â¨à®¢ ­® XOR A ;!FIXIT ­¥¤®ªã¬¥­â¨à®¢ ­®
AND A ;AND A
RET RET
EMM_FN3M_ERR: EMM_FN3M_ERR:
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT3),A
LD A,2 ;!FIXIT ­¥¤®ªã¬¥­â¨à®¢ ­® LD A,2 ;!FIXIT ­¥¤®ªã¬¥­â¨à®¢ ­®
SCF SCF
RET RET
@ -446,11 +447,20 @@ BLK_RD_WR:
LD C,A LD C,A
LD A,R LD A,R
PUSH AF PUSH AF
; á®å࠭塞 PORT_Y
IN A,(PORT_Y)
PUSH AF
LD A,#C0
OUT (PORT_Y),A
;
LD A,C LD A,C
DI DI
CALL .start CALL .start
; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨©
EX AF,AF' EX AF,AF'
; ¢®ááâ ­ ¢«¨¢ ¥¬ PORT_Y
POP AF
OUT (PORT_Y),A
; ¢®ááâ ­ ¢«¨¢ ¥¬ á®áâ®ï­¨¥ ¯à¥à뢠­¨©
POP AF POP AF
JP PO,.noInterrupts JP PO,.noInterrupts
EI EI
@ -931,7 +941,7 @@ GET_RAMD_ST:
; ;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR ;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
; RAM-Disk A, BLK - B ; RAM-Disk A, BLK - B
BLK_TO_RAMD: BLK_TO_RAMD:
CP SYS_PAGE.RAMD_KEYS.NUM CP SYS_PAGE.RAMD_KEYS.NUM
@ -941,12 +951,12 @@ BLK_TO_RAMD:
PUSH HL PUSH HL
LD L,A LD L,A
IN A,(SLOT1) IN A,(SLOT3)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD A,L LD A,L
LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000 LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000
ADD A,L ADD A,L
LD L,A LD L,A
LD A,(HL) ; ª«îç ¡«®ª  LD A,(HL) ; ª«îç ¡«®ª 
@ -955,17 +965,16 @@ BLK_TO_RAMD:
LD (HL),B LD (HL),B
LD A,C LD A,C
OUT (SLOT1),A OUT (SLOT3),A
LD A,B LD A,B
AND A AND A
POP HL POP HL
RET RET
;
BLK_BUSY: BLK_BUSY:
LD A,C LD A,C
OUT (SLOT1),A OUT (SLOT3),A
SCF SCF
POP HL POP HL
RET RET
@ -975,7 +984,7 @@ BLK_BUSY:
; ;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR ;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
; RAM-Disk A ; RAM-Disk A
RAMD_CLEAR: RAMD_CLEAR:
CP SYS_PAGE.RAMD_KEYS.NUM CP SYS_PAGE.RAMD_KEYS.NUM
@ -985,12 +994,12 @@ RAMD_CLEAR:
PUSH HL PUSH HL
LD L,A LD L,A
IN A,(SLOT1) IN A,(SLOT3)
LD C,A LD C,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD A,L LD A,L
LD HL,SYS_PAGE.RAMD_KEYS - #4000 - #4000 ; RAM-Disk ᢮¡®¤¥­ LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000 ; RAM-Disk ᢮¡®¤¥­
ADD A,L ADD A,L
LD L,A LD L,A
LD B,A ; § ¯®¬­¨âì 㤠«ï¥¬ë© à ¬¤¨áª LD B,A ; § ¯®¬­¨âì 㤠«ï¥¬ë© à ¬¤¨áª
@ -999,7 +1008,7 @@ RAMD_CLEAR:
JR Z,BLK_BUSY ; ¢®§¢à â á ®è¨¡ª®© JR Z,BLK_BUSY ; ¢®§¢à â á ®è¨¡ª®©
LD (HL),0 LD (HL),0
LD A,C LD A,C
OUT (SLOT1),A OUT (SLOT3),A
AND A AND A
POP HL POP HL
@ -1010,7 +1019,7 @@ RAMD_CLEAR:
; ;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR ;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠­  ¤¢  ¡«®ª  ; à §¤¥«¨âì ¡«®ª ¯ ¬ï⨠­  ¤¢  ¡«®ª 
; A - ¡«®ª, B - ¤«¨­  ¯¥à¢®£® ¡«®ª  ¯®á«¥ à §¤¥«¥­¨ï ; A - ¡«®ª, B - ¤«¨­  ¯¥à¢®£® ¡«®ª  ¯®á«¥ à §¤¥«¥­¨ï
; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2 ; ¢ë室: A - ¡«®ª 1, B - ¡«®ª 2
@ -1025,19 +1034,19 @@ EMM.DivMemBlocks:
RET C RET C
LD D,A LD D,A
IN A,(SLOT1) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000)
LD L,D LD L,D
LD A,(HL) LD A,(HL)
LD (HL),#FF LD (HL),#FF
LD B,A LD B,A
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT3),A
LD A,E LD A,E
AND A AND A
@ -1048,17 +1057,17 @@ EMM.DivMemBlocks:
; ;
;----------------------------------------------------------------------; !FIXIT SAFE_RGADR ;----------------------------------------------------------------------; !FIXIT SAFE_RGADR +
; ᫨âì ¤¢  ¡«®ª  ¯ ¬ï⨠¢ ®¤¨­ ; ᫨âì ¤¢  ¡«®ª  ¯ ¬ï⨠¢ ®¤¨­
; € - ¡«®ª 1, B - ¡«®ª 2 ; € - ¡«®ª 1, B - ¡«®ª 2
; ¢ë室: € - ¡«®ª ; ¢ë室: € - ¡«®ª
EMM.MergeMemBlocks: EMM.MergeMemBlocks:
LD E,A LD E,A
IN A,(SLOT1) IN A,(SLOT3)
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT1),A OUT (SLOT3),A
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000) LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000)
LD L,E LD L,E
LD C,B LD C,B
LD B,0 LD B,0
@ -1073,7 +1082,7 @@ EMM.MergeMemBlocks:
.EMM_ADD_ERR: .EMM_ADD_ERR:
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT3),A
SCF SCF
RET RET
@ -1083,7 +1092,7 @@ EMM.MergeMemBlocks:
JR Z,.EMM_ADD_ERR JR Z,.EMM_ADD_ERR
LD (HL),A LD (HL),A
EX AF,AF' EX AF,AF'
OUT (SLOT1),A OUT (SLOT3),A
AND A AND A
LD A,E LD A,E
RET RET

View File

@ -423,6 +423,7 @@ CLEAR_RAM:
DI DI
LD C,BIOS.FullInit LD C,BIOS.FullInit
RST_to_BIOS RST_to_BIOS
;CALL ToBIOS_3D13
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥­î ᯥªâà㬠 ¢®§¢à â ¢ DSS ¯® CAD ; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥­î ᯥªâà㬠 ¢®§¢à â ¢ DSS ¯® CAD
; ¡ã¤¥â ®¯ á­ë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì), ; ¡ã¤¥â ®¯ á­ë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â . ; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â .

View File

@ -63,6 +63,7 @@ CLEAR_RAM:
DI DI
LD C,BIOS.FullInit LD C,BIOS.FullInit
RST_to_BIOS RST_to_BIOS
;CALL ToBIOS_3D13
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥­î ᯥªâà㬠 ¢®§¢à â ¢ DSS ¯® CAD ; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥­î ᯥªâà㬠 ¢®§¢à â ¢ DSS ¯® CAD
; ¡ã¤¥â ®¯ á­ë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì), ; ¡ã¤¥â ®¯ á­ë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â . ; ¯®í⮬㠮⪫îç ¥¬ ¯¥à¥å¢ â à¥á¥â .

Binary file not shown.