📄 ui_director2.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 16:58:54 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\common\ui_director2.c #
# List file = d:\case_i_d90f\ap\ap_amv\list\ui_director2.lst #
# Object file = d:\case_i_d90f\ap\ap_amv\obj\ui_director2.r01 #
# ASM file = d:\case_i_d90f\ap\ap_amv\list\ui_director2.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_director2.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_director2(17)
\ 0000 RSEG DEC_COM_FSL_C(0)
\ 0000 RSEG CSTR(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_CD
\ 0000 EXTERN FS_Dir
\ 0000 EXTERN FS_GetName
\ 0000 EXTERN FS_Restore
\ 0000 EXTERN GetDCStatus
\ 0000 EXTERN GetFileTotal
\ 0000 EXTERN GetFileTotalCur
\ 0000 PUBLIC GetLongNameAndSave
\ 0000 EXTERN Getdirbuf
\ 0000 EXTERN Initdirbuf
\ 0000 PUBLIC OnePageRecord
\ 0000 EXTERN PutS
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 PUBLIC SaveOtherPara
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN SetTextOutMode
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN Setdirbuf
\ 0000 PUBLIC ShowDirectory
\ 0000 EXTERN ToDirEntry
\ 0000 PUBLIC TransOneRecord
\ 0000 PUBLIC Ui_IgnoreExt
\ 0000 EXTERN count_dir_num
\ 0000 PUBLIC cur_group
\ 0000 PUBLIC dir_total_num
\ 0000 PUBLIC dirbuf
\ 0000 PUBLIC file_bck_pic
\ 0000 EXTERN file_name
\ 0000 PUBLIC file_pos
\ 0000 PUBLIC file_total_num
\ 0000 EXTERN fselDirLayer
\ 0000 EXTERN fselDirNo
\ 0000 EXTERN fselExtNo
\ 0000 EXTERN fselFileNo
\ 0000 EXTERN fselGetByNO
\ 0000 EXTERN fselTotal
\ 0000 PUBLIC get_dir_name
\ 0000 PUBLIC init_dir_buf
\ 0000 PUBLIC list_active
\ 0000 PUBLIC list_total_num
\ 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 GetLongNameAndSave:
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
23
24 const char file_pos[6] = { POSITION_MENU6, POSITION_MENU5,POSITION_MENU4,POSITION_MENU3,POSITION_MENU2,POSITION_MENU1}; //zxs add
25 const WORD file_bck_pic[6]={ MENUBCK6,MENUBCK5,MENUBCK4,MENUBCK3,MENUBCK2,MENUBCK1 };
26 void GetLongNameAndSave(char *Namebuf,char *LongNamebuf,BYTE string_id);
27 void SaveOtherPara(void);
28 void TransOneRecord(file_record *target,file_record *source_record);
29 void ShowDirectory(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,BYTE string_id,BYTE Disk);
30
31 extern WORD count_dir_num(void);
32 extern void Initdirbuf(void);
33 extern void Setdirbuf(WORD n);
34 extern WORD Getdirbuf(WORD n);
35
36 #pragma memory=dataseg(DEC_COM_FSL_D)
37 file_record temp_record;
38 WORD dir_total_num,file_total_num,list_total_num,list_active,cur_group; //目录总数,文件总数和浏览项数,浏览活动项
39
40 #pragma memory=dataseg(IDM_COM_FSL_D)
41 file_record OnePageRecord[row_count_def];
42 char dirbuf[125];
43
44 #pragma memory=constseg(DEC_COM_FSL_R)
45 const char Ui_IgnoreExt[4] = {"* "};
46
47
48
49 #pragma memory=default
50
51 /********************************************************************************
52 * Description :GetLongNameAndSave和SaveOtherPara用于保存
53 * 读取记录的参数到全局的temp_record中
54 *
55 ** Arguments :
56 *
57 * Returns :
58 *
59 * Notes :
60 *
61 ********************************************************************************/
62 void GetLongNameAndSave(char *Namebuf,char *LongNamebuf,BYTE string_id)
63 {
\ 0000 FDE5 PUSH IY
\ 0002 DDE5 PUSH IX
\ 0004 F5 PUSH AF
\ 0005 C5 PUSH BC
\ 0006 DDE1 POP IX
\ 0008 D5 PUSH DE
\ 0009 FDE1 POP IY
64 BYTE NameNum;
65 memcpy(LongNamebuf,Namebuf,11);
\ 000B 010B00 LD BC,11
\ 000E DDE5 PUSH IX
\ 0010 D1 POP DE
\ 0011 FDE5 PUSH IY
\ 0013 E1 POP HL
\ 0014 EDB0 LDIR
66 memcpy(temp_record.name,Namebuf,12);
\ 0016 0E0C LD C,12
\ 0018 110D00 LD DE,temp_record+13
\ 001B FDE5 PUSH IY
\ 001D E1 POP HL
\ 001E EDB0 LDIR
67 NameNum=FS_GetName(LongNamebuf,24);
\ 0020 0E18 LD C,24
\ 0022 DDE5 PUSH IX
\ 0024 D1 POP DE
\ 0025 CD0000 CALL LWRD FS_GetName
\ 0028 210000 LD HL,0
\ 002B 39 ADD HL,SP
\ 002C 77 LD (HL),A
68 if(NameNum!=0)
\ 002D AF XOR A
\ 002E B6 OR (HL)
\ 002F 2825 JR Z,?0003
\ 0031 ?0002:
69 {
70 unitochar(LongNamebuf,NameNum*2+2,string_id);
\ 0031 210A00 LD HL,10
\ 0034 39 ADD HL,SP
\ 0035 4E LD C,(HL)
\ 0036 C5 PUSH BC
\ 0037 6F LD L,A
\ 0038 2600 LD H,0
\ 003A 29 ADD HL,HL
\ 003B 4D LD C,L
\ 003C 44 LD B,H
\ 003D 03 INC BC
\ 003E 03 INC BC
\ 003F DDE5 PUSH IX
\ 0041 D1 POP DE
\ 0042 3E00 LD A,BYTE3 unitochar
\ 0044 210000 LD HL,LWRD unitochar
\ 0047 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 004A F1 POP AF
71 memcpy(temp_record.longname,LongNamebuf,50); //get one usful record
\ 004B 013200 LD BC,50
\ 004E 111900 LD DE,temp_record+25
\ 0051 DDE5 PUSH IX
\ 0053 E1 POP HL
\ 0054 1809 JR ?0074
72 }
73 else
\ 0056 ?0003:
74 memcpy(temp_record.longname,Namebuf,12); //get one usful record
\ 0056 010C00 LD BC,12
\ 0059 111900 LD DE,temp_record+25
\ 005C FDE5 PUSH IY
\ 005E E1 POP HL
\ 005F ?0074:
\ 005F EDB0 LDIR
\ 0061 ?0004:
75 }
\ 0061 ?0087:
\ 0061 E1 POP HL
\ 0062 DDE1 POP IX
\ 0064 FDE1 POP IY
\ 0066 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0069 SaveOtherPara:
76
77 /********************************************************************************
78 * Description :保存目录结构有关参数到全局结构temp_record中
79 *
80 ** Arguments :
81 *
82 * Returns :
83 *
84 * Notes :
85 *
86 ********************************************************************************/
87 void SaveOtherPara(void)
88 {
\ 0069 C5 PUSH BC
\ 006A D5 PUSH DE
89 memcpy(temp_record.dirno,fselDirNo,8); //目录序号
\ 006B 010800 LD BC,8
\ 006E 110100 LD DE,temp_record+1
\ 0071 210000 LD HL,fselDirNo
\ 0074 EDB0 LDIR
90 temp_record.fileno=fselFileNo; //文件序号
\ 0076 2A0000 LD HL,(fselFileNo)
\ 0079 220900 LD (temp_record+9),HL
91 temp_record.fselExtNo=fselExtNo; //当前后缀名
\ 007C 3A0000 LD A,(fselExtNo)
\ 007F 320C00 LD (temp_record+12),A
92 temp_record.dirlayer=fselDirLayer; //目录层次 0--根目录
\ 0082 3A0000 LD A,(fselDirLayer)
\ 0085 320B00 LD (temp_record+11),A
93 }
\ 0088 D1 POP DE
\ 0089 C1 POP BC
\ 008A C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 008D TransOneRecord:
94
95 /********************************************************************************
96 * Description :用于从idm读记录或写入记录到idm
97 *
98 ** Arguments :
99 *
100 * Returns :
101 *
102 * Notes :
103 *
104 ********************************************************************************/
105 void TransOneRecord(file_record *target,file_record *source_record)
106 {
\ 008D FDE5 PUSH IY
\ 008F DDE5 PUSH IX
\ 0091 F5 PUSH AF
\ 0092 C5 PUSH BC
\ 0093 DDE1 POP IX
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -