📄 sub_function2.lst
字号:
\ 010F 3A0000 LD A,(g_langid)
\ 0112 4F LD C,A
\ 0113 C5 PUSH BC
\ 0114 0E1E LD C,30
\ 0116 110000 LD DE,dir_name
\ 0119 3E00 LD A,BYTE3 unitochar
\ 011B 210000 LD HL,LWRD unitochar
\ 011E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0121 F1 POP AF
108 }
109 else
\ 0122 1810 JR ?0018
\ 0124 ?0017:
110 {
111 memcpy(dir_name, g_amv_vars.location.path, 12);
\ 0124 0E0C LD C,12
\ 0126 110000 LD DE,dir_name
\ 0129 211300 LD HL,g_amv_vars+19
\ 012C EDB0 LDIR
112 dir_name[8]=0;
\ 012E 320800 LD (dir_name+8),A
113 dir_name[9]=0;
\ 0131 320900 LD (dir_name+9),A
\ 0134 ?0018:
114 }
115 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 0134 210000 LD HL,0
\ 0137 E5 PUSH HL
\ 0138 0E02 LD C,2
\ 013A 23 INC HL
\ 013B 23 INC HL
\ 013C 39 ADD HL,SP
\ 013D EB EX DE,HL
\ 013E CD0000 CALL LWRD FS_Restore
\ 0141 E1 POP HL
\ 0142 ?0015:
116 }
117
118
119 }
\ 0142 212000 LD HL,32
\ 0145 39 ADD HL,SP
\ 0146 F9 LD SP,HL
\ 0147 DDE1 POP IX
\ 0149 D1 POP DE
\ 014A C1 POP BC
\ 014B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 014E read_var:
120
121 void read_var( void )
122 {
\ 014E C5 PUSH BC
\ 014F D5 PUSH DE
\ 0150 DDE5 PUSH IX
123 int result;
124 //comval_t g_comval; //系统变量,ap不能更改
125
126
127 //read comval
128 result = VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
\ 0152 212000 LD HL,32
\ 0155 E5 PUSH HL
\ 0156 010002 LD BC,512
\ 0159 110000 LD DE,g_comval
\ 015C CD0000 CALL LWRD VMRead
\ 015F E1 POP HL
129 ASSERT(result);
130
131 //check if valid
132 if (g_comval.magic != MAGIC_COMVAL)
\ 0160 21ADDE LD HL,57005
\ 0163 ED4B0000 LD BC,(g_comval)
\ 0167 A7 AND A
\ 0168 ED42 SBC HL,BC
\ 016A 2806 JR Z,?0020
\ 016C ?0019:
133 {
134 GetDefaultComval(&g_comval);
\ 016C 110000 LD DE,g_comval
\ 016F CD0000 CALL LWRD GetDefaultComval
\ 0172 ?0020:
135 }
136
137 g_langid = g_comval.langid;//记录系统语言
\ 0172 3A0C00 LD A,(g_comval+12)
\ 0175 320000 LD (g_langid),A
138 g_BatteryType = g_comval.BatteryType;//记录电池类型
\ 0178 3A0F00 LD A,(g_comval+15)
\ 017B 320000 LD (g_BatteryType),A
139
140 ap_message_init(& g_comval);
\ 017E 110000 LD DE,g_comval
\ 0181 3E00 LD A,BYTE3 ap_message_init
\ 0183 210000 LD HL,LWRD ap_message_init
\ 0186 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
141
142 //read ap vars
143 result = VMRead(& g_amv_vars, VM_AP_AMV, sizeof(g_amv_vars));
\ 0189 213600 LD HL,54
\ 018C E5 PUSH HL
\ 018D 010048 LD BC,18432
\ 0190 110000 LD DE,g_amv_vars
\ 0193 CD0000 CALL LWRD VMRead
\ 0196 E1 POP HL
144 ASSERT(result);
145
146 //check if valid
147 if (g_amv_vars.magic != MAGIC_AMV)
\ 0197 216D61 LD HL,24941
\ 019A ED4B0000 LD BC,(g_amv_vars)
\ 019E A7 AND A
\ 019F ED42 SBC HL,BC
\ 01A1 2825 JR Z,?0022
\ 01A3 ?0021:
148 {
149
150 g_amv_vars.magic = MAGIC_AMV;
\ 01A3 216D61 LD HL,24941
\ 01A6 220000 LD (g_amv_vars),HL
151 g_amv_vars.volume = 24;
\ 01A9 3E18 LD A,24
\ 01AB 320200 LD (g_amv_vars+2),A
152 g_amv_vars.repeat_mode = FSEL_ALL_SEQUENCE;
\ 01AE AF XOR A
\ 01AF 320300 LD (g_amv_vars+3),A
153 g_amv_vars.location.disk = 'C';
\ 01B2 3E43 LD A,67
\ 01B4 320500 LD (g_amv_vars+5),A
154
155 strcpy(g_amv_vars.location.path, FS_CD_ROOT);
\ 01B7 110500 LD DE,?0023
\ 01BA 211300 LD HL,g_amv_vars+19
\ 01BD CD0000 CALL LWRD ?STRCPY_L11
156 ClearTimePara();
\ 01C0 3E00 LD A,BYTE3 ClearTimePara
\ 01C2 215802 LD HL,LWRD ClearTimePara
\ 01C5 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01C8 ?0022:
157 }
158
159
160 }
\ 01C8 DDE1 POP IX
\ 01CA D1 POP DE
\ 01CB C1 POP BC
\ 01CC C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 01CF DealErrCase:
161 /*
162 ********************************************************************************
163 * bool DealErrCase(void)
164 *
165 * Description : 获取文件选择器的出错类型 (文件选择器错处理)
166 *
167 * Arguments : void
168 *
169 * Returns : int 出错号
170 *
171 * Notes :
172 *
173 ********************************************************************************
174 */
175 bool DealErrCase( void )
176 {
\ 01CF C5 PUSH BC
\ 01D0 D5 PUSH DE
\ 01D1 F5 PUSH AF
177
178 BYTE id;
179
180
181 id = FSELGetErrID();
\ 01D2 3E00 LD A,BYTE3 fselGetErrID
\ 01D4 210000 LD HL,LWRD fselGetErrID
\ 01D7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01DA E5 PUSH HL
\ 01DB 210200 LD HL,2
\ 01DE 39 ADD HL,SP
\ 01DF C1 POP BC
\ 01E0 71 LD (HL),C
\ 01E1 ?0025:
182 while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
\ 01E1 CD0000 CALL LWRD ap_get_message
\ 01E4 B7 OR A
\ 01E5 20FA JR NZ,?0025
\ 01E7 ?0026:
\ 01E7 ?0024:
183 switch (id)
\ 01E7 6F LD L,A
\ 01E8 67 LD H,A
\ 01E9 39 ADD HL,SP
\ 01EA 7E LD A,(HL)
\ 01EB FE02 CP 2
\ 01ED 200C JR NZ,?0029
\ 01EF ?0028:
184 {
185 case FSEL_ERR_EMPTY:
186 ui_show_msg (DFILEOUT, DFILEOUT, g_langid);
\ 01EF ED4B0000 LD BC,(g_langid)
\ 01F3 0600 LD B,0
\ 01F5 C5 PUSH BC
\ 01F6 019201 LD BC,402
\ 01F9 1812 JR ?0040
187 ap_sleep(4);
188 break;
\ 01FB ?0029:
\ 01FB FE15 CP 21
\ 01FD 3824 JR C,?0027
\ 01FF FE17 CP 23
\ 0201 3020 JR NC,?0027
189
190 case FSEL_ERR_FAIL:
191 case FSEL_ERR_DISK:
192 ui_show_msg (MREADERR, MREADERR, g_langid);
\ 0203 ED4B0000 LD BC,(g_langid)
\ 0207 0600 LD B,0
\ 0209 C5 PUSH BC
\ 020A 018901 LD BC,393
\ 020D ?0040:
\ 020D 59 LD E,C
\ 020E 50 LD D,B
\ 020F 3E00 LD A,BYTE3 ui_show_msg
\ 0211 210000 LD HL,LWRD ui_show_msg
\ 0214 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0217 F1 POP AF
193 ap_sleep(4);
\ 0218 110400 LD DE,4
\ 021B 3E00 LD A,BYTE3 ap_sleep
\ 021D 210000 LD HL,LWRD ap_sleep
\ 0220 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
194 break;
\ 0223 ?0030:
195
196 default:
197 break;
\ 0223 ?0027:
198 }
199
200 ResClose(g_Resfp_Sav);
\ 0223 ED5B0000 LD DE,(g_Resfp_Sav)
\ 0227 3E00 LD A,BYTE3 ResClose
\ 0229 210000 LD HL,LWRD ResClose
\ 022C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
201 return 0;
\ 022F 2E00 LD L,0
202
203 }
\ 0231 F1 POP AF
\ 0232 D1 POP DE
\ 0233 C1 POP BC
\ 0234 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0237 openDAC:
204
205
206 void openDAC(void)
207 {
\ 0237 D5 PUSH DE
\ 0238 F5 PUSH AF
\ 0239 F5 PUSH AF
208 dac_t dacattr;
209 output8(0x5,0xf7); // set the 05 regsiter
\ 023A 3EF7 LD A,247
\ 023C D305 OUT (5),A
210 output8(0x4e,input8(0x4e)|0x8);
\ 023E DB4E IN A,(78)
\ 0240 CBDF SET 3,A
\ 0242 D34E OUT (78),A
211
212 dacattr.dacselect = 0;
\ 0244 210000 LD HL,0
\ 0247 39 ADD HL,SP
\ 0248 3600 LD (HL),0
213 dacattr.rate = 22;
\ 024A 23 INC HL
\ 024B 3616 LD (HL),22
214 EnableDAC(&dacattr);
\ 024D 2B DEC HL
\ 024E EB EX DE,HL
\ 024F CD0000 CALL LWRD EnableDAC
215
216 }
\ 0252 E1 POP HL
\ 0253 E1 POP HL
\ 0254 D1 POP DE
\ 0255 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0258 ClearTimePara:
217
218 void ClearTimePara(void)
219 {
\ 0258 C5 PUSH BC
220 BYTE i;
221 g_amv_vars.amvfilebreakpoint.AmvFileFLashDot=0;
\ 0259 010000 LD BC,0
\ 025C ED432E00 LD (g_amv_vars+46),BC
\ 0260 ED433000 LD (g_amv_vars+48),BC
222 g_amv_vars.amvfilebreakpoint.TimeSec=0;
\ 0264 AF XOR A
\ 0265 323200 LD (g_amv_vars+50),A
223 g_amv_vars.amvfilebreakpoint.TimeMin=0;
\ 0268 323300 LD (g_amv_vars+51),A
224 g_amv_vars.amvfilebreakpoint.TimeHou=0;
\ 026B 323400 LD (g_amv_vars+52),A
225
226
227 }
\ 026E C1 POP BC
\ 026F C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0272 GetInformation1:
228
229
230
231 /*
232 ********************************************************************************
233 * int GetInformation(void)
234 *
235 * Description : 读取歌曲信息,歌词
236 *
237 * Arguments : void
238 *
239 * Returns : int
240 *
241 * Notes :
242 *
243 ********************************************************************************
244 */
245 int GetInformation1( void )//取下一首文件信息
246 {
\ 0272 C5 PUSH BC
\ 0273 D5 PUSH DE
\ 0274 DDE5 PUSH IX
247 int result;
248 memcpy(g_TagInfoBuf, g_amv_vars.location.filename, 12);
\ 0276 010C00 LD BC,12
\ 0279 110000 LD DE,g_TagInfoBuf
\ 027C 211F00 LD HL,g_amv_vars+31
\ 027F EDB0 LDIR
249 result = FS_GetName(g_TagInfoBuf, 31); //取出长名
\ 0281 0E1F LD C,31
\ 0283 110000 LD DE,g_TagInfoBuf
\ 0286 CD0000 CALL LWRD FS_GetName
\ 0289 0600 LD B,0
250 if (result != 0)
\ 028B B7 OR A
\ 028C 2815 JR Z,?0032
\ 028E ?0031:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -