📄 bios.h
字号:
; ***************************************************************************
; * Project : Electronic Dictionary *
; * Date : 2003.9 *
; * File Name : BIOS.H *
; ***************************************************************************
argchk off
WriteByte_X MACRO
if biosbank=BANKNO
JSR WriteFlashByte+30
ELSE
jsr LJSR
DW biosbank
DW WriteFlashByte+29
ENDM
; if updatesc_bank=BANKNO
; jsr WriteFlashByte_Bug
; else
; jsr LJSR
; dw updatesc_bank
; dw WriteFlashByte_Bug-1
; endif
; ENDM
LReadSecretCodeToBuff MACRO
if toolbank=BANKNO
jsr ReadSecretCodeToBuff ;;zl.把FLASH里的密码读进RAM的FDATA里 define in tool.asm
else
jsr LJSR
dw ToolBank ;;程式bank define in data.def zl.
dw ReadSecretCodeToBuff-1
endif
ENDM
;[M]-----------------------------------------------[M]
; Wait timer.
;
; Function : 等待设定的 Timer时间到达.
; Description : 下了此Macro後,程式将强制停止,直到
; Timer 的时间到达.
; 下此Macro时一定要先设定Timer的时间,
; 否则此Macro将等不到Timer到达时间
; 而形成无穷回圈.
; Input argument : 无.
; Output argument : 无.
;
;[M]-----------------------------------------------[M]
WaitTimer macro
db 05Fh ; bbr5 op code.
db <EFlag ; RAM.
db 0fdh ; Branch location.
rmb5 <EFlag ; Clear timer event.
endm
;[M]-----------------------------------------------[M]
; Adjust OSC.
; Function : 根据本机状况调整主振状况.
; Description :
; Input argument : 无.
; Output argument : 无.
;[M]-----------------------------------------------[M]
LAdjOSC macro
if BiosBank=BankNo
jsr AdjOSC
else
jsr LJSR
dw BiosBank ; Banck No.
dw AdjOSC-1
endif
endm
;[M]-----------------------------------------------[M]
; Set timer
; Function : Set interval time.
; Description :
; Input argument : x : 设定Timer的间隔时间.
; interval time = X * 7.8125 mS.
; if X==0 then stop this timer.
; Output argument : 无.
;[M]-----------------------------------------------[M]
LSetTimer macro _ntime
ifma 1
ldx #_ntime
endif
if BiosBank=BankNo
jsr SetTimer
else
jsr LJSR
dw BiosBank ; Banck No.
dw SetTimer-1
endif
endm
;[M]-----------------------------------------------[M]
; (x)++ , if (x) == 60 then (x)=0
;
; Function : (x)++
; Description : x所指的RAM(Zero page)加一(十进制),
; 如果(x) == 60 则 (x)=0
; Input argument : x
; Output argument : if ++(x) == 60 then
; Zero flag=1
; else
; Zero flag=0
;
; x++
;[M]-----------------------------------------------[M]
LAdc60 macro
if BiosBank=BankNo
jsr Adc60
else
jsr LJSR
dw BiosBank ; Banck No.
dw Adc60-1
endif
endm
;[M]-----------------------------------------------[M]
; (0,x) ++ , if ==24 then (0,x)=0
; Function : (x)++
; Description : x所指的RAM(Zero page)加一(十进制),
; 如果(x) == 24 则 (x)=0
; Input argument : x
; Output argument : if ++(x) == 24 then
; Zero flag=1
; else
; Zero flag=0
;[M]-----------------------------------------------[M]
LAdc24 macro
if BiosBank=BankNo
jsr Adc24
else
jsr LJSR
dw BiosBank ; Banck No.
dw Adc24-1
endif
endm
;[M]-----------------------------------------------[M]
; Date ++.
;
; Function : (x)++ [Day]
; Description : x所指的RAM(Zero page)加一(十进制),
; 如果(x)超过[当月日数]则(x)=0
; Input argument : x : Index to date buffer in zero page.(Day)
; Output argument : if ++(x) == (当月日数) then
; Zero flag=1
; else
; Zero flag=0
;
; x++
;[M]-----------------------------------------------[M]
LIncDate macro
if BiosBank=BankNo
jsr IncDate
else
jsr LJSR
dw BiosBank ; Banck No.
dw IncDate-1
endif
endm
;[M]-----------------------------------------------[M]
; Month ++.
;
; Function : (x)++ [Month]
; Description : x所指的RAM(Zero page)加一(十进制),
; 如果(x) == 12 则 (x)=0
; Input argument : x : Index to date buffer in zero page.[Month]
; Output argument : if ++(x) == 12 then
; Zero flag=1
; else
; Zero flag=0
;
; x++
;[M]-----------------------------------------------[M]
LIncMonth macro
if BiosBank=BankNo
jsr IncMonth
else
jsr LJSR
dw BiosBank ; Banck No.
dw IncMonth-1
endif
endm
;[M]-----------------------------------------------[M]
; (x) ++.
;
; Function : (x) ++
; Description : x所指的RAM(Zero page)加一(十进制),
; 如果(x) == (a) 则 (x)=0
; Input argument : x : Index to date buffer in zero page.
; a : 目的值.
; Output argument : if (x)++ == (a) then
; Zero flag=1
; else
; Zero flag=0
;
; x++
;[M]-----------------------------------------------[M]
LNxAdc macro
if BiosBank=BankNo
jsr NxAdc
else
jsr LJSR
dw BiosBank ; Banck No.
dw NxAdc-1
endif
endm
;[M]-----------------------------------------------[M]
;
; Function : (x) += (Carry flag)
; Description : (x) += (Carry flag)
; Input argument : x : Index to date buffer in zero page.
; Output argument : x++
;
;[M]-----------------------------------------------[M]
LNxAdc1 macro
if BiosBank=BankNo
jsr NxAdc1
else
jsr LJSR
dw BiosBank ; Banck No.
dw NxAdc1-1
endif
endm
;[M]-----------------------------------------------[M]
; INS ++.
; Function : (INS+1 , INS)++
; Description : (INS+1 , INS)++
; Input argument : INS+1 , INS
; Output argument :
;
;[M]-----------------------------------------------[M]
LNxINS macro
if BiosBank=BankNo
jsr NxIns
else
jsr LJSR
dw BiosBank ; Banck No.
dw NxIns-1
endif
endm
;[M]-----------------------------------------------[M]
; Seed of random increment.
; Function : (Seed+1 , Seed) increment (random)
; Description : Seed+1 , Seed 为一组乱数值,
; 执行本Subroutine後将会产生下一组乱数值,
; Input argument : Seed+1 , Seed.
; Output argument : 无.
;[M]-----------------------------------------------[M]
LNxSeed macro
if BiosBank=BankNo
jsr NxSeed
else
jsr LJSR
dw BiosBank ; Banck No.
dw NxSeed-1
endif
endm
;[M]-----------------------------------------------[M]
; Set mode.
; Function : 强制设定整个系统的Mode.
; Description : 正常状况下Mode是由系统自动调配Mode,
; 此Macro则由提供模组强制设定整个系统的Mode.
; Input argument : a : Mode 值.
; Mode 值请叁阅 Data.def 中 MODE 定义说明.
; Output argument : 无.
;[M]-----------------------------------------------[M]
LSetMode macro
if BiosBank=BankNo
jsr SetMode
else
jsr LJSR
dw BiosBank ; Banck No.
dw SetMode-1
endif
endm
;[M]-----------------------------------------------[M]
; Entry function menu select mode.
;
; Function : 到总目录选单.
; Description :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -