lishenglyx 发表于 2005-8-10 00:00:00

cool_lang在指定位置显示字符非字符串函数?

[求助]显示“字符”的办法?再就此问题请教Cool_lang,strcpy strXXX等函数对于显示字符有什么用?在指定位置显示字符,要用那些函数?在你的源码中有个worddig是作什么用的?

各位朋友,看了C00l_lang RainMoon等同志的VKP,有很多显示字符的地方!
但如何显示单个字符呢?
(不是改字串,是在编补丁时,如何在指定位置显示个字符?)






[此贴子已经被作者于2004-3-13 13:58:19编辑过]

huajia 发表于 2005-8-10 00:01:00

各种菜单下的字符显示都不一样。我知道的不多,以下为知道的几种:
1、右软键为“选项”的情况下,左软键字符为:XXXX2F0000007202 或在紧随其后找。
2、有提示框的字符显示为: E6F?XXXX ; ?为C或D




[此贴子已经被作者于2004-3-12 13:37:50编辑过]

lishenglyx 发表于 2005-8-10 00:02:00

谢谢,试试

HUAJIA同志,我不是说改字串,而是在补丁如何显示字符?

huajia 发表于 2005-8-10 00:03:00

国外论坛有一些西门子手机写函数的资料,你可以找找,因我不懂编程,没有保存。

lishenglyx 发表于 2005-8-10 00:04:00

以下是引用huajia在2004-3-12 14:24:42的发言:
国外论坛有一些西门子手机写函数的资料,你可以找找,因我不懂编程,没有保存。


好,找找先!

huajia 发表于 2005-8-10 00:05:00

以下可能是SL45i v56 :

Yes, I've found these. I can give you an summary of routines in the SL45i v56 Fubu.
- make an SL56 big File
- go to the addresses in Flash named in the list
- go in hex editor on these addresses, copy some bytes form routine and finde these in your m35
fubu. So you have some really usefull routines named, that are in nearly all Siemens the same.

would be really nice if you could list your routines too. This saves lot's of time
I've made an litte program: open fubu, type in segment & offset and this tool shows you
the string in fubu on this place. So you don't have to go to hex edit and calculate address
on your own. Do you want to have it? Tell me you mail address



code:--------------------------------------------------------------------------------
01) DisplayMessageBox :

        mov        r12, flag        ; #1=boxed, #2=unboxed
        mov        r13, textID
        calls        0E6h, 0F138h        ; with V icon

        mov        r12, flag
        mov        r13, textID
        calls        0E6h, 0F198h        ; with ! icon

02) StringCopy :

        mov        r12, dst_offset
        mov        r13, dst_page
        mov        r14, src_Offset
        mov        r15, src_page
        calls        0C7h, 84A6h

03) MoveWord :

        mov        r4, src_offset
        mov        r5, src_page
        mov        r10, dst_offset
        mov        r11, dst_page
        mov        r3, word_count
        calls        0C7, 0EE0Ah

04) Indirect Call :

        mov        r4, func_offset
        mov        r5, func_page
        calls        0C7h, 7EE88h

05) Run Java File :

        mov   r12, filename_offset
        mov   r13, filename_page
        mov   r14, flag                ; #0 = list, #1 = run
        calls   0C8h, 0BDEh

06) Draw Image (Screen must be prepared) :

        mov        r14, image_index
        mov        r12, x_pos
        mov        r13, y_pos
        calls        0C1h, 22ECh

07) Write Data to EEPROM :

        mov        r12, #0
        mov        [-r0], r12
        mov        [-r0], r12
        mov        [-r0], r12
        mov        r12, size
        mov        [-r0], r12
        mov        r12, EEPROM_Block
        mov        r13, data_Offset
        mov        r14, data_Page
        mov        r15, offset
        calls        0C2h, 2F92h
        add        r0, #8

08 ) Read Data from EEPROM (method 1) :

        mov        r12, #0
        mov        [-r0], r12
        mov        [-r0], r12
        mov        [-r0], r12
        mov        r12, size
        mov        [-r0], r12
        mov        r12, EEPROM_Block
        mov        r13, dst_Offset
        mov        r14, dst_Page
        mov        r15, offset
        calls        0C2h, 2F3Eh
        add        r0, #8

08 ) Read Data from EEPROM (method 2) :

        mov        r12, size
        mov        [-r0], r2
        mov        r12, EEPROM_Block
        mov        r13, dst_Offset
        mov        r14, dst_Page
        mov        r15, offset
        calls        0C2h, 30BAh
        add        r0, #2

09) GetLength :

        mov        r12, string_offset
        mov        r13, string_page
        calls        0C7h, 8536h                ; output = r4

10) CopyArray :

        mov        r12, size
        mov        [-r0], r12
        mov        r12, src_offset
        mov        r13, src_page
        mov        r14, dst_offset
        mov        r15, dst_page
        calls        0C7h, 859Eh

11) Get Word Value :

        mov        r12, string_offset
        mov        r13, string_page
        calls        0C7h, 82E6h                ; output = r4

12) Get Double Word Value :

        mov        r12, string_offset
        mov        r13, string_page
        calls        0C7h, 7EBAh                ; output = r4,r5

13) Get Word :

        mov        r12, data_offset
        mov        r13, data_page
        calls        0h, 8356h                ; output = r4

14) Get Double Word :

        mov        r12, data_offset
        mov        r13, data_page
        calls        0C7h, 8344h                ; output = r4:r5

15) FillChar :

        mov        r12, dst_offset
        mov        r13, dst_page
        mov        r14, char
        mov        r15, size
        calls        0C7h, 8416h

