$DB02/56066: Close file
Jump from $C9F7, $DAD8, $DAF0:
DB02: A6 83 LDX $83 ; secondary address
DB04: BD 2B 02 LDA $022B,X ; get channel number
DB07: C9 FF CMP #$FF ; no channel associated?
DB09: D0 01 BNE $DB0C
DB0B: 60 RTS ; no, then none
Jump from $DB09:
DB0C: 29 0F AND #$0F ; isolate channel number
DB0E: 85 82 STA $82
DB10: 20 25 D1 JSR $D125 ; check data type
DB13: C9 07 CMP #$07 ; direct access?
DB15: F0 0F BEQ $DB26 ; yes
DB17: C9 04 CMP #$04 ; rel-file?
DB19: F0 11 BEQ $DB2C ; yes
DB1B: 20 07 D1 JSR $D107 ; channel for writing open
DB1E: B0 09 BCS $DB29 ; no file for writing?
DB20: 20 62 DB JSR $DB62 ; write last block
DB23: 20 A5 DB JSR $DBA5 ; write entry in directory and block
Jump from $DB15:
DB26: 20 F4 EE JSR $EEF4 ; write BAM
Jump from $DB1E:
DB29: 4C 27 D2 JMP $D227 ; close channel
Jump from $DB19:
DB2C: 20 F1 DD JSR $DDF1 ; get buffer number, write block
DB2F: 20 1E CF JSR $CF1E ; change buffer
DB32: 20 CB E1 JSR $E1CB ; get last side-sector
DB35: A6 D5 LDX $D5 ; side-sector number
DB37: 86 73 STX $73
DB39: E6 73 INC $73
DB3B: A9 00 LDA #$00
DB3D: 85 70 STA $70
DB3F: 85 71 STA $71
DB41: A5 D6 LDA $D6
DB43: 38 SEC
DB44: E9 0E SBC #$0E ; minus 14 for pointer
DB46: 85 72 STA $72
DB48: 20 51 DF JSR $DF51 ; calculate block number of file
DB4B: A6 82 LDX $82 ; channel number
DB4D: A5 70 LDA $70
DB4F: 95 B5 STA $B5,X ; record number lo
DB51: A5 71 LDA $71
DB53: 95 BB STA $BB,X ; record number hi
DB55: A9 40 LDA #$40
DB57: 20 A6 DD JSR $DDA6 ; bit 6 set?
DB5A: F0 03 BEQ $DB5F ; no
DB5C: 20 A5 DB JSR $DBA5 ; enter in directory
Jump from $DB5A:
DB5F: 4C 27 D2 JMP $D227 ; close channel
Previous Page / Next Page