📄 show_stop.lst
字号:
85 /*
86 ********************************************************************************
87 * Description : 计算当前目录下的总录音文件个数
88 *
89 * Arguments :
90 *
91 * Returns : 全局变量
92 g_file_num, 总录音文件个数
93 *
94 * Notes :
95 *
96 ********************************************************************************
97 */
98 void parse_total_num(void)
99 {
\ 00F0 C5 PUSH BC
\ 00F1 D5 PUSH DE
\ 00F2 21F4FF LD HL,65524
\ 00F5 39 ADD HL,SP
\ 00F6 F9 LD SP,HL
100 char name[12];
101
102 g_file_num = 0;
\ 00F7 AF XOR A
\ 00F8 320000 LD (g_file_num),A
103
104 if(FS_Dir(name, voice_ext[0], FS_DIR_FILE))
\ 00FB 0E80 LD C,128
\ 00FD C5 PUSH BC
\ 00FE 010800 LD BC,voice_ext
\ 0101 EB EX DE,HL
\ 0102 CD0000 CALL LWRD FS_Dir
\ 0105 E1 POP HL
\ 0106 B7 OR A
\ 0107 2822 JR Z,?0012
\ 0109 ?0010:
105 {
106 g_file_num++;
\ 0109 210000 LD HL,g_file_num
\ 010C 34 INC (HL)
\ 010D ?0013:
107
108 while( FS_Dir(name, voice_ext[0], FS_DIR_FILE_CONT))
\ 010D 0E00 LD C,0
\ 010F C5 PUSH BC
\ 0110 010800 LD BC,voice_ext
\ 0113 210200 LD HL,2
\ 0116 39 ADD HL,SP
\ 0117 EB EX DE,HL
\ 0118 CD0000 CALL LWRD FS_Dir
\ 011B E1 POP HL
\ 011C B7 OR A
\ 011D 280C JR Z,?0012
\ 011F ?0014:
109 {
110 g_file_num++;
\ 011F 210000 LD HL,g_file_num
\ 0122 34 INC (HL)
111 CLEAR_WATCHDOG();
\ 0123 DB4E IN A,(78)
\ 0125 CBDF SET 3,A
\ 0127 D34E OUT (78),A
112 }
113 }
\ 0129 18E2 JR ?0013
\ 012B ?0012:
\ 012B ?0011:
114
115 }
\ 012B 210C00 LD HL,12
\ 012E 39 ADD HL,SP
\ 012F F9 LD SP,HL
\ 0130 D1 POP DE
\ 0131 C1 POP BC
\ 0132 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0135 format_filename:
116 /*
117 ********************************************************************************
118 * Description : 格式化文件名
119 *
120 * Arguments : 全局变量
121 g_record_vars.rec_type
122 *
123 * Returns : 全局变量
124 g_record_vars.location.filename
125 *
126 * Notes : RECxx.WAV or RECxx.ACT
127 *
128 ********************************************************************************
129 */
130 void format_filename(void)
131 {
\ 0135 C5 PUSH BC
\ 0136 D5 PUSH DE
132 //date_t date;
133
134 strcpy(g_record_vars.location.filename, "REC");
\ 0137 110000 LD DE,?0015
\ 013A 212400 LD HL,g_record_vars+36
\ 013D CD0000 CALL LWRD ?STRCPY_L11
135 //REC000.WAV
136 itoa_3(g_record_vars.wav_num, &g_record_vars.location.filename[3]);
\ 0140 012700 LD BC,g_record_vars+39
\ 0143 ED5B0600 LD DE,(g_record_vars+6)
\ 0147 3E00 LD A,BYTE3 itoa_3
\ 0149 210000 LD HL,LWRD itoa_3
\ 014C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
137 strcat(g_record_vars.location.filename, " WAV");
\ 014F 110400 LD DE,?0016
\ 0152 212400 LD HL,g_record_vars+36
\ 0155 CD0000 CALL LWRD ?STRCAT_L11
138
139 }
\ 0158 D1 POP DE
\ 0159 C1 POP BC
\ 015A C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 015D gen_filename:
140 /*
141 ********************************************************************************
142 * Description : 生成新的录音文件名
143 *
144 * Arguments : 全局变量
145 g_record_vars.rec_type
146 *
147 * Returns : TRUE, 成功
148 FALSE, 编号01~99 文件都存在
149 全局变量
150 g_record_vars.location
151 g_record_vars.wav_num
152 g_file_name_time[], 文件名,文件时间字符串
153 *
154 * Notes :
155 *
156 ********************************************************************************
157 */
158 BOOL gen_filename(void)
159 {
\ 015D C5 PUSH BC
\ 015E D5 PUSH DE
\ 015F DDE5 PUSH IX
\ 0161 F5 PUSH AF
\ 0162 F5 PUSH AF
160 date_t date;
161
162 int num = GenNewName(&g_record_vars.location);
\ 0163 110A00 LD DE,g_record_vars+10
\ 0166 3E00 LD A,BYTE3 GenNewName
\ 0168 210000 LD HL,LWRD GenNewName
\ 016B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
163
164 //check 01~99 full
165 if(num == 0) return FALSE;
\ 016E 7D LD A,L
\ 016F B4 OR H
\ 0170 2003 JR NZ,?0018
\ 0172 ?0017:
\ 0172 6F LD L,A
\ 0173 1853 JR ?0020
\ 0175 ?0018:
166 g_record_vars.wav_num = num;
\ 0175 220600 LD (g_record_vars+6),HL
167
168 //build g_file_name_time for display
169 memcpy(g_file_name_time, g_record_vars.location.filename, sizeof("REC00"));
\ 0178 010600 LD BC,6
\ 017B 110000 LD DE,g_file_name_time
\ 017E 212400 LD HL,g_record_vars+36
\ 0181 EDB0 LDIR
170 TM_GetDate(&date, 0);
\ 0183 69 LD L,C
\ 0184 60 LD H,B
\ 0185 39 ADD HL,SP
\ 0186 EB EX DE,HL
\ 0187 CD0000 CALL LWRD TM_GetDate
171 //g_file_build_time[5] = ' '; //"WAVxx "
172 itoa_4(date.year, &g_file_build_time[0]);
\ 018A 010000 LD BC,g_file_build_time
\ 018D 210000 LD HL,0
\ 0190 39 ADD HL,SP
\ 0191 5E LD E,(HL)
\ 0192 23 INC HL
\ 0193 56 LD D,(HL)
\ 0194 3E00 LD A,BYTE3 itoa_4
\ 0196 210000 LD HL,LWRD itoa_4
\ 0199 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
173 g_file_build_time[4] = '/'; //"WAVxx 2004/"
\ 019C 3E2F LD A,47
\ 019E 320400 LD (g_file_build_time+4),A
174 itoa_2(date.month, &g_file_build_time[5]);
\ 01A1 010500 LD BC,g_file_build_time+5
\ 01A4 210200 LD HL,2
\ 01A7 39 ADD HL,SP
\ 01A8 5E LD E,(HL)
\ 01A9 3E00 LD A,BYTE3 itoa_2
\ 01AB 210000 LD HL,LWRD itoa_2
\ 01AE CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
175 g_file_build_time[7] = '/'; //"WAVxx 2004/01/"
\ 01B1 3E2F LD A,47
\ 01B3 320700 LD (g_file_build_time+7),A
176 itoa_2(date.day, &g_file_build_time[8]);
\ 01B6 010800 LD BC,g_file_build_time+8
\ 01B9 210300 LD HL,3
\ 01BC 39 ADD HL,SP
\ 01BD 5E LD E,(HL)
\ 01BE 3E00 LD A,BYTE3 itoa_2
\ 01C0 210000 LD HL,LWRD itoa_2
\ 01C3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
177 //"WAVxx 2004/01/01"
178
179 return TRUE;
\ 01C6 2E01 LD L,1
180 }
\ 01C8 ?0020:
\ 01C8 F1 POP AF
\ 01C9 F1 POP AF
\ 01CA DDE1 POP IX
\ 01CC D1 POP DE
\ 01CD C1 POP BC
\ 01CE C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01D1 show_stop:
181
182 /*
183 ********************************************************************************
184 * Description : 停止界面
185 *
186 * Arguments : auto_start, 是否自动开始录音
187 *
188 * Returns :
189 *
190 * Notes :
191 *
192 ********************************************************************************
193 */
194 int show_stop(BOOL auto_start)
195 {
\ 01D1 C5 PUSH BC
\ 01D2 FDE5 PUSH IY
\ 01D4 DDE5 PUSH IX
\ 01D6 DD210000 LD IX,0
\ 01DA DD39 ADD IX,SP
\ 01DC D5 PUSH DE
\ 01DD F5 PUSH AF
\ 01DE F5 PUSH AF
\ 01DF F5 PUSH AF
196 int result;
197 char key;
198 //int i=0; //loop counter
199 BOOL need_draw=TRUE;
200 BOOL need_parse=TRUE; //需要分析文件个数,总时间
201 BYTE rec_bitrate; //改变前保存旧的
202 BOOL waiting_keyup=FALSE; //录音后在等待用户按键抬起
203
204 g_menu_active = TRUE;
\ 01E0 3E01 LD A,1
\ 01E2 320B00 LD (g_menu_active),A
205
206 Open_RecRoute(g_rec_from); //根据当前录音源,打开及设置录音通道
\ 01E5 ED5B0000 LD DE,(g_rec_from)
\ 01E9 3E00 LD A,BYTE3 Open_RecRoute
\ 01EB 210000 LD HL,LWRD Open_RecRoute
\ 01EE CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01F1 DD36FA01 LD (IX-6),1
\ 01F5 DD36F901 LD (IX-7),1
\ 01F9 ?0090:
\ 01F9 DD36FB00 LD (IX-5),0
\ 01FD ?0022:
207
208 while(1)
209 {
210 //check if need count num & time
211 if(need_parse)
\ 01FD AF XOR A
\ 01FE DDB6F9 OR (IX-7)
\ 0201 CAF102 JP Z,?0025
\ 0204 ?0024:
212 {
213 parse_total_num();
\ 0204 3E00 LD A,BYTE3 parse_total_num
\ 0206 21F000 LD HL,LWRD parse_total_num
\ 0209 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
214
215 //recommend by ryan
216 if(g_file_num >= 200)
\ 020C 3A0000 LD A,(g_file_num)
\ 020F FEC8 CP 200
\ 0211 383A JR C,?0027
\ 0213 ?0026:
217 {
218 //print some error message
219 show_error(MDIROUT);
\ 0213 111902 LD DE,537
\ 0216 3E00 LD A,BYTE3 show_error
\ 0218 210000 LD HL,LWRD show_error
\ 021B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
220
221 //进入选项让用户选择其他目录,或者改类型
222 rec_bitrate = g_record_vars.rec_bitrate;
\ 021E 3A0300 LD A,(g_record_vars+3)
\ 0221 DD77FC LD (IX-4),A
223
224 result = show_stop_menu();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -