爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
楼主: Xinshou
收起左侧

移植“新的应用程序菜单项”补丁

[复制链接]
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

发表于 2005-10-18 08:39:26 | 显示全部楼层
祝成功~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-18 08:56:53 | 显示全部楼层
反汇编出的应用菜单v3a版的原码:
27DE00: E6 FE F4 25 :         mov        r14, #25F4h
27DE04: E0 4D       :         mov        r13, #4
27DE06: EC 00       :         push        DPP0
27DE08: E6 00 37 00 :         mov        DPP0, #37h
27DE0C: E6 F1 14 35 :         mov        r1, #3514h
27DE10: E6 F2 90 35 :         mov        r2, #3590h
27DE14: D7 40 1F 03 : loc_27DE14:
27DE14: D7 40 1F 03 :         extp        #31Fh, #1
27DE18: 98 CE       :         mov        r12, [r14+]
27DE1A: BB 46       :         callr        loc_27DEA8
27DE1C: E6 F4 C7 00 :         mov        r4, #0C7h
27DE20: 88 42       :         mov        [-r2], r4
27DE22: E6 F4 4C DE :         mov        r4, #0DE4Ch
27DE26: 88 42       :         mov        [-r2], r4
27DE28: 06 F1 24 00 :         add        r1, #24h
27DE2C: 28 D1       :         sub        r13, #1
27DE2E: 3D F2       :         jmpr        cc_NZ, loc_27DE14
27DE30: 08 24       :         add        r2, #4
27DE32: E6 F4 DC 00 :         mov        r4, #0DCh
27DE36: 88 42       :         mov        [-r2], r4
27DE38: E6 F4 EA 4A :         mov        r4, #4AEAh
27DE3C: 88 42       :         mov        [-r2], r4
27DE3E: FC 00       :         pop        DPP0
27DE40: E6 FD 80 25 :         mov        r13, #2580h
27DE44: E6 FE 90 25 :         mov        r14, #2590h
27DE48: BB 41       :         callr        loc_27DECC
27DE4A: DB 00       :         rets
;------------------------------------------------------------
27DE4C: DA E7 AE 61 :         calls        0E7h, loc_E761AE
27DE50: 28 41       :         sub        r4, #1
27DE52: D7 40 37 00 :         extp        #37h, #1
27DE56: F6 F4 00 35 :         mov        0DF500h, r4        ; (0037:3500)
27DE5A: 5C 34       :         shl        r4, #3
27DE5C: E6 FE 00 26 :         mov        r14, #2600h
27DE60: 00 E4       :         add        r14, r4
27DE62: E6 FD 10 00 :         mov        r13, #10h
27DE66: EC 00       :         push        DPP0
27DE68: E6 00 37 00 :         mov        DPP0, #37h
27DE6C: E6 F1 12 36 :         mov        r1, #3612h
27DE70: E6 F2 C0 37 :         mov        r2, #37C0h
27DE74: E0 0F       :         mov        r15, #0
27DE76: 28 F1       : loc_27DE76:
27DE76: 28 F1       :         sub        r15, #1
27DE78: AD 04       :         jmpr        cc_SGT, loc_27DE82
27DE7A: D7 50 1F 03 :         extp        #31Fh, #2
27DE7E: 98 CE       :         mov        r12, [r14+]
27DE80: 98 FE       :         mov        r15, [r14+]
27DE82: BB 12       : loc_27DE82:
27DE82: BB 12       :         callr        loc_27DEA8
27DE84: E6 F4 C7 00 :         mov        r4, #0C7h
27DE88: 88 42       :         mov        [-r2], r4
27DE8A: E6 F4 2C DF :         mov        r4, #0DF2Ch
27DE8E: 88 42       :         mov        [-r2], r4
27DE90: 08 C1       :         add        r12, #1
27DE92: 06 F1 24 00 :         add        r1, #24h
27DE96: 28 D1       :         sub        r13, #1
27DE98: 3D EE       :         jmpr        cc_NZ, loc_27DE76
27DE9A: FC 00       :         pop        DPP0
27DE9C: E6 FD BA 25 :         mov        r13, #25BAh
27DEA0: E6 FE CA 25 :         mov        r14, #25CAh
27DEA4: BB 13       :         callr        loc_27DECC
27DEA6: DB 00       :         rets
;------------------------------------------------------------
27DEA8: E6 F4 47 05 :         mov        r4, #547h
27DEAC: 88 41       :         mov        [-r1], r4
27DEAE: E0 64       :         mov        r4, #6
27DEB0: 88 41       :         mov        [-r1], r4
27DEB2: E0 04       :         mov        r4, #0
27DEB4: 88 41       :         mov        [-r1], r4
27DEB6: 88 41       :         mov        [-r1], r4
27DEB8: 88 41       :         mov        [-r1], r4
27DEBA: 88 C1       :         mov        [-r1], r12
27DEBC: 88 C1       :         mov        [-r1], r12
27DEBE: E6 F4 EB 02 :         mov        r4, #2EBh
27DEC2: 88 41       :         mov        [-r1], r4
27DEC4: E6 F4 22 3C :         mov        r4, #3C22h
27DEC8: 88 41       :         mov        [-r1], r4
27DECA: CB 00       :         ret
;------------------------------------------------------------
27DECC: E6 F4 1F 03 :         mov        r4, #31Fh
27DED0: E0 0C       :         mov        r12, #0
27DED2: E0 83       :         mov        r3, #8
27DED4: 88 C0       : loc_27DED4:
27DED4: 88 C0       :         mov        [-r0], r12
27DED6: 28 31       :         sub        r3, #1
27DED8: 3D FD       :         jmpr        cc_NZ, loc_27DED4
27DEDA: 88 40       :         mov        [-r0], r4
27DEDC: 88 D0       :         mov        [-r0], r13
27DEDE: 88 40       :         mov        [-r0], r4
27DEE0: 88 E0       :         mov        [-r0], r14
27DEE2: E0 0D       :         mov        r13, #0
27DEE4: E0 0E       :         mov        r14, #0
27DEE6: DA E6 90 EC :         calls        0E6h, loc_E6EC90
27DEEA: 06 F0 18 00 :         add        r0, #18h
27DEEE: CB 00       :         ret
;------------------------------------------------------------
27DEF0: E0 2B       :         mov        r11, #2
27DEF2: F0 2E       :         mov        r2, r14
27DEF4: BB 08       :         callr        loc_27DF06
27DEF6: 60 21       :         and        r2, r1
27DEF8: 2D 01       :         jmpr        cc_Z, loc_27DEFC
27DEFA: E0 1B       :         mov        r11, #1
27DEFC: 88 B0       : loc_27DEFC:
27DEFC: 88 B0       :         mov        [-r0], r11
27DEFE: DA E7 48 60 :         calls        0E7h, loc_E76048
27DF02: 08 02       :         add        r0, #2
27DF04: DB 00       :         rets
;------------------------------------------------------------
27DF06: E6 F4 42 3A : loc_27DF06:
27DF06: E6 F4 42 3A :         mov        r4, #3A42h
27DF0A: E0 E5       :         mov        r5, #0Eh
27DF0C: E0 11       :         mov        r1, #1
27DF0E: 4C 12       :         shl        r1, r2
27DF10: D7 40 37 00 :         extp        #37h, #1
27DF14: F2 F3 00 35 :         mov        r3, 0DF500h        ; (0037:3500)
27DF18: 2D 06       :         jmpr        cc_Z, loc_27DF26
27DF1A: E6 F5 36 00 :         mov        r5, #36h
27DF1E: E6 F4 6A 09 :         mov        r4, #96Ah
27DF22: 00 43       :         add        r4, r3
27DF24: 00 43       :         add        r4, r3
27DF26: DC 45       : loc_27DF26:
27DF26: DC 45       :         extp        r5, #1
27DF28: A8 24       :         mov        r2, [r4]
27DF2A: CB 00       :         ret
;------------------------------------------------------------
27DF2C: 88 C0       :         mov        [-r0], r12
27DF2E: 88 D0       :         mov        [-r0], r13
27DF30: DA E7 AE 61 :         calls        0E7h, loc_E761AE
27DF34: F0 24       :         mov        r2, r4
27DF36: BB E7       :         callr        loc_27DF06
27DF38: 50 21       :         xor        r2, r1
27DF3A: DC 45       :         extp        r5, #1
27DF3C: B8 24       :         mov        [r4], r2
27DF3E: 98 D0       :         mov        r13, [r0+]
27DF40: 98 C0       :         mov        r12, [r0+]
27DF42: FA E7 24 4A :         jmps        0E7h, loc_E74A24
;------------------------------------------------------------
27E580: 00 00       :         add        r0, r0
27E582: 00 00       :         add        r0, r0
27E584: 65 00 0C 00 :         andb        0Ch, DPP0
27E588: B0 0D       :         cmpd2        r13, #0
27E58A: E2 02 9D 08 :         pcall        DPP2, 89Dh
27E58E: FF 7F       :         bset        mem_FEFE.15
27E590: 00 00       :         add        r0, r0
27E592: 00 00       :         add        r0, r0
27E594: 00 00       :         add        r0, r0
27E596: 00 00       :         add        r0, r0
27E598: 00 00       :         add        r0, r0
27E59A: 00 00       :         add        r0, r0
27E59C: 00 00       :         add        r0, r0
27E59E: 00 00       :         add        r0, r0
27E5A0: 06 3C EB 02 :         add        CC28, #2EBh
27E5A4: FC 3B       :         pop        CC27
27E5A6: EB 02       :         retp        DPP2
;------------------------------------------------------------
27E5A8: 81 00       :         neg        r0
27E5AA: 00 00       :         add        r0, r0
27E5AC: 00 00       :         add        r0, r0
27E5AE: 00 00       :         add        r0, r0
27E5B0: 02 35 37 00 :         add        CC21, 37h
27E5B4: 80 35       :         cmpi1        r5, #3
27E5B6: 37 00 04 00 :         subcb        DPP0, #4
27E5BA: 00 00       :         add        r0, r0
27E5BC: 00 00       :         add        r0, r0
27E5BE: 65 00 0C 00 :         andb        0Ch, DPP0
27E5C2: B0 0D       :         cmpd2        r13, #0
27E5C4: E2 02 9D 08 :         pcall        DPP2, 89Dh
27E5C8: FF 7F       :         bset        mem_FEFE.15
27E5CA: 00 00       :         add        r0, r0
27E5CC: 00 00       :         add        r0, r0
27E5CE: 00 00       :         add        r0, r0
27E5D0: 00 00       :         add        r0, r0
27E5D2: 00 00       :         add        r0, r0
27E5D4: 00 00       :         add        r0, r0
27E5D6: 00 00       :         add        r0, r0
27E5D8: 00 00       :         add        r0, r0
27E5DA: 06 3C EB 02 :         add        CC28, #2EBh
27E5DE: FC 3B       :         pop        CC27
27E5E0: EB 02       :         retp        DPP2
;------------------------------------------------------------
27E5E2: 81 00       :         neg        r0
27E5E4: 00 00       :         add        r0, r0
27E5E6: F0 DE       :         mov        r13, r14
27E5EA: 00 36       :         add        r3, r6
27E5EC: 37 00 80 37 :         subcb        DPP0, #80h
27E5F0: 37 00 10 00 :         subcb        DPP0, #10h
27E5F4: A1 01       :         negb        r0
27E5F6: FE 01       :         bclr        DPP1.15
27E5F8: 00 02       :         add        r0, r2
27E5FA: 02 02 04 02 :         add        DPP2, 204h
27E5FE: 06 02 A8 04 :         add        DPP2, #4A8h
27E602: 0C 00       :         rol        r0, r0
27E604: C4 08 04 00 :         mov        [r8+#4], r0
27E608: C8 08       :         mov        [r0], [r8]
27E60A: 08 00       :         add        r0, #0
27E60C: DE 08       :         bclr        mem_FE10.13
27E60E: 08 00       :         add        r0, #0
27E610: E6 08 04 00 :         mov        mem_FE10, #4
27E614: EA 08 0C 00 :         jmpa        cc_UC, loc_27000C
;------------------------------------------------------------
回复 支持 反对

使用道具 举报

发表于 2005-10-18 09:06:12 | 显示全部楼层
偶来顶一个  重量级补丁啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-18 17:26:26 | 显示全部楼层
up................
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-20 10:15:55 | 显示全部楼层
ding............
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-7-15 14:45

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表