This commit is contained in:
Tolik 2024-08-19 05:14:31 +10:00
parent 5791d4e591
commit 4e20113d78
7 changed files with 69 additions and 55 deletions

@ -1 +1 @@
Subproject commit b541d4221846090878c1de0138977e28139f7d14 Subproject commit aca9ce3f859bf53c76b0d710e108543226697f91

View File

@ -754,12 +754,12 @@ EXP_FNS:;
;! ! ! ! ! ! ! ! ;! ! ! ! ! ! ! !
FN_RESERVED_5x: FN_RESERVED_5x:
LD A,1 ;!HARDCODE error code LD A,BIOS.Error.InvalidSubFunction
FN_RESERVED: FN_RESERVED:
SCF SCF
RET RET
FN_ABSENT_5x: FN_ABSENT_5x:
LD A,#AA ;!HARDCODE error code LD A,BIOS.Error.NotSupported
SCF SCF
RET RET
;! ! ! ! ! ! ! ! ;! ! ! ! ! ! ! !

View File

@ -768,10 +768,10 @@ set_config:
OUT (RGADR),A OUT (RGADR),A
OUT (RGMOD),A OUT (RGMOD),A
OUT (SLOT3),A OUT (SLOT3),A
OUT (SLOT0),A OUT (SLOT0),A ;!HARDCODE zx page number
LD A,5 ; !HARDCODE page 5 LD A,5 ;!HARDCODE zx page number
OUT (SLOT1),A OUT (SLOT1),A
LD A,2 ; !HARDCODE page 2 LD A,2 ;!HARDCODE zx page number
OUT (SLOT2),A OUT (SLOT2),A
;********************************* ;*********************************

View File

@ -129,7 +129,8 @@ CD_5x_Extended:
JR C,TRAY_FN JR C,TRAY_FN
; ... ; ...
; ... ; ...
LD A,#AA ;!HARDCODE error code ;LD A,#AA
LD A,BIOS.Error.InvalidSubFunction
SCF SCF
RET RET
;[]================================================================[#5E] ;[]================================================================[#5E]
@ -263,9 +264,10 @@ AP_COM: EXX
SCF SCF
RET RET
.NO_ERR: .NO_ERR:
BIT IDE.ControlBit.DataRequest,A ;BIT IDE.ControlBit.DataRequest,A
LD A,BIOS.Error.NoErrors AND IDE.ControlByte.DataRequest
RET Z ;NO DATA REQUEST ;LD A,BIOS.Error.NoErrors
RET Z ;NO DATA REQUEST A = 0: BIOS.Error.NoErrors
EX DE,HL EX DE,HL
LD BC,IDE.Read.CylinderLow LD BC,IDE.Read.CylinderLow
IN E,(C) IN E,(C)

View File

@ -178,7 +178,7 @@ EMM.GetMem: PUSH BC
POP BC POP BC
RET RET
; ;
.noRAM: LD L,1 ; !HARDCODE bios errors <20> <20>€ŒŸˆ .noRAM: LD L,BIOS.Error.EMM.NoMemory
EX AF,AF' EX AF,AF'
OUT (SLOT3),A OUT (SLOT3),A
LD A,L LD A,L
@ -207,7 +207,7 @@ EMM.GetMemRMD:
CALL BLK_TO_RAMD CALL BLK_TO_RAMD
RET NC RET NC
.error2: .error2:
LD L,2 ; RAM-Disk § ­ïâ ;!HARDCODE error number ;!TODO ¯¥à¥ç¨á«¨âì ¢á¥ ¢ à¨ ­âë ®è¨¡®ª ¨ ¨å ­®¬¥à  ª ª ¤«ï „‘‘ LD L,BIOS.Error.BadNumber ; RAM-Disk § ­ïâ
LD A,L LD A,L
RET RET
.error1: .error1:

View File

@ -399,10 +399,10 @@ REINIT: DEC B
OUT (C),A OUT (C),A
OUT (RGADR),A OUT (RGADR),A
OUT (RGMOD),A OUT (RGMOD),A
OUT (SLOT0),A OUT (SLOT0),A ;!HARDCODE zx page number
LD A,5 LD A,5 ;!HARDCODE zx page number
OUT (SLOT1),A OUT (SLOT1),A
LD A,2 LD A,2 ;!HARDCODE zx page number
OUT (SLOT2),A OUT (SLOT2),A
LD A,DCP_PAGE LD A,DCP_PAGE
OUT (SLOT3),A OUT (SLOT3),A

View File

@ -3,63 +3,75 @@
; [ ] free zx pages! ; [ ] free zx pages!
; ????? SYS_PAGE.SHARED_BUFFER_256b
IF FREE_ZX_PAGES IF FREE_ZX_PAGES
;----------------[‚뤥«¥­¨¥/®á¢®¡®¦¤¥­¨¥ áâà ­¨æ ᯥªâà㬠]-------------; ;----------------[‚뤥«¥­¨¥/®á¢®¡®¦¤¥­¨¥ áâà ­¨æ ᯥªâà㬠]-------------;
;¢å®¤: ॣ B b3..0: ;¢å®¤: ॣ B: 0 - ¨­¨â ¯ ¬ï⨠Spectrum 48k
; 0 - ¨­¨â ¯ ¬ï⨠Pentagon 128 ; 1 - ¨­¨â ¯ ¬ï⨠Pentagon 128k
; 1 - ¨­¨â ¯ ¬ï⨠Pentagon 512 ; 2 - ¨­¨â ¯ ¬ï⨠Pentagon 512k
; 2 - ¨­¨â ¯ ¬ï⨠Scorpion 256 ; 3 - ¨­¨â ¯ ¬ï⨠Scorpion 256k
; ॣ B b7: ; ॣ A: âॡ㥬®¥ ª®«-¢® áâà ­¨æ ¤«ï vROM
; ¢ë¤¥«¨âì/¢¥à­ãâì à ¬¡«®ª ¤«ï áâà ­¨æ ZX-ROM à §¬¥à®¬ A áâà. ;
;¢ë室: CF = 0: A - ­®¬¥à à ¬¡«®ª  ¥á«¨ âॡ®¢ «áï ;¢ë室: CF = 0: A - ­®¬¥à à ¬¡«®ª 
; CF = 1: A - ­®¬¥à ®è¨¡ª¨ ; CF = 1: A - ­®¬¥à ®è¨¡ª¨
MANAGE_ZX_PAGES: MANAGE_ZX_PAGES:
.GET_SCORP: IN A,(SLOT3) .GET_SCORP: IN A,(SLOT3)
PUSH AF LD E,A
LD A,SYS_PAGE LD A,SYS_PAGE
OUT (SLOT3),A OUT (SLOT3),A
; ; ¯à®¢¥à¨âì ­ «¨ç¨¥ ᢮¡®¤­ëå áâà ­¨æ ᪮௠
LD HL,SYS_PAGE.RAMD_FAT; - #4000 - #4000 ; B = ª®«¨ç¥á⢮ áâà ­¨æ
LD DE,SYS_PAGE.SHARED_BUFFER_256b LD B,8
LD BC,SYS_PAGE.RAMD_FAT.Size
LDIR
DEC H
XOR A XOR A
; ‡ ¯®«­¨âì RAMD_FAT .check_loop: DEC L
; A = 0 JR Z,.error_no_mem
.loop2: DEC L
CP (HL) CP (HL)
JR NZ,.loop2 JR NZ,.check_loop
; ;
.check_barred_pages: CALL .check_barred_pages
; ¯à®¢¥àª  ­  ­¥à §à¥èñ­­ë¥ áâà ­¨æë LD A,0
EX AF,AF' JR Z,.check_loop
LD A,L DJNZ .check_loop
CP RESET_PAGE ; A = 0
JR C,.good_page ; ¢ë¤¥«¨âì áâà ­¨æë ᪮௠
JR NZ,.check_isa_page LD B,8
DEC L .allocate_loop: DEC L
JR .good_page CP (HL)
.check_isa_page: ; JR NZ,.allocate_loop
AND #F0 ;
XOR #D0 ; áâà ­¨æë ISA #D0..#DF CALL .check_barred_pages
JR NZ,.good_page LD A,0
LD L,#D0 - 1 JR Z,.allocate_loop
.good_page: EX AF,AF'
; ;
LD (HL),C LD (HL),C
LD C,L LD C,L
DJNZ .loop2 DJNZ .allocate_loop
; L = 㪠§ â¥«ì 楯®çª¨. ; L = 㪠§ â¥«ì 楯®çª¨.
;
POP AF
OUT (SLOT3),A
;
LD A,L
AND A AND A
.exit: LD A,E
OUT (SLOT3),A
LD A,L
RET 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: LD L,BIOS.Error.EMM.NoMemory
SCF
JR .exit
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
ENDIF ENDIF