📄 main.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:34:52 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_playlist\main.c #
# List file = d:\case_i_d913f\ap\ap_playlist\.\list\main.lst #
# Object file = d:\case_i_d913f\ap\ap_playlist\.\obj\main.r01 #
# ASM file = d:\case_i_d913f\ap\ap_playlist\.\list\main.s01 #
# Command line = -v0 -mb -uu #
# -OD:\case_i_d913f\ap\ap_playlist\.\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DUSB_DISK_USING #
# -LD:\case_i_d913f\ap\ap_playlist\.\List\ -q -t8 -x #
# -AD:\case_i_d913f\ap\ap_playlist\.\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# -Id:\case_i_d913f\ap\ap_music\ #
# d:\case_i_d913f\AP\AP_PLAYLIST\main.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME main(17)
\ 0000 RSEG APC_LIST_FUN1(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG APD_LIST_FUN1(0)
\ 0000 EXTERN BankSwitch
\ 0000 PUBLIC CheckMusicType
\ 0000 EXTERN DRV_ActiveDrive
\ 0000 EXTERN DRV_ActiveUD
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN FS_FRemove
\ 0000 EXTERN FS_GetName
\ 0000 EXTERN SetDspMips
\ 0000 EXTERN SortStoreListToFile
\ 0000 PUBLIC StoreID3toIDM
\ 0000 EXTERN VMRead
\ 0000 EXTERN VMWrite
\ 0000 PUBLIC delay1
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselGetNextFile
\ 0000 EXTERN fselInit
\ 0000 PUBLIC g_ID3InfoBuf
\ 0000 PUBLIC g_file_total
\ 0000 PUBLIC g_music_list_val
\ 0000 PUBLIC list_location
\ 0000 PUBLIC main
\ 0000 EXTERN mp3GetID3Info
\ 0000 EXTERN unitochar
\ 0000 EXTERN wmaGetTAGInfo
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?MEMSET_L11
\ 0000 EXTERN ?STRCMP_L11
\ 0000 RSEG APC_LIST_FUN1
\ 0000 delay1:
1 #include "musiclist.h"
2 #include "ap_music.h"
3 unsigned int g_file_total;
4 char g_ID3InfoBuf[90];
5 #pragma memory=dataseg(APD_LIST_FUN1)
6 file_location_t list_location;
7 music_vars_t g_music_list_val;
8 #pragma memory=default
9
10 Music_type_t CheckMusicType( char * filename );
11 void StoreID3toIDM( bool mode,unsigned int FileNum,file_location_t *location,int langid);
12 #pragma codeseg(APC_LIST_FUN1)
13
14 void delay1(void)
15 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 DDE5 PUSH IX
16 int i,j=0;
17 for(i=0;i<1000;i++) {;}
\ 0004 110000 LD DE,0
\ 0007 ?0003:
\ 0007 01E883 LD BC,33768
\ 000A 6B LD L,E
\ 000B 62 LD H,D
\ 000C 3E80 LD A,128
\ 000E AC XOR H
\ 000F 67 LD H,A
\ 0010 ED42 SBC HL,BC
\ 0012 3003 JR NC,?0002
\ 0014 ?0004:
\ 0014 13 INC DE
\ 0015 18F0 JR ?0003
\ 0017 ?0002:
18 j++;
19 }
\ 0017 DDE1 POP IX
\ 0019 D1 POP DE
\ 001A C1 POP BC
\ 001B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 001E main:
20
21 int main(int param)
22 {
\ 001E C5 PUSH BC
\ 001F FDE5 PUSH IY
\ 0021 DDE5 PUSH IX
\ 0023 DD210000 LD IX,0
\ 0027 DD39 ADD IX,SP
\ 0029 D5 PUSH DE
\ 002A 21EAFF LD HL,65514
\ 002D 39 ADD HL,SP
\ 002E F9 LD SP,HL
23 int result;
24 unsigned int file_num=0;
25 unsigned int file_total_flash=0;
26 unsigned int file_total_card=0;
27 char *start_pointer = (char *)IDMStartAddress;
\ 002F DD36EC00 LD (IX-20),0
\ 0033 DD36ED40 LD (IX-19),64
28 handle TempFileHandle;
29 BYTE MusicType;
30 ID3Info_t ID3List;
31 BYTE FlashDiskState = 0; //flash 磁盘状态
32 BYTE CardDiskState = 0; //插卡磁盘状态
33 BYTE DiskType;
34 /*
35 BYTE IO00Bak = input8(0x00);
36 BYTE IO70Bak = input8(0x70);
37 //////////////////////// MCU 48M
38 output8(0x70, input8(0x70)&0xbf|0xb8); //mcu pll enable & 48mhz
39 delay1();
40 output8(0x00, input8(0x00)&0xef|0x20); //select mcu pll
41 delay1();
42 ///////////////////////
43 */
44 output8(0x4e,input8(0x4e)|0x08);
\ 0037 DB4E IN A,(78)
\ 0039 CBDF SET 3,A
\ 003B D34E OUT (78),A
45 DRV_ActiveUD(0,MODE_SLOW);
\ 003D 0E01 LD C,1
\ 003F 1E00 LD E,0
\ 0041 CD0000 CALL LWRD DRV_ActiveUD
46 //装文件系统 //install file system
47 if ( DRV_ActiveDrive('C',MODE_SLOW) ) //flash ok
\ 0044 FD210000 LD IY,0
\ 0048 AF XOR A
\ 0049 DD77F0 LD (IX-16),A
\ 004C DD77F1 LD (IX-15),A
\ 004F DD77EE LD (IX-18),A
\ 0052 DD77EF LD (IX-17),A
\ 0055 DD77EA LD (IX-22),A
\ 0058 DD77E9 LD (IX-23),A
\ 005B 0E01 LD C,1
\ 005D 1E43 LD E,67
\ 005F CD0000 CALL LWRD DRV_ActiveDrive
\ 0062 B7 OR A
\ 0063 2804 JR Z,?0007
\ 0065 ?0006:
48 {
49 FlashDiskState = 1;
\ 0065 DD36EA01 LD (IX-22),1
\ 0069 ?0007:
50 }
51
52 if (DRV_DetectUD(1) == 0x20)
\ 0069 1E01 LD E,1
\ 006B CD0000 CALL LWRD DRV_DetectUD
\ 006E FE20 CP 32
\ 0070 2014 JR NZ,?0011
\ 0072 ?0008:
53 { //有卡
54 DRV_ActiveUD(1,MODE_SLOW);
\ 0072 0E01 LD C,1
\ 0074 59 LD E,C
\ 0075 CD0000 CALL LWRD DRV_ActiveUD
55 if (DRV_ActiveDrive('H', MODE_SLOW)) //card ok
\ 0078 0E01 LD C,1
\ 007A 1E48 LD E,72
\ 007C CD0000 CALL LWRD DRV_ActiveDrive
\ 007F B7 OR A
\ 0080 2804 JR Z,?0011
\ 0082 ?0010:
56 {
57 CardDiskState = 1;
\ 0082 DD36E901 LD (IX-23),1
\ 0086 ?0011:
\ 0086 ?0009:
58 }
59 }
60 if(FlashDiskState == 0 && CardDiskState == 0) //磁盘都错误就直接返回
\ 0086 AF XOR A
\ 0087 DDB6EA OR (IX-22)
\ 008A 200A JR NZ,?0013
\ 008C DDB6E9 OR (IX-23)
\ 008F 2005 JR NZ,?0013
\ 0091 ?0015:
\ 0091 ?0014:
\ 0091 ?0012:
61 return 0;
\ 0091 6F LD L,A
\ 0092 67 LD H,A
\ 0093 C35402 JP LWRD ?0051
\ 0096 ?0013:
62 else if(FlashDiskState ==1)
\ 0096 DD46EA LD B,(IX-22)
\ 0099 05 DEC B
\ 009A 2006 JR NZ,?0017
\ 009C ?0016:
63 DiskType = 'C';
\ 009C DD36E843 LD (IX-24),67
64 else
\ 00A0 1804 JR ?0018
\ 00A2 ?0017:
65 DiskType = 'H';
\ 00A2 DD36E848 LD (IX-24),72
\ 00A6 ?0018:
66
67 output8(0x4e,input8(0x4e)|0x08);
\ 00A6 DB4E IN A,(78)
\ 00A8 CBDF SET 3,A
\ 00AA D34E OUT (78),A
\ 00AC ?0019:
68 // while ( GetSysMsg() != NULL ) {};
69 //安装ud驱动 //install ud driver
70 // res_fp = ResOpen("ui30.res");
71 // SetBackgdColor(Color_BLACK_def);
72 // SetPenColor(Color_WHITE_def);
73
74 BuildAnotherList:
75
76 ID3List.TIT2_length = 30;
\ 00AC DD36F21E LD (IX-14),30
77 ID3List.TPE1_length = 30;
\ 00B0 DD36F51E LD (IX-11),30
78 ID3List.TALB_length = 30;
\ 00B4 DD36F81E LD (IX-8),30
79 ID3List.TENC_length = 0;
\ 00B8 DD36FB00 LD (IX-5),0
80 ID3List.TIT2_buffer = & g_ID3InfoBuf[0]; //标题
\ 00BC DD36F300 LD (IX-13),LOW(g_ID3InfoBuf)
\ 00C0 DD36F400 LD (IX-12),HIGH(g_ID3InfoBuf)
81 ID3List.TPE1_buffer = & g_ID3InfoBuf[30]; //艺术家
\ 00C4 DD36F600 LD (IX-10),LOW(g_ID3InfoBuf+30)
\ 00C8 DD36F700 LD (IX-9),HIGH(g_ID3InfoBuf+30)
82 ID3List.TALB_buffer = & g_ID3InfoBuf[60]; //专辑
\ 00CC DD36F900 LD (IX-7),LOW(g_ID3InfoBuf+60)
\ 00D0 DD36FA00 LD (IX-6),HIGH(g_ID3InfoBuf+60)
83 ID3List.TENC_buffer = & g_ID3InfoBuf[90];
\ 00D4 DD36FC00 LD (IX-4),LOW(g_ID3InfoBuf+90)
\ 00D8 DD36FD00 LD (IX-3),HIGH(g_ID3InfoBuf+90)
84
85 FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_SEQUENCE, FSEL_TYPE_COMMONDIR,DiskType);//初始化文件选择器
\ 00DC DD6EE8 LD L,(IX-24)
\ 00DF E5 PUSH HL
\ 00E0 0E00 LD C,0
\ 00E2 C5 PUSH BC
\ 00E3 59 LD E,C
\ 00E4 3E00 LD A,BYTE3 fselInit
\ 00E6 210000 LD HL,LWRD fselInit
\ 00E9 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00EC F1 POP AF
\ 00ED F1 POP AF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -