📄 ui_director_rec2.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:31:16 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ui_director_rec2.c #
# List file = d:\case_i_d913f\ap\ap_fmrecord\list\ui_director_rec2.lst#
# Object file = d:\case_i_d913f\ap\ap_fmrecord\obj\ui_director_rec2.r01#
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_fmrecord\Obj\ -e #
# -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_fmrecord\List\ -q -t8 -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\COMMON\ui_director_rec2.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_director_rec2(17)
\ 0000 RSEG DEC_COM_FSL_C(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG DEC_COM_FSL_D(0)
\ 0000 RSEG IDM_COM_FSL_D(0)
\ 0000 RSEG DEC_COM_FSL_R(0)
\ 0000 PUBLIC DecodeOnePage
\ 0000 EXTERN FS_Backup
\ 0000 EXTERN FS_Dir
\ 0000 EXTERN FS_GetName
\ 0000 EXTERN FS_Restore
\ 0000 PUBLIC GetLongNameAndSave
\ 0000 PUBLIC OnePageRecord
\ 0000 EXTERN PutS
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 PUBLIC SaveOtherPara
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN SetTextPos
\ 0000 PUBLIC ShowDirectory
\ 0000 EXTERN ToDirEntry
\ 0000 PUBLIC TransOneRecord
\ 0000 PUBLIC Ui_IgnoreExt
\ 0000 PUBLIC count_dir_num
\ 0000 PUBLIC cur_group
\ 0000 PUBLIC dir_total_num
\ 0000 PUBLIC dirbuf
\ 0000 EXTERN file_name
\ 0000 PUBLIC file_total_num
\ 0000 EXTERN fselDirLayer
\ 0000 EXTERN fselDirNo
\ 0000 EXTERN fselExtNo
\ 0000 EXTERN fselFileNo
\ 0000 PUBLIC get_dir_name
\ 0000 PUBLIC init_dir_buf
\ 0000 PUBLIC list_active
\ 0000 PUBLIC list_total_num
\ 0000 PUBLIC menu_pos
\ 0000 PUBLIC temp_record
\ 0000 EXTERN unitochar
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?UC_MOD_L01
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG DEC_COM_FSL_C
\ 0000 count_dir_num:
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_director2.c
10 * By : jmzhang
11 * Version: v1.00 first version 2005-9-22 19:35
12 *******************************************************************************
13 */
14 #pragma codeseg(DEC_COM_FSL_C)
15
16 #include "ap_common.h"
17 #include "enhanced.h"
18 #include "actos.h"
19 #include "filesys.h"
20 #include "directory.h"
21
22 const char menu_pos[6] = { 22,22+18,22+18*2,22+18*3,22+18*4,22+18*5}; //zxs add
23
24 void GetLongNameAndSave(char *Namebuf,char *LongNamebuf,BYTE string_id);
25 void SaveOtherPara(void);
26 void TransOneRecord(file_record *target,file_record *source_record);
27 void ShowDirectory(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,BYTE string_id,BYTE Disk);
28
29
30 #pragma memory=dataseg(DEC_COM_FSL_D)
31 file_record temp_record;
32 WORD dir_total_num,file_total_num,list_total_num,list_active,cur_group; //目录总数,文件总数和浏览项数,浏览活动项
33
34 #pragma memory=dataseg(IDM_COM_FSL_D)
35 file_record OnePageRecord[row_count_def];
36 char dirbuf[125];
37
38 #pragma memory=constseg(DEC_COM_FSL_R)
39 const char Ui_IgnoreExt[4] = {"* "};
40
41
42
43 #pragma memory=default
44
45 /*
46 ********************************************************************************
47 * Description : 当前目录下,子目录的总数
48 *
49 * Arguments :
50 *
51 * Returns : 子目录总数
52 *
53 * Notes :
54 *
55 ********************************************************************************
56 */
57 WORD count_dir_num(void)
58 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 DDE5 PUSH IX
\ 0004 21F4FF LD HL,65524
\ 0007 39 ADD HL,SP
\ 0008 F9 LD SP,HL
59 WORD tmp,wtemp,total;
60 char strDir[12];
61 tmp = 0;
62 wtemp = 1;
\ 0009 110000 LD DE,0
\ 000C DD210100 LD IX,1
\ 0010 ?0003:
63 while(1)
64 {
65 if (! ToDirEntry(strDir, wtemp))
\ 0010 D5 PUSH DE
\ 0011 DDE5 PUSH IX
\ 0013 C1 POP BC
\ 0014 210200 LD HL,2
\ 0017 39 ADD HL,SP
\ 0018 EB EX DE,HL
\ 0019 3E00 LD A,BYTE3 ToDirEntry
\ 001B 210000 LD HL,LWRD ToDirEntry
\ 001E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0021 2C INC L
\ 0022 2D DEC L
\ 0023 D1 POP DE
\ 0024 2015 JR NZ,?0006
\ 0026 ?0005:
66 {
67 return (wtemp-1);
\ 0026 21FFFF LD HL,65535
\ 0029 DDE5 PUSH IX
\ 002B C1 POP BC
\ 002C 09 ADD HL,BC
68 }
\ 002D EB EX DE,HL
\ 002E 210C00 LD HL,12
\ 0031 39 ADD HL,SP
\ 0032 F9 LD SP,HL
\ 0033 EB EX DE,HL
\ 0034 DDE1 POP IX
\ 0036 D1 POP DE
\ 0037 C1 POP BC
\ 0038 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 003B ?0006:
69 // 只检查文件夹是否有效
70 wtemp ++;
71 }
72 }
\ 003B DD23 INC IX
\ 003D 18D1 JR ?0003
\ 003F GetLongNameAndSave:
73
74
75 /********************************************************************************
76 * Description :GetLongNameAndSave和SaveOtherPara用于保存
77 * 读取记录的参数到全局的temp_record中
78 *
79 ** Arguments :
80 *
81 * Returns :
82 *
83 * Notes :
84 *
85 ********************************************************************************/
86 void GetLongNameAndSave(char *Namebuf,char *LongNamebuf,BYTE string_id)
87 {
\ 003F FDE5 PUSH IY
\ 0041 DDE5 PUSH IX
\ 0043 F5 PUSH AF
\ 0044 C5 PUSH BC
\ 0045 DDE1 POP IX
\ 0047 D5 PUSH DE
\ 0048 FDE1 POP IY
88 BYTE NameNum;
89 memcpy(LongNamebuf,Namebuf,11);
\ 004A 010B00 LD BC,11
\ 004D DDE5 PUSH IX
\ 004F D1 POP DE
\ 0050 FDE5 PUSH IY
\ 0052 E1 POP HL
\ 0053 EDB0 LDIR
90 memcpy(temp_record.name,Namebuf,12);
\ 0055 0E0C LD C,12
\ 0057 110D00 LD DE,temp_record+13
\ 005A FDE5 PUSH IY
\ 005C E1 POP HL
\ 005D EDB0 LDIR
91 NameNum=FS_GetName(LongNamebuf,24);
\ 005F 0E18 LD C,24
\ 0061 DDE5 PUSH IX
\ 0063 D1 POP DE
\ 0064 CD0000 CALL LWRD FS_GetName
\ 0067 210000 LD HL,0
\ 006A 39 ADD HL,SP
\ 006B 77 LD (HL),A
92 if(NameNum!=0)
\ 006C AF XOR A
\ 006D B6 OR (HL)
\ 006E 2825 JR Z,?0008
\ 0070 ?0007:
93 {
94 unitochar(LongNamebuf,NameNum*2+2,string_id);
\ 0070 210A00 LD HL,10
\ 0073 39 ADD HL,SP
\ 0074 4E LD C,(HL)
\ 0075 C5 PUSH BC
\ 0076 6F LD L,A
\ 0077 2600 LD H,0
\ 0079 29 ADD HL,HL
\ 007A 4D LD C,L
\ 007B 44 LD B,H
\ 007C 03 INC BC
\ 007D 03 INC BC
\ 007E DDE5 PUSH IX
\ 0080 D1 POP DE
\ 0081 3E00 LD A,BYTE3 unitochar
\ 0083 210000 LD HL,LWRD unitochar
\ 0086 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0089 F1 POP AF
95 memcpy(temp_record.longname,LongNamebuf,50); //get one usful record
\ 008A 013200 LD BC,50
\ 008D 111900 LD DE,temp_record+25
\ 0090 DDE5 PUSH IX
\ 0092 E1 POP HL
\ 0093 1809 JR ?0057
96 }
97 else
\ 0095 ?0008:
98 memcpy(temp_record.longname,Namebuf,12); //get one usful record
\ 0095 010C00 LD BC,12
\ 0098 111900 LD DE,temp_record+25
\ 009B FDE5 PUSH IY
\ 009D E1 POP HL
\ 009E ?0057:
\ 009E EDB0 LDIR
\ 00A0 ?0009:
99 }
\ 00A0 ?0066:
\ 00A0 E1 POP HL
\ 00A1 DDE1 POP IX
\ 00A3 FDE1 POP IY
\ 00A5 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00A8 SaveOtherPara:
100
101 /********************************************************************************
102 * Description :保存目录结构有关参数到全局结构temp_record中
103 *
104 ** Arguments :
105 *
106 * Returns :
107 *
108 * Notes :
109 *
110 ********************************************************************************/
111 void SaveOtherPara(void)
112 {
\ 00A8 C5 PUSH BC
\ 00A9 D5 PUSH DE
113 memcpy(temp_record.dirno,fselDirNo,8); //目录序号
\ 00AA 010800 LD BC,8
\ 00AD 110100 LD DE,temp_record+1
\ 00B0 210000 LD HL,fselDirNo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -