; CLOSE THE FILE ASSOCIATED WITH SA
;
CLOSE LDA SA
 BNE CLS10 ; DIRECTORY CLOSE
 LDA #0
 STA DIRLST ;CLEAR DIR LIST
 JSR FRECHN
CLS05
 JMP FREICH
CLS10
 CMP #$F
 BEQ CLSALL ; CLOSE CMD CHANL
 JSR CLSCHN ;CLOSE CHANNEL
 LDA SA
 CMP #2
 BCC CLS05
;
 JMP ENDCMD
;
CLSALL
 LDA #14
 STA SA
CLS20
 JSR CLSCHN
 DEC SA
 BPL CLS20
 JMP ENDCMD
;
CLSCHN
 LDX SA
 LDA LINTAB,X
 CMP #$FF
 BNE CLSC28
 RTS
CLSC28
 AND #$F
 STA LINDX
;
 JSR TYPFIL
 CMP #RELTYP
 BEQ CLSREL
;
 JSR FNDWCH ;LOOK FOR WRITE CHANNEL
 BCS CLSC31
;
 JSR CLSWRT ;CLOSE SEQ WRITE
CLSC30
 JSR CLSDIR ;CLOSE DIRECTORY
 JSR MAPOUT ;WRITE BAM
CLSC31
 JMP FRECHN
;
CLSREL
 JSR SCRUB
 JSR DBLBUF
 LDA #FDIRTY ;TEST IF FILE WRITTEN TO
 JSR TSTFLG ;*
 BEQ CLSC31 ;BR IF NOT
 JSR SSEND
 LDX SSNUM
 STX T4
 LDA SSIND
 SEC
 SBC #SSIOFF-2
 STA T3
 LDA GRPNUM ;GROUP NUMBER
 STA R3 ;*
 JSR SSCALC
 LDX #0
 LDA #2 ;PLUS SSS & 1 SIDE SECTOR
 JSR ADDLIT ;*
 LDX LINDX ;GET FCB #
 LDA RESULT ;TOTAL # BLOCKS
 STA NBKL,X ;LOW COUNT
 LDA RESULT+1 ;HIGH COUNT
 STA NBKH,X ;*
 JMP CLSC30 ;GO CLOSE DIR & WRITE BAM
;
; CLOSE A WRITE CHANL
;
CLSWRT ;CLOSE SEQ WRITE FILE
 LDX LINDX
 LDA NBKL,X
 ORA NBKH,X
 BNE CLSW10 ;AT LEAST 1 BLOCK WRITTEN
;
 JSR GETPNT
 CMP #2
 BNE CLSW10 ;AT LEAST 1 BYTE WRITTEN
;
 LDA #CR
 JSR PUTBYT
CLSW10
 JSR GETPNT
 CMP #2
 BNE CLSW20 ;NOT MT BUFFER
;
 JSR DBLBUF ;SWITCH BUFS
;
 LDX LINDX
 LDA NBKL,X
 BNE CLSW15
 DEC NBKH,X
CLSW15
 DEC NBKL,X
;
 JSR GETLNK ;RELEASE EXTRA SECTOR
 JSR FRETS ;*
 LDA #0
CLSW20
 SEC
 SBC #1 ;BACK UP 1
 PHA ;SAVE IT
 LDA #0
 JSR SETPNT
 LDA #255 ;END OF CHAIN <HD>
 JSR PUTBYT ;SLINK=FF <HD>
 PLA ;LSTCHR COUNT
 JSR PUTBYT
;
 JSR WRTBUF ;WRITE OUT LAST BUFFER
 JSR WATJOB ;FINISH JOB UP
 JMP DBLBUF ;MAKE SURE BOTH BUFS OK
 ;RTS
;
; DIRECTORY CLOSE ON OPEN WRITE FILE
;
CLSDIR LDX LINDX ;SAVE LINDX
 STX WLINDX ;&SA
 LDA SA
 PHA
 LDA DSEC,X ;GET DIRECTORY SECTOR
 STA SECTOR
 LDA DTRK,X ;<HD>
 STA TRACK ;<HD>
 LDA DIND,X ;GET SECTOR OFFSET
 STA INDEX
 LDA FILTYP,X ;DRV # IN FILTYP
 AND #1
 STA DRVNUM
 JSR GETACT ;ALLOCATE A BUFFER
 PHA
 STA JOBNUM 
 JSR DRTRD ;READ DIRECTORY SECTOR
 LDY #0
 LDA BUFIND,X ;.X IS JOB#
 STA R0+1
 LDA INDEX
 STA R0
 LDA (R0),Y
 AND #$20
 BEQ CLSD5
 JSR TYPFIL
 CMP #RELTYP
 BEQ CLSD6
;
 LDA (R0),Y
 AND #$8F ;REPLACE FILE
 STA (R0),Y
 INY
 LDA (R0),Y
 STA TRACK
 STY TEMP+2
 LDY #27 ;EXTRACT REPLACEMENT LINK
 LDA (R0),Y ; TO LAST SECTOR
 PHA
 DEY
 LDA (R0),Y
 ;<HD>
 PHA
 LDA #255 ;<HD>
 STA (R0),Y
 INY
 STA (R0),Y
 PLA
 LDY TEMP+2
 STA (R0),Y
 INY
 LDA (R0),Y
 STA SECTOR
 PLA
 STA (R0),Y
 JSR DELFIL ;DELETE OLD FILE
 JMP CLSD6 ;SET CLOSE BIT
CLSD5
 LDA (R0),Y
 AND #$F
 ORA #$80
 STA (R0),Y
CLSD6 LDX WLINDX
 LDY #28 ;SET # OF BLOCKS
 LDA NBKL,X
 STA (R0),Y
 INY
 LDA NBKH,X
 STA (R0),Y
 PLA 
 TAX
 LDA #WRITE ;WRITE DIRECTORY SECTOR
 ORA DRVNUM
 JSR DOIT
 PLA
 STA SA
 JMP FNDWCH ;<FIX>
;
;
 .END
