📄 main.s01
字号:
LD L,C
LD H,B
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD A,64
ADD A,H
LD H,A
PUSH HL
POP IY
; 184. char *IPMaddress = (char *)(FileNum*OneLocationBYTE+IDMStartAddress); // IPM 中存储文件路径的起始地址
LD BC,41
LD E,(IX-2)
LD D,(IX-1)
CALL LWRD ?S_MUL_L02
LD A,64
ADD A,D
LD D,A
LD (IX-8),E
LD (IX-7),D
; 185. int *FileNumAddress =(int *)IDMaddress; //存放文件原始编号的地址
LD (IX-10),L
LD (IX-9),H
; 186. // int *LocationAddress = (int *)IPMaddress; // 存放文件原始编号的地址
; 187. output8(0x05,0x34); //IDM LOW BYTE->TIT2
LD A,52
OUT (5),A
; 188. *FileNumAddress=FileNum;
LD C,(IX-2)
LD (HL),C
LD B,(IX-1)
INC HL
LD (HL),B
; 189. if(mode)
XOR A
OR (IX-4)
LD BC,30
PUSH IY
POP DE
INC DE
INC DE
JR Z,?0053
?0052:
; 190. { //原始编号
; 191. memcpy(IDMaddress+2,&g_ID3InfoBuf[0],30); //TIT2 store
LD HL,g_ID3InfoBuf
LDIR
; 192. }
; 193. else
JR ?0054
?0053:
; 194. {
; 195. memset(IDMaddress+2,0,30);
LD L,B
CALL LWRD ?MEMSET_L11
?0054:
; 196. }
; 197. // memcpy(IDMaddress+32,location,sizeof(file_location_t)); //location store
; 198. output8(0x05,0x35); //IDM MID BYTE->TPE1
LD A,53
OUT (5),A
; 199. *FileNumAddress=FileNum;
LD L,(IX-2)
LD H,(IX-1)
PUSH HL
LD L,(IX-10)
LD H,(IX-9)
POP BC
LD (HL),C
INC HL
LD (HL),B
; 200. if(mode)
XOR A
OR (IX-4)
LD BC,30
PUSH IY
POP DE
INC DE
INC DE
JR Z,?0056
?0055:
; 201. {
; 202. memcpy(IDMaddress+2,&g_ID3InfoBuf[30],30);
LD HL,g_ID3InfoBuf+30
LDIR
; 203. }
; 204. else
JR ?0057
?0056:
; 205. {
; 206. memset(IDMaddress+2,0,30);
LD L,B
CALL LWRD ?MEMSET_L11
?0057:
; 207. }
; 208. // memcpy(IDMaddress+32,&g_ID3InfoBuf[0],sizeof(file_location_t));
; 209. output8(0x05,0x36); //IDM HIG BYTE -> TALB
LD A,54
OUT (5),A
; 210. *FileNumAddress=FileNum;
LD L,(IX-2)
LD H,(IX-1)
PUSH HL
LD L,(IX-10)
LD H,(IX-9)
POP BC
LD (HL),C
INC HL
LD (HL),B
; 211. if(mode)
XOR A
OR (IX-4)
LD BC,30
PUSH IY
POP DE
INC DE
INC DE
JR Z,?0059
?0058:
; 212. {
; 213. memcpy(IDMaddress+2,&g_ID3InfoBuf[60],30);
LD HL,g_ID3InfoBuf+60
LDIR
; 214. }
; 215. else
JR ?0060
?0059:
; 216. {
; 217. memset(IDMaddress+2,0,30);
LD L,B
CALL LWRD ?MEMSET_L11
?0060:
; 218. }
; 219. // memcpy(IDMaddress+32,&g_ID3InfoBuf[0],sizeof(file_location_t));
; 220.
; 221. output8(0x05,IO05bak);
LD A,(IX-5)
OUT (5),A
; 222. memcpy(g_ID3InfoBuf,location->filename,12); // 根据短名取长名
LD DE,g_ID3InfoBuf
LD HL,26
LD C,(IX+8)
LD B,(IX+9)
ADD HL,BC
LD BC,12
LDIR
; 223. NameNum =FS_GetName(g_ID3InfoBuf, 30); //取出长名)
LD C,30
LD DE,g_ID3InfoBuf
CALL LWRD FS_GetName
; 224. if(NameNum!=0)
OR A
JR Z,?0062
?0061:
; 225. {
; 226. unitochar(g_ID3InfoBuf, NameNum*2+2, langid);
LD L,(IX+10)
PUSH HL
LD L,A
LD H,0
ADD HL,HL
LD C,L
LD B,H
INC BC
INC BC
CALL LWRD ?0102
POP AF
; 227. // *IDMaddress=(BYTE)FileNum;
; 228. output8(0x05,0xc0); //IPM LOW BYTE ->Filename
LD A,192
OUT (5),A
; 229. *FileNumAddress=FileNum;
LD L,(IX-2)
LD H,(IX-1)
PUSH HL
LD L,(IX-10)
LD H,(IX-9)
POP BC
LD (HL),C
INC HL
LD (HL),B
; 230. memcpy(IDMaddress+2,&g_ID3InfoBuf[0],30); //
LD BC,30
PUSH IY
POP DE
INC DE
INC DE
LD HL,g_ID3InfoBuf
LDIR
; 231. }
; 232. else
JR ?0063
?0062:
; 233. {
; 234. output8(0x05,0xc0); //IPM LOW BYTE ->Filename
LD A,192
OUT (5),A
; 235. *FileNumAddress=FileNum;
LD L,(IX-2)
LD H,(IX-1)
PUSH HL
LD L,(IX-10)
LD H,(IX-9)
POP BC
LD (HL),C
INC HL
LD (HL),B
; 236. memcpy(IDMaddress+2,location->filename,12);
PUSH IY
POP DE
INC DE
INC DE
LD HL,26
LD C,(IX+8)
LD B,(IX+9)
ADD HL,BC
LD BC,12
LDIR
; 237. memset(IDMaddress+14,0,18);
LD C,18
LD HL,14
PUSH IY
POP DE
ADD HL,DE
EX DE,HL
LD L,B
CALL LWRD ?MEMSET_L11
?0063:
; 238. }
; 239. // memcpy(IDMaddress+31,location,sizeof(file_location_t));
; 240. if(FileNum<399)
LD BC,399
LD L,(IX-2)
LD H,(IX-1)
AND A
SBC HL,BC
JR NC,?0065
?0064:
; 241. {
; 242. output8(0x05,0xc1); //IPM MID BYTE
LD A,193
OUT (5),A
; 243. }
; 244. else
JR ?0066
?0065:
; 245. {
; 246. output8(0x05,0xc2); //IPM HIGH BYTE
LD A,194
OUT (5),A
; 247. IPMaddress = (char *)((FileNum-399)*OneLocationBYTE+IDMStartAddress);
LD HL,65137
LD C,(IX-2)
LD B,(IX-1)
ADD HL,BC
LD C,L
LD B,H
LD DE,41
CALL LWRD ?S_MUL_L02
LD A,64
ADD A,D
LD D,A
LD (IX-8),E
LD (IX-7),D
?0066:
; 248. // LocationAddress = (int* )IPMaddress;
; 249. }
; 250. // *LocationAddress = FileNum;
; 251. memcpy(IPMaddress,location,OneLocationBYTE);
LD BC,41
LD E,(IX-8)
LD D,(IX-7)
LD L,(IX+8)
LD H,(IX+9)
LDIR
; 252. output8(0x05,IO05bak);
LD A,(IX-5)
OUT (5),A
; 253. }
LD SP,IX
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
CheckMusicType:
; 254.
; 255.
; 256. Music_type_t CheckMusicType( char * filename )
; 257. {
PUSH BC
PUSH IX
LD HL,65508
ADD HL,SP
LD SP,HL
PUSH DE
POP IX
; 258. const char ExtMusicstr [] [4] =
; 259. {
; 260. "MP3", "WMA", "ASF", "WMV", "OGG", "APE"
; 261. };
LD HL,4
ADD HL,SP
EX DE,HL
LD HL,?0067
LD BC,24
LDIR
; 262.
; 263. BYTE ext[4];
; 264. memcpy(ext, filename + 8, 3);
LD L,C
LD H,B
ADD HL,SP
EX DE,HL
LD HL,8
PUSH IX
POP BC
ADD HL,BC
LD BC,3
LDIR
; 265. ext[0] = (ext[0]>='a' && ext[0]<='z') ? ext[0] - 'a' + 'A' : ext[0];
LD L,C
LD H,B
ADD HL,SP
LD A,(HL)
CP 97
JR C,?0071
LD A,122
CP (HL)
JR C,?0071
LD A,(HL)
ADD A,224
JR ?0072
?0071:
LD A,(HL)
?0072:
LD (HL),A
; 266. ext[1] = (ext[1]>='a' && ext[1]<='z') ? ext[1] - 'a' + 'A' : ext[1];
INC HL
LD A,(HL)
CP 97
JR C,?0077
LD A,122
CP (HL)
JR C,?0077
LD A,(HL)
ADD A,224
JR ?0078
?0077:
LD A,(HL)
?0078:
LD (HL),A
; 267. ext[2] = (ext[2]>='a' && ext[2]<='z') ? ext[2] - 'a' + 'A' : ext[2];
INC HL
LD A,(HL)
CP 97
JR C,?0083
LD A,122
CP (HL)
JR C,?0083
LD A,(HL)
ADD A,224
JR ?0084
?0083:
LD A,(HL)
?0084:
LD (HL),A
; 268. ext[3] = 0;
INC HL
LD (HL),B
; 269.
; 270. if (strcmp(ext, ExtMusicstr[0]) == 0)
DEC HL
DEC HL
DEC HL
EX DE,HL
LD HL,4
ADD HL,SP
CALL LWRD ?STRCMP_L11
LD A,L
OR H
JR NZ,?0087
?0086:
; 271. {
; 272. return Music_MP3;
LD L,1
; 273. }
JR ?0098
?0087:
; 274. else if (strcmp(ext, ExtMusicstr[1]) == 0)
LD L,C
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,4
ADD HL,BC
CALL LWRD ?STRCMP_L11
LD A,L
OR H
JR NZ,?0089
?0088:
; 275. {
; 276. return Music_WMA;
LD L,2
; 277. }
JR ?0098
?0089:
; 278. else if (strcmp(ext, ExtMusicstr[2]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD L,C
LD H,B
ADD HL,SP
LD C,8
ADD HL,BC
CALL LWRD ?STRCMP_L11
LD A,L
OR H
JR NZ,?0091
?0090:
; 279. {
; 280. return Music_ASF;
LD L,3
; 281. }
JR ?0098
?0091:
; 282. else if (strcmp(ext, ExtMusicstr[3]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,12
ADD HL,BC
CALL LWRD ?STRCMP_L11
LD A,L
OR H
JR NZ,?0093
?0092:
; 283. {
; 284. return Music_WMV;
LD L,4
; 285. }
JR ?0098
?0093:
; 286. else if (strcmp(ext, ExtMusicstr[4]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,16
ADD HL,BC
CALL LWRD ?STRCMP_L11
LD A,L
OR H
JR NZ,?0095
?0094:
; 287. {
; 288. return Music_OGG;
LD L,5
; 289. }
JR ?0098
?0095:
; 290. else if (strcmp(ext, ExtMusicstr[5]) == 0)
LD L,B
LD H,B
ADD HL,SP
EX DE,HL
LD HL,4
ADD HL,SP
LD C,20
ADD HL,BC
CALL LWRD ?STRCMP_L11
LD A,L
OR H
JR NZ,?0097
?0096:
; 291. {
; 292. return Music_APE;
LD L,6
; 293. }
JR ?0098
?0097:
; 294. else
; 295. {
; 296. return Music_NON;
LD L,B
; 297. }
?0098:
EX DE,HL
LD HL,28
ADD HL,SP
LD SP,HL
EX DE,HL
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
; 298. }
; 299.
; 300.
RSEG CSTR
?0020:
DEFB 'TIT2 BIN'
DEFB 0
?0021:
DEFB 'TPE1 BIN'
DEFB 0
?0022:
DEFB 'TALB BIN'
DEFB 0
?0023:
DEFB 'FILENAMEBIN'
DEFB 0
RSEG CONST
?0067:
DEFB 'MP3'
DEFB 0
DEFB 'WMA'
DEFB 0
DEFB 'ASF'
DEFB 0
DEFB 'WMV'
DEFB 0
DEFB 'OGG'
DEFB 0
DEFB 'APE'
DEFB 0
RSEG UDATA0
g_file_total:
DEFS 2
g_ID3InfoBuf:
DEFS 90
RSEG APD_LIST_FUN1
list_location:
DEFS 43
g_music_list_val:
DEFS 95
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -