📄 bookmark.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:36:04 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_reader\bookmark.c #
# List file = d:\case_i_d913f\ap\ap_reader\list\bookmark.lst #
# Object file = d:\case_i_d913f\ap\ap_reader\obj\bookmark.r01 #
# ASM file = d:\case_i_d913f\ap\ap_reader\list\bookmark.s01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_reader\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d913f\ap\ap_reader\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_reader\List\ #
# -ND:\case_i_d913f\ap\ap_reader\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_READER\bookmark.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME bookmark(17)
\ 0000 RSEG CODE_1(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG BOOKMARK_D(0)
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FCreate
\ 0000 EXTERN FS_FOpen
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FWrite
\ 0000 EXTERN FS_GetFileLen
\ 0000 EXTERN FS_GetUnalignedLen
\ 0000 PUBLIC add_bookmark
\ 0000 PUBLIC bkmarks
\ 0000 PUBLIC buf
\ 0000 PUBLIC close_bookmark
\ 0000 PUBLIC del_bookmark_id
\ 0000 EXTERN fileName
\ 0000 PUBLIC g_bookmark_handle
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_reader_vars
\ 0000 PUBLIC get_bookmark
\ 0000 PUBLIC get_num_bookmarks
\ 0000 PUBLIC initBuf
\ 0000 PUBLIC init_bookmark
\ 0000 PUBLIC result
\ 0000 EXTERN ui_err_msg
\ 0000 PUBLIC whitespace
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?L_LSH_L03
\ 0000 EXTERN ?UL_RSH_L03
\ 0000 EXTERN ?L_ORASG_L03
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?STRCPY_L11
\ 0000 RSEG CODE_1
\ 0000 whitespace:
1 /*
2 *******************************************************************************
3 * e Document Reader
4 * (c) Copyright 2003-2004, ACTION Co,Ltd.
5 * All Right Reserved
6 *
7 * File : bookmark.c
8 * By : ruanyong
9 * Version: v1.00 first version 2004-11-16 17:28
10 ********************************************************************************
11 */
12 #pragma codeseg(CODE_1)
13 #include <stdlib.h>
14 #include <stdio.h>
15 #include <string.h>
16
17 #include "ap_reader.h"
18 #include "bookmark.h"
19 #include "filesys.h"
20 #include "ui_res.h"
21 void initBuf(void);
22 bool result;
23 UInt g_bookmark_handle;
24 bkmark_node bkmarks[MAX_BKMARK_NUM];
25 extern char fileName[50]; //存放书签头部信息的buffer
26 #pragma memory=dataseg(BOOKMARK_D)
27 UChar buf[FILESIZE];
28 #pragma memory=default
29 //#pragma codeseg(BOOKMARK_D)
30 //UChar buf[FILESIZE];
31 //#pragma memory=default
32 /*
33 * 判断字符是否是空格意义符号
34 */
35 int
36 whitespace(char ch)
37 {
38 switch (ch)
\ 0000 7B LD A,E
\ 0001 FE09 CP 9
\ 0003 3811 JR C,?0004
\ 0005 FE0B CP 11
\ 0007 3808 JR C,?0003
\ 0009 FE0D CP 13
\ 000B 2804 JR Z,?0003
\ 000D FE20 CP 32
\ 000F 2005 JR NZ,?0004
\ 0011 ?0003:
39 {
40 case ' ':
41 case '\t':
42 case '\n':
43 case '\r':
44 return 1;
\ 0011 210100 LD HL,1
45 default:
\ 0014 1803 JR ?0005
\ 0016 ?0004:
46 return 0;
\ 0016 210000 LD HL,0
47 }
\ 0019 ?0005:
\ 0019 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 001C ?0002:
48 }
\ 001C strip_spaces:
49
50
51 /*
52 * 删除一个字符串开头和串尾的空格,参数str被修改
53 * 空格符号包括' ','\n','\r','\t'。
54 */
55 static char *
56 strip_spaces(char *str)
57 {
\ 001C C5 PUSH BC
\ 001D D5 PUSH DE
58 /*
59 int x;
60
61 if (!str)
62 return NULL;
63
64 x = 0;
65 while ( whitespace(str[x]) && (str[x] != '\0') )
66 x++;
67
68 if (x != 0) // 前移x个字符
69 memmove(str, str+x, strlen(str)-x+1);
70
71 x = strlen(str)-1;
72 while (whitespace(str[x]) && (x != 0))
73 x--;
74
75 str[x+1] = '\0'; // 截断后面的空字符
76 */
77 return str;
\ 001E 6B LD L,E
\ 001F 62 LD H,D
78 }
\ 0020 F1 POP AF
\ 0021 C1 POP BC
\ 0022 C9 RET
\ 0023 trim_string:
79
80
81 /*
82 * 去掉不可打印的字符,并以空格替代,参数str被修改
83 */
84 static char *
85 trim_string(char *str)
86 {
\ 0023 C5 PUSH BC
\ 0024 D5 PUSH DE
87
88 return str;
\ 0025 6B LD L,E
\ 0026 62 LD H,D
89 }
\ 0027 F1 POP AF
\ 0028 C1 POP BC
\ 0029 C9 RET
\ 002A fileLength:
90
91 static UInt32
92 fileLength(UInt32 file)
93 {
\ 002A DDE5 PUSH IX
\ 002C DD210000 LD IX,0
\ 0030 DD39 ADD IX,SP
\ 0032 C5 PUSH BC
\ 0033 D5 PUSH DE
\ 0034 F5 PUSH AF
\ 0035 F5 PUSH AF
\ 0036 F5 PUSH AF
\ 0037 F5 PUSH AF
94 UInt32 LastPgSize = FS_GetUnalignedLen(file); //取最后一个PAGE的BYTE数 (只有一个扇区)
\ 0038 CD0000 CALL LWRD FS_GetUnalignedLen
\ 003B 7C LD A,H
\ 003C 07 RLCA
\ 003D 9F SBC A,A
\ 003E 4F LD C,A
\ 003F 41 LD B,C
\ 0040 DD75F8 LD (IX-8),L
\ 0043 DD74F9 LD (IX-7),H
\ 0046 DD71FA LD (IX-6),C
\ 0049 DD70FB LD (IX-5),B
95 UInt32 PageNum = FS_GetFileLen(file);
\ 004C DD5EFC LD E,(IX-4)
\ 004F DD56FD LD D,(IX-3)
\ 0052 CD0000 CALL LWRD FS_GetFileLen
96 return ( (PageNum-1 )* BUFSIZE + LastPgSize);
\ 0055 C5 PUSH BC
\ 0056 E5 PUSH HL
\ 0057 21FFFF LD HL,65535
\ 005A C1 POP BC
\ 005B 09 ADD HL,BC
\ 005C EB EX DE,HL
\ 005D 21FFFF LD HL,65535
\ 0060 C1 POP BC
\ 0061 ED4A ADC HL,BC
\ 0063 4D LD C,L
\ 0064 44 LD B,H
\ 0065 EB EX DE,HL
\ 0066 3E09 LD A,9
\ 0068 CD0000 CALL LWRD ?L_LSH_L03
\ 006B C5 PUSH BC
\ 006C E5 PUSH HL
\ 006D DD6EF8 LD L,(IX-8)
\ 0070 DD66F9 LD H,(IX-7)
\ 0073 C1 POP BC
\ 0074 09 ADD HL,BC
\ 0075 EB EX DE,HL
\ 0076 DD6EFA LD L,(IX-6)
\ 0079 DD66FB LD H,(IX-5)
\ 007C C1 POP BC
\ 007D ED4A ADC HL,BC
\ 007F 4D LD C,L
\ 0080 44 LD B,H
\ 0081 EB EX DE,HL
97 }
\ 0082 DDF9 LD SP,IX
\ 0084 DDE1 POP IX
\ 0086 C9 RET
\ 0087 hex2str:
98
99 static char*
100 hex2str(char* b, UInt32 hex)
101 {
\ 0087 C5 PUSH BC
\ 0088 DDE5 PUSH IX
\ 008A F5 PUSH AF
\ 008B D5 PUSH DE
\ 008C DDE1 POP IX
102 byte i = 0;
\ 008E 210000 LD HL,0
\ 0091 39 ADD HL,SP
\ 0092 3600 LD (HL),0
\ 0094 ?0007:
103
104 for ( ; i < sizeof(UInt32); i++ ) {
\ 0094 7E LD A,(HL)
\ 0095 FE04 CP 4
\ 0097 3024 JR NC,?0006
\ 0099 ?0008:
105 b[i] = (hex>>i*8) & 0xFF;
\ 0099 4F LD C,A
\ 009A 0600 LD B,0
\ 009C DDE5 PUSH IX
\ 009E E1 POP HL
\ 009F 09 ADD HL,BC
\ 00A0 E5 PUSH HL
\ 00A1 87 ADD A,A
\ 00A2 87 ADD A,A
\ 00A3 87 ADD A,A
\ 00A4 210A00 LD HL,10
\ 00A7 39 ADD HL,SP
\ 00A8 5E LD E,(HL)
\ 00A9 23 INC HL
\ 00AA 56 LD D,(HL)
\ 00AB 23 INC HL
\ 00AC 4E LD C,(HL)
\ 00AD 23 INC HL
\ 00AE 46 LD B,(HL)
\ 00AF EB EX DE,HL
\ 00B0 CD0000 CALL LWRD ?UL_RSH_L03
\ 00B3 45 LD B,L
\ 00B4 E1 POP HL
\ 00B5 70 LD (HL),B
\ 00B6 210000 LD HL,0
\ 00B9 39 ADD HL,SP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -