уже лучше
This commit is contained in:
parent
c7fd876f91
commit
65bc8dbb49
@ -1 +1 @@
|
||||
Subproject commit 753caadb020b3d55971aced21723c84a72bf65df
|
||||
Subproject commit 403d6e2b52dadc50e99a1eac442cedd98e19d0a5
|
||||
@ -430,7 +430,7 @@ TAB_FNS:
|
||||
DB high READ_PORTS
|
||||
DB high FN_RESERVED
|
||||
DB high GOTO_SPEC
|
||||
DB high FN_RESERVED
|
||||
DB high ZX_MEMORY_MANAGER
|
||||
DB high REINIT
|
||||
DB high FN_RESERVED
|
||||
DB high FN_VERSION
|
||||
|
||||
@ -647,12 +647,10 @@ SET_PORTS:
|
||||
PUSH AF
|
||||
POP DE
|
||||
DI
|
||||
LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
CALL DOS_ON
|
||||
;
|
||||
; LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
||||
; OUT (SYS_PORT.ROM),A
|
||||
LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
;
|
||||
LD C,SLOT2 ; ¯®«ãç¨âì áâà ¨æã
|
||||
IN D,(C)
|
||||
|
||||
@ -754,9 +754,6 @@ POST_5_ERROR:
|
||||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||
LD (SYS_PAGE.CONFIG_DE),A
|
||||
;
|
||||
XOR A ;!HARDCODE zx page number
|
||||
OUT (SLOT3),A
|
||||
;
|
||||
ENDMODULE
|
||||
;-----------------------------------------------------------------------;
|
||||
; Don't use stack (SP) before this point if it`s normal booting!!!
|
||||
@ -772,8 +769,6 @@ POST_5_ERROR:
|
||||
;-----------------------------------------------------------------------;
|
||||
MODULE Reset_Handler
|
||||
start: DI
|
||||
IN A,(SLOT3)
|
||||
PUSH AF
|
||||
;----[¯¥à¥å¢ â soft reset #EE port]-----
|
||||
Check_EE_Port: LD A,ACEX.RET_PORT
|
||||
LD B,0
|
||||
@ -834,7 +829,7 @@ Check_Spec_Page:
|
||||
;
|
||||
;---------------------------------------
|
||||
No_Reset_handlers:
|
||||
POP AF
|
||||
XOR A ;!HARDCODE zx page number
|
||||
OUT (SLOT3),A
|
||||
ENDMODULE
|
||||
;-----------------------------------------------------------------------;
|
||||
@ -1022,12 +1017,12 @@ PORTS_INIT:
|
||||
LD A,CNF_PORT.CNF_3+ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
OUT (FDC_93.DrvCTRL),A
|
||||
PUSH HL
|
||||
POP HL
|
||||
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
||||
POP HL ; ¤«ï § ¤¥à¦ª¨
|
||||
LD A,#3C ;!HARDCODE ª®¬ ¤ ¤«ï ‚ƒ93
|
||||
OUT (FDC_93.DrvCTRL),A
|
||||
PUSH HL
|
||||
POP HL
|
||||
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
||||
POP HL ; ¤«ï § ¤¥à¦ª¨
|
||||
XOR A
|
||||
OUT (FDC_93.Command),A
|
||||
; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª
|
||||
@ -1037,10 +1032,10 @@ PORTS_INIT:
|
||||
LD A,IDE.Chanel.Primary
|
||||
OUT (IDE.Chanel.Set),A
|
||||
LD BC,#7FFD
|
||||
XOR A
|
||||
OUT (C),A ; BASIC_128 mode
|
||||
LD A,#10
|
||||
OUT (C),A ; BASIC_48 mode
|
||||
LD B,#1F
|
||||
INC A
|
||||
LD A,1
|
||||
OUT (C),A ; RAM-0 mode !!!
|
||||
; ®ç¨á⪠¡ãä¥à®¢ ª« ¢¨ âãàë ¨ ¬ëè¨ ¢ SIO
|
||||
CALL .clean_kbd_buf
|
||||
@ -1177,7 +1172,7 @@ SW_ROM: ;!FIXIT assert with ROM
|
||||
;
|
||||
;----------------------------------------------------------------------;
|
||||
_mInfoBLOCK #3D00-$,#FF
|
||||
DOS_ON: NOP
|
||||
DOS_ON: NOP ;!TODO à ¡®â ¥â ¯à¨ #7FFD[4] = 1. Š ª-â® ã§ ¢ âì § 票¥ 7FFD ¨ ¬¥ïâì?
|
||||
RET
|
||||
;***************************************
|
||||
|
||||
|
||||
@ -204,6 +204,7 @@ INIT_SYS_ALL:
|
||||
LD L,A
|
||||
LD (SYS_PAGE.CURRENT_DIR_SEC_L - #4000),HL
|
||||
LD (SYS_PAGE.CURRENT_DIR_SEC_H - #4000),HL
|
||||
LD (SYS_PAGE.Block_IDs - #4000),HL
|
||||
DEC A
|
||||
LD (SYS_PAGE.CURRENT_HDD - #4000),A
|
||||
LD (SYS_PAGE.CURRENT_DIR_DRIVE - #4000),A
|
||||
@ -299,11 +300,11 @@ INIT_CONFIG_ALL:
|
||||
LD DE,CNF_PORT.CNF_0 + ROM.BIOS
|
||||
LD (SYS_PAGE.CONFIG_DE - #4000),DE
|
||||
|
||||
LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
||||
LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
|
||||
LD BC,_ZX_TASK - 1
|
||||
LD (HL),0
|
||||
LDIR
|
||||
; LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
||||
; LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
|
||||
; LD BC,_ZX_TASK - 1
|
||||
; LD (HL),0
|
||||
; LDIR
|
||||
|
||||
EX AF,AF'
|
||||
OUT (SLOT2),A
|
||||
|
||||
@ -382,7 +382,9 @@ EXIT_SETUP: CALL INT_OFF
|
||||
;
|
||||
.Set_Page41: CALL ZXMODE_SETUP.Set_Page41
|
||||
.vROMs_Installed:
|
||||
CALL MANAGE_ZX_PAGES.GET_SCORP_RAM ;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
||||
XOR A
|
||||
LD BC,4*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE MANAGE_ZX_PAGES.GET_SCORP_RAM
|
||||
RST ToBIOS_18 ;!TODO áâà ¨¢ âì ¢ BIOS zx mode
|
||||
JR NC,.set_ZX_params
|
||||
;
|
||||
CALL ScreenPOS.CRLF
|
||||
@ -1707,11 +1709,14 @@ ZXMODE_SETUP: IN A,(SLOT3)
|
||||
LD R,A
|
||||
;
|
||||
; Load ZX ROM's
|
||||
LD A,ROM.EXTENSION
|
||||
OUT (SYS_PORT.ROM),A
|
||||
CALL MANAGE_ZX_PAGES.FREE_vMEMORY ;!FIXIT ¥ â áâà ¨æ ¢ SLOT3 ; [ ] free zx pages!
|
||||
XOR A ;LD A,ROM.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
;LD A,ROM.EXTENSION
|
||||
;OUT (SYS_PORT.ROM),A
|
||||
; CALL MANAGE_ZX_PAGES.FREE_vMEMORY ;!FIXIT ¥ â áâà ¨æ ¢ SLOT3 ; [ ] free zx pages!
|
||||
;XOR A ;LD A,ROM.BIOS
|
||||
;OUT (SYS_PORT.ROM),A
|
||||
XOR A
|
||||
LD BC,64*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE
|
||||
RST ToBIOS_18
|
||||
;
|
||||
LD B,3 ; !HARDCODE zx-rom number of pages
|
||||
CALL EMM.GetMem
|
||||
@ -1741,12 +1746,15 @@ ZXMODE_SETUP: IN A,(SLOT3)
|
||||
LDDR ; § ç¨é ¥¬
|
||||
EX DE,HL
|
||||
;
|
||||
LD A,SYS_PORT.EXTENSION
|
||||
OUT (SYS_PORT.ROM),A
|
||||
JP MANAGE_ZX_PAGES.INIT_vROM
|
||||
XOR A ;LD A,SYS_PORT.BIOS
|
||||
OUT (SYS_PORT.ROM),A
|
||||
RET
|
||||
; LD A,SYS_PORT.EXTENSION
|
||||
; OUT (SYS_PORT.ROM),A
|
||||
; JP MANAGE_ZX_PAGES.INIT_vROM
|
||||
; XOR A ;LD A,SYS_PORT.BIOS
|
||||
; OUT (SYS_PORT.ROM),A
|
||||
XOR A
|
||||
LD BC,128*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE
|
||||
JP ToBIOS_18
|
||||
;RET
|
||||
;
|
||||
;--------------------[copy zx-roms to zx-pages]-----------------;
|
||||
; SLOT0 - ROM 8, sys_port - on.
|
||||
@ -1780,7 +1788,7 @@ init_zx_roms: DI
|
||||
OUT (SYS_PORT.ROM),A
|
||||
CALL MANAGE_ZX_PAGES.INIT_vROM
|
||||
; Š®¯¨à㥬 ®¡à §ë ZX-ROM ¨§ <20>‡“ ¢ áâà ¨æë vROM
|
||||
INC A ; !HARDCODE LD A,2
|
||||
LD A,2 ; !HARDCODE
|
||||
LD BC,+(3*2)*256 + SLOT3 ; !HARDCODE B = (zx-rom number of pages)*2
|
||||
LD HL,memBUFFER.Shared + 1
|
||||
.loop: OUTI
|
||||
@ -1869,7 +1877,7 @@ init_zx_roms: DI
|
||||
.init_41h: ; § ¡¨âì FF- ¬¨
|
||||
LD HL,#C000
|
||||
LD DE,#C001
|
||||
LD BC,#3FFF
|
||||
LD BC,#3FFF - 2
|
||||
LD (HL),C
|
||||
LDIR
|
||||
; ‡ £«ãèª ¤«ï áâà ¨æë #41
|
||||
|
||||
@ -289,85 +289,6 @@ ZX_MEMORY:
|
||||
IF FREE_ZX_PAGES
|
||||
MODULE MANAGE_ZX_PAGES
|
||||
|
||||
;!FIXIT
|
||||
;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------;
|
||||
;¢å®¤: ॣ B: 0 - § १¥à¢¨à®¢ ®
|
||||
; 1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 48k. 3 áâà ¨æë
|
||||
; 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë
|
||||
; 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë
|
||||
; 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||||
; 5..15 - § १¥à¢¨à®¢ ë
|
||||
;
|
||||
; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨¨æ¨ «¨§¨à®¢ ëå vROM ¨ VRAM
|
||||
; 17..31 - § १¥à¢¨à®¢ ë
|
||||
;
|
||||
; 32 - § १¥à¢¨à®¢ ®
|
||||
; 33 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨¨â 2-å áâà ¨æ vROM
|
||||
; 34 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||||
; 35 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||||
; 36 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||||
; 33..63 - § १¥à¢¨à®¢ ë
|
||||
;
|
||||
; 64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM
|
||||
; 65..127 - § १¥à¢¨à®¢ ë
|
||||
;
|
||||
; 128 - ¨¨æ¨ «¨§¨à®¢ âì ᢮© ¡®à áâà ¨æ vROM
|
||||
;
|
||||
; ॣ HL: ¯à¨ ॣ B[7]=1 ¤à¥á áâà ¨æ (11 èâ):
|
||||
; byte1 - RAM block ID, byte2..11 - áâà ¨æë ¤«ï vROM - ZXSlot: 1,2,3(=0),à áè¨à¥ ï
|
||||
; ॣ A: ®¬¥à ZX TASK ¯®ª çâ® ¢á¥£¤ ®«ì!!!
|
||||
;¢ë室: CF = 0: HL - ®¬¥à à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM
|
||||
; CF = 1: A - ®¬¥à ®è¨¡ª¨
|
||||
;
|
||||
;¥á«¨ áâíª å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥àë¢ ¨ï¬¨
|
||||
FN_ENTRANCE: ;!TODO A - TASK NUMBER
|
||||
AND A
|
||||
LD A,BIOS.Error.NotSupported
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
EXX
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
EXX
|
||||
;
|
||||
LD (SYS_PAGE.SP_SAVE),SP
|
||||
LD SP,SYS_PAGE.SYS_SP
|
||||
LD DE,.EXIT
|
||||
PUSH DE
|
||||
;-----------------------------------;
|
||||
; Sub FN #8x
|
||||
BIT 7,B
|
||||
JR NZ,INIT_vROM ; B = 128
|
||||
; Sub FN #4x
|
||||
BIT 6,B
|
||||
JR NZ,FREE_vMEMORY ; B = 64
|
||||
; Sub FN #1x
|
||||
JR NZ,GET_RAMBLOCK_IDs ; B = 16
|
||||
; Sub FN #0x
|
||||
; DEC B
|
||||
; JR Z, ; B = 1
|
||||
; DEC B
|
||||
; JR Z, ; B = 2
|
||||
; DEC B
|
||||
; JR Z, ; B = 3
|
||||
; DEC B
|
||||
; JR Z, ; B = 4
|
||||
;-----------------------------------;
|
||||
LD A,BIOS.Error.InvalidSubFunction
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.EXIT: LD SP,(SYS_PAGE.SP_SAVE)
|
||||
EXX
|
||||
OUT (C),B
|
||||
EXX
|
||||
RET
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
; <20>¥ ¯®àâ¨âì DE
|
||||
;‚室: A - TASK NUMBER
|
||||
@ -381,51 +302,51 @@ FN_ENTRANCE: ;!TODO A - TASK NUMBER
|
||||
; RET
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
|
||||
OR A
|
||||
;‚•Ž„: HL - ᯨ᮪ áâà ¨æ
|
||||
; E - 0 = 128kb, 1 = 512kb
|
||||
INIT_vRAM: XOR A
|
||||
.set_1ffd: LD BC,#1FFD
|
||||
OUT (C),A
|
||||
; set 128
|
||||
LD B,#7F
|
||||
LD D,%0000'0000
|
||||
CALL SET_7FFD
|
||||
;
|
||||
XOR A
|
||||
OUT (C),A
|
||||
BIT 3,E ; 128/512
|
||||
RET Z
|
||||
; set 128 + 384
|
||||
;LD A,SYS_PORT.CNF_512
|
||||
;OUT (SYS_PORT.ROM),A
|
||||
;
|
||||
LD D,%0100'0000
|
||||
CALL SET_7FFD
|
||||
LD D,%1000'0000
|
||||
CALL SET_7FFD
|
||||
LD D,%1100'0000
|
||||
CALL SET_7FFD
|
||||
;
|
||||
XOR A
|
||||
LD (SYS_PAGE.Block_ID.vRAM),A
|
||||
LD C,BIOS.FreeMem
|
||||
JP ToBIOS_FromEXT
|
||||
;--------------;
|
||||
FREE_vMEMORY: CALL FREE_vRAM
|
||||
;JR FREE_vROM
|
||||
;--------------;
|
||||
FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
|
||||
OR A
|
||||
RET Z
|
||||
XOR A
|
||||
LD (SYS_PAGE.Block_ID.vROM),A
|
||||
LD C,BIOS.FreeMem
|
||||
RST_to_BIOS
|
||||
;--------------;
|
||||
RES_FLAG_ZXvROM: ; ¥ ¤®«¦® ¯®àâ¨âì DE
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,Spec_Page
|
||||
OUT (SLOT3),A
|
||||
XOR A
|
||||
LD (Spec_Page.flag_Z),A
|
||||
LD (Spec_Page.flag_X),A
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
OUT (C),A
|
||||
RET
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;‚室: A - TASK NUMBER
|
||||
;‚ë室: H - vRAM block ID
|
||||
; L - vROM block ID
|
||||
GET_RAMBLOCK_IDs:
|
||||
LD HL,(SYS_PAGE.Block_IDs)
|
||||
;‚•Ž„: HL - ᯨ᮪ áâà ¨æ
|
||||
; D - ç «ì®¥ § 票¥ ¤«ï 7FFD
|
||||
SET_7FFD: LD A,(HL)
|
||||
OUT (C),D
|
||||
OUT (SLOT3),A
|
||||
INC HL
|
||||
INC D
|
||||
BIT 3,D ; ª®«¨ç¥á⢮ áâà ¨æ
|
||||
JR Z,SET_7FFD
|
||||
RET
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;‚室: HL - ¡ãä¥à áâà ¨æ (SLOT1..SLOT2) ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤ 11 èâ.)
|
||||
; <09>¥à¢ë© ¡ ©â ᯨ᪠- RAM BLOCK ID. „ «¥¥ ª ª 㣮¤® ®¬¥à
|
||||
@ -500,55 +421,133 @@ INIT_vROM: LD A,(HL)
|
||||
.PORTS.Size EQU $-.PORTS
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;!FIXIT
|
||||
;----------------[‚뤥«¥¨¥/®á¢®¡®¦¤¥¨¥ áâà ¨æ ᯥªâà㬠]-------------;
|
||||
;¢å®¤: ॣ B:
|
||||
; FN 0x
|
||||
; 0 - § १¥à¢¨à®¢ ®
|
||||
; 1 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 48k. 3 áâà ¨æë
|
||||
; 2 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k. 2+6 áâà ¨æë
|
||||
; 3 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k. 2+30 áâà ¨æë
|
||||
; 4 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k. 2+6+8 áâà ¨æë
|
||||
; 5..15 - § १¥à¢¨à®¢ ë
|
||||
; FN 1x
|
||||
; 16 - ¯®«ãç¨âì à ¬¡«®ª¨ ¨¨æ¨ «¨§¨à®¢ ëå vROM ¨ VRAM
|
||||
; 17..31 - § १¥à¢¨à®¢ ë
|
||||
; FN 2x
|
||||
; 32 - § १¥à¢¨à®¢ ®
|
||||
; 33 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Spectrum 48k ¨ ¨¨â 2-å áâà ¨æ vROM
|
||||
; 34 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 128k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||||
; 35 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Pentagon 512k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||||
; 36 - ¢ë¤¥«¥¨¥ ¯ ¬ï⨠Scorpion 256k ¨ ¨¨â 3-å áâà ¨æ vROM
|
||||
; 33..63 - § १¥à¢¨à®¢ ë
|
||||
; FN 4x
|
||||
; 64 - ®á¢®¡®¤¨âì à ¬¡«®ª¨ vROM ¨ vRAM
|
||||
; 65..127 - § १¥à¢¨à®¢ ë
|
||||
; FN 8x
|
||||
; 128 - ¨¨æ¨ «¨§¨à®¢ âì ᢮© ¡®à áâà ¨æ vROM
|
||||
;
|
||||
; ॣ HL: ¯à¨ ॣ B[7]=1 ¤à¥á áâà ¨æ (11 èâ):
|
||||
; byte1 - RAM block ID, byte2..11 - áâà ¨æë ¤«ï vROM - ZXSlot: 1,2,3(=0),à áè¨à¥ ï
|
||||
; ॣ A: ®¬¥à ZX TASK ¯®ª çâ® ¢á¥£¤ ®«ì!!!
|
||||
;¢ë室: CF = 0: HL - ®¬¥à à ¬¡«®ª®¢ ¤«ï ०¨¬®¢ 0..16. H=vRAM, L=vROM
|
||||
; CF = 1: A - ®¬¥à ®è¨¡ª¨
|
||||
;
|
||||
;¥á«¨ áâíª å®¤¨âáï ¢ âà¥â쥬 á«®â¥, â® ¢ë§®¢ á ¢ëª«îç¥ë¬¨ ¯à¥àë¢ ¨ï¬¨
|
||||
FN_ENTRANCE: ;!TODO A - TASK NUMBER
|
||||
AND A
|
||||
LD A,BIOS.Error.NotSupported
|
||||
SCF
|
||||
RET NZ
|
||||
CCF
|
||||
;
|
||||
EXX
|
||||
LD C,SLOT3
|
||||
IN B,(C)
|
||||
LD A,SYS_PAGE
|
||||
OUT (C),A
|
||||
EXX
|
||||
;
|
||||
LD (SYS_PAGE.SP_SAVE),SP
|
||||
LD SP,SYS_PAGE.SYS_SP
|
||||
LD DE,.EXIT
|
||||
PUSH DE
|
||||
;-----------------------------------;
|
||||
; Sub FN #8x
|
||||
BIT 7,B
|
||||
JR NZ,INIT_vROM ; B = 128
|
||||
; Sub FN #4x
|
||||
BIT 6,B
|
||||
JR NZ,FREE_vMEMORY ; B = 64..127
|
||||
; Sub FN #2x ;!TODO ; [ ] free zx pages!
|
||||
;BIT 5,B
|
||||
;JR NZ, ; B = 32..63
|
||||
; Sub FN #1x
|
||||
BIT 4,B
|
||||
JR Z,.x0x_FN ; B = 16
|
||||
;
|
||||
.GET_RAMBLOCK_IDs: ;‚室: A - TASK NUMBER. ‚ë室: H - vRAM block ID, L - vROM block ID
|
||||
LD HL,(SYS_PAGE.Block_IDs)
|
||||
RET
|
||||
;
|
||||
; Sub FN #0x
|
||||
.x0x_FN: DEC B
|
||||
JR Z,GET_48k_MEM ; B = 1
|
||||
DEC B
|
||||
JR Z,GET_128k_MEM ; B = 2
|
||||
DEC B
|
||||
JR Z,GET_512k_MEM ; B = 3
|
||||
DEC B
|
||||
JR Z,GET_SCORP_RAM ; B = 4
|
||||
;-----------------------------------;
|
||||
LD A,BIOS.Error.InvalidSubFunction
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.EXIT: LD SP,(SYS_PAGE.SP_SAVE)
|
||||
EXX
|
||||
OUT (C),B
|
||||
EXX
|
||||
RET
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;‚•Ž„: HL - ᯨ᮪ áâà ¨æ
|
||||
; E - 0 = 128kb, 1 = 512kb
|
||||
INIT_vRAM: XOR A
|
||||
.set_1ffd: LD BC,#1FFD
|
||||
OUT (C),A
|
||||
; set 128
|
||||
LD B,#7F
|
||||
LD D,%0000'0000
|
||||
CALL SET_7FFD
|
||||
;
|
||||
XOR A
|
||||
OUT (C),A
|
||||
BIT 3,E ; 128/512
|
||||
FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
|
||||
OR A
|
||||
RET Z
|
||||
; set 128 + 384
|
||||
;LD A,SYS_PORT.CNF_512
|
||||
;OUT (SYS_PORT.ROM),A
|
||||
;
|
||||
LD D,%0100'0000
|
||||
CALL SET_7FFD
|
||||
LD D,%1000'0000
|
||||
CALL SET_7FFD
|
||||
LD D,%1100'0000
|
||||
CALL SET_7FFD
|
||||
;
|
||||
LD C,BIOS.FreeMem
|
||||
CALL ToBIOS_FromEXT
|
||||
RET C
|
||||
XOR A
|
||||
OUT (C),A
|
||||
LD (SYS_PAGE.Block_ID.vRAM),A
|
||||
RET
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;‚•Ž„: HL - ᯨ᮪ áâà ¨æ
|
||||
; D - ç «ì®¥ § 票¥ ¤«ï 7FFD
|
||||
SET_7FFD: LD A,(HL)
|
||||
OUT (C),D
|
||||
;--------------;
|
||||
FREE_vMEMORY: CALL FREE_vRAM
|
||||
;JR FREE_vROM
|
||||
;--------------;
|
||||
FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
|
||||
OR A
|
||||
RET Z
|
||||
XOR A
|
||||
LD (SYS_PAGE.Block_ID.vROM),A
|
||||
LD C,BIOS.FreeMem
|
||||
RST_to_BIOS
|
||||
;--------------;
|
||||
RES_FLAG_ZXvROM: ; ¥ ¤®«¦® ¯®àâ¨âì DE
|
||||
EX AF,AF'
|
||||
IN A,(SLOT3)
|
||||
EX AF,AF'
|
||||
LD A,Spec_Page
|
||||
OUT (SLOT3),A
|
||||
XOR A
|
||||
LD (Spec_Page.flag_Z),A
|
||||
LD (Spec_Page.flag_X),A
|
||||
EX AF,AF'
|
||||
OUT (SLOT3),A
|
||||
INC HL
|
||||
INC D
|
||||
BIT 3,D ; ª®«¨ç¥á⢮ áâà ¨æ
|
||||
JR Z,SET_7FFD
|
||||
RET
|
||||
;-----------------------------------------------------------------------;
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------;
|
||||
;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k
|
||||
GET_48k_MEM: LD D,ZX_MEMORY.MODE_48k
|
||||
@ -637,7 +636,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
|
||||
|
||||
|
||||
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°;
|
||||
;!TODO § ¤¥©á⢮¢ âì
|
||||
; [ ] free zx pages!
|
||||
; <20>…<EFBFBD>…„€‚€’œ: ®¬¥à vROM, vRAM, CONFIG_DE, FN_SYNC, PORT_ALL_MODE, MEM_TYPE
|
||||
; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
|
||||
; 3 - EXPANSION. C § ªàëâ묨 128-¬¨ ¯®àâ ¬¨:
|
||||
@ -671,21 +670,12 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
||||
LD (SYS_PAGE.CONFIG_DE),DE
|
||||
LD (SYS_PAGE.Block_IDs),HL ;!FIXIT ®á¢®¡®¤¨âì áâ àë¥ § 票ï? ; [ ] free zx pages!
|
||||
;
|
||||
EXX
|
||||
LD A,C
|
||||
AND %0000'0011
|
||||
LD SP,#C000
|
||||
;
|
||||
; [ ] free zx pages! ;!TODO ¥á«¨ § ¤ ç ¯ãáâ ï, â® ¯¥à¢ë© ¨¨â
|
||||
;
|
||||
;!TODO ᤥ« âì ªâ¨¢ æ¨î ¢¨â ¤«ï ¯ à ¬¥âà ¨§ Setup
|
||||
;!TODO ãáâ ®¢¨âì £¤¥-¨¡ã¤ì ¨¦¥ áâíª ¨§ TASK
|
||||
; LD A,(IX + _ZX_TASK_DATA.PORT_ALL_MODE)
|
||||
; LD BC,Port_All_Mode
|
||||
; OUT (C),A
|
||||
; ãáâ ®¢ª ¨â
|
||||
EXX
|
||||
LD A,C
|
||||
EXX
|
||||
AND %0000'0011
|
||||
LD C,BIOS.FN_SYNC
|
||||
RST_to_BIOS
|
||||
;CALL FN_SYNC
|
||||
@ -764,7 +754,8 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
||||
; D - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ
|
||||
INIT_PAGES: LD A,SYS_PAGE
|
||||
OUT (SLOT1),A
|
||||
LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512
|
||||
====
|
||||
LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512 ;!FIXIT ¯¥à¥¤¥« âì ¨¨â. ¥á«¨ 512, â® ¥â 1ffd ¨ ®¡®à®â
|
||||
OUT (SYS_PORT.ROM),A
|
||||
;
|
||||
RES 7,H
|
||||
|
||||
@ -421,7 +421,7 @@ TURBO_ON:
|
||||
|
||||
CLEAR_RAM:
|
||||
DI
|
||||
LD C,BIOS.FullInit
|
||||
LD C,BIOS.FullInit ; [ ] free zx pages!
|
||||
RST_to_BIOS
|
||||
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¢®§¢à â ¢ DSS ¯® CAD
|
||||
; ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user