$D6E4/55012: Enter file in dir
Jump from $C9B3, $D9EC:
D6E4: A5 83 LDA $83 ; secondary address
D6E6: 48 PHA
D6E7: A5 82 LDA $82 ; channel number
D6E9: 48 PHA
D6EA: A5 81 LDA $81 ; sector number
D6EC: 48 PHA
D6ED: A5 80 LDA $80 ; track number
D6EF: 48 PHA ; save
D6F0: A9 11 LDA #$11
D6F2: 85 83 STA $83 ; secondary address 17
D6F4: 20 3B DE JSR $DE3B ; get track and sector number
D6F7: AD 4A 02 LDA $024A ; file type
D6FA: 48 PHA ; save
D6FB: A5 E2 LDA $E2 ; drive number
D6FD: 29 01 AND #$01
D6FF: 85 7F STA $7F ; set
D701: A6 F9 LDX $F9 ; buffer number
D703: 5D 5B 02 EOR $025B,X
D706: 4A LSR
D707: 90 0C BCC $D715 ; equal drive number?
D709: A2 01 LDX #$01
D70B: 8E 92 02 STX $0292 ; pointer in directory
D70E: 20 AC C5 JSR $C5AC ; load dir and find first entry
D711: F0 1D BEQ $D730 ; not found?
D713: D0 28 BNE $D73D ; found?
Jump from $D707:
D715: AD 91 02 LDA $0291 ; sector number in directory
D718: F0 0C BEQ $D726 ; equal zero
D71A: C5 81 CMP $81 ; equal sector number?
D71C: F0 1F BEQ $D73D ; yes
D71E: 85 81 STA $81 ; save sector number
D720: 20 60 D4 JSR $D460 ; read block
D723: 4C 3D D7 JMP $D73D
Jump from $D718:
D726: A9 01 LDA #$01
D728: 8D 92 02 STA $0292 ; pointer to one
D72B: 20 17 C6 JSR $C617 ; find next entry in directory
D72E: D0 0D BNE $D73D ; found?
Jump from $D711:
D730: 20 8D D4 JSR $D48D ; write directory block
D733: A5 81 LDA $81 ; sector number
D735: 8D 91 02 STA $0291
D738: A9 02 LDA #$02
D73A: 8D 92 02 STA $0292 ; pointer to 2
Jump from $D713, $D71C, $D723, $D72E:
D73D: AD 92 02 LDA $0292
D740: 20 C8 D4 JSR $D4C8 ; set buffer pointer
D743: 68 PLA
D744: 8D 4A 02 STA $024A ; file type
D747: C9 04 CMP #$04 ; rel-file?
D749: D0 02 BNE $D74D ; no
D74B: 09 80 ORA #$80 ; set bit 7
Jump from $D749:
D74D: 20 F1 CF JSR $CFF1 ; and write in buffer
D750: 68 PLA
D751: 8D 80 02 STA $0280 ; following track
D754: 20 F1 CF JSR $CFF1 ; in buffer
D757: 68 PLA
D758: 8D 85 02 STA $0285 ; following sector
D75B: 20 F1 CF JSR $CFF1 ; in buffer
D75E: 20 93 DF JSR $DF93 ; get buffer number
D761: A8 TAY
D762: AD 7A 02 LDA $027A ; pointer to drive number
D765: AA TAX
D766: A9 10 LDA #$10 ; 16, length of filename
D768: 20 6E C6 JSR $C66E ; write filename in buffer
D76B: A0 10 LDY #$10
D76D: A9 00 LDA #$00
Jump from $D774:
D76F: 91 94 STA ($94),Y ; fill with zeroes at position 16
D771: C8 INY
D772: C0 1B CPY #$1B ; position 27 already?
D774: 90 F9 BCC $D76F ; no
D776: AD 4A 02 LDA $024A ; file type
D779: C9 04 CMP #$04 ; rel-file?
D77B: D0 13 BNE $D790 ; no
D77D: A0 10 LDY #$10
D77F: AD 59 02 LDA $0259 ; track
D782: 91 94 STA ($94),Y
D784: C8 INY
D785: AD 5A 02 LDA $025A ; and sector
D788: 91 94 STA ($94),Y ; the side-sectors in directory entry
D78A: C8 INY
D78B: AD 58 02 LDA $0258 ; record length
D78E: 91 94 STA ($94),Y ; in directory
Jump from $D77B:
D790: 20 64 D4 JSR $D464 ; write block
D793: 68 PLA
D794: 85 82 STA $82 ; channel number
D796: AA TAX
D797: 68 PLA
D798: 85 83 STA $83 ; secondary address
D79A: AD 91 02 LDA $0291
D79D: 85 D8 STA $D8
D79F: 9D 60 02 STA $0260,X
D7A2: AD 92 02 LDA $0292
D7A5: 85 DD STA $DD
D7A7: 9D 66 02 STA $0266,X
D7AA: AD 4A 02 LDA $024A ; file type
D7AD: 85 E7 STA $E7
D7AF: A5 7F LDA $7F ; drive number
D7B1: 85 E2 STA $E2
D7B3: 60 RTS
Previous Page / Next Page