страницы 2 и 5 снова в резерве, переделаны процедуры для выделения и инита vRAM

This commit is contained in:
Tolik 2024-10-11 04:58:27 +10:00
parent b140cdd2ba
commit df304e2861
5 changed files with 97 additions and 56 deletions

@ -1 +1 @@
Subproject commit 14a3896e7283495e2bf55cc81a995f5f1e88e539
Subproject commit ff7c23909878e2f143563eee9e30fd9013bcd570

View File

@ -113,17 +113,17 @@ RESERVED_PAGES:
;
;
;; Block #2 - ­¥«ì§ï ®á¢®¡®¦¤ âì
DB 0;,2,5 ; [ ] free zx pages! ; for Spectrum and BIOS starting
DB DCP_PAGE ; Ports map
DB Spec_Page ; Page for Spectrum mode
DB ZX_PAGE.SLOT0,ZX_PAGE.SLOT2,ZX_PAGE.SLOT1 ; [ ] free zx pages! ; for Spectrum and BIOS starting
DB DCP_PAGE ; Ports map
DB Spec_Page ; Page for Spectrum mode
; Screen pages
DB #50,#51,#52,#53,#54,#55,#56,#57
DB #58,#59,#5A,#5B,#5C,#5D,#5E,#5F
;
;DB MODE_PAGE ; ?????
DB CBL.BUFFER_PAGE ; Page for CBL audio
DB SYS_PAGE ; Page for system (BIOS) variables
DB #FF ; End of the block
DB CBL.BUFFER_PAGE ; Page for CBL audio
DB SYS_PAGE ; Page for system (BIOS) variables
DB #FF ; End of the block
;
;.Blocks EQU 2
;----------------------------------------------------------------------;

View File

@ -16,10 +16,10 @@ RST_CONF:
;--[] ZX Spectrum
.AY8910: CALL .ACC_OFF
LD DE,ACEX.Config_ID.Sp97_AY
CALL .INT_PLD
LD A,CNF_PORT.CNF_1
OUT (SYS_PORT.ON),A
RET
JR .INT_PLD
;LD A,CNF_PORT.CNF_1
;OUT (SYS_PORT.ON),A
;RET
;--[]
;--[] Sprinter ZX

View File

@ -222,13 +222,14 @@ INIT_SYS_ALL:
INC HL
LD (HL),DRIVE_CODES.TRDOS.HDD
INC HL
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT0, ¡ë«® 0
; A = 0
LD (HL),A
INC HL
LD (HL),SHARED_PAGE; [x] free zx pages! ; SYS_PAGE.COPY_SLOT1, ¡ë«® 5
LD (HL),ZX_PAGE.SLOT1
INC HL
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT2, ¡ë«® 2
LD (HL),ZX_PAGE.SLOT2
INC HL
LD (HL),ZERO_PAGE ; [x] free zx pages! ; SYS_PAGE.COPY_SLOT3, ¡ë«® 0
LD (HL),A
LD A,9
LD (SYS_PAGE.MSD_SECS - #4000),A

View File

@ -445,7 +445,7 @@ GET_SCORP_RAM: CALL FREE_vRAM
; ¢ë¤¥«¨âì áâà ­¨æë ᪮௠
XOR A
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
.allocate_loop: DEC L
JR Z,.error_no_mem
@ -575,7 +575,7 @@ GOTO_SPECTRUM: DI
CALL ToBIOS_FromEXT
;
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
CALL ToBIOS_FromEXT
;!FIXIT
@ -588,40 +588,51 @@ GOTO_SPECTRUM: DI
EXX
POP BC
EXX
;.TASK_0: § ¤ ç  0, ०¨¬ 256 ª¨«®¡ ©â
.START_TASK: XOR A
;
XOR A
OUT (RGADR),A ; ॣ¨áâà ¢¨¤¥®  ¤à¥á 
OUT (RGMOD),A ; ॣ¨áâà ¬®¤ë
; ¯®¤£®â®¢ª  áâà ­¨æ
PUSH DE
;
LD IY,.BASIC_128
JR INIT_PAGES ; ¨­¨æ¨ «¨§ æ¨ï ­®¬¥à®¢ áâà ­¨æ ०¨¬  ᯥªâà㬠
;start_basic:
.BASIC_128: 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
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;*****************************************
;
; ˆ­¨æ¨ «¨§ æ¨ï áâà ­¨æ ¤«ï
; ᯥªâà㬮¢áª®£® ०¨¬  ¨
; ¢®ááâ ­®¢«¥­¨¥ ᯥªâà㬮¢áª®£®
; íªà ­ 
;
; ‚®§¢à â ¯® IY
;
; !!! NO USE STACK !!!
;
;*****************************************
;!TODO á⥪ ãáâ ­®¢«¥­ ¢® ¢â®à®© áâà ­¨æ¥, ­¥ ¨á¯®«ì§®¢ âì ¨«¨ ãáâ ­ ¢«¨¢ âì ¢ ¤àã£ãî!
; ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ zx spectrum
; HL -  ¤à¥á ¡«®ª  áâà ­¨æ ¢ SYS_PAGE SLOT3
; D - ª®«¨ç¥á⢮ íâ¨å áâà ­¨æ
LD HL,SYS_PAGE.SHARED_BUFFER_256b+30
LD DE,SYS_PAGE.SHARED_BUFFER_256b+32
LD BC,26
LDDR
;
INC L
LD (HL),ZX_PAGE.SLOT1
LD HL,SYS_PAGE.SHARED_BUFFER_256b+2
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
; INC HL
; LD A,(HL)
; LD (HL),ZX_PAGE.SLOT1
; INC HL
; INC HL
; LD E,(HL)
; LD (HL),ZX_PAGE.SLOT2
; INC HL
; 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
OUT (SLOT1),A
; [ ] 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-¬¨ ¯®àâ ¬¨
LD (SYS_PAGE.CONFIG_DE.ZX_START - #8000),A
LD A,(HL) ; SLOT0, SLOT3 page
INC HL
LD E,(HL) ; SLOT1 page
INC HL
LD D,(HL) ; SLOT2 page
JR .set_slots
;LD A,(HL) ; SLOT0, SLOT3 page
;INC HL
;LD E,(HL) ; SLOT1 page
;INC HL
;LD D,(HL) ; SLOT2 page
;JR .set_slots
;
JR .set_table
;
.set_scorp: CALL MANAGE_ZX_PAGES.INIT_vRAM
LD A,#10
@ -668,7 +681,7 @@ INIT_PAGES: LD A,SYS_PAGE
INC A ; reset ZF
;
.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
LD D,A
LD A,(SYS_PAGE.SHARED_BUFFER_256b+5 - #8000) ; SLOT1 page
@ -681,8 +694,35 @@ INIT_PAGES: LD A,SYS_PAGE
OUT (SLOT1),A
LD A,D
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 !!!
;
;*****************************************
;-----------------------------------------------------------------------;
;