bird@ihlpf.ATT.COM (Walters) (05/19/88)
I disassembled some code to see how it worked. I have everything pretty well understood except for the following: The following code fragment is testing to see if there are any more sub files in a BINARY II file. If byte 127 of the header is zero there are no more. Follow along to the point where my confusion sets in (or at least where I think it sets in). A164: AD 00 AA 434 LDA RD_BUFF2+127 A167: F0 52 435 BEQ NOMOR ;No files to follow, so done A169: 20 00 BF 436 JSR MLI ;Put byte position of A16C: CF 437 DFB GET_MARK ; current mark into A16D: EA A7 438 DA GMRK_PRM ; GMRK_POS A16F: 90 03 439 BCC FNDNXT A171: 4C 09 A0 440 JMP MLI_ERR This routine is computing the next header position in the file by adding the length of this sub file to its length. A174: AD EC A7 442 FNDNXT LDA GMRK_POS ;Low of get mark A177: 18 443 CLC A178: 6D 95 A9 444 ADC RD_BUFF2+20 ;Low of EOF A17B: 8D F1 A7 445 STA SMRK_POS A17E: AD ED A7 446 LDA GMRK_POS+1 ;Middle of get mark A181: 6D 96 A9 447 ADC RD_BUFF2+21 ;Middle of EOF A184: 8D F2 A7 448 STA SMRK_POS+1 A187: AD EE A7 449 LDA GMRK_POS+2 ;High of get mark A18A: 6D 97 A9 450 ADC RD_BUFF2+22 ;High of EOF A18D: 8D F3 A7 451 STA SMRK_POS+2 HERE IS THE PART I DO NOT UNDERSTAND - HELP PLEASE I haven't got a clue as to what this code is doing. It has to be doing something about an error the above put in to the low byte. The rest is simply moving carrys forward to the next byte. However, what is so magic about $7F and the low byte being zero that makes it ok?? The EOR is right up there in mystery land also. A190: AD F1 A7 458 LDA SMRK_POS A193: 29 7F 459 AND #$7F A195: F0 16 460 BEQ MRKOK A197: 49 7F 461 EOR #$7F A199: 18 462 CLC A19A: 6D F1 A7 463 ADC SMRK_POS A19D: 8D F1 A7 464 STA SMRK_POS A1A0: EE F1 A7 465 INC SMRK_POS A1A3: D0 08 466 BNE MRKOK 467 A1A5: EE F2 A7 468 INC SMRK_POS+1 ;Move carry to here A1A8: D0 03 469 BNE MRKOK 470 A1AA: EE F3 A7 471 INC SMRK_POS+2 ;And to here if needed 472 A1AD: 20 00 BF 473 MRKOK JSR MLI ;Set mark to next header A1B0: CE 474 DFB SET_MARK A1B1: EF A7 475 DA SMRK_PRM A1B3: 90 03 476 BCC GOJMP ;Do a long jump A1B5: 4C 09 A0 477 JMP MLI_ERR 478 A1B8: 4C 60 A0 479 GOJMP JMP NXTHDR Joe Walters (312) 415-5356 ihnp4!ihlpf!bird -- Joe Walters ihnp4!ihlpf!bird IHP 1F-240 (312) 416-5356