страницы 2 и 5 снова в резерве, переделаны процедуры для выделения и инита vRAM
This commit is contained in:
parent
b140cdd2ba
commit
df304e2861
@ -1 +1 @@
|
|||||||
Subproject commit 14a3896e7283495e2bf55cc81a995f5f1e88e539
|
Subproject commit ff7c23909878e2f143563eee9e30fd9013bcd570
|
||||||
@ -113,17 +113,17 @@ RESERVED_PAGES:
|
|||||||
;
|
;
|
||||||
;
|
;
|
||||||
;; Block #2 - ¥«ì§ï ®á¢®¡®¦¤ âì
|
;; Block #2 - ¥«ì§ï ®á¢®¡®¦¤ âì
|
||||||
DB 0;,2,5 ; [ ] free zx pages! ; for Spectrum and BIOS starting
|
DB ZX_PAGE.SLOT0,ZX_PAGE.SLOT2,ZX_PAGE.SLOT1 ; [ ] free zx pages! ; for Spectrum and BIOS starting
|
||||||
DB DCP_PAGE ; Ports map
|
DB DCP_PAGE ; Ports map
|
||||||
DB Spec_Page ; Page for Spectrum mode
|
DB Spec_Page ; Page for Spectrum mode
|
||||||
; Screen pages
|
; Screen pages
|
||||||
DB #50,#51,#52,#53,#54,#55,#56,#57
|
DB #50,#51,#52,#53,#54,#55,#56,#57
|
||||||
DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F
|
DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F
|
||||||
;
|
;
|
||||||
;DB MODE_PAGE ; ?????
|
;DB MODE_PAGE ; ?????
|
||||||
DB CBL.BUFFER_PAGE ; Page for CBL audio
|
DB CBL.BUFFER_PAGE ; Page for CBL audio
|
||||||
DB SYS_PAGE ; Page for system (BIOS) variables
|
DB SYS_PAGE ; Page for system (BIOS) variables
|
||||||
DB #FF ; End of the block
|
DB #FF ; End of the block
|
||||||
;
|
;
|
||||||
;.Blocks EQU 2
|
;.Blocks EQU 2
|
||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
|
|||||||
@ -16,10 +16,10 @@ RST_CONF:
|
|||||||
;--[] ZX Spectrum
|
;--[] ZX Spectrum
|
||||||
.AY8910: CALL .ACC_OFF
|
.AY8910: CALL .ACC_OFF
|
||||||
LD DE,ACEX.Config_ID.Sp97_AY
|
LD DE,ACEX.Config_ID.Sp97_AY
|
||||||
CALL .INT_PLD
|
JR .INT_PLD
|
||||||
LD A,CNF_PORT.CNF_1
|
;LD A,CNF_PORT.CNF_1
|
||||||
OUT (SYS_PORT.ON),A
|
;OUT (SYS_PORT.ON),A
|
||||||
RET
|
;RET
|
||||||
;--[]
|
;--[]
|
||||||
|
|
||||||
;--[] Sprinter ZX
|
;--[] Sprinter ZX
|
||||||
|
|||||||
@ -222,13 +222,14 @@ INIT_SYS_ALL:
|
|||||||
INC HL
|
INC HL
|
||||||
LD (HL),DRIVE_CODES.TRDOS.HDD
|
LD (HL),DRIVE_CODES.TRDOS.HDD
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT0, ¡ë«® 0
|
; A = 0
|
||||||
|
LD (HL),A
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),SHARED_PAGE; [x] free zx pages! ; SYS_PAGE.COPY_SLOT1, ¡ë«® 5
|
LD (HL),ZX_PAGE.SLOT1
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT2, ¡ë«® 2
|
LD (HL),ZX_PAGE.SLOT2
|
||||||
INC HL
|
INC HL
|
||||||
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT3, ¡ë«® 0
|
LD (HL),A
|
||||||
|
|
||||||
LD A,9
|
LD A,9
|
||||||
LD (SYS_PAGE.MSD_SECS - #4000),A
|
LD (SYS_PAGE.MSD_SECS - #4000),A
|
||||||
|
|||||||
@ -445,7 +445,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
|
|||||||
; ¢ë¤¥«¨âì áâà ¨æë ᪮à¯
|
; ¢ë¤¥«¨âì áâà ¨æë ᪮à¯
|
||||||
XOR A
|
XOR A
|
||||||
LD DE,#F0D0 ; ¤«ï 䨫ìâà . #F0 - ¬ ᪠, #D0 - áâà ¨æë ISA #D0..#DF
|
LD DE,#F0D0 ; ¤«ï 䨫ìâà . #F0 - ¬ ᪠, #D0 - áâà ¨æë ISA #D0..#DF
|
||||||
LD BC,256*BIOS.ZX_MEMORY_MANAGER.MODE_256k/2 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª ª®æ à ¬¡«®ª
|
LD BC,256*8 + #FF ; B - ª®«¨ç¥á⢮ áâà ¨æ, C - Œ¥âª ª®æ à ¬¡«®ª
|
||||||
LD HL,SYS_PAGE.RAM_TABLE
|
LD HL,SYS_PAGE.RAM_TABLE
|
||||||
.allocate_loop: DEC L
|
.allocate_loop: DEC L
|
||||||
JR Z,.error_no_mem
|
JR Z,.error_no_mem
|
||||||
@ -575,7 +575,7 @@ GOTO_SPECTRUM: DI
|
|||||||
CALL ToBIOS_FromEXT
|
CALL ToBIOS_FromEXT
|
||||||
;
|
;
|
||||||
LD A,(SYS_PAGE.Block_ID.vRAM)
|
LD A,(SYS_PAGE.Block_ID.vRAM)
|
||||||
LD HL,SYS_PAGE.SHARED_BUFFER_256b
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b + 1
|
||||||
LD C,BIOS.GetMemBlkPages
|
LD C,BIOS.GetMemBlkPages
|
||||||
CALL ToBIOS_FromEXT
|
CALL ToBIOS_FromEXT
|
||||||
;!FIXIT
|
;!FIXIT
|
||||||
@ -588,40 +588,51 @@ GOTO_SPECTRUM: DI
|
|||||||
EXX
|
EXX
|
||||||
POP BC
|
POP BC
|
||||||
EXX
|
EXX
|
||||||
;.TASK_0: § ¤ ç 0, ०¨¬ 256 ª¨«®¡ ©â
|
;
|
||||||
.START_TASK: XOR A
|
XOR A
|
||||||
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥® ¤à¥á
|
||||||
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
|
||||||
|
; ¯®¤£®â®¢ª áâà ¨æ
|
||||||
|
PUSH DE
|
||||||
;
|
;
|
||||||
LD IY,.BASIC_128
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b+30
|
||||||
JR INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
LD DE,SYS_PAGE.SHARED_BUFFER_256b+32
|
||||||
;start_basic:
|
LD BC,26
|
||||||
.BASIC_128: LD SP,#C000
|
LDDR
|
||||||
LD HL,RES128_PROG
|
;
|
||||||
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë BASIC-¥.
|
INC L
|
||||||
LD BC,RES128_PROG.Size
|
LD (HL),ZX_PAGE.SLOT1
|
||||||
LDIR
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b+2
|
||||||
JP ZX_VARS.PRINTER_BUFFER
|
LD E,(HL)
|
||||||
;-----------------------------------------------------------------------;
|
LD (HL),ZX_PAGE.SLOT2
|
||||||
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b+6
|
||||||
|
LD (HL),E
|
||||||
;-----------------------------------------------------------------------;
|
LD HL,SYS_PAGE.SHARED_BUFFER_256b
|
||||||
;*****************************************
|
LD (HL),A
|
||||||
;
|
;
|
||||||
; ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ¤«ï
|
POP DE
|
||||||
; ᯥªâà㬮¢áª®£® ०¨¬ ¨
|
;
|
||||||
; ¢®ááâ ®¢«¥¨¥ ᯥªâà㬮¢áª®£®
|
; DEC HL
|
||||||
; íªà
|
; LD (HL),A ; ZX_PAGE.SLOT0
|
||||||
;
|
; INC HL
|
||||||
; ‚®§¢à â ¯® IY
|
; INC HL
|
||||||
;
|
; LD A,(HL)
|
||||||
; !!! NO USE STACK !!!
|
; LD (HL),ZX_PAGE.SLOT1
|
||||||
;
|
; INC HL
|
||||||
;*****************************************
|
; INC HL
|
||||||
;!TODO á⥪ ãáâ ®¢«¥ ¢® ¢â®à®© áâà ¨æ¥, ¥ ¨á¯®«ì§®¢ âì ¨«¨ ãáâ ¢«¨¢ âì ¢ ¤àã£ãî!
|
; LD E,(HL)
|
||||||
; ¨¨æ¨ «¨§ æ¨ï áâà ¨æ zx spectrum
|
; LD (HL),ZX_PAGE.SLOT2
|
||||||
; HL - ¤à¥á ¡«®ª áâà ¨æ ¢ SYS_PAGE SLOT3
|
; INC HL
|
||||||
; D - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ
|
; LD (HL),A
|
||||||
|
; INC HL
|
||||||
|
; LD (HL),E
|
||||||
|
;
|
||||||
|
;LD HL,SYS_PAGE.SHARED_BUFFER_256b
|
||||||
|
;LD IY,.BASIC_128
|
||||||
|
;JR INIT_PAGES ; ¨¨æ¨ «¨§ æ¨ï ®¬¥à®¢ áâà ¨æ ०¨¬ ᯥªâàã¬
|
||||||
|
; ¨¨æ¨ «¨§ æ¨ï áâà ¨æ zx spectrum
|
||||||
|
; HL - ¤à¥á ¡«®ª áâà ¨æ ¢ SYS_PAGE SLOT3
|
||||||
|
; D - ª®«¨ç¥á⢮ íâ¨å áâà ¨æ
|
||||||
INIT_PAGES: LD A,SYS_PAGE
|
INIT_PAGES: LD A,SYS_PAGE
|
||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
; [ ] free zx pages! ¯¥à¥¤¥« âì ¨¨â. ¥á«¨ 512, â® ¥â 1ffd ¨ ®¡®à®â
|
; [ ] free zx pages! ¯¥à¥¤¥« âì ¨¨â. ¥á«¨ 512, â® ¥â 1ffd ¨ ®¡®à®â
|
||||||
@ -652,12 +663,14 @@ INIT_PAGES: LD A,SYS_PAGE
|
|||||||
;
|
;
|
||||||
.set_48k: LD A,5 ; !HARDCODE CONFIG_DE.ZX_START ‚•Ž„ ‚ BASIC 48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
|
.set_48k: LD A,5 ; !HARDCODE CONFIG_DE.ZX_START ‚•Ž„ ‚ BASIC 48 á § ªàëâ묨 128-¬¨ ¯®àâ ¬¨
|
||||||
LD (SYS_PAGE.CONFIG_DE.ZX_START - #8000),A
|
LD (SYS_PAGE.CONFIG_DE.ZX_START - #8000),A
|
||||||
LD A,(HL) ; SLOT0, SLOT3 page
|
;LD A,(HL) ; SLOT0, SLOT3 page
|
||||||
INC HL
|
;INC HL
|
||||||
LD E,(HL) ; SLOT1 page
|
;LD E,(HL) ; SLOT1 page
|
||||||
INC HL
|
;INC HL
|
||||||
LD D,(HL) ; SLOT2 page
|
;LD D,(HL) ; SLOT2 page
|
||||||
JR .set_slots
|
;JR .set_slots
|
||||||
|
;
|
||||||
|
JR .set_table
|
||||||
;
|
;
|
||||||
.set_scorp: CALL MANAGE_ZX_PAGES.INIT_vRAM
|
.set_scorp: CALL MANAGE_ZX_PAGES.INIT_vRAM
|
||||||
LD A,#10
|
LD A,#10
|
||||||
@ -668,7 +681,7 @@ INIT_PAGES: LD A,SYS_PAGE
|
|||||||
INC A ; reset ZF
|
INC A ; reset ZF
|
||||||
;
|
;
|
||||||
.set_pent: CALL Z,MANAGE_ZX_PAGES.INIT_vRAM
|
.set_pent: CALL Z,MANAGE_ZX_PAGES.INIT_vRAM
|
||||||
; ¬¥ï¥¬ ¯®à冷ª ¤«ï ¯à®æ¥¤ãàë set_48k
|
; ¬¥ï¥¬ ¯®à冷ª ¤«ï ¯à®æ¥¤ãàë .set_slots
|
||||||
.set_table: LD A,(SYS_PAGE.SHARED_BUFFER_256b+2 - #8000) ; SLOT2 page
|
.set_table: LD A,(SYS_PAGE.SHARED_BUFFER_256b+2 - #8000) ; SLOT2 page
|
||||||
LD D,A
|
LD D,A
|
||||||
LD A,(SYS_PAGE.SHARED_BUFFER_256b+5 - #8000) ; SLOT1 page
|
LD A,(SYS_PAGE.SHARED_BUFFER_256b+5 - #8000) ; SLOT1 page
|
||||||
@ -681,8 +694,35 @@ INIT_PAGES: LD A,SYS_PAGE
|
|||||||
OUT (SLOT1),A
|
OUT (SLOT1),A
|
||||||
LD A,D
|
LD A,D
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
|
;JP (IY)
|
||||||
;
|
;
|
||||||
JP (IY)
|
;.BASIC_128: ;start_basic:
|
||||||
|
LD SP,#C000
|
||||||
|
LD HL,RES128_PROG
|
||||||
|
LD DE,ZX_VARS.PRINTER_BUFFER ; § ¯ã᪠¯à®£à ¬¬ë BASIC-¥.
|
||||||
|
LD BC,RES128_PROG.Size
|
||||||
|
LDIR
|
||||||
|
JP ZX_VARS.PRINTER_BUFFER
|
||||||
|
;----------------------------------------------------------------------;
|
||||||
|
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
||||||
|
; x 0 x 1 2 x 3 4
|
||||||
|
; x 0 1 2 3 4
|
||||||
|
;p 0 1 2 3 4 5 6 7
|
||||||
|
; 0 x 2 x x 5 x x
|
||||||
|
;-----------------------------------------------------------------------;
|
||||||
|
;*****************************************
|
||||||
|
;
|
||||||
|
; ˆ¨æ¨ «¨§ æ¨ï áâà ¨æ ¤«ï
|
||||||
|
; ᯥªâà㬮¢áª®£® ०¨¬ ¨
|
||||||
|
; ¢®ááâ ®¢«¥¨¥ ᯥªâà㬮¢áª®£®
|
||||||
|
; íªà
|
||||||
|
;
|
||||||
|
; ‚®§¢à â ¯® IY
|
||||||
|
;
|
||||||
|
; !!! NO USE STACK !!!
|
||||||
|
;
|
||||||
|
;*****************************************
|
||||||
|
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user