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