📄 bookmark.lst
字号:
174 { // 书签文件已存在,初始化书签列表
175
176 FS_FRead(buf, 1, g_bookmark_handle);
\ 01EC E5 PUSH HL
\ 01ED 0E01 LD C,1
\ 01EF 110000 LD DE,buf
\ 01F2 CD0000 CALL LWRD FS_FRead
\ 01F5 E1 POP HL
177 for (i = 0; i <FILESIZE/(NODELEN*2); i++ )
\ 01F6 110000 LD DE,0
\ 01F9 ?0026:
\ 01F9 011080 LD BC,32784
\ 01FC 6B LD L,E
\ 01FD 62 LD H,D
\ 01FE 78 LD A,B
\ 01FF AC XOR H
\ 0200 67 LD H,A
\ 0201 ED42 SBC HL,BC
\ 0203 3014 JR NC,?0025
\ 0205 ?0027:
178 {
179 split_node(&buf[i*NODELEN],i);
\ 0205 D5 PUSH DE
\ 0206 D5 PUSH DE
\ 0207 EB EX DE,HL
\ 0208 29 ADD HL,HL
\ 0209 29 ADD HL,HL
\ 020A 29 ADD HL,HL
\ 020B 29 ADD HL,HL
\ 020C 010000 LD BC,buf
\ 020F 09 ADD HL,BC
\ 0210 EB EX DE,HL
\ 0211 C1 POP BC
\ 0212 CD1C01 CALL LWRD split_node
\ 0215 D1 POP DE
\ 0216 13 INC DE
\ 0217 18E0 JR ?0026
\ 0219 ?0025:
180 }
181 return 0;
\ 0219 2E00 LD L,0
182 }
\ 021B 1802 JR ?0029
\ 021D ?0019:
183 }
184
185 return 1;
\ 021D 2E01 LD L,1
186 }
\ 021F ?0029:
\ 021F EB EX DE,HL
\ 0220 210C00 LD HL,12
\ 0223 39 ADD HL,SP
\ 0224 F9 LD SP,HL
\ 0225 EB EX DE,HL
\ 0226 DDE1 POP IX
\ 0228 D1 POP DE
\ 0229 C1 POP BC
\ 022A C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 022D close_bookmark:
187
188
189 /**
190 * Description: 关闭书签功能
191 *
192 * @return(s) : 0-success;1-failure
193 */
194 bool close_bookmark()
195 {
\ 022D C5 PUSH BC
\ 022E D5 PUSH DE
\ 022F DDE5 PUSH IX
196 int i = 0;
\ 0231 DD210000 LD IX,0
\ 0235 ?0031:
197 // UChar buf[FILESIZE];
198 while (( 0xFFFFFFFF != bkmarks[i].offset)&&(i<MAX_BKMARK_NUM) )
\ 0235 DDE5 PUSH IX
\ 0237 E1 POP HL
\ 0238 29 ADD HL,HL
\ 0239 29 ADD HL,HL
\ 023A 29 ADD HL,HL
\ 023B 29 ADD HL,HL
\ 023C 010300 LD BC,bkmarks
\ 023F 09 ADD HL,BC
\ 0240 7E LD A,(HL)
\ 0241 23 INC HL
\ 0242 A6 AND (HL)
\ 0243 23 INC HL
\ 0244 A6 AND (HL)
\ 0245 23 INC HL
\ 0246 A6 AND (HL)
\ 0247 3C INC A
\ 0248 2853 JR Z,?0030
\ 024A 011080 LD BC,32784
\ 024D DDE5 PUSH IX
\ 024F E1 POP HL
\ 0250 78 LD A,B
\ 0251 AC XOR H
\ 0252 67 LD H,A
\ 0253 ED42 SBC HL,BC
\ 0255 3046 JR NC,?0030
\ 0257 ?0034:
\ 0257 ?0033:
\ 0257 ?0032:
199 {
200 hex2str( &buf[i*NODELEN], bkmarks[i].offset );
\ 0257 DDE5 PUSH IX
\ 0259 E1 POP HL
\ 025A 29 ADD HL,HL
\ 025B 29 ADD HL,HL
\ 025C 29 ADD HL,HL
\ 025D 29 ADD HL,HL
\ 025E 010300 LD BC,bkmarks
\ 0261 09 ADD HL,BC
\ 0262 4E LD C,(HL)
\ 0263 23 INC HL
\ 0264 46 LD B,(HL)
\ 0265 23 INC HL
\ 0266 5E LD E,(HL)
\ 0267 23 INC HL
\ 0268 56 LD D,(HL)
\ 0269 D5 PUSH DE
\ 026A C5 PUSH BC
\ 026B DDE5 PUSH IX
\ 026D E1 POP HL
\ 026E 29 ADD HL,HL
\ 026F 29 ADD HL,HL
\ 0270 29 ADD HL,HL
\ 0271 29 ADD HL,HL
\ 0272 010000 LD BC,buf
\ 0275 09 ADD HL,BC
\ 0276 EB EX DE,HL
\ 0277 CD8700 CALL LWRD hex2str
\ 027A F1 POP AF
\ 027B F1 POP AF
201 memcpy( &buf[i*NODELEN+sizeof(UInt32)], bkmarks[i].title,sizeof(bkmarks[i].title));
\ 027C DDE5 PUSH IX
\ 027E E1 POP HL
\ 027F 29 ADD HL,HL
\ 0280 29 ADD HL,HL
\ 0281 29 ADD HL,HL
\ 0282 29 ADD HL,HL
\ 0283 EB EX DE,HL
\ 0284 210400 LD HL,buf+4
\ 0287 19 ADD HL,DE
\ 0288 EB EX DE,HL
\ 0289 DDE5 PUSH IX
\ 028B E1 POP HL
\ 028C 29 ADD HL,HL
\ 028D 29 ADD HL,HL
\ 028E 29 ADD HL,HL
\ 028F 29 ADD HL,HL
\ 0290 010700 LD BC,bkmarks+4
\ 0293 09 ADD HL,BC
\ 0294 010C00 LD BC,12
\ 0297 EDB0 LDIR
202 i++;
\ 0299 DD23 INC IX
\ 029B 1898 JR ?0031
\ 029D ?0030:
203 }
204 if( 0xFFFFFFFF == bkmarks[i].offset) //删除一个书签后要将offset清为0xffffffff
\ 029D DDE5 PUSH IX
\ 029F E1 POP HL
\ 02A0 29 ADD HL,HL
\ 02A1 29 ADD HL,HL
\ 02A2 29 ADD HL,HL
\ 02A3 29 ADD HL,HL
\ 02A4 010300 LD BC,bkmarks
\ 02A7 09 ADD HL,BC
\ 02A8 7E LD A,(HL)
\ 02A9 23 INC HL
\ 02AA A6 AND (HL)
\ 02AB 23 INC HL
\ 02AC A6 AND (HL)
\ 02AD 23 INC HL
\ 02AE A6 AND (HL)
\ 02AF 3C INC A
\ 02B0 2016 JR NZ,?0036
\ 02B2 ?0035:
205 hex2str(&buf[i*NODELEN],0xffffffff);
\ 02B2 21FFFF LD HL,65535
\ 02B5 E5 PUSH HL
\ 02B6 E5 PUSH HL
\ 02B7 DDE5 PUSH IX
\ 02B9 E1 POP HL
\ 02BA 29 ADD HL,HL
\ 02BB 29 ADD HL,HL
\ 02BC 29 ADD HL,HL
\ 02BD 29 ADD HL,HL
\ 02BE 010000 LD BC,buf
\ 02C1 09 ADD HL,BC
\ 02C2 EB EX DE,HL
\ 02C3 CD8700 CALL LWRD hex2str
\ 02C6 F1 POP AF
\ 02C7 F1 POP AF
\ 02C8 ?0036:
206 result=FS_FWrite(buf, 1, g_bookmark_handle);
\ 02C8 2A0100 LD HL,(g_bookmark_handle)
\ 02CB E5 PUSH HL
\ 02CC 0E01 LD C,1
\ 02CE 110000 LD DE,buf
\ 02D1 CD0000 CALL LWRD FS_FWrite
\ 02D4 E1 POP HL
\ 02D5 320000 LD (result),A
207 FS_FClose(g_bookmark_handle);
\ 02D8 ED5B0100 LD DE,(g_bookmark_handle)
\ 02DC CD0000 CALL LWRD FS_FClose
208 return 0; // always good;
\ 02DF 2E00 LD L,0
209 }
\ 02E1 DDE1 POP IX
\ 02E3 D1 POP DE
\ 02E4 C1 POP BC
\ 02E5 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 02E8 add_bookmark:
210
211
212 /**
213 * Description: add_bookmark-向书签列表加入一新的书签;若书签标题为空,
214 * 则自动使用偏移位置作为标题
215 *
216 * @param(s) : vf - 结构的指针
217 * @param(s) : title - 书签标题
218 * @param(s) : offset- 书签所在的绝对偏移位置
219 * @return(s) : 0-success; 1-failure
220 */
221 bool add_bookmark(STRUCT_VIEW_FILE *vf, UChar *title, UInt32 offset)
222 {
\ 02E8 FDE5 PUSH IY
\ 02EA DDE5 PUSH IX
\ 02EC DD210000 LD IX,0
\ 02F0 DD39 ADD IX,SP
\ 02F2 C5 PUSH BC
\ 02F3 D5 PUSH DE
\ 02F4 21EEFF LD HL,65518
\ 02F7 39 ADD HL,SP
\ 02F8 F9 LD SP,HL
223 int i;
224 UChar *tt;
225 UInt32 CurFileLen,LeftFileLen;
226 uint CurrentOffset,ReadLengthOneTime;
227
228 CurFileLen=vf->CurrentSeek;
\ 02F9 210A00 LD HL,10
\ 02FC 19 ADD HL,DE
\ 02FD 4E LD C,(HL)
\ 02FE 23 INC HL
\ 02FF 46 LD B,(HL)
\ 0300 23 INC HL
\ 0301 5E LD E,(HL)
\ 0302 23 INC HL
\ 0303 56 LD D,(HL)
\ 0304 DD71EE LD (IX-18),C
\ 0307 DD70EF LD (IX-17),B
\ 030A DD73F0 LD (IX-16),E
\ 030D DD72F1 LD (IX-15),D
229
230 tt=fileName;
\ 0310 DD36EC00 LD (IX-20),LOW(fileName)
\ 0314 DD36ED00 LD (IX-19),HIGH(fileName)
\ 0318 ?0038:
231 /////////////////////过滤回车换行 英文空格 中文空格
232 while((tt[0]==0x20)||(tt[0]==0x0a)||(tt[0]==0x0d)||(tt[0]==0xa1))
\ 0318 DD6EEC LD L,(IX-20)
\ 031B DD66ED LD H,(IX-19)
\ 031E 7E LD A,(HL)
\ 031F FE20 CP 32
\ 0321 280F JR Z,?0040
\ 0323 7E LD A,(HL)
\ 0324 FE0A CP 10
\ 0326 280A JR Z,?0040
\ 0328 7E LD A,(HL)
\ 0329 FE0D CP 13
\ 032B 2805 JR Z,?0040
\ 032D 7E LD A,(HL)
\ 032E FEA1 CP 161
\ 0330 2024 JR NZ,?0037
\ 0332 ?0040:
\ 0332 ?0041:
\ 0332 ?0039:
233 {
234 if(tt[0]==0xa1)
\ 0332 7E LD A,(HL)
\ 0333 FEA1 CP 161
\ 0335 2015 JR NZ,?0043
\ 0337 ?0042:
235 {
236 if(tt[1]==0xa1)
\ 0337 23 INC HL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -