📄 show_stop.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:32:50 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_fmrecord\show_stop.c #
# List file = d:\case_i_d913f\ap\ap_fmrecord\list\show_stop.lst #
# Object file = d:\case_i_d913f\ap\ap_fmrecord\obj\show_stop.r01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_fmrecord\Obj\ -e #
# -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_fmrecord\List\ -q -t8 -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_FMRECORD\show_stop.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME show_stop(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN FS_Dir
\ 0000 EXTERN FS_GetSpace
\ 0000 EXTERN GenNewName
\ 0000 EXTERN GetBattery
\ 0000 EXTERN Open_RecRoute
\ 0000 PUBLIC Rec_format
\ 0000 PUBLIC Rec_resource
\ 0000 EXTERN TM_GetDate
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN ap_sleep
\ 0000 PUBLIC channelnum
\ 0000 PUBLIC currentBitrate
\ 0000 EXTERN do_rec
\ 0000 EXTERN fm_show_stop_menu
\ 0000 PUBLIC format_filename
\ 0000 EXTERN fselInit
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_file_build_time
\ 0000 EXTERN g_file_name_time
\ 0000 EXTERN g_file_num
\ 0000 EXTERN g_free_space
\ 0000 PUBLIC g_menu_active
\ 0000 EXTERN g_now_time
\ 0000 EXTERN g_rec_event
\ 0000 EXTERN g_rec_from
\ 0000 EXTERN g_rec_time
\ 0000 EXTERN g_record_vars
\ 0000 PUBLIC gen_filename
\ 0000 EXTERN itoa_1
\ 0000 EXTERN itoa_2
\ 0000 EXTERN itoa_3
\ 0000 EXTERN itoa_4
\ 0000 EXTERN main_ResShowPic
\ 0000 EXTERN make_dirname
\ 0000 PUBLIC parse_total_num
\ 0000 PUBLIC parse_total_time
\ 0000 PUBLIC rec_Fsrate
\ 0000 PUBLIC rec_FsrateCodec
\ 0000 EXTERN reset_record_dir
\ 0000 EXTERN show_error
\ 0000 PUBLIC show_stop
\ 0000 EXTERN show_stop_menu
\ 0000 EXTERN status
\ 0000 EXTERN time
\ 0000 EXTERN ui_draw
\ 0000 EXTERN ui_show_batt
\ 0000 EXTERN ui_show_d
\ 0000 EXTERN ui_show_msg
\ 0000 PUBLIC voice_ext
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?L_LSH_L03
\ 0000 EXTERN ?UL_DIV_L03
\ 0000 EXTERN ?UL_MOD_L03
\ 0000 EXTERN ?UL_DIVASG_L03
\ 0000 EXTERN ?UL_MODASG_L03
\ 0000 EXTERN ?L_ADDASG_L03
\ 0000 EXTERN ?UL_RSHASG_L03
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?STRCPY_L11
\ 0000 EXTERN ?STRCAT_L11
\ 0000 RSEG CODE
\ 0000 parse_total_time:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * voice recorder main program.
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: show_stop.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
10 *******************************************************************************
11 */
12 #include "actos.h"
13 #include "basal.h"
14 #include "enhanced.h"
15 #include "ap_common.h"
16 #include "ap_record.h"
17 #include "codec.h"
18
19 const char rec_Fsrate[4]={8,8,48,48};
20 const char rec_FsrateCodec[4]={_FS_8K,_FS_8K/*,_FS_12K,_FS_16K,_FS_24K,_FS_32K*/,_FS_48K,_FS_48K};
21 const char voice_ext[][4] = {"WAV", "ACT"};
22 char currentBitrate[4];
23 resource_t Rec_resource={0};
24 audio_format_t Rec_format;
25 channelnum_t channelnum;
26 BOOL g_menu_active;
27
28 extern int fm_show_stop_menu(void);
29 extern int show_stop_menu(void);
30 extern BOOL reset_record_dir(void);
31 extern void Open_RecRoute(byte rec_source);
32
33 extern enum
34 {
35 stop,
36 recording,
37 pause,
38 wait_to_save,
39 saving
40 }status;
41 /*
42 ********************************************************************************
43 * Description : 分析剩余空间,计算可录音时间
44 *
45 * Arguments :
46 *
47 * Returns : 全局变量
48 g_total_time[], 总录音时间字符串
49 g_free_space, 剩余空间,单位page
50 *
51 * Notes :
52 *
53 ********************************************************************************
54 */
55 void parse_total_time(void)
56 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 DDE5 PUSH IX
\ 0004 DD210000 LD IX,0
\ 0008 DD39 ADD IX,SP
\ 000A F5 PUSH AF
\ 000B F5 PUSH AF
57 //BOOL mc_result;
58 ulong total_sec=0L;
59 // time_t time;
60
61 //show total time
62 g_free_space = (ulong)FS_GetSpace(FS_GET_SPACE_FREE);
\ 000C 1E01 LD E,1
\ 000E CD0000 CALL LWRD FS_GetSpace
\ 0011 220000 LD (g_free_space),HL
\ 0014 ED430200 LD (g_free_space+2),BC
63
64 if(g_free_space > SPACE_LOW) g_free_space -= SPACE_LOW;
\ 0018 AF XOR A
\ 0019 C5 PUSH BC
\ 001A E5 PUSH HL
\ 001B 211400 LD HL,20
\ 001E C1 POP BC
\ 001F ED42 SBC HL,BC
\ 0021 6F LD L,A
\ 0022 67 LD H,A
\ 0023 C1 POP BC
\ 0024 ED42 SBC HL,BC
\ 0026 300E JR NC,?0003
\ 0028 ?0002:
\ 0028 210000 LD HL,g_free_space
\ 002B 01FFFF LD BC,65535
\ 002E 11ECFF LD DE,65516
\ 0031 CD0000 CALL LWRD ?L_ADDASG_L03
65 else
\ 0034 180D JR ?0004
\ 0036 ?0003:
66 {
67 g_free_space = 0;
\ 0036 4F LD C,A
\ 0037 47 LD B,A
\ 0038 ED430000 LD (g_free_space),BC
\ 003C ED430200 LD (g_free_space+2),BC
68 return;
69 }
\ 0040 C3E700 JP LWRD ?0009
\ 0043 ?0004:
70
71 //wav: 128 ms/page
72 total_sec = (g_free_space - 1) * 1024/rec_Fsrate[g_record_vars.rec_bitrate];
\ 0043 ED4B0300 LD BC,(g_record_vars+3)
\ 0047 47 LD B,A
\ 0048 210000 LD HL,rec_Fsrate
\ 004B 09 ADD HL,BC
\ 004C 6E LD L,(HL)
\ 004D 48 LD C,B
\ 004E 61 LD H,C
\ 004F C5 PUSH BC
\ 0050 E5 PUSH HL
\ 0051 21FFFF LD HL,65535
\ 0054 E5 PUSH HL
\ 0055 E5 PUSH HL
\ 0056 2A0000 LD HL,(g_free_space)
\ 0059 C1 POP BC
\ 005A 09 ADD HL,BC
\ 005B EB EX DE,HL
\ 005C 2A0200 LD HL,(g_free_space+2)
\ 005F C1 POP BC
\ 0060 ED4A ADC HL,BC
\ 0062 4D LD C,L
\ 0063 44 LD B,H
\ 0064 EB EX DE,HL
\ 0065 3E0A LD A,10
\ 0067 CD0000 CALL LWRD ?L_LSH_L03
\ 006A CD0000 CALL LWRD ?UL_DIV_L03
\ 006D DD75FC LD (IX-4),L
\ 0070 DD74FD LD (IX-3),H
\ 0073 DD71FE LD (IX-2),C
\ 0076 DD70FF LD (IX-1),B
73 total_sec=total_sec/1000;
\ 0079 210000 LD HL,0
\ 007C 39 ADD HL,SP
\ 007D 010000 LD BC,0
\ 0080 11E803 LD DE,1000
\ 0083 CD0000 CALL LWRD ?UL_DIVASG_L03
74
75 // 比特率为64K,384K(双声道)的时间不变,比特率为32K,192K(单声道)的时间乘以2
76 if(g_record_vars.rec_bitrate == 1 || g_record_vars.rec_bitrate == 3)
\ 0086 3A0300 LD A,(g_record_vars+3)
\ 0089 3D DEC A
\ 008A 2807 JR Z,?0007
\ 008C 3A0300 LD A,(g_record_vars+3)
\ 008F FE03 CP 3
\ 0091 2005 JR NZ,?0006
\ 0093 ?0007:
\ 0093 ?0008:
\ 0093 ?0005:
77 total_sec = total_sec / 2;
\ 0093 3E01 LD A,1
\ 0095 CD0000 CALL LWRD ?UL_RSHASG_L03
\ 0098 ?0006:
78
79 time.hour = total_sec / 3600;
\ 0098 210000 LD HL,0
\ 009B E5 PUSH HL
\ 009C 21100E LD HL,3600
\ 009F E5 PUSH HL
\ 00A0 DD4EFE LD C,(IX-2)
\ 00A3 DD46FF LD B,(IX-1)
\ 00A6 DD6EFC LD L,(IX-4)
\ 00A9 DD66FD LD H,(IX-3)
\ 00AC CD0000 CALL LWRD ?UL_DIV_L03
\ 00AF 7D LD A,L
\ 00B0 320000 LD (time),A
80 total_sec %= 3600;
\ 00B3 210000 LD HL,0
\ 00B6 39 ADD HL,SP
\ 00B7 010000 LD BC,0
\ 00BA 11100E LD DE,3600
\ 00BD CD0000 CALL LWRD ?UL_MODASG_L03
81 time.minute = total_sec / 60;
\ 00C0 210000 LD HL,0
\ 00C3 E5 PUSH HL
\ 00C4 2E3C LD L,60
\ 00C6 E5 PUSH HL
\ 00C7 EB EX DE,HL
\ 00C8 CD0000 CALL LWRD ?UL_DIV_L03
\ 00CB 7D LD A,L
\ 00CC 320100 LD (time+1),A
82 time.second= total_sec % 60;
\ 00CF 6A LD L,D
\ 00D0 62 LD H,D
\ 00D1 E5 PUSH HL
\ 00D2 EB EX DE,HL
\ 00D3 E5 PUSH HL
\ 00D4 DD4EFE LD C,(IX-2)
\ 00D7 DD46FF LD B,(IX-1)
\ 00DA DD6EFC LD L,(IX-4)
\ 00DD DD66FD LD H,(IX-3)
\ 00E0 CD0000 CALL LWRD ?UL_MOD_L03
\ 00E3 7D LD A,L
\ 00E4 320200 LD (time+2),A
83
84 }
\ 00E7 ?0009:
\ 00E7 DDF9 LD SP,IX
\ 00E9 DDE1 POP IX
\ 00EB D1 POP DE
\ 00EC C1 POP BC
\ 00ED C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00F0 parse_total_num:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -