diff --git a/Shared_Includes b/Shared_Includes index 399bf41..1cb8eb1 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 399bf41c5cbd12d2866204ee3ff1cc357a3d3a99 +Subproject commit 1cb8eb13fb8e8b20bba324a5ab9f4e18d6bf8b3c diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index fe1669c..80525f3 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -400,7 +400,7 @@ EXTINT: OR A RET .JPHL: JP (HL) -.stackDepth EQU 32 ; расстояние от конца процедуры до вершины стека. +.stackDepth EQU 64 ; расстояние от конца процедуры до вершины стека. .switchProcedure.size EQU $-.switchProcedure ENDIF ;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== diff --git a/src/bios/exp/FUNC_LOW_PRINT.ASM b/src/bios/exp/FUNC_LOW_PRINT.ASM index 0e26bd7..9237f7a 100644 --- a/src/bios/exp/FUNC_LOW_PRINT.ASM +++ b/src/bios/exp/FUNC_LOW_PRINT.ASM @@ -64,8 +64,10 @@ ;============================================================= MACRO TEST_40 ;[x] включил 31/10/23, чисто на Хэллоууууииин -; - + EX AF,AF' + JR C,.LLL + INC D ; режим 40 +.LLL: EX AF,AF' ; ENDM diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index d1dfb54..1ff9acf 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -600,7 +600,7 @@ ERRSUM+1: CHEKOK: ;CALL ScreenPOS.GET_CUR CALL LP_GET_PLACE PUSH DE - CALL LOGOTYP + CALL LOGOTYPE LD DE,#0000 ;CALL ScreenPOS.LOCAT @@ -706,13 +706,13 @@ ABOOT: LD A,msgStrings.bootAltDrv ;EI CALL INT_ON AGAKEY: CALL WAITKEY - LD HL,#4F00 ; DEL - go to settings + LD HL,#4F00 ; DEL - go to settings ;AND A SBC HL,DE - JR Z,CSETUP - CP #1B ; ESC - go to zx spectrum mode + JR Z,ENTER_SETUP + CP #1B ; ESC - go to zx spectrum mode JP Z,EXIT_SETUP - CP #0D ; ENTER - restart + CP #0D ; ENTER - restart JP NZ,AGAKEY XOR A JP Start_again @@ -720,17 +720,18 @@ AGAKEY: CALL WAITKEY TSETUP: CALL SCANKEY RET Z - LD HL,#4F00 + LD HL,#4F00 ; DEL - go to settings AND A SBC HL,DE - JR Z,CSETUP + JR Z,ENTER_SETUP LD HL,#011B AND A SBC HL,DE JR NZ,TSETUP POP HL ; убираем лишнее JP EXIT_SETUP -CSETUP: XOR A +ENTER_SETUP: + XOR A LD (ITEM_Restore),A CALL SETTINGS XOR A @@ -783,28 +784,29 @@ writeDateTimeToCmos: ;!FIXIT CALL CMOS_WR RET -RESCREEN: -;R06 - LD A,#1F ;!HARDCODE READ SCREEN POSITION - CALL READCMS - PUSH AF - IN A,(SLOT3) - LD E,A - LD A,DCP_PAGE - OUT (SLOT3),A - LD A,(#C400) ;c400 for first cfg 50176 ; !TODO можно переделать на вызов функции биоса - LD D,A - LD A,#CB - LD (#C400),A - POP AF - LD BC,0 - OUT (C),A - LD A,D - LD (#C400),A - LD A,E - OUT (SLOT3),a -;R06 - RET +RESCREEN: ;R06 + LD A,CMOS_CELL.ScreenPosition + CALL READCMS + LD B,A + LD A,ACEX.HOLD + JP SET_PORTS + ; PUSH AF + ; IN A,(SLOT3) + ; LD E,A + ; LD A,DCP_PAGE + ; OUT (SLOT3),A + ; LD A,(#C400) ;c400 for first cfg 50176 ; !TODO можно переделать на вызов функции биоса + ; LD D,A + ; LD A,ACEX.HOLD + ; LD (#C400),A + ; POP AF + ; LD BC,0 + ; OUT (C),A + ; LD A,D + ; LD (#C400),A + ; LD A,E + ; OUT (SLOT3),a + ; RET ; ;R07 ; CMOSINIT: diff --git a/src/bios/rom/SETUP/SETTINGS.asm b/src/bios/rom/SETUP/SETTINGS.asm index cbd99fe..b7f90f7 100644 --- a/src/bios/rom/SETUP/SETTINGS.asm +++ b/src/bios/rom/SETUP/SETTINGS.asm @@ -38,7 +38,7 @@ SETTINGS: LD DE,#0602 LD BC,#134C - CALL PBORDER + CALL PBORDER ;!FIXIT CALL setFRAME.single diff --git a/src/bios/rom/SETUP/VIDEO_IO.asm b/src/bios/rom/SETUP/VIDEO_IO.asm index 2f2d0a8..d5326da 100644 --- a/src/bios/rom/SETUP/VIDEO_IO.asm +++ b/src/bios/rom/SETUP/VIDEO_IO.asm @@ -155,177 +155,163 @@ TLINEH: ; E - X ; B - CY ; C - CX -PBORDER: - PUSH BC - LD A,C - DEC A - LD (.BSHI),A - DEC A - LD (.BHOR),A - LD (.BHOR2),A - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.UpLeft) - LD H,E - CALL PRSYM - LD A,(ElementsBuffer.HorizontalLine) -.BHOR+1: - LD B,1 +PBORDER: PUSH BC + LD A,C + DEC A + LD (.BSHI),A + DEC A + LD (.BHOR),A + LD (.BHOR2),A + CALL LP_SET_PLACE + LD A,(ElementsBuffer.UpLeft) + LD H,E + CALL PRSYM + LD A,(ElementsBuffer.HorizontalLine) +.BHOR+1: LD B,1 + CALL LP_PRINT_SYM - ;CALL PRSYMB - CALL LP_PRINT_SYM + LD A,(ElementsBuffer.UpRight) + CALL PRSYM + POP BC + DEC B + DEC B + INC D + LD E,H +.loop: PUSH BC + CALL LP_SET_PLACE + LD A,(ElementsBuffer.VerticalLine) + CALL PRSYM + LD A,H +.BSHI+1: ADD A,#00 + LD E,A + CALL LP_SET_PLACE + LD A,(ElementsBuffer.VerticalLine) + CALL PRSYM + POP BC + LD E,H + INC D + DJNZ .loop - LD A,(ElementsBuffer.UpRight) - CALL PRSYM - POP BC - DEC B - DEC B - INC D - LD E,H + CALL LP_SET_PLACE + LD A,(ElementsBuffer.DownLeft) + CALL PRSYM + LD A,(ElementsBuffer.HorizontalLine) +.BHOR2+1: LD B,1 + CALL LP_PRINT_SYM + LD A,(ElementsBuffer.DownRight) + CALL PRSYM + RET -.loop: PUSH BC - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.VerticalLine) - CALL PRSYM - LD A,H -.BSHI+1: - ADD A,#00 - LD E,A - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.VerticalLine) - CALL PRSYM - POP BC - LD E,H - INC D - DJNZ .loop - - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,(ElementsBuffer.DownLeft) - CALL PRSYM - LD A,(ElementsBuffer.HorizontalLine) -.BHOR2+1: - LD B,1 - - ;CALL PRSYMB - CALL LP_PRINT_SYM - - LD A,(ElementsBuffer.DownRight) - CALL PRSYM - RET - -PRSYM: ;LD BC,1*256 + BIOS.LP_PRINT_SYM - ;JP_to_BIOS - LD B,1 +PRSYM: LD B,1 JP LP_PRINT_SYM -; PRSYMB: LD C,BIOS.LP_PRINT_SYM -; JP_to_BIOS +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +//////////////////// LOGO \\\\\\\\\\\\\\\\\\\\ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +LOGOTYPE: CALL SHOW_LOGO + LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay + CALL G_VALUE + OR A + JR Z,.EASYDLY ; Delay average + DEC A + JR Z,.SKIPDLY ; Delay disabled + ; Delay enabled + LD B,LOGO_DELAY_NORM +.loop EI + push bc + HALT + CALL go_setup + pop bc + DJNZ .loop + ; Delay average +.SKIPDLY: LD B,LOGO_DELAY_MAX +.MMA: PUSH BC + EI + HALT + DI + CALL FADE + POP BC + DJNZ .MMA + ; ; +.ERASE_LOGO: LD IX,win_descriptor.tab80x32 + LD HL,#0000 + LD E,1 + ; + EI + HALT + DI + CALL WIN_OPEN + ; + LD DE,0 + LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE + LD B,7 + JP LP_CLS_WIN + ; Delay disabled +.EASYDLY: LD B,LOGO_DELAY_MIN +.loop2: EI + HALT + DJNZ .loop2 + DI + JR .ERASE_LOGO +; ; ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -LOGOTYP: - CALL LOGOX - LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay - CALL G_VALUE - OR A - JR Z,EASYDLY ;MIN (DISABLE) - DEC A - JR Z,SKIPDLY ;NORMAL - - LD B,LOGO_DELAY_NORM -.loop EI - push bc - HALT - call go_setup - pop bc - DJNZ .loop -SKIPDLY: - LD B,LOGO_DELAY_MAX -.MMA: PUSH BC - EI - HALT - DI - CALL FADE - POP BC - DJNZ .MMA - -NOWLOGO: - LD IX,win_descriptor.tab80x32 - LD HL,#0000 - LD E,1 - - EI - HALT - DI - CALL WIN_OPEN - - LD DE,0 - LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE - LD B,7 - JP LP_CLS_WIN - -EASYDLY: - LD B,LOGO_DELAY_MIN -.loop: EI - HALT - DJNZ .loop - DI - JR NOWLOGO - -LOGOX: LD IX,win_descriptor.tab320x256 - LD HL,#0000 - LD E,1 - CALL WIN_OPEN +SHOW_LOGO: LD IX,win_descriptor.tab320x256 + LD HL,#0000 + LD E,1 + CALL WIN_OPEN SAFE_PORTY - DI - LD A,1 - OUT (SYS_PORT.ON),A - OUT (ROM.SLOT0),A + DI + LD A,1 + OUT (SYS_PORT.ON),A + OUT (ROM.SLOT0),A - LD HL,MAIN_LOGO.Pallete - LD DE,memBUFFER.Shared - LD BC,MAIN_LOGO.Pallete.length - LDIR + LD HL,MAIN_LOGO.Pallete + LD DE,memBUFFER.Shared + LD BC,MAIN_LOGO.Pallete.length + LDIR - XOR A - OUT (ROM.SLOT0),A - OUT (SYS_PORT.ON),A - EI + XOR A + OUT (ROM.SLOT0),A + OUT (SYS_PORT.ON),A + EI - LD HL,memBUFFER.Shared - ; A = 0 - LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS - LD E,A - LD B,def_pal_mask - CALL PIC_SET_PAL + LD HL,memBUFFER.Shared + ; A = 0 + LD D,A ; SET DESKTOP PALETTE & CURSOR COLORS + LD E,A + LD B,def_pal_mask + CALL PIC_SET_PAL SAFE_PORTY - DI - LD A,1 - OUT (SYS_PORT.ON),A - ;LD A,1 - OUT (ROM.SLOT0),A + DI + LD A,1 + OUT (SYS_PORT.ON),A + ;LD A,1 + OUT (ROM.SLOT0),A - LD HL,MAIN_LOGO.Raster ; начало картинки в банке ПЗУ -; CALL DECODE - CALL LOGO_TO_SCREEN - ; - ;--------------[Пасхалка]--------------[] - IF Pashalki - _PASHALKI_CODE - ENDIF - ;--------------------------------------[] - ; - XOR A - OUT (SYS_PORT.ON),A - OUT (ROM.SLOT0),A - EI - RET + LD HL,MAIN_LOGO.Raster ; начало картинки в банке ПЗУ + ; CALL DECODE + CALL LOGO_TO_SCREEN + ; + ;--------------[Пасхалка]--------------[] + IF Pashalki + _PASHALKI_CODE + ENDIF + ;--------------------------------------[] + ; + XOR A + OUT (SYS_PORT.ON),A + OUT (ROM.SLOT0),A + EI + RET +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; win_descriptor: .tab80x32 Window_UserVars{ @@ -351,19 +337,20 @@ win_descriptor: ; MACRO _mFADE - LD HL,memBUFFER.Shared - ; A = 0 - LD B,A -.loop: - DUP 3 - CP (HL) - JR Z,1F - DEC (HL) -1: INC HL - EDUP - INC HL - DJNZ .loop + LD HL,memBUFFER.Shared + ; A = 0 + LD B,A +.loop: DUP 3 + CP (HL) + JR Z,1F + DEC (HL) +1: INC HL + EDUP + INC HL + DJNZ .loop ENDM + + FADE: XOR A _mFADE _mFADE @@ -378,7 +365,7 @@ FADE: XOR A SAFE_PORTY -go_setup: ; !FIXIT переделать на TSETUP +go_setup: ; !FIXIT переделать на TSETUP CALL SCANKEY RET Z @@ -394,7 +381,7 @@ go_setup: ; !FIXIT LD HL,#0000 LD E,1 CALL WIN_OPEN - JP CSETUP + JP ENTER_SETUP .to_EXIT_SETUP: LD HL,(RET_TO_EXP_ADDR) diff --git a/src/bios/rom/SETUP/messages.z80 b/src/bios/rom/SETUP/messages.z80 index 0a27ed0..4accc0a 100644 --- a/src/bios/rom/SETUP/messages.z80 +++ b/src/bios/rom/SETUP/messages.z80 @@ -546,17 +546,17 @@ msgStrings: _mSetStr bootOk, tmp_Counter : DZ ' OK' _mSetStr afterBootFail, tmp_Counter : DZ 'PRESS TO REBOOT, TO ENTER SETUP OR TO ZX-MODE . . .' ; - _mSetStr parLang, tmp_Counter : DZ 'Language (Язык) : ' + _mSetStr parLang, tmp_Counter : DZ 'Language (язык) : ' _mSetStr valLangEng, tmp_Counter : DZ 'English ' _mSetStr valLangRus, tmp_Counter : DZ 'Русский ' - _mSetStr parMemTest, tmp_Counter : DZ 'Memory Test : ' + _mSetStr parMemTest, tmp_Counter : DZ 'Memory test : ' _mSetStr valDisabled, tmp_Counter : DZ 'Disabled' _mSetStr valEnabled, tmp_Counter : DZ 'Enabled ' _mSetStr parSaveRAMdrvs, tmp_Counter : DZ 'Save RAM-disks : ' _mSetStr parUpdBios, tmp_Counter : DZ 'Update BIOS : ' - _mSetStr parStartDelay, tmp_Counter : DZ 'Start Delay : ' - _mSetStr valNormal, tmp_Counter : DZ 'Normal ' - _mSetStr parTypRate, tmp_Counter : DZ 'Typematic Rate (Chars/Sec) : ' + _mSetStr parStartDelay, tmp_Counter : DZ 'Start delay : ' + _mSetStr valNormal, tmp_Counter : DZ 'Average ' + _mSetStr parTypRate, tmp_Counter : DZ 'Typematic rate (chars/sec) : ' _mSetStr val_6, tmp_Counter : DZ '6 ' _mSetStr val_8, tmp_Counter : DZ '8 ' _mSetStr val_10, tmp_Counter : DZ '10' @@ -565,13 +565,13 @@ msgStrings: _mSetStr val_20, tmp_Counter : DZ '20' _mSetStr val_24, tmp_Counter : DZ '24' _mSetStr val_30, tmp_Counter : DZ '30' - _mSetStr parTypDelay, tmp_Counter : DZ 'Typematic Delay (Msec) : ' + _mSetStr parTypDelay, tmp_Counter : DZ 'Typematic delay (Msec) : ' _mSetStr val_250, tmp_Counter : DZ '250 ' _mSetStr val_500, tmp_Counter : DZ '500 ' _mSetStr val_750, tmp_Counter : DZ '750 ' _mSetStr val_1000, tmp_Counter : DZ '1000' _mSetStr parRebootMsg, tmp_Counter : DZ 'Reboot message : ' - _mSetStr parSysDsk, tmp_Counter : DZ 'System Disk : ' + _mSetStr parSysDsk, tmp_Counter : DZ 'System disk : ' _mSetStr val1stFDD, tmp_Counter : DZ '1-st FDD' _mSetStr val2ndFDD, tmp_Counter : DZ '2-nd FDD' _mSetStr val1stIDE, tmp_Counter : DZ '1-st IDE' @@ -580,13 +580,13 @@ msgStrings: _mSetStr val4thIDE, tmp_Counter : DZ '4-th IDE' _mSetStr valRamDsk, tmp_Counter : DZ 'RAM-DISK' _mSetStr valRecovery, tmp_Counter : DZ 'RECOVERY' - _mSetStr parAltSysDsk, tmp_Counter : DZ 'Alt. System Disk : ' - _mSetStr parFddFirst, tmp_Counter : DZ 'FDD First : ' + _mSetStr parAltSysDsk, tmp_Counter : DZ 'Alt. system disk : ' + _mSetStr parFddFirst, tmp_Counter : DZ 'FDD first : ' _mSetStr valAuto, tmp_Counter : DZ 'Auto ' ; _mSetStr val720, tmp_Counter : DZ '720K ' ; _mSetStr val1440, tmp_Counter : DZ '1.44M ' _mSetStr valDash6, tmp_Counter : DZ '------' - _mSetStr parFddSecond, tmp_Counter : DZ 'FDD Second : ' + _mSetStr parFddSecond, tmp_Counter : DZ 'FDD second : ' _mSetStr parPriIdeMA, tmp_Counter : DZ 'Primary IDE Master',#FF,' : ' _mSetStr valSetup, tmp_Counter : DZ 'Setup ' _mSetStr valCdRom, tmp_Counter : DZ 'CD-ROM' @@ -594,9 +594,9 @@ msgStrings: _mSetStr parSecIdeMA, tmp_Counter : DZ 'Secondary IDE Master',#FF,' : ' _mSetStr parSecIdeSl, tmp_Counter : DZ 'Secondary IDE Slave',#FF,' : ' IF HDDwriteProtect - _mSetStr parHddWrPr, tmp_Counter : DZ 'HDD Write protect : ' + _mSetStr parHddWrPr, tmp_Counter : DZ 'HDD write protect : ' ENDIF - _mSetStr parScreenY, tmp_Counter : DZ 'Y-Screen position : ' + _mSetStr parScreenY, tmp_Counter : DZ 'Y-screen position : ' _mSetStr valMinus7, tmp_Counter : DZ '-7' _mSetStr valMinus6, tmp_Counter : DZ '-6' _mSetStr valMinus5, tmp_Counter : DZ '-5' @@ -612,7 +612,7 @@ msgStrings: _mSetStr valPlus5, tmp_Counter : DZ '+5' _mSetStr valPlus6, tmp_Counter : DZ '+6' _mSetStr valPlus7, tmp_Counter : DZ '+7' - _mSetStr parScreenX, tmp_Counter : DZ 'X-Screen position : ' + _mSetStr parScreenX, tmp_Counter : DZ 'X-screen position : ' _mSetStr parFrameInt, tmp_Counter : DZ 'Frame interrupt : ' _mSetStr valDash8, tmp_Counter : DZ '--------' _mSetStr valScorpion, tmp_Counter : DZ 'Scorpion' @@ -621,7 +621,7 @@ msgStrings: _mSetStr parVSync, tmp_Counter : DZ 'V-synchronization : ' _mSetStr val312_50, tmp_Counter : DZ '312/50Hz' _mSetStr val320_49, tmp_Counter : DZ '320/49Hz' - _mSetStr parQuickStartROM, tmp_Counter : DZ 'Quick ROM Start : ' + _mSetStr parQuickStartROM, tmp_Counter : DZ 'Quick ROM start : ' _mSetStr parTrDosA, tmp_Counter : DZ 'TR DOS A:> : ' _mSetStr valDefault, tmp_Counter : DZ 'Default' _mSetStr valFDD, tmp_Counter : DZ 'FDD ' ; ????? подумать какие варианты возможны @@ -630,7 +630,7 @@ msgStrings: _mSetStr parTrDosC, tmp_Counter : DZ 'TR DOS C:> : ' _mSetStr parTrDosD, tmp_Counter : DZ 'TR DOS D:> : ' IF NEW_FEATURE - _mSetStr parSetTime, tmp_Counter : DZ 'Date and Time setup : ' + _mSetStr parSetTime, tmp_Counter : DZ 'Date and time setup : ' _mSetStr valFolder, tmp_Counter : DB 16,'ENTER',17,0 ENDIF IF BETA_BUILD @@ -696,7 +696,7 @@ msgRusStrings: _mSetStrRus bootOk, tmp_Counter : DZ ' OK' _mSetStrRus afterBootFail, tmp_Counter : DZ 'НАЖМИТЕ ДЛЯ ПЕРЕЗАГРУЗКИ, ДЛЯ НАСТРОЕК ИЛИ ДЛЯ ZX-MODE . . .' ; - _mSetStrRus parLang, tmp_Counter : DZ 'Язык (Language) : ' + _mSetStrRus parLang, tmp_Counter : DZ 'Язык (language) : ' _mSetStrRus valLangEng, tmp_Counter : DZ 'English ' _mSetStrRus valLangRus, tmp_Counter : DZ 'Русский ' _mSetStrRus parMemTest, tmp_Counter : DZ 'Тестирование памяти : ' @@ -705,7 +705,7 @@ msgRusStrings: _mSetStrRus parSaveRAMdrvs, tmp_Counter : DZ 'Сохранение RAM-дисков : ' _mSetStrRus parUpdBios, tmp_Counter : DZ 'Обновление BIOS : ' _mSetStrRus parStartDelay, tmp_Counter : DZ 'Начальное ожидание : ' - _mSetStrRus valNormal, tmp_Counter : DZ 'Обычное ' + _mSetStrRus valNormal, tmp_Counter : DZ 'Среднее ' _mSetStrRus parTypRate, tmp_Counter : DZ 'Скорость автоповтора : ' _mSetStrRus val_6, tmp_Counter : DZ '6 ' _mSetStrRus val_8, tmp_Counter : DZ '8 ' diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index e984337..eed9d4b 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