$E7A3/59299: Perform [&] - USR file execute command E7A3: A9 8D LDA #$8D E7A5: 20 68 C2 JSR $C268 ; check command line to end Jump from $E7A0: E7A8: 20 58 F2 JSR $F258 ; (RTS) E7AB: AD 78 02 LDA $0278 ; number of file names E7AE: 48 PHA ; save E7AF: A9 01 LDA #$01 E7B1: 8D 78 02 STA $0278 ; file name E7B4: A9 FF LDA #$FF E7B6: 85 86 STA $86 E7B8: 20 4F C4 JSR $C44F ; find file E7BB: AD 80 02 LDA $0280 E7BE: D0 05 BNE $E7C5 ; found? E7C0: A9 39 LDA #$39 E7C2: 20 C8 C1 JSR $C1C8 ; 39, 'file not found' Jump from $E7BE: E7C5: 68 PLA E7C6: 8D 78 02 STA $0278 ; get number of file names back E7C9: AD 80 02 LDA $0280 E7CC: 85 80 STA $80 ; track E7CE: AD 85 02 LDA $0285 E7D1: 85 81 STA $81 ; and sector E7D3: A9 03 LDA #$03 ; file type 'USR' E7D5: 20 77 D4 JSR $D477 ; buffer allocated, read 1st block Jump from $E82E: E7D8: A9 00 LDA #$00 E7DA: 85 87 STA $87 ; erase checksum E7DC: 20 39 E8 JSR $E839 ; get byte from file E7DF: 85 88 STA $88 ; save as start address lo E7E1: 20 4B E8 JSR $E84B ; from checksum E7E4: 20 39 E8 JSR $E839 ; get byte from file E7E7: 85 89 STA $89 ; as start address hi E7E9: 20 4B E8 JSR $E84B ; form checksum E7EC: A5 86 LDA $86 E7EE: F0 0A BEQ $E7FA E7F0: A5 88 LDA $88 E7F2: 48 PHA ; save program start address E7F3: A5 89 LDA $89 E7F5: 48 PHA E7F6: A9 00 LDA #$00 E7F8: 85 86 STA $86 Jump from $E7EE: E7FA: 20 39 E8 JSR $E839 ; get byte from file E7FD: 85 8A STA $8A ; save as counter E7FF: 20 4B E8 JSR $E84B ; form checksum Jump from $E819: E802: 20 39 E8 JSR $E839 ; get byte from file E805: A0 00 LDY #$00 E807: 91 88 STA ($88),Y ; save as program bytes E809: 20 4B E8 JSR $E84B ; form checksum E80C: A5 88 LDA $88 E80E: 18 CLC E80F: 69 01 ADC #$01 E811: 85 88 STA $88 ; increment $88/$89 E813: 90 02 BCC $E817 E815: E6 89 INC $89 Jump from $E813: E817: C6 8A DEC $8A ; decrement pointer E819: D0 E7 BNE $E802 E81B: 20 35 CA JSR $CA35 ; get next byte E81E: A5 85 LDA $85 ; data byte E820: C5 87 CMP $87 ; equal to checksum? E822: F0 08 BEQ $E82C ; yes E824: 20 3E DE JSR $DE3E ; transmit parameter to disk controller E827: A9 50 LDA #$50 E829: 20 45 E6 JSR $E645 ; 50, 'record not present' Jump from $E822: E82C: A5 F8 LDA $F8 ; end? E82E: D0 A8 BNE $E7D8 ; no, next data block E830: 68 PLA E831: 85 89 STA $89 E833: 68 PLA ; get program start address back E834: 85 88 STA $88 E836: 6C 88 00 JMP ($0088) ; and execute program Jump from $E7DC, $E7E4, $E7FA, $E802: E839: 20 35 CA JSR $CA35 ; get byte from file E83C: A5 F8 LDA $F8 ; end? E83E: D0 08 BNE $E848 ; no E840: 20 3E DE JSR $DE3E ; transmit parameter to disk controller E843: A9 51 LDA #$51 E845: 20 45 E6 JSR $E645 ; 51, 'overflow in record' Jump from $E83E: E848: A5 85 LDA $85 ; data byte E84A: 60 RTS Previous Page / Next Page |