📄 ui_directory_fun.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:00:37 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\common\ui_directory_fun.c #
# List file = d:\case_i_d90f\ap\ap_music\list\ui_directory_fun.lst#
# Object file = d:\case_i_d90f\ap\ap_music\obj\ui_directory_fun.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\ui_directory_fun.s01#
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w #
# -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_music\List\ #
# -ND:\case_i_d90f\ap\ap_music\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# D:\CASE_I_D90F\AP\COMMON\ui_directory_fun.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_directory_fun(17)
\ 0000 RSEG COM_CTRL(0)
\ 0000 RSEG CSTR(0)
\ 0000 EXTERN FS_CD
\ 0000 PUBLIC GetActiveDirFrom
\ 0000 EXTERN GetFileTotal
\ 0000 PUBLIC Getdirbuf
\ 0000 PUBLIC Initdirbuf
\ 0000 PUBLIC Setdirbuf
\ 0000 EXTERN ToDirEntry
\ 0000 PUBLIC count_dir_num
\ 0000 EXTERN dirbuf
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?C_LSH_L01
\ 0000 EXTERN ?UC_DIV_L01
\ 0000 EXTERN ?US_RSH_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 RSEG COM_CTRL
\ 0000 Initdirbuf:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * ap common lib, directory control file
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * File: ui_directory_fun.c
10 * By : jmzhang
11 * Version: v1.00 first version 2005-9-22 19:35
12 *******************************************************************************
13 */
14 #pragma codeseg(COM_CTRL)
15 #include "ap_common.h"
16 #include "enhanced.h"
17 #include "actos.h"
18 #include "filesys.h"
19 #include "directory.h"
20
21 extern const char Ui_IgnoreExt[4];// = {"* "};
22
23
24
25 #pragma memory=dataseg(IDM_COM_FSL_D)
26 extern char dirbuf[125];
27
28 #pragma memory=default
29
30
31 void Initdirbuf(void)
32 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FEFF DEFW -2
33 int i;
34 byte status;
35 status = input8(0x05);
\ 0005 DB05 IN A,(5)
\ 0007 DD77FE LD (IX-2),A
36 output8(0x05, 0xf6);
\ 000A 3EF6 LD A,246
\ 000C D305 OUT (5),A
37
38 for(i=0;i<125;i++)
\ 000E 110000 LD DE,0
\ 0011 ?0003:
\ 0011 017D80 LD BC,32893
\ 0014 6B LD L,E
\ 0015 62 LD H,D
\ 0016 78 LD A,B
\ 0017 AC XOR H
\ 0018 67 LD H,A
\ 0019 ED42 SBC HL,BC
\ 001B 3009 JR NC,?0002
\ 001D ?0004:
39 dirbuf[i]=0;
\ 001D 210000 LD HL,dirbuf
\ 0020 19 ADD HL,DE
\ 0021 3600 LD (HL),0
\ 0023 13 INC DE
\ 0024 18EB JR ?0003
\ 0026 ?0002:
40
41 output8(0x05, status);
\ 0026 DD7EFE LD A,(IX-2)
\ 0029 D305 OUT (5),A
42 }
\ 002B C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 002E Setdirbuf:
43
44
45 //********************************************************************************
46 //* Description :用于建立快速查询表
47 //* n 最大值为999
48 //** Arguments :
49 //*
50 //* Returns :
51 //*
52 //* Notes :
53 //*
54 //********************************************************************************
55 void Setdirbuf(WORD n)
56 {
\ 002E CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0031 FEFF DEFW -2
57 BYTE m,k;
58 byte status;
59
60 if(n>999)
\ 0033 DD4E02 LD C,(IX+2)
\ 0036 DD4603 LD B,(IX+3)
\ 0039 21E703 LD HL,999
\ 003C A7 AND A
\ 003D ED42 SBC HL,BC
\ 003F 382E JR C,?0008
\ 0041 ?0006:
\ 0041 ?0007:
61 return;
62 status = input8(0x05);
\ 0041 DB05 IN A,(5)
\ 0043 57 LD D,A
63 output8(0x05, 0xf6);
\ 0044 3EF6 LD A,246
\ 0046 D305 OUT (5),A
64
65 m=n/8;
\ 0048 D5 PUSH DE
\ 0049 0603 LD B,3
\ 004B DD5E02 LD E,(IX+2)
\ 004E DD5603 LD D,(IX+3)
\ 0051 CD0000 CALL LWRD ?US_RSH_L02
\ 0054 DD73FE LD (IX-2),E
\ 0057 D1 POP DE
66 k=n%8;
\ 0058 79 LD A,C
\ 0059 E607 AND 7
67 k=1<<k;
\ 005B 47 LD B,A
\ 005C 3E01 LD A,1
\ 005E CD0000 CALL LWRD ?C_LSH_L01
68 dirbuf[m]=dirbuf[m]|k;
\ 0061 DD4EFE LD C,(IX-2)
\ 0064 0600 LD B,0
\ 0066 210000 LD HL,dirbuf
\ 0069 09 ADD HL,BC
\ 006A B6 OR (HL)
\ 006B 77 LD (HL),A
69
70 output8(0x05, status);
\ 006C 7A LD A,D
\ 006D D305 OUT (5),A
71 }
\ 006F ?0008:
\ 006F C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0072 Getdirbuf:
72
73 //********************************************************************************
74 //* Description :输入为目录在list表中的位置,输出目录序号DirNo,
75 //* n 最大值为999
76 //** Arguments :
77 //*
78 //* Returns : 输出目录序号DirNo
79 //*
80 //* Notes :
81 //*
82 //********************************************************************************
83 WORD Getdirbuf(WORD n)
84 {
\ 0072 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0075 FAFF DEFW -6
\ 0077 FDE5 PUSH IY
85 WORD h=0,k=0;
86 BYTE m,i,j;
87 BYTE needbreak=0;
88 byte status;
89
90 if(n>999)
\ 0079 110000 LD DE,0
\ 007C FD210000 LD IY,0
\ 0080 DD36FD00 LD (IX-3),0
\ 0084 DD4E02 LD C,(IX+2)
\ 0087 DD4603 LD B,(IX+3)
\ 008A 21E703 LD HL,999
\ 008D A7 AND A
\ 008E ED42 SBC HL,BC
\ 0090 3005 JR NC,?0010
\ 0092 ?0009:
91 return 0;
\ 0092 210000 LD HL,0
\ 0095 187B JR ?0029
\ 0097 ?0010:
92 status = input8(0x05);
\ 0097 DB05 IN A,(5)
\ 0099 DD77FE LD (IX-2),A
93 output8(0x05, 0xf6);
\ 009C 3EF6 LD A,246
\ 009E D305 OUT (5),A
94
95 for(i=0;i<125;i++)
\ 00A0 DD36FA00 LD (IX-6),0
\ 00A4 ?0012:
\ 00A4 DD7EFA LD A,(IX-6)
\ 00A7 FE7D CP 125
\ 00A9 305B JR NC,?0011
\ 00AB ?0013:
96 {
97 k++;
98 m=dirbuf[i];
\ 00AB 4F LD C,A
\ 00AC 0600 LD B,0
\ 00AE 210000 LD HL,dirbuf
\ 00B1 09 ADD HL,BC
\ 00B2 46 LD B,(HL)
\ 00B3 DD70FB LD (IX-5),B
99 if((m&1)==1)h++;
\ 00B6 CB40 BIT 0,B
\ 00B8 FD23 INC IY
\ 00BA 2801 JR Z,?0016
\ 00BC ?0015:
\ 00BC 13 INC DE
\ 00BD ?0016:
100 if(h==n)
\ 00BD DD6E02 LD L,(IX+2)
\ 00C0 DD6603 LD H,(IX+3)
\ 00C3 A7 AND A
\ 00C4 ED52 SBC HL,DE
\ 00C6 283E JR Z,?0011
\ 00C8 ?0017:
101 break;
\ 00C8 ?0018:
102 for(j=0;j<7;j++)
\ 00C8 DD36FC00 LD (IX-4),0
\ 00CC ?0020:
\ 00CC DD7EFC LD A,(IX-4)
\ 00CF FE07 CP 7
\ 00D1 3028 JR NC,?0019
\ 00D3 ?0021:
103 {
104 k++;
105 m=m/2;
\ 00D3 210300 LD HL,3
\ 00D6 39 ADD HL,SP
\ 00D7 0602 LD B,2
\ 00D9 7E LD A,(HL)
\ 00DA CD0000 CALL LWRD ?UC_DIV_L01
\ 00DD 77 LD (HL),A
106 if((m&1)==1)h++;
\ 00DE CB47 BIT 0,A
\ 00E0 FD23 INC IY
\ 00E2 2801 JR Z,?0024
\ 00E4 ?0023:
\ 00E4 13 INC DE
\ 00E5 ?0024:
107 if(h==n)
\ 00E5 DD6E02 LD L,(IX+2)
\ 00E8 DD6603 LD H,(IX+3)
\ 00EB A7 AND A
\ 00EC ED52 SBC HL,DE
\ 00EE 2006 JR NZ,?0026
\ 00F0 ?0025:
108 {
109 needbreak=1;
\ 00F0 DD36FD01 LD (IX-3),1
110 break;
\ 00F4 1805 JR ?0019
\ 00F6 ?0026:
\ 00F6 DD34FC INC (IX-4)
\ 00F9 18D1 JR ?0020
\ 00FB ?0019:
111 }
112
113 }
114 if(needbreak)
\ 00FB AF XOR A
\ 00FC DDB6FD OR (IX-3)
\ 00FF 2005 JR NZ,?0011
\ 0101 ?0027:
115 break;
\ 0101 ?0028:
\ 0101 DD34FA INC (IX-6)
\ 0104 189E JR ?0012
\ 0106 ?0011:
116 }
117 output8(0x05, status);
\ 0106 DD7EFE LD A,(IX-2)
\ 0109 D305 OUT (5),A
118 return k-1;
\ 010B 21FFFF LD HL,65535
\ 010E FDE5 PUSH IY
\ 0110 C1 POP BC
\ 0111 09 ADD HL,BC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -