From df304e2861c4f73ef8e83896e4a8435bb69a5122 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 11 Oct 2024 04:58:27 +1000 Subject: [PATCH] =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86?= =?UTF-8?q?=D1=8B=202=20=D0=B8=205=20=D1=81=D0=BD=D0=BE=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=B2=20=D1=80=D0=B5=D0=B7=D0=B5=D1=80=D0=B2=D0=B5,=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D1=8B=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=86=D0=B5=D0=B4=D1=83=D1=80=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D1=8B=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B8=20=D0=B8=D0=BD=D0=B8=D1=82=D0=B0=20vRAM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- src/bios/exp/FUNC_RAM_ROM_DRV.ASM | 12 +-- src/bios/exp/FUNC_SERVICE.asm | 8 +- src/bios/exp/FUNC_SYS.ASM | 9 ++- src/bios/rom/ZX/ZX_FUNC.ASM | 122 ++++++++++++++++++++---------- 5 files changed, 97 insertions(+), 56 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 14a3896..ff7c239 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 14a3896e7283495e2bf55cc81a995f5f1e88e539 +Subproject commit ff7c23909878e2f143563eee9e30fd9013bcd570 diff --git a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM index 9956d25..f2ab4db 100644 --- a/src/bios/exp/FUNC_RAM_ROM_DRV.ASM +++ b/src/bios/exp/FUNC_RAM_ROM_DRV.ASM @@ -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 ;----------------------------------------------------------------------; diff --git a/src/bios/exp/FUNC_SERVICE.asm b/src/bios/exp/FUNC_SERVICE.asm index fb88489..58217c3 100644 --- a/src/bios/exp/FUNC_SERVICE.asm +++ b/src/bios/exp/FUNC_SERVICE.asm @@ -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 diff --git a/src/bios/exp/FUNC_SYS.ASM b/src/bios/exp/FUNC_SYS.ASM index 84f215a..c6a11e6 100644 --- a/src/bios/exp/FUNC_SYS.ASM +++ b/src/bios/exp/FUNC_SYS.ASM @@ -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 diff --git a/src/bios/rom/ZX/ZX_FUNC.ASM b/src/bios/rom/ZX/ZX_FUNC.ASM index de0b255..6be5b9c 100644 --- a/src/bios/rom/ZX/ZX_FUNC.ASM +++ b/src/bios/rom/ZX/ZX_FUNC.ASM @@ -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 !!! +; +;***************************************** + ;-----------------------------------------------------------------------; ;