爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 273|回复: 0
收起左侧

T0: llhn 资料

[复制链接]
发表于 2005-8-7 00:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
;=======================================================;
;  This file is created by rizapn <rizapn@yahoo.com>    ;
;  If this file can help you to improve your patching   ;
;  skills, then I will be very happy.                   ;
;-------------------------------------------------------;
;  No need to do some other thing, just remember me :)  ;
;  Riza Purwo Nugroho -rizapn- Jakarta, Indonesia       ;
;-------------------------------------------------------;
;    ALLAAHU AKBAR, He is the Owner of our brain ...    ;
;=======================================================;
#define IEN        PSW.11
#define NMI        TFR.15
#define P2_0       P2.0
#define P2_1       P2.1
#define P2_2       P2.2
#define P2_3       P2.3
#define P2_4       P2.4
#define P2_5       P2.5
#define P2_6       P2.6
#define P2_7       P2.7
#define P2_8       P2.8
#define P2_9       P2.9
#define P2_10      P2.10
#define P2_11      P2.11
#define P2_12      P2.12
#define P2_13      P2.13
#define P2_14      P2.14
#define P2_15      P2.15
#define DP2_0      DP2.0
#define DP2_1      DP2.1
#define DP2_2      DP2.2
#define DP2_3      DP2.3
#define DP2_4      DP2.4
#define DP2_5      DP2.5
#define DP2_6      DP2.6
#define DP2_7      DP2.7
#define DP2_8      DP2.8
#define DP2_9      DP2.9
#define DP2_10     DP2.10
#define DP2_11     DP2.11
#define DP2_12     DP2.12
#define DP2_13     DP2.13
#define DP2_14     DP2.14
#define DP2_15     DP2.15
#define P3_0       P3.0
#define P3_1       P3.1
#define P3_2       P3.2
#define P3_3       P3.3
#define P3_4       P3.4
#define P3_5       P3.5
#define P3_6       P3.6
#define P3_7       P3.7
#define P3_8       P3.8
#define P3_9       P3.9
#define P3_10      P3.10
#define P3_11      P3.11
#define P3_12      P3.12
#define P3_13      P3.13
#define P3_14      P3.14
#define P3_15      P3.15
#define DP3_0      DP3.0
#define DP3_1      DP3.1
#define DP3_2      DP3.2
#define DP3_3      DP3.3
#define DP3_4      DP3.4
#define DP3_5      DP3.5
#define DP3_6      DP3.6
#define DP3_7      DP3.7
#define DP3_8      DP3.8
#define DP3_9      DP3.9
#define DP3_10     DP3.10
#define DP3_11     DP3.11
#define DP3_12     DP3.12
#define DP3_13     DP3.13
#define DP3_14     DP3.14
#define DP3_15     DP3.15
#define P4_0       P4.0
#define P4_1       P4.1
#define P4_2       P4.2
#define P4_3       P4.3
#define P4_4       P4.4
#define P4_5       P4.5
#define P4_6       P4.6
#define P4_7       P4.7
#define DP4_0      DP4.0
#define DP4_1      DP4.1
#define DP4_2      DP4.2
#define DP4_3      DP4.3
#define DP4_4      DP4.4
#define DP4_5      DP4.5
#define DP4_6      DP4.6
#define DP4_7      DP4.7
#define P5_0       P5.0
#define P5_1       P5.1
#define P5_2       P5.2
#define P5_3       P5.3
#define P5_4       P5.4
#define P5_5       P5.5
#define P5_6       P5.6
#define P5_7       P5.7
#define P5_8       P5.8
#define P5_9       P5.9
#define P5_10      P5.10
#define P5_11      P5.11
#define P5_12      P5.12
#define P5_13      P5.13
#define P5_14      P5.14
#define P5_15      P5.15
#define P6_0       P6.0
#define P6_1       P6.1
#define P6_2       P6.2
#define P6_3       P6.3
#define P6_4       P6.4
#define P6_5       P6.5
#define P6_6       P6.6
#define P6_7       P6.7
#define P6_8       P6.8
#define P6_9       P6.9
#define P6_10      P6.10
#define P6_11      P6.11
#define P6_12      P6.12
#define P6_13      P6.13
#define P6_14      P6.14
#define P6_15      P6.15
#define DP6_0      DP6.0
#define DP6_1      DP6.1
#define DP6_2      DP6.2
#define DP6_3      DP6.3
#define DP6_4      DP6.4
#define DP6_5      DP6.5
#define DP6_6      DP6.6
#define DP6_7      DP6.7
#define DP6_8      DP6.8
#define DP6_9      DP6.9
#define DP6_10     DP6.10
#define DP6_11     DP6.11
#define DP6_12     DP6.12
#define DP6_13     DP6.13
#define DP6_14     DP6.14
#define DP6_15     DP6.15
#define P7_0       P7.0
#define P7_1       P7.1
#define P7_2       P7.2
#define P7_3       P7.3
#define P7_4       P7.4
#define P7_5       P7.5
#define P7_6       P7.6
#define P7_7       P7.7
#define DP7_0      DP7.0
#define DP7_1      DP7.1
#define DP7_2      DP7.2
#define DP7_3      DP7.3
#define DP7_4      DP7.4
#define DP7_5      DP7.5
#define DP7_6      DP7.6
#define DP7_7      DP7.7
#define P8_0       P8.0
#define P8_1       P8.1
#define P8_2       P8.2
#define P8_3       P8.3
#define P8_4       P8.4
#define P8_5       P8.5
#define P8_6       P8.6
#define P8_7       P8.7
#define DP8_0      DP8.0
#define DP8_1      DP8.1
#define DP8_2      DP8.2
#define DP8_3      DP8.3
#define DP8_4      DP8.4
#define DP8_5      DP8.5
#define DP8_6      DP8.6
#define DP8_7      DP8.7
#define ADBSY      ADCON.8
#define S0TIR      S0TIC.7
#define S0RIR      S0RIC.7
#define SSCEN      SSCCON.15
#define SSCMS      SSCCON.14
#define SSCAREN    SSCCON.12
#define SSCBEN     SSCCON.11
#define SSCPEN     SSCCON.10
#define SSCREN     SSCCON.9
#define SSCTEN     SSCCON.8
#define SSCPO      SSCCON.6
#define SSCPH      SSCCON.5
#define SSCHB      SSCCON.4
#define SSCBSY     SSCCON.12
#define SSCBE      SSCCON.11
#define SSCPE      SSCCON.10
#define SSCRE      SSCCON.9
#define SSCTE      SSCCON.8
#define SSCTIR     SSCTIC.7
#define SSCRIR     SSCRIC.7
#define SSCEIR     SSCEIC.7
#define T0R        T01CON.6
#define T1R        T01CON.14
#define T2R        T2CON.6
#define T3IE       T3IC.6
#define T3IR       T3IC.7
#define T3R        T3CON.6
#define T4R        T4CON.6
#define T5R        T5CON.6
#define T6R        T6CON.6
#define PTR0       PWMCON0.0
#define PTR1       PWMCON0.1
#define PTR2       PWMCON0.2
#define PTR3       PWMCON0.3
#define PTI0       PWMCON0.4
#define PTI1       PWMCON0.5
#define PTI2       PWMCON0.6
#define PTI3       PWMCON0.7
#define PIE0       PWMCON0.8
#define PIE1       PWMCON0.9
#define PIE2       PWMCON0.10
#define PIE3       PWMCON0.11
#define PIR0       PWMCON0.12
#define PIR1       PWMCON0.13
#define PIR2       PWMCON0.14
#define PIR3       PWMCON0.15
#define PEN0       PWMCON1.0
#define PEN1       PWMCON1.1
#define PEN2       PWMCON1.2
#define PEN3       PWMCON1.3
#define PM0        PWMCON1.4
#define PM1        PWMCON1.5
#define PM2        PWMCON1.6
#define PM3        PWMCON1.7
#define PB0        PWMCON1.12
#define PS2        PWMCON1.14
#define PS3        PWMCON1.15
#define MDL        0FE0Eh
#define MDH        0FE0Ch
#define OnlyVIPFilter   0A4A466h
#define addrBookFilter  0A4A456h
#define sendMessage3    0C1B164h
#define moveWord        0C7EE0Ah
#define memcpy          0C783B4h
#define memcmp          0C78388h
#define memset          0C78416h
#define memset2  0f1b2cch
#define pokeW           0C78484h
#define pokeDW          0C78490h
#define strcat          0C784A6h
#define strchr          0C784CCh
#define strcmp          0C784EEh
#define strcpy          0C78516h
#define strlen          0C78536h
#define strncpy         0C7859Eh
#define strncmp         0C78578h
#define strrchr         0C785CCh
#define strstr          0C785F0h
#define strnicmp        0C787DAh
#define upCase          0DFCE3Ah
#define atoi            0C782E6h
#define atol            0C77EBAh
#define playVMOFile     0D536B2h
#define storeASCIIZ     0D3B1B2h
#define sendInt2        0D3B120h
#define readEEP         0C22F3Eh
#define writeEEP        0C22F92h
#define playTone        0C30014h
#define playToneifEna   0C300B6h
#define setSoundFlag    0C300D4h
#define getSoundFlag    0C300E0h
#define playDTMF        0C300ECh
#define dspMsgBoxV      0E6F138h
#define dspMsgBoxI      0E6F198h
#define dspString       0CA8B7Ah
#define callR5R4        0C7EE88h
#define runJava         0C808DEh
#define drawImgIdx      0C122ECh
#define getSignalLvl    0CF1616h
#define getSignalPct    0E54B02h
#define setContrast     0C0CACAh
#define getContrast     0C0CBBCh
#define cekLight        0DE1710h
#define isKeylocked     0A34080h
#define turnLightDimm   0C0B14Eh
#define getIllumination 0C0B13Ch
#define setIllumination 0C0B19Eh
#define turnLightON 0c0af24h
#define turnLightOFF 0c0afc0h
#define turnLightIfON 0c1fbb6h
#define createMenu02            0E6EC90h
#define setMenuItemIcon         0E76048h
#define refreshMenuItem         0E74A24h
#define getCurrMnItem           0E761AEh
#define getIMEIasText   0CD9D2Ch
#define _IMEI_DATA      0321344h
#define GBSS_po_open    0E49486h
#define GBSS_po_read    0E4952Eh
#define GBSS_po_close   0E497E0h
#define fileOpen        0DFA73Eh
#define fileRead        0DFABAEh
#define fileClose       0DFC570h
#define showDlgI        0e5dd76h
#define showMsgIcon2    0e5ddceh
#define showMsgNoBox 0e5ecd8h
#define sendMsg         0c1aa30h
#define convText2ID 0e6599ch
#define resetTextID 0e65b5eh
#define cekVibraFlag 0de17a6h
#define doVibraOnce 0c3026ch
#define onTimer  0d6026ch
#define clearRect 0d6a20ah
#define dspAlert 0e5d420h
#define cpBuff2Scr 0e65fech
#define doTime  0a4bae4h ; push 1, push 12/24, 13:12=time, 15:14=buffer
#define cpTime  0a4ac7ch
*******************************************************************************
;=======================================================;
;  This file is created by rizapn <rizapn@yahoo.com>    ;
;  If this file can help you to improve your patching   ;
;  skills, then I will be very happy.                   ;
;-------------------------------------------------------;
;  No need to do some other thing, just remember me :)  ;
;  Riza Purwo Nugroho -rizapn- Jakarta, Indonesia       ;
;-------------------------------------------------------;
;    ALLAAHU AKBAR, He is the Owner of our live ...     ;
;=======================================================;
#include sl45.inc
#define CallRecvList    0de563eh
#define CallDialList    0de5616h
#define CallMissList    0de5704h
#define DigitBuff       36h:000ah
#define FreeRAM         37h:3a00h
#define MSCRAM          FreeRAM+2
#define VWCRAM  FreeRAM+4
#define MBTRAM  FreeRAM+6
#define AppEEPROM       0Eh:3A42h
#define TimeBuff        0Dh:25DCh
#define wBattVoltage 03B9E2h
#define wTemperature 03B9E6h
#define B_FLAG          34h:3E1Bh
#define W_SCREEN        34h:3E1Ch
;-----------------------------------
;#name VDL. Voice Dial/Command Light
;-----------------------------------
org     046ab86h
        calls   0c1fba8h
        mov     r12, #0
        mov     [r0+#2eh], r12
        mov     [r0+#30h], r12
        mov     r15, #0
        mov     [r0+#32h], r15
;--------------------------------------
;#name SOL3. Selectable Operator Logo 3
;--------------------------------------
#define _ImgIdx         34h:3E1Ch
#define _ColonIdx       34h:3E1Dh
org     03ac464h        
        calls   lol_100         ; orig=> mov r6, 3F76h
org     03b0362h
        calls   lol_1rst_main   ; orig=> cmp r12, #22h
org     03b0c08h
        calls   lol_1set        ; orig=> mov DPP0, #35h
org     03b3804h
        calls   lol_main        ; orig=> calls 0a53f98h
org     0C7D120h
lol_1set:
mov DPP0, #35h
mov r2, #1
        extp    #p(B_FLAG), #1
        movb    q(B_FLAG), rl2
rets
lol_1rst_main:
cmp r12, #1
        jmpr    cc_ULE, lol_1ret
lol_1reset:
mov r4, #0
        extp    #p(B_FLAG), #1
        movb    q(B_FLAG), rl4
lol_1ret:
cmp r12, #22h
rets
lol_100:
mov r6, 3F76h
        jmpr    cc_UC, lol_1reset
lol_main:
        mov     [-r0], r6
        mov     [-r0], r7
        mov     [-r0], r8
        mov     [-r0], r9
        extp    #p(AppEEPROM), #1
        mov     r1, q(AppEEPROM)
        extp    #p(B_FLAG), #2
        movbz   r14, q(_ImgIdx)
        movb    rl2, q(B_FLAG)
        jmpr    cc_Z, lol_exit
        cmp     r9, #155h
        jmpr    cc_NZ, lol_keyUnl
        shr     r1, #5
lol_keyUnl:
        shr     r1, #4
lol_flgTest:
        and     r1, #3
        jmpr    cc_Z, lol_exit          ; flg=0
        sub     r1, #1
        jmpr    cc_Z, lol_animated      ; flg=1
        sub     r1, #1
        jmpr    cc_Z, lol_digiClock     ; flg=2
lol_digiAnim:                           ; flg=3
        mov     r1, #05h
        mov     r2, #308h
        callr   lol_drwAnim
        mov     r7, #030dh
org
        mov     r8, #060Ah
org
        mov     r6, #0205h
org
        jmpr    cc_UC, lol_clock
      
lol_animated:
        mov     r1, #0Ah
        mov     r2, #4E3Ch
        callr   lol_drwAnim
lol_exit:
        mov     r9, [r0+]
        mov     r8, [r0+]
        mov     r7, [r0+]
        mov     r6, [r0+]
        jmps    0A53F98h
        ;rets
lol_digiClock:
        mov     r7, #134h                       ; digit rel_ID
org
        mov     r8, #0D16h                      ; colon, digit width
org
        mov     r9, #0800h                      ; Y-Pos, X-Pos
org
        mov     r6, #0100h                      ; Y-Rel, X-Rel
lol_clock:
        mov     r12, r9
        and     r12, #0FFh                      ; r9-low: X-Pos
        mov     r14, #0Bh
        mov     [-r0], r12
        callr   lol_drwImg
        mov     r12, [r0+]
        mov     r2, r9
        mov     r1, r6
        addb    rh2, rh1
        mov     r9, r2                          ; r9-high = Y-Pos+Y-Rel
        movb    rh1, #0                         ; r6-low: X-Rel
        add     r12, r1
        extp    #p(TimeBuff), #2
        mov     r1, 2+q(TimeBuff)
        mov     r2, q(TimeBuff)
mov [-r0], r2
        callr   lol_drawDigits
        mov     r2, r8
        shr     r2, #8                          ; r8-high: colon width
        add     r2, r12                         ; next X-Pos
        mov     [-r0], r2
        movb    rl4, #0FFh
        extp    #p(_ColonIdx), #1
        xorb    q(_ColonIdx), rl4
        jmpr    cc_SGE, lol_dspDigit
lol_dspColon:
        mov     r14, #0Ah                       ; colon rel_ID
        callr   lol_drwImg
lol_dspDigit:
        mov     r12, [r0+]
mov r1, [r0+]
        callr   lol_drawDigits
        jmpr    cc_UC, lol_exit
lol_drawDigits:
mov r2, #0Ah
        mov     MDL, r1
divu r2
        mov     r1, MDH
mov [-r0], r1
        mov     r14, MDL
        callr   lol_drwImg
mov r14, [r0+]
        callr   lol_drwImg
ret
lol_drwImg:
        add     r14, r7                         ; digit rel_ID
        mov     r13, r9
        shr     r13, #8                         ; r9-high: Y-Pos
mov [-r0], r12
        calls   drawImgIdx
mov r12, [r0+]
        mov     r2, r8
        movb    rh2, #0
        add     r12, r2                         ; r8-low: digit-width
ret
lol_drwAnim:
add r14, #1
        cmp     r14, r1
        jmpr    cc_C, lol_drwLogoX
mov r14, #0
lol_drwLogoX:
        mov     r4, r14
        extp    #p(_ImgIdx), #1
        movb    q(_ImgIdx), rl4
        shl     r4, #1
        extp    #p(lol_XYPos), #1
        mov     r9, [r4+#q(lol_XYPos)]
        add     r14, r2
mov r12, #0
mov r13, #8
        calls   drawImgIdx
        ret
org
lol_XYPos:
        db      23,28,23,28,23,28,23,28,23,28
        db      23,28,23,28,23,28,23,28,23,28
;-------------------------------
;#name MID. Mildet Shortcut
;-------------------------------
org 0C7D420h
mov r1, #10h
mov [-r0], r1
mov r12, #3840h
mov r13, #11h
        mov     r14, #q(mid_data)
        mov     r15, #p(mid_data)
        calls   strncpy
add r0, #2
        extp    #p(DigitBuff), #1
        movbz   r1, q(DigitBuff)
mov r13, #11h
        cmp     r1, #'*'
        jmpr    cc_Z, mid_nochange
        extp    r13, #1
        movb    384Ah, rl1
mid_nochange:
mov r12, #3840h
mov r14, #1
        jmps    0C80BDEh
mid_data:
        db      'a:/java/s/x.jad',0
;-------------------------
;#name DRX. Dump Register
;-------------------------
org     0c7d610h
        mov     [-r0], r1
        extp    #37h, #4
        mov     r1, 3600h
        mov     [r1+#3602h], r14
        add     r1, #2
        mov     3600h, r1
        ret
;-------------------------------
;#name DRG. Dump Registers
;-------------------------------
org     0c7d610h
        mov     [-r0], r1
        push    DPP0
        mov     r1, #3680h
        mov     DPP0, #37h
        mov     [-r1], r15
        mov     [-r1], r14
        mov     [-r1], r13
        mov     [-r1], r12
        mov     [-r1], r11
        mov     [-r1], r10
        mov     [-r1], r9
        mov     [-r1], r8
        mov     [-r1], r7
        mov     [-r1], r6
        mov     [-r1], r5
        mov     [-r1], r4
        mov     [-r1], r3
        mov     [-r1], r2
        pop     DPP0
        mov     r1, [r0+]
        ret
;--------------------------------------
;#name SRB. SMS RED Button Redefinition
;add : Dec 21, 2003
;--------------------------------------
org     3a7c26h
        ;cmp     r12, #5ah
        jmps    srb_main
org     0c7e030h
srb_main:
        cmp     r12, #1
        jmpr    cc_NZ, srb_exit
        mov     r12, #q(srb_data)
        mov     r13, #p(srb_data)
        mov     r14, #q(srb_text)
        mov     r15, r13
        calls   showMsgIcon2
        jmps    0da7c50h
srb_exit:
        cmp     r12, #5ah
        jmps    0da7c2ah
srb_s00:
        mov     r4, r14
        cmp     r14, #23h
        jmpr    cc_NZ, srbs_exit
        mov     [-r0], r9
        mov     [-r0], r8
        sub     r0, #8
        calls   0da878ah
srbs_exit:
        rets
srb_data:
        dw      0,0,2
srb_text:
        dw      4a0h,29eh,7fffh
        dw      0,0
        dw      o(srb_s00), s(srb_s00)
        dw      0,0,2c5ah,2e2h,4e26h,2
;------------------------------------
;#name MSC2. More fixed Shortcut v2.0
;add : Dec 19, 2003
;------------------------------------
org     0c7d2e0h
        mov     r5, #0
        cmp     r14, #0bh
        jmpr    cc_NZ, msc2_exit
        calls   msc2_main
        cmp     r5, #0
        jmpr    cc_Z, msc2_exit
        calls   callR5R4
msc2_exit:
        jmps    0dada14h
org     0c7d300h
msc2_main:
        mov     r12, r6
        mov     r13, r7
        calls   0dad03ch
        mov     r5, #0
        cmp     r4, #1
        jmpr    cc_Z, msc2_318
msc2_30e:
        extp    #p(MSCRAM), #1
        mov     q(MSCRAM), r4
        rets
msc2_318:
        extp    #p(MSCRAM), #1
        cmp     ZEROS, q(MSCRAM)
        jmpr    cc_Z, msc_getAddr
        mov     r4, ZEROS
        jmpr    cc_UC, msc2_30e
org
msc_getAddr:
        extp    #p(DigitBuff), #1
        movb    rl2, q(DigitBuff)
        subb    rl2, #'0'
        jmpr    cc_NC, msc_001
        addb    rl2, #13
        jmpr    cc_NZ, msc_009
msc_010:
        movb    rl2, #12
        jmpr    cc_UC, msc_001
msc_009:
        addb    rl2, #3
msc_001:
        cmpb    rl2, #12
        jmpr    cc_UGT, msc_010
        movbz   r2, rl2
        mov     r1, r2
        shl     r1, #2
        add     r2, r1
        add     r2, #q(msc_data)
        mov     r5, #0
        extp    #p(msc_data), #4
        movb    rh6, [r2+]
        movb    rl6, [r2+]
        movb    rl5, [r2+]
        movb    rh4, [r2+]
        extp    #p(msc_data), #1
        movb    rl4, [r2+]
        rets
msc_data:
org
        db      2,08ah,0dbh,0efh,07ch   ; 0.Calculator
org
        db      0,0d3h,0d9h,00ah,0eeh   ; 1.Inbox
org
        db      2,03ch,0d9h,00ah,062h   ; 2.WriteSMS
org
        db      0,069h,0d9h,00ah,0f8h   ; 3.Outbox
org
        db      3,0deh,0d9h,00bh,002h   ; 4.Archive
org
        db    0dh,0b0h,0d8h,0e1h,0b4h   ; 5.Java
org
        db      0,0b7h,0dbh,0efh,068h   ; 6.Dictaphone
org
        db      2,09dh,0dbh,0efh,05ch   ; 7.Appointments
org
        db      1,058h,0dbh,0efh,050h   ; 8.Calendar
org
        db      3,053h,0d8h,0e1h,0b8h   ; 9.Internet
org
        db      2,059h,0d8h,0e1h,0dah   ; *.Games
org
        db      1,04ch,0dch,046h,0e8h   ; +.IrDA
org
        db      5,081h,0d8h,0e1h,0cah   ; #.Explorer
;--------------------------------------
;#name CLST. Call List via GREEN button
;add : Dec 18, 2003
;--------------------------------------
org     3b0502h
;        calls   0de5636h
        calls   cls_main
org     03e2dcah                        ; GREEN button handle
        ;calls   getCurrMnItem
        calls   cls_green
org     0c7df60h
cls_main:
        extp    #p(FreeRAM), #2
        movb    rl1, q(FreeRAM)
        movb    q(FreeRAM)-1, rl1
        addb    rl1, #1
        cmpb    rl1, #3
        jmpr    cc_C, cls_000
        movb    rl1, #0
cls_000:
        extp    #p(FreeRAM), #1
        movb    q(FreeRAM), rl1
        jmpr    cc_NZ, cls_001
        jmps    CallMissList
cls_001:
        cmpb    rl1, #1
        jmpr    cc_NZ, cls_002
        jmps    CallDialList
cls_002:
        jmps    CallRecvList
cls_green:
        extp    #p(FreeRAM), #2
        movb    rl1, q(FreeRAM)-1
        movb    q(FreeRAM), rl1
        jmps    getCurrMnItem
;--------------------------
;#name  FIL. File Access Test ---> still ERROR !
;--------------------------
org 0c7eb00h
mov r12, #1ab7h
mov r13, #2b1h
mov [-r0], r13
mov [-r0], r12
mov r12, #1
mov r13, #15dch
mov r14, #2b1h
mov [-r0], r14 ; page(filename) r0+20A
mov [-r0], r13 ; offs(filename) r0+208
mov [-r0], r12 ; #1 (r0+206)
mov [-r0], r9 ; 204
mov [-r0], r8 ; 202
sub r0, #202h
mov r12, #200h         
add r12, r0            
and r12, #3FFFh        
mov r13, DPP1         
mov [-r0], r13         ; buffer
mov [-r0], r12         ; buffer
mov r12, [r0+#20Ch]    ; filename
mov r13, [r0+#20Eh]    ; filename
mov r14, #10Ah         
mov r15, #100h         
calls 0E4h, 9486h        ; GBSS_po_open
add r0, #4            
mov r9, r4            
cmp r9, #0FFFFh        
jmpa cc_Z, loc_2A9094   
mov r15, #210h         
add r15, r0            
and r15, #3FFFh        
mov r12, DPP1         
mov [-r0], r12         
mov [-r0], r15         
mov r13, [r0+#210h]   
mov r14, [r0+#212h]   
mov [-r0], r14         
mov [-r0], r13         
mov r12, #8            
add r12, r0            
and r12, #3FFFh        
mov r13, DPP1         
add r12, r8            
mov r14, #200h         
sub r14, r8            
calls 0A4h, 87BEh        ; vsnprintf
add r0, #8            
mov r15, r4            
cmp r15, #0            
jmpr cc_SLE, loc_2A9050
add r15, r8            
jmpr cc_UC, loc_2A905A  
loc_2A9050:
mov r15, #200h         
movb rl1, #0            
movb [r0+#1FFh], rl1   
loc_2A905A:
mov r8, #200h         
add r8, r0            
and r8, #3FFFh         
mov r12, DPP1         
mov [-r0], r12         
mov [-r0], r8         
mov r12, r9            
mov r13, #4            
add r13, r0            
and r13, #3FFFh        
mov r14, DPP1         
calls 0E4h, 9672h        
add r0, #4            
mov r12, r9            
mov r13, #200h         
add r13, r0            
and r13, #3FFFh        
mov r14, DPP1         
calls 0E4h, 97E0h        ; GBSS_po_close
loc_2A9094:
add r0, #202h         
mov r8, [r0+]         
mov r9, [r0+]         
add r0, #6            
rets                    

;-----------------------------
;#name FLT. Flashing Word Test
;-----------------------------
org 0c7ed70h
push PSW
bfldh PSW, #0F0h, #0F0h
mov r1, #60D0h
exts r13, #2
movb [r12], rh1
movb [r12], rl1
mov r1, #5040h
exts r13, #3
movb [r12], rh1
movb [r12], rl1
mov [r12], r14
mov r1, #0FF70h
exts r13, #1
movb [r12], rl1
fw_101:
callr fw_srvwdt
exts r13, #1
movb rl1, [r12]
jnb r1.7, fw_101
exts r13, #1
movb [r12], rh1
pop PSW
rets
fw_srvwdt:
jb IEN, fw_ret
jnb T3IR, fw_ret
bclr T3IR
bmovn P4.1,P4.1
mov T3, #0C62h
fw_ret:
ret
fw_cli:
jnb IEN, fw_srvwdt
bclr IEN
mov r1, T3CON
callr fw_getCON
extp r15, #1
mov [r14+#14h], r1
mov T3, #0C62h
mov T3CON, #0C7h
ret
fw_getCON:
mov r12, #01F8h
mov r13, #0
extp r13, #2
mov r14, [r12+]
mov r15, [r12]
ret
fw_sti:
jb IEN, fws_ret
callr fw_getCON
extp r15, #1
mov r1, [r14+#14h]
mov T3CON, r1
bset IEN
fws_ret:
ret
;----------------------------------------
;#name APP. Appointment_Trap
;(from 0xDCAD7A, mov r14,r8 + mov r15,r9)
;----------------------------------------
org 0c7dD30h
extp r9, #1
mov r1, [r8+#86h]
cmp r1, #2020h
jmpr cc_Z, at_next
at_exit:
add r14, #5Eh
jmps 0DCh, 0AD82h
at_next:
mov r14, #88h
add r14, r8
mov r15, #3800h
atn_000:
extp r9, #1
movb rl1, [r14]
jmpr cc_SLE, atn_100
callr at_getHex
shl r1, #4
movb rh1, rl1
callr at_getHex
orb rl1, rh1
extp #37h, #1
movb [r15], rl1
add r15, #1
jmpr cc_UC, atn_000
atn_100:
mov r1, #00DBh
extp #37h, #1
mov [r15], r1
calls 0Dh, 0F800h
jmps 0DCh, 0ABEAh
at_getHex:
extp r9, #1
movb rl1, [r14+]
subb rl1, #'0'
cmpb rl1, #0Ah
jmpr cc_C, atg_001
andb rl1, #0DFh
subb rl1, #7
atg_001:
ret
;----------------------------
;#name BST. Blank_Screen_Test
;----------------------------
org 0db36b8h  ; 4+2+4+2+2+2
calls getContrast  ; 4+2+4+2+4
jmpr cc_NZ, bst_ok
add r0, #10h
rets
bst_ok:
jmps 0c7h, 0dd10h
bst_tel
org 0c7dd10h
calls getSignalPct
cmp r12, #0FFFFh
jmpr cc_Z, bst_001
jmps 0DBh, 36E2h
bst_001:
mov r8, #0
jmps 0DBh, bst_telo
;---------------------
;#name TTT. Timer_Test
;---------------------
org 0373800h
mov r12, #0
mov r13, #0
extp #37h, #4
mov r14, 3900h
and r14, #01FFh
add r14, #1
mov 3900h, r14
calls drawImgIdx
mov r12, #320h
mov r13, #0
mov r14, #0F800h
mov r15, #0Dh
calls 0D6h, 0026Ch
mov r4, #1
rets
;-------------------------
;#name DSQ. Dump_Sequences
;-------------------------
org 0c7d5d0h
mov [-r0], r12
extp #38h, #1
mov r12, 3000h
and r12, #3FFh
add r12, #2
extp #38h, #2
mov [r12+#3010h], r14
mov 3000h, r12
mov r12, [r0+]
ret
;------------------------------------------
;#name NAM. Add New "Application" Menu v2.0
;------------------------------------------
org 0c7de00h
#define n2_PROFILEADDR 3A42h  ; 000E:3A42 <- free_EEPROM
#define n2_MENUITEMNO 17
#define n2_MENUBUFFSEG 37h
#define n2_MENU_ITEM 3500h
#define n2_MENU_ITEM18  3518h
#define n2_MENU_HANDLER 3640h
#define n2_MENU_HANDEND 3684h
#define n2_MENU_ICON    0B88DB0h
n2_MENU_HEADER:
dw 0,0,65h,0Ch    ; always like this?
        dw q(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 n2_ItemHandler,0c7h   ; handler_info
        dw n2_MENU_ITEM, n2_MENUBUFFSEG         ; menu_items_addr
        dw q(n2_MENU_HANDLER)                   ; menu_handler_addr
dw n2_MENUBUFFSEG
dw n2_MENUITEMNO   ; number_of_menu_item
n2_start:
mov r12, #01A1h
mov r13, #n2_MENUITEMNO
push DPP0
        mov     DPP0, #n2_MENUBUFFSEG
        mov     r1, #n2_MENU_ITEM18
        mov     r2, #n2_MENU_HANDEND
n2_001:
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
mov r4, #00C7h
mov [-r2], r4
mov r4, #n2_ActHandler
mov [-r2], r4
cmp r12, #01A1h
jmpr cc_NZ, n2_010
mov r12, #04A7h
jmpr cc_UC, n2_002
n2_010:
cmp r12, #04B3h
jmpr cc_NZ, n2_002
mov r12, #08C3h
n2_002:
add r12, #1
add r1, #36
sub r13, #1
jmpr cc_NZ, n2_001
add r2, #4
mov r4, #00DCh
mov [-r2], r4
mov r4, #4AEAh
mov [-r2], r4
pop DPP0
mov r12, #0
mov r13, #8
n2_003:
mov [-r0], r12
sub r13, #1
jmpr cc_NZ, n2_003
        mov     r13, #q(n2_MENU_HEADER)
mov r14, #031Fh
mov [-r0], r14
mov [-r0], r13
        mov     r13, #q(n2_MENU_STRUCT)
mov [-r0], r14
mov [-r0], r13
mov r13, #0
mov r14, #0
calls createMenu02
add r0, #18h
rets
n2_ItemHandler:
mov r2, #0
cmp r14, #0
jmpr cc_Z, n2_set
mov r2, r14
callr n2_getData
and r2, r1
jmpr cc_Z, n2_set2
mov r2, #1
jmpr cc_UC, n2_set
n2_set2:
mov r2, #2
n2_set:
mov [-r0], r2
calls setMenuItemIcon
add r0, #2
n2_exit:
rets
n2_getData:
mov r1, #1
    sub r2, #1
shl r1, r2
extp #0Eh, #1
mov r2, n2_PROFILEADDR
ret
n2_ActHandler:
mov [-r0], r12
mov [-r0], r13
calls getCurrMnItem
mov r2, r4
callr n2_getData
xor r2, r1
extp #0Eh, #1
mov n2_PROFILEADDR, r2
mov r13, [r0+]
mov r12, [r0+]
jmps refreshMenuItem
;-------------------------------------------
;#name BKL. Blank Screen when Keylocked v2.0
;-------------------------------------------
#define BS_TEMP_MEM  3900h
#define BLANK_SCREEN_ID  3
org 0c7dcc0h
bs_blank:
callr bs_cek00
jmpr cc_Z, bs_exit1
jnb r4.11, bs_exit1
movb BS_TEMP_MEM, rl4
mov r12, #0
calls setContrast
bs_exit1:
jmps isKeylocked
bs_cek00:
extp #0Eh, #1
movb rh4, n2_PROFILEADDR
calls getContrast
mov DPP0, #35h
    cmpb rl4, #0
ret
bs_lightON:
callr bs_cek00
jmpr cc_NZ, bs_exit2
jnb r4.11, bs_exit2
movbz r12, BS_TEMP_MEM
calls setContrast
bs_exit2:
mov DPP0, #36h
rets
;bs_inccall:
; calls 0A3h, 0618h
; jmpr cc_UC, bs_normal
;
;bs_appring:
; calls 0C2h, 0E97Ch
; jmpr cc_UC, bs_normal
;
;bs_longRED:
; calls 0C1h, 0FBC8h
; jmpr cc_UC, bs_normal

;-----------------------------------
;#name HBP. Hourly_Beep
;(from: 0xDB02A2, calls 0DEh, 19CCh)
;-----------------------------------
org 0c7dc40h
extp #0Eh, #1
movb rl4, n2_PROFILEADDR
extp #0Dh, #1
mov r2, 25DCh
jnb r4.6, hb_exit
cmp r2, #0
jmpr cc_NZ, hb_002
extp #11h, #1
movb rl4, 3840h
cmpb rl4, #1
jmpr cc_NZ, hb_exit
mov r12, #1   ; tut-tut-tut
calls playToneifEna
        mov       r4, #0
        jmpr      cc_UC, hb_003
hb_002:
mov r4, #1
hb_003:
extp #11h, #1
movb 3840h, rl4
hb_exit:
sub r0, #0Ch
        rets
;-----------------------------------
;#name SOL. Selectable_Operator_Logo
;-----------------------------------
org 0c7d120h  ; set anim_display_flag (from 0xDB0D4Ch)
#define OL_B_FLAG  3E1Bh
#define OL_W_SCREEN 3E1Ch
ol_setflag:
calls 0CBh, 0CA78h
mov r2, #1
extp #34h, #1
movb OL_B_FLAG, rl2
rets
ol_cekflag:
cmp r12, #1
jmpr cc_ULE, ol_d13e
ol_clrflag:
mov r4, #0
extp #34h, #1
movb OL_B_FLAG, rl4
ol_d13e:
cmp r12, #22h
rets
ol_clearflag:
mov r6, 3F76h
jmpr cc_UC, ol_clrflag
ol_anim00:     ; from 0xDB3804 (calls 0A5h, 3F98h)
extp #0Eh, #1
movbz r1, n2_PROFILEADDR ; get Ringer_Setting parameter
cmp r9, #155h   ; is keylocked?
jmpr cc_Z, ol_keyLocked
ol_keyfree:
extp #34h, #2
movb rl2, OL_B_FLAG
mov r14, OL_W_SCREEN
cmpb rl2, #0
jmpr cc_Z, ol_exit
jb r1.5, ol_digiclock ; Digital_Clock
jnb r1.4, ol_exit  ; Animated_Logo
ol_anim:
add r14, #1
cmp r14, #10
jmpr cc_C, ola_001
mov r14, #0
ola_001:
extp #34h, #1
mov OL_W_SCREEN, r14
add r14, #287h
mov r12, #0
mov r13, #8
calls drawImgIdx
ol_exit:
calls 0A5h, 3F98h
rets
ol_keyLocked:
ol_digiclock:
mov r12, #0
mov r14, #0Bh
callr old_d20c
mov r12, #0
extp #0Dh, #2
mov r1, 25DEh
mov r2, 25DCh
mov [-r0], r2
callr old_d1f2
mov r14, #0FFFFh
extp #34h, #1
xor OL_W_SCREEN, r14
jmpr cc_SGE, old_d1e4
add r12, #0Dh
jmpr cc_UC, old_d1ec
old_d1e4:
mov r14, #0Ah
callr old_d20c
sub r12, #9
old_d1ec:
mov r1, [r0+]
callr old_d1f2
jmpr cc_UC, ol_exit
old_d1f2:
mov r2, #0Ah
mov 0FE0Eh, r1
divu r2
mov r1, 0FE0Ch
mov [-r0], r1
mov r14, 0FE0Eh
callr old_d20c
mov r14, [r0+]
callr old_d20c
ret
old_d20c:
mov [-r0], r12
add r14, #134h
mov r13, #8
calls drawImgIdx
mov r12, [r0+]
add r12, #16h
    ret
;------------------------------------------
;#name AFA. Another Function of Appointment
;------------------------------------------
org     03cad7eh
jmps afa_main           ; from original 'add r14, #5eh'
org     0c7dd90h
afa_main:
extp r9, #1
        mov     r1, [r8+#86h]      ; appointment_text_buffer
cmp r1, #2020h
        jmpr    cc_Z, afa_ok
add r14, #5Eh
        jmps    0dcad82h           ; return without executing
afa_ok:
        mov     r14, #88h
        add     r14, r8
        mov     r15, #3800h        ; temp_buffer
afa_loop1:
extp r9, #1
movb rl1, [r14]
        jmpr    cc_SLE, afa_run    ; end of appointment text 'bytecode'
        callr   afa_getHex
shl r1, #4
movb rh1, rl1
        callr   afa_getHex
orb rl1, rh1
extp #37h, #1
movb [r15], rl1
add r15, #1
        jmpr    cc_UC, afa_loop1
afa_run:
mov r1, #0DBh
extp #37h, #1
mov [r15], r1
        calls   0df800h                 ; execute temp_buff
        jmps    0dcabeah                ; return to the original
afa_getHex:
extp r9, #1
movb rl1, [r14+]
subb rl1, #30h
cmpb rl1, #0Ah
        jmpr    cc_C, afag_ret
andb rl1, #0DFh
subb rl1, #7
afag_ret:
ret

;--------------------------------------
;#name SRT. Selectable_Ringtone_for_All
;--------------------------------------
org 0C7dc80h
#define cfm_playRing    0A30F6Eh
#define cfm_exit        0A30FA8h
rt_start:
calls addrBookFilter
cmp r4, #0
jmpr cc_NZ, rt_answer
calls OnlyVIPFilter
cmp r4, #0
jmpr cc_NZ, rt_reject
jmps cfm_playRing
rt_answer:
mov r8, #18h
jmpr cc_UC, rt_msg2
rt_reject:
mov r8, #4019h
rt_msg2:
mov r12, #34C8h
mov r13, #0Eh
mov r14, r8
jmps cfm_exit
;rt_playVM
; cmp r8, #18h
; jmpr cc_Z, rt_exit
;
; mov r12, #3840h
; mov r13, #11h
; mov [-r0], r13
; mov [-r0], r12
;       mov     r14, #q(rt_VMOFilename)
; mov r15, #31Fh
; calls strcpy
; ;mov r1, #10h
; ;mov [-r0], r1
; ;calls strncpy
; add r0, #2
; mov r14, #326Dh
; extp #0Ch, #2
; movb rl1, [r14+]
; movb rh1, [r14+]
; mov r12, [r0+]
; mov r13, [r0+]
; cmp r1, #0
; jmpr cc_Z, pv_001
; extp r13, #1
; mov [r12+#6h], r1
;pv_001:
; calls playVMOFile
;rt_cekaddrBook:
; extp #0Ch, #1
; mov r4, 326Ch
; subb rh4, #30h
; jmpr cc_NC, rtc_002
; movb rh4, #1
;rtc_002:
;
; cmpb rl4, #58h  ; X
; jmpr cc_Z, rt_reject
; cmpb rl4, #41h  ; A
; jmpr cc_Z, rt_answer
;       mov     r2, #q(rt_DATA1)       ; 0F5Ah
;rt_001:
; extp #31Fh, #2
; mov r1, [r2+]
; jmpr cc_Z, rtc_end
; cmpb rl4, rl1
; jmpr cc_NZ, rt_001
; addb rh4, rh1
; movbz r4, rh4
; jmpr cc_UC, rtc_save
;
;rtc_end:
; mov r4, #0FFh
;
;rtc_save:
; extp #35h, #1
; movb 37FFh, rl4
; jmps cfm_playRing
;rt_DATA1:
; db 'S',255,'C',4,'K',13,'T',22,'D',26,'P',32,'I',38,0,0
;rt_VMOFilename:
;       db      'A:/vm/xx.vmo',0
;--------------------------------
;#name DAR. Dump_All_Registers_v2
;--------------------------------
#define MAX_PUSH  #10h
#define LAST_ADDR  377Eh
org 0c7d540h
mov [-r0], r15
mov [-r0], r14
mov [-r0], r13
mov [-r0], r12
push DPP0
mov r15, #LAST_ADDR
mov DPP0, #37h
mov [-r15], r14
mov [-r15], r13
mov [-r15], r12
mov [-r15], r11
mov [-r15], r10
mov [-r15], r09
mov [-r15], r08
mov [-r15], r07
mov [-r15], r06
mov [-r15], r05
mov [-r15], r04
mov [-r15], r03
mov [-r15], r02
mov [-r15], r01
mov r13, SP
mov [-r15], r13
pop DPP0   ; DPP0
mov r12, #0FBF0h
sub r12, r13
jmpr cc_SLE, dr_004
shr r12, #1
mov r13, r12
dr_002:
pop r14   ; IP
extp #37h, #1
mov [-r15], r14
sub r12, #1
jmpr cc_NZ, dr_002
dr_003:
extp #37h, #1
mov r14, [r15+]
push r14
sub r13, #1
jmpr cc_NZ, dr_003
dr_004:
mov r12, [r0+]
mov r13, [r0+]
mov r14, [r0+]
mov r15, [r0+]
extp #37h, #1
mov LAST_ADDR, r15
ret
;-----------------------------
;#name DAR. Dump_All_Registers
;-----------------------------
org 0c7d540h
mov [-r0], r15
push DPP0
mov r15, #374Eh
mov DPP0, #37h
mov [-r15], r14
mov [-r15], r13
mov [-r15], r12
mov [-r15], r11
mov [-r15], r10
mov [-r15], r09
mov [-r15], r08
mov [-r15], r07
mov [-r15], r06
mov [-r15], r05
mov [-r15], r04
mov [-r15], r03
mov [-r15], r02
mov [-r15], r01
pop DPP0
mov [-r0], r14
mov [-r0], r13
mov [-r0], r12
mov [-r0], r11
mov [-r0], r10
mov [-r0], r09
mov [-r0], r08
mov [-r0], r07
pop r08
pop r09
pop r10
pop r11
pop r12
pop r13
pop r14
pop r15
push r15
push r14
push r13
push r12
push r11
push r10
push r09
push r08
push DPP0
mov DPP0, #35h
mov r08, #3F06h
extp #35h, #2h
mov 3F00h, r14
mov 3F02h, r15
mov r12, [r0+]
mov r13, [r0+]
mov r14, [r0+]
mov r15, [r0+]
extp #35h, #1
mov 3F4Eh, r15
nop
nop
rets
;-----------------------------
;#name ICT. Incoming_Call_Trap
;(from A3077C, add r9, #2E10h)
;-----------------------------
org 0c7d500h
extp #35h, #1
mov r12, 3F00h
and r12, #1Fh
extp #35h, #3
mov [r12+#3900h], r9
add r12, #1
mov 3F00h, r12
add r9, #2E10h
rets
;-------------------------------
;#name BTT. Battery_tone_trap
;from 0xC300A2 (mov r12, #34C0h)
;-------------------------------
org 0c7d2b0h
pop r12
pop r15
pop r13
pop r14
push r14
push r13
push r15
push r12
mov r12, r8
shl r12, #2
add r12, #3700h
extp #37h, #2
mov [r12], r13
mov [r12+#2], r14
mov r12, #34C0h
rets
;---------------------------
;#name PTTEST. PlayTone_Test
;---------------------------
org 0C7D220h
mov [-r0], r12
extp #35h, #3
mov r12, 3F00h
add r12, #1
mov 3F00h, r12
calls 0C3h, 0014h
mov r12, [r0+]
rets
;----------------------------------------------
;#name JAF. Just_Another_Funny_Display
;called from 0xE40028 (orig was or r10, #8000h)
;----------------------------------------------
org 0C7DB80h
mov [-r0], r6
mov r6, #1
extp #0Eh, #1
movbz r5, n2_PROFILEADDR
jnb r5.2, fun_000
fun_vertical_start:
mov r2, #160Ch
sub r10, r2
mov 0FE0Eh, r10
divu r11   ; (source-160C)/r11
add r2, 0FE0Ch  ; r2 = 160C + (source-160C) % r11
mov r10, #4Fh
sub r10, 0FE0Eh  ; 4F-(source-160C)/r11
mulu r10, r11
mov r10, 0FE0Eh  ; (4F-(source-160C)/r11)*r11
add r10, r2
neg r11
fun_000:
or r10, #8000h
rets
;---- called from 0xE4004C (orig: mov rh4, [r10]; mov r11, r14)
movb rh4, [r10]
mov r11, r14
jnb r5.0, fun_001
fun_invert_start:
cpl r1
cpl r2
cpl r3
cpl r4
fun_001:
jnb r5.1, fun_002
fun_horiz_start:
neg r6
cmp r11, #1B6Fh
jmpr cc_NC, ff_001
;---- pos<#1B6Fh
mov r5, #3678h
jmpr cc_UC, ff_002
ff_001:
mov r5, #3748h
ff_002:
sub r5, r11
mov r11, r5
fun_002:
fun_exit:
rets
fun2_001:
mov r6, [r0+]
bmov r5.7, r4.8
rets
;------------------------
;#name ATD. AT+CGSN Debug
;------------------------
; syntax : AT+CGSN:c.segment.offset.data
;  d : hexa dump
;  s : text search
;  f : hexa find
;  w : write hexa data
;  r : run memory
;  c : copy memory
#define MAX_AT_LINE 8
#define MAX_AT_BUFF     384
org 0C7D700h
mov r12, #8B6h
callr atd_getHEX
callr atd_getHEX
mov r15, #11h
extp r15, #2
movb rh4, 08B3h
movb rl4, 08B4h
cmpb rh4, #0Dh
jmpr cc_Z, atd_exit
andb rl4, #0DFh
cmpb rl4, #'S'
jmpr cc_Z, atd_find
cmpb rl4, #'F'
jmpr cc_Z, atd_findhex
cmpb rl4, #'W'
jmpr cc_Z, atd_writehex
cmpb rl4, #'R'
jmpr cc_Z, atd_runmem
cmpb rl4, #'C'
jmpr cc_Z, atd_copymem
atd_disp:
mov r12, [r0+]
mov r13, [r0+]
callr atd_dispHEX
atd_jmps:
jmps 0D3h, 84ACh
atd_runmem:
mov r4, [r0+]
mov r5, [r0+]
calls callR5R4
jmpr cc_UC, atd_jmps
atd_writehex:
mov r2, [r0+]
mov r13, [r0+]
mov [-r0], r13
mov [-r0], r2
push DPP0
mov DPP0, r13
callr atd_storeHEX
pop DPP0
jmpr cc_UC, atd_disp
atd_exit:
add r0, #4h
jmps 0D2h, 0C126h
atd_dispHEX:
sub r0, #MAX_AT_BUFF
mov r14, #MAX_AT_LINE
mov r2, r0
atd_d7bc:
mov r1, #10h
atd_d7c0:
extp r13, #1
movb rl4, [r12]
callr atd_hex4
movb [r2+#2], rl4
extp r13, #1
movb rl4, [r12+]
shr r4, #4
callr atd_hex4
movb [r2+#1], rl4
movb rl4, #' '
cmpb r1, #8
jmpr cc_NZ, atd_002
movb rl4, #'-'
atd_002:
movb [r2], rl4
add r2, #3
sub r1, #1
jmpr cc_NZ, atd_d7c0
movb rl4, #0dh
movb [r2+#0FFD0h], rl4
sub r14, #1
jmpr cc_NZ, atd_d7bc
mov r12, r0
and r12, #3FFFh
mov r13, DPP1
mov r14, #MAX_AT_BUFF
calls 0D3h, 0B1C4h
add r0, #MAX_AT_BUFF
ret
atd_getHEX:
mov r13, #11h
mov r4, #0h
atd_d76c:
extp r13, #1
movb rl1, [r12+]
callr atd_getHEX0
jmpr cc_NC, atd_dspInt
shl r4, #4
or r4, r1
jmpr cc_UC, atd_d76c
atd_storeHEX:   ; DPP1:r2 = store_addree
atd_fh01:    ; r15:r12 = data_address
extp r15, #1
movb rl1, [r12+]
callr atd_getHEX0
jmpr cc_NC, atd_fh02
mov r4, r1
extp r15, #1
movb rl1, [r12+]
callr atd_getHEX0
jmpr cc_NC, atd_fh02
shl r4, #4
or r4, r1
movb [r2], rl4
cmpi1 r2, #70h
jmpr cc_NZ, atd_fh01
atd_fh02:
ret
atd_findhex:
mov r2, r0
sub r2, #80h
mov r13, r2
callr atd_storeHEX
mov r1, #0Dh
movb [r2], rl1
movb [r2+#1], rh1
mov r12, r13
mov r15, DPP1
atd_find:
mov r14, [r0+]  ; offset
mov r13, [r0+]  ; segment
atd_d80e:
mov r1, r14
mov r2, r12
atd_d812:
extp r15, #1
movb rl4, [r2+]
cmpb rl4, #0dh
jmpr cc_Z, atd_d82c
extp r13, #1
cmpb rl4, [r1+]
jmpr cc_Z, atd_d812
add r14, #1
cmp r14, #3FFFh
jmpr cc_ULE, atd_d80e
atd_d82c:
;mov r12, r14
;calls sendInt2
callr atd_dspHEX4
jmpr cc_UC, atd_jmps
atd_copymem:
callr atd_getHEX
callr atd_getHEX
callr atd_getHEX
        mov     r1, [r0+]       ; size
        mov     r12, [r0+]      ; dest_offset
        mov     r13, [r0+]      ; dest_page
        mov     r14, [r0+]      ; src_offset
        mov     r15, [r0+]      ; src_page
mov [-r0], r15
mov [-r0], r14
mov [-r0], r1
calls memcpy
add r0, #2
jmpa cc_UC, atd_disp
atd_dspHEX4:
mov r12, r0
sub r0, #4
mov r1, #4
atd_h02:
mov r4, r14
callr atd_hex4
movb [-r12], rl4
shr r14, #4
sub r1, #1
jmpr cc_NZ, atd_h02
and r12, #3FFFh
mov r13, DPP1
mov r14, #4
calls 0D3h, 0B1C4h
add r0, #4
ret
atd_hex4:
andb rl4, #0Fh
cmpb rl4, #9
jmpr cc_ULE, atd_d840
addb rl4, #7
atd_d840:
addb rl4, #'0'
ret
atd_getHEX0:
movb rh1, #0
cmpb rl1, #'0'
jmpr cc_C, atd_gh0e
cmpb rl1, #'9'
jmpr cc_ULE, atd_d78e
andb rl1, #0DFh
cmpb rl1, #'A'
jmpr cc_C, atd_gh0e
cmpb rl1, #'F'
jmpr cc_UGT, atd_gh0e
subb rl1, #7
atd_d78e:
andb rl1, #0Fh
atd_ghr:
cmpb rl1, #10h
ret
atd_gh0e:
movb rl1, #0FFh
jmpr cc_UC, atd_ghr
atd_dspInt:
mov [-r0], r4  ; getHEX result
mov [-r0], r12
mov r14, r4
callr atd_dspHEX4
mov r12, #3f8eh
mov r13, #2c1h
calls storeASCIIZ
mov r12, [r0+]
ret
;-----------------------------------
;#name APO. Auto Power ON
;-----------------------------------
org     0d8f1b0h
        jmps my_APO
org 0c7e1b0h
my_AP
extp r13, #1
mov r14, [r12+#48h]
shr r14, #6
and r14, #0Fh
cmp r14, #4   ; 0=memo,1=call,2=meeting,3=birthday,4=voicememo
jmpr cc_Z, apo_PowerON
calls 0d8ef92h
jmps 0d8f2feh
apo_PowerON:
jmps 0d8f2dah

;-------------------------------;
;#name SDS. SMS Delete Shortcut
;add: june 10, 2004
;-------------------------------;
org 0d9ea3eh
jmpa cc_UC, sds_main
org 0d9fff2h
sds_main:
mov r13, r12
mov r12, #1
calls dspMsgBoxV
jmpa cc_UC, 0eedah
;------------------------------;
;#name SMA. SMS Move to Archive
;add: june 12, 2004
;------------------------------;
#define SMS_RAM  37h:3a10h
org 0d9e490h ; mov [-r0],r9  mov [-r0],r8
calls sma_pushreg
;org 0d9ef12h ; add r0, #458h
; calls sma_clearreg
org 0da8822h
jmps sma_main
org 0c7e1d0h
sma_pushreg:
mov r4, #q(SMS_RAM)+4
extp #p(SMS_RAM), #2
mov [-r4], r13
mov [-r4], r12
mov [-r0], r9
mov [-r0], r8
rets
;sma_clearreg:
; cmp r6, #0
; jmpr cc_NZ, sma_ret1
; extp #p(SMS_RAM), #1
; mov q(SMS_RAM)+2, ZEROS
;sma_ret1:
; add r0, #458h  
; rets
sma_main:
push r0
add r0, #8  ; r0+8
;mov r8, [r0+]
;mov r9, [r0+] ; r0+12
;mov [-r0], r9
;mov [-r0], r8
mov [-r0], r7
mov [-r0], r6 ; r0+4-458
sub r0, #458h ; sub r0, #458h
mov r4, #q(SMS_RAM)
extp #p(SMS_RAM), #2
mov r8, [r4+]
mov r9, [r4+]
cmp r9, #35h  ;4+2+2+4+2+2=16
jmpr cc_NZ, sma_exit2
extp r9, #1
mov r4, [r8+#42h]
cmp r4, r9
jmpr cc_NZ, sma_exit2
calls 0d9ea42h
sma_exit2:
pop r0
jmps 0da8908h

;---------------------------------;
;#name SLI. SMS List Indicator
;---------------------------------;
#define smtgAbMenuItem 0e5b0beh
#define dspEditTitle2  0e5b29ch
#define sli_textID     13FFh
org 0d94fc4h ; calls smtgAbMenuItem
calls sli_main
org 0d94fd2h ; calls smtgAbMenuItem
calls sli_main
org 0d95048h ; calls smtgAbMenuItem
calls sli_main
org 0d95056h
calls sli_main
org 0c7e270h
sli_main:
mov [-r0], r4
calls smtgAbMenuItem
mov r12, #sli_textID
mov r13, #0
calls resetTextID
mov r4, [r0+]
add r4, #1
mov r2, #0Ah
        mov     MDL, r4
divu r2
        movb    rh1, MDH
movb rl1, MDL
add r1, #3030h
mov r2, #9503h
mov r13, #3104h
mov r14, #37h
extp r14, #2
mov [-r13], r1
mov [-r13], r2
mov r12, #sli_textID
mov r15, #0
calls convText2ID
mov r12, r8
mov r13, r9
mov r14, #sli_textID
mov r15, #2
jmps dspEditTitle2
;-----------------------------------
;#name CFS. Chronometer for Shutdown
;-----------------------------------
#define Chrono_Buff 34h:3848h
org 0d5cd0ch ; mov r12,#34c0h
calls cfs_main
org 0d5cd18h ; mov r15, #3
mov r15, r4
org 0d5ca5ch
calls cfs_beep3 ; mov r15,#33
org 0c7e230h
cfs_main:
callr cfs_test
jmpr cc_Z, cfs_exit
;jmps turnOFFphone
mov r12, #34A0h
mov r6, #5
mov r4, #2
rets
cfs_beep3:
mov r15, #33h
callr cfs_test
jmpr cc_Z, cfs_rets
mov r15, #0h
cfs_rets:
rets
cfs_test:
extp #p(Chrono_Buff), #1
mov r4, q(Chrono_Buff)+4
and r4, #1
ret
cfs_exit:
mov r12, #34C0h
mov r4, #33h
rets
;---------------------------
;#name SVL. SMS View LeftKey
;---------------------------
org 0d9eca4h  ; mov r12,r8 & mov r13,r9
calls svl_setr2
org 0d9ecf2h
calls svl_main ; extp r15,#1 & mov [r14],r7
org 0d9ed48h
calls svl_main
org 0c7e2e0h
svl_setr2:
mov r2, r12
mov r12, r8
mov r13, r9
rets
svl_main:
cmp r2, #14h ; is it LeftButton? (Right=17)
jmpr cc_NZ, svl_ok
sub r7, #2
jmpr cc_SGE, svl_ok
add r7, r6
svl_ok:
extp r15, #1
mov [r14], r7
rets
;------------------------------------
;#name SNN. Show both Name and Number
;------------------------------------
#define drawSomeImages 0e6fab2h
org 0dafc56h
calls snn_main ;calls drawSomeImages
org 0c7e100h
snn_main:
calls drawSomeImages
mov r13, #2C41h
mov r12, #20
; mov r4, #0
; extp #8, #1
; movb rl4, [r13+]
; jmpr cc_Z, snn_exit
; mov r12, r4
; shl r12, #1
; add r4, r12
; mov r12, #50
; sub r12, r4
snn_loop1:
extp #8, #1
movb rl4, [r13]
jmpr cc_Z, snn_exit
callr snn_dspImg
jmpr cc_Z, snn_exit
extp #8, #1
movb rl4, [r13+]
shr r4, #4
callr snn_dspImg
jmpr cc_NZ, snn_loop1
snn_exit:
rets
snn_dspImg:
movb rh4, #0
andb rl4, #0Fh
cmpb rl4, #0Fh
jmpr cc_Z, snn_ret01
mov [-r0], r13
mov [-r0], r12
mov r13, #35h
mov r14, #201h
add r14, r4
calls drawImgIdx
mov r12, [r0+]
mov r13, [r0+]
add r12, #6
snn_ret01:
ret
;--------------------------------------------
;#name DSR. Do Something else while Recording
;--------------------------------------------
org 0d50126h
jmps dsr_main ; jmpa cc_UC, loc_d501c0
org 0c7e300h
dsr_main:
cmp r14, #13h
jmpr cc_NZ, dsr_exit
calls 0db42dch
dsr_exit:
jmps 0d501c0h
;----------------------------------
;#name PTC. Play Tone while Calling
;----------------------------------
org 0dabe82h ; org jmpa cc_UC, 0dabfb0h
jmps ptc_main
org 0c7e320h
ptc_main:
cmp r12, #62h ; left side PLAY
jmpr cc_NZ, ptc_exit
mov r12, #3h ; Battery empty sound
calls playToneifEna
ptc_exit:
jmps 0dabfb0h
;-------------------------
;#name JWM. Java while MP3
;-------------------------
org 0c89010h ; orig. mov DPP0, #11h
calls jwm_play
;org 0d8e1cah
; jmps jwm_card
org 0d8e1b4h
jmps jwm_java
org 0c7e340h
jwm_play:
callr jwm_cek
jmpr cc_NZ, jwm_exit1
mov r15, #26h
callr jwm_001
jwm_exit1:
mov DPP0, #11h
rets
jwm_001:
mov r12, #35e8h
mov r13, #0eh
mov r14, #0ach
calls 0c1aa30h
ret
jwm_cek:
mov r4, #13h
extp #34h, #1
cmp r4, 3e1eh
ret
jwm_java:
callr jwm_cek
jmpr cc_NZ, jwm_exitjava
mov r15, #24h
callr jwm_001
jwm_exitjava:
jmps 0c80f22h
;jwm_card:
; callr jwm_cek
; jmpr cc_NZ, jwm_exitcard
; callr jwm_001
;jwm_exitcard:
; jmps 0d8e180h
;-------------------------------------------
;#name VUSO. View Unread SMS from the Oldest
;-------------------------------------------
#define InboxSMS_Unread 0Dh:29D8h
org 0db054eh
calls vuso_main
org 0c7e390h
vuso_main:
extp #p(InboxSMS_Unread), #1
mov r9, q(InboxSMS_Unread)
sub r9, #1
mov [-r0], r9
rets
;-------------------------
;#name BLT. Blinking Light
;-------------------------
org 0dafc5ah ; orig. mov r12,#320h
jmps blt_main
blt_back0:
org 0c7e8b0h
blt_main:
extp #p(AppEEPROM), #1
mov r4, q(AppEEPROM)
jnb r4.8, blt_exit
calls turnLightIfON
mov r12, #80h
mov r13, #0
mov r14, #o(blt_OFF)
mov r15, #s(blt_OFF)
jmps 0dafc68h
blt_OFF:
calls turnLightOFF
blt_exit:
mov r12, #100h
jmps blt_back0
;------------------------
;#name SCI. SMS Counter Info
;------------------------
#define word2DigitArr 0c7891eh
#define GameParm  36h:0968h ; cek-for-this
org 0d9be4ch ; newMsgSend() orig. showMsgIcon2
calls sci_OutSMS
org 0d9be9ch ; newMsgSend() orig. showMsgIcon2
calls sci_outSMS
;org 0e4e700h ; newMsgRecv() orig. calls 0e525dah
; calls sci_inSMS
;new -v2- skip delivery report
org 0e5341ch ; orig. calls 0db1a46h
calls 0db1a46h
; calls sci_inSMS
org 0e53430h ; orig. calls 0db1c1ah
calls sci_inSMS
org 0c7e580h
sci_main:
mov [-r0], r8
sub r0, #40h
mov r8, r0
and r8, #3FFFh
mov r14, #q(sci_strRecieved)
callr sci_strcpy
add r8, #10
mov r4, #q(GameParm)
callr sci_putDigit
movb rl1, #0Dh
mov r4, DPP1
extp r4, #1
movb [r8], rl1
add r8, #1
mov r14, #q(sci_strSent)
callr sci_strcpy
add r8, #6
mov r4, #q(GameParm)+2
callr sci_putDigit
movb rl1, #0
movb [r8], rl1
mov  r12, #138Bh
mov  r13, r0
and  r13, #3FFFh
mov  r14, DPP1
mov  r15, #0
calls convText2ID
mov r12, #q(sci_WndClass)
mov r13, #p(sci_WndClass)
mov r14, #q(sci_TextList)
mov r15, r13
calls showMsgNoBox
add r0, #40h
mov  r8, [r0+]
rets
sci_strcpy:
mov r12, r8
mov r13, DPP1
mov r15, #p(sci_strRecieved)
calls strcpy
ret
sci_putDigit:
extp #p(GameParm), #1
mov r12, [r4]
mov r13, r8
mov r14, DPP1
calls word2DigitArr
mov r12, r4
mov r13, r5
calls strlen
add r8, r4
ret
sci_Delete:
;cmp  r14, #10h
cmp r14, #23h
jmpr  cc_NZ, sci_Delrets
extp  #p(GameParm),#2
mov  q(GameParm), ZEROS
mov  q(GameParm)+2, ZEROS
sci_Delrets:
rets
sci_InSMS:
;-- add v2 - skip delivery_report -- not work!
calls 0db1c1ah
cmp r4, #0
jmpr cc_NZ, sci_inExit
mov r12, #1
extp #p(GameParm), #1
add q(GameParm), r12
sci_inExit:
rets
sci_OutSMS:
mov r4, #1
extp #p(GameParm), #1
add q(GameParm)+2, r4
jmps showMsgIcon2
sci_qDelete:
mov r4, r14
cmp r14, #10h
jmpr cc_NZ, sci_qDelrets
        mov     r12, #q(sci_data)
        mov     r13, #p(sci_data)
        mov     r14, #q(sci_text)
        mov     r15, r13
        jmps showMsgIcon2
sci_qDelrets:
rets
sci_strRecieved:
db 'Received: ', 0
sci_strSent:
db 'Sent: ', 0
sci_data:
        dw      3,0,2,7530h,0,7fffh,0,0
        dw      o(sci_Delete), s(sci_Delete)
        dw      0,0,2c5ah,2e2h,4e26h,2
sci_text:
        dw      0e0h,7fffh
#define sci_SKeyList  02e3h:172ah
;sci_SKeyList:
; dw  38h, 52h, 17fh  ; "Clear"
; dw 52h, 52h, 0FFFEh ; ...
; dw 52h, 52h, 0FFFEh ; ...
; dw 25h, 52h, 1eah  ; "OK"
sci_TextList:
dw 138Bh, 7fffh
sci_WndClass:
dw 4000h ; Flag1
dw 0 ; Flag2
dw 22h ; Flag3
dw 0 ; TimeToKeep
dw 0 ; unknown
dw 453h ; DialogTitle
dw 0 ; Offset
dw 0 ; Page
;dw o(sci_NewOnSelect) ; HandleOffset
;dw s(sci_NewOnSelect) ; HandlePage
dw o(sci_qDelete), s(sci_qDelete)
dw 0 ; Offset1
dw 0 ; Page1
dw q(sci_SKeyList) ; ButtondefOffset
dw p(sci_SKeyList) ; ButtondefPage
dw 0 ; field_1C
dw 0 ; field_1E
;----------------------------------
;#name AFD. Appointment Fast Delete
;----------------------------------
org 0dd1cbah
jmpr cc_NZ, afd_nz01  ; ba
mov r12, #0Eh  ; be
jmpr cc_UC, 0dd1d42h  ; c0
afd_nz01:
cmp r12, #23h  ; c2
jmpr cc_Z, 0dd1d50h  ; c4
;-----------------------------------
;#name AAD. Appointment Alarm Delete
;-----------------------------------
org 0dd4e08h  ; orig calls 0dd5284h
calls aad_main
org 0c7e6f0h
aad_main:
cmp r12, #37h
jmpr cc_NZ, aad_exit
extp r9, #2
mov r12, [r8+#3ah]
mov r14, [r8+#3ch]
extp r14, #2
mov r4, [r12]
movb rl2, [r12+#0ffbah]
cmpb rl4, #8h
jmpr cc_NZ, aad_exit
movbz r13, rl2
mov r12, #0eh
mov r14, #0
calls 0ddd722h
jmps 0dd4e48h
aad_exit:
jmps 0dd5284h
;-------------------------------
;#name VWC. Vibra When Connected
;-------------------------------
org 0dac4c8h ; orig mov r12,r8 & mov r13,r9
calls vwc_setCounter
org 0dac51ch ; orig mov r12,r8 & mov r13,r9
calls vwc_main
org 0c7e6c0h
vwc_setCounter:
mov r12, #3
jmpr cc_UC, vwc_exit
vwc_main:
extp #p(VWCRAM), #1
mov r12, q(VWCRAM)
jmpr cc_SLT, vwc_exit2
calls cekVibraFlag
jmpr cc_Z, vwc_exit2
mov [-r0], r12
calls doVibraOnce
mov r12, [r0+]
sub r12, #1
vwc_exit:
extp #p(VWCRAM), #1
mov q(VWCRAM), r12
vwc_exit2:
mov r12, r8
mov r13, r9
rets
;----------------------------------------------
;#name USI. (just another) Unread SMS Indicator
;----------------------------------------------
org 0c0e2b6h ; orig calls 0c0dfa4h
calls usi_main
org 0c7e700h
usi_main:
mov r13, [r0]
mov r12, [r0+#2]
extp r13, #1
mov r4, [r12+#3ah]
mov r12, #12h
cmp r4, #4e26h  ; 4e26,4e36(mixed),4e3d,4e3e
jmpr cc_Z, usi_ok
cmp r4, #4e3dh
jmpr cc_Z, usi_ok
cmp r4, #4e3eh
jmpr cc_Z, usi_ok
mov r12, #12h
cmp r4, #4e36h
jmpr cc_NZ, usi_exit

usi_ok:
extp #p(InboxSMS_Unread), #1
mov r4, q(InboxSMS_Unread)
mov r2, #0Ah
        mov     MDL, r4
divu r2
mov r1, MDH  ; 2nd digit
mov [-r0], r1
mov r14, MDL ; 1st digit
jmpr cc_Z, usi_100
callr usi_digit
usi_100:
mov r14, [r0+]
callr usi_digit
usi_exit:
mov r13, [r0+]
mov r12, [r0+]
rets
usi_digit:
add r14, #201h
mov r13, #69
mov [-r0], r12
        calls   drawImgIdx
mov r12, [r0+]
add r12, #6
ret
;----------------------------------
;#name STS. SMS Text Style function
;----------------------------------
#define sts_MENUBUFF 37h:3500h
#define sts_MENUHANDLER 37h:3640h
#define sts_MENUITEMNO 14  ;12
#define sts_TextID01 8D0h
; 0 0 ID ID 0 3c06 2eb 3 d0
#define sts_push 0da7f20h
org 0da7f1ch ; orig mov [-r0], r9 & mov [-r0], r8
jmpa cc_UC, sts_func1
org 0da7f72h ; orig cmp r13, #0
rets
sts_func1back:
org 0da808ch
sts_printIrDA:
calls sts_main
jmpr cc_UC, 0da8124h
sts_func1:
mov [-r0], r9
mov [-r0], r8
calls sts_push
cmp r13, #0
jmpa cc_UC, sts_func1back
org 0c7e780h
sts_main:
callr sts_setr45
mov r12, r8
mov r13, r9
mov [-r0], r13
mov [-r0], r12
mov r12, #5fh
calls 0f08350h
push DPP0
        mov     DPP0, #p(sts_MENUBUFF)
mov r13, #sts_MENUITEMNO
        mov     r1, #(18+q(sts_MENUBUFF))
        mov     r2, #(4*sts_MENUITEMNO+q(sts_MENUHANDLER))
mov r3, #sts_TextID01
sts_001:
mov r4, #0d0h
mov [-r1], r4
mov r4, #3h
mov [-r1], r4
mov r4, #2ebh
mov [-r1], r4
mov r4, #3c06h
mov [-r1], r4
mov r4, #0
mov [-r1], r4
mov [-r1], r3
mov [-r1], r3
mov [-r1], r4
mov [-r1], r4
mov r4, #s(sts_ActHandler)
mov [-r2], r4
mov r4, #o(sts_ActHandler)
mov [-r2], r4
add r3, #1
add r1, #36
sub r13, #1
jmpr cc_NZ, sts_001
pop DPP0
mov r12, [r0+]
mov r13, [r0+]
mov r14, #0
mov [-r0], r14
mov [-r0], r14
mov [-r0], r13
mov [-r0], r12
mov [-r0], r14
mov [-r0], r14
mov [-r0], r14
mov [-r0], r14
        mov     r13, #q(sts_MENUHEADER)
mov r14, #p(sts_MENUHEADER)
mov [-r0], r14
mov [-r0], r13
        mov     r13, #q(sts_MENUSTRUCT)
mov [-r0], r14
mov [-r0], r13
mov r12, #1
mov r13, #0
mov r14, #0
calls createMenu02
add r0, #18h
mov r4, #0ffffh
rets
sts_ActHandler:
mov [-r0], r9
mov [-r0], r8
calls sts_push
extp #p(sts_Format), #1
movb rl4, [r4+#q(sts_Format)]
add r4, #0e000h
mov [-r0], r4
callr sts_setr45
mov r12, r6
mov r13, r7
mov r14, #0
calls 0f1b860h
mov r12, r6
mov r13, r7
mov r14, [r0+]
jmps 0da810ch
sts_setr45:
mov r12, r8
mov r13, r9
calls 0e7646ah
mov r8, r4
mov r9, r5
ret
sts_MENUHEADER:
dw 5,9,5fh,15h    ; always like this?
        dw 0,0     ; menu_icons_addr
dw 885h     ; menu_header_text => Format
dw 7fffh    ; end_of_data
sts_MENUSTRUCT:
dw 0,0,0,0,0,0,0,0   ; handler_info
        dw 3c02h,2ebh,3bfch,2ebh,48h,0          ; always like this?
dw 0,0     ; o(sts_rets),s(sts_rets) ; itemhandler_info
        dw q(sts_MENUBUFF), p(sts_MENUBUFF) ; menu_items_addr
        dw q(sts_MENUHANDLER), p(sts_MENUHANDLER) ; menu_handler_addr
dw sts_MENUITEMNO   ; number_of_menu_item

sts_format:
db 15h  ; Normal
db 14h  ; Thin
db 12h  ; Small
db 13h  ; SmallBold
db 16h  ; Big
db 19h  ; VSmallNumber
db 1bh  ; VVSmallNumber
db 01h  ; Underline
db 02h  ; CancelUnderline
db 03h  ; Invert
db 04h  ; CancelInvert
db 1ch  ; Left
db 1dh  ; Right
db 1eh  ; Center
;-----------------------------------------------
;#name RSB. (yet another) Rounded Softkey Button
;-----------------------------------------------
org 0c0e2beh ; orig mov r6,[r0+] & mov r7,[r0+]
calls rsb_main
org 0c7e8f0h
rsb_main:
mov r8, #q(rsb_XY)
rsb_loop:
extp #p(rsb_XY), #2
mov r2, [r8+]
cmp r2, #0ffffh
jmpr cc_Z, rsb_exit
movbz r12, rl2
movbz r13, rh2
mov r14, #1
mov r15, #1
calls clearRect
jmpr cc_UC, rsb_loop
rsb_exit:
mov r6, [r0+]
mov r7, [r0+]
rets
rsb_XY:
db 0,67,46,67,0,79,46,79
db 54,67,100,67,54,79,100,79
db 255,255
;---------------------------
;#name MBT. Menu Button Text
;---------------------------
org 0c0e424h  ; orig calls 0e654f8h
calls mbt_main
org 0c7e960h
mbt_main:
cmp r12, #1A0h ; "Menu"
jmpr cc_Z, mbt_ok
jmps 0e654f8h
mbt_ok:
mov [-r0], r14
mov [-r0], r13
mov r12, #q(MBTRAM)
mov r13, #p(MBTRAM)
calls cpTime
mov r12, #0
mov [-r0], r12
mov r12, #24
mov [-r0], r12
mov r12, #q(MBTRAM)
mov r13, #p(MBTRAM)
mov r14, #q(MBTRAM)+5
mov r15, r13
calls doTime
add r0, #4
mov r4, #95h
mov r12, [r0+]
mov r13, [r0+]
mov r14, #q(MBTRAM)+4
mov r15, #p(MBTRAM)
extp r15, #1
movb [r14], rl4
jmps cpBuff2Scr
;---------------------------
;#name STM. Show Temperature
;---------------------------
org 0db00e8h  ; orig calls doTime
calls stm_main
org 0c7e3e0h
stm_main:
extp #0fh, #1
mov r4, 2016h
sub r4, #0AAAh
mov r2, #0Ah
mov r3, #3003h
add r14, #3
        mov     MDL, r4
stm_loop1:
divu r2
        mov     r1, MDH
addb rl1, rh3
extp r15, #1
movb [-r14], rl1
subb rl3, #1
jmpr cc_NZ, stm_loop1
add r14, #7
mov r1, #4360h
mov r2, #2eh
extp r15, #4
movb rh2, [r14+#0fffbh]
movb [-r14], rl3
mov [-r14], r1
mov [-r14], r2
rets
;---------------------------------------------------
;#name DRS. Different Ringtone for SMS Status Report
; added : July 13, 2004
;---------------------------------------------------
org 0c3022ah ; orig mov r12,#35h
calls drs_main
org 0c7e9c0h
drs_main:
calls 0db193eh ; getMsgType
mov r12, #37h
cmp r4, #4
jmpr cc_ULE, drs_rets
mov r12, #35h
drs_rets:
rets
;-------------------------------
;#name SMV. SMS Multiple Vibrate
; added : July 13, 2004
;-------------------------------
org 0c30268h ; orig cmp r4,#0 & jmpr cc_NZ, rets
jmps smv_main
org 0c7e9e0h
smv_main:
cmp r4, #0
jmpr cc_Z, smv_ok
rets
smv_ok:
mov r12, #18h     ; 10=2x, 20=4x
jmps 0c3026eh
;-------------------------
;#name SMF. SMS My Folders
; added : July 15, 2004
;-------------------------
#define smf_dir 0b8c90dh
org 0E44620h
smf_main:
sub r0, #22ch
mov r12, r0
and r12, #3fffh
mov [-r0], r12
mov r13, DPP1
calls 0d8e060h
mov r12, [r0+]
add r12, #34h
mov r13, DPP1
mov r14, #q(smf_dir)
mov r15, #p(smf_dir)
calls strcpy
jmps 0d8e192h
;-----------------------------------------
;#name VIC. Voltage Indicator when Charged
; added : July 15, 2004
;-----------------------------------------
org 0e54ef2h ; orig cmp r8,#0FFFFh
calls vic_main
org 0e44660h
vic_main:
extp #p(wBattVoltage), #1
mov r4, q(wBattVoltage)
mov r3, #4
mov r2, #0Ah
        mov     MDL, r4
vic_loop1:
divu r2
        mov     r1, MDH
add r1, #134h
mov [-r0], r1
sub r3, #1
jmpr cc_NZ, vic_loop1
mov r12, #2
vic_loop2:
mov r14, [r0+]
mov r13, #10h
mov [-r0], r12
calls drawImgIdx
mov r12, [r0+]
add r12, #24
cmp r12, #75
jmpr cc_SLE, vic_loop2
cmp r8, #0FFFFh
rets
;--------------------------------
;#name EXR. Explorer Rightsoftkey
; added : July 16, 2004
;--------------------------------
#define exr_doOpenFile 0d87398h
#define exr_exit 0d869ceh
#define cardExpOptions 0d86436h
#define cardExpMark 0d86978h
org 0d863c4h
jmpa cc_Z, cardExpOptions
org 0d863ech
jmpa cc_Z, cardExpMark
org 0d86482h  ; end of CardExpOptions
jmpa cc_UC, exr_main
exr_optExit:
org 0d86496h
exr_main:
extp r1, #1
mov r7, [r6]
cmp r7, #2Fh
jmpr cc_Z, exr_optExit
mov [-r0], r9
mov [-r0], r8
mov [-r0], r6
calls exr_doOpenFile
jmpa cc_UC, exr_exit
exr_100:
extp r7, #1
movb rl1, [r6+#1]
xorb rl1, #0FFh
rets
org 0d869a2h
calls exr_100
;-------------------------------------------
;#name RBF. RED Button when Flash SMS exists
; added : July 17, 2004
;-------------------------------------------
#define clearFlashMsg 0db1982h
org 0db0698h ; orig calls 0db1982h
mov r12, #1
calls 0f08350h
calls rbf_main
org 0e446c0h
rbf_main:
        mov     r12, #q(rbf_data)
        mov     r13, #p(rbf_data)
        mov     r14, #q(rbf_text)
        mov     r15, r13
        jmps showMsgIcon2
rbf_s00:
        mov     r4, r14
        cmp     r14, #23h
        jmpr    cc_NZ, rbf_exit
jmps clearFlashMsg
rbf_exit:
        rets
rbf_data:
        dw      0,0,2
rbf_text:
dw 17ch, 273h, 7fffh
        dw      0,0
        dw      o(rbf_s00), s(rbf_s00)
        dw      0,0,2c5ah,2e2h,4e26h,2
;-----------------------------------
;#name RBD. RED Button in Dictaphone
; added : July 17, 2004
;-----------------------------------
#define dictStop 0c321ceh
#define rbd_dictRet2a 0d51baah
#define rbd_dictRet 0d530a4h
org 0d51aa0h  ; dictRecord
calls rbd_main
jmps rbd_dictRet2a
org 0d51e96h  ; dictRecordPaused
calls rbd_main
jmps rbd_dictRet2a
org 0d52f94h  ; dictPaused
calls rbd_main
jmps rbd_dictRet
org 0d529ach  ; dictPlayed
calls rbd_main
jmps rbd_dictRet
org
org 0e44710h
rbd_main:
        mov     r12, #q(rbd_data)
        mov     r13, #p(rbd_data)
        mov     r14, #q(rbd_text)
        mov     r15, r13
        jmps showMsgIcon2
rbd_s00:
        mov     r4, r14
        cmp     r14, #23h
        jmpr    cc_NZ, rbd_exit
jmps dictStop
rbd_exit:
        rets
rbd_data:
        dw      0,0,2
rbd_text:
dw 4a0h, 0b5h, 7fffh
        dw      0,0
        dw      o(rbd_s00), s(rbd_s00)
        dw      0,0,2c5ah,2e2h,4e26h,2
;----------------------
;#name END. End of ASM
;----------------------
rets
;----------------------
;#name XXX. Testing
;----------------------
org 37h:3700h
mov  r12, #138Bh
mov  r15, #0
mov  r13, #q(x_text)
mov  r14, #p(x_text)
calls convText2ID
mov r12, #q(sci_TextList)
mov r13, #p(sci_TextList)
mov [-r0], r13
mov [-r0], r12
mov r12, #q(sci_WndClass)
mov r13, #p(sci_WndClass)
mov r14, #0
mov r15, #0
calls dspAlert
add r0, #4
rets
#define x_text 0c7eb00h
;====================================;
;-------- END OF PATCH LIST ---------;
;created by RizaPN <rizapn@yahoo.com>;
;====================================;
您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

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

GMT+8, 2025-6-4 16:42

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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