уже лучше
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 READ_PORTS
|
||||||
DB high FN_RESERVED
|
DB high FN_RESERVED
|
||||||
DB high GOTO_SPEC
|
DB high GOTO_SPEC
|
||||||
DB high FN_RESERVED
|
DB high ZX_MEMORY_MANAGER
|
||||||
DB high REINIT
|
DB high REINIT
|
||||||
DB high FN_RESERVED
|
DB high FN_RESERVED
|
||||||
DB high FN_VERSION
|
DB high FN_VERSION
|
||||||
|
|||||||
@ -647,12 +647,10 @@ SET_PORTS:
|
|||||||
PUSH AF
|
PUSH AF
|
||||||
POP DE
|
POP DE
|
||||||
DI
|
DI
|
||||||
LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
|
||||||
OUT (SYS_PORT.ROM),A
|
|
||||||
CALL DOS_ON
|
CALL DOS_ON
|
||||||
;
|
;
|
||||||
; LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
LD A,CNF_PORT.CNF_0 + ROM.BIOS
|
||||||
; OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
;
|
;
|
||||||
LD C,SLOT2 ; ¯®«ãç¨âì áâà ¨æã
|
LD C,SLOT2 ; ¯®«ãç¨âì áâà ¨æã
|
||||||
IN D,(C)
|
IN D,(C)
|
||||||
|
|||||||
@ -753,9 +753,6 @@ POST_5_ERROR:
|
|||||||
;
|
;
|
||||||
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON
|
||||||
LD (SYS_PAGE.CONFIG_DE),A
|
LD (SYS_PAGE.CONFIG_DE),A
|
||||||
;
|
|
||||||
XOR A ;!HARDCODE zx page number
|
|
||||||
OUT (SLOT3),A
|
|
||||||
;
|
;
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
@ -772,8 +769,6 @@ POST_5_ERROR:
|
|||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
MODULE Reset_Handler
|
MODULE Reset_Handler
|
||||||
start: DI
|
start: DI
|
||||||
IN A,(SLOT3)
|
|
||||||
PUSH AF
|
|
||||||
;----[¯¥à¥å¢ â soft reset #EE port]-----
|
;----[¯¥à¥å¢ â soft reset #EE port]-----
|
||||||
Check_EE_Port: LD A,ACEX.RET_PORT
|
Check_EE_Port: LD A,ACEX.RET_PORT
|
||||||
LD B,0
|
LD B,0
|
||||||
@ -834,7 +829,7 @@ Check_Spec_Page:
|
|||||||
;
|
;
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
No_Reset_handlers:
|
No_Reset_handlers:
|
||||||
POP AF
|
XOR A ;!HARDCODE zx page number
|
||||||
OUT (SLOT3),A
|
OUT (SLOT3),A
|
||||||
ENDMODULE
|
ENDMODULE
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
@ -1022,12 +1017,12 @@ PORTS_INIT:
|
|||||||
LD A,CNF_PORT.CNF_3+ROM.BIOS
|
LD A,CNF_PORT.CNF_3+ROM.BIOS
|
||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
OUT (FDC_93.DrvCTRL),A
|
OUT (FDC_93.DrvCTRL),A
|
||||||
PUSH HL
|
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
POP HL
|
POP HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
LD A,#3C ;!HARDCODE ª®¬ ¤ ¤«ï ‚ƒ93
|
LD A,#3C ;!HARDCODE ª®¬ ¤ ¤«ï ‚ƒ93
|
||||||
OUT (FDC_93.DrvCTRL),A
|
OUT (FDC_93.DrvCTRL),A
|
||||||
PUSH HL
|
PUSH HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
POP HL
|
POP HL ; ¤«ï § ¤¥à¦ª¨
|
||||||
XOR A
|
XOR A
|
||||||
OUT (FDC_93.Command),A
|
OUT (FDC_93.Command),A
|
||||||
; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª
|
; ‚몫îç¨âì ¤®áâ㯠ª ª®â஫«¥àã ¤¨áª
|
||||||
@ -1037,11 +1032,11 @@ PORTS_INIT:
|
|||||||
LD A,IDE.Chanel.Primary
|
LD A,IDE.Chanel.Primary
|
||||||
OUT (IDE.Chanel.Set),A
|
OUT (IDE.Chanel.Set),A
|
||||||
LD BC,#7FFD
|
LD BC,#7FFD
|
||||||
XOR A
|
LD A,#10
|
||||||
OUT (C),A ; BASIC_128 mode
|
OUT (C),A ; BASIC_48 mode
|
||||||
LD B,#1F
|
LD B,#1F
|
||||||
INC A
|
LD A,1
|
||||||
OUT (C),A ; RAM-0 mode !!!
|
OUT (C),A ; RAM-0 mode !!!
|
||||||
; ®ç¨á⪠¡ãä¥à®¢ ª« ¢¨ âãàë ¨ ¬ëè¨ ¢ SIO
|
; ®ç¨á⪠¡ãä¥à®¢ ª« ¢¨ âãàë ¨ ¬ëè¨ ¢ SIO
|
||||||
CALL .clean_kbd_buf
|
CALL .clean_kbd_buf
|
||||||
JR .clean_mouse_buf
|
JR .clean_mouse_buf
|
||||||
@ -1177,7 +1172,7 @@ SW_ROM: ;!FIXIT assert with ROM
|
|||||||
;
|
;
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
_mInfoBLOCK #3D00-$,#FF
|
_mInfoBLOCK #3D00-$,#FF
|
||||||
DOS_ON: NOP
|
DOS_ON: NOP ;!TODO à ¡®â ¥â ¯à¨ #7FFD[4] = 1. Š ª-â® ã§ ¢ âì § 票¥ 7FFD ¨ ¬¥ïâì?
|
||||||
RET
|
RET
|
||||||
;***************************************
|
;***************************************
|
||||||
|
|
||||||
|
|||||||
@ -204,6 +204,7 @@ INIT_SYS_ALL:
|
|||||||
LD L,A
|
LD L,A
|
||||||
LD (SYS_PAGE.CURRENT_DIR_SEC_L - #4000),HL
|
LD (SYS_PAGE.CURRENT_DIR_SEC_L - #4000),HL
|
||||||
LD (SYS_PAGE.CURRENT_DIR_SEC_H - #4000),HL
|
LD (SYS_PAGE.CURRENT_DIR_SEC_H - #4000),HL
|
||||||
|
LD (SYS_PAGE.Block_IDs - #4000),HL
|
||||||
DEC A
|
DEC A
|
||||||
LD (SYS_PAGE.CURRENT_HDD - #4000),A
|
LD (SYS_PAGE.CURRENT_HDD - #4000),A
|
||||||
LD (SYS_PAGE.CURRENT_DIR_DRIVE - #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 DE,CNF_PORT.CNF_0 + ROM.BIOS
|
||||||
LD (SYS_PAGE.CONFIG_DE - #4000),DE
|
LD (SYS_PAGE.CONFIG_DE - #4000),DE
|
||||||
|
|
||||||
LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
; LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; 㡨âì ¢á¥ § ¤ ç¨
|
||||||
LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
|
; LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000
|
||||||
LD BC,_ZX_TASK - 1
|
; LD BC,_ZX_TASK - 1
|
||||||
LD (HL),0
|
; LD (HL),0
|
||||||
LDIR
|
; LDIR
|
||||||
|
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
|
|||||||
@ -382,7 +382,9 @@ EXIT_SETUP: CALL INT_OFF
|
|||||||
;
|
;
|
||||||
.Set_Page41: CALL ZXMODE_SETUP.Set_Page41
|
.Set_Page41: CALL ZXMODE_SETUP.Set_Page41
|
||||||
.vROMs_Installed:
|
.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
|
JR NC,.set_ZX_params
|
||||||
;
|
;
|
||||||
CALL ScreenPOS.CRLF
|
CALL ScreenPOS.CRLF
|
||||||
@ -1707,11 +1709,14 @@ ZXMODE_SETUP: IN A,(SLOT3)
|
|||||||
LD R,A
|
LD R,A
|
||||||
;
|
;
|
||||||
; Load ZX ROM's
|
; Load ZX ROM's
|
||||||
LD A,ROM.EXTENSION
|
;LD A,ROM.EXTENSION
|
||||||
OUT (SYS_PORT.ROM),A
|
;OUT (SYS_PORT.ROM),A
|
||||||
CALL MANAGE_ZX_PAGES.FREE_vMEMORY ;!FIXIT ¥ â áâà ¨æ ¢ SLOT3 ; [ ] free zx pages!
|
; CALL MANAGE_ZX_PAGES.FREE_vMEMORY ;!FIXIT ¥ â áâà ¨æ ¢ SLOT3 ; [ ] free zx pages!
|
||||||
XOR A ;LD A,ROM.BIOS
|
;XOR A ;LD A,ROM.BIOS
|
||||||
OUT (SYS_PORT.ROM),A
|
;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
|
LD B,3 ; !HARDCODE zx-rom number of pages
|
||||||
CALL EMM.GetMem
|
CALL EMM.GetMem
|
||||||
@ -1741,12 +1746,15 @@ ZXMODE_SETUP: IN A,(SLOT3)
|
|||||||
LDDR ; § ç¨é ¥¬
|
LDDR ; § ç¨é ¥¬
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
;
|
;
|
||||||
LD A,SYS_PORT.EXTENSION
|
; LD A,SYS_PORT.EXTENSION
|
||||||
OUT (SYS_PORT.ROM),A
|
; OUT (SYS_PORT.ROM),A
|
||||||
JP MANAGE_ZX_PAGES.INIT_vROM
|
; JP MANAGE_ZX_PAGES.INIT_vROM
|
||||||
XOR A ;LD A,SYS_PORT.BIOS
|
; XOR A ;LD A,SYS_PORT.BIOS
|
||||||
OUT (SYS_PORT.ROM),A
|
; OUT (SYS_PORT.ROM),A
|
||||||
RET
|
XOR A
|
||||||
|
LD BC,128*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE
|
||||||
|
JP ToBIOS_18
|
||||||
|
;RET
|
||||||
;
|
;
|
||||||
;--------------------[copy zx-roms to zx-pages]-----------------;
|
;--------------------[copy zx-roms to zx-pages]-----------------;
|
||||||
; SLOT0 - ROM 8, sys_port - on.
|
; SLOT0 - ROM 8, sys_port - on.
|
||||||
@ -1780,7 +1788,7 @@ init_zx_roms: DI
|
|||||||
OUT (SYS_PORT.ROM),A
|
OUT (SYS_PORT.ROM),A
|
||||||
CALL MANAGE_ZX_PAGES.INIT_vROM
|
CALL MANAGE_ZX_PAGES.INIT_vROM
|
||||||
; Š®¯¨à㥬 ®¡à §ë ZX-ROM ¨§ <20>‡“ ¢ áâà ¨æë 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 BC,+(3*2)*256 + SLOT3 ; !HARDCODE B = (zx-rom number of pages)*2
|
||||||
LD HL,memBUFFER.Shared + 1
|
LD HL,memBUFFER.Shared + 1
|
||||||
.loop: OUTI
|
.loop: OUTI
|
||||||
@ -1869,7 +1877,7 @@ init_zx_roms: DI
|
|||||||
.init_41h: ; § ¡¨âì FF- ¬¨
|
.init_41h: ; § ¡¨âì FF- ¬¨
|
||||||
LD HL,#C000
|
LD HL,#C000
|
||||||
LD DE,#C001
|
LD DE,#C001
|
||||||
LD BC,#3FFF
|
LD BC,#3FFF - 2
|
||||||
LD (HL),C
|
LD (HL),C
|
||||||
LDIR
|
LDIR
|
||||||
; ‡ £«ãèª ¤«ï áâà ¨æë #41
|
; ‡ £«ãèª ¤«ï áâà ¨æë #41
|
||||||
|
|||||||
@ -289,85 +289,6 @@ ZX_MEMORY:
|
|||||||
IF FREE_ZX_PAGES
|
IF FREE_ZX_PAGES
|
||||||
MODULE MANAGE_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
|
; <20>¥ ¯®àâ¨âì DE
|
||||||
;‚室: A - TASK NUMBER
|
;‚室: A - TASK NUMBER
|
||||||
@ -381,51 +302,51 @@ FN_ENTRANCE: ;!TODO A - TASK NUMBER
|
|||||||
; RET
|
; RET
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
|
;‚•Ž„: HL - ᯨ᮪ áâà ¨æ
|
||||||
OR A
|
; 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
|
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
|
XOR A
|
||||||
LD (SYS_PAGE.Block_ID.vRAM),A
|
OUT (C),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
|
|
||||||
RET
|
RET
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;‚室: A - TASK NUMBER
|
;‚•Ž„: HL - ᯨ᮪ áâà ¨æ
|
||||||
;‚ë室: H - vRAM block ID
|
; D - ç «ì®¥ § 票¥ ¤«ï 7FFD
|
||||||
; L - vROM block ID
|
SET_7FFD: LD A,(HL)
|
||||||
GET_RAMBLOCK_IDs:
|
OUT (C),D
|
||||||
LD HL,(SYS_PAGE.Block_IDs)
|
OUT (SLOT3),A
|
||||||
|
INC HL
|
||||||
|
INC D
|
||||||
|
BIT 3,D ; ª®«¨ç¥á⢮ áâà ¨æ
|
||||||
|
JR Z,SET_7FFD
|
||||||
RET
|
RET
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;‚室: HL - ¡ãä¥à áâà ¨æ (SLOT1..SLOT2) ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤ 11 èâ.)
|
;‚室: HL - ¡ãä¥à áâà ¨æ (SLOT1..SLOT2) ª®â®àë¥ ¬ ¯¯¨¬ (¢á¥£¤ 11 èâ.)
|
||||||
; <09>¥à¢ë© ¡ ©â ᯨ᪠- RAM BLOCK ID. „ «¥¥ ª ª 㣮¤® ®¬¥à
|
; <09>¥à¢ë© ¡ ©â ᯨ᪠- RAM BLOCK ID. „ «¥¥ ª ª 㣮¤® ®¬¥à
|
||||||
@ -500,55 +421,133 @@ INIT_vROM: LD A,(HL)
|
|||||||
.PORTS.Size EQU $-.PORTS
|
.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 - ᯨ᮪ áâà ¨æ
|
FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM)
|
||||||
; E - 0 = 128kb, 1 = 512kb
|
OR A
|
||||||
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
|
RET Z
|
||||||
; set 128 + 384
|
LD C,BIOS.FreeMem
|
||||||
;LD A,SYS_PORT.CNF_512
|
CALL ToBIOS_FromEXT
|
||||||
;OUT (SYS_PORT.ROM),A
|
RET C
|
||||||
;
|
|
||||||
LD D,%0100'0000
|
|
||||||
CALL SET_7FFD
|
|
||||||
LD D,%1000'0000
|
|
||||||
CALL SET_7FFD
|
|
||||||
LD D,%1100'0000
|
|
||||||
CALL SET_7FFD
|
|
||||||
;
|
|
||||||
XOR A
|
XOR A
|
||||||
OUT (C),A
|
LD (SYS_PAGE.Block_ID.vRAM),A
|
||||||
RET
|
RET
|
||||||
;-----------------------------------------------------------------------;
|
;--------------;
|
||||||
|
FREE_vMEMORY: CALL FREE_vRAM
|
||||||
;-----------------------------------------------------------------------;
|
;JR FREE_vROM
|
||||||
;‚•Ž„: HL - ᯨ᮪ áâà ¨æ
|
;--------------;
|
||||||
; D - ç «ì®¥ § 票¥ ¤«ï 7FFD
|
FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM)
|
||||||
SET_7FFD: LD A,(HL)
|
OR A
|
||||||
OUT (C),D
|
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 (SLOT3),A
|
||||||
INC HL
|
|
||||||
INC D
|
|
||||||
BIT 3,D ; ª®«¨ç¥á⢮ áâà ¨æ
|
|
||||||
JR Z,SET_7FFD
|
|
||||||
RET
|
RET
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k
|
;‚믮«ï¥âáï ¤«ï ¢ë¤¥«¥¨ï âàñå áâà ¨æ Ž‡“ 48k
|
||||||
GET_48k_MEM: LD D,ZX_MEMORY.MODE_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
|
; <20>…<EFBFBD>…„€‚€’œ: ®¬¥à vROM, vRAM, CONFIG_DE, FN_SYNC, PORT_ALL_MODE, MEM_TYPE
|
||||||
; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
|
; ‚室: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128,
|
||||||
; 3 - EXPANSION. C § ªàëâ묨 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.CONFIG_DE),DE
|
||||||
LD (SYS_PAGE.Block_IDs),HL ;!FIXIT ®á¢®¡®¤¨âì áâ àë¥ § 票ï? ; [ ] free zx pages!
|
LD (SYS_PAGE.Block_IDs),HL ;!FIXIT ®á¢®¡®¤¨âì áâ àë¥ § 票ï? ; [ ] free zx pages!
|
||||||
;
|
;
|
||||||
EXX
|
LD A,C
|
||||||
|
AND %0000'0011
|
||||||
LD SP,#C000
|
LD SP,#C000
|
||||||
;
|
|
||||||
; [ ] free zx pages! ;!TODO ¥á«¨ § ¤ ç ¯ãáâ ï, â® ¯¥à¢ë© ¨¨â
|
|
||||||
;
|
|
||||||
;!TODO ᤥ« âì ªâ¨¢ æ¨î ¢¨â ¤«ï ¯ à ¬¥âà ¨§ Setup
|
;!TODO ᤥ« âì ªâ¨¢ æ¨î ¢¨â ¤«ï ¯ à ¬¥âà ¨§ Setup
|
||||||
;!TODO ãáâ ®¢¨âì £¤¥-¨¡ã¤ì ¨¦¥ áâíª ¨§ TASK
|
|
||||||
; LD A,(IX + _ZX_TASK_DATA.PORT_ALL_MODE)
|
|
||||||
; LD BC,Port_All_Mode
|
|
||||||
; OUT (C),A
|
|
||||||
; ãáâ ®¢ª ¨â
|
; ãáâ ®¢ª ¨â
|
||||||
EXX
|
EXX
|
||||||
LD A,C
|
|
||||||
EXX
|
|
||||||
AND %0000'0011
|
|
||||||
LD C,BIOS.FN_SYNC
|
LD C,BIOS.FN_SYNC
|
||||||
RST_to_BIOS
|
RST_to_BIOS
|
||||||
;CALL FN_SYNC
|
;CALL FN_SYNC
|
||||||
@ -764,7 +754,8 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported
|
|||||||
; D - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ
|
; D - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ
|
||||||
INIT_PAGES: LD A,SYS_PAGE
|
INIT_PAGES: LD A,SYS_PAGE
|
||||||
OUT (SLOT1),A
|
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
|
OUT (SYS_PORT.ROM),A
|
||||||
;
|
;
|
||||||
RES 7,H
|
RES 7,H
|
||||||
|
|||||||
@ -421,7 +421,7 @@ TURBO_ON:
|
|||||||
|
|
||||||
CLEAR_RAM:
|
CLEAR_RAM:
|
||||||
DI
|
DI
|
||||||
LD C,BIOS.FullInit
|
LD C,BIOS.FullInit ; [ ] free zx pages!
|
||||||
RST_to_BIOS
|
RST_to_BIOS
|
||||||
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¢®§¢à â ¢ DSS ¯® CAD
|
; ¯à¨ ®ç¨á⪥ ¯ ¬ï⨠¨§ ¬¥î ᯥªâà㬠¢®§¢à â ¢ DSS ¯® CAD
|
||||||
; ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
|
; ¡ã¤¥â ®¯ áë¬ (RAM Blocks ®á¢®¡®¤¨«¨áì),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user