$E207/57863: Perform [P] - Position command
E207: 20 B3 C2 JSR $C2B3 ; verify lines
E20A: AD 01 02 LDA $0201 ; secondary address
E20D: 85 83 STA $83
E20F: 20 EB D0 JSR $D0EB ; find channel number
E212: 90 05 BCC $E219 ; found?
E214: A9 70 LDA #$70
E216: 20 C8 C1 JSR $C1C8 ; 70, 'no block'
Jump from $E212:
E219: A9 A0 LDA #$A0
E21B: 20 9D DD JSR $DD9D ; erase bits 6 & 7
E21E: 20 25 D1 JSR $D125 ; verify if 'REL'-file
E221: F0 05 BEQ $E228 ; yes
E223: A9 64 LDA #$64
E225: 20 C8 C1 JSR $C1C8 ; 64, 'file type mismatch'
Jump from $E221:
E228: B5 EC LDA $EC,X
E22A: 29 01 AND #$01
E22C: 85 7F STA $7F ; drive number
E22E: AD 02 02 LDA $0202 ; record number lo
E231: 95 B5 STA $B5,X
E233: AD 03 02 LDA $0203 ; record number hi
E236: 95 BB STA $BB,X
E238: A6 82 LDX $82 ; channel number
E23A: A9 89 LDA #$89
E23C: 95 F2 STA $F2,X ; READ and WRITE flag
E23E: AD 04 02 LDA $0204 ; byte-pointer
E241: F0 10 BEQ $E253 ; zero?
E243: 38 SEC
E244: E9 01 SBC #$01
E246: F0 0B BEQ $E253
E248: D5 C7 CMP $C7,X ; compare with record length
E24A: 90 07 BCC $E253
E24C: A9 51 LDA #$51
E24E: 8D 6C 02 STA $026C ; 51, 'overflow in record'
E251: A9 00 LDA #$00
Jump from $E241, $E246, $E24A:
E253: 85 D4 STA $D4
E255: 20 0E CE JSR $CE0E ; calculate pointer in rel-file
E258: 20 F8 DE JSR $DEF8 ; and read appropriate side-sector
E25B: 50 08 BVC $E265 ; does block exist?
E25D: A9 80 LDA #$80
E25F: 20 97 DD JSR $DD97 ; set bit 7
E262: 4C 5E E1 JMP $E15E ; and 50, 'record not present'
Jump from $E25B:
E265: 20 75 E2 JSR $E275
E268: A9 80 LDA #$80
E26A: 20 A6 DD JSR $DDA6 ; test bit 7
E26D: F0 03 BEQ $E272 ; not set
E26F: 4C 5E E1 JMP $E15E ; 50, 'record not present'
Jump from $E26D:
E272: 4C 94 C1 JMP $C194 ; done
Jump from $E265, $E441:
E275: 20 9C E2 JSR $E29C
E278: A5 D7 LDA $D7 ; pointer in rel-file
E27A: 20 C8 D4 JSR $D4C8 ; set buffer pointer
E27D: A6 82 LDX $82 ; channel number
E27F: B5 C7 LDA $C7,X ; record length
E281: 38 SEC
E282: E5 D4 SBC $D4 ; minus position
E284: B0 03 BCS $E289 ; positive?
E286: 4C 02 E2 JMP $E202 ; 67, 'illegal track or sector'
Jump from $E284:
E289: 18 CLC
E28A: 65 D7 ADC $D7 ; add pointer in data block
E28C: 90 03 BCC $E291 ; no overflow
E28E: 69 01 ADC #$01 ; plus 2
E290: 38 SEC
Jump from $E28C:
E291: 20 09 E0 JSR $E009 ; set pointer
E294: 4C 38 E1 JMP $E138 ; get byte from buffer
E297: A9 51 LDA #$51
E299: 20 C8 C1 JSR $C1C8 ; 51, 'overflow in record'
Jump from $E275, $CA6C, $E322:
E29C: A5 94 LDA $94 ; buffer pointer lo
E29E: 85 89 STA $89
E2A0: A5 95 LDA $95 ; buffer pointer hi
E2A2: 85 8A STA $8A
E2A4: 20 D0 E2 JSR $E2D0 ; compare track and sector
E2A7: D0 01 BNE $E2AA ; not equal?
E2A9: 60 RTS
Jump from $E2A7:
E2AA: 20 F1 DD JSR $DDF1
E2AD: 20 0C DE JSR $DE0C
E2B0: A5 80 LDA $80 ; track
E2B2: F0 0E BEQ $E2C2 ; no block following?
E2B4: 20 D3 E2 JSR $E2D3 ; compare track and sector number
E2B7: D0 06 BNE $E2BF ; not equal?
E2B9: 20 1E CF JSR $CF1E ; change buffer
E2BC: 4C DA D2 JMP $D2DA
Jump from $E2B7:
E2BF: 20 DA D2 JSR $D2DA
Jump from $E2B2:
E2C2: A0 00 LDY #$00
E2C4: B1 89 LDA ($89),Y ; track
E2C6: 85 80 STA $80
E2C8: C8 INY
E2C9: B1 89 LDA ($89),Y ; and sector of the next block
E2CB: 85 81 STA $81
E2CD: 4C AF D0 JMP $D0AF ; read block
Jump from $E2A4:
E2D0: 20 3E DE JSR $DE3E
Jump from $E2B4:
E2D3: A0 00 LDY #$00
E2D5: B1 89 LDA ($89),Y ; track number
E2D7: C5 80 CMP $80 ; compare
E2D9: F0 01 BEQ $E2DC
E2DB: 60 RTS
Jump from $E2D9:
E2DC: C8 INY
E2DD: B1 89 LDA ($89),Y ; sector number
E2DF: C5 81 CMP $81 ; compare
E2E1: 60 RTS
Previous Page / Next Page