📄 userlist_add.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:58:59 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_music\userlist_add.c #
# List file = d:\case_i_d913f\ap\ap_music\list\userlist_add.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\userlist_add.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\userlist_add.s01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_music\Obj\ -e -K #
# -w -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_music\List\ #
# -ND:\case_i_d913f\ap\ap_music\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# D:\CASE_I_D913F\AP\AP_MUSIC\userlist_add.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME userlist_add(17)
\ 0000 RSEG APC_USERPL(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG APD_USERPL(0)
\ 0000 PUBLIC Add_UserPL
\ 0000 EXTERN FS_CD
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FCreate
\ 0000 EXTERN FS_FOpen
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FRemove
\ 0000 EXTERN FS_FSeek
\ 0000 EXTERN FS_FWrite
\ 0000 EXTERN FS_Init
\ 0000 EXTERN FirstOffset
\ 0000 EXTERN LastOffset
\ 0000 EXTERN PlaylistCount
\ 0000 PUBLIC Read_DataA
\ 0000 PUBLIC Reset_USERPL
\ 0000 PUBLIC WrHead_PL
\ 0000 PUBLIC buffer_list
\ 0000 PUBLIC check_playlist
\ 0000 PUBLIC file
\ 0000 PUBLIC fp
\ 0000 EXTERN g_TagInfoBuf
\ 0000 EXTERN need_WPL
\ 0000 PUBLIC save_offset
\ 0000 PUBLIC temp_list
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_LSH_L02
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 EXTERN ?MEMSET_L11
\ 0000 EXTERN ?MEMCMP_L11
\ 0000 EXTERN ?STRCMP_L11
\ 0000 RSEG APC_USERPL
\ 0000 Reset_USERPL:
1 #include "ap_music.h"
2 #ifdef ACTIVE_USERPL
3 #pragma memory=dataseg(APD_USERPL)
4 char buffer_list[512];
5 char file[12];
6 handle fp;
7 WORD save_offset;
8 user_playlist_t temp_list;
9 #pragma memory=default
10 #pragma codeseg(APC_USERPL)
11
12 void Reset_USERPL()
13 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FEFF DEFW 65534
14
15
16 char i;
17
18 memset(file,0x20,12);
\ 0005 CDA200 CALL LWRD ?0072
19 file[0]='U';
20 file[1]='S';
21 file[2]='E';
22 file[3]='R';
23 file[4]='P';
24 file[5]='L';
25 file[8]='P';
26 file[9]='L';
27 file[11]=0;
28
29 FirstOffset=0; //第一个偏移量
\ 0008 6C LD L,H
\ 0009 220000 LD (FirstOffset),HL
30 LastOffset=0; //空族偏移量
\ 000C 220000 LD (LastOffset),HL
31 PlaylistCount=0; //Item总数
\ 000F 220000 LD (PlaylistCount),HL
32 if(FS_Init())
\ 0012 CD0000 CALL LWRD FS_Init
\ 0015 B7 OR A
\ 0016 CA9F00 JP Z,?0003
\ 0019 ?0002:
33 {
34 FS_CD(FS_CD_ROOT);
\ 0019 CDDB00 CALL LWRD ?0074
35 fp=FS_FOpen(file,0);
36 if(fp!=NULL)
\ 001C 2832 JR Z,?0008
\ 001E ?0005:
37 {
38 if(FS_FRead(buffer_list,1,fp))
\ 001E E5 PUSH HL
\ 001F CDEF00 CALL LWRD ?0075
\ 0022 E1 POP HL
\ 0023 B7 OR A
\ 0024 282A JR Z,?0008
\ 0026 ?0007:
39 {
40 if(memcmp(buffer_list,file,6)==0)
\ 0026 CDF700 CALL LWRD ?0076
\ 0029 7D LD A,L
\ 002A B4 OR H
\ 002B 2020 JR NZ,?0010
\ 002D ?0009:
41 {
42 memcpy(&FirstOffset,buffer_list+6,2);
\ 002D 0E02 LD C,2
\ 002F 110000 LD DE,FirstOffset
\ 0032 210600 LD HL,buffer_list+6
\ 0035 EDB0 LDIR
43 memcpy(&LastOffset,buffer_list+6+2,2);
\ 0037 03 INC BC
\ 0038 03 INC BC
\ 0039 110000 LD DE,LastOffset
\ 003C 210800 LD HL,buffer_list+8
\ 003F EDB0 LDIR
44 memcpy(&PlaylistCount,buffer_list+6+2+2,2);
\ 0041 03 INC BC
\ 0042 03 INC BC
\ 0043 110000 LD DE,PlaylistCount
\ 0046 210A00 LD HL,buffer_list+10
\ 0049 EDB0 LDIR
45 FS_FClose(fp);
\ 004B 184F JR ?0013
46 return ;
47 }
\ 004D ?0010:
48 FS_FClose(fp);
\ 004D CD0301 CALL LWRD ?0077
\ 0050 ?0008:
\ 0050 ?0006:
49 }
50 }
51
52 FS_FRemove(file);
\ 0050 110002 LD DE,file
\ 0053 CD0000 CALL LWRD FS_FRemove
53 memset(buffer_list,0,512);
\ 0056 010002 LD BC,512
\ 0059 110000 LD DE,buffer_list
\ 005C 69 LD L,C
\ 005D CD0000 CALL LWRD ?MEMSET_L11
54 memcpy(buffer_list,file,6);
\ 0060 010600 LD BC,6
\ 0063 210002 LD HL,file
\ 0066 EDB0 LDIR
55 fp=FS_FCreate(file);
\ 0068 110002 LD DE,file
\ 006B CD0000 CALL LWRD FS_FCreate
\ 006E 220C02 LD (fp),HL
56 if(fp==NULL)
\ 0071 7D LD A,L
\ 0072 B4 OR H
\ 0073 282A JR Z,?0003
\ 0075 ?0011:
\ 0075 ?0012:
57 return ;
58 FS_FWrite(buffer_list,1,fp);
\ 0075 E5 PUSH HL
\ 0076 CD0A01 CALL LWRD ?0078
\ 0079 E1 POP HL
59 memset(buffer_list,0,512);
\ 007A 010002 LD BC,512
\ 007D 110000 LD DE,buffer_list
\ 0080 69 LD L,C
\ 0081 61 LD H,C
\ 0082 CD0000 CALL LWRD ?MEMSET_L11
60
61 for(i=0;i<USERPL_NUM/8+1;i++)
\ 0085 DD74FE LD (IX-2),H
\ 0088 ?0014:
\ 0088 DD7EFE LD A,(IX-2)
\ 008B FE66 CP 102
\ 008D 300D JR NC,?0013
\ 008F ?0015:
62 FS_FWrite(buffer_list,1,fp);
\ 008F 2A0C02 LD HL,(fp)
\ 0092 E5 PUSH HL
\ 0093 CD0A01 CALL LWRD ?0078
\ 0096 E1 POP HL
\ 0097 DD34FE INC (IX-2)
\ 009A 18EC JR ?0014
\ 009C ?0013:
63
64
65 FS_FClose(fp);
\ 009C CD0301 CALL LWRD ?0077
\ 009F ?0003:
66
67 }
68 }
\ 009F ?0017:
\ 009F C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 00A2 ?0072:
\ 00A2 010C00 LD BC,12
\ 00A5 110002 LD DE,file
\ 00A8 212000 LD HL,32
\ 00AB ?0073:
\ 00AB CD0000 CALL LWRD ?MEMSET_L11
\ 00AE 3E55 LD A,85
\ 00B0 320002 LD (file),A
\ 00B3 3E53 LD A,83
\ 00B5 320102 LD (file+1),A
\ 00B8 3E45 LD A,69
\ 00BA 320202 LD (file+2),A
\ 00BD 3E52 LD A,82
\ 00BF 320302 LD (file+3),A
\ 00C2 3E50 LD A,80
\ 00C4 320402 LD (file+4),A
\ 00C7 3E4C LD A,76
\ 00C9 320502 LD (file+5),A
\ 00CC 3E50 LD A,80
\ 00CE 320802 LD (file+8),A
\ 00D1 3E4C LD A,76
\ 00D3 320902 LD (file+9),A
\ 00D6 AF XOR A
\ 00D7 320B02 LD (file+11),A
\ 00DA C9 RET
\ 00DB ?0074:
\ 00DB 110000 LD DE,?0004
\ 00DE CD0000 CALL LWRD FS_CD
\ 00E1 0E00 LD C,0
\ 00E3 110002 LD DE,file
\ 00E6 CD0000 CALL LWRD FS_FOpen
\ 00E9 220C02 LD (fp),HL
\ 00EC 7D LD A,L
\ 00ED B4 OR H
\ 00EE C9 RET
\ 00EF ?0075:
\ 00EF 0E01 LD C,1
\ 00F1 110000 LD DE,buffer_list
\ 00F4 C30000 JP LWRD FS_FRead
\ 00F7 ?0076:
\ 00F7 010600 LD BC,6
\ 00FA 110000 LD DE,buffer_list
\ 00FD 210002 LD HL,file
\ 0100 C30000 JP LWRD ?MEMCMP_L11
\ 0103 ?0077:
\ 0103 ED5B0C02 LD DE,(fp)
\ 0107 C30000 JP LWRD FS_FClose
\ 010A ?0078:
\ 010A 0E01 LD C,1
\ 010C 110000 LD DE,buffer_list
\ 010F C30000 JP LWRD FS_FWrite
\ 0112 Read_DataA:
69 BOOL Read_DataA(WORD offset)
70 {
\ 0112 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0115 FEFF DEFW 65534
71 char IO27;
72 IO27 = input8(0x27);
\ 0117 DB27 IN A,(39)
\ 0119 DD77FE LD (IX-2),A
73 output8(0x27,00);
\ 011C AF XOR A
\ 011D D327 OUT (39),A
74 if(save_offset==0xffff)
\ 011F 2A0E02 LD HL,(save_offset)
\ 0122 7D LD A,L
\ 0123 A4 AND H
\ 0124 3C INC A
\ 0125 281F JR Z,?0066
\ 0127 ?0018:
75 {
76 save_offset = offset/4;
77 }
78 else
\ 0127 ?0019:
79 {
80 if(save_offset!=(offset/4))
\ 0127 DD6E02 LD L,(IX+2)
\ 012A DD6603 LD H,(IX+3)
\ 012D CB3C SRL H
\ 012F CB1D RR L
\ 0131 CB3C SRL H
\ 0133 CB1D RR L
\ 0135 ED4B0E02 LD BC,(save_offset)
\ 0139 A7 AND A
\ 013A ED42 SBC HL,BC
\ 013C 2840 JR Z,?0067
\ 013E ?0021:
81 {
82 FS_FWrite(buffer_list,1,fp);
\ 013E 2A0C02 LD HL,(fp)
\ 0141 E5 PUSH HL
\ 0142 CD0A01 CALL LWRD ?0078
\ 0145 E1 POP HL
83 save_offset = offset/4;
\ 0146 ?0066:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -