📄 ui_directory_scroll.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:31:37 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_browser\ui_directory_scroll.c #
# List file = d:\case_i_d913f\ap\ap_browser\list\ui_directory_scroll.lst#
# Object file = d:\case_i_d913f\ap\ap_browser\obj\ui_directory_scroll.r01#
# ASM file = d:\case_i_d913f\ap\ap_browser\list\ui_directory_scroll.s01#
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_browser\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d913f\ap\ap_browser\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_browser\List\ #
# -ND:\case_i_d913f\ap\ap_browser\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# D:\CASE_I_D913F\AP\AP_BROWSER\ui_directory_scroll.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_directory_scroll(17)
\ 0000 RSEG COM_CTRL(0)
\ 0000 RSEG CSTR(0)
\ 0000 EXTERN BankSwitch
\ 0000 EXTERN DecodeOnePage
\ 0000 EXTERN FS_CD
\ 0000 EXTERN GetActiveDirFrom
\ 0000 EXTERN OnePageRecord
\ 0000 EXTERN ScrollFlag
\ 0000 EXTERN ShowDirectory
\ 0000 EXTERN TransOneRecord
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN cur_group
\ 0000 EXTERN fselDirLayer
\ 0000 EXTERN fselDirNo
\ 0000 EXTERN fselEntCurrentDir
\ 0000 EXTERN fselExtNo
\ 0000 EXTERN fselFileNo
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselRetParentDir
\ 0000 EXTERN fselSetLocationC
\ 0000 EXTERN init_dir_buf
\ 0000 EXTERN list_active
\ 0000 EXTERN list_total_num
\ 0000 EXTERN temp_record
\ 0000 PUBLIC ui_directory
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?US_DIV_L02
\ 0000 EXTERN ?US_MOD_L02
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG COM_CTRL
\ 0000 ui_directory:
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.c
10 * By : jmzhang
11 * Version: v1.00 first version 2005-9-22 19:35
12 *******************************************************************************
13 */
14 #pragma codeseg(COM_CTRL)
15
16 #include "ap_common.h"
17 #include "directory.h"
18 #include "filesys.h"
19
20 #pragma memory=dataseg(DEC_COM_FSL_D)
21 extern file_record temp_record;
22 extern WORD dir_total_num,file_total_num,list_total_num,list_active,cur_group; //目录总数,文件总数和浏览项数,浏览活动项
23
24 #pragma memory=dataseg(IDM_COM_FSL_D)
25 extern file_record OnePageRecord[row_count_def];
26 extern char dirbuf[125];
27 #pragma memory=default
28
29
30 extern void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id);
31 extern void ShowDirectory(WORD top,WORD bottom,WORD Old_active,WORD active,BYTE string_id,BYTE Disk);
32 extern void init_dir_buf(void);
33 extern void TransOneRecord(file_record *target,file_record *source_record);
34 extern WORD GetActiveDirFrom(WORD n);
35 extern char ScrollFlag; //滚动标志位
36
37 /********************************************************************************
38 * Description : select the directory.
39 *
40 * Arguments :
41 * location: get thedisk type
42 * type : show file kind
43 * string_id: language type
44 * Returns :
45 * other: Successful
46 * 0: Fail, detail information in fselError
47 * Notes : only select the valid directory
48 *
49 ********************************************************************************/
50 int ui_directory(file_location_t *location, BYTE type,BYTE string_id)
51 {
\ 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 21ECFF LD HL,65516
\ 000F 39 ADD HL,SP
\ 0010 F9 LD SP,HL
52 char Strname[12];
53 char key;
54 BYTE iTag,i;
55 BYTE count=0;
\ 0011 DD36ED00 LD (IX-19),0
56 WORD top,bottom,old_active;
57 BYTE active;
58 BYTE DiskFlag;
59
60 if(location->disk=='H')
\ 0015 1A LD A,(DE)
\ 0016 FE48 CP 72
\ 0018 2006 JR NZ,?0003
\ 001A ?0002:
61 DiskFlag=1;
\ 001A DD36EA01 LD (IX-22),1
62 else
\ 001E 1804 JR ?0004
\ 0020 ?0003:
63 DiskFlag=0;
\ 0020 DD36EA00 LD (IX-22),0
\ 0024 ?0004:
64
65 BankSwitch((unsigned long)DecodeOnePage >> 16);
\ 0024 0600 LD B,0
\ 0026 1E00 LD E,BYTE3 DecodeOnePage
\ 0028 CD0000 CALL LWRD BankSwitch
66 iTag = fselSetLocationC(location);
\ 002B DD5EFC LD E,(IX-4)
\ 002E DD56FD LD D,(IX-3)
\ 0031 3E00 LD A,BYTE3 fselSetLocationC
\ 0033 210000 LD HL,LWRD fselSetLocationC
\ 0036 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
67 if (fselDirNo[0] == 0) //当前所选为根目录,重新初始化目录层次有关参数
\ 0039 3A0000 LD A,(fselDirNo)
\ 003C B7 OR A
\ 003D 2021 JR NZ,?0006
\ 003F ?0005:
68 {
69 for(i=0; i<8; i++)
\ 003F DD70EC LD (IX-20),B
\ 0042 ?0008:
\ 0042 DD7EEC LD A,(IX-20)
\ 0045 FE08 CP 8
\ 0047 300B JR NC,?0007
\ 0049 ?0009:
70 fselDirNo[i] = 0;
\ 0049 4F LD C,A
\ 004A 210000 LD HL,fselDirNo
\ 004D 09 ADD HL,BC
\ 004E 70 LD (HL),B
\ 004F DD34EC INC (IX-20)
\ 0052 18EE JR ?0008
\ 0054 ?0007:
71 FS_CD(":");
\ 0054 110000 LD DE,?0011
\ 0057 CD0000 CALL LWRD FS_CD
72 fselDirLayer = 0;
\ 005A AF XOR A
\ 005B 320000 LD (fselDirLayer),A
73 }
74 else //进入当前目录名所指目录中
\ 005E 1837 JR ?0018
\ 0060 ?0006:
75 {
76 if(fselDirLayer<7)
\ 0060 3A0000 LD A,(fselDirLayer)
\ 0063 FE07 CP 7
\ 0065 3030 JR NC,?0018
\ 0067 ?0013:
77 {
78 if(fselDirNo[fselDirLayer])
\ 0067 4F LD C,A
\ 0068 210000 LD HL,fselDirNo
\ 006B 09 ADD HL,BC
\ 006C 7E LD A,(HL)
\ 006D B7 OR A
\ 006E 2806 JR Z,?0016
\ 0070 ?0015:
79 fselDirLayer=fselDirLayer+1;
\ 0070 79 LD A,C
\ 0071 C601 ADD A,1
\ 0073 320000 LD (fselDirLayer),A
\ 0076 ?0016:
80 if(FS_CD(location->path))
\ 0076 210E00 LD HL,14
\ 0079 DD4EFC LD C,(IX-4)
\ 007C DD46FD LD B,(IX-3)
\ 007F 09 ADD HL,BC
\ 0080 EB EX DE,HL
\ 0081 CD0000 CALL LWRD FS_CD
\ 0084 B7 OR A
\ 0085 2810 JR Z,?0018
\ 0087 ?0017:
81 {
82 fselDirLayer=fselDirLayer+1;
\ 0087 3A0000 LD A,(fselDirLayer)
\ 008A C601 ADD A,1
\ 008C 320000 LD (fselDirLayer),A
83 fselDirNo[fselDirLayer] = 0; //将当前目录号重新置为0(即目录首)
\ 008F 4F LD C,A
\ 0090 0600 LD B,0
\ 0092 210000 LD HL,fselDirNo
\ 0095 09 ADD HL,BC
\ 0096 70 LD (HL),B
\ 0097 ?0018:
\ 0097 ?0014:
\ 0097 ?0012:
84 }
85 }
86 }
87
88 init_dir_buf(); //初始化目录查询表并计算有效目录总数和文件总数
\ 0097 3E00 LD A,BYTE3 init_dir_buf
\ 0099 210000 LD HL,LWRD init_dir_buf
\ 009C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
89
90 list_active=0;
\ 009F 210000 LD HL,0
\ 00A2 220000 LD (list_active),HL
91 cur_group=0;
\ 00A5 220000 LD (cur_group),HL
92
93 top=0; //顶的序号
94 bottom=top+GroupDefine-1; //底的序号
\ 00A8 FD210500 LD IY,5
95 if(bottom>(list_total_num-1))
\ 00AC AF XOR A
\ 00AD DD77E8 LD (IX-24),A
\ 00B0 DD77E9 LD (IX-23),A
\ 00B3 2B DEC HL
\ 00B4 ED4B0000 LD BC,(list_total_num)
\ 00B8 09 ADD HL,BC
\ 00B9 FDE5 PUSH IY
\ 00BB C1 POP BC
\ 00BC A7 AND A
\ 00BD ED42 SBC HL,BC
\ 00BF 300B JR NC,?0020
\ 00C1 ?0019:
96 bottom=list_total_num-1;
\ 00C1 21FFFF LD HL,65535
\ 00C4 ED4B0000 LD BC,(list_total_num)
\ 00C8 09 ADD HL,BC
\ 00C9 E5 PUSH HL
\ 00CA FDE1 POP IY
\ 00CC ?0020:
97
98 DecodeOnePage(top,bottom,type,string_id);
\ 00CC DD6E08 LD L,(IX+8)
\ 00CF E5 PUSH HL
\ 00D0 DD6EFE LD L,(IX-2)
\ 00D3 E5 PUSH HL
\ 00D4 FDE5 PUSH IY
\ 00D6 C1 POP BC
\ 00D7 5F LD E,A
\ 00D8 53 LD D,E
\ 00D9 CD5204 CALL LWRD ?0127
\ 00DC E1 POP HL
\ 00DD E1 POP HL
99
100 ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -