страницы 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,7 +113,7 @@ 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

View File

@ -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

View File

@ -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

View File

@ -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,37 +588,48 @@ 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-¥.
LD BC,RES128_PROG.Size
LDIR
JP ZX_VARS.PRINTER_BUFFER
;-----------------------------------------------------------------------;
;-----------------------------------------------------------------------;
;*****************************************
; ;
; ˆ­¨æ¨ «¨§ æ¨ï áâà ­¨æ ¤«ï 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
; ;
; ‚®§¢à â ¯® IY POP DE
; ;
; !!! NO USE STACK !!! ; 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
;!TODO á⥪ ãáâ ­®¢«¥­ ¢® ¢â®à®© áâà ­¨æ¥, ­¥ ¨á¯®«ì§®¢ âì ¨«¨ ãáâ ­ ¢«¨¢ âì ¢ ¤àã£ãî! ;LD IY,.BASIC_128
;JR INIT_PAGES ; ¨­¨æ¨ «¨§ æ¨ï ­®¬¥à®¢ áâà ­¨æ ०¨¬  ᯥªâà㬠
; ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ zx spectrum ; ¨­¨æ¨ «¨§ æ¨ï áâà ­¨æ zx spectrum
; HL -  ¤à¥á ¡«®ª  áâà ­¨æ ¢ SYS_PAGE SLOT3 ; HL -  ¤à¥á ¡«®ª  áâà ­¨æ ¢ SYS_PAGE SLOT3
; D - ª®«¨ç¥á⢮ íâ¨å áâà ­¨æ ; D - ª®«¨ç¥á⢮ íâ¨å áâà ­¨æ
@ -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 !!!
;
;*****************************************
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
; ;