📄 sub_function2.s01
字号:
LD HL,24941
LD (g_amv_vars),HL
; 151. g_amv_vars.volume = 24;
LD A,24
LD (g_amv_vars+2),A
; 152. g_amv_vars.repeat_mode = FSEL_ALL_SEQUENCE;
XOR A
LD (g_amv_vars+3),A
; 153. g_amv_vars.location.disk = 'C';
LD A,67
LD (g_amv_vars+5),A
; 154.
; 155. strcpy(g_amv_vars.location.path, FS_CD_ROOT);
LD DE,?0023
LD HL,g_amv_vars+19
CALL LWRD ?STRCPY_L11
; 156. ClearTimePara();
LD A,BYTE3 ClearTimePara
LD HL,LWRD ClearTimePara
CALL LWRD ?BANK_CALL_DIRECT_L08
?0022:
; 157. }
; 158.
; 159.
; 160. }
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
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. {
PUSH BC
PUSH DE
PUSH AF
; 177.
; 178. BYTE id;
; 179.
; 180.
; 181. id = FSELGetErrID();
LD A,BYTE3 fselGetErrID
LD HL,LWRD fselGetErrID
CALL LWRD ?BANK_CALL_DIRECT_L08
PUSH HL
LD HL,2
ADD HL,SP
POP BC
LD (HL),C
?0025:
; 182. while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
CALL LWRD ap_get_message
OR A
JR NZ,?0025
?0026:
?0024:
; 183. switch (id)
LD L,A
LD H,A
ADD HL,SP
LD A,(HL)
CP 2
JR NZ,?0029
?0028:
; 184. {
; 185. case FSEL_ERR_EMPTY:
; 186. ui_show_msg (DFILEOUT, DFILEOUT, g_langid);
LD BC,(g_langid)
LD B,0
PUSH BC
LD BC,402
JR ?0040
; 187. ap_sleep(4);
; 188. break;
?0029:
CP 21
JR C,?0027
CP 23
JR NC,?0027
; 189.
; 190. case FSEL_ERR_FAIL:
; 191. case FSEL_ERR_DISK:
; 192. ui_show_msg (MREADERR, MREADERR, g_langid);
LD BC,(g_langid)
LD B,0
PUSH BC
LD BC,393
?0040:
LD E,C
LD D,B
LD A,BYTE3 ui_show_msg
LD HL,LWRD ui_show_msg
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 193. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 194. break;
?0030:
; 195.
; 196. default:
; 197. break;
?0027:
; 198. }
; 199.
; 200. ResClose(g_Resfp_Sav);
LD DE,(g_Resfp_Sav)
LD A,BYTE3 ResClose
LD HL,LWRD ResClose
CALL LWRD ?BANK_CALL_DIRECT_L08
; 201. return 0;
LD L,0
; 202.
; 203. }
POP AF
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
openDAC:
; 204.
; 205.
; 206. void openDAC(void)
; 207. {
PUSH DE
PUSH AF
PUSH AF
; 208. dac_t dacattr;
; 209. output8(0x5,0xf7); // set the 05 regsiter
LD A,247
OUT (5),A
; 210. output8(0x4e,input8(0x4e)|0x8);
IN A,(78)
SET 3,A
OUT (78),A
; 211.
; 212. dacattr.dacselect = 0;
LD HL,0
ADD HL,SP
LD (HL),0
; 213. dacattr.rate = 22;
INC HL
LD (HL),22
; 214. EnableDAC(&dacattr);
DEC HL
EX DE,HL
CALL LWRD EnableDAC
; 215.
; 216. }
POP HL
POP HL
POP DE
JP LWRD ?BANK_FAST_LEAVE_L08
ClearTimePara:
; 217.
; 218. void ClearTimePara(void)
; 219. {
PUSH BC
; 220. BYTE i;
; 221. g_amv_vars.amvfilebreakpoint.AmvFileFLashDot=0;
LD BC,0
LD (g_amv_vars+46),BC
LD (g_amv_vars+48),BC
; 222. g_amv_vars.amvfilebreakpoint.TimeSec=0;
XOR A
LD (g_amv_vars+50),A
; 223. g_amv_vars.amvfilebreakpoint.TimeMin=0;
LD (g_amv_vars+51),A
; 224. g_amv_vars.amvfilebreakpoint.TimeHou=0;
LD (g_amv_vars+52),A
; 225.
; 226.
; 227. }
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
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. {
PUSH BC
PUSH DE
PUSH IX
; 247. int result;
; 248. memcpy(g_TagInfoBuf, g_amv_vars.location.filename, 12);
LD BC,12
LD DE,g_TagInfoBuf
LD HL,g_amv_vars+31
LDIR
; 249. result = FS_GetName(g_TagInfoBuf, 31); //取出长名
LD C,31
LD DE,g_TagInfoBuf
CALL LWRD FS_GetName
LD B,0
; 250. if (result != 0)
OR A
JR Z,?0032
?0031:
; 251. {
; 252. unitochar(g_TagInfoBuf, sizeof(g_TagInfoBuf), g_langid);
LD A,(g_langid)
LD C,A
PUSH BC
LD C,66
LD DE,g_TagInfoBuf
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 253. }
; 254. else
JR ?0033
?0032:
; 255. {
; 256. memcpy(g_TagInfoBuf, g_amv_vars.location.filename, 12);
LD C,12
LD DE,g_TagInfoBuf
LD HL,g_amv_vars+31
LDIR
; 257. g_TagInfoBuf[8]=0;
LD (g_TagInfoBuf+8),A
; 258. g_TagInfoBuf[9]=0;
LD (g_TagInfoBuf+9),A
?0033:
; 259. }
; 260.
; 261. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 262. }
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
GetInformation:
; 263.
; 264.
; 265. int GetInformation( void )
; 266. {
PUSH BC
PUSH DE
PUSH IX
; 267. int result;
; 268.
; 269. memcpy(g_TagInfoBuf, g_amv_vars.location.filename, 12);
LD BC,12
LD DE,g_TagInfoBuf
LD HL,g_amv_vars+31
LDIR
; 270. result = FS_GetName(g_TagInfoBuf, 32); //取出长名
LD C,32
LD DE,g_TagInfoBuf
CALL LWRD FS_GetName
LD B,0
; 271. if (result != 0)
OR A
JR Z,?0035
?0034:
; 272. {
; 273. unitochar(g_TagInfoBuf, sizeof(g_TagInfoBuf), g_langid);
LD A,(g_langid)
LD C,A
PUSH BC
LD C,66
LD DE,g_TagInfoBuf
LD A,BYTE3 unitochar
LD HL,LWRD unitochar
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 274. }
; 275. else
JR ?0036
?0035:
; 276. {
; 277. memcpy(g_TagInfoBuf, g_amv_vars.location.filename, 12);
LD C,12
LD DE,g_TagInfoBuf
LD HL,g_amv_vars+31
LDIR
?0036:
; 278. }
; 279.
; 280. fp=FS_FOpen( g_amv_vars.location.filename, FS_OPEN_NORMAL );
LD C,0
LD DE,g_amv_vars+31
CALL LWRD FS_FOpen
LD (fp),HL
; 281. FS_FSeek( 0, 0, fp );
PUSH HL
LD C,0
PUSH BC
LD B,C
LD D,B
LD E,C
CALL LWRD FS_FSeek
POP HL
POP HL
; 282. FS_FRead(&g_fileheadinfo[0], 1 ,fp );
LD HL,(fp)
PUSH HL
LD C,1
LD DE,g_fileheadinfo
CALL LWRD FS_FRead
POP HL
; 283. FS_FClose(fp);
LD DE,(fp)
CALL LWRD FS_FClose
; 284. Totaltime.second=g_fileheadinfo[84];
LD A,(g_fileheadinfo+84)
LD (Totaltime+2),A
; 285. Totaltime.minute=g_fileheadinfo[85];
LD A,(g_fileheadinfo+85)
LD (Totaltime+1),A
; 286. Totaltime.hour=g_fileheadinfo[86]; //小时的低位
LD A,(g_fileheadinfo+86)
LD (Totaltime),A
; 287. output8(0x4e,input8(0x4e)|0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 288. return 0;
LD HL,0
; 289. }
POP IX
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
openPA:
; 290.
; 291.
; 292.
; 293. //==================================================================
; 294. void openPA(char volume)
; 295. {
PUSH BC
PUSH DE
PUSH AF
PUSH AF
; 296. int i;
; 297. pa_t paattr;
; 298.
; 299. g_PAOpenFlag = TRUE;//标志PA已打开
LD A,1
LD (g_PAOpenFlag),A
; 300. paattr.pa_in.dacin = 1;
LD HL,0
ADD HL,SP
SET 0,(HL)
; 301. paattr.pa_in.fmin = 0;
RES 1,(HL)
; 302. paattr.pa_in.linein = 0;
RES 2,(HL)
; 303. paattr.pa_in.micin = 0;
RES 3,(HL)
; 304. paattr.volume = volume;
INC HL
PUSH HL
LD B,E
POP HL
LD (HL),B
; 305. EnablePA(& paattr);
LD HL,0
ADD HL,SP
EX DE,HL
CALL LWRD EnablePA
; 306. SetPAVolume(volume);
LD E,B
CALL LWRD SetPAVolume
; 307. }
POP HL
POP HL
POP HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
; 308. //===================================================
; 309.
; 310.
; 311.
RSEG CSTR
?0014:
DEFB 'ROOT'
DEFB 0
?0023:
DEFB ':'
DEFB 0
RSEG UDATA0
fp:
DEFS 2
RSEG APD_SUB_FUN
g_fileheadinfo:
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -