📄 ap_common.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:30:51 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ap_common.c #
# List file = d:\case_i_d913f\ap\ap_fmrecord\list\ap_common.lst #
# Object file = d:\case_i_d913f\ap\ap_fmrecord\obj\ap_common.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\ap_common.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ap_common(17)
\ 0000 RSEG COM_RES(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN InvertRegion
\ 0000 EXTERN PutSDImage
\ 0000 PUBLIC ResClose
\ 0000 PUBLIC ResInvertShowPic
\ 0000 PUBLIC ResOpen
\ 0000 PUBLIC ResShowPic
\ 0000 EXTERN SD_FClose
\ 0000 EXTERN SD_FOpen
\ 0000 EXTERN SD_FRead
\ 0000 EXTERN SD_FSeek
\ 0000 EXTERN UpdateScreen
\ 0000 PUBLIC res_entry
\ 0000 PUBLIC res_fp
\ 0000 PUBLIC res_head
\ 0000 PUBLIC res_region
\ 0000 PUBLIC scroll_cnt
\ 0000 PUBLIC str_pt
\ 0000 PUBLIC strhead_pt
\ 0000 PUBLIC ui_auto_select
\ 0000 PUBLIC ui_auto_update
\ 0000 PUBLIC ui_run_realtime
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?L_LSH_L03
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG COM_RES
\ 0000 ResOpen:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * ap common lib file, udisk use this file too
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ap_common.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
10 *******************************************************************************
11 */
12 #pragma codeseg(COM_RES)
13
14 #ifdef USB_DISK_USING
15
16 /* usb disk 不使用调试宏*/
17 #define NAPDEBUG
18
19 /* usb disk 使用 non_bankl 方式call 这些函数*/
20 #pragma function=non_banked
21
22 #endif /* USB_DISK_USING*/
23
24 #include "ap_common.h"
25 #ifndef USB_DISK_USING
26 #define InvertFlag
27 #endif
28 //========== global field ===============
29
30 //操作这些资源时不能被中断, 这些变量应该放在所有ap可见的地方
31 SD_FILE *res_fp;
32 res_head_t res_head;
33 res_entry_t res_entry;
34 region_t res_region;
35
36 //滚屏相关参数
37 char *str_pt;//字符串当前指针
38 char *strhead_pt;//字串首址记录
39 BYTE scroll_cnt;
40
41 //请不要把这个变量定义在非IDATA0 段,否则不能初始化
42 BOOL ui_auto_update=TRUE; //是否自动刷新屏幕
43 BOOL ui_auto_select=TRUE; //是否自动确认
44 BOOL ui_run_realtime=FALSE; //控件跑实时模式
45
46 /*
47 ********************************************************************************
48 * Description : 打开资源文件
49 *
50 * Arguments : filename, 资源文件名字
51 *
52 * Returns : 成功,文件指针
53 失败, NULL
54 *
55 * Notes :
56 *
57 ********************************************************************************
58 */
59 SD_FILE *ResOpen(const char * filename)
60 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
61 //open res file
62 res_fp = SD_FOpen(filename, 0);
\ 0002 0E00 LD C,0
\ 0004 CD0000 CALL LWRD SD_FOpen
\ 0007 220000 LD (res_fp),HL
63 if(res_fp == NULL ) return NULL;
\ 000A 7D LD A,L
\ 000B B4 OR H
\ 000C 282E JR Z,?0020
\ 000E ?0002:
\ 000E ?0003:
64
65 //check magic "RES 0x19"
66 SD_FRead(res_fp, &res_head, sizeof(res_head));
\ 000E 211000 LD HL,16
\ 0011 E5 PUSH HL
\ 0012 010200 LD BC,res_head
\ 0015 CD4C00 CALL LWRD ?0021
\ 0018 F1 POP AF
67 if( res_head.magic[0] != 'R' ||
68 res_head.magic[1] != 'E' ||
69 res_head.magic[2] != 'S' ||
70 res_head.magic[3] != 0x19 )
\ 0019 3A0200 LD A,(res_head)
\ 001C FE52 CP 82
\ 001E 2015 JR NZ,?0006
\ 0020 3A0300 LD A,(res_head+1)
\ 0023 FE45 CP 69
\ 0025 200E JR NZ,?0006
\ 0027 3A0400 LD A,(res_head+2)
\ 002A FE53 CP 83
\ 002C 2007 JR NZ,?0006
\ 002E 3A0500 LD A,(res_head+3)
\ 0031 FE19 CP 25
\ 0033 280C JR Z,?0005
\ 0035 ?0006:
\ 0035 ?0007:
\ 0035 ?0004:
71 {
72 SD_FClose(res_fp);
\ 0035 ED5B0000 LD DE,(res_fp)
\ 0039 CD0000 CALL LWRD SD_FClose
73 return NULL;
\ 003C ?0020:
\ 003C 210000 LD HL,0
74 }
\ 003F 1803 JR ?0008
\ 0041 ?0005:
75
76 //check count
77 ASSERT(res_head.counts == UIID_MAX);
78
79 //return ok
80 return res_fp;
\ 0041 2A0000 LD HL,(res_fp)
81 }
\ 0044 ?0008:
\ 0044 F1 POP AF
\ 0045 C1 POP BC
\ 0046 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0049 ?0022:
\ 0049 011200 LD BC,res_entry
\ 004C ?0021:
\ 004C ED5B0000 LD DE,(res_fp)
\ 0050 C30000 JP LWRD SD_FRead
\ 0053 ResClose:
82
83 /*
84 ********************************************************************************
85 * Description : 关闭资源文件
86 *
87 * Arguments :
88 *
89 * Returns :
90 *
91 * Notes :
92 *
93 ********************************************************************************
94 */
95 void ResClose(const SD_FILE *fp)
96 {
\ 0053 D5 PUSH DE
97 SD_FClose(fp);
\ 0054 CD0000 CALL LWRD SD_FClose
98 }
\ 0057 E1 POP HL
\ 0058 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 005B ResShowPic:
99
100 /*
101 ********************************************************************************
102 * Description : 在指定位置显示图形
103 *
104 * Arguments : id, 资源代号
105 x,y, 屏幕坐标
106 *
107 * Returns : 成功, 1
108 失败, 0
109 *
110 * Notes :
111 *
112 ********************************************************************************
113 */
114 int ResShowPic(WORD id, uchar x, uchar y)
115 {
\ 005B C5 PUSH BC
\ 005C D5 PUSH DE
\ 005D F5 PUSH AF
\ 005E F5 PUSH AF
116 WORD buf[2]; //buffer for sd read
117
118 ASSERT(id <= UIID_MAX);
119
120 //读entry
121 SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
\ 005F 6B LD L,E
\ 0060 62 LD H,D
\ 0061 010000 LD BC,0
\ 0064 3E04 LD A,4
\ 0066 CD0000 CALL LWRD ?L_LSH_L03
\ 0069 C5 PUSH BC
\ 006A E5 PUSH HL
\ 006B 0E00 LD C,0
\ 006D ED5B0000 LD DE,(res_fp)
\ 0071 CD0000 CALL LWRD SD_FSeek
\ 0074 E1 POP HL
\ 0075 E1 POP HL
122 SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));
\ 0076 211000 LD HL,16
\ 0079 E5 PUSH HL
\ 007A CD4900 CALL LWRD ?0022
\ 007D F1 POP AF
123 if(res_entry.type != RES_TYPE_PIC) return 0;
\ 007E 3A1800 LD A,(res_entry+6)
\ 0081 3D DEC A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -