📄 sort_store_list.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:34:53 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_playlist\sort_store_list.c #
# List file = d:\case_i_d913f\ap\ap_playlist\.\list\sort_store_list.lst#
# Object file = d:\case_i_d913f\ap\ap_playlist\.\obj\sort_store_list.r01#
# ASM file = d:\case_i_d913f\ap\ap_playlist\.\list\sort_store_list.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\sort_store_list.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sort_store_list(17)
\ 0000 RSEG APC_LIST_FUN2(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG APD_LIST_FUN2(0)
\ 0000 EXTERN FS_CD
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FCreate
\ 0000 EXTERN FS_FWrite
\ 0000 EXTERN SetDspMips
\ 0000 PUBLIC SortStoreListToFile
\ 0000 PUBLIC StoreList
\ 0000 PUBLIC WriteVmData
\ 0000 PUBLIC WritrVMBuffer
\ 0000 EXTERN g_file_total
\ 0000 EXTERN list_sort
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SS_DIV_L02
\ 0000 EXTERN ?SS_MOD_L02
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?C_S_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?MEMSET_L11
\ 0000 RSEG APC_LIST_FUN2
\ 0000 WriteVmData:
1 #include "musiclist.h"
2 extern unsigned int g_file_total;
3 #pragma memory=dataseg(APD_LIST_FUN2)
4 char WritrVMBuffer[512];
5 #pragma memory=default
6
7 #pragma codeseg(APC_LIST_FUN2)
8
9 void WriteVmData(char *DataAddress,int PageNum,handle listhandle,BYTE DataType)
10 {
\ 0000 FDE5 PUSH IY
\ 0002 DDE5 PUSH IX
\ 0004 DD210000 LD IX,0
\ 0008 DD39 ADD IX,SP
\ 000A C5 PUSH BC
\ 000B D5 PUSH DE
\ 000C 21F0FF LD HL,65520
\ 000F 39 ADD HL,SP
\ 0010 F9 LD SP,HL
11 unsigned int index_address;
12 unsigned int file_counter = 0;
13 int i,j;
14 int *page_address = (int *)DataAddress ;
\ 0011 DD73F4 LD (IX-12),E
\ 0014 DD72F5 LD (IX-11),D
15 char *store_data =DataAddress+2;
16 char *store_location=DataAddress;
17 BYTE IO05bak = input8(0x05);
\ 0017 DB05 IN A,(5)
\ 0019 DD77FA LD (IX-6),A
18 for(i=0;i<PageNum;i++)
\ 001C AF XOR A
\ 001D DD77EE LD (IX-18),A
\ 0020 DD77EF LD (IX-17),A
\ 0023 DD77F0 LD (IX-16),A
\ 0026 DD77F1 LD (IX-15),A
\ 0029 ?0003:
\ 0029 DD4EFE LD C,(IX-2)
\ 002C DD46FF LD B,(IX-1)
\ 002F DD6EF0 LD L,(IX-16)
\ 0032 DD66F1 LD H,(IX-15)
\ 0035 F680 OR 128
\ 0037 ED42 SBC HL,BC
\ 0039 E23D00 JP PO,?0044
\ 003C AC XOR H
\ 003D ?0044:
\ 003D F27301 JP P,?0002
\ 0040 ?0004:
19 {
20 output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
\ 0040 DB4E IN A,(78)
\ 0042 CBDF SET 3,A
\ 0044 D34E OUT (78),A
21 switch(DataType)
\ 0046 DD5E0A LD E,(IX+10)
\ 0049 CD0000 CALL LWRD ?C_S_SWITCH_L06
\ 004C 00 DEFB 0
\ 004D 0400 DEFW 4
\ 004F 6900 DEFW ?0006
\ 0051 5900 DEFW ?0007
\ 0053 5D00 DEFW ?0008
\ 0055 6100 DEFW ?0009
\ 0057 6500 DEFW ?0010
\ 0059 ?0007:
22 {
23 case 0:
24 output8(0x05,0x34);
\ 0059 3E34 LD A,52
\ 005B 180A JR ?0049
25 break;
\ 005D ?0008:
26 case 1:
27 output8(0x05,0x35);
\ 005D 3E35 LD A,53
\ 005F 1806 JR ?0049
28 break;
\ 0061 ?0009:
29 case 2:
30 output8(0x05,0x36);
\ 0061 3E36 LD A,54
\ 0063 1802 JR ?0049
31 break;
\ 0065 ?0010:
32 case 3:
33 output8(0x05,0xc0);
\ 0065 3EC0 LD A,192
\ 0067 ?0049:
\ 0067 D305 OUT (5),A
34 break;
\ 0069 ?0011:
35 default:
36 break;
\ 0069 ?0006:
37 }
38 // index_address = *page_address;
39 for(j=0;j<Pagelist;j++) //每个扇区存储7个文件信息
\ 0069 FD210000 LD IY,0
\ 006D ?0013:
\ 006D 010780 LD BC,32775
\ 0070 FDE5 PUSH IY
\ 0072 E1 POP HL
\ 0073 78 LD A,B
\ 0074 AC XOR H
\ 0075 67 LD H,A
\ 0076 ED42 SBC HL,BC
\ 0078 D24C01 JP NC,?0012
\ 007B ?0014:
40 {
41 index_address = *page_address;
\ 007B DD6EF4 LD L,(IX-12)
\ 007E DD66F5 LD H,(IX-11)
\ 0081 46 LD B,(HL)
\ 0082 23 INC HL
\ 0083 66 LD H,(HL)
\ 0084 68 LD L,B
\ 0085 DD75EC LD (IX-20),L
\ 0088 DD74ED LD (IX-19),H
42 store_data = (char *)(index_address*OneFileInfor+IDMStartAddress+2);
\ 008B 29 ADD HL,HL
\ 008C 29 ADD HL,HL
\ 008D 29 ADD HL,HL
\ 008E 29 ADD HL,HL
\ 008F 29 ADD HL,HL
\ 0090 010240 LD BC,16386
\ 0093 09 ADD HL,BC
\ 0094 DD75F6 LD (IX-10),L
\ 0097 DD74F7 LD (IX-9),H
43 memcpy(&WritrVMBuffer[j*71],store_data,OneFileInfor-2);
\ 009A 114700 LD DE,71
\ 009D FDE5 PUSH IY
\ 009F C1 POP BC
\ 00A0 CD0000 CALL LWRD ?S_MUL_L02
\ 00A3 210000 LD HL,WritrVMBuffer
\ 00A6 19 ADD HL,DE
\ 00A7 EB EX DE,HL
\ 00A8 DD6EF6 LD L,(IX-10)
\ 00AB DD66F7 LD H,(IX-9)
\ 00AE 011E00 LD BC,30
\ 00B1 EDB0 LDIR
44 page_address+=OneFileInfor/2; // page_address 为int 型指针 所以要除2
\ 00B3 210800 LD HL,8
\ 00B6 39 ADD HL,SP
\ 00B7 7E LD A,(HL)
\ 00B8 C620 ADD A,32
\ 00BA 77 LD (HL),A
\ 00BB 23 INC HL
\ 00BC 7E LD A,(HL)
\ 00BD CE00 ADC A,0
\ 00BF 77 LD (HL),A
45 // 存location
46 {
47 char BakIO05 = input8(0x05);
\ 00C0 DB05 IN A,(5)
\ 00C2 DD77FB LD (IX-5),A
48 if(index_address<399)
\ 00C5 018F01 LD BC,399
\ 00C8 DD6EEC LD L,(IX-20)
\ 00CB DD66ED LD H,(IX-19)
\ 00CE A7 AND A
\ 00CF ED42 SBC HL,BC
\ 00D1 300F JR NC,?0017
\ 00D3 ?0016:
49 {
50 output8(0x05,0xc1);
\ 00D3 3EC1 LD A,193
\ 00D5 D305 OUT (5),A
51 store_location =(char *)DataAddress + index_address*OneLocationBYTE;
\ 00D7 012900 LD BC,41
\ 00DA DD5EEC LD E,(IX-20)
\ 00DD DD56ED LD D,(IX-19)
\ 00E0 1813 JR ?0050
52 }
53 else
\ 00E2 ?0017:
54 {
55 output8(0x05,0xc2);
\ 00E2 3EC2 LD A,194
\ 00E4 D305 OUT (5),A
56 store_location =(char *)DataAddress + (index_address-399)*OneLocationBYTE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -