From 90593508edba58b5a29bbc219c8c31b59d256a0b Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sun, 31 Dec 2023 05:36:30 +1000 Subject: [PATCH] =?UTF-8?q?SET=5FROM=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BD=D1=83?= =?UTF-8?q?=D1=8E=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20BIOS=20-?= =?UTF-8?q?=20SET=5FPORTS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spectrum.asm | 98 +++++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/spectrum.asm b/spectrum.asm index b4310d1..a392bf9 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -586,7 +586,7 @@ PARAM_E2: EX (SP),HL ; ;************************************ IF NEW_MEMORY_LOGIC BUFFER_RAM_PAGES: -.ROM: BLOCK 6 ; количество портов эмулятора ПЗУ +.ROM: BLOCK 10 ; количество портов эмулятора ПЗУ .RAM: BLOCK 16 ; 256 кб .Size EQU $-BUFFER_RAM_PAGES .end_marker: BYTE #FF @@ -606,22 +606,24 @@ BUFFER_RAM_PAGES: OR B JR Z,.next LD A,dcp_port ; ROM-ID + PUSH HL CALL SET_ROM + POP HL .next: ENDM PARAM_END: LD HL,BUFFER_RAM_PAGES.ROM - vROM_set ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 - vROM_set ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48 - vROM_set ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS - vROM_set ACEX.vROM.BIOS ; ROM-ID - EXPANSION - vROM_set ACEX.vROM.BIOS_3 ; ROM-ID - BIOS-1 - vROM_set ACEX.vROM.BIOS_4 ; ROM-ID - BIOS-2 - ;vROM_set ACEX.vROM.BASIC_128_2 ; BASIC 128 - 2 - ;vROM_set ACEX.vROM.BASIC_48_2 ; BASIC 48 - 2 - ;vROM_set ACEX.vROM.TR_DOS_2 ; TR-DOS - 2 - ;vROM_set ACEX.vROM.BIOS_2 ; BIOS (ZX_EXP) - 2 + vROM_set ACEX.vROM.BASIC_128 ; ROM-ID - BASIC 128 + vROM_set ACEX.vROM.BASIC_48 ; ROM-ID - BASIC 48 + vROM_set ACEX.vROM.TR_DOS ; ROM-ID - TR-DOS + vROM_set ACEX.vROM.BIOS ; ROM-ID - EXPANSION + vROM_set ACEX.vROM.BIOS_3 ; ROM-ID - BIOS-1 + vROM_set ACEX.vROM.BIOS_4 ; ROM-ID - BIOS-2 + ;vROM_set ACEX.vROM.BASIC_128_2 ; BASIC 128 - 2 + ;vROM_set ACEX.vROM.BASIC_48_2 ; BASIC 48 - 2 + ;vROM_set ACEX.vROM.TR_DOS_2 ; TR-DOS - 2 + ;vROM_set ACEX.vROM.BIOS_2 ; BIOS (ZX_EXP) - 2 LD HL,(IMAGE_NAME) LD A,H @@ -667,44 +669,44 @@ SKIP_IMAGE: LD A,(No_run_+2) ; out B - old ROM-page ;!FIXIT сделать через вызов функции БИОС SET_ROM: DI + LD C,BIOS.SET_PORTS + JP ToBIOS - EX AF,AF' - - IN A,(SLOT3) - PUSH AF - - LD A,DCP_PAGE ; установить новую - OUT (SLOT3),A - - LD A,(#C400) ; сохранить то что было - LD E,A - LD A,(#C600) - LD D,A - - EX AF,AF' ; страница - - LD (#C400),A ; установить порт ROM - LD (#C600),A - EX AF,AF' - - LD A,B - LD BC,0 - EX AF,AF' - IN A,(C) - EX AF,AF' - OUT (C),A ; установить новый ROM - EX AF,AF' - LD B,A - - LD A,E - LD (#C400),A ; вернуть порт - LD A,D - LD (#C600),A ; вернуть порт - - POP AF - OUT (SLOT3),A - - RET + ; DI + ; ; + ; EX AF,AF' + ; IN A,(SLOT3) + ; PUSH AF + ; LD A,DCP_PAGE ; установить новую + ; OUT (SLOT3),A + ; ; + ; LD A,(#C400) ; сохранить то что было + ; LD E,A + ; LD A,(#C600) + ; LD D,A + ; ; + ; EX AF,AF' ; страница + ; LD (#C400),A ; установить порт ROM + ; LD (#C600),A + ; ; + ; EX AF,AF' + ; LD A,B + ; LD BC,0 + ; EX AF,AF' + ; IN A,(C) + ; EX AF,AF' + ; OUT (C),A ; установить новый ROM + ; EX AF,AF' + ; ; + ; LD B,A + ; LD A,E + ; LD (#C400),A ; вернуть порт + ; LD A,D + ; LD (#C600),A ; вернуть порт + ; ; + ; POP AF + ; OUT (SLOT3),A + ; RET ;******************************************** READ_IMAGE: LD DE,ONE_FILE