Call BIOS API instead of use MemHack

This commit is contained in:
Anatoliy Belyanskiy 2023-12-09 04:46:58 +10:00
parent 0b262da641
commit e52bedc0f4
2 changed files with 85 additions and 77 deletions

View File

@ -288,7 +288,7 @@ START:
RST ToBIOS RST ToBIOS
LD A,2 LD A,2
LD C,BIOS.FN_SINC LD C,BIOS.FN_SYNC
RST ToBIOS RST ToBIOS
@ -348,7 +348,7 @@ BEGIN:
EX AF,AF' EX AF,AF'
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(RAMD_KEYS.H) LD A,(SYS_PAGE.RAMD_KEYS.H)
LD (SND_P),A LD (SND_P),A
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
@ -642,8 +642,8 @@ FON_LOAD:
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD A,(RAMD_KEYS.G) LD A,(SYS_PAGE.RAMD_KEYS.G)
LD H, high RAMD_FAT LD H, high SYS_PAGE.RAMD_FAT
LD L,A LD L,A
EX AF,AF' EX AF,AF'
LD A,(HL) LD A,(HL)
@ -888,7 +888,7 @@ NO_EXX:
*/ */
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
LD H, high RAMD_FAT LD H, high SYS_PAGE.RAMD_FAT
LD A,(NEXT_SPRITE) LD A,(NEXT_SPRITE)
LD L,A LD L,A
LD L,(HL) LD L,(HL)
@ -901,7 +901,7 @@ NO_EXX:
LD (NEXT_SPRITE),A LD (NEXT_SPRITE),A
INC A INC A
RET NZ RET NZ
LD A,(RAMD_KEYS.F) LD A,(SYS_PAGE.RAMD_KEYS.F)
LD (IX+SPRITE_TBL.Slot),A LD (IX+SPRITE_TBL.Slot),A
LD (IX+SPRITE_TBL.Slot+SPRITE_TBL),A LD (IX+SPRITE_TBL.Slot+SPRITE_TBL),A
LD (IX+SPRITE_TBL.Slot+SPRITE_TBL*2),A LD (IX+SPRITE_TBL.Slot+SPRITE_TBL*2),A
@ -1049,7 +1049,7 @@ L_DDX:
AND A AND A
JR NZ,NO_SNDP JR NZ,NO_SNDP
LD H, high RAMD_FAT LD H, high SYS_PAGE.RAMD_FAT
LD A,(SND_P) LD A,(SND_P)
LD L,A LD L,A
LD A,SYS_PAGE LD A,SYS_PAGE
@ -1061,7 +1061,7 @@ L_DDX:
LD (SND_A),HL LD (SND_A),HL
JR NZ,NO_SNDP JR NZ,NO_SNDP
LD A,(RAMD_KEYS.H) LD A,(SYS_PAGE.RAMD_KEYS.H)
LD (SND_P),A LD (SND_P),A
NO_SNDP: NO_SNDP:
@ -1074,7 +1074,6 @@ NO_SNDP:
POP HL POP HL
LD A,(save_border) LD A,(save_border)
OUT (BorderColor),A OUT (BorderColor),A
POP AF POP AF
EI EI
RETI RETI
@ -1128,7 +1127,7 @@ SND_A+*: ld hl,#4000
CP #80 CP #80
JR C,NO_SNDP JR C,NO_SNDP
LD H, high RAMD_FAT - #80 LD H, high SYS_PAGE.RAMD_FAT - #80
LD A,(SND_P) LD A,(SND_P)
LD L,A LD L,A
LD A,SYS_PAGE LD A,SYS_PAGE
@ -1139,7 +1138,7 @@ SND_A+*: ld hl,#4000
LD HL,#4000 LD HL,#4000
checkLastPage+*: cp 0 checkLastPage+*: cp 0
jp nz,1F jp nz,1F
LD A,(RAMD_KEYS.H) LD A,(SYS_PAGE.RAMD_KEYS.H)
LD (SND_P),A LD (SND_P),A
ld hl,_lastPageMuzOffset ld hl,_lastPageMuzOffset
1: LD (SND_A),HL 1: LD (SND_A),HL
@ -1226,7 +1225,7 @@ IM2_Proc:
; NC --> A = 䨧.­®¬¥à ¯®á«¥¤­¥© áâà ­¨æë ¡«®ª  ; NC --> A = 䨧.­®¬¥à ¯®á«¥¤­¥© áâà ­¨æë ¡«®ª 
; CF --> å¥à ¥£® §­ ¥â, ®è¨¡ª  ª ª ï-â® ; CF --> å¥à ¥£® §­ ¥â, ®è¨¡ª  ª ª ï-â®
GetLastPageNumber: GetLastPageNumber:
ld h, high RAMD_FAT ld h, high SYS_PAGE.RAMD_FAT
inc a inc a
ld l,a ld l,a
@ -1284,7 +1283,13 @@ EXIT_TO_DSS:
IF MODE_CBL && MUSIC_22khz IF MODE_CBL && MUSIC_22khz
CALL MemHack.restore 1: CALL MemHack.restore
JR NC,1F
LD A,R
AND 7
OUT (BorderColor),A
JR 1B
1: ;
ENDIF ENDIF
@ -1488,80 +1493,83 @@ RMD_UNMAP:
;---[ MemHack ] ;---[ MemHack ]
IF MODE_CBL && MUSIC_22khz IF MODE_CBL && MUSIC_22khz
MemHack: MemHack:
.free: .free: LD A,ZX_RAM_ID
LD C,BIOS.FreeMem
JP ToBIOS
; IN A,(SLOT3)
; EX AF,AF'
; LD A,SYS_PAGE
; OUT (SLOT3),A
IN A,(SLOT3) ; LD HL,SYS_PAGE.RAMD_FAT
EX AF,AF' ; LD DE,.Buff
LD A,SYS_PAGE ; xor a
OUT (SLOT3),A ; ACC_SetBlockSize
; cp #10
; ACC_CopyBlock
; cp (hl)
; ld (de),a
; ACC_FillOneByte
; ld (hl),a
; ACC_Off
LD HL,RAMD_FAT ; LD DE,.Buff + #10
LD DE,.Buff ; LD L,DCP_PAGE ; #C240
xor a ; LD A,(HL)
ACC_SetBlockSize ; LD (DE),A
cp #10 ; INC DE
ACC_CopyBlock ; LD (HL),#50 ; Video Page
cp (hl) ; INC L ; #C241
ld (de),a
ACC_FillOneByte
ld (hl),a
ACC_Off
LD DE,.Buff + #10 ; xor a
LD L,DCP_PAGE ; #C240 ; ACC_SetBlockSize
LD A,(HL) ; cp #07
LD (DE),A ; ACC_CopyBlock
INC DE ; cp (hl)
LD (HL),#50 ; Video Page ; ld (de),a
INC L ; #C241 ; ACC_FillOneByte
; ld (hl),a
; ACC_Off
xor a ; EX AF,AF'
ACC_SetBlockSize ; OUT (SLOT3),A
cp #07 ; RET
ACC_CopyBlock
cp (hl)
ld (de),a
ACC_FillOneByte
ld (hl),a
ACC_Off
EX AF,AF'
OUT (SLOT3),A
RET
.restore: .restore:
IN A,(SLOT3) LD BC,4*256 + BIOS.REINIT
EX AF,AF' JP ToBIOS
LD A,SYS_PAGE ; IN A,(SLOT3)
OUT (SLOT3),A ; EX AF,AF'
; LD A,SYS_PAGE
; OUT (SLOT3),A
LD DE,RAMD_FAT ; LD DE,SYS_PAGE.RAMD_FAT
LD HL,.Buff ; LD HL,.Buff
ACC_SetBlockSize ; ACC_SetBlockSize
cp #10 ; cp #10
ACC_CopyBlock ; ACC_CopyBlock
cp (hl) ; cp (hl)
ld (de),a ; ld (de),a
ACC_Off ; ACC_Off
LD HL,.Buff + #10 ; LD HL,.Buff + #10
LD E,DCP_PAGE ; #C240 ; LD E,DCP_PAGE ; #C240
LD A,(HL) ; LD A,(HL)
LD (DE),A ; LD (DE),A
INC HL ; INC HL
INC E ; INC E
ACC_SetBlockSize ; ACC_SetBlockSize
cp #7 ; cp #7
ACC_CopyBlock ; ACC_CopyBlock
cp (hl) ; cp (hl)
ld (de),a ; ld (de),a
ACC_Off ; ACC_Off
EX AF,AF' ; EX AF,AF'
OUT (SLOT3),A ; OUT (SLOT3),A
RET ;RET
.Buff: BLOCK #10+1+7, #FF .Buff: BLOCK #10+1+7, #FF
ENDIF ENDIF

@ -1 +1 @@
Subproject commit 6e27011b6259b0256ce65d91a53ef1185223eafa Subproject commit 21c7eb690adb62e35c41fdcda76dc3bf97f369b4