- 积分
- 1387
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
发表于 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() |
|