ZiHwA 发表于 2005-8-11 00:00:00

[FLASH源码交流]通话详单原代码

;如果使用系统函数,可以有效减小本程序大小
;由于没有时间,只进行了简单注释
;For M55C v11
;ZiHwA

$Segmented
$Mod167

MAIN_Address            EQU 0x551A00
CreateFileEQU 0xB05BAE

romsection code word at MAIN_Address
procrom proc
sub r0, #30h ; '0'
mov r15, r0
mov [-r0], r14
mov [-r0], r13
mov [-r0], r12
extp    #8, #1
mov   r1, 0B08h
jmpr cc_NZ, loc_cont0
extp #7, #2
mov 3c02h, r1; 1FC02h
mov 3c04h, r1; 1FC04h
loc_cont0:
extp #0Dh, #4
movb rl4, 25c8h ;min
movb rh4, 25cah ;hour
movb rl5, 25cch ;day
movb rh5, 25ceh ;month
extp #7, #2
mov r14, 3c02h      ; 1F3C2h, 状态字
mov r1, 33deh         ; 1F3DEh, 状态字   
jmpr cc_Z, loc_DM;1F3DE=0 jmpr M, if 1F3C2h> jmpr D
cmp r14, #6
jmpr cc_NC, loc_O ;1F3DE>6 jmpr O
loc_I:
movb rl1, #49h ; 'I'已接
jmpr cc_UC, loc_cont1
loc_DM:
cmp r14,#6
jmpr cc_C, loc_M ;1F3C2h<6 jmpr M
loc_D:
movb rl1, #44h ; 'D'拨号
jmpr cc_UC, continu
loc_M:
movb rl1, #4Dh ; 'M'未接
jmpr cc_UC, loc_cont1
loc_
movb rl1, #4Fh ; 'O'
loc_cont1:
callr AddChar
callr addspace
jmpr cc_UC, loc_cont2
loc_cont3:
subb rl4, #1
jmpr cc_NZ, loc_cont2
movb rl4, #3Bh ; ';'
subb rh4, #1
jmpr cc_NZ, loc_cont2
movb rh4, #17h
subb rl5, #1
jmpr cc_NZ, loc_cont2
subb rh5, #1
jmpr cc_NZ, loc_cont4
movb rh5, #0Ch
loc_cont4:
movbz r13, rh5
add r13, #pof buff
mov   r14, #1d4h; buff seg
extp r14, #1
movb rl5,
loc_cont2:
sub r1, #3Ch      ; 分离月日XX.YY
jmpr cc_NC, loc_cont3
movb rl1, rh5
callr    HexToDec
movb rl1, #2Eh ; '.'
callr    AddChar
movb rl1, rl5
callr    HexToDec
callr    addspace
movb rl1, rh4         ;分离时间XX:YY
callr   HexToDec
movb rl1, #3Ah ; ':'
callr   AddChar
movb rl1, rl4
callr HexToDec
callr   addspace
extp #7, #1
mov r4, 33deh ; 1F3DEh
jmpr    cc_Z, loc_CallNum ;如果时长为0则直接记录电话号码
movb rl1, #0FFh
loc_cont5:
addb rl1, #1
sub r4, #3Ch      ; 分离时长
jmpr cc_NC, loc_cont5
add r4, #3Ch ; '<'
callr HexToDec
movb rl1, #3Ah ; ':'
callr AddChar
movb rl1, rl4
callr HexToDec
callr addspace
loc_CallNum:
extp #7, #1
mov r4, 3c04h ; 1FC04h
cmpb rl4, #91h ; '? ; 国际格式+
jmpr cc_NZ, loc_cont6
movb rl1, #2Bh ; '+'
callr AddChar
loc_cont6:
mov r5, #0F30h
mov r14, #3C08h
jmpr cc_UC, loc_cont8
loc_cont7:
extp #7, #1
movb rl4,
movb rl1, rl4
andb rl1, rh5
addb rl1, rl5
callr AddChar
movb rl1, rl4
shr r1, #4
andb rl1, rh5
cmpb rl1, rh5
jmpr cc_Z, loc_cont8
addb rl1, rl5
callr AddChar
loc_cont8:
subb rh4, #1
jmpr cc_NC, loc_cont7
movb rl1, #0Dh
callr AddChar
movb rl1, #0Ah
callr AddChar
Continu:
mov r12,
mov r13,
mov r14,
mov [-r0], r15
calls   21h, 0BCF6h
mov r15,
mov r14, r0
sub r15, r14
jmpr cc_Z, loc_cont9
callr sub_1
loc_cont9:
add r0, #30h ; '0'
rets
HexToDec:
movb rh1, #2Fh
loc_cont10:
addb rh1, #1
subb rl1, #0Ah
jmpr cc_NC, loc_cont10
addb rl1, #3Ah
mov [-r0], r1
movb rl1, rh1
callr AddChar
mov r1,
callr AddChar
ret
addspace:
movb rl1, #20h ; ' '
AddChar:
movb , rl1
add r15, #1
ret
sub_1:
mov r8, r14
mov r9, r15
sub r0, #10h
mov r14, r0
and r14, #3FFFh
mov r15, DPP1
mov [-r0], r15
mov [-r0], r14
add r14, #8
mov [-r0], r15
mov [-r0], r14
mov r13, #1d4h ;sof fileAll
mov r12, #pof fileAll
mov r14, #101h;avg1
mov r15, #180h;avg2
calls seg createfile, sof createfile
cmp r4, #0FFFFh
jmpr cc_NZ, sub_cont1
add r0, #8
jmpr cc_UC, sub_cont2
sub_cont1:
push r4
mov r12, r4
mov r13, #0
mov r14, #0
mov r15, #2
calls   0B0h, 045Dh
mov r13, r8
and r13, #3FFFh
mov r14, DPP1
mov r15, r9
pop r8
mov r12, r8
calls   0B0h, 545Dh
add r0, #4
mov r13,
mov r14,
mov r12, r8
calls   0B0h, 965Dh
sub_cont2:
add r0, #10h
ret
EndAddress      equ $
procrom endp
rom ends

mydata section data word at EndAddress
buff: db 00,1Fh,1Ch,1Fh,1Eh,1Fh,1Eh,1Fh,1Fh,1Eh,1Fh,1Eh,1Fh,00,00,00
fileAll: db 'a:\listall.txt',00,0FFh
mydata ends

end

[此贴子已经被作者于2004-5-31 22:24:44编辑过]

RainMoon 发表于 2005-8-11 00:01:00

谢谢 ZiHwA! 研究研究 :)

LeoYoung 发表于 2005-8-11 00:02:00

要是用C语言来写就安逸了!---Jewes

远帆 发表于 2005-8-11 00:03:00

不错!

dsb999 发表于 2005-8-11 00:04:00

能不能移植到小8上面啊,等了好久了。

woaiwoai 发表于 2005-8-11 00:05:00

请问这个源程序用什么可以编译??

MFC 发表于 2005-8-11 00:06:00

收藏一下,有空再研究

yfy 发表于 2005-8-11 00:07:00

X618的能用吗?

阿土伯伯 发表于 2005-8-11 00:08:00

楼上不回答网友们的问题吗
页: [1]
查看完整版本: [FLASH源码交流]通话详单原代码