diff --git a/Shared_Includes b/Shared_Includes index 04aaef8..4f546cb 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 04aaef8ac955971d913babd95921a62937b597ae +Subproject commit 4f546cb1d2cd8eeb1aec0de2c3e9902d1bb52fee diff --git a/spectrum.asm b/spectrum.asm index 87a8868..8797607 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -935,24 +935,26 @@ RESTORE_PORT_HOLD: LD C,BIOS.SET_PORTS JP ToBIOS ; ; ; - -;******************************************** -EXIT_TO_DSS: DI - LD SP,stack_point +FIRST_PREPARE: LD A,CNF_PORT.CNF_0 + OUT (SYS_PORT.OFF),A + CALL RESTORE_PORT_HOLD LD A,high ZXKeys.Line_7 IN A,(ZXKeys) AND #1F CP #1E + RET +;******************************************** +EXIT_TO_DSS: DI + LD SP,stack_point + + CALL FIRST_PREPARE JP Z,RESET_TO_ZX.cont .cont: LD A,(#FFF0) ;!HARDCODE OUT (SLOT0),A - - CALL RESTORE_PORT_HOLD - - LD A,CNF_PORT.CNF_0 - OUT (SYS_PORT.OFF),A + LD A,(#FFF3) ;!HARDCODE + OUT (SLOT3),A XOR A LD BC,3*256+BIOS.SET_PAL_INIT ; SET IBM PAL @@ -1100,17 +1102,15 @@ NO_RET_FN: LD (#FFF4),DE ; LD (#FFF1),A IN A,(SLOT2) ; сохранить страницу LD (#FFF2),A ; программы для возврата - IN A,(SLOT3) + ;IN A,(SLOT3) + LD A,(SAVE_SLOT3) LD (#FFF3),A ; ;******************************************** RESET_TO_ZX: DI LD SP,stack_point ; #BFF0 - LD A,high ZXKeys.Line_7 - IN A,(ZXKeys) - AND #1F - CP #1E + CALL FIRST_PREPARE JP Z,EXIT_TO_DSS.cont ; фикс неполной дешифрации порта #FFFD (пишут в #C0FD) @@ -1120,8 +1120,6 @@ RESET_TO_ZX: DI LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG RST ToBIOS ; - CALL RESTORE_PORT_HOLD - ; ;[x] 04/11/2023 Отдельные рамдиски для режима спектрума и DSS. BLK_TO_RAMD LD BC,BIOS.SWAP_RAM_DRIVES.ZX RST ToBIOS