$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