diff --git a/Shared_Includes b/Shared_Includes index 80b60f7..d8f20a3 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 80b60f7294ce3eee958a0c4e9a6f29577cee496f +Subproject commit d8f20a33b9525ba38e6f87956f88081375a81526 diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index c92c9db..fdcd90a 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -1345,11 +1345,11 @@ SW_ROM_1: ;*************************************** _mInfoBLOCK #3CF8-$,0 ; no basic-48! -JP_HL_48: +;JP_HL_48: PUSH HL -SW_ROM: +;SW_ROM: PUSH AF - LD A,ROM.BIOS + LD A,ROM.BIOS ;!FIXIT неправильное название константы OUT (SYS_PORT.RAM),A POP AF RET diff --git a/src/bios/exp/ZX_MENU.ASM b/src/bios/exp/ZX_MENU.ASM index 6caae58..79f5a03 100644 --- a/src/bios/exp/ZX_MENU.ASM +++ b/src/bios/exp/ZX_MENU.ASM @@ -8,11 +8,18 @@ ; если A=-1, то возврат, ; иначе выполнение ;***************************** - - EXEC_PNT: INC A RET Z + ;!FIXIT почему не так? + ; DEC A + ; JR Z,EXEC_HL + ; LD D,0 + ; LD E,A + ; XOR A + ; ADC HL,DE + ; ADC HL,DE + ; EXEC_PNT_LOOP: DEC A JR Z,EXEC_HL @@ -33,9 +40,9 @@ RET_FROM_M: ;**************************************** ; РАБОТА С MENU_128 ;**************************************** -; ВХОД: - DE - адрес меню -; BC - длина меню -; ВЫХОД: A - выбранный пункт +; ВХОД: DE - адрес меню +; BC - длина меню +; ВЫХОД: A - выбранный пункт ;**************************************** RUN_MENU: PUSH IX @@ -44,25 +51,25 @@ RUN_MENU: LD A,(DE) DEC A ; число CMD - CP 9 + CP 9 ; !HARDCODE макисмальное число пунктов меню JR C,RUN_M_1 RUN_MN_ERR: POP BC POP DE - LD A,0FFh ; вернуться с номером 255 - ошибка + LD A,#FF ; вернуться с номером 255 - ошибка POP IX RET RUN_M_1: - LD A,(5B00H) - CP #F5 ; СРАВНИТЬ А С КОДОМ PUSH AF + LD A,(ZX_VARS.SWAP_ROM) + CP #F5 ; сравнить А с опкодом PUSH AF JR NZ,RUN_MN_ERR LD HL,LEN_P_M - ADD HL,BC ; HL - нужная длина памяти - LD B,H ; HL -> BC + ADD HL,BC ; HL - нужная длина памяти + LD B,H ; HL -> BC LD C,L - LD HL,(5C61h) ; HL - начало раб обл + LD HL,(ZX_VARS.WORK_SPACE) ; HL - начало раб обл PUSH BC PUSH HL @@ -105,10 +112,11 @@ JP_HL: JP (HL) ;************************************** ; 128k MENU ;************************************** -MENU_PROG EQU 25B9h -SWAP_ROM EQU 5B00h -NEW_SP EQU 1F45h -RET_SP EQU 1F20h +;!HARDCODE +MENU_PROG EQU #25B9 ; #25B9 in sp_128.asm +;SWAP_ROM EQU #5B00 +NEW_SP EQU #1F45 ; L1F45: in sp_128.asm +RET_SP EQU #1F20 ; L1F20: in sp_128.asm ;************************************** ; Программа вызова MENU_128 из ОЗУ. @@ -131,33 +139,35 @@ MN_128_S: ; Эта программа перемещается в озу ;************************************** MENU_128: - LD A,0 - OUT (SYS_PORT.OFF),A - CALL SWAP_ROM + XOR A + OUT (SYS_PORT.RAM),A + CALL ZX_VARS.SWAP_ROM CALL NEW_SP SH_1: LD DE,MENU_DAT - MENU_128 - LD HL,#F6EA + LD HL,ZX_VARS.MENU_TBL.JUMP LD BC,4 LDIR SH_2: LD HL,MENU_128_E - MENU_128 - LD (#F6EA),HL + LD (ZX_VARS.MENU_TBL.JUMP),HL SH_3: LD HL,MENU_128_E2 - MENU_128 - LD (#F6EC),HL + LD (ZX_VARS.MENU_TBL.TEXT),HL JP MENU_PROG RET_M EQU $-MENU_128 SH_4: LD HL,MENU_DAT - MENU_128 - LD DE,#F6EA + LD DE,ZX_VARS.MENU_TBL.JUMP LD BC,4 LDIR CALL RET_SP - CALL SWAP_ROM + CALL ZX_VARS.SWAP_ROM EX AF,AF' - LD A,0 - OUT (CNF_PORT),A + ;LD A,0 + ;OUT (CNF_PORT),A + LD A,SYS_PORT.EXTENSION + OUT (SYS_PORT.ROM),A ;!!!!! версия для ПЗУ EX AF,AF' RET MENU_DAT: @@ -186,7 +196,7 @@ LEN_P_M EQU $-MENU_128 ;************************************** ; RST 30 - получение BC SPACES с адреса HL -; 19E8h - освобождение BC spaces с адреса HL +; #19E8 - освобождение BC spaces с адреса HL ; HL - раб. ячейка ; BC - адрес программы ; DE - адрес данных для перемещения @@ -276,8 +286,8 @@ ERR_TST_M: ;************************************** CALL_DOS_MOVE: - LD DE,#5C00 - DOS_PROG.Size ;!HARDCODE LD HL,DOS_PROG + LD DE,DOS_PROG.Exec LD BC,DOS_PROG.Size LDIR RET @@ -290,50 +300,56 @@ CALL_DOS1: LD DE,(ZX_VARS.E_LINE) LD (ZX_VARS.CH_ADR),DE LDIR - LD (ZX_VARS.WORK_SP),DE + LD (ZX_VARS.WORK_SPACE),DE LD (ZX_VARS.STK_BOT),DE LD (ZX_VARS.STK_END),DE CALL CALL_DOS_MOVE - JP #5C00 - DOS_PROG.Size -CALL_DOS: - PUSH HL - PUSH DE - PUSH BC - PUSH AF - CALL CALL_DOS_MOVE - LD A,13H - LD (5C00H-DOS_PROG.Size+DOS_PROG_A),A - POP AF - POP BC - POP DE - POP HL - JP #5C00-DOS_PROG.Size + JP DOS_PROG.Exec DOS_PROG: - PUSH AF - XOR A - OUT (SYS_PORT.OFF),A - POP AF - CALL #3D03 ;!HARDCODE -DOS_PROG_A EQU $-DOS_PROG-1 - PUSH AF - LD A,0 - OUT (CNF_PORT),A - POP AF - RET -DOS_PROG.Size EQU $-DOS_PROG + DISP #5C00 - DOS_PROG.Size ;!HARDCODE + //DOS_PROG: +.Exec: PUSH AF + XOR A + OUT (SYS_PORT.RAM),A + POP AF + //DOS_PROG_A+1: +.Patch+2: CALL #3D03 ;!HARDCODE + PUSH AF + ;!FIXIT сделать через условие компиляции ZX_ROM_BIOS + //LD A,0 + //OUT (CNF_PORT),A + LD A,SYS_PORT.EXTENSION + OUT (SYS_PORT.ROM),A ;!!!!! версия для ПЗУ + POP AF + RET + //DOS_PROG_LEN +.Size EQU $ - .Exec + ENT + ;????? вроде, не используются CONT_PROG: - LD HL,1AFDH - PUSH HL - LD HL,5B00H - PUSH HL - LD DE,5C71H - LD BC,1 - LD A,0E8H - LD (DE),A - JP SW_ROM - - - - + LD HL,#1AFD ;!HARDCODE COM_LN: + PUSH HL + LD HL,#5B00 ;!HARDCODE + PUSH HL + LD DE,ZX_VARS.FLG_INPUT + LD BC,1 + LD A,#E8 ;!HARDCODE + LD (DE),A + JP SW_ROM +CALL_DOS: + PUSH HL + PUSH DE + PUSH BC + PUSH AF + CALL CALL_DOS_MOVE + LD A,#13 ;!HARDCODE #13 из AUTO_1303 + LD (DOS_PROG.Patch),A + POP AF + POP BC + POP DE + POP HL + JP DOS_PROG.Exec + ; +; \ No newline at end of file diff --git a/src/bios/exp/ZX_MODE.ASM b/src/bios/exp/ZX_MODE.ASM index 6114789..25d2385 100644 --- a/src/bios/exp/ZX_MODE.ASM +++ b/src/bios/exp/ZX_MODE.ASM @@ -1,12 +1,13 @@ ;.PRINTX "Service." SERVICE: - LD HL,SR_TAB + //LD HL,SR_TAB LD DE,SR_MENU LD BC,SR_MENU.Size - PUSH HL + //PUSH HL CALL RUN_MENU ;09f3 - POP HL + LD HL,SR_TAB + //POP HL CALL EXEC_PNT JR SERVICE @@ -29,7 +30,7 @@ SR_MENU: DC 'TURBO ON ' DC 'Clear RAM' DC 'RETURN' - DC ' ' ; маркер конца + DC " " ; маркер конца .Size EQU $-SR_MENU ;***************************** @@ -136,7 +137,7 @@ IS_MENU: DC 'Pentagon 512' DC 'Restart ' DC 'RETURN' - DC ' ' ; маркер конца + DC " " ; маркер конца .Size EQU $-IS_MENU ;****************************** @@ -267,6 +268,7 @@ CNF_PN_320: LD A,Port_VSYNC.SET_320L OUT (Port_VSYNC),A RET + ; LD A,CNF_0 ; OUT (SYS_PORT.ROM),A ; CALL DOS_OFF diff --git a/src/bios/rom/ROM.asm b/src/bios/rom/ROM.asm index ef96883..7748c44 100644 --- a/src/bios/rom/ROM.asm +++ b/src/bios/rom/ROM.asm @@ -465,9 +465,9 @@ RET_FROM_BIOS_TO_BASIC48: ;*************************************** _mInfoBLOCK #3CF8-$,0 ; no basic-48! -;JP_HL_48: +JP_HL_48: PUSH HL -;SW_ROM: +SW_ROM: PUSH AF LD A,ROM.BIOS ;!FIXIT или поставить тут ROM.EXPANSION ??? OUT (SYS_PORT.RAM),A diff --git a/src/bios/shared/DEFINES.INC b/src/bios/shared/DEFINES.INC index 8cbb5be..4e048b8 100644 --- a/src/bios/shared/DEFINES.INC +++ b/src/bios/shared/DEFINES.INC @@ -6,7 +6,7 @@ DEFINE PACKED_MAIN 0;| | ; паковать MAIN или влезает без этого? DEFINE SetFullZXromLoader 0;| ; добавлять в прошивку и грузить все ROM спектрума или часть? DEFINE IDE_Optimization 1;| ; слегка оптимизирует некоторые процедуры работы с HDD - DEFINE NeedSafePort_Y 1;| ============== ; говорит само за себя))) + DEFINE NeedSafePort_Y 1;| ============== ; !!!!! если 0, то в режиме sp-спектрума некоторые процедуры могут засрать экран DEFINE Pashalki 0; \__________________/\ DEFINE PICTURE_FILE './src/bios/logo/psfathers.bmp';| ;____________________________________________________________/ diff --git a/src/bios/shared/includes.inc b/src/bios/shared/includes.inc index f94f13f..bac6d14 100644 --- a/src/bios/shared/includes.inc +++ b/src/bios/shared/includes.inc @@ -1,15 +1,16 @@ ; ;---------[All shared includes]--------- - INCLUDE 'src/bios/shared/DEFINES.INC' ; Shared defines + INCLUDE 'src/bios/shared/DEFINES.INC' ; Shared defines IF Pashalki INCLUDE 'Shared_Includes/structures/EasterSprites.inc' ENDIF - INCLUDE 'src/bios/Loader/Loader.asm' ; Bitstream loader as macros - INCLUDE 'src/bios/shared/CompMacro.asm' ; макросы - INCLUDE 'Shared_Includes/constants/SP2000.inc' ; константы + INCLUDE 'src/bios/Loader/Loader.asm' ; Bitstream loader as macros + INCLUDE 'src/bios/shared/CompMacro.asm' ; макросы + INCLUDE 'Shared_Includes/constants/SP2000.inc' ; константы + INCLUDE 'Shared_Includes/constants/zx_char_codes.inc' ; константы INCLUDE 'Shared_Includes/macroses/macros.z80' - INCLUDE 'src/bios/ROM/MEM_MAP.inc' ; карта памяти - INCLUDE 'src/bios/shared/VERSION.inc' ; Версия EXP и ROM + INCLUDE 'src/bios/ROM/MEM_MAP.inc' ; карта памяти + INCLUDE 'src/bios/shared/VERSION.inc' ; Версия EXP и ROM INCLUDE 'Shared_Includes/constants/BIOS_EQU.inc' INCLUDE 'src/bios/ROM/BIOS.inc' ;---------------------------------------