diff --git a/spectrum.asm b/spectrum.asm index 4b762b0..87a8868 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -939,14 +939,21 @@ RESTORE_PORT_HOLD: ;******************************************** EXIT_TO_DSS: DI LD SP,stack_point - LD A,CNF_PORT.CNF_0 - OUT (SYS_PORT.OFF),A - LD A,(#FFF0) ;!HARDCODE + LD A,high ZXKeys.Line_7 + IN A,(ZXKeys) + AND #1F + CP #1E + 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 + XOR A LD BC,3*256+BIOS.SET_PAL_INIT ; SET IBM PAL RST ToBIOS @@ -1104,10 +1111,10 @@ RESET_TO_ZX: DI IN A,(ZXKeys) AND #1F CP #1E - JP Z,EXIT_TO_DSS + JP Z,EXIT_TO_DSS.cont ; фикс неполной дешифрации порта #FFFD (пишут в #C0FD) - LD A,#FF +.cont: LD A,#FF LD HL,%00'010'1'1110'1101 LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1 LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG