- 积分
- 213
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|

楼主 |
发表于 2005-10-18 08:34:05
|
显示全部楼层
仅找到应用菜单v2版的原码,希望有助于移植:
;#name NAM. Add New "Application" Menu v2.0
;------------------------------------------
org 0c7de00h
;;#define n2_EEP1 0eh:3A42h ; 000E:3A42 <- free_EEPROM
;;#define n2_EEP2 36h:096Ch ; 096C,096E,0970,0972
#define n2_MENUITEMNO 16
#define n2_MENU_ITEM 37h:3600h
#define n2_MENU_HANDLER 37h:3780h
#define n2_MENU_ICON 0B88DB0h
#define MenuModeFunc 0dc4aeah
#define app_ITEMNO 3
#define app_CurrItem 37h:3500h
#define app_MENUBUFF 37h:3502h
#define app_MENUHDLBUFF 37h:3580h
app_main:
mov r14, #pof(app_strings)
mov r13, #app_ITEMNO
push DPP0
mov DPP0, #pag(n2_MENU_ITEM)
mov r1, #pof(app_MENUBUFF)+18
mov r2, #(4*app_ITEMNO)+pof(app_MENUHDLBUFF)
app_loop1:
extp #pag(app_strings), #1
mov r12, [r14+]
callr n2_push01
mov r4, #seg(app_ActHandler)
mov [-r2], r4
mov r4, #ofs(app_ActHandler)
mov [-r2], r4
add r1, #36
sub r13, #1
jmpr cc_NZ, app_loop1
;add r2, #4
;mov r4, #seg(MenuModeFunc)
;mov [-r2], r4
;mov r4, #ofs(MenuModeFunc)
;mov [-r2], r4
pop DPP0
mov r13, #pof(app_MENU_HEADER)
mov r14, #pof(app_MENU_STRUCT)
callr n2_crMenu
rets
app_ActHandler:
calls getCurrMnItem
;sub r4, #1
extp #pag(app_CurrItem), #1
mov pof(app_CurrItem), r4
shl r4, #3
mov r14, #pof(n2_strings) ; stringID buffer
add r14, r4
mov r13, #n2_MENUITEMNO
push DPP0
mov DPP0, #pag(n2_MENU_ITEM)
mov r1, #pof(n2_MENU_ITEM)+18 ; MENU_ITEM buffer
mov r2, #(4*n2_MENUITEMNO+pof(n2_MENU_HANDLER)) ; MENU_HANDLER buffer
mov r15, #0
n2_001:
sub r15, #1
jmpr cc_SGT, n2_101
extp #pag(n2_Strings), #2
mov r12, [r14+] ; start stringID
mov r15, [r14+] ; number of sequences
n2_101:
callr n2_push01
mov r4, #seg(n2_ActHandler)
mov [-r2], r4
mov r4, #ofs(n2_ActHandler)
mov [-r2], r4
add r12, #1
add r1, #36
sub r13, #1
jmpr cc_NZ, n2_001
pop DPP0
mov r13, #pof(n2_MENU_HEADER)
mov r14, #pof(n2_MENU_STRUCT)
callr n2_crMenu
rets
n2_push01:
mov r4, #0547h
mov [-r1], r4
mov r4, #6h
mov [-r1], r4
mov r4, #0h
mov [-r1], r4
mov [-r1], r4
mov [-r1], r4
mov [-r1], r12
mov [-r1], r12
mov r4, #02EBh
mov [-r1], r4
mov r4, #3C22h
mov [-r1], r4
ret
n2_crMenu:
mov r4, #pag(n2_MENU_HEADER)
mov r12, #0
mov r3, #8
n2_003:
mov [-r0], r12
sub r3, #1
jmpr cc_NZ, n2_003
mov [-r0], r4
mov [-r0], r13
mov [-r0], r4
mov [-r0], r14
mov r13, #0
mov r14, #0
calls createMenu02
add r0, #18h
ret
n2_ItemHandler:
mov r11, #2
mov r2, r14
callr n2_getData
and r2, r1
jmpr cc_Z, n2_set
mov r11, #1
n2_set:
mov [-r0], r11
calls setMenuItemIcon
add r0, #2
rets
n2_getData:
mov r4, #pof(n2_EEP1)
mov r5, #pag(n2_EEP1)
mov r1, #1
shl r1, r2
extp #pag(app_CurrItem), #1
mov r3, pof(app_CurrItem)
jmpr cc_Z, n2gd_001
mov r5, #pag(n2_EEP2)
mov r4, #pof(n2_EEP2)-2
add r4, r3
add r4, r3
n2gd_001:
extp r5, #1
mov r2, [r4]
ret
n2_ActHandler:
mov [-r0], r12
mov [-r0], r13
calls getCurrMnItem
mov r2, r4
callr n2_getData
xor r2, r1
extp r5, #1
mov [r4], r2
mov r13, [r0+]
mov r12, [r0+]
jmps refreshMenuItem
org 0c7e580h
app_MENU_HEADER:
dw 0,0,65h,0Ch ; always like this?
dw pof(n2_MENU_ICON),2e2h ; menu_icons_addr
dw 89dh ; menu_header_text
dw 7fffh ; end_of_data
app_MENU_STRUCT:
dw 0,0,0,0,0,0,0,0 ; handler_info
dw 3c06h,2ebh,3bfch,2ebh,81h,0 ; always like this?
dw 0,0 ; handler_info
dw pof(app_MENUBUFF), pag(app_MENUBUFF) ; menu_items_addr
dw pof(app_MENUHDLBUFF), pag(app_MENUHDLBUFF) ; menu_handler_addr
dw app_ITEMNO ; number_of_menu_item
n2_MENU_HEADER:
dw 0,0,65h,0Ch ; always like this?
dw pof(n2_MENU_ICON),2e2h ; menu_icons_addr
dw 89dh ; menu_header_text
dw 7fffh ; end_of_data
n2_MENU_STRUCT:
dw 0,0,0,0,0,0,0,0 ; handler_info
dw 3c06h,2ebh,3bfch,2ebh,81h,0 ; always like this?
dw ofs(n2_ItemHandler),seg(n2_ItemHandler) ; handler_info
dw pof(n2_MENU_ITEM), pag(n2_MENU_ITEM) ; menu_items_addr
dw pof(n2_MENU_HANDLER), pag(n2_MENU_HANDLER) ; menu_handler_addr
dw n2_MENUITEMNO ; number_of_menu_item
app_strings:
dw 1feh, 200h, 202h, 204h, 206h, 207h
n2_Strings:
dw 4a8h, 12, 8c4h, 4
dw 8c8h, 8, 8deh, 8
dw 8e6h, 4, 8eah, 12 |
|