fixed bug in EMM.FreeMem from previous commit
This commit is contained in:
parent
6265aedb5c
commit
8b94cc4e63
@ -711,10 +711,9 @@ POST_5_OK:
|
||||
; OUT (SLOT1),A
|
||||
; LD A,2 ;!HARDCODE zx page number
|
||||
; OUT (SLOT2),A
|
||||
LD A,#FF ;!HARDCODE zx page number
|
||||
OUT (SLOT2),A ;!HARDCODE zx page number
|
||||
DEC A ; LD A,#FF ;!HARDCODE zx page number
|
||||
OUT (SLOT1),A
|
||||
LD A,0 ;!HARDCODE zx page number
|
||||
OUT (SLOT2),A
|
||||
;
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
@ -303,7 +303,7 @@ FN_HDD_READ:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD H,high SYS_PAGE.RAMD_FAT
|
||||
LD H,high SYS_PAGE.RAM_TABLE
|
||||
LD L,A
|
||||
LD A,(HL)
|
||||
OUT (SLOT3),A
|
||||
@ -374,7 +374,7 @@ HD_WR_LOOP:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
EX AF,AF'
|
||||
LD H,high SYS_PAGE.RAMD_FAT
|
||||
LD H,high SYS_PAGE.RAM_TABLE
|
||||
LD L,A
|
||||
LD A,(HL)
|
||||
OUT (SLOT3),A
|
||||
|
||||
@ -11,7 +11,7 @@ EMM.GetMemSize: IN A,(SLOT1)
|
||||
OUT (SLOT1),A
|
||||
XOR A
|
||||
LD C,A
|
||||
LD HL,SYS_PAGE.RAMD_FAT-#4000-#4000
|
||||
LD HL,SYS_PAGE.RAM_TABLE-#4000-#4000
|
||||
;
|
||||
.loop: DEC L
|
||||
JR Z,.exit
|
||||
@ -58,7 +58,7 @@ EMM.InitMem:
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD HL,SYS_PAGE.RAMD_FAT ; €¤à¥á RAM FAT ¢ އ“.
|
||||
LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á RAM FAT ¢ އ“.
|
||||
; ®¡ã«ï¥¬ â ¡«¨æã
|
||||
XOR A
|
||||
.loopFree:
|
||||
@ -85,13 +85,13 @@ EMM.InitMem:
|
||||
LD (HL),A
|
||||
; ˆ¨æ¨ «¨§ æ¨ï ª«î祩 RAM-Disks
|
||||
XOR A
|
||||
LD HL,SYS_PAGE.RAMD_KEYS; - #4000 - #4000
|
||||
LD HL,SYS_PAGE.RAMD_KEYS
|
||||
LD B,SYS_PAGE.RAMD_KEYS.NUM
|
||||
.loop2: LD (HL),A
|
||||
INC L
|
||||
DJNZ .loop2
|
||||
; [x] 04/11/2023
|
||||
LD HL,SYS_PAGE.Sp_RAMD_KEYS; - #4000 - #4000
|
||||
LD HL,SYS_PAGE.Sp_RAMD_KEYS
|
||||
LD B,SYS_PAGE.Sp_RAMD_KEYS.NUM
|
||||
.loop3: LD (HL),A
|
||||
INC L
|
||||
@ -140,13 +140,51 @@ RESERVED_PAGES:
|
||||
; ‚ë室: L,A - Š‹ž— RAM-Disk/ª®¤ ®è¨¡ª¨
|
||||
; CF - ¯à¨§ ª ®è¨¡ª¨
|
||||
;EMM_FN2M:
|
||||
EMM.GetMem: PUSH BC
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
LD HL,SYS_PAGE.RAM_TABLE
|
||||
XOR A
|
||||
LD C,#FF ; Œ¥âª ª®æ à ¬¡«®ª
|
||||
; ‡ ¯®«¨âì RAM_TABLE
|
||||
.loop2: DEC L
|
||||
JR Z,.error_no_mem
|
||||
CP (HL)
|
||||
JR NZ,.loop2
|
||||
LD (HL),C
|
||||
LD C,L
|
||||
DJNZ .loop2
|
||||
; L = 㪠§ â¥«ì æ¥¯®çª¨.
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
AND A
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
.error_no_mem: EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
LD A,C
|
||||
CALL EMM.FreeMem
|
||||
LD L,BIOS.Error.EMM.NoMemory
|
||||
LD A,L
|
||||
SCF
|
||||
POP BC
|
||||
RET
|
||||
|
||||
|
||||
|
||||
/*
|
||||
EMM.GetMem: PUSH BC
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD C,B ; á®åà ¨âì ç¨á«® ã¦ëå ¡«®ª®¢
|
||||
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000
|
||||
LD HL,SYS_PAGE.RAM_TABLE
|
||||
; –¨ª« ¯à®¢¥àª¨ «¨ç¨ï ã¦ëå ¡«®ª®¢.
|
||||
XOR A
|
||||
.loop: DEC L
|
||||
@ -159,8 +197,8 @@ EMM.GetMem: PUSH BC
|
||||
; Œ¥áâ® ¥áâì !
|
||||
LD B,C ; ‚®ááâ ®¢¨âì ã¦ë© ®¡ê¥¬ ¤¨áª
|
||||
LD C,#FF ; Œ…’Š€ ŠŽ<C5A0>–€ RAM-Disk
|
||||
LD L,A ;low SYS_PAGE.RAMD_FAT; - #4000 - #4000
|
||||
; ‡ ¯®«¨âì RAMD_FAT
|
||||
LD L,A ;low SYS_PAGE.RAM_TABLE
|
||||
; ‡ ¯®«¨âì RAM_TABLE
|
||||
; A = 0
|
||||
.loop2: DEC L
|
||||
; LD A,(HL)
|
||||
@ -185,6 +223,7 @@ EMM.GetMem: PUSH BC
|
||||
SCF
|
||||
POP BC
|
||||
RET
|
||||
*/
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
@ -244,12 +283,18 @@ EMM.FreeMemRMD:
|
||||
; <20>… <20>Ž<EFBFBD>’ˆ’œ DE!!!
|
||||
;EMM_FN3M:
|
||||
EMM.FreeMem:
|
||||
AND A
|
||||
; [ ] free zx pages! ⥯¥àì ¥«ì§ï ®á¢®¡®¤¨âì áâà ¨æã #FF
|
||||
SCF
|
||||
INC A
|
||||
RET Z
|
||||
DEC A
|
||||
;AND A
|
||||
;SCF
|
||||
;
|
||||
RET Z
|
||||
;
|
||||
LD L,A
|
||||
CP ZX_RAM_ID
|
||||
CP ZX_RAM_ID ;!FIXIT ; [ ] free zx pages!
|
||||
CALL Z,SET_ROM_FLAG_ZX
|
||||
;
|
||||
IN A,(SLOT3)
|
||||
@ -257,7 +302,7 @@ EMM.FreeMem:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD H,high (SYS_PAGE.RAMD_FAT)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE)
|
||||
LD A,L
|
||||
EMM_F3M_L1:
|
||||
LD L,A
|
||||
@ -308,7 +353,7 @@ EMM.GetMemPage:
|
||||
OUT (SLOT1),A
|
||||
|
||||
INC B
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
EMM_F4M_L1:
|
||||
LD A,(HL)
|
||||
AND A
|
||||
@ -355,7 +400,7 @@ EMM.GetMemPageNext:
|
||||
OUT (SLOT1),A
|
||||
|
||||
LD A,H
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD L,(HL)
|
||||
OUT (SLOT1),A
|
||||
LD A,L
|
||||
@ -395,7 +440,7 @@ EMM.GetMemBlkPages:
|
||||
LD C,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD L,(HL)
|
||||
LD A,C
|
||||
OUT (SLOT1),A
|
||||
@ -429,7 +474,7 @@ EMM.GetMemBlkPages:
|
||||
; CP #FF
|
||||
; JR Z,.end
|
||||
; ;
|
||||
; LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
; LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
; LD L,(HL)
|
||||
; INC B
|
||||
; JR NZ,.loop
|
||||
@ -528,7 +573,7 @@ BLK_RD_WR:
|
||||
OUT (SLOT1),A
|
||||
LD A,H
|
||||
|
||||
LD H,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD L,A
|
||||
|
||||
INC D
|
||||
@ -612,7 +657,7 @@ BLK_RD_WR:
|
||||
|
||||
IN A,(SLOT1)
|
||||
LD E,A
|
||||
LD D,high (SYS_PAGE.RAMD_FAT - #4000 - #4000)
|
||||
LD D,high (SYS_PAGE.RAM_TABLE - #4000 - #4000)
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD A,(DE)
|
||||
@ -623,7 +668,7 @@ BLK_RD_WR:
|
||||
.BLK_PAGE3_X:
|
||||
IN A,(SLOT3)
|
||||
LD E,A
|
||||
LD D,high SYS_PAGE.RAMD_FAT
|
||||
LD D,high SYS_PAGE.RAM_TABLE
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD A,(DE)
|
||||
@ -1074,7 +1119,7 @@ EMM.DivMemBlocks:
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE); - #4000 - #4000)
|
||||
LD L,D
|
||||
LD A,(HL)
|
||||
LD (HL),#FF
|
||||
@ -1102,7 +1147,7 @@ EMM.MergeMemBlocks:
|
||||
EX AF,AF'
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
LD H,high (SYS_PAGE.RAMD_FAT); - #4000 - #4000)
|
||||
LD H,high (SYS_PAGE.RAM_TABLE); - #4000 - #4000)
|
||||
LD L,E
|
||||
LD C,B
|
||||
LD B,0
|
||||
|
||||
@ -154,7 +154,7 @@ PIC_FN3_NO_2ND:
|
||||
EX AF,AF'
|
||||
OUT (SLOT2),A
|
||||
EX AF,AF'
|
||||
LD HL,SYS_PAGE.RAMD_FAT
|
||||
LD HL,SYS_PAGE.RAM_TABLE
|
||||
LD L,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
|
||||
@ -335,7 +335,7 @@ REINIT: DEC B
|
||||
RET NZ
|
||||
.ReinitZXpages: ;4
|
||||
LD DE,RESERVED_PAGES ; â ¡«¨æ § ïâëå á¨á⥬ëå áâà ¨æ
|
||||
LD HL,SYS_PAGE.RAMD_FAT ; €¤à¥á FAT އ“.
|
||||
LD HL,SYS_PAGE.RAM_TABLE ; €¤à¥á FAT އ“.
|
||||
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
@ -364,7 +364,7 @@ REINIT: DEC B
|
||||
JR NC,.errorzxloop_noChanges
|
||||
|
||||
DEC DE
|
||||
LD H,high SYS_PAGE.RAMD_FAT
|
||||
LD H,high SYS_PAGE.RAM_TABLE
|
||||
LD A,(DE)
|
||||
LD L,A
|
||||
LD A,#FF
|
||||
|
||||
@ -25,6 +25,59 @@
|
||||
MANAGE_ZX_PAGES:
|
||||
|
||||
|
||||
|
||||
.GET_SCORP: IN A,(SLOT3)
|
||||
LD E,A
|
||||
LD A,SYS_PAGE
|
||||
OUT (SLOT3),A
|
||||
; ¢ë¤¥«¨âì áâà ¨æë ᪮à¯
|
||||
XOR A
|
||||
LD BC,#08*256 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª ª®æ à ¬¡«®ª
|
||||
LD HL,SYS_PAGE.RAM_TABLE
|
||||
.allocate_loop: DEC L
|
||||
JR Z,.error_no_mem
|
||||
CP (HL)
|
||||
JR NZ,.allocate_loop
|
||||
;
|
||||
CALL .check_barred_pages
|
||||
LD A,0
|
||||
JR Z,.allocate_loop
|
||||
;
|
||||
LD (HL),C
|
||||
LD C,L
|
||||
DJNZ .allocate_loop
|
||||
; L = 㪠§ â¥«ì æ¥¯®çª¨.
|
||||
AND A
|
||||
.exit: LD A,E
|
||||
OUT (SLOT3),A
|
||||
LD A,L
|
||||
RET
|
||||
; 䨫ìâà ¤«ï áâà ¨æ ᪮à¯
|
||||
;¢ë室: ZF=1 - áâà ¨æ ¥ ¯®¤å®¤¨â
|
||||
.check_barred_pages:
|
||||
; check reset page
|
||||
LD A,L
|
||||
CP RESET_PAGE
|
||||
RET C
|
||||
RET Z
|
||||
; check isa page
|
||||
AND #F0
|
||||
XOR #D0 ; áâà ¨æë ISA #D0..#DF
|
||||
RET NZ
|
||||
LD L,#D0
|
||||
RET
|
||||
;
|
||||
.error_no_mem: PUSH DE
|
||||
LD A,C
|
||||
CALL EMM.FreeMem
|
||||
POP DE
|
||||
LD L,BIOS.Error.EMM.NoMemory
|
||||
SCF
|
||||
JR .exit
|
||||
|
||||
|
||||
/*
|
||||
;
|
||||
.GET_SCORP: IN A,(SLOT3)
|
||||
LD E,A
|
||||
LD A,SYS_PAGE
|
||||
@ -80,6 +133,7 @@ MANAGE_ZX_PAGES:
|
||||
.error_no_mem: LD L,BIOS.Error.EMM.NoMemory
|
||||
SCF
|
||||
JR .exit
|
||||
*/
|
||||
;-----------------------------------------------------------------------;
|
||||
ENDIF
|
||||
|
||||
|
||||
@ -265,7 +265,7 @@ CLEARM: IN A,(SLOT3)
|
||||
LDIR
|
||||
; ¢®ááâ ¢«¨¢ ¥¬ RAM ¤¨áª¨
|
||||
LD IX,SYS_PAGE.RAMD_KEYS ;RAM DISKS
|
||||
LD H,high SYS_PAGE.RAMD_FAT
|
||||
LD H,high SYS_PAGE.RAM_TABLE
|
||||
LD D,high MEMMAP2
|
||||
LD BC,SYS_PAGE.RAMD_KEYS.NUM*256+#FF
|
||||
CALL .MEMLOOP
|
||||
@ -1357,7 +1357,7 @@ RCHAIN:
|
||||
|
||||
CCHAIN:
|
||||
LD HL,MEMMAP2
|
||||
LD DE,SYS_PAGE.RAMD_FAT
|
||||
LD DE,SYS_PAGE.RAM_TABLE
|
||||
XOR A
|
||||
CCHAINC:
|
||||
CP (HL)
|
||||
|
||||
@ -5,9 +5,7 @@
|
||||
; .setXYpos EQU 3
|
||||
; .setInt EQU 4
|
||||
; .setVsinc EQU 5
|
||||
; DEFINE SPTeam_year '2022'
|
||||
; DEFINE Disk_subsystem_ver_txt '3.05'
|
||||
; DEFINE SetupVer '2.55'
|
||||
|
||||
LUA ALLPASS
|
||||
function get_key_for_value(t, value)
|
||||
for column=1,2 do
|
||||
|
||||
Loading…
Reference in New Issue
Block a user