diff --git a/Shared_Includes b/Shared_Includes index 93f04cc..97bdf22 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 93f04cc30f6a3c20f382c8b467bca79718c9ab2e +Subproject commit 97bdf22c00800ecee2dd714647a2892d3aa4476a diff --git a/src/bios/exp/FLEX.asm b/src/bios/exp/FLEX.asm index 43eeed8..c94ef72 100644 --- a/src/bios/exp/FLEX.asm +++ b/src/bios/exp/FLEX.asm @@ -520,10 +520,10 @@ FN_SYNC: jr .end_set_v_sinc .SetCmosLines: - LD D,CMOS.Cell.ScreenSET + LD D,CMOS_CELL.ScreenSET CALL CMOS_RD - AND CMOS.Cell.ScreenSET.Mask.Sinc ; в регистре A значение ScreenSET + AND high CMOS_CELL.ScreenSET.Mask.Sinc ; в регистре A значение ScreenSET jr z,.SetDefLines bit 6,a @@ -576,10 +576,10 @@ FN_SYNC: LD DE,(SYS_PAGE.CONFIG_ALL) OUT (C),B - LD D,CMOS.Cell.ScreenSET + LD D,CMOS_CELL.ScreenSET CALL CMOS_RD - AND CMOS.Cell.ScreenSET.Mask.Int ; в регистре A значение ScreenSET + AND high CMOS_CELL.ScreenSET.Mask.Int ; в регистре A значение ScreenSET JR NZ,.skiptest CALL Test_CONFIG_ALL diff --git a/src/bios/exp/FUNC_LOW_PRINT.ASM b/src/bios/exp/FUNC_LOW_PRINT.ASM index e8aca61..0e26bd7 100644 --- a/src/bios/exp/FUNC_LOW_PRINT.ASM +++ b/src/bios/exp/FUNC_LOW_PRINT.ASM @@ -605,8 +605,13 @@ WIN_SET_ZG: ; LP_SET_ZG: LD L,0 LD BC,#0800 ;!HARDCODE EX DE,HL + ;!TEST 11/02/2024 установка шрифта более гибкая без заплётов + LD A,H + SUB #C0 + JR NC,.change + ; LDIR - EX DE,HL +.cont: EX DE,HL LD A,H RRCA RRCA @@ -629,6 +634,14 @@ WIN_SET_ZG: ; LP_SET_ZG: LD A,(SYS_PAGE.COPY_SLOT1) OUT (SLOT1),A RET +;!TEST 11/02/2024 установка шрифта более гибкая без заплётов +.change: + LD A,(SYS_PAGE.COPY_SLOT3) + OUT (SLOT3),A + LDIR + LD A,SYS_PAGE + OUT (SLOT3),A + JR .cont ;------------------------------------------------------------------[#B6] ; @@ -656,23 +669,22 @@ LP_SIZE: ; LP_AT_D: ; !!!!! ожидается, что портятся только альтернативные регистры и те, что как параметры на входе LD A,(WIN_ID_0.USER.SIZE_V) EXX - LD L,A + LD L,A EXX LD A,D EXX +.loop: SUB L + JR NC,.loop -.loop: SUB L - JR NC,.loop - - ADD A,L - ADD A,A - ADD A,A - LD L,A - LD A,(WIN_ID_0.V_BEG) - ADD A,L - LD L,A - INC L - LD H,#C3 + ADD A,L + ADD A,A + ADD A,A + LD L,A + LD A,(WIN_ID_0.V_BEG) + ADD A,L + LD L,A + INC L + LD H,#C3 EXX RET ; @@ -682,30 +694,29 @@ LP_AT_D: ; !!!!! LP_TAB_E: LD A,(WIN_ID_0.SIZE_REL) EXX - LD D,A + LD D,A EXX LD A,E EXX +.loop: SUB D + JR NC,.loop + JR Z,.loop -.loop: SUB D - JR NC,.loop - JR Z,.loop - - NEG - LD B,A ; сохранить сколько осталось символов в строке - NEG - ADD A,D - LD D,A - LD A,(WIN_ID_0.USER.MODE) - AND %0010'0000 - JR Z,.skip_Dx2 - LD A,D - ADD A,A - LD D,A + NEG + LD B,A ; сохранить сколько осталось символов в строке + NEG + ADD A,D + LD D,A + LD A,(WIN_ID_0.USER.MODE) + AND %0010'0000 + JR Z,.skip_Dx2 + LD A,D + ADD A,A + LD D,A .skip_Dx2: - LD A,(WIN_ID_0.H_BEG) - ADD A,D - LD D,A + LD A,(WIN_ID_0.H_BEG) + ADD A,D + LD D,A EXX RET ;************************************************************* @@ -1601,7 +1612,7 @@ WIN_MOVE: POP DE LD B,SHARED_PAGE LD IX,SLOT3.MEM_ADDR - CALL WIN_REST_WIN1 + CALL WIN_RESTORE.Start AND A RET @@ -1631,53 +1642,49 @@ WIN_COPY_WIN1: OUT (SLOT1),A EXX - RES 7,H - LD C,D + RES 7,H + LD C,D EXX .COPY_loop2: LD A,L EXX - LD B,A - - ADD A,A - ADD A,XL - LD XL,A - JR NC,.NO_INC_XH - INC XH + LD B,A + ; + ADD A,A + ADD A,XL + LD XL,A + JR NC,.NO_INC_XH + INC XH .NO_INC_XH: - LD SP,IX - - LD A,C - ADD A,B - + LD SP,IX + ; + LD A,C + ADD A,B .COPY_loop: - DEC A - OUT (PORT_Y),A - LD E,(HL) - INC L - LD D,(HL) - DEC L - PUSH DE - DJNZ .COPY_loop - - INC HL - INC HL - INC HL - INC HL - + DEC A + OUT (PORT_Y),A + LD E,(HL) + INC L + LD D,(HL) + DEC L + PUSH DE + DJNZ .COPY_loop + ; + INC HL + INC HL + INC HL + INC HL EXX - DEC H JR NZ,.COPY_loop2 - + ; LD A,SYS_PAGE OUT (SLOT3),A LD SP,(SYS_PAGE.SYS_WORK1) - + ; POP AF OUT (SLOT1),A - JP LP_END_P.short ;AND A ;RET @@ -1690,55 +1697,47 @@ WIN_RESTORE: AND A SCF RET NZ -WIN_REST_WIN1: +.Start: CALL LP_BEG_P - + ; IN A,(SLOT1) PUSH AF - + ; CALL LP_AT_D CALL LP_TAB_E - + ; LD (SYS_PAGE.SYS_WORK1),SP LD SP,IX - + ; LD A,B OUT (SLOT3),A LD A,#50 OUT (SLOT1),A - + ; EXX - RES 7,H - LD C,D + RES 7,H + LD C,D EXX - -LP_REST_L2: - LD A,L +.L2: LD A,L EXX - LD B,A - - LD A,C - -LP_REST_L1: - OUT (PORT_Y),A - INC A - POP DE - LD (HL),E - INC L - LD (HL),D - DEC L - - DJNZ LP_REST_L1 - - INC HL - INC HL - INC HL - INC HL - + LD B,A + LD A,C +.L1: OUT (PORT_Y),A + INC A + POP DE + LD (HL),E + INC L + LD (HL),D + DEC L + DJNZ .L1 + ; + INC HL + INC HL + INC HL + INC HL EXX DEC H - - JR NZ,LP_REST_L2 + JR NZ,.L2 LD A,SYS_PAGE OUT (SLOT3),A diff --git a/src/bios/exp/FUNC_SYS.ASM b/src/bios/exp/FUNC_SYS.ASM index 953a927..90b4ab8 100644 --- a/src/bios/exp/FUNC_SYS.ASM +++ b/src/bios/exp/FUNC_SYS.ASM @@ -228,7 +228,7 @@ INIT_SYS_ALL: ; ;-----------[new code start]------------; !!!!! посмотреть-причесать INIT_VSyncAndWaits: - LD D,CMOS.Cell.ScreenSET + LD D,CMOS_CELL.ScreenSET CALL CMOS_RD ld d,a jr nc,.cmos_OK @@ -238,7 +238,7 @@ INIT_VSyncAndWaits: jr z,INIT_CONFIG_ALL.setDefaultINT .cmos_OK: - and CMOS.Cell.ScreenSET.Mask.Sinc + and high CMOS_CELL.ScreenSET.Mask.Sinc and #40 ld a,3 ; 320 lines & no waits jr z,.setVSyncAndWaits @@ -249,10 +249,10 @@ INIT_VSyncAndWaits: INIT_CONFIG_ALL: ld a,d - and CMOS.Cell.ScreenSET.Mask.Int + and high CMOS_CELL.ScreenSET.Mask.Int jr z,.setDefaultINT ; set default int - xor CMOS.Cell.ScreenSET.Mask.Int + xor high CMOS_CELL.ScreenSET.Mask.Int LD HL,SCREEN_TABLES.ORIGINAL ; set original int jr z,.setINT diff --git a/src/bios/rom/SETUP/AUTOIDE.asm b/src/bios/rom/SETUP/AUTOIDE.asm index ff58d5f..e1a89cd 100644 --- a/src/bios/rom/SETUP/AUTOIDE.asm +++ b/src/bios/rom/SETUP/AUTOIDE.asm @@ -211,22 +211,22 @@ STEP1_GETCMOS: LD A,H ; AND A - LD BC,#3011 ;CMOS VALUE + LD BC,CMOS_CELL.DrivesSetup_1.Mask.PriIDEmaster ;#3011 LD L,msgStrings.detectIdePrMA JR Z,.choose ; DEC A - LD BC,#C011 ;CMOS VALUE + LD BC,CMOS_CELL.DrivesSetup_1.Mask.PriIDEslave ;#C011 LD L,msgStrings.detectIdePrSL JR Z,.choose ; DEC A - LD BC,#3020 + LD BC,CMOS_CELL.DrivesSetup_2.Mask.SecIDEmaster LD L,msgStrings.detectIdeSecMA JR Z,.choose ; DEC A - LD BC,#C020 + LD BC,CMOS_CELL.DrivesSetup_2.Mask.SecIDEslave LD L,msgStrings.detectIdeSecSL JR Z,.choose SCF @@ -246,11 +246,9 @@ STEP1_GETCMOS: JR Z,SETUP_FROM_CMOS ;Get from CMOS (SETUP) ; DEC A - JR Z,IT_IS_ATAPI ;CD-ROM - RET ;DON'T CHECK THIS DEVICE + RET NZ ;DON'T CHECK THIS DEVICE + ;JR Z,IT_IS_ATAPI ;CD-ROM /////////////////////////////////////////////////////////////////////[^] - - /////////////////////////////////////////////////////////////////////[v] IT_IS_ATAPI: LD A,L ;DETECT MESSAGE diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index 92ee8f7..b3c08b4 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -274,7 +274,7 @@ CLEARM: IN A,(SLOT3) CALL .MEMLOOP ; CALL EMM.InitMem - LD BC,#400E ;!HARDCODE + LD BC,CMOS_CELL.BootUpParams.Mask.SaveRAMdisks ;#400E CALL G_VALUE OR A CALL NZ,CCHAIN @@ -521,7 +521,7 @@ START: CALL RESCREEN ;R06 - LD BC,#010E ; QUICK START + LD BC,CMOS_CELL.BootUpParams.Mask.QuickStart ;#010E CALL G_VALUE POP BC INC B @@ -663,7 +663,7 @@ INFO_MESSAGE: ;!FIXIT CALL TSETUP - LD BC,#0710 ; !HARDCODE маска и ячейка для чтения значения кмос для основного загрузочного драйва + LD BC,CMOS_CELL.BootDrives.Mask.SysDisk ;#0710 CALL PrepareToBOOT LD A,msgStrings.bootFail LD E,COLORS.CGA.INC.LRED @@ -676,7 +676,7 @@ ABOOT: LD A,msgStrings.bootAltDrv ;CALL C,POSTMSG CALL C,POSTMSC - LD BC,#7010 ; !HARDCODE маска и ячейка для чтения значения кмос для альтернативного загрузочного драйва + LD BC,CMOS_CELL.BootDrives.Mask.AltSysDisk ;#7010 CALL PrepareToBOOT LD A,msgStrings.bootFail LD E,COLORS.CGA.INC.LRED @@ -685,7 +685,7 @@ ABOOT: LD A,msgStrings.bootAltDrv CALL ScreenPOS.CRLF ;NO START DISK - RESTART / SETUP / ZX SPECTRUM mode - LD BC,#021D + LD BC,CMOS_CELL.Options.Mask.RebootMSG ;#021D CALL G_VALUE OR A JP Z,EXIT_SETUP @@ -1065,7 +1065,7 @@ FINSTAL: ; EX AF,AF' OUT (SLOT3),A - LD BC,#0311 ; !HARDCODE + LD BC,CMOS_CELL.DrivesSetup_1.Mask.FirstFDD ;#0311 CALL G_VALUE LD HL,FD720A OR A @@ -1084,7 +1084,7 @@ SETFD0: EX AF,AF' OUT (SLOT3),A NOFDD0: - LD BC,#0C11 + LD BC,CMOS_CELL.DrivesSetup_1.Mask.SecondFDD ;#0C11 CALL G_VALUE LD HL,FD720A OR A @@ -1280,7 +1280,7 @@ RCHAIN: CCHAIN: LD HL,MEMMAP2 - LD DE,#C200 + LD DE,SYS_PAGE.RAMD_FAT XOR A CCHAINC: CP (HL) @@ -1303,16 +1303,16 @@ TRQUICK: ; %0000'1100 - TR DOS B: Default / FDD / HDD / RMD ; %0011'0000 - TR DOS C: Default / FDD / HDD / RMD ; %1100'0000 - TR DOS D: Default / FDD / HDD / RMD - LD BC,#031E + LD BC,CMOS_CELL.TRDOSmount.Mask.A ;#031E LD A,0 CALL TRDOSX - LD BC,#0C1E + LD BC,CMOS_CELL.TRDOSmount.Mask.B ;#0C1E LD A,1 CALL TRDOSX - LD BC,#301E + LD BC,CMOS_CELL.TRDOSmount.Mask.C ;#301E LD A,2 CALL TRDOSX - LD BC,#C01E + LD BC,CMOS_CELL.TRDOSmount.Mask.D ;#C01E LD A,3 TRDOSX: @@ -1408,87 +1408,6 @@ ElementsBuffer: .DownCenter: BYTE "┴" ; DC - DownCenter .Size EQU $-ElementsBuffer ; -/* -SDOUBLE: - DB #C9 - DB #BB - DB #CD - DB #BA - DB #C8 - DB #BC - - DB #CC - DB #B9 - DB #CB - DB #CA - -SSINGLE: - DB #DA - DB #BF - DB #C4 - DB #B3 - DB #C0 - DB #D9 - - DB #C3 - DB #B4 - DB #C2 - DB #C1 - -SSIN_DW: - DB #C9 - DB #BB - DB #C4 - DB #BA - DB #C7 - DB #B6 - - DB #C7 - DB #B6 - DB #D1 - DB #C1 - -SSIN_UP: - DB #C7 - DB #B6 - DB #C4 - DB #BA - DB #C8 - DB #BC - - DB #C7 - DB #B6 - DB #C2 - DB #CF - -SSIN_AL: - DB #C7 - DB #B6 - DB #C4 - DB #BA - DB #C7 - DB #B6 - - DB #C7 - DB #B6 - DB #C2 - DB #C1 -; - -SELEM: -UL: DB #DA -UR: DB #BF -ZL: DB #C4 -VL: DB #B3 -LL: DB #C0 -LR: DB #D9 - -LC: DB #C3 -RC: DB #B4 -UC: DB #C2 -DC: DB #C1 -; -*/ INCLUDE 'VIDEO_IO.asm' INCLUDE 'AUTOIDE.asm' @@ -1510,21 +1429,21 @@ FindStringAddr: LD H,(HL) LD L,A RET -/* -Get_Item_Address: - LD L,A - LD H,0 - LD BC,MSG_Buffer - ADD HL,HL - ADD HL,BC - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - INC HL - INC HL - RET -*/ + +; Get_Item_Address: +; LD L,A +; LD H,0 +; LD BC,MSG_Buffer +; ADD HL,HL +; ADD HL,BC +; LD A,(HL) +; INC HL +; LD H,(HL) +; LD L,A +; INC HL +; INC HL +; RET + POSTLEN: CALL FindStringAddr LD BC,#0100 @@ -1594,34 +1513,11 @@ PRINT_CHANEL: LD D,#FF JP LP_PRINT_LINE6 ; -/* - Detecting IDE Primary Master ... [Press F4 to skip] - Определяем Первичный IDE Master ... [F4 для пропуска] -Boot from HDD Primary IDE Master OK -Boot from HDD Primary IDE Slave OK -Boot from HDD Secondary IDE Master OK -Boot from HDD Secondary IDE Slave OK -Запуск с HDD Secondary IDE Master OK -Запуск с CD-ROM Secondary IDE Master OK -Boot from ATAPI Secondary IDE Master OK -*/ + ;--------------------------------------- INCLUDE 'src/bios/ROM/SETUP/messages.z80' ;--------------------------------------- ; -/* -MSG_Buffer_Length EQU MSG_ENG_END-MSG_ENG - -STACK EQU $+128 -MSG_Buffer EQU STACK+2 -TMP_BUFFER EQU MSG_Buffer+MSG_Buffer_Length - - - IF TMP_BUFFER+1024 > #C000 - DISPLAY 'Page limit exceeded by: ',/A,$-#C000 - ASSERT TMP_BUFFER+1024 > #C000 - ENDIF -*/ STRUCT MAIN_BUFFERS ID BLOCK #100 diff --git a/src/bios/rom/SETUP/SETTINGS.asm b/src/bios/rom/SETUP/SETTINGS.asm index 6334a7e..f33af36 100644 --- a/src/bios/rom/SETUP/SETTINGS.asm +++ b/src/bios/rom/SETUP/SETTINGS.asm @@ -1,8 +1,8 @@ ;U_SETUP: SETTINGS: - LD A,CMOS.Cell.ScreenSET + LD A,CMOS_CELL.ScreenSET CALL READCMS - AND CMOS.Cell.ScreenSET.Mask.ColorStyle + AND high CMOS_CELL.ScreenSET.Mask.ColorStyle LD L,A CALL CSET LD DE,0 @@ -248,13 +248,13 @@ DECITM: JP PCURSOR CCHANGE: - LD A,CMOS.Cell.ScreenSET + LD A,CMOS_CELL.ScreenSET CALL READCMS INC A - AND CMOS.Cell.ScreenSET.Mask.ColorStyle + AND high CMOS_CELL.ScreenSET.Mask.ColorStyle LD L,A LD B,A - LD A,CMOS.Cell.ScreenSET + LD A,CMOS_CELL.ScreenSET CALL WRITCMS CSET: LD H,0 @@ -826,9 +826,9 @@ setXYpos: JP RESCREEN setVsinc: - ld a,CMOS.Cell.ScreenSET + ld a,CMOS_CELL.ScreenSET call READCMS - and CMOS.Cell.ScreenSET.Mask.Sinc + and high CMOS_CELL.ScreenSET.Mask.Sinc SCF jr z,.skip ;320 SLA A @@ -843,9 +843,9 @@ setLang: ld (ITEM_Restore),a pop hl ; delete return adress from stack jp SETTINGS -setInt: ld a,CMOS.Cell.ScreenSET +setInt: ld a,CMOS_CELL.ScreenSET call READCMS - and CMOS.Cell.ScreenSET.Mask.Int + and high CMOS_CELL.ScreenSET.Mask.Int jr nz,.skipDefaultInt ld a,2 ; Pentagon sync - default jr .set diff --git a/src/bios/rom/SETUP/VIDEO_IO.asm b/src/bios/rom/SETUP/VIDEO_IO.asm index 4f2f242..2f2d0a8 100644 --- a/src/bios/rom/SETUP/VIDEO_IO.asm +++ b/src/bios/rom/SETUP/VIDEO_IO.asm @@ -227,7 +227,7 @@ PRSYM: ;LD BC,1*256 + BIOS.LP_PRINT_SYM LOGOTYP: CALL LOGOX - LD BC,#180E + LD BC,CMOS_CELL.BootUpParams.Mask.StartDelay CALL G_VALUE OR A JR Z,EASYDLY ;MIN (DISABLE) @@ -262,7 +262,7 @@ NOWLOGO: CALL WIN_OPEN LD DE,0 - LD HL,#0920 ;LOGOTYPE SIZE + LD HL,#0920 ;!HARDCODE LOGOTYPE SIZE LD B,7 JP LP_CLS_WIN @@ -329,24 +329,24 @@ LOGOX: LD IX,win_descriptor.tab320x256 win_descriptor: .tab80x32 Window_UserVars{ - 40, ; горизонтальный размер окна в знакоместах - 32, ; вертикальный размер в знакоместах - 0, ; положение окна по горизонтали на экране - 0, ; положение окна по вертикали на экране - %0001'1011, ; режим знакоместа - 0, ; дополнительный режим знакоместа - 0, ; положение по X в поле графики (по знакоместам) - 0 ; положение по Y в поле графики (по знакоместам) + 40, ; горизонтальный размер окна в знакоместах + 32, ; вертикальный размер в знакоместах + 0, ; положение окна по горизонтали на экране + 0, ; положение окна по вертикали на экране + %0001'1011, ; режим знакоместа + 0, ; дополнительный режим знакоместа + 0, ; положение по X в поле графики (по знакоместам) + 0 ; положение по Y в поле графики (по знакоместам) } .tab320x256 Window_UserVars{ - 16, ; горизонтальный размер окна в знакоместах - 9, ; вертикальный размер в знакоместах - 0, ; положение окна по горизонтали на экране - 0, ; положение окна по вертикали на экране - %0010'0000, ; режим знакоместа - 0, ; дополнительный режим знакоместа - 8, ; положение по X в поле графики (по знакоместам) - 0 ; положение по Y в поле графики (по знакоместам) + 16, ; горизонтальный размер окна в знакоместах + 9, ; вертикальный размер в знакоместах + 0, ; положение окна по горизонтали на экране + 0, ; положение окна по вертикали на экране + %0010'0000, ; режим знакоместа + 0, ; дополнительный режим знакоместа + 8, ; положение по X в поле графики (по знакоместам) + 0 ; положение по Y в поле графики (по знакоместам) } ;