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:
LD A,1 ;!HARDCODE error code
LD A,BIOS.Error.InvalidSubFunction
FN_RESERVED:
SCF
RET
FN_ABSENT_5x:
LD A,#AA ;!HARDCODE error code
LD A,BIOS.Error.NotSupported
SCF
RET
;! ! ! ! ! ! ! !

View File

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

View File

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

View File

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

View File

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

View File

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