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

楼主 |
发表于 2005-9-16 09:49:22
|
显示全部楼层
原帖由 xhjjxm 于 2005-9-15 19:52 发表
看看来电记录那个补丁,可能会有用的。
请参考以下来电记录补丁的原码:
#name CDR. Call Detail Record v2.3
;----------------------------------
#define cdr_string 37h:3980h
#define cdr_filename 37h:3968h ; A:\Misc\cdyyyymm.log
#define durBuff 0Ch:0253h
'Firmware : sl45v56
'Author : rizapn
'Created : August 5, 2004
'Updated : August 13, 2004 (v2.3)
''
'Need FAM patch !
''
'Save call detail record into the MMC (call logging function).
'It will logs the successfull incoming and outgoing call, and unanswered
'incoming calls.
'Logfile is A:\Misc\cdyyyymm.log -> yyyy=year, mm=month
'Default format: yyyy/mm/dd,flag,DN,duration,Name
''
'v1.1 -> Selectable through the APP - Profile 2 - 2nd Item
'v2 -> add SMS record in A:\Misc\sdyyyymm.log
'SMS flag:S(end),R(eceived),D(eliveryReport)
'v2.2 -> Add name for Call Detail Record
''
org 0a2f560h ; orig mov r8, 38FEh
'This is the redirect for Call Detail Record:
calls cdr_main
org 0e4e6fch ; orig mov r14,#26h ; incomingMsg
'This is for Incoming SMS Record:
calls sdr_main
org 0d9be3ch ; orig mov r12,#3148h ; outgoingMsg
'This is for Outgoing SMS Record:
calls sdr_outSMS
org 0d9be8ch ; orig mov r12,#3148h ; outgoingMsg
calls sdr_outSMS
;org 0e44be0h
org 0e45260h
db '*** CDR v2.3 ***'
cdr_main:
callr cdr_getFunc
''
'If you want to change the APP item for Call Record,
'change this (10 to z0) :
jnb r1.1, cdr_exit
''
cmp r4, #4
jmpr cc_Z, cdr_rec
''
'Record unanswered incoming call:
cdr_rem003:
cmp r4, #3
org cdr_rem003:
'Record only the successfull call:
cmp r4, #4
''
jmpr cc_NZ, cdr_exit
cdr_rec:
add r12, #0b7eh
mov r5, #32h
mov [-r0], r5
mov [-r0], r12
mov r8, #100h+'U'
cmp r4, #3
jmpr cc_Z, cdr_ok002
mov r8, #100h+'O'
mov r12, r9
calls isIncoming
jmpr cc_Z, cdr_ok002
mov r8, #100h+'I'
cdr_ok002:
callr cdr_setFN
cdr_exit:
mov r8, #5a7h
cdr_pop9:
mov r9, [r0+]
rets
cdr_getFunc:
mov [-r0], r9
extp #p(n2_EEP2), #1
''
'Enable selectable from APP menu:
cdr_rem002:
mov r1, q(n2_EEP2)
org cdr_rem002:
'Disabling it:
mov r1, #0FFFFh
''
ret
;------ SMS handling ------
sdr_outSMS:
callr cdr_getFunc
mov [-r0], r8
''
'If you want to change the APP item for Outgoing SMS,
'change this (10 to z0) :
jnb r1.1, sdr_iexit
''
add r8, #3ah
mov [-r0], r9
mov [-r0], r8
mov r8, #'S'
jmpr cc_UC, sdr_write
sdr_main:
callr cdr_getFunc
mov [-r0], r8
''
'If you want to change the APP item for incoming SMS,
'change this (10 to z0) :
jnb r1.1, sdr_iexit
''
mov r8, #200h+'R'
mov r12, #315h
mov r5, #32h
extp r5, #1
movb rl4, 2F0h
andb rl4, #40h
jmpr cc_Z, sdr_001
mov r8, #200h+'D'
add r12, #1
sdr_001:
mov [-r0], r5
mov [-r0], r12
sdr_write:
callr cdr_setFN
sdr_iexit:
mov r14, #26h
mov r12, #3148h
mov r8, [r0+]
jmpr cc_UC, cdr_pop9
cdr_setFN:
mov r12, #pof(cdr_filename)
mov r13, #pag(cdr_filename)
mov r14, #pof(cdr_fn0)
mov r15, #pag(cdr_fn0)
calls strcpy
mov r7, #pof(cdr_data)
mov r9, #pof(cdr_filename)+10
callr cdr_putData
sub r9, #1
callr cdr_putData
movb rl4, #'s'
mov r9, #pof(cdr_filename)+8
mov r5, r8
cmpb rh5, #1
''
'Different filename for SMS and Call:
cdr_rem004:
jmpr cc_NZ, cdr_fnSMS
org cdr_rem004:
'Same filename for SMS and Call:
jmpr cc_NZ, cdr_fnRet
''
cmpb rl5, #'O'
''
'Different filename for incoming and outgoing call:
cdr_rem005:
jmpr cc_Z, cdr_fnRet
org cdr_rem005:
'Same filename for incoming and outgoing call:
jmpr cc_UC, cdr_fnRet
''
'Different filename for incoming and unanswered call:
cdr_rem001:
movb rl4, rl5
nop
org cdr_rem001:
'Same filename for incoming and unanswered call:
movb rl4, #'i'
''
cdr_fnSMS:
callr cdr_put1
cdr_fnRet:
; jmpr cc_UC, cdr_writeData
cdr_writeData:
mov r9, #pof(cdr_string)+1
cdr_wloop1:
callr cdr_putData
; cmpb rl4, #0
jmpr cc_NZ, cdr_wloop1
mov r4, r9
mov r9, #pof(cdr_string)
sub r4, r9
sub r4, #1
callr cdr_put1
calls cdr_push
calls cdr_flush
ret
cdr_putData:
mov r15, #2
extp #pag(cdr_data), #1
movb rl4, [r7+]
movbz r12, rl4
jmpr cc_Z, cdr_pdRet
cmp r12, #5
jmpr cc_ULT, cdr_2dig
jmpr cc_Z, cdr_4dig
sub r12, #6
cmp r12, #4
jmpr cc_UGT, cdr_pdDel
add r12, r12
extp #pag(cdr_calli), #1
mov r12, [r12+#pof(cdr_calli)]
calli cc_UC, [r12]
jmpr cc_UC, cdr_pdDel
cdr_4dig:
mov r15, #4
cdr_2dig:
movb rl4, #'0'
add r12, r12
extp #pag(timeBuff), #1
mov r12, [r12+#pof(timeBuff)-2]
mov r13, r9
mov r3, r15
cdr_loop1:
callr cdr_put1
cmpd1 r3, #1
jmpr cc_NZ, cdr_loop1
calls fmtNumber
cdr_pdDel:
extp #pag(cdr_data), #1
movb rl4, [r7+]
jmpr cc_Z, cdr_pdRet
cmpb rl4, #13
jmpr cc_Z, cdr_doEnter
cdr_put1:
mov r14, #pag(cdr_string)
extp r14, #1
movb [r9], rl4
add r9, #1
cdr_pdRet:
ret
cdr_doDN:
mov r12, [r0+]
mov r5, [r0+]
mov r4, r8
cmpb rh4, #0
jmpr cc_NZ, cdr_dn101
mov r14, r12
mov r15, r5
jmpr cc_UC, cdr_strcpy
cdr_dn101:
extp r5, #2
movb rh2, [r12+]
movb rl3, [r12+]
cmpb rh4, #1
jmpr cc_Z, cdr_dn102 ; size=num_of_byte
addb rh2, #3
shr r2, #1 ; size=num_of_digit
cdr_dn102:
cmpb rl3, #81h
jmpr cc_Z, cdr_dn003
movb rl4, #'+'
callr cdr_put1
cdr_dn003:
movb rl2, #0Fh
cmpb rh2, #12
jmpr cc_UGT, cdr_dnRet
cdr_dnloop1:
subb rh2, #1
jmpr cc_Z, cdr_dnRet
extp r5, #1
movb rl3, [r12+]
movb rh3, rl3
callr cdr_putNo
movb rl3, rh3
shr r3, #4
callr cdr_putNo
jmpr cc_NZ, cdr_dnloop1
cdr_dnRet:
ret
cdr_doDuration:
mov r4, r8
cmpb rh4, #1
jmpr cc_NZ, cdr_strcRet
mov r14, #pof(durBuff)
mov r15, #pag(durBuff)
cdr_strcpy:
mov r13, #pag(cdr_string)
mov r12, r9
calls strcpy
mov r9, r12
cdr_strcRet:
ret
cdr_doEnter:
mov r4, #0a0dh
jmpr cc_UC, cdr_wrWord
cdr_doType:
mov r4, r8
jmpr cc_UC, cdr_put1
cdr_doName:
mov r4, r8
cmpb rh4, #1
jmpr cc_NZ, cdr_RetNo
mov r14, #2c56h ; incoming
cmpb rl4, #'O'
jmpr cc_NZ, cdr_nm1
mov r14, #2b9ah ; outgoing
cdr_nm1:
mov r15, #8
mov r12, r14
cdr_nm001:
extp r15, #1
movb rl4, [r12+]
addb rl4, #1
jmpr cc_NZ, cdr_nm001
sub r12, #1
extp r15, #2
movb [r12], rl4
movb rl4, [r14] ; add this for UNICODE!
cmpb rl4, #81h
jmpr cc_NZ, cdr_strcpy
add r14, #3
jmpr cc_UC, cdr_strcpy
cdr_putNo:
andb rl3, rl2
cmpb rl3, rl2
jmpr cc_Z, cdr_retNo
movb rl4, rl3
addb rl4, #'0'
callr cdr_put1
cdr_retNo:
ret
cdr_wrWord:
callr cdr_put1
movb rl4, rh4
jmpr cc_UC, cdr_put1
cdr_push:
mov r14, #pof(FACBuff)+8
mov r13, #pag(BFABuff)
mov r12, #pof(BFABuff)
mov r5, #seg(cdr_append)
mov r4, #ofs(cdr_append)
extp #pag(FACBuff), #4
mov [-r14], r5
mov [-r14], r4
mov [-r14], r13
mov [-r14], r12
mov r12, #0
callr cdr_setp1
calls 0d7d912h
add r0, #4
rets
cdr_append:
mov r14, #010Ah
mov r13, #pag(cdr_filename)
mov r12, #pof(cdr_filename)
mov r15, #0100h
calls fileOpen
mov r12, r4
add r4, #1
jmpr cc_Z, cdr_rets
mov [-r0], r12
mov r13, #pof(cdr_string)
mov r14, #pag(cdr_string)
extp r14, #1
movb rl4, [r13+]
movbz r15, rl4
calls fileWrite
mov r12, [r0+]
jmps fileClose
cdr_flush:
mov r12, #1790h
callr cdr_setp1
calls 0d7d97ch
add r0, #4
cdr_rets:
rets
cdr_setp1:
mov r13, #0
mov [-r0], r13
mov [-r0], r12
mov r12, #pof(cdr_dummyFN)
mov r13, #pag(cdr_dummyFN)
mov r14, #pof(MIDString)
mov r15, #pag(MIDString)
ret
cdr_calli:
dw ofs(cdr_doType)
dw ofs(cdr_doDN)
dw ofs(cdr_doName)
dw ofs(cdr_doDuration)
cdr_dummyFN:
db 'a:\Misc\zzz',0
cdr_data:
db 5h,'-' ; yymm for filename
db 4h,'.'
''
'This is the data field code and its delimiter,
'modify as you like:
'
db 5h,'/' ; yyyy/mm/dd,hh:mm for statistic
'
db 4h,'/'
'
db 3h,','
'
db 2h,':'
'
db 1h,','
'
db 6h,',' ; 6=Type
'
db 7h,',' ; 7=DN
'
db 9h,',' ; 9=duration
'
db 8h,13 ; 8=Name
'
db 0,0
''
cdr_fn0:
db 'a:\Misc\cdyyyymm.log',0,0
;-----------------------------------------
;----------------------------------------------- |
|