📄 basal_reader_de.s01
字号:
?0103:
; 259. ReadLengthOneTime = ReadFileLength;
LD L,(IX-22)
LD H,(IX-21)
PUSH HL
POP IY
?0104:
; 260. ReadFileLength -= ReadLengthOneTime;
LD L,C
LD H,B
ADD HL,SP
PUSH IY
POP DE
CALL LWRD ?L_SUBASG_L03
; 261.
; 262. str = read_buff(ViewFileStructPoint, ReadFileLength, ReadLengthOneTime );
PUSH IY
PUSH BC
PUSH DE
CALL LWRD ?0191
POP AF
POP AF
POP AF
LD (IX-14),L
LD (IX-13),H
; 263. p = str + ReadLengthOneTime - 1;
PUSH HL
LD HL,65535
PUSH IY
POP BC
ADD HL,BC
LD C,L
LD B,H
POP HL
ADD HL,BC
LD (IX-12),L
LD (IX-11),H
?0101:
?0106:
; 264. }
; 265.
; 266. while( ReadLengthOneTime )
PUSH IY
POP HL
LD A,L
OR H
JR Z,?0105
?0107:
; 267. {
; 268. CLEAR_WATCHDOG(); //清WATCH DOG
IN A,(78)
SET 3,A
OUT (78),A
; 269. // 过滤 0x0d & 0x0a
; 270. chr = *p --;
LD L,(IX-12)
LD H,(IX-11)
DEC HL
LD (IX-12),L
LD (IX-11),H
INC HL
LD A,(HL)
; 271. ReadLengthOneTime --;
; 272. if( chr!=0x0d && chr!=0x0a )
CP 13
DEC IY
JR Z,?0101
CP 10
JR Z,?0101
?0111:
?0110:
?0108:
; 273. {
; 274. ByteCount += 1;
INC (IX-16)
JR NZ,?0182
INC (IX-15)
?0182:
; 275. ReturnFlag = FALSE; // 0x0D, 0x0A 标志
LD (IX-6),0
; 276. break;
?0109:
?0105:
?0113:
; 277. }
; 278. }
; 279.
; 280. while( ReadLengthOneTime )
PUSH IY
POP HL
LD A,L
OR H
JR Z,?0112
?0114:
; 281. {
; 282. CLEAR_WATCHDOG(); //清WATCH DOG
IN A,(78)
SET 3,A
OUT (78),A
; 283. chr = *p --;
LD L,(IX-12)
LD H,(IX-11)
DEC HL
LD (IX-12),L
LD (IX-11),H
INC HL
LD A,(HL)
; 284. ReadLengthOneTime --;
; 285. if( chr==0x0d || chr==0x0a )
CP 13
DEC IY
JR Z,?0117
CP 10
JR NZ,?0116
?0117:
?0118:
?0115:
; 286. {
; 287. ReturnFlag = TRUE; // 0x0D, 0x0A 标志
LD (IX-6),1
; 288. break;
JR ?0112
?0116:
; 289. }
; 290. ByteCount ++;
INC (IX-16)
JR NZ,?0105
INC (IX-15)
JR ?0105
?0112:
; 291. }
; 292. if((ByteCount >= SCR_COL*SCR_ROW) && ReturnFlag )
LD BC,140
LD L,(IX-16)
LD H,(IX-15)
AND A
SBC HL,BC
JP C,?0098
XOR A
OR (IX-6)
JP Z,?0098
?0122:
?0121:
?0119:
; 293. {
; 294. ReadFileLength += ReadLengthOneTime + 1;
LD L,B
LD H,B
ADD HL,SP
PUSH IY
POP DE
INC DE
LD C,B
CALL LWRD ?L_ADDASG_L03
; 295. break;
?0120:
?0097:
; 296. }
; 297. }
; 298.
; 299. // 计算向前翻页的字符数
; 300. memset( lBakSeek, 0, sizeof(lBakSeek) );
LD BC,32
LD DE,lBakSeek
LD L,B
CALL LWRD ?MEMSET_L11
; 301. lBakSeek[ 0 ] = ReadFileLength;
LD C,(IX-20)
LD B,(IX-19)
LD L,(IX-22)
LD H,(IX-21)
LD (lBakSeek),HL
LD (lBakSeek+2),BC
; 302. if(ReadFileLength==0)
LD A,L
OR H
OR C
OR B
JR NZ,?0124
?0123:
; 303. {
; 304. FileHeadFlag=1;
LD (IX-5),1
?0124:
; 305. }
; 306. RowHeadPosition = 0;
; 307. ReReadFlag = TRUE; // 读数据标志
; 308. ByteCount = ViewFileStructPoint->CurrentSeek - ReadFileLength;
PUSH HL
LD HL,10
LD E,(IX-4)
LD D,(IX-3)
ADD HL,DE
LD C,(HL)
INC HL
LD H,(HL)
LD L,C
POP BC
AND A
SBC HL,BC
LD (IX-16),L
LD (IX-15),H
; 309. for( row=0; ; )
XOR A
LD (IX-18),A
LD (IX-17),A
LD (IX-7),1
LD (IX-8),A
?0126:
; 310. {
; 311. if( ReReadFlag )
XOR A
OR (IX-7)
JR Z,?0135
?0127:
; 312. {
; 313. ReReadFlag = FALSE; // 读数据标志
; 314. ReadFileLength += RowHeadPosition; // 已读长度 + 显示长度
LD HL,0
ADD HL,SP
LD E,(IX-18)
LD D,(IX-17)
LD BC,0
CALL LWRD ?L_ADDASG_L03
; 315. ByteCount -= RowHeadPosition; // 剩余长度 - 显示长度
LD HL,6
ADD HL,SP
LD A,(HL)
SUB (IX-18)
LD (HL),A
INC HL
LD A,(HL)
SBC A,(IX-17)
LD (HL),A
; 316. RowHeadPosition = 0;
; 317.
; 318. if( ByteCount == 0 )
LD (IX-7),0
XOR A
LD (IX-18),A
LD (IX-17),A
LD A,(IX-16)
OR (IX-15)
JP Z,?0125
?0129:
; 319. break; // 读文件结束
?0130:
; 320. if( ByteCount > BUFF_ONE_ROW*2 )
LD C,(IX-16)
LD B,(IX-15)
LD HL,40
SBC HL,BC
JR NC,?0132
?0131:
; 321. ReadLengthOneTime = BUFF_ONE_ROW*2;
LD IY,40
; 322. else
JR ?0133
?0132:
; 323. ReadLengthOneTime = ByteCount;
PUSH BC
POP IY
?0133:
; 324.
; 325. str = read_buff(ViewFileStructPoint, ReadFileLength, ReadLengthOneTime );
PUSH IY
LD L,(IX-20)
LD H,(IX-19)
PUSH HL
LD L,(IX-22)
LD H,(IX-21)
PUSH HL
CALL LWRD ?0191
POP AF
POP AF
POP AF
LD (IX-14),L
LD (IX-13),H
; 326. if( str == NULL )
LD A,L
OR H
JR NZ,?0135
?0134:
; 327. return 0;
?0186:
LD L,0
; 328. }
JP LWRD ?0172
?0135:
?0128:
?0137:
; 329.
; 330. for( ; RowHeadPosition<ReadLengthOneTime; RowHeadPosition++ )
PUSH IY
POP BC
LD L,(IX-18)
LD H,(IX-17)
AND A
SBC HL,BC
JR NC,?0136
?0138:
; 331. {
; 332. CLEAR_WATCHDOG(); //清WATCH DOG
IN A,(78)
SET 3,A
OUT (78),A
; 333. // 过滤 0x0d & 0x0a
; 334. chr = str[ RowHeadPosition ];
LD L,(IX-18)
LD H,(IX-17)
LD C,(IX-14)
LD B,(IX-13)
ADD HL,BC
LD A,(HL)
; 335. if( chr!=0x0d && chr!=0x0a )
CP 13
JR Z,?0141
CP 10
JR NZ,?0136
?0143:
?0142:
?0140:
; 336. break;
?0141:
INC (IX-18)
JR NZ,?0135
INC (IX-17)
JR ?0135
?0136:
; 337. }
; 338.
; 339. if( (RowHeadPosition==ReadLengthOneTime) || ((RowHeadPosition+SCR_COL>=ReadLengthOneTime)&&(ReadLengthOneTime!=ByteCount)) )
PUSH IY
POP HL
LD C,(IX-18)
LD B,(IX-17)
AND A
SBC HL,BC
JR Z,?0149
LD HL,20
ADD HL,BC
PUSH IY
POP BC
AND A
SBC HL,BC
JR C,?0145
LD L,(IX-16)
LD H,(IX-15)
SBC HL,BC
JR Z,?0145
?0149:
?0148:
?0146:
?0147:
?0144:
; 340. {
; 341. // 重新读入数据
; 342. ReReadFlag = TRUE; // 读数据标志
LD (IX-7),1
; 343. }
; 344. else
JP LWRD ?0126
?0145:
; 345. {
; 346. // 显示一行
; 347. for( col=0; (col<SCR_COL)&&(RowHeadPosition+col<ReadLengthOneTime); )
LD (IX-9),0
?0152:
LD A,(IX-9)
CP 20
JR NC,?0151
LD C,A
LD B,0
LD L,(IX-18)
LD H,(IX-17)
ADD HL,BC
PUSH IY
POP BC
AND A
SBC HL,BC
JR NC,?0151
?0155:
?0154:
?0153:
; 348. {
; 349. chr = str[ RowHeadPosition+col ];
LD C,A
LD B,0
LD L,(IX-18)
LD H,(IX-17)
ADD HL,BC
LD C,(IX-14)
LD B,(IX-13)
ADD HL,BC
LD A,(HL)
; 350. if( chr==0x0d || chr==0x0a )
CP 13
JR Z,?0151
CP 10
JR Z,?0151
?0158:
?0159:
?0156:
; 351. break;
?0157:
; 352.
; 353. if( chr<0x80 )
CP 128
JR NC,?0161
?0160:
; 354. col += 1;
INC (IX-9)
JR ?0152
?0161:
; 355. else if( col<SCR_COL-1 )
LD A,(IX-9)
CP 19
JR NC,?0151
?0163:
; 356. col += 2;
ADD A,2
LD (IX-9),A
; 357. else
JR ?0152
?0164:
; 358. break;
?0165:
?0162:
?0151:
; 359. }
; 360. RowHeadPosition += col;
LD C,(IX-9)
LD B,0
LD HL,4
ADD HL,SP
LD A,(HL)
ADD A,C
LD (HL),A
INC HL
LD A,(HL)
ADC A,B
LD (HL),A
; 361. lBakSeek[ row%(SCR_ROW+1) ] = ReadFileLength + RowHeadPosition;
LD A,(IX-8)
AND 7
LD L,A
LD H,B
ADD HL,HL
ADD HL,HL
LD BC,lBakSeek
ADD HL,BC
PUSH HL
LD E,(IX-18)
LD D,(IX-17)
LD BC,0
PUSH BC
PUSH DE
LD L,(IX-22)
LD H,(IX-21)
POP BC
ADD HL,BC
EX DE,HL
LD L,(IX-20)
LD H,(IX-19)
POP BC
ADC HL,BC
LD C,L
LD B,H
POP HL
LD (HL),E
INC HL
LD (HL),D
INC HL
LD (HL),C
INC HL
LD (HL),B
; 362. row ++;
INC (IX-8)
?0150:
JP LWRD ?0126
?0125:
; 363. }
; 364. }
; 365. ////////////////////////////////////////////////// zxs modified for prev bug
; 366. if(FileHeadFlag)
OR (IX-5)
JR Z,?0167
?0166:
; 367. {
; 368. ViewFileStructPoint->CurrentSeek=0;
LD HL,10
LD C,(IX-4)
LD B,(IX-3)
ADD HL,BC
XOR A
LD (HL),A
INC HL
LD (HL),A
INC HL
LD (HL),A
INC HL
LD (HL),A
; 369. }
; 370. else
JR ?0171
?0167:
; 371. {
; 372. if(row>=(SCR_ROW+1))
LD A,(IX-8)
CP 8
JR C,?0170
?0169:
; 373. ViewFileStructPoint->CurrentSeek = lBakSeek[ row % (SCR_ROW+1) ];
AND 7
LD L,A
LD H,0
ADD HL,HL
ADD HL,HL
LD BC,lBakSeek
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
EX DE,HL
PUSH HL
LD HL,10
LD E,(IX-4)
LD D,(IX-3)
ADD HL,DE
POP DE
JR ?0185
; 374. else
?0170:
; 375. ViewFileStructPoint->CurrentSeek = lBakSeek[0];
LD HL,10
LD C,(IX-4)
LD B,(IX-3)
ADD HL,BC
LD BC,(lBakSeek+2)
LD DE,(lBakSeek)
?0185:
LD (HL),E
INC HL
LD (HL),D
INC HL
LD (HL),C
INC HL
LD (HL),B
?0171:
?0168:
; 376. }
; 377. ////////////////////////////////////////////////
; 378. return row;
LD L,(IX-8)
; 379. }
?0172:
JP LWRD ?0015
RSEG UDATA0
lBakSeek:
DEFS 32
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -