 .PAGE 'TRANSFER'
;TRANSFER FILENAME FROM CMD TO BUFFER
; A: STRING SIZE
; X: STARTING INDEX IN CMDBUF
; Y: BUFFER #
TRNAME PHA
 JSR FNDLMT
 JSR TRCMBF
 PLA
 SEC
 SBC STRSIZ
 TAX
 BEQ TN20
 BCC TN20
 .SKIP
 LDA #$A0
TN10 STA (DIRBUF),Y
 INY
 DEX
 BNE TN10
TN20 RTS
 .SKIP 2
;TRANSFER CMD BUFFER TO OTHER BUFFER
; USES CURRENT BUFFER PTR
; LIMIT: ENDING INDEX+1 IN CMD BUF
; X: STARTING INDEX IN CMD BUF
; Y: BUFFER #
 .SKIP
TRCMBF TYA
 ASL A
 TAY
 LDA BUFTAB,Y
 STA DIRBUF
 LDA BUFTAB+1,Y
 STA DIRBUF+1
 LDY #0
;
TR10 LDA CMDBUF,X
 STA (DIRBUF),Y
 INY
 BEQ TR20
 INX
 CPX LIMIT
 BCC TR10
TR20 RTS
;
;
;FIND THE LIMIT OF THE STRING IN CMDBUF
; POINTED TO BY X
 .SKIP
FNDLMT LDA #0
 STA STRSIZ
 TXA
 PHA
FL05
 LDA CMDBUF,X
 CMP #',
 BEQ FL10
 CMP #'=
 BEQ FL10
 INC STRSIZ
 INX
 LDA #15
 CMP STRSIZ
 BCC FL10
 CPX CMDSIZ
 BCC FL05
FL10 STX LIMIT
 PLA
 TAX
 RTS
 .SKIP
 .PAGE 'TRNSFR-GETNAM'
; GET FILE ENTRY FROM DIRECTORY
; CALLED BY STDIR, GETDIR
GETNAM LDA SA ;SAVE VARIABLES
 PHA
 LDA LINDX
 PHA
 JSR GNSUB
 PLA ;RESTORE VARIABLES
 STA LINDX
 PLA
 STA SA
 RTS
 .SKIP
GNSUB LDA #IRSA
 STA SA
 JSR FNDRCH
 JSR GETPNT
 LDA ENTFND
 BPL GN05 ;MORE FILES
 LDA DRVFLG
 BNE GN050
 JSR MSGFRE ;SEND BLOCKS FREE
 CLC ;(C=0): END
 JMP GN45 ;TERMINATE
 .SKIP
GN05 LDA DRVFLG ;(DRVFLG=0):
 BEQ GN10 ; SEND FILE NAME
GN050
 DEC DRVFLG ;(DRVFLG=-1):NEW DIR
 BNE GN051
 DEC DRVFLG ;(DRVFLG=-1):
 JSR TOGDRV ; SEND BLOCKS FREE
 JSR MSGFRE
 SEC
 JMP TOGDRV
 .SKIP
GN051 LDA #0
 STA NBTEMP+1
 STA DRVFLG ;RESET FLAG
 JSR NEWDIR
 SEC
 RTS
 .SKIP
GN10 LDX #DIRLEN ;SET NUMBER BLOCKS
 LDY #29 ; & ADJUST SPACING
 LDA (DIRBUF),Y
 STA NBTEMP+1
 BEQ GN12
 LDX #DIRLEN-2
GN12 DEY
 LDA (DIRBUF),Y
 STA NBTEMP
 CPX #DIRLEN-2
 BEQ GN14
 CMP #10
 BCC GN14
 DEX
 CMP #100
 BCC GN14
 DEX
 .SKIP
GN14 JSR BLKNB ;CLEAR NAME BUFFER
 .SKIP
 LDA (DIRBUF),Y ;SET TYPE CHARS
 PHA 
 ASL A ;(USED IN BCS)
 BPL GN15
 LDA #'<
 STA NAMBUF+1,X
GN15
 PLA
 AND #$F
 TAY
 LDA TP2LST,Y
 STA NAMBUF,X
 DEX
 LDA TP1LST,Y
 STA NAMBUF,X
 DEX
 LDA TYPLST,Y
 STA NAMBUF,X
 DEX
 DEX
 BCS GN20 ;(FROM ASL)
 LDA #'* ;FILE NOT CLOSED
 STA NAMBUF+1,X
GN20 LDA #$A0
 STA NAMBUF,X
 DEX
 LDY #18
GN22 LDA (DIRBUF),Y
 STA NAMBUF,X
 DEX
 DEY
 CPY #3
 BCS GN22
 .SKIP
 LDA #'" ;SEND NAME IN QUOTES
 STA NAMBUF,X
GN30 INX
 CPX #$20
 BCS GN35
 LDA NAMBUF,X
 CMP #'"
 BEQ GN35
 CMP #$A0
 BNE GN30
GN35 LDA #'"
 STA NAMBUF,X
GN37 INX
 CPX #$20
 BCS GN40
 LDA #$7F
 AND NAMBUF,X
 STA NAMBUF,X
 BPL GN37
 .SKIP
GN40 JSR FNDFIL
 SEC
GN45 RTS
 .SKIP
BLKNB LDY #NBSIZ ;BLANK NAMBUF
 LDA #$20
BLKNB1 STA NAMBUF-1,Y
 DEY
 BNE BLKNB1
 RTS
 .SKIP
;NEW DIRECTORY IN LISTING
NEWDIR
 JSR BLKNB
 LDA #$FF
 STA TEMP
 LDX DRVNUM
 STX NBTEMP
 LDA #0
 STA NBTEMP+1
 LDA IPBM,X
 STA DIRBUF+1
 LDA #$90
 STA DIRBUF
 LDY #22
 .SKIP
ND10 LDA (DIRBUF),Y
 CMP #$A0
 BNE ND20
 LDA #'1 ;VERSION # 1
 .BYTE $2C
ND15
 LDA (DIRBUF)Y
 CMP #$A0
 BNE ND20
;
 LDA #$20
ND20
 STA NAMBUF+2,Y
 DEY
 BPL ND15
 LDA #$12
 STA NAMBUF
 LDA #'"
 STA NAMBUF+1
 STA NAMBUF+18
 LDA #$20
 STA NAMBUF+19
 RTS
 .SKIP
MSGFRE JSR BLKNB
 LDY #MSGLEN-1
MSG1 LDA FREMSG,Y
 STA NAMBUF,Y
 DEY
 BPL MSG1
 JMP NUMFRE
 .SKIP
FREMSG .BYTE 'BLOCKS FREE.'
MSGLEN =*-FREMSG
.END
