📄 main_ext.asm
字号:
; 函数功能: 闹铃检测
; 输入参数: SysF.@alarmon_bit
; 输出参数:
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
@@Alarm_Timer_Chk:
R0 = SysF
R1 = BTST.@alarmon_bit R0
JNZ @F
RETFF
@@:
R0 = BCLR.@alarmon_bit R0
R0 = BCLR.@votage_event R0 //CLR BATTLE ALARM FLAG
SysF = R0
;启动闹铃程序
CALLFF @@Play_Alarm_Sound
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能: 响应闹铃
; 输入参数:
; 输出参数:
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
@@Play_Alarm_Sound:
CTASK_RUN @@P_Alarm_EVENT,@@Alarm_timer_Chk_Ret,5,0,0,0
RETFF
@@Alarm_timer_Chk_Ret:
X0 = @SysRambk
RAMBK = X0
GUI_Cls
R0 = eflag
R0 = BSET.bReDraw R0
eflag = R0
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能: 放音/WAIT检测
; 输入参数: EFLAG/PF..CJP1/CJP2/CJPW4...
; 输出参数: PF
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
STPMD EQU 2
Cpu_WAIT_Mode MACRO
DISGIE
NOP
R0 = PCR
R0 =BCLR.STPMD R0
PCR = R0
NOP
NOP
NOP
GIE
ENDM
@@PLAYEND_WAITCHK:
R0=EFLAG
R0=R0 AND R0
JNZ @@PLAYEND_WAITCHKRt
R0=PF
R0=R0 AND R0
JNZ @@PLAYEND_CHKFLAG
;CJPW4 @@PLAYEND_WAITCHKST
;CJP1 @@PLAYEND_WAITCHKST
JMP @@SYSMODE_WAIT
@@PLAYEND_CHKFLAG:
R0 = auto_power_set ;重置关机时间
auto_power_timer = R0
R0=PF
R1=BTST.@@play_w4_flag R0
JZ @F
CJPW4 @@PLAYEND_WAITCHKRt
R0=PF
R0=BCLR.@@play_w4_flag R0
PF=R0
@@:
R0=R0 AND R0
JZ @F
CJP1 @@PLAYEND_WAITCHKRt
R0=0
PF=R0
@@:
@@PLAYEND_WAITCHKST:
PLAY_TAIL_RE
JMP @@SYSMODE_WAIT
@@PLAYEND_WAITCHKRt:
RETFF
@@SYSMODE_WAIT:
;R0 = P2_INIT
;P2 = R0
;;ADD/MOD EBCR(LSB) 04-11-16 9:47
;R0=EBCR
;PUSH R0
;R0=@Data_Mode_8bit ;SW TO 8BITS MODE
;EBCR=R0
;NOP
;Cpu_WAIT_Mode
;NOP
;POP R0
;EBCR=R0
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能: 热键检测
; 输入参数: keyno
; 输出参数:
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
HtKyPre EQU 1
@@Hot_Key_Check:
R0 = eflag
R1 = BTST.bKdown R0
JNZ @F
RETFF
@@:
R0 = SysF1
R1 = BTST.@votage_event R0
JZ @f
retff
@@:
IF !HtKyPre
CALLFF HotKyPreChk
R1 = R1 AND R1
JZ @F
RETFF
@@:
ENDIF
R0 = sysF1
R1 = BTST.@HotSwitch R0 ;0:Host,1:minor
JNZ @F
X0 = Hot_Key_Table$h
Ix1bkram = x0
X0 = Hot_Key_Table$l
Ix1 = x0
callff @@Keydeal_function
RETFF
@@:
X0 = Hot_Key_Table2$h
Ix1bkram = x0
X0 = Hot_Key_Table2$l
Ix1 = x0
callff @@Keydeal_function
RETFF
Hot_Key_Table:
DW k_ec, Hot_Key_Ec$l,Hot_Key_Ec$h
DW k_ce, Hot_Key_Ce$l,Hot_Key_Ce$h
DW k_rem, Hot_Key_RemWd$l,Hot_Key_RemWd$h
DW k_lstn, Hot_Key_Lstn$l,Hot_Key_Lstn$h
DW k_note, Hot_Key_Note$l,Hot_Key_Note$h
DW k_time, Hot_Key_Tim$l,Hot_Key_Tim$h
DW k_cal, Hot_Key_Cal$l,Hot_Key_Cal$h
DW k_menu, Hot_Key_Menu$l,Hot_Key_Menu$h
;DW k_Rem, SYS_TestProgram$L,SYS_TestProgram$h
DW k_null
Hot_Key_Table2:
DW k_ec, Hot_Key_Ec$l,Hot_Key_Ec$h
DW k_ce, Hot_Key_Ce$l,Hot_Key_Ce$h
DW k_rem, Hot_Key_RemWd$l,Hot_Key_RemWd$h
DW k_lstn, Hot_Key_Lstn$l,Hot_Key_Lstn$h
DW k_note, Hot_Key_Note$l,Hot_Key_Note$h
DW k_time, Hot_Key_Tim$l,Hot_Key_Tim$h
DW k_cal, Hot_Key_Cal$l,Hot_Key_Cal$h
DW k_menu, Hot_Key_Menu$l,Hot_Key_Menu$h
;DW k_Rem, SYS_TestProgram$L,SYS_TestProgram$h
DW k_null
SYS_TestProgram:
CALLFF SYS_TestProEntr
RETFF
SYS_TestProEntr:
CTASK_RUN @@SysTstEVENT,SYS_TestProgram_Ret,16,0,0,0
RETFF
SYS_TestProgram_Ret:
X0 = @SysRambk
RAMBK = X0
GUI_Cls
R0 = eflag
R0 = BSET.bReDraw R0
eflag = R0
RETFF
Hot_Key_Menu:
CALLFF init_key_board
R0 = k_null
keyno = R0
R0 = eflag
R0 = BCLR.bKdown R0
eflag = R0
R0=key_flag
R0=BCLR.@kSysShCut R0
key_flag=R0
R0 = StudyCnt
JMP @@Hot_Key_Check_Ret_
Hot_Key_Ec:
CALLFF init_key_board
R0 = 1
key_buf = R0
R0 = 9 //'1'
key_buf+2 = R0
R0 = MenuDicCnt
JMP @@Hot_Key_Check_Ret
Hot_Key_Ce:
CALLFF init_key_board
R0 = 1
key_buf = R0
R0 = 25 //'2'
key_buf+2 = R0
R0 = MenuDicCnt
JMP @@Hot_Key_Check_Ret
Hot_Key_Note:
CALLFF init_key_board
R0 = 1
key_buf = R0
R0 = 9 //'1'
key_buf+2 = R0
R0 = NoteBookCnt
JMP @@Hot_Key_Check_Ret
Hot_Key_Cal:
CALLFF init_key_board
R0 = 1
key_buf = R0
R0 = 25 //'2'
key_buf+2 = R0
R0 = CaculatorCnt
JMP @@Hot_Key_Check_Ret
Hot_Key_Tim:
CALLFF init_key_board
R0 = 1
key_buf = R0
R0 = 17 //'3'
key_buf+2 = R0
R0 = TimeCnt
JMP @@Hot_Key_Check_Ret
Hot_Key_Lstn:
CALLFF init_key_board
R0 = 1
key_buf = R0
R0 = 32 //'4'
key_buf+2 = R0
R0 = StudyCnt
JMP @@Hot_Key_Check_Ret
Hot_Key_RemWd:
CALLFF init_key_board
R0 = 2
key_buf = R0
R0 = 9 //'1'
key_buf+2 = R0
R0 = 17 //'3'
key_buf+3 = R0
R0 = StudyCnt
JMP @@Hot_Key_Check_Ret
@@Hot_Key_Check_Ret:
R1=key_flag //SET Shortcut Entry
R1=BSET.@kSysShCut R1
key_flag=R1
@@Hot_Key_Check_Ret_:
PUSH R0
play_tail_RE
R0=0
PF=R0
CLRCURSOR
R0=SysF1
R0=BTOG.@HotSwitch R0
SysF1=R0
R1 = SysF
R1 = BCLR.bit_help R1
SysF = R1
POP R0
CALLFF @@Create_Root_Task
CALLFF _TASK_RunTask
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能:
; 输入参数:
; 输出参数:
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
HotKyPreChk:
IF HtKyPre
R1=HtKy_SAVE
R1=X0 XOR R1
JZ HotKyPreChkRt
HtKy_SAVE=X0 //SAVE HOTKEY NO
R0=SysF1
R0=BCLR.@HotSwitch R0
SysF1=R0
HotKyPreChkRt:
RETFF
ELSE
R0=KEYNO
R1=HtKy_SAVE
R1=R0 XOR R1
JZ HotKyPreChkRt
R1=k_ec
R1=R0 XOR R1
JZ HotKyPreChk_RESET
R1=k_cc
R1=R0 XOR R1
JZ HotKyPreChk_RESET
R1=k_exam
R1=R0 XOR R1
JZ HotKyPreChk_RESET
R1=k_book
R1=R0 XOR R1
JZ HotKyPreChk_RESET
R1=k_note
R1=R0 XOR R1
JZ HotKyPreChk_RESET
R1=k_cal
R1=R0 XOR R1
JZ HotKyPreChk_RESET
R1=k_menu
R1=R0 XOR R1
JZ HotKyPreChk_RESET
R1=k_rem
R1=R0 XOR R1
JZ HotKyPreChk_RESET
JMP HotKyPreChkRt
HotKyPreChk_RESET:
HtKy_SAVE=R0 //SAVE HOTKEY NO
R0=SysF1
R0=BCLR.@HotSwitch R0
SysF1=R0
HotKyPreChkRt:
RETFF
ENDIF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能:
; 输入参数:
; 输出参数:
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
@@Init_All_FunCtion:
;---------初始化LCD------------
sofeware_delay_ 50 ;延时200ms
CALLFF init_key_board ;初始化键盘
callff _LCDOff ;LCD Off
sofeware_delay_ 25 ;延时200ms
callff _init_lcd_ctl ;LCD初始化
callff _LCDOn ;LCD ON
PLAY_TAIL_RE
;;;TEST
callff _set_lcd_
GUI_CLR_ALL_ICON
callff _set_all_icon
GUI_CLR_ALL_ICON
GUI_Cls
;;;TEST END
;---------初始化系统设置--------
R0 = 0X0C41 ;;初始化系统设置
sys_set_flag = R0
R0 = 0x0002 ;;关机时间设定
PowerOffSetFlag = R0
R0=0X030 ;6TH OPEN-PICTURE,10th OPEN-MUSIC
PowerOnSetFlag=R0
R0=2
bfont=R0
CALLFF _set_font_arg ;设置字体
R0=@Auto_Off_Timer_Mid
auto_power_set=R0
auto_power_timer=R0
R0=SysF
R0=BSET.@alarmmode_bit R0
SysF=R0
;;;ADD Start
;---------学习设置初始化--------
R0=1
StudyWhichGroup=R0 ;设置组别
R0=0011000010000000b ;初中,每组单词30,放音,自动,浏览时间3s
StudyWordType=R0
R0=0x1000 ;SET 汇率换算默认值
exchange_0_rate=R0
;;;ADD End
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能: 用户初始化
; 输入参数:
; 输出参数:
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
@@UserFunInit:
callff SchedUpdateChk
@@UserAppInit:
sofeware_delay_ 25 ;延时200ms
CALLFF init_key_board ;初始化键盘
CALLFF _LCDOFF ;LCD Off
sofeware_delay_ 5 ;延时40ms
CALLFF _init_lcd_ctl ;LCD初始化
CALLFF _LCDON ;LCD ON
CALLFF SysLcdConstAdjust
CALLFF SysVolumeSet ;SET VOLUME
CALLFF W_SetPassWordIcon ;SET PASS ICON
R0=2
bfont=R0
CALLFF _set_font_arg ;设置字体
R0=auto_power_set
auto_power_timer = R0
;SET SYS INIT FLAG BIT
R0=SysF ;;CLR HELP DISABLE FLAG
R0=BCLR.bit_help R0
R0=BCLR.bit_poweron R0 ;CLR AUTO SHUT FLAG
SysF=R0
R0=sysf1
R0=BCLR.@votage_event R0 ;luqiang clear voltage event run flag
SysF1= R0
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能: 用户启动界面初始化设置
; 输入参数: sys_set_flag
; 输出参数: R0:INIT MENU INDEX
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
SUI_Init:
CALLFF SysVolumeSet ;RESET VOLUME
CALLFF init_key_board
R0=sys_set_flag
R1=0x0c
R0=R0 AND R1
JZ @@SUI_MainMenu
R1=0x04
R1=R0-R1
JZ @@SUI_NativeClock ;本地时间
R1=0x0c
R1=R0-R1
JZ @@SUI_MainMenu ;总目录
@@SUI_ECDICT: ;英汉词典
R0 = 1 ;1
key_buf = R0
R0 = 9 //'1'
key_buf+2 = R0
R0=key_flag
R0=BSET.@kSysShCut R0
key_flag=R0
R0 = MenuDicCnt //dictionary Menu
JMP SUI_Init_EXIT
@@SUI_NativeClock:
R0 = 1 ;1
key_buf = R0
R0 = 17 //'3'
key_buf+2 = R0
R0=key_flag
R0=BSET.@kSysShCut R0
key_flag=R0
R0 = TimeCnt //CLOCK Menu
JMP SUI_Init_EXIT
@@SUI_MainMenu:
R0=key_flag
R0=BCLR.@kSysShCut R0
key_flag=R0
R0 = 0 //INIT MENU
SUI_Init_EXIT:
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能: 通用键值处理函数
; 输入参数: Ix1,Ix1bkram,keyno
; 输出参数: 执行对应键值程序,返回
; 占用资源:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
@@Keydeal_function:
PUSH RAMBK
X0 = @SysRambk
RAMBK = X0
X0 = keyno
POP RAMBK
R1 = EBCR
PUSH R1
R0 = @Data_Mode_16bit ;16 bit mode,0xFFFF
EBCR = R0
Y0 = 0xFF
@@:
R0 = RAM(Ix1)
R1 = R0-Y0
Jz @@Keydeal_function_ret
R0 = R0 -X0
JZ @F
R0 = Ix1
R1 = 3
R0 = R0+R1
Ix1 = R0
R0 = Ix1BkRam
R1 = 0
R0 = R0+R1+C
Ix1BkRam = R0
JMP @B
@@:
ram_ix1_to_r1
ram_ix1_to_x0
Y0 = RAM(Ix1)
POP R1
EBCR = R1
PUSH X0
PUSH Y0
RETFF
@@Keydeal_function_ret:
POP R1
EBCR = R1
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 函数功能: 延时R1毫秒函数子程序
; 输入参数: R1,延时毫秒数
; 输出参数:
; 占用资源: R0,R1
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
@Delay_XX_mSec:
R0=0x200
@@:
R0=R0-1
JFGT @B
R1 = R1-1
JFGT @Delay_XX_mSec
RETFF
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
;
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
include Menu\test.asm
include bios\SysTest.asm
include GenFun\sst\initial_flash.asm
include bios\bios.asm
include menu\menu.asm
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 通用函数库-输入法、文件管理、通用编辑、GUI接口
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
include GenFun\genfun.h
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 菜单结构-时间、网络、计算、游戏、系统设置、名片、记事、行程
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
include menu\mdir.h
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 字库
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
include GenFun\gui\font.h
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 帮助文件夹
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
include help\help.asm
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; 资料文件夹
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
MAIN_EXTDATA:
include ziliao\ziliao.asm
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; MRC data file area
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
MAIN_EXTDATA1:
include include\ins\insdata.h
include Menu\xuekedata.asm
include Menu\Audition\AuditData.asm
include Menu\game\piano\pianoData.asm
include Menu\SampleEng\SampleEngData.asm
include Menu\talkScene\TalkSceneData.asm
MAIN_EXTDATA2:
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
; dictionary data file area
;*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
include Menu\dict\include\encode.asm
include Menu\dict\include\data_tab.asm
MAIN_EXTEND:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -