1096 lines
24 KiB
NASM
1096 lines
24 KiB
NASM
;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
|
||
|
||
|
||
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
|
||
|
||
CALL setFRAME.double
|
||
|
||
LD DE,#0402
|
||
LD BC,#1A4C
|
||
CALL PBORDER
|
||
|
||
CALL setFRAME.medium
|
||
|
||
LD DE,#0602
|
||
LD BC,#134C
|
||
CALL PBORDER ;!FIXIT
|
||
|
||
CALL setFRAME.single
|
||
|
||
LD DE,#062A
|
||
LD H,#13
|
||
CALL TLINEV
|
||
|
||
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
|
||
|
||
|
||
IF NEW_FEATURE
|
||
|
||
; LD HL,CurrentDateTime
|
||
; CALL GETTIME
|
||
|
||
; 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
|
||
|
||
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
|
||
|
||
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
|
||
|
||
OLD_VAL:
|
||
CALL READING
|
||
JR RestartSetup
|
||
RET
|
||
|
||
DEF_VAL:
|
||
CALL SETDEF
|
||
;---------------------------------------
|
||
RestartSetup:
|
||
;setXYpos
|
||
CALL RESCREEN
|
||
;setLang
|
||
CALL SETLAND
|
||
;setVsinc
|
||
CALL OnChangeAction.setVsinc
|
||
;setInt - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD>!!!
|
||
JP OnChangeAction.setInt
|
||
;---------------------------------------
|
||
|
||
SAVEXIT:
|
||
CALL WRITING
|
||
POP HL
|
||
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
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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
|
||
|
||
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
|
||
ENDIF
|
||
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^]
|
||
|
||
PCURSOR:
|
||
call LocateCursor
|
||
LD A,(CURCLR)
|
||
JP PRINTA
|
||
|
||
RCURSOR:
|
||
call LocateCursor
|
||
LD A,(NORCLR)
|
||
JP PRINTA
|
||
|
||
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
|
||
|
||
POP DE
|
||
LD A,#20
|
||
INC D
|
||
CP D
|
||
JR NZ,FSC1
|
||
RET
|
||
|
||
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
|
||
|
||
|
||
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v]
|
||
IF NEW_FEATURE
|
||
; New procedure with IY reg
|
||
INCVAL: call Get_Item_Address
|
||
ld A,(IY+MenusItem.Type)
|
||
AND A
|
||
RET NZ ; <20><EFBFBD>ઠ <20><> ⨯, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 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)
|
||
|
||
DECVAL: call Get_Item_Address
|
||
ld A,(IY+MenusItem.Type)
|
||
AND A
|
||
RET NZ ; <20><EFBFBD>ઠ <20><> ⨯, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 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
|
||
|
||
|
||
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)
|
||
|
||
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
|
||
|
||
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
|
||
|
||
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[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
|
||
|
||
PUSH IY
|
||
LD BC,MenusItem.FirstString
|
||
ADD IY,BC
|
||
EX (SP),IY
|
||
POP HL ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD> <20><>ࢮ<EFBFBD><E0A2AE> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD>
|
||
|
||
LD A,(IY+MenusItem.Type)
|
||
AND A
|
||
JR NZ,.printParameter ; <20> <20><><EFBFBD> <20><> <20><>ப<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>塞<EFBFBD><EFA5AC> <20><>ࠬ<EFBFBD><E0A0AC>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
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
|
||
.getParameterNum:
|
||
RRCA
|
||
RRC B
|
||
JR NC,.getParameterNum
|
||
RLCA
|
||
OR A
|
||
jr Z,.printParameter ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD> <20>뢮<EFBFBD><EBA2AE><EFBFBD>?
|
||
|
||
ld c,a
|
||
xor a
|
||
ld b,a
|
||
add hl,bc ; <20><>室<EFBFBD><E5AEA4> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD>
|
||
.printParameter:
|
||
ld a,(hl)
|
||
jp POSTMSG
|
||
|
||
ELSE
|
||
; !FIXIT <20>맮<EFBFBD><EBA7AE> <20><><EFBFBD>楤<EFBFBD><E6A5A4> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
; 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
|
||
.getParameterNum:
|
||
RRCA
|
||
RRC B
|
||
JR NC,.getParameterNum
|
||
RLCA
|
||
OR A
|
||
jr Z,.printParameter ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD> <20>뢮<EFBFBD><EBA2AE><EFBFBD>?
|
||
|
||
ld c,a
|
||
xor a
|
||
ld b,a
|
||
add hl,bc ; <20><>室<EFBFBD><E5AEA4> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD>
|
||
.printParameter:
|
||
ld a,(hl)
|
||
jp POSTMSG
|
||
ENDIF
|
||
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^]
|
||
|
||
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HL
|
||
G_VALUE:
|
||
PUSH BC
|
||
LD A,C
|
||
CALL READCMS
|
||
POP BC
|
||
AND B
|
||
.loop: RRCA
|
||
RRC B
|
||
JR NC,.loop
|
||
RLCA
|
||
RET
|
||
|
||
; [x] <20>⮡ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤠 <20><> <20><><EFBFBD><EFBFBD>
|
||
READCMS:
|
||
LD D,high CMOSARE
|
||
LD E,A
|
||
CP CMOS.USED_MAX_ADDRESS+1
|
||
JR NC,.error
|
||
LD A,(DE)
|
||
RET
|
||
.error: SCF
|
||
RET
|
||
|
||
; [x] <20>⮡ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤠 <20><> <20><><EFBFBD><EFBFBD>
|
||
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
|
||
|
||
TCHEKSM:
|
||
CALL CHEKSUM
|
||
LD A,CMOS_CELL.CheckSum
|
||
CALL READCMS
|
||
CP H
|
||
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
|
||
LD A,CMOS.Cell.CheckSum
|
||
CALL WRITCMS
|
||
LD D,CMOS.USED_MIN_ADDRESS ; !HARDCODE CMOS
|
||
.loop:
|
||
LD H,high CMOSARE
|
||
LD L,D
|
||
LD A,(HL)
|
||
PUSH DE
|
||
CALL CMOS_WR
|
||
|
||
POP DE
|
||
LD A,CMOS.USED_MAX_ADDRESS+1
|
||
INC D
|
||
CP D
|
||
JR NZ,.loop
|
||
RET
|
||
|
||
SETDEFX:
|
||
LD A,#FF
|
||
LD (ERRSUM),A
|
||
CALL SETDEF
|
||
JP WRITING
|
||
|
||
SETDEF: ;!TODO <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LDIR<49><52>? <20><>ᬮ<EFBFBD><E1ACAE><EFBFBD><EFBFBD><EFBFBD>
|
||
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 ; <20><> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
LD B,0
|
||
CALL WRITCMS
|
||
|
||
LD A,CMOS_CELL.ZX_CONFIG
|
||
LD B,CMOS_CELL.ZX_CONFIG.ZX_Sprinter
|
||
CALL WRITCMS
|
||
|
||
CALL CHEKSUM
|
||
LD B,H
|
||
LD A,CMOS_CELL.CheckSum
|
||
CALL WRITCMS
|
||
RET
|
||
|
||
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[v]
|
||
; New procedure with IY reg
|
||
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
|
||
|
||
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
|
||
;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\-[^]
|
||
;
|
||
MODULE OnChangeAction
|
||
nothing:
|
||
ret
|
||
|
||
; !TODO New Feature
|
||
; !TODO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> ⨯<> API <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20>ᯫ뢠<E1AFAB><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
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
|
||
|
||
.loop: push bc
|
||
push de
|
||
CALL LP_SET_PLACE
|
||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ਡ<EFBFBD>⮢
|
||
LD E,COLORS.CGA.INK.RED
|
||
LD B,#0E
|
||
CALL LP_PRINT_ATR
|
||
|
||
pop de
|
||
inc d
|
||
pop bc
|
||
DJNZ .loop
|
||
|
||
CALL setFRAME.single
|
||
LD DE,#0C20 ;yx. y=0..1F, x=0..4F <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>孥<EFBFBD><E5ADA5> 㣫<>
|
||
LD BC,#050E ;yx. <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
CALL PBORDER
|
||
|
||
CALL KEY
|
||
xor a
|
||
ld hl,#050E
|
||
ld de,#0C20
|
||
ld ix,memBUFFER.Shared
|
||
JP WIN_RESTORE
|
||
ENDIF
|
||
|
||
setXYpos:
|
||
JP RESCREEN
|
||
|
||
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
|
||
|
||
.skipDefaultInt:
|
||
SRA A
|
||
SRA A
|
||
SRA A
|
||
SRA A ; byte %00xx0000 --> %000000xx
|
||
.set: CALL FN_SYNC
|
||
|
||
LD IX,win_descriptor.tab80x32
|
||
LD HL,#0000
|
||
LD E,1
|
||
CALL WIN_OPEN
|
||
|
||
ld a,(ITEM)
|
||
ld (ITEM_Restore),a
|
||
pop hl ; delete return adress from stack
|
||
jp SETTINGS
|
||
ENDMODULE
|
||
;
|
||
;-----------------------------------------------------------------------;
|
||
;!FIXIT <20>ਡ<EFBFBD><E0A8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
MEMTEST EQU #80
|
||
SAVERAM EQU #40
|
||
EXTBIOS EQU #20
|
||
|
||
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
|
||
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
|
||
;-----------------------------------------------------------------------;
|
||
|
||
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+EXTBIOS+SDELAY1 ;#0E - OPTIONS
|
||
DB TDL250+TRATE30 ;#0F - KEYBOARD
|
||
DB SDIDE1+SDFDD1 ;#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 TURBON+SPRIN ;#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 <20><>ᯨ<EFBFBD><E1AFA8><EFBFBD><EFBFBD> <20><><EFBFBD> <20>祩<EFBFBD><E7A5A9> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> ᬥ饭<E1ACA5><E9A5AD> <20><>⪮<EFBFBD> <20>ਢ易<E0A8A2><EFA7A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #0E <20> SETDEF
|
||
_mInfoALIGN 256,0 ; <20><>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> #XX00
|
||
CMOSARE:
|
||
DS 14
|
||
;
|
||
DB SAVERAM+EXTBIOS ;#0E - OPTIONS
|
||
DB TDL250+TRATE30 ;#0F - KEYBOARD
|
||
DB SDIDE1+ASDFDD2 ;#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 $ ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CMOSARE <20><> ࠧ<><E0A0A7><EFBFBD><EFBFBD> <20> 256 <20><><EFBFBD>⮢
|
||
;DONT MOVE !!! ADDRESS
|
||
; |