 .PAGE 'CLOSE'
; 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 #DIRTYP
 BEQ CLSC30 ;DIRECT CHANNEL
 CMP #RELTYP
 BEQ CLSREL
;
 JSR FNDWCH ;LOOK FOR WRITE CHANNEL
 BCS CLSC31
;
 JSR CLSWRT ;CLOSE SEQ WRITE
 JSR CLSDIR ;CLOSE DIRECTORY
CLSC30
 JSR MAPOUT ;WRITE BAM
CLSC31
 JMP FRECHN
;
CLSREL
 JSR SCRUB
 JSR DBLBUF
 JSR SSEND
 LDX SSNUM
 STX T4
 INC T4
 LDA #0
 STA T1
 STA T2
 LDA SSIND
 SEC
 SBC #SSIOFF-2
 STA T3
 JSR SSCALC
 LDX LINDX
 LDA T1
 STA NBKL,X
 LDA T2
 STA NBKH,X
 JSR CLSDIR
 JMP FRECHN
;
; 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
;
 LDA #0
CLSW20
 SEC
 SBC #1 ;BACK UP 1
 PHA ;SAVE IT
 LDA #0
 JSR SETPNT
 JSR PUTBYT ;TLINK=0
 PLA ;LSTCHR COUNT
 JSR PUTBYT
;
 JSR WRTBUF ;WRITE OUT LAST BUFFER
 JSR WATJOB ;FINISH JOB UP
 JMP DBLBUF ;MAKE SURE BOTH BUFS OK
 ;RTS
;
; WRITE OUT THE BIT MAP TO 
; THE DRIVE IN LSTJOB(ACTIVE)
;
MAPOUT JSR GETACT
 TAX
 LDA LSTJOB,X
MO10 AND #1
 PHA ;CHECK BAM BEFORE WRITING
 TAX
 LDA #0
 STA SECTOR
 LDA IPBM,X
 STA TEMP+5
 LDA #0
 STA TEMP+4
 .SKIP
 LDA #1
 STA TRACK
 .SKIP
; VERIFY THE BAM BLOCK COUNT
; MATCHES THE BITS
;
MAPCHK LDA TRACK
 ASL A
 ASL A
 TAY
 LDA (TEMP+4),Y
 STA TEMP+3
 INY
 LDA (TEMP+4),Y
 STA TEMP
 INY
 LDA (TEMP+4),Y
 STA TEMP+1
 INY
 LDA (TEMP+4),Y
 STA TEMP+2
 .SKIP
 JSR AVCK
 INC TRACK
 LDA TRACK
 CMP #MAXTRK
 BNE MAPCHK
 .SKIP
 LDA #18
 STA TRACK
 PLA
 TAY
 CLC
 ADC #BAMJOB
 TAX
 TYA
 ORA #WRITE
 JMP DOIT
;
; DIRECTORY CLOSE ON OPEN WRITE FILE
;
CLSDIR LDX LINDX ;SAVE LINDX
 STX WLINDX ;&SA
 LDA SA
 PHA
 LDA DIRENT,X ;GET DIRECTORY SECTOR
 PHA
 AND #$1F
 STA SECTOR
 PLA
 AND #$E0 ;GET SECTOR OFFSET
 ORA #2
 STA INDEX
 LDA FILTYP,X ;DRV # IN FILTYP
 AND #1
 STA DRVNUM
 LDA #18
 STA TRACK
 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
 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
 BNE CLSD4
 STA TRACK
 PLA
 STA SECTOR
 LDA #$67
 JSR CMDER2
CLSD4
 PHA
 LDA #0
 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
;
;
 .END
