📄 ui_directory_fun.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 16:58:59 #
# 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_amv\list\ui_directory_fun.lst #
# Object file = d:\case_i_d90f\ap\ap_amv\obj\ui_directory_fun.r01 #
# ASM file = d:\case_i_d90f\ap\ap_amv\list\ui_directory_fun.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_amv\Obj\ -e -K -w #
# -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d90f\ap\ap_amv\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_amv\List\ #
# -ND:\case_i_d90f\ap\ap_amv\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_FAST_LEAVE_L08
\ 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 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 F5 PUSH AF
33 int i;
34 byte status;
35 status = input8(0x05);
\ 0003 DB05 IN A,(5)
\ 0005 210000 LD HL,0
\ 0008 39 ADD HL,SP
\ 0009 77 LD (HL),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 210000 LD HL,0
\ 0029 39 ADD HL,SP
\ 002A 7E LD A,(HL)
\ 002B D305 OUT (5),A
42 }
\ 002D E1 POP HL
\ 002E D1 POP DE
\ 002F C1 POP BC
\ 0030 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0033 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 {
\ 0033 C5 PUSH BC
\ 0034 DDE5 PUSH IX
\ 0036 F5 PUSH AF
\ 0037 F5 PUSH AF
\ 0038 D5 PUSH DE
\ 0039 DDE1 POP IX
57 BYTE m,k;
58 byte status;
59
60 if(n>999)
\ 003B 21E703 LD HL,999
\ 003E A7 AND A
\ 003F ED52 SBC HL,DE
\ 0041 382C JR C,?0008
\ 0043 ?0006:
\ 0043 ?0007:
61 return;
62 status = input8(0x05);
\ 0043 DB05 IN A,(5)
\ 0045 210100 LD HL,1
\ 0048 39 ADD HL,SP
\ 0049 77 LD (HL),A
63 output8(0x05, 0xf6);
\ 004A 3EF6 LD A,246
\ 004C D305 OUT (5),A
64
65 m=n/8;
\ 004E 0603 LD B,3
\ 0050 CD0000 CALL LWRD ?US_RSH_L02
66 k=n%8;
\ 0053 DDE5 PUSH IX
\ 0055 E1 POP HL
\ 0056 7D LD A,L
\ 0057 E607 AND 7
67 k=1<<k;
\ 0059 47 LD B,A
\ 005A 3E01 LD A,1
\ 005C CD0000 CALL LWRD ?C_LSH_L01
68 dirbuf[m]=dirbuf[m]|k;
\ 005F 4B LD C,E
\ 0060 0600 LD B,0
\ 0062 210000 LD HL,dirbuf
\ 0065 09 ADD HL,BC
\ 0066 B6 OR (HL)
\ 0067 77 LD (HL),A
69
70 output8(0x05, status);
\ 0068 210100 LD HL,1
\ 006B 39 ADD HL,SP
\ 006C 7E LD A,(HL)
\ 006D D305 OUT (5),A
71 }
\ 006F ?0008:
\ 006F E1 POP HL
\ 0070 E1 POP HL
\ 0071 DDE1 POP IX
\ 0073 C1 POP BC
\ 0074 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0077 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 {
\ 0077 C5 PUSH BC
\ 0078 FDE5 PUSH IY
\ 007A DDE5 PUSH IX
\ 007C DD210000 LD IX,0
\ 0080 DD39 ADD IX,SP
\ 0082 D5 PUSH DE
\ 0083 F5 PUSH AF
\ 0084 F5 PUSH AF
\ 0085 F5 PUSH AF
\ 0086 F5 PUSH AF
85 WORD h=0,k=0;
86 BYTE m,i,j;
87 BYTE needbreak=0;
88 byte status;
89
90 if(n>999)
\ 0087 FD210000 LD IY,0
\ 008B AF XOR A
\ 008C DD77F6 LD (IX-10),A
\ 008F DD77F7 LD (IX-9),A
\ 0092 DD77FB LD (IX-5),A
\ 0095 21E703 LD HL,999
\ 0098 ED52 SBC HL,DE
\ 009A 3005 JR NC,?0010
\ 009C ?0009:
91 return 0;
\ 009C 6F LD L,A
\ 009D 67 LD H,A
\ 009E C33301 JP LWRD ?0029
\ 00A1 ?0010:
92 status = input8(0x05);
\ 00A1 DB05 IN A,(5)
\ 00A3 DD77FC LD (IX-4),A
93 output8(0x05, 0xf6);
\ 00A6 3EF6 LD A,246
\ 00A8 D305 OUT (5),A
94
95 for(i=0;i<125;i++)
\ 00AA DD36F800 LD (IX-8),0
\ 00AE ?0012:
\ 00AE DD7EF8 LD A,(IX-8)
\ 00B1 FE7D CP 125
\ 00B3 306F JR NC,?0011
\ 00B5 ?0013:
96 {
97 k++;
\ 00B5 DD34F6 INC (IX-10)
\ 00B8 2003 JR NZ,?0066
\ 00BA DD34F7 INC (IX-9)
\ 00BD ?0066:
98 m=dirbuf[i];
\ 00BD 4F LD C,A
\ 00BE 0600 LD B,0
\ 00C0 210000 LD HL,dirbuf
\ 00C3 09 ADD HL,BC
\ 00C4 46 LD B,(HL)
\ 00C5 DD70F9 LD (IX-7),B
99 if((m&1)==1)h++;
\ 00C8 CB40 BIT 0,B
\ 00CA 2802 JR Z,?0016
\ 00CC ?0015:
\ 00CC FD23 INC IY
\ 00CE ?0016:
100 if(h==n)
\ 00CE DD6EFE LD L,(IX-2)
\ 00D1 DD66FF LD H,(IX-1)
\ 00D4 FDE5 PUSH IY
\ 00D6 C1 POP BC
\ 00D7 A7 AND A
\ 00D8 ED42 SBC HL,BC
\ 00DA 2848 JR Z,?0011
\ 00DC ?0017:
101 break;
\ 00DC ?0018:
102 for(j=0;j<7;j++)
\ 00DC DD36FA00 LD (IX-6),0
\ 00E0 ?0020:
\ 00E0 DD7EFA LD A,(IX-6)
\ 00E3 FE07 CP 7
\ 00E5 3032 JR NC,?0019
\ 00E7 ?0021:
103 {
104 k++;
\ 00E7 DD34F6 INC (IX-10)
\ 00EA 2003 JR NZ,?0067
\ 00EC DD34F7 INC (IX-9)
\ 00EF ?0067:
105 m=m/2;
\ 00EF 210300 LD HL,3
\ 00F2 39 ADD HL,SP
\ 00F3 0602 LD B,2
\ 00F5 7E LD A,(HL)
\ 00F6 CD0000 CALL LWRD ?UC_DIV_L01
\ 00F9 77 LD (HL),A
106 if((m&1)==1)h++;
\ 00FA CB47 BIT 0,A
\ 00FC 2802 JR Z,?0024
\ 00FE ?0023:
\ 00FE FD23 INC IY
\ 0100 ?0024:
107 if(h==n)
\ 0100 DD6EFE LD L,(IX-2)
\ 0103 DD66FF LD H,(IX-1)
\ 0106 FDE5 PUSH IY
\ 0108 C1 POP BC
\ 0109 A7 AND A
\ 010A ED42 SBC HL,BC
\ 010C 2006 JR NZ,?0026
\ 010E ?0025:
108 {
109 needbreak=1;
\ 010E DD36FB01 LD (IX-5),1
110 break;
\ 0112 1805 JR ?0019
\ 0114 ?0026:
\ 0114 DD34FA INC (IX-6)
\ 0117 18C7 JR ?0020
\ 0119 ?0019:
111 }
112
113 }
114 if(needbreak)
\ 0119 AF XOR A
\ 011A DDB6FB OR (IX-5)
\ 011D 2005 JR NZ,?0011
\ 011F ?0027:
115 break;
\ 011F ?0028:
\ 011F DD34F8 INC (IX-8)
\ 0122 188A JR ?0012
\ 0124 ?0011:
116 }
117 output8(0x05, status);
\ 0124 DD7EFC LD A,(IX-4)
\ 0127 D305 OUT (5),A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -