diff --git a/Build/Bin/LOADER_K30.BIN b/Build/Bin/LOADER_K30.BIN index 70783d6..a3e5785 100644 Binary files a/Build/Bin/LOADER_K30.BIN and b/Build/Bin/LOADER_K30.BIN differ diff --git a/Build/Bin/LOADER_K50.BIN b/Build/Bin/LOADER_K50.BIN index 81fe8fd..674b027 100644 Binary files a/Build/Bin/LOADER_K50.BIN and b/Build/Bin/LOADER_K50.BIN differ diff --git a/Shared_Includes b/Shared_Includes index 591d321..57f4969 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 591d3212c9341f17d6dd034bf2b8da91bd2f6107 +Subproject commit 57f4969f09a1bfc005af0b60316f03f30ee815ba diff --git a/bios/BIOS.asm b/bios/BIOS.asm index 9cfbbdf..6ae359b 100644 --- a/bios/BIOS.asm +++ b/bios/BIOS.asm @@ -109,7 +109,7 @@ MMU 0 3, 12 ; страницы 12-15 в банки 0-3. ORG ROM_MAP.LOADER OUTPUT 'Build/Bin/LOADER_K30.BIN' - Conf_loader K30 + Conf_loader K30 BLOCK #10000-$,#FF OUTEND ;--------------------------------------- diff --git a/bios/loader/loader.asm b/bios/loader/loader.asm index 2ecd580..529885e 100644 --- a/bios/loader/loader.asm +++ b/bios/loader/loader.asm @@ -157,7 +157,7 @@ DEFINE Altera_Chip altera_chip LUA local file_path = 'Build/ACEX/' - local file_ext = '.BIN' + local file_ext = '.ACX' local altera_ver = sj.get_define("Altera_Chip") sj.insert_define("Altera_File", '"' .. file_path .. altera_ver .. file_ext .. '"') ENDLUA diff --git a/bios/rom/SETUP/MAIN.asm b/bios/rom/SETUP/MAIN.asm index 31579b0..2c2fd75 100644 --- a/bios/rom/SETUP/MAIN.asm +++ b/bios/rom/SETUP/MAIN.asm @@ -693,7 +693,7 @@ ERRSUM+1: CALL POSTMSC CALL ScreenPOS.CRLF CALL ScreenPOS.CRLF - JR CHEKOK + JR CHEKOK .ErrDateTime+1: LD A,0 @@ -1624,9 +1624,6 @@ ElementsBuffer: INCLUDE 'KEY.asm' ;....................................... -KEY: EI - JP WAITKEY - FindStringAddr: LD L,A LD H,0 @@ -1639,8 +1636,11 @@ FindStringAddr: LD L,A RET + POSTLEN: + LD A,E CALL FindStringAddr + PUSH HL LD BC,#0100 XOR A CPIR @@ -1651,8 +1651,9 @@ POSTLEN: LD A,40 SUB C LD E,A - ;JP ScreenPOS.LOCAT - JP LP_SET_PLACE + CALL LP_SET_PLACE + POP HL + JP PRINTZ SETLAND: LD A,#0E ; !HARDCODE CMOS ячейка options @@ -1694,18 +1695,22 @@ PRINT_CHANEL: AND #0F JP LP_PRINT_LINE6 ; -POSTMSC: CALL FindStringAddr +POSTMSC: CALL FindStringAddr LD A,E JP CPRINTZ ; + ////////////////////////////////////////////////////////////////////// INCLUDE 'IM2_INT.asm' ////////////////////////////////////////////////////////////////////// POSTMSG: CALL FindStringAddr JP PRINTZ +; +KEY: EI + JP WAITKEY ;----------------------------------------------------------------------[] ;Что грузить в vПЗУ при старте. Варианты: diff --git a/bios/rom/SETUP/SETTINGS.asm b/bios/rom/SETUP/SETTINGS.asm index 634cfd8..b80c929 100644 --- a/bios/rom/SETUP/SETTINGS.asm +++ b/bios/rom/SETUP/SETTINGS.asm @@ -1,692 +1,661 @@ ;U_SETUP: -SETTINGS: - LD A,CMOS_CELL.ScreenSET - CALL READCMS - AND high CMOS_CELL.ScreenSET.Mask.ColorStyle - LD L,A - CALL CSET - LD DE,0 - LD HL,#2050 - LD A,(NORCLR) - LD B,A - CALL LP_CLS_WIN +SETTINGS: LD A,CMOS_CELL.ScreenSET + CALL READCMS + AND high CMOS_CELL.ScreenSET.Mask.ColorStyle + LD L,A + CALL CSET + LD DE,0 + LD HL,#2050 + LD A,(NORCLR) + LD B,A + CALL LP_CLS_WIN - LD A,msgStrings.setupBiosVer - LD DE,#0100 ; ????? - CALL POSTLEN - LD A,msgStrings.setupBiosVer - CALL POSTMSG - LD A,msgStrings.setupCopyRight - LD DE,#0200 - CALL POSTLEN - LD A,msgStrings.setupCopyRight - CALL POSTMSG - LD A,msgStrings.setupUtilityVer - LD DE,#0500 - CALL POSTLEN - LD A,msgStrings.setupUtilityVer - CALL POSTMSG + LD DE,#0100 + msgStrings.setupBiosVer ; координата Y + строка для вывода + CALL POSTLEN + LD DE,#0200 + msgStrings.setupCopyRight ; координата Y + строка для вывода + CALL POSTLEN + LD DE,#0500 + msgStrings.setupUtilityVer ; координата Y + строка для вывода + CALL POSTLEN - CALL setFRAME.double + ; LD D,1 ; координата Y + строка для вывода + ; LD A,msgStrings.setupBiosVer + ; CALL POSTLEN + ; LD A,msgStrings.setupBiosVer + ; CALL POSTMSG + ; LD A,msgStrings.setupCopyRight + ; LD D,2 ; строка для вывода + ; CALL POSTLEN + ; LD A,msgStrings.setupCopyRight + ; CALL POSTMSG + ; LD A,msgStrings.setupUtilityVer + ; LD D,5 ; строка для вывода + ; CALL POSTLEN + ; LD A,msgStrings.setupUtilityVer + ; CALL POSTMSG - LD DE,#0402 - LD BC,#1A4C - CALL PBORDER + CALL setFRAME.double - CALL setFRAME.medium + LD DE,#0402 + LD BC,#1A4C + CALL PBORDER - LD DE,#0602 - LD BC,#134C - CALL PBORDER ;!FIXIT + CALL setFRAME.medium - CALL setFRAME.single + LD DE,#0602 + LD BC,#134C + CALL PBORDER ;!FIXIT - LD DE,#062A - LD H,#13 - CALL TLINEV + CALL setFRAME.single - LD DE,#1906 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr1 - CALL POSTMSG - LD DE,#1A06 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr2 - CALL POSTMSG - LD DE,#1B06 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr3 - CALL POSTMSG - LD DE,#1C06 - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - LD A,msgStrings.setupHelpStr4 - CALL POSTMSG - LD BC,SettingsItemsTabsAddrs.max*256 + LD DE,#062A + LD H,#13 + CALL TLINEV + + LD DE,#1906 + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr1 + CALL POSTMSG + LD DE,#1A06 + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr2 + CALL POSTMSG + LD DE,#1B06 + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr3 + CALL POSTMSG + LD DE,#1C06 + CALL LP_SET_PLACE + LD A,msgStrings.setupHelpStr4 + CALL POSTMSG + LD BC,SettingsItemsTabsAddrs.max*256 IF NEW_FEATURE + ; LD HL,CurrentDateTime + ; CALL GETTIME - ; LD HL,CurrentDateTime - ; CALL GETTIME - - ; LD HL,CurrentDateTime - - ; LD A,(HL) - ; AND #F0 + ; LD HL,CurrentDateTime + ; LD A,(HL) + ; AND #F0 ENDIF -STT1: LD A,C - LD (ITEM),A - PUSH BC - CALL PTEXT - POP BC - INC C - DJNZ STT1 +STT1: LD A,C + LD (ITEM),A + PUSH BC + CALL PTEXT + POP BC + INC C + DJNZ STT1 - LD a,(ITEM_Restore) - LD (ITEM),A - CALL PCURSOR + LD a,(ITEM_Restore) + LD (ITEM),A + CALL PCURSOR -AGAIN: LD HL,AGAIN - PUSH HL - CALL KEY -; CURSOR DOWN - LD HL,#5200 - AND A - SBC HL,DE - JP Z,INCITM -; CURSOR UP - LD HL,#5800 - AND A - SBC HL,DE - JP Z,DECITM -; CURSOR RIGHT - LD HL,#5600 - AND A - SBC HL,DE - JP Z,ADDITM -; CURSOR LEFT - LD HL,#5400 - AND A - SBC HL,DE - JP Z,SUBITM -; + - LD HL,#5300 - AND A - SBC HL,DE - JP Z,INCVAL -; - - LD HL,#5900 - AND A - SBC HL,DE - JP Z,DECVAL -; + or - - LD HL,#A400 - AND A - SBC HL,DE - JP Z,INCVAL - CP "+" - JP Z,INCVAL - CP "-" - JP Z,DECVAL +AGAIN: LD HL,AGAIN + PUSH HL + CALL KEY + ; CURSOR DOWN + LD HL,#5200 + AND A + SBC HL,DE + JP Z,INCITM + ; CURSOR UP + LD HL,#5800 + AND A + SBC HL,DE + JP Z,DECITM + ; CURSOR RIGHT + LD HL,#5600 + AND A + SBC HL,DE + JP Z,ADDITM + ; CURSOR LEFT + LD HL,#5400 + AND A + SBC HL,DE + JP Z,SUBITM + ; + + LD HL,#5300 + AND A + SBC HL,DE + JP Z,INCVAL + ; - + LD HL,#5900 + AND A + SBC HL,DE + JP Z,DECVAL + ; + or - + LD HL,#A400 + AND A + SBC HL,DE + JP Z,INCVAL + CP "+" + JP Z,INCVAL + CP "-" + JP Z,DECVAL - IF NEW_FEATURE -; ENTER - LD HL,#280D - AND A - SBC HL,DE - JP Z,pressedEnter + IF NEW_FEATURE + ; ENTER + LD HL,#280D + AND A + SBC HL,DE + JP Z,pressedEnter ENDIF + ; F2 + LD HL,#3C00 + AND A + SBC HL,DE + JP Z,SAVEV + ; F3 + LD HL,#3D00 + AND A + SBC HL,DE + JP Z,CCHANGE + ; F5 + LD HL,#3F00 + AND A + SBC HL,DE + JP Z,OLD_VAL + ; F7 + LD HL,#4100 + AND A + SBC HL,DE + JP Z,DEF_VAL + ; F10 + LD HL,#4400 + AND A + SBC HL,DE + JP Z,SAVEXIT + ; ESC + LD HL,#011B + AND A + SBC HL,DE + RET NZ + POP HL + RET -; F2 - LD HL,#3C00 - AND A - SBC HL,DE - JP Z,SAVEV -; F3 - LD HL,#3D00 - AND A - SBC HL,DE - JP Z,CCHANGE -; F5 - LD HL,#3F00 - AND A - SBC HL,DE - JP Z,OLD_VAL -; F7 - LD HL,#4100 - AND A - SBC HL,DE - JP Z,DEF_VAL -; F10 - LD HL,#4400 - AND A - SBC HL,DE - JP Z,SAVEXIT -; ESC - LD HL,#011B - AND A - SBC HL,DE - RET NZ - POP HL - RET +OLD_VAL: CALL READING + JR RestartSetup + RET -OLD_VAL: - CALL READING - JR RestartSetup - RET - -DEF_VAL: - CALL SETDEF +DEF_VAL: CALL SETDEF ;--------------------------------------- -RestartSetup: -;setXYpos - CALL XY_SCREEN -;setLang - CALL SETLAND -;setVsinc - CALL OnChangeAction.setVsinc -;setInt - Должна быть последней!!! - JP OnChangeAction.setInt +RestartSetup: ;setXYpos + CALL XY_SCREEN + ;setLang + CALL SETLAND + ;setVsinc + CALL OnChangeAction.setVsinc + ;setInt - Должна быть последней!!! + JP OnChangeAction.setInt ;--------------------------------------- -SAVEXIT: - CALL WRITING - POP HL - RET +SAVEXIT: CALL WRITING + POP HL + RET -SAVEV: - CALL WRITING - RET +SAVEV: CALL WRITING + RET -SUBITM: - CALL RCURSOR - LD A,(ITEM) - SUB 17 ; !HARDCODE max items in column - JR NC,GODITM2 - XOR A -GODITM2: - LD (ITEM),A - JP PCURSOR +SUBITM: CALL RCURSOR + LD A,(ITEM) + SUB 17 ; !HARDCODE max items in column + JR NC,GODITM2 + XOR A +GODITM2: LD (ITEM),A + JP PCURSOR -ADDITM: - CALL RCURSOR - LD A,(ITEM) - ADD A,17 ; !HARDCODE max items in column - CP SettingsItemsTabsAddrs.max - JR C,GODITM - LD A,SettingsItemsTabsAddrs.max - DEC A -GODITM: - LD (ITEM),A - JP PCURSOR +ADDITM: CALL RCURSOR + LD A,(ITEM) + ADD A,17 ; !HARDCODE max items in column + CP SettingsItemsTabsAddrs.max + JR C,GODITM + LD A,SettingsItemsTabsAddrs.max + DEC A +GODITM: LD (ITEM),A + JP PCURSOR -INCITM: CALL RCURSOR - LD A,(ITEM) - INC A - CP SettingsItemsTabsAddrs.max - JR NZ,1F - XOR A -1: LD (ITEM),A - JP PCURSOR +INCITM: CALL RCURSOR + LD A,(ITEM) + INC A + CP SettingsItemsTabsAddrs.max + JR NZ,1F + XOR A +1: LD (ITEM),A + JP PCURSOR -DECITM: - CALL RCURSOR - LD A,(ITEM) - OR A - JR NZ,1F - LD A,SettingsItemsTabsAddrs.max -1: DEC A - LD (ITEM),A - JP PCURSOR +DECITM: CALL RCURSOR + LD A,(ITEM) + OR A + JR NZ,1F + LD A,SettingsItemsTabsAddrs.max +1: DEC A + LD (ITEM),A + JP PCURSOR -CCHANGE: - LD A,CMOS_CELL.ScreenSET - CALL READCMS - INC A - AND high CMOS_CELL.ScreenSET.Mask.ColorStyle - LD L,A - LD B,A - LD A,CMOS_CELL.ScreenSET - CALL WRITCMS -CSET: LD H,0 - LD DE,STYLES - ADD HL,HL - ADD HL,HL - ADD HL,DE - LD DE,NORCLR - LDI - LDI - LDI - LDI - CALL FSCREEN - ; - ;REFRESH: - LD BC,SettingsItemsTabsAddrs.max*256 - LD A,(ITEM) - PUSH AF -STT2: LD A,C - LD (ITEM),A - PUSH BC - CALL PTEXT - POP BC - INC C - DJNZ STT2 - POP AF - LD (ITEM),A - CALL PCURSOR - RET +CCHANGE: LD A,CMOS_CELL.ScreenSET + CALL READCMS + INC A + AND high CMOS_CELL.ScreenSET.Mask.ColorStyle + LD L,A + LD B,A + LD A,CMOS_CELL.ScreenSET + CALL WRITCMS +CSET: LD H,0 + LD DE,STYLES + ADD HL,HL + ADD HL,HL + ADD HL,DE + LD DE,NORCLR + LDI + LDI + LDI + LDI + CALL FSCREEN + ; + ;REFRESH: + LD BC,SettingsItemsTabsAddrs.max*256 + LD A,(ITEM) + PUSH AF +STT2: LD A,C + LD (ITEM),A + PUSH BC + CALL PTEXT + POP BC + INC C + DJNZ STT2 + POP AF + LD (ITEM),A + CALL PCURSOR + RET -PTEXT: call Get_Item_Address - JP PITEM +PTEXT: CALL Get_Item_Address + JP PITEM ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] IF NEW_FEATURE ; New procedure with IY reg -LocateCursor: - call Get_Item_Address - LD E,(IY+MenusItem.Column) - LD D,(IY+MenusItem.Line) - ld a,(IY+MenusItem.Name) - push iy - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - ADD A,E - LD E,A - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - pop iy - ld a,(iy+MenusItem.FirstString) - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - LD B,A - ret - +LocateCursor: call Get_Item_Address + LD E,(IY+MenusItem.Column) + LD D,(IY+MenusItem.Line) + ld a,(IY+MenusItem.Name) + push iy + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + ADD A,E + LD E,A + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + pop iy + ld a,(iy+MenusItem.FirstString) + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + LD B,A + ret ELSE -LocateCursor: - call Get_Item_Address - LD E,(HL) - INC HL - LD D,(HL) - INC HL - ld a,(hl) - inc hl - push hl - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - ADD A,E - LD E,A - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE - pop hl - INC HL ;SKIP REGISTER - INC HL ;SKIP MASK - INC HL ;SKIP MAX VALUE - ld a,(hl) - call FindStringAddr - LD BC,#0100 - XOR A - CPIR - LD A,#FF - SUB C - LD B,A - ret +LocateCursor: call Get_Item_Address + LD E,(HL) + INC HL + LD D,(HL) + INC HL + ld a,(hl) + inc hl + push hl + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + ADD A,E + LD E,A + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE + pop hl + INC HL ;SKIP REGISTER + INC HL ;SKIP MASK + INC HL ;SKIP MAX VALUE + ld a,(hl) + call FindStringAddr + LD BC,#0100 + XOR A + CPIR + LD A,#FF + SUB C + LD B,A + ret ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] -PCURSOR: - call LocateCursor - LD A,(CURCLR) - JP PRINTA +PCURSOR: call LocateCursor + LD A,(CURCLR) + JP PRINTA -RCURSOR: - call LocateCursor - LD A,(NORCLR) - JP PRINTA +RCURSOR: call LocateCursor + LD A,(NORCLR) + JP PRINTA -FSCREEN: - LD DE,#0000 - EI - HALT -FSC1: - PUSH DE - CALL LP_SET_PLACE +FSCREEN: LD DE,#0000 + EI + HALT +FSC1: PUSH DE + CALL LP_SET_PLACE - LD A,(NORCLR) - LD E,A - LD B,#50 - CALL LP_PRINT_ATR + LD A,(NORCLR) + LD E,A + LD B,#50 + CALL LP_PRINT_ATR - POP DE - LD A,#20 - INC D - CP D - JR NZ,FSC1 - RET + POP DE + LD A,#20 + INC D + CP D + JR NZ,FSC1 + RET -ITEM: DB #00 -ITEM_Restore: DB #00 +ITEM: DB #00 +ITEM_Restore: DB #00 -NORCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE -HLTCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW -CURCLR: DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE -WRMCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE +NORCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE +HLTCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW +CURCLR: DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE +WRMCLR: DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] IF NEW_FEATURE ; New procedure with IY reg -INCVAL: call Get_Item_Address - ld A,(IY+MenusItem.Type) - AND A - RET NZ ; проверка на тип, дальше если paramLine +INCVAL: call Get_Item_Address + ld A,(IY+MenusItem.Type) + AND A + RET NZ ; проверка на тип, дальше если paramLine - LD A,(IY+MenusItem.CMOSreg) - PUSH AF - CALL READCMS - LD C,A - AND (IY+MenusItem.ValueMask) - CP (IY+MenusItem.ValueMax) - LD A,C - JR Z,OVERI - LD B,(IY+MenusItem.ValueMask) - CALL ADDVAL - ADD A,B - JR OVER -OVERI: XOR (IY+MenusItem.ValueMax) -OVER: LD B,A - POP AF - CALL WRITCMS - PUSH IY - PUSH IY - POP HL - CALL PITEM - POP IY - ld l,(IY+MenusItem.Action) - ld h,(IY+MenusItem.Action+1) - jp (hl) + LD A,(IY+MenusItem.CMOSreg) + PUSH AF + CALL READCMS + LD C,A + AND (IY+MenusItem.ValueMask) + CP (IY+MenusItem.ValueMax) + LD A,C + JR Z,OVERI + LD B,(IY+MenusItem.ValueMask) + CALL ADDVAL + ADD A,B + JR OVER +OVERI: XOR (IY+MenusItem.ValueMax) +OVER: LD B,A + POP AF + CALL WRITCMS + PUSH IY + PUSH IY + POP HL + CALL PITEM + POP IY + ld l,(IY+MenusItem.Action) + ld h,(IY+MenusItem.Action+1) + jp (hl) DECVAL: call Get_Item_Address - ld A,(IY+MenusItem.Type) - AND A - RET NZ ; проверка на тип, дальше если paramLine + ld A,(IY+MenusItem.Type) + AND A + RET NZ ; проверка на тип, дальше если paramLine - LD A,(IY+MenusItem.CMOSreg) - PUSH AF - CALL READCMS - LD C,A - AND (IY+MenusItem.ValueMask) - LD A,C - JR Z,OVERD - LD B,(IY+MenusItem.ValueMask) - CALL ADDVAL - SUB B - JR OVER -OVERD: OR (IY+MenusItem.ValueMax) - JR OVER + LD A,(IY+MenusItem.CMOSreg) + PUSH AF + CALL READCMS + LD C,A + AND (IY+MenusItem.ValueMask) + LD A,C + JR Z,OVERD + LD B,(IY+MenusItem.ValueMask) + CALL ADDVAL + SUB B + JR OVER +OVERD: OR (IY+MenusItem.ValueMax) + JR OVER -pressedEnter: ; !TODO New Feature - ld a,(iy+MenusItem.Type) - and a - ret z - ld l,(iy+MenusItem.Action) - ld h,(iy+MenusItem.Action+1) - jp (HL) - +pressedEnter: ld a,(iy+MenusItem.Type) + and a + ret z + ld l,(iy+MenusItem.Action) + ld h,(iy+MenusItem.Action+1) + jp (HL) ELSE -INCVAL: call Get_Item_Address - INC HL - INC HL - INC HL - LD A,(HL) - INC HL - PUSH AF - CALL READCMS - LD C,A - AND (HL) - INC HL - CP (HL) - LD A,C - JR Z,OVERI - DEC HL - LD B,(HL) - CALL ADDVAL - ADD A,B - JR OVER -OVERI: XOR (HL) -OVER: LD B,A - POP AF - CALL WRITCMS - CALL PTEXT - call Get_Item_Address - dec hl - ld a,(hl) - dec hl - ld l,(hl) - ld h,a - jp (hl) - -DECVAL: call Get_Item_Address - INC HL - INC HL - INC HL - LD A,(HL) - INC HL - PUSH AF - CALL READCMS - LD C,A - AND (HL) - LD A,C - INC HL - JR Z,OVERD - DEC HL - LD B,(HL) - CALL ADDVAL - SUB B - JR OVER -OVERD: - OR (HL) - JR OVER +INCVAL: call Get_Item_Address + INC HL + INC HL + INC HL + LD A,(HL) + INC HL + PUSH AF + CALL READCMS + LD C,A + AND (HL) + INC HL + CP (HL) + LD A,C + JR Z,OVERI + DEC HL + LD B,(HL) + CALL ADDVAL + ADD A,B + JR OVER +OVERI: XOR (HL) +OVER: LD B,A + POP AF + CALL WRITCMS + CALL PTEXT + call Get_Item_Address + dec hl + ld a,(hl) + dec hl + ld l,(hl) + ld h,a + jp (hl) +DECVAL: call Get_Item_Address + INC HL + INC HL + INC HL + LD A,(HL) + INC HL + PUSH AF + CALL READCMS + LD C,A + AND (HL) + LD A,C + INC HL + JR Z,OVERD + DEC HL + LD B,(HL) + CALL ADDVAL + SUB B + JR OVER +OVERD: OR (HL) + JR OVER ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] ; B - MASK -ADDVAL: LD C,#00 -ADDV1: INC C - RRC B - JR NC,ADDV1 - LD B,#80 -ADDV2: RLC B - DEC C - JR NZ,ADDV2 - RET +ADDVAL: LD C,#00 +ADDV1: INC C + RRC B + JR NC,ADDV1 + LD B,#80 +ADDV2: RLC B + DEC C + JR NZ,ADDV2 + RET ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] IF NEW_FEATURE ; IY - item's address ; New procedure with IY reg -PITEM: LD E,(IY+MenusItem.Column) ; x-coordinate - LD D,(IY+MenusItem.Line) ; y-coordinate - ;CALL ScreenPOS.LOCAT - CALL LP_SET_PLACE ; set position of item - LD A,(IY+MenusItem.Name) - CALL POSTMSG +PITEM: LD E,(IY+MenusItem.Column) ; x-coordinate + LD D,(IY+MenusItem.Line) ; y-coordinate + ;CALL ScreenPOS.LOCAT + CALL LP_SET_PLACE ; set position of item + LD A,(IY+MenusItem.Name) + CALL POSTMSG - PUSH IY - LD BC,MenusItem.FirstString - ADD IY,BC - EX (SP),IY - POP HL ; тут адрес строки первого параметра + PUSH IY + LD BC,MenusItem.FirstString + ADD IY,BC + EX (SP),IY + POP HL ; тут адрес строки первого параметра - LD A,(IY+MenusItem.Type) - AND A - JR NZ,.printParameter ; если это не строка с изменяемым параметром, то просто печать + LD A,(IY+MenusItem.Type) + AND A + JR NZ,.printParameter ; если это не строка с изменяемым параметром, то просто печать - LD A,(IY+MenusItem.CMOSreg) ; address of next parametr - CALL READCMS ; read item`s value from cmos + LD A,(IY+MenusItem.CMOSreg) ; address of next parametr + CALL READCMS ; read item`s value from cmos - LD B,(IY+MenusItem.ValueMask) ; item's value mask - AND B + LD B,(IY+MenusItem.ValueMask) ; item's value mask + AND B .getParameterNum: - RRCA - RRC B - JR NC,.getParameterNum - RLCA - OR A - jr Z,.printParameter ; первый параметр выводим? + RRCA + RRC B + JR NC,.getParameterNum + RLCA + OR A + JR Z,.printParameter ; первый параметр выводим? - ld c,a - xor a - ld b,a - add hl,bc ; находим номер параметра + LD C,A + XOR A + LD B,A + ADD HL,BC ; находим номер параметра .printParameter: - ld a,(hl) - jp POSTMSG - + LD A,(HL) + JP POSTMSG ELSE ; вызовы процедур биоса надеются на то, что некоторые регистры не портятся ; HL - item's address -PITEM: LD E,(HL) ; x-coordinate - INC HL - LD D,(HL) ; y-coordinate - INC HL ; address of next parametr - PUSH HL - CALL LP_SET_PLACE ; set position of item - LD A,(HL) - CALL POSTMSG - POP HL - INC HL - LD A,(HL) ; address of next parametr - CALL READCMS ; read item`s value from cmos - INC HL - LD B,(HL) ; item's value mask - INC HL - INC HL - AND B +PITEM: LD E,(HL) ; x-coordinate + INC HL + LD D,(HL) ; y-coordinate + INC HL ; address of next parametr + PUSH HL + CALL LP_SET_PLACE ; set position of item + LD A,(HL) + CALL POSTMSG + POP HL + INC HL + LD A,(HL) ; address of next parametr + CALL READCMS ; read item`s value from cmos + INC HL + LD B,(HL) ; item's value mask + INC HL + INC HL + AND B .getParameterNum: - RRCA - RRC B - JR NC,.getParameterNum - RLCA - OR A - jr Z,.printParameter ; первый параметр выводим? + RRCA + RRC B + JR NC,.getParameterNum + RLCA + OR A + JR Z,.printParameter ; первый параметр выводим? - ld c,a - xor a - ld b,a - add hl,bc ; находим номер параметра + LD C,A + XOR A + LD B,A + ADD HL,BC ; находим номер параметра .printParameter: - ld a,(hl) - jp POSTMSG + LD A,(HL) + JP POSTMSG ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] ; Не портит HL -GET_CMOS_VALUE: - PUSH BC - LD A,C - CALL READCMS - POP BC - AND B -.loop: RRCA - RRC B - JR NC,.loop - RLCA - RET +GET_CMOS_VALUE: PUSH BC + LD A,C + CALL READCMS + POP BC + AND B +.loop: RRCA + RRC B + JR NC,.loop + RLCA + RET ; [x] чтоб не влезло куда не надо READCMS: LD D,high CMOSARE LD E,A CP CMOS.USED_MAX_ADDRESS+1 - JR NC,.error + CCF + RET C + ; LD A,(DE) RET - ; -.error: SCF - RET + ; [x] чтоб не влезло куда не надо -WRITCMS: - LD D,high CMOSARE - LD E,A - CP CMOS.USED_MAX_ADDRESS+1 - JR NC,.error - LD A,B - LD (DE),A - RET -.error: SCF - RET - -CHEKSUM: - LD BC,DEFVAL.Size*256 + CMOS.USED_MIN_ADDRESS - LD H,#DE ;!HARDCODE -.loop: LD A,C - CALL READCMS - LD L,A - LD A,H - SUB L - RLCA - SUB L - LD H,A - INC C - DJNZ .loop - RET - -TEST_CHECKSUM: - CALL CHEKSUM - LD A,CMOS_CELL.CheckSum - CALL READCMS - CP H - RET - -; TSTCMOS: -; LD C,BIOS.CMOS_TEST -; JP_to_BIOS +WRITCMS: LD D,high CMOSARE + LD E,A + CP CMOS.USED_MAX_ADDRESS+1 + CCF + RET C + ; + LD A,B + LD (DE),A + RET -; RDCMOS: -; LD C,BIOS.CMOS_RD -; JP_to_BIOS +CHEKSUM: LD BC,DEFVAL.Size*256 + CMOS.USED_MIN_ADDRESS + LD H,#DE ;!HARDCODE +.loop: LD A,C + CALL READCMS + LD L,A + LD A,H + SUB L + RLCA + SUB L + LD H,A + INC C + DJNZ .loop + RET -; WRCMOS: -; LD C,BIOS.CMOS_WR -; JP_to_BIOS +TEST_CHECKSUM: CALL CHEKSUM + LD A,CMOS_CELL.CheckSum + CALL READCMS + CP H + RET -READING: - LD D,CMOS.USED_MIN_ADDRESS -.loop: PUSH DE - CALL CMOS_RD - POP DE - LD H,high CMOSARE - LD L,D - LD (HL),A - LD A,CMOS.USED_MAX_ADDRESS+1 - INC D - CP D - JR NZ,.loop - RET +; TSTCMOS: LD C,BIOS.CMOS_TEST +; JP_to_BIOS + + +; RDCMOS: LD C,BIOS.CMOS_RD +; JP_to_BIOS + +; WRCMOS: LD C,BIOS.CMOS_WR +; JP_to_BIOS + +READING: LD D,CMOS.USED_MIN_ADDRESS +.loop: PUSH DE + CALL CMOS_RD + POP DE + LD H,high CMOSARE + LD L,D + LD (HL),A + LD A,CMOS.USED_MAX_ADDRESS+1 + INC D + CP D + JR NZ,.loop + RET WRITING: CALL CHEKSUM LD B,H @@ -697,7 +666,7 @@ WRITING: CALL CHEKSUM LD L,D LD A,(HL) PUSH DE - CALL CMOS_WR + CALL CMOS_WR POP DE LD A,CMOS.USED_MAX_ADDRESS+1 INC D @@ -705,388 +674,379 @@ WRITING: CALL CHEKSUM JR NZ,.loop RET -SETDEFX: - LD A,#FF - LD (ERRSUM),A - CALL SETDEF - JP WRITING +SETDEFX: LD A,#FF + LD (ERRSUM),A + CALL SETDEF + JP WRITING -SETDEF: ;!TODO может бахнуть LDIRом? посмотреть - LD HL,DEFVAL - LD C,DEFVAL.Size - LD A,CMOS.USED_MIN_ADDRESS -.loop: - LD B,(HL) - INC HL - PUSH AF - CALL WRITCMS - POP AF - INC A - DEC C - JR NZ,.loop +;!TODO может бахнуть LDIRом? посмотреть +SETDEF: LD HL,DEFVAL + LD C,DEFVAL.Size + LD A,CMOS.USED_MIN_ADDRESS +.loop: LD B,(HL) + INC HL + PUSH AF + CALL WRITCMS + POP AF + INC A + DEC C + JR NZ,.loop - LD A,CMOS_CELL.HardwareConfiguration ; не используется - LD B,0 - CALL WRITCMS + LD A,CMOS_CELL.HardwareConfiguration ; не используется + LD B,0 + CALL WRITCMS - LD A,CMOS_CELL.QuickStartSetUp - LD B,CMOS_CELL.QuickStartSetUp.ZxRom.Basic128 - CALL WRITCMS + LD A,CMOS_CELL.QuickStartSetUp + LD B,CMOS_CELL.QuickStartSetUp.ZxRom.Basic128 + CALL WRITCMS - CALL CHEKSUM - LD B,H - LD A,CMOS_CELL.CheckSum - CALL WRITCMS - RET + CALL CHEKSUM + LD B,H + LD A,CMOS_CELL.CheckSum + CALL WRITCMS + RET ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v] ; New procedure with IY reg - IF NEW_FEATURE + IF NEW_FEATURE Get_Item_Address: - LD A,(ITEM) - LD L,A - LD H,0 - LD DE,SettingsItemsTabsAddrs - ADD HL,HL - ADD HL,DE - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - PUSH HL - POP IY - RET + LD A,(ITEM) + LD L,A + LD H,0 + LD DE,SettingsItemsTabsAddrs + ADD HL,HL + ADD HL,DE + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + PUSH HL + POP IY + RET - ELSE + ELSE Get_Item_Address: - LD A,(ITEM) - LD L,A - LD H,0 - LD DE,SettingsItemsTabsAddrs - ADD HL,HL - ADD HL,DE - LD A,(HL) - INC HL - LD H,(HL) - LD L,A - INC HL - INC HL - RET - ENDIF + LD A,(ITEM) + LD L,A + LD H,0 + LD DE,SettingsItemsTabsAddrs + ADD HL,HL + ADD HL,DE + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + INC HL + INC HL + RET + ENDIF ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^] ; MODULE OnChangeAction -nothing: - ret +nothing: RET - ; !TODO New Feature - ; !TODO замутить что-то типа API для рисования всплывающих окон - IF NEW_FEATURE -SetTime: - xor a - ld hl,#050E - ld de,#0C20 - ld ix,memBUFFER.Shared - CALL WIN_COPY + ; !TODO New Feature + ; !TODO замутить что-то типа API для рисования всплывающих окон + IF NEW_FEATURE +SetTime: xor a + ld hl,#050E + ld de,#0C20 + ld ix,memBUFFER.Shared + CALL WIN_COPY - LD DE,#0C20 ; !HARDCODE - ld b,5 - DI + LD DE,#0C20 ; !HARDCODE + ld b,5 + DI -.loop: push bc - push de - CALL LP_SET_PLACE - ; печать атрибутов - LD E,COLORS.CGA.INK.RED - LD B,#0E - CALL LP_PRINT_ATR +.loop: push bc + push de + CALL LP_SET_PLACE + ; печать атрибутов + LD E,COLORS.CGA.INK.RED + LD B,#0E + CALL LP_PRINT_ATR - pop de - inc d - pop bc - DJNZ .loop + pop de + inc d + pop bc + DJNZ .loop - CALL setFRAME.single - LD DE,#0C20 ;yx. y=0..1F, x=0..4F координаты левого верхнего угла - LD BC,#050E ;yx. длина и высота линии - CALL PBORDER + CALL setFRAME.single + LD DE,#0C20 ;yx. y=0..1F, x=0..4F координаты левого верхнего угла + LD BC,#050E ;yx. длина и высота линии + CALL PBORDER - CALL KEY - xor a - ld hl,#050E - ld de,#0C20 - ld ix,memBUFFER.Shared - JP WIN_RESTORE - ENDIF + CALL KEY + xor a + ld hl,#050E + ld de,#0C20 + ld ix,memBUFFER.Shared + JP WIN_RESTORE + ENDIF -setXYpos: - JP XY_SCREEN +setXYpos: JP XY_SCREEN -setVsinc: - ld a,CMOS_CELL.ScreenSET - call READCMS - and high CMOS_CELL.ScreenSET.Mask.Sinc - SCF - jr z,.skip ;320 - SLA A -.skip: ld a,128+7 ;312 - jp nc,FN_SYNC - dec a ;320 -.set: jp FN_SYNC +setVsinc: ld a,CMOS_CELL.ScreenSET + call READCMS + and high CMOS_CELL.ScreenSET.Mask.Sinc + SCF + jr z,.skip ;320 + SLA A +.skip: ld a,128+7 ;312 + jp nc,FN_SYNC + dec a ;320 +.set: jp FN_SYNC -setLang: - CALL SETLAND - ld a,(ITEM) - ld (ITEM_Restore),a - pop hl ; delete return adress from stack - jp SETTINGS -setInt: ld a,CMOS_CELL.ScreenSET - call READCMS - and high CMOS_CELL.ScreenSET.Mask.Int - jr nz,.skipDefaultInt - ld a,2 ; Pentagon sync - default - jr .set +setLang: CALL SETLAND + ld a,(ITEM) + ld (ITEM_Restore),a + pop hl ; delete return adress from stack + jp SETTINGS +setInt: ld a,CMOS_CELL.ScreenSET + call READCMS + and high CMOS_CELL.ScreenSET.Mask.Int + jr nz,.skipDefaultInt + ld a,2 ; Pentagon sync - default + jr .set .skipDefaultInt: - SRA A - SRA A - SRA A - SRA A ; byte %00xx0000 --> %000000xx -.set: CALL FN_SYNC + SRA A + SRA A + SRA A + SRA A ; byte %00xx0000 --> %000000xx +.set: CALL FN_SYNC - LD IX,win_descriptor.tab80x32 - CALL WIN_OPEN.SCR1 + LD IX,win_descriptor.tab80x32 + CALL WIN_OPEN.SCR1 - ld a,(ITEM) - ld (ITEM_Restore),a - pop hl ; delete return adress from stack - jp SETTINGS + ld a,(ITEM) + ld (ITEM_Restore),a + pop hl ; delete return adress from stack + jp SETTINGS ENDMODULE ; ;-----------------------------------------------------------------------; ;!FIXIT прибраться тут SETBOOTSOUND EQU high CMOS_CELL.BootUpParams.Mask.BootSound -MEMTEST EQU high CMOS_CELL.BootUpParams.Mask.MemTest -SAVERAM EQU high CMOS_CELL.BootUpParams.Mask.SaveRAMdisks -EXTBIOS EQU high CMOS_CELL.BootUpParams.Mask.UpdBios +MEMTEST EQU high CMOS_CELL.BootUpParams.Mask.MemTest +SAVERAM EQU high CMOS_CELL.BootUpParams.Mask.SaveRAMdisks +EXTBIOS EQU high CMOS_CELL.BootUpParams.Mask.UpdBios -SDELAY2 EQU #10 -SDELAY1 EQU #08 -SDELAY0 EQU #00 -RUS EQU #04 -QSTART EQU #01 +SDELAY2 EQU #10 +SDELAY1 EQU #08 +SDELAY0 EQU #00 +RUS EQU #04 +QSTART EQU #01 -TMAT_ON EQU #80 -TDL250 EQU #00 -TDL500 EQU #20 -TDL750 EQU #40 -TDL1000 EQU #60 -TRATE6 EQU #00 -TRATE8 EQU #01 -TRATE10 EQU #02 -TRATE12 EQU #03 -TRATE15 EQU #04 -TRATE20 EQU #05 -TRATE24 EQU #06 -TRATE30 EQU #07 -SDFDD1 EQU #00 -SDFDD2 EQU #01 -SDIDE1 EQU #02 -SDIDE2 EQU #03 -SDRAM EQU #04 -ASDFDD1 EQU #00 -ASDFDD2 EQU #10 +TMAT_ON EQU #80 +TDL250 EQU #00 +TDL500 EQU #20 +TDL750 EQU #40 +TDL1000 EQU #60 +TRATE6 EQU #00 +TRATE8 EQU #01 +TRATE10 EQU #02 +TRATE12 EQU #03 +TRATE15 EQU #04 +TRATE20 EQU #05 +TRATE24 EQU #06 +TRATE30 EQU #07 +SDFDD1 EQU #00 +SDFDD2 EQU #01 +SDIDE1 EQU #02 +SDIDE2 EQU #03 +SDRAM EQU #04 +ASDFDD1 EQU #00 +ASDFDD2 EQU #10 ASDRECOVERY EQU #70 -ASDIDE1 EQU #20 -ASDIDE2 EQU #30 -ASDRAM EQU #40 -FD1720 EQU #00 -FD1144 EQU #01 -FD1NONE EQU #02 -FD2720 EQU #00 -FD2144 EQU #04 -FD2NONE EQU #08 -HD1AUTO EQU #00 -HD1STP EQU #01 -HD1NONE EQU #02 -HD2AUTO EQU #00 -HD2STP EQU #04 -HD2NONE EQU #08 -TURBOFF EQU #06 -TURBON EQU #07 -SPRIN EQU #00 -SCORP EQU #08 -PENT EQU #10 -USER EQU #18 -BAS128 EQU #00 -BAS48_ EQU #01 -TRD128 EQU #02 -EXPN EQU #03 -TRD48 EQU #04 -BAS48 EQU #05 -REBOOTM EQU #02 -HDDWP EQU #01 +ASDIDE1 EQU #20 +ASDIDE2 EQU #30 +ASDRAM EQU #40 +FD1720 EQU #00 +FD1144 EQU #01 +FD1NONE EQU #02 +FD2720 EQU #00 +FD2144 EQU #04 +FD2NONE EQU #08 +HD1AUTO EQU #00 +HD1STP EQU #01 +HD1NONE EQU #02 +HD2AUTO EQU #00 +HD2STP EQU #04 +HD2NONE EQU #08 +TURBOFF EQU #06 +TURBON EQU #07 +SPRIN EQU #00 +SCORP EQU #08 +PENT EQU #10 +USER EQU #18 +BAS128 EQU #00 +BAS48_ EQU #01 +TRD128 EQU #02 +EXPN EQU #03 +TRD48 EQU #04 +BAS48 EQU #05 +REBOOTM EQU #02 +HDDWP EQU #01 ;-----------------------------------------------------------------------; -STYLES: -; Color Style 0 - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE -; Color Style 1 - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LMAGENT - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE -; Color Style 2 - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK -; Color Style 3 - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.LGREEN -; Color Style 4 - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW -; Color Style 5 - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BROWN - DB COLORS.CGA.PAPER.BROWN + COLORS.CGA.INK.LGRAY - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE -; Color Style 6 - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.GREEN - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.GREEN -; Color Style 7 - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.LGRAY - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE -; Color Style 8 - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE -; Color Style 9 - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLUE - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LRED -; Color Style 10 - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE -; Color Style 11 - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE -; Color Style 12 - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE -; Color Style 13 - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LCYAN - DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.YELLOW -; Color Style 14 (Mono) - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.WHITE - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY -; Color Style 15 - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LMAGENT - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN - DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED - DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.RED +STYLES: ; Color Style 0 + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE + ; Color Style 1 + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.LMAGENT + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE + ; Color Style 2 + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK + ; Color Style 3 + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.LGREEN + ; Color Style 4 + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW + ; Color Style 5 + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.BROWN + DB COLORS.CGA.PAPER.BROWN + COLORS.CGA.INK.LGRAY + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE + ; Color Style 6 + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.GREEN + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.GREEN + ; Color Style 7 + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.LGRAY + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.BLUE + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.RED + COLORS.CGA.INK.WHITE + ; Color Style 8 + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE + ; Color Style 9 + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.BLUE + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.LRED + ; Color Style 10 + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE + ; Color Style 11 + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLUE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.MAGENTA + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE + ; Color Style 12 + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.GREEN + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.WHITE + ; Color Style 13 + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LCYAN + DB COLORS.CGA.PAPER.CYAN + COLORS.CGA.INK.YELLOW + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.YELLOW + ; Color Style 14 (Mono) + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.WHITE + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.BLACK + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGRAY + ; Color Style 15 + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LMAGENT + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.LGREEN + DB COLORS.CGA.PAPER.LGRAY + COLORS.CGA.INK.RED + DB COLORS.CGA.PAPER.BLACK + COLORS.CGA.INK.RED -DEFVAL: DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS - DB TDL250 + TRATE30 ;#0F - KEYBOARD - DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS - DB FD1720 + FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & Primary HDD's - DB 0 ;#12 - CYLINDERS LOW MASTER - DB 0 ;#13 - CYLINDERS HIGH MASTER - DB 0 ;#14 - HEADS MASTER - DB 0 ;#15 - SECTORS MASTER - DB 0 ;#16 - CYLINDERS LOW SLAVE - DB 0 ;#17 - CYLINDERS HIGH SLAVE - DB 0 ;#18 - HEADS SLAVE - DB 0 ;#19 - SECTORS SLAVE - DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE - DB CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ;#1B - HARDARE CONF - DB BAS128 ;#1C - RESET MODE - DB REBOOTM + 4 ;#1D - REBOOT + LoadZXroms by ZX flag - DB 0 ;#1E - TRDOS - DB #77 ;#1F - SCREEN POSITION - DB HD1AUTO + HD2AUTO ;#20 - Secondary HDD's -.Size EQU $-DEFVAL +DEFVAL: DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS + DB TDL250 + TRATE30 ;#0F - KEYBOARD + DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS + DB FD1720 + FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & Primary HDD's + DB 0 ;#12 - CYLINDERS LOW MASTER + DB 0 ;#13 - CYLINDERS HIGH MASTER + DB 0 ;#14 - HEADS MASTER + DB 0 ;#15 - SECTORS MASTER + DB 0 ;#16 - CYLINDERS LOW SLAVE + DB 0 ;#17 - CYLINDERS HIGH SLAVE + DB 0 ;#18 - HEADS SLAVE + DB 0 ;#19 - SECTORS SLAVE + DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE + DB CNF_PORT.TURBO.ON + CNF_PORT.CNF_0 ;#1B - HARDARE CONF + DB BAS128 ;#1C - RESET MODE + DB REBOOTM + 4 ;#1D - REBOOT + LoadZXroms by ZX flag + DB 0 ;#1E - TRDOS + DB #77 ;#1F - SCREEN POSITION + DB HD1AUTO + HD2AUTO ;#20 - Secondary HDD's +.Size EQU $-DEFVAL ;!FIXIT расписать тут ячейки кмоса и это смещение меткой привязать вместо #0E в SETDEF - _mInfoALIGN 256,0 ; выравнивание на адрес #XX00 -CMOSARE: - DS 14 - ; - DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS - DB TDL250+TRATE30 ;#0F - KEYBOARD - DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS - DB FD1720+FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & HDD - DB 0 ;#12 - CYLINDERS LOW MASTER - DB 0 ;#13 - CYLINDERS HIGH MASTER - DB 0 ;#14 - HEADS MASTER - DB 0 ;#15 - SECTORS MASTER - DB 0 ;#16 - CYLINDERS LOW SLAVE - DB 0 ;#17 - CYLINDERS HIGH SLAVE - DB 0 ;#18 - HEADS SLAVE - DB 0 ;#19 - SECTORS SLAVE - DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE - DB TURBON+SPRIN ;#1B - HARDARE CONF - DB BAS128 ;#1C - RESET MODE - DB REBOOTM ;#1D - REBOOT MSG, HDD W/P - DB %0000'0000 ;#1E - TRDOS - DB %0111'0111 ;#1F - SCREEN POSITION - DB HD1AUTO+HD2AUTO ;#20 - Secondary HDD's - DB %0000'0000 ;#21 - DB %0000'0000 ;#22 - DB %0000'0000 ;#23 - DB %0000'0000 ;#24 - DB %0000'0000 ;#25 - DB %0000'0000 ;#26 - DB %0000'0000 ;#27 - DB %0000'0000 ;#28 - DB %0000'0000 ;#29 - DB %0000'0000 ;#2A - DB %0000'0000 ;#2B - DB %0000'0000 ;#2C - DB %0000'0000 ;#2D - DB %0000'0000 ;#2E - DB %0000'0000 ;#2F - DB %0000'0000 ;#30 - DB %0000'0000 ;#31 - DB #20 ;#32 - CENTURY - DB %0000'0000 ;#33 - DB %0000'0000 ;#34 - DB %0000'0000 ;#35 - DB %0000'0000 ;#36 - DB %0000'0000 ;#37 - DB %0000'0000 ;#38 - DB %0000'0000 ;#39 - DB %0000'0000 ;#3A - DB %0000'0000 ;#3B - DB %0000'0000 ;#3C - DB %0000'0000 ;#3D - DB %0000'0000 ;#3E - DB %0000'0000 ;#3F - CHECKSUM - BLOCK #100 - low $ ; добивка CMOSARE до размера в 256 байтов + _mInfoALIGN 256,0 ; выравнивание на адрес #XX00 +CMOSARE: DS 14 + ; + DB SAVERAM + SETBOOTSOUND + SDELAY1 ;#0E - OPTIONS + DB TDL250+TRATE30 ;#0F - KEYBOARD + DB SDIDE1 + ASDFDD1 ;#10 - SYSTEM DISKS + DB FD1720+FD2720+HD1AUTO+HD2AUTO ;#11 - FDD & HDD + DB 0 ;#12 - CYLINDERS LOW MASTER + DB 0 ;#13 - CYLINDERS HIGH MASTER + DB 0 ;#14 - HEADS MASTER + DB 0 ;#15 - SECTORS MASTER + DB 0 ;#16 - CYLINDERS LOW SLAVE + DB 0 ;#17 - CYLINDERS HIGH SLAVE + DB 0 ;#18 - HEADS SLAVE + DB 0 ;#19 - SECTORS SLAVE + DB 0 ;#1A - Int conf, Screen sync, COLOR STYLE + DB TURBON+SPRIN ;#1B - HARDARE CONF + DB BAS128 ;#1C - RESET MODE + DB REBOOTM ;#1D - REBOOT MSG, HDD W/P + DB %0000'0000 ;#1E - TRDOS + DB %0111'0111 ;#1F - SCREEN POSITION + DB HD1AUTO+HD2AUTO ;#20 - Secondary HDD's + DB %0000'0000 ;#21 + DB %0000'0000 ;#22 + DB %0000'0000 ;#23 + DB %0000'0000 ;#24 + DB %0000'0000 ;#25 + DB %0000'0000 ;#26 + DB %0000'0000 ;#27 + DB %0000'0000 ;#28 + DB %0000'0000 ;#29 + DB %0000'0000 ;#2A + DB %0000'0000 ;#2B + DB %0000'0000 ;#2C + DB %0000'0000 ;#2D + DB %0000'0000 ;#2E + DB %0000'0000 ;#2F + DB %0000'0000 ;#30 + DB %0000'0000 ;#31 + DB #20 ;#32 - CENTURY + DB %0000'0000 ;#33 + DB %0000'0000 ;#34 + DB %0000'0000 ;#35 + DB %0000'0000 ;#36 + DB %0000'0000 ;#37 + DB %0000'0000 ;#38 + DB %0000'0000 ;#39 + DB %0000'0000 ;#3A + DB %0000'0000 ;#3B + DB %0000'0000 ;#3C + DB %0000'0000 ;#3D + DB %0000'0000 ;#3E + DB %0000'0000 ;#3F - CHECKSUM + BLOCK #100 - low $ ; добивка CMOSARE до размера в 256 байтов ;DONT MOVE !!! ADDRESS ; \ No newline at end of file diff --git a/bios/shared/RECOVERY.IMG b/bios/shared/RECOVERY.IMG index 688311e..6b4afa7 100644 Binary files a/bios/shared/RECOVERY.IMG and b/bios/shared/RECOVERY.IMG differ diff --git a/doc/DCP_PAGE.bin b/doc/DCP_PAGE.bin new file mode 100644 index 0000000..8f766b8 Binary files /dev/null and b/doc/DCP_PAGE.bin differ