diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index abb2400..55a6b30 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -701,9 +701,30 @@ POST_5_OK: ;-------------[Save IX:IY]-------------- ; Don't use IY before this point if it`s normal booting!!! - LD IX,0 - AND A - ADD IX,SP ; восстановить значение переданное загрузчиком конфы (если старт после ресета) + LD IX,0 + XOR A + ADD IX,SP ; восстановить значение переданное загрузчиком конфы (если старт после ресета) + ;!TEST 31/12/23 подстраховка от утечки памяти + LD R,A + ; + LD D,YH + LD E,YL + EX DE,HL + LD DE,SP2000_Loader_Flag + SBC HL,DE + JR NZ,.no_conf_reload + ; + LD D,XH + LD E,XL + EX DE,HL + LD DE,SP2000_ConfID + SBC HL,DE + JR NZ,.no_conf_reload + ; + LD A,#80 + LD R,A +.no_conf_reload: + ; ; ; В этом месте у нас IX:IY из Loader.asm ; @@ -775,9 +796,8 @@ set_config: ;[---------------------------------------------------------------------] MODULE Reset_Handler -start: - IN A,(SLOT3) - push af +start: IN A,(SLOT3) + PUSH AF ;----[перехват soft reset #EE port]----- Check_EE_Port: LD A,ACEX.RET_PORT @@ -819,18 +839,29 @@ Check_Spec_Page: LD A,(#FFF7) CP 'R' - JR NZ,Spec_Page_handler_OK + ;JR NZ,Spec_Page_handler_OK + JR NZ,Spec_Page_handler_Next ;!TEST 31/12/23 подстраховка от утечки памяти LD A,(#FFF8) CP 'S' - JR NZ,Spec_Page_handler_OK + ;JR NZ,Spec_Page_handler_OK + JR NZ,Spec_Page_handler_Next ;!TEST 31/12/23 подстраховка от утечки памяти LD A,(#FFF9) CP 'T' - JR NZ,Spec_Page_handler_OK + ;JR NZ,Spec_Page_handler_OK + JR NZ,Spec_Page_handler_Next ;!TEST 31/12/23 подстраховка от утечки памяти XOR A LD (#FFF7),A JR Check_EE_Port.After_Hard_Rst + ; + ;!TEST 31/12/23 подстраховка от утечки памяти +Spec_Page_handler_Next: + LD A,R + AND #80 + JR Z,Spec_Page_handler_OK + XOR A + LD R,A ;--------------------------------------- No_Reset_handlers: init_rom_address EQU #8200 ;!HARDCODE @@ -870,8 +901,8 @@ init_rom_address EQU #8200 ;!HARDCO ;--------------------------------------- Spec_Page_handler_OK: - pop af - OUT (SLOT3),A + POP AF + OUT (SLOT3),A ENDMODULE ;[---------------------------------------------------------------------] diff --git a/src/bios/loader/loader.asm b/src/bios/loader/loader.asm index 97f34cd..138c4b6 100644 --- a/src/bios/loader/loader.asm +++ b/src/bios/loader/loader.asm @@ -100,7 +100,7 @@ DEC D ; multiple config! .ONES_CONFIG: - LD IY,#0107 ;!HARDCODE ;!!!!! подумать))) + LD IY,SP2000_Loader_Flag ;!TEST ;LD IX,#FFFD LD IX,SP2000_ConfID ;!!!!! подумать))) diff --git a/src/bios/shared/DEFINES.INC b/src/bios/shared/DEFINES.INC index dfc9e93..085a14c 100644 --- a/src/bios/shared/DEFINES.INC +++ b/src/bios/shared/DEFINES.INC @@ -2,6 +2,7 @@ ;---------[All shared defines]---------- DEFINE DEBUG 1 ; добавляет строку и сообщение о тестовой сборке на стартовом экране DEFINE PACKED_MAIN 0 ; паковать MAIN или влезает без этого? + DEFINE SP2000_Loader_Flag #0107 DEFINE SP2000_ConfID #FEFF ; DEFINE IDE_Optimization 1 ; слегка оптимизирует некоторые процедуры работы с HDD DEFINE NeedSafePort_Y 1 ; !!!!! если 0, то в режиме sp-спектрума некоторые процедуры могут засрать экран