-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
EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠
EX (SP),HL
IN A,(RGADR)
LD L,A
LD A,#C0
OUT (PORT_Y),A
LD A,H
EX (SP),HL ; (SP) = port_y
;EX (SP),HL
;IN A,(RGADR)
;LD L,A
;LD A,#C0
;OUT (PORT_Y),A
;LD A,H
;EX (SP),HL ; (SP) = port_y
POP AF
;
CALL EXP_FNS_RST18
CALL DOS_ON
; ¢®§¢à é ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠
EX (SP),HL
PUSH AF
LD A,L
OUT (RGADR),A
POP AF
POP HL
;EX (SP),HL
;PUSH AF
;LD A,L
;OUT (RGADR),A
;POP AF
;POP HL
; ¢®§¢à â
JP EXP_FNS_RET

View File

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

View File

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

View File

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

Binary file not shown.