16) Display Free String without Box :

        mov        r12, text_offset
        mov        r13, text_page
        calls        0CAh, 8B7Ah

17) Find substring :

        mov   r12, string_offset
        mov   r13, string_page
        mov   r14, substring_offset
        mov   r15, substring_page
        calls   0C7h, 85F0h
--------------------------------------------------------------------------------
---------------------------

以下是S/ME451V04的资料:
Setup:

F9D776: ToggleIrDA()
E2771E: Get_IrDA_State() ; returns r4 = #0FFh when IrDA off
E27784: IrDA_On_Off() ; r12 = flag, #0FFh = off, #0 = on

F5476A: ToggleGPRS()
F546DA: Get_GPRS_State() ; returns r4 = #0 when GPRS = off, r4 = #1 when GPRS = on

F546FE: GPRSOn()
F54710: GPRSOff()

SetGPRSState() {
mov r12, #value ;#1 -> GPRS off #0 -> GPRS on
call F546FA
}

TurnOnHandsFreeMode () {
mov r12, #3ADEh
mov r13, #41h
mov r14, #29h ;101001
jmps 0CCh, sub_CC80C0
}

TurnOffHandsFreeMode () {
mov r12, #3ADEh
mov r13, #41h
mov r14, #2Ah ;101010
jmps 0CCh, sub_CC80C0
}


Messagebox

DisplayMessageBoxA() {
mov r12, flag ; #1=boxed, #2=unboxed
mov r13, #textID
calls 0FAh, 04CB0h ; with V icon
}

DisplayMessageBoxB() {
mov r12, flag ; #1=boxed, #2=unboxed
mov r13, #textID
calls 0FAh, 04CD8h ; with ! icon
}

DisplayMessageBoxC() {
mov r12, flag ; #1=boxed, #2=unboxed
mov r13, #textID
calls 0FAh, 04D00h ; without icon
}


Pictures

PicturePaint() { ; --> needs some inits first
mov r14, image_index
mov r12, x_pos
mov r13, y_pos
calls 0C8h, 0439Ch
}


Strings

StringCopy() {

mov r12, dst_offset
mov r13, dst_page
mov r14, src_Offset
mov r15, src_page
calls 0FFh, 04030h
}

GetSringLength() {
mov r12, string_offset
mov r13, string_page
calls 0FFh, 40C0h ; output = r4
}

Find substring() {
mov r12, string_offset
mov r13, string_page
mov r14, substring_offset
mov r15, substring_page
calls 0FFh, 0417Ah
}


Word, Byte, Double Handels

GetWordValue() {
mov r12, string_offset
mov r13, string_page
calls 0FFh, 03E70h ; output = r4
}

GetDoubleWordValue() {
mov r12, string_offset
mov r13, string_page
calls 0D0h, 09360h ; output = r4,r5
}

GetWord() {
mov r12, data_offset
mov r13, data_page
calls 0FFh, 03EE0h ; output = r4
}

GetDoubleWord() {
mov r12, data_offset
mov r13, data_page
calls 0FFh, 03ECEh ; output = r4:r5
}

MoveWord() {

mov r4, src_offset
mov r5, src_page
mov r10, dst_offset
mov r11, dst_page
mov r3, word_count
calls 0FC, 0FFAAh
}


Chars, Arrays

CopyArray() {
mov r12, size
mov [-r0], r12
mov r12, src_offset
mov r13, src_page
mov r14, dst_offset
mov r15, dst_page
calls 0FFh, 04128h
}

FillChar() {
mov r12, dst_offset
mov r13, dst_page
mov r14, char
mov r15, size
calls 0FFh, 03FA0h
}


Calls

IndirectCall() {
mov r4, func_offset
mov r5, func_page
calls 0E2h, 0FFFAh
}


EEPROM

WriteDataToEEPROM() {
mov r12, #0
mov [-r0], r12
mov [-r0], r12
mov [-r0], r12
mov r12, size
mov [-r0], r12
mov r12, EEPROM_Block
mov r13, data_Offset
mov r14, data_Page
mov r15, offset
calls 0CCh, 0FEB8h
; calls 0CDh, 0606h ;2nd choice
; calls 0CDh, 0CD063h ;3rd choice
add r0, #8
}


Programme / Meldungen

E99466: GotoNewSMS()
E9946E: GotoNewSMS_Vorlage1()
E99482: GotoNewSMS_Vorlage2()
E99496: GotoNewSMS_Vorlage3()

GotoNewSMS_UserVorlage() {
mov r12, #StringIndex ;String Index der Vorlage
calls 0EAh, sub_EAE152
mov r14, r4
mov r15, r5
mov r12, #0
mov r13, #0
jmps 0E9h, 0BB7Ah
}

E994AA: GotoSMS_Vorlagen()
E994CA: GotoSMS_Eingang()
E99548: GotoSMS_Eingang_Archiv
E99508: GotoSMS_Ausgang()
E9959A: GotoSMS_Ausgang_Archiv()
E99606: GotoMeldungen_Eingang()
E9960E: GotoSprachmeldung()
E99618: Goto_neueCB_lesen()
E9961C: GotoCBDienste()
E99624: GotoNewEMail_Eingang()
E9964E: Goto_neue_eMail_abrufen()

lishenglyx 发表于 2005-8-10 00:06:00

收下这个重要礼物,T h a n k s

nonlyli 发表于 2005-8-10 00:07:00

那个Display Free String without Box 是不是我要的东东?试试先。
页: [1]
查看完整版本: cool_lang在指定位置显示字符非字符串函数?