NEW
  AUTO 3,1
*--------------------------------------
BS.GetSysBuf	lda #$04

BS.GetSysBufA	sta	XBBB5
				jsr	BS.KW.FRE
				bcs	.99

				lda AS.STRINGSTART+1
				sbc	AS.ARRAYEND+1
				cmp	XBBB5
				lda #BS.E.NOBUFFER
				bcc	.98

				lda AS.STRINGSTART+1
				sta	ZP.PCH
				sbc	XBBB5
				sta	ZP.A1H
				sta	AS.STRINGSTART+1

				lda AS.STRINGSTART
				sta	ZP.PCL
				sta	ZP.A1L

				lda AS.HIMEM
				sbc	ZP.PCL
				sta	BS.ReqMem

				lda AS.HIMEM+1
				sbc	ZP.PCH
				sta	BS.ReqMem+1

				jsr	BS.MoveMemDown

				lda #$00
				sec
				sbc	XBBB5
				sta	XBBE2
				jsr	LA3A3
				lda AS.HIMEM+1
				sta	XBBB7
				sec
				sbc	XBBB5
				sta	AS.HIMEM+1
				clc
				adc	#$04
				sta	BS.BUFPAGE
				rts

.98				sec
.99				rts

XBBB5			.BS 1
*--------------------------------------
BS.FreeSysBuf	jsr BS.KW.FRE
				bcs	.9

				lda AS.HIMEM+1
				sbc	#$00
				sta	ZP.PCH
				adc	#$03
				sta	ZP.A1H

				lda AS.STRINGSTART
				sta	ZP.PCL
				sta	ZP.A1L

				lda AS.HIMEM
				sec
				sbc	AS.STRINGSTART
				sta	BS.ReqMem

				lda AS.HIMEM+1
				sbc	AS.STRINGSTART+1
				sta	BS.ReqMem+1

				jsr	BS.MoveMemUp

				lda #$04
				sta	XBBE2
				clc
				adc	AS.HIMEM+1
				sta	AS.HIMEM+1
				jsr	LA3A3

				lda BS.BUFPAGE
				cmp	AS.HIMEM+1
				beq	.8

				pha
				ldx	GP.OPENCNT
				beq	.2

				lda AS.HIMEM+1

.1				cmp	BS.BUFPAGEs-1,x
				beq	LA29E

				dex
				bne	.1

.2				pla
				sec
.9				rts

.8				clc
				rts
*--------------------------------------
LA29E			pla
*--------------------------------------
BS.SetFileBuf	sta	GP.SBUFADR+1
				sta	BS.BUFPAGEs-1,x

				stz	GP.SBUFADR
				lda BS.REFNUMs,x
				sta	GP.MLIMRKEOFBUF.REFNUM
				lda #MLI.C.SETBUF
				jmp GP.GOSYSTEM
*--------------------------------------
BS.GETBUFR		jsr	BS.GetSysBufA
				bcs	LA2F6.9

				pha
				sbc	#$03
				sta	XBBB8
				pla

.1				sta	GP.SBUFADR+1
				ldx	GP.OPENCNT
				beq	.4

				lda XBBB7
				clc
				adc	#$04
				sta	XBBB7

.2				cmp	BS.BUFPAGEs-1,x
				bne	.3

				lda GP.SBUFADR+1
				jsr	LA356
				jsr	BS.SetFileBuf
				lda GP.SBUFADR+1
				adc	#$04
				bcc	.1

.3				dex
				bne	.2

.4				lda GP.SBUFADR+1
				bit	GP.EXECACTV
				bpl	LA2F6.8
*--------------------------------------
LA2F6			ldx	#$08
				jsr	LA356
				jsr	BS.SetFileBuf
				lda GP.SBUFADR+1
				adc	#$04

LA2F6.8			clc
LA2F6.9			rts
*--------------------------------------
BS.FREEBUFR		lda GP.OPENCNT
				asl
				asl
				adc	AS.HIMEM+1
				sta	XBBB7

				lda AS.HIMEM+1
				sta	XBBB8
				lda GP.RSHIMEM
				cmp	AS.HIMEM+1
				beq	.8

				sta	AS.HIMEM+1
				bit	GP.EXECACTV
				bpl	.1

				jsr	LA2F6
				bcc	.3

.1				lda XBBB7
				ldx	GP.OPENCNT
				beq	.5

.2				cmp	BS.BUFPAGEs-1,x
				bne	.4

				lda AS.HIMEM+1
				jsr	LA356
				jsr	BS.SetFileBuf
				sec
				lda XBBB7
				sbc	#$04
				sta	XBBB7

.3				lda AS.HIMEM+1
				sec
				sbc	#$04
				sta	AS.HIMEM+1
				bcs	.1

.4				dex
				bne	.2

.5				jsr	BS.KW.FRE

.8				clc
				rts
*--------------------------------------
LA356			pha
				lda XBBB8
				jsr	BS.SetFileBuf
				pla
				rts
*--------------------------------------
BS.MoveMemDown	ldy	#$00
				cpy	BS.ReqMem+1
				beq	.2

.1				lda (ZP.PCL),y
				sta	(ZP.A1L),y
				iny
				bne	.1

				inc	ZP.PCH
				inc	ZP.A1H
				dec	BS.ReqMem+1
				bne	.1

.2				cpy	BS.ReqMem
				beq	.8

				lda (ZP.PCL),y
				sta	(ZP.A1L),y
				iny
				bne	.2

.8				rts
*--------------------------------------
BS.MoveMemUp	ldy	BS.ReqMem
XA386			beq	LA38F				SELF MODIFIED

LA388			jsr	LA39A

				dec	ZP.A1H
				dec	ZP.PCH

LA38F			cpy	BS.ReqMem+1
				beq	LA3A2

				dec	BS.ReqMem+1
				bra	LA388
*--------------------------------------
LA39A			dey
				lda (ZP.PCL),y
				sta	(ZP.A1L),y
				tya
				bne	LA39A

LA3A2			rts
*--------------------------------------
LA3A3			lda AS.VARSTART+1
				sta	ZP.A2H
				lda AS.VARSTART
				ldx	AS.ARRAYSTART+1
				clc
				bcc	.2

.1				clc
				lda ZP.A2L
				adc	#$07

.2				sta	ZP.A2L
				bcc	.3

				inc	ZP.A2H

.3				eor	AS.ARRAYSTART
				bne	.4

				cpx	ZP.A2H

.4				clc
				beq	.5

				ldy	#$00
				lda (ZP.A2L),y
				iny
				eor	(ZP.A2L),y
				bpl	.1

				lda (ZP.A2L),y
				bpl	.1

				iny
				jsr	LA3FD
				bra	.1

.5				lda ZP.A2L
				sta	XBBDC

.6				clc
				jsr	LA160
				bcs	LA410

.7				ldy	#$00
				clc
				jsr	LA3FD
				clc
				lda #$03
				adc	ZP.A2L
				sta	ZP.A2L
				bcc	.8

				inc	ZP.A2H

.8				cmp	XBBDC
				bne	.7

				cpx	ZP.A2H
				bne	.7

				beq	.6
*--------------------------------------
LA3FD			lda (ZP.A2L),y
				beq	LA410

				iny
				iny
				lda AS.VARSTART+1
				cmp	(ZP.A2L),y
				bcs	LA410

				lda (ZP.A2L),y
				adc	XBBE2
				sta	(ZP.A2L),y

LA410			rts
*--------------------------------------
LA411			jsr	BS.FRE0
				bcs	.9

				lda AS.ARRAYEND
				sec
				sbc	AS.VARSTART
				sta	BS.BAS.HDR
				sta	BS.ReqMem

				lda AS.ARRAYEND+1
				sbc	AS.VARSTART+1
				sta	BS.BAS.HDR+1
				sta	BS.ReqMem+1

				lda AS.ARRAYSTART
				sbc	AS.VARSTART
				sta	BS.BAS.HDR+2

				lda AS.ARRAYSTART+1
				sbc	AS.VARSTART+1
				sta	BS.BAS.HDR+3

				lda AS.STRINGSTART
				sbc	BS.ReqMem
				sta	ZP.A1L

				lda AS.STRINGSTART+1
				sbc	#$00
				sta	ZP.A1H

				lda AS.ARRAYEND
				sbc	BS.ReqMem
				sta	ZP.PCL

				lda AS.ARRAYEND+1
				sbc	#$00
				sta	ZP.PCH

				lda #$03
				sta	XA386+1

				jsr	BS.MoveMemUp

				lda #$07
				sta	XA386+1

				lda ZP.A1L
				sta	XBBE9

				inc	ZP.A1H
				lda ZP.A1H
				sta	XBBEA

				lda AS.HIMEM
				sec
				sbc	ZP.A1L
				sta	XBBEB

				lda AS.HIMEM+1
				sta	BS.BAS.HDR+4
				sbc	ZP.A1H
				sta	XBBEC

				clc
.9				rts
*--------------------------------------
LA480			lda BS.BAS.HDR
				sta	BS.ReqMem
				clc
				adc	AS.VARSTART
				sta	AS.ARRAYEND

				lda BS.BAS.HDR+1
				sta	BS.ReqMem+1
				adc	AS.VARSTART+1
				sta	AS.ARRAYEND+1

				lda AS.VARSTART
				sta	ZP.A1L
				adc	BS.BAS.HDR+2
				sta	AS.ARRAYSTART

				lda AS.VARSTART+1
				sta	ZP.A1H
				adc	BS.BAS.HDR+3
				sta	AS.ARRAYSTART+1

				lda XBBE9
				sta	ZP.PCL
				lda XBBEA
				sta	ZP.PCH

				jsr	BS.MoveMemDown

				lda BS.ReqMem
				clc
				adc	ZP.PCL
				sta	AS.STRINGSTART

				lda ZP.PCH
				adc	#$00
				sta	AS.STRINGSTART+1
				sec
				lda AS.HIMEM+1
				sbc	BS.BAS.HDR+4
				beq	.8

				sta	XBBE2
				jsr	LA3A3

.8				clc
				rts






*--------------------------------------
BS.LINEBUFCLR80	lda #$A0
				ldx	#$4F

.1				sta	IO.LINEBUF+1,x
				dex
				bpl	.1

				rts
*--------------------------------------
BS.DOSCMD		lda #$FF
				sta	GP.XCNUM
				lda #$20
				sta	BS.GetCharSep
				lda #$08
				sta	BS.GetCharMax
				jsr	BS.GetKWInCmdBuf
				lda BS.CMDBUF
				cmp	#'A'
				bcs	LA6A5

				eor	#'-'
				beq	LA6A5

LA6A2			jmp	BS.SYNERR

LA6A5			jsr	BS.IsIntCmd
				bcs	LA6A2

				lda GP.STATE
				bne	LA6BA

				lda GP.EXECACTV
				bne	LA6BA

				jsr	MON.CLREOL
				jsr	MON.CROUT

LA6BA			stz	GP.FoundBITS
				stz	GP.FoundBITS+1
				stz	BS.CMDBUF
				stz	MLI.PATHBUF

				lda GP.VDEFSLT
				sta	GP.ParamS
				lda GP.VDEFDRV
				sta	GP.ParamD

				lda AS.HIMEM+1
				sta	BS.BUFPAGE

				ldx	GP.XLEN
				inx
				inx
				stx	BS.GetCharMax

				lda GP.AllowedBITS
				beq	LA744

				asl
				bmi	LA747				CMDBITS0.SLOT

				jsr	BS.GetKWInCmdBuf
				php
				pha
				lda GP.AllowedBITS
				bpl	LA6F8				CMDBITS0.PFIX

				lda #MLI.C.GETPREFIX
				jsr	GP.GOSYSTEM

LA6F8			pla
				plp
				beq	LA744

				cmp	#','
				bne	LA703
				jmp	LA795

LA703			cmp	#'/'
				beq	LA70B

				cmp #'.'					.. or ../
				beq	LA70B

				cmp	#'A'
				bcc	LA73D

LA70B			dex
				lda #$82
				sta	BS.GetCharSep
				lsr
				sta	BS.GetCharMax

*			ldy	#$00

				jsr	BS.GetKWInCmdBufAtX
				dey
				sty	BS.CMDBUF.LEN
				lda #CMDBITS0.FN1
				sta	GP.FoundBITS

				phx
				jsr BS.Expand2PATHBUF
				plx
				bcs LA73A

				dex

				jsr	BS.GetCharSpaceSep
				bne	LA73A

				bcc	LA7A6

				lda GP.AllowedBITS
				lsr
				bcs	LA770				CMDBITS0.FN1

LA73A			jmp	BS.SYNERR

LA73D			lda GP.XCNUM
				cmp	#$06				RUN ????
				bne	LA73A

LA744			bra	LA7A6

LA747			jsr	BS.GetKWInCmdBuf
				beq	LA73A

				cmp	#$41
				beq	LA79A

				jsr	BS.TMPBUF3Reset
				stz	XBC08

				ldy	#$13
				sty	XBC09

				ldy	#CMDBITS0.SLOT
				sty	GP.FoundBITS

				stx BS.ToAUXSaveX
				ldx #BSX.GetDecNum.X
				jsr BS.ToAUX
				bcs	LA76F

				lda GP.ParamINPR
				cmp	#$08
				bcc	LA79F

LA76C			lda #BS.E.RANGE
				sec
LA76F			rts

LA770			lsr
				bcc	LA795

				jsr	BS.GetCharSpaceSep
				beq	LA73A

				dex
				lda #$82
				sta	BS.GetCharSep
				ldy	#$01
				jsr	BS.GetPathInPathBuf
				dey
				dey
				sty	MLI.PATHBUF
				lda #CMDBITS0.FN1+CMDBITS0.FN2
				sta	GP.FoundBITS
				dex
				jsr	BS.GetCharSpaceSep
				bne	LA73A

				bcc	LA7A6
*--------------------------------------
LA795			jsr	BS.GetCharSpaceSep
				beq	LA73A

LA79A			stx BS.ToAUXSaveX
				ldx #BSX.CheckOpt.X
				jsr	BS.ToAUX
				bcs	LA76F

LA79F			jsr	BS.GetCharSpaceSep
				bne	LA73A

				bcs	LA795

LA7A6			lda GP.ParamS
				beq	LA76C

				cmp	#$08
				bcs	LA76C

				lda GP.ParamD
				beq	LA76C

				cmp	#$03
				bcs	LA76C
*			>DEBUG
				lda GP.AllowedBITS
				and	#CMDBITS0.RRUN+CMDBITS0.FN1
				lsr
				beq	LA7C9

				lda GP.STATE
				bne	LA7C9

				lda #BS.E.NODIRECT
				sec
				rts

LA7C9			bcc	LA80B

				lda GP.AllowedBITS+1
				and	#CMDBITS1.SD
				beq	LA80B

				lda GP.FoundBITS
				lsr
				bcs	LA7E1				CMDBITS0.FN1

				lda GP.AllowedBITS
				and	#CMDBITS0.PFIX+CMDBITS0.FNOPT
				beq	BS.SYNERR

				bpl	LA80B

LA7E1			lda BS.CMDBUF
				eor	#'/'
				beq	LA7ED

				lda MLI.PFIXPTR
				beq	LA806

LA7ED			lda GP.FoundBITS+1
				and	#CMDBITS1.SD
				beq	LA80B

				bcs	LA806

				stz	BS.CMDBUF.LEN
				stz	BS.CMDBUF

				lda #CMDBITS0.FN1
				tsb	GP.FoundBITS

LA806			jsr	BS.GetVolAtSxDy
				bcs	LA849

LA80B			lda GP.XCNUM
				beq	.8

				cmp	#25				PREFIX
				beq	.8

				cmp	#34				CD
				beq	.8

				lda GP.AllowedBITS+1
				and	#CMDBITS1.SD
				beq	.8

				lda GP.FoundBITS
				lsr
				bcc	LA844

				jsr	BS.GetFileInfo
				bcc	LA844

				cmp	#$07
				bne	LA849

				lda GP.AllowedBITS
				and	#CMDBITS0.CRFLG
				bne	LA844

				lda #BS.E.PATHNFND6
				rts

.8				clc
LA844			jmp	(BS.KW.JMPADDR)

BS.SYNERR		lda #BS.E.SYNTAX
LA849			sec
				rts
*--------------------------------------
BS.GetVolAtSxDy	lda GP.ParamS
				asl
				asl
				asl
				asl
				asl
				pha
				lda GP.ParamD
				eor	#$01
				lsr
				pla
				ror
				sta	GP.MLIMRKEOFBUF.REFNUM

				ldx	#$01
				ldy	#$02
				jsr BS.SetSBUFADRXY

				lda #MLI.C.ONLINE
				jsr	GP.GOSYSTEM
				bcs	LA849

				lda GP.ParamD
				sta	GP.VDEFDRV
				lda GP.ParamS
				sta	GP.VDEFSLT
				lda BS.CMDBUF
				eor	#'/'
				beq	LA8F4

				lda IO.LINEBUF+1
				and	#$0F
				adc	#$02
				sta	IO.LINEBUF+1
				adc	BS.CMDBUF.LEN
				cmp	#$40
				tax
				lda #BS.E.SYNTAX
				bcs	LA8F5

				ldy	BS.CMDBUF.LEN
				stx	BS.CMDBUF.LEN

LA89D			dex
				dey
				bmi	LA8AA

				lda BS.CMDBUF,y
				sta	BS.CMDBUF,x
				bra	LA89D

LA8AA			lda #'/'
				sta	BS.CMDBUF

LA8AF			sta	BS.CMDBUF,x
				lda IO.LINEBUF,x
				dex
				bne	LA8AF

				lda GP.XCNUM
				cmp	#$0B				OPEN
				beq	LA8F4

				cmp	#$16				DELETE
				beq	LA8F4

				cmp	#$08				EXEC
				beq	LA8F4

				lda MLI.PATHBUF
				tay
				clc
				adc	IO.LINEBUF+1
				cmp	#$40
				tax
				lda #BS.E.SYNTAX
				bcs	LA8F5

				stx	MLI.PATHBUF

LA8D9			dex
				dey
				bmi	LA8E6

				lda MLI.PATHBUF+1,y
				sta	MLI.PATHBUF+1,x
				bra	LA8D9

LA8E6			lda #'/'
				sta	MLI.PATHBUF+1

LA8EB			sta	MLI.PATHBUF+1,x
				lda IO.LINEBUF,x
				dex
				bne	LA8EB

LA8F4			clc

LA8F5			rts
*--------------------------------------
BS.GetPathInPathBuf
				jsr	BS.GetChar			UC
				sta	MLI.PATHBUF,y
				iny
				cmp	#','
				beq	LAA45

				cmp	#$20
				beq	LAA45

				cmp	#$0D
				beq	LAA56

				cpy	BS.GetCharMax
				bcc	BS.GetPathInPathBuf

				ora	#$00
				rts
*--------------------------------------
BS.GetKWInCmdBuf
				ldx	#$00

BS.GetKWInCmdBufAtX
				ldy	#$00

LAA2D			jsr	BS.GetChar			UC
				sta	BS.CMDBUF,y
				iny
				cmp	#','
				beq	LAA45

				cmp	#$20
				beq	LAA45

				cmp	#$0D
				beq	LAA56

				cpy	BS.GetCharMax
				bcc	LAA2D

LAA45			ora	#$00
				rts
*--------------------------------------
BS.GetCharSpaceSep
				lda #$20
				sta	BS.GetCharSep
				jsr	BS.GetChar			UC
				cmp	#','
				beq	LAA57

				cmp	#$0D

LAA56			clc
LAA57			rts
*--------------------------------------
BS.GetChar		lda IO.LINEBUF,x
				and	#$7F

				inx
				cmp	BS.GetCharSep
				beq	BS.GetChar

				rts
*--------------------------------------
BS.TMPBUF3x2	asl BS.TMPBUF4
				rol BS.TMPBUF4+1
				rol BS.TMPBUF4+2
BS.TMPBUF3x2.RTS
				rts
*--------------------------------------
BS.IsIntCmd		ldx #BSX.IsIntCmd.X
				jsr BS.ToAUX

				bcc BS.TMPBUF3x2.RTS

				dec	GP.XCNUM			$ff
				sec
				jmp	GP.EXTRNCMD
*--------------------------------------
BS.TMPBUF3Reset	stz	BS.TMPBUF4
				stz	BS.TMPBUF4+1
				stz	BS.TMPBUF4+2
				rts
*--------------------------------------
BS.KW.DASH		lda GP.FITYPE
				cmp	#$FC
				beq	BS.KW.RUN

				cmp	#$06
				beq	LABA3

				cmp	#$04
				bne	LAB63

				jmp	BS.KW.EXEC

LAB63			cmp	#$FF
				beq	LAB6F

				cmp	#$B3
				beq	LAB6F

				lda #BS.E.MISMATCH
				sec
				rts

LAB6F			pha
				jsr	BS.CloseAll
				jsr	LB36B

				stz	GP.ParamA

				stz	MLI.MEMTABL+20
				stz	MLI.MEMTABL+21
				stz	MLI.MEMTABL+22

				lda #$01
				sta	MLI.MEMTABL+23
				lda #$20
				sta	GP.ParamA+1
				pla
				cmp	#$FF
				bne	LABA6

				sta	GP.ParamT
				lda #CMDBITS1.A
				sta	GP.FoundBITS+1
				lda #CMDBITS0.T+CMDBITS0.FN1
				sta	GP.FoundBITS

LABA3			jmp	BS.KW.BRUN

LABA6			sec
				jsr	MON.IIGSID
				bcs	LABA3

				jmp	BS.QUIT.IIgs
*--------------------------------------
BS.KW.CHAIN		jsr	LA411
				lda AS.HIMEM+1
				pha
				ldx	XBBEA
				dex
				stx	AS.HIMEM+1
				jsr	BS.LoadBAS
				plx
				stx	AS.HIMEM+1
				bcs	BS.LoadBAS0.RTS

				jsr	AS.CLEAR1
				jsr	LA480
				lda #$00
				beq	LABE6
*--------------------------------------
BS.KW.RUN		stz	GP.IFILACTV
				stz	AS.ERRNUM

				lda GP.FoundBITS
				lsr
				bcc	LABF4

				jsr	BS.LoadBAS0
				bcs	BS.LoadBAS0.RTS

				jsr	AS.CLEAR1

LABE6			sta	AS.ERRFLG
				jsr	BS.SetRunLineNum
				jsr	BS.SaveCSWKSW
				jsr	LABF4
				jmp	AS.NEXTSTMT
*--------------------------------------
LABF4			jsr	AS.NORMAL
				lda #$A3
				sta	X9F65
				lda #$FF
				sta	GP.XCNUM
				sta	ZP.PROMPT
				ldx	#$04
				jsr	BS.SetState
				jmp	BS.SYNERR
*--------------------------------------
BS.KW.LOAD		jsr	BS.LoadBAS0
				bcs	BS.LoadBAS0.RTS

BS.ENTRY		jsr	AS.CLEAR1
				jsr	BS.SetState0

				stz	ZP.CH
				jmp	AS.RESTART1
*--------------------------------------
BS.LoadBAS0		jsr BS.CloseAll
BS.LoadBAS0.RTS	bcs	BS.LoadBAS.RTS

BS.LoadBAS		lda #$01
				ldx	#$FC
				jsr	BS.CheckFTypeXAccessA
				bcs	BS.LoadBAS.RTS

				jsr	BS.MLIGetEOF
				bcs	BS.LoadBAS.RTS

				lda AS.PGRMSTART
				sta	GP.MLIRW.DATAPTR
				adc	GP.SBUFADR
				sta	GP.ParamA

				lda AS.PGRMSTART+1
				sta	GP.MLIRW.DATAPTR+1
				adc	GP.SBUFADR+1
				sta	GP.ParamA+1
				bcs	.1

				cmp	AS.HIMEM+1

.1				lda #BS.E.TOOLARGE
				bcs	BS.LoadBAS.RTS

				ldx	GP.SBUFADR
				ldy	GP.SBUFADR+1
				jsr	BS.ReadXYBytes
				bcs	BS.LoadBAS.RTS

				jsr	BS.MLIClose
				bcs	BS.LoadBAS.RTS

				jsr	LAC80
				ldx	GP.ParamA+1
				ldy	GP.ParamA

				stx	AS.PGRMEND+1
				sty	AS.PGRMEND

				sty	AS.ARRAYSTART
				sty	AS.VARSTART
				sty	AS.ARRAYEND
				stx	AS.ARRAYSTART+1
				stx	AS.VARSTART+1
				stx	AS.ARRAYEND+1

BS.LoadBAS.RTS	rts
*--------------------------------------
LAC80			sec
				lda AS.PGRMSTART
				sbc	GP.FIAUXTYPE
				sta	ZP.A1L

				lda AS.PGRMSTART+1
				sbc	GP.FIAUXTYPE+1
				sta	ZP.A1H
				ora	ZP.A1L
				clc
				beq	LACD9

				ldx	AS.PGRMSTART
				lda AS.PGRMSTART+1

LAC98			stx	ZP.PCL
				sta	ZP.PCH
				ldy	#$01
				lda (ZP.PCL),y
				dey
				ora	(ZP.PCL),y
				beq	LACD9

				lda (ZP.PCL),y
				adc	ZP.A1L
				tax
				sta	(ZP.PCL),y
				iny
				lda (ZP.PCL),y
				adc	ZP.A1H
				sta	(ZP.PCL),y
				clc
				bcc	LAC98

BS.SetRunLineNum
				lda GP.FoundBITS+1
				and	#CMDBITS1.LINE
				clc
				beq	LACD9

				lda GP.ParamAT
				sta	AS.LINNUM
				lda GP.ParamAT+1
				sta	AS.LINNUM+1
				jsr	AS.FINDLINE
				clc
				lda AS.LOWTR
				adc	#$FF
				sta	AS.TXTPTR
				lda AS.LOWTR+1
				adc	#$FF
				sta	AS.TXTPTR+1
				clc
LACD9			rts
*--------------------------------------
BS.KW.SAVE		bcc	LACFE

				lda #$FC
				sta	GP.ParamT
				sta	GP.FITYPE
				lda #$C3
				sta	GP.FIACCESS
				lda AS.PGRMSTART
				sta	GP.CRAUXTYPE
				sta	GP.FIAUXTYPE
				lda AS.PGRMSTART+1
				sta	GP.CRAUXTYPE+1
				sta	GP.FIAUXTYPE+1
				jsr	BS.CreateFileOrDir
				bcs	LAD47

LACFE			lda #$02
				ldx	#$FC
				jsr	BS.CheckFTypeXAccessA
				bcs	LAD47

				lda AS.PGRMEND
				sec
				sbc	AS.PGRMSTART
				tax

				lda AS.PGRMEND+1
				sbc	AS.PGRMSTART+1
				tay

				jsr BS.SetSBUFADRXY0

				lda AS.PGRMSTART
				sta	GP.MLIRW.DATAPTR
				lda AS.PGRMSTART+1
				sta	GP.MLIRW.DATAPTR+1
				jsr	BS.WriteXYBytes
				bcs	LAD47

				jsr BS.MLISetEOF
				bcs	LAD47

				jsr	BS.MLIClose
				bcs	LAD47

				lda AS.PGRMSTART+1
				ldx	AS.PGRMSTART
				cmp	GP.FIAUXTYPE+1
				bne	LAD48

				cpx	GP.FIAUXTYPE
				clc
				bne	LAD48

LAD47			rts

LAD48			stx	GP.FIAUXTYPE
				sta	GP.FIAUXTYPE+1
				jmp	BS.SetFileInfoNoDate
*--------------------------------------
BS.KW.CREATE	stz	GP.CRAUXTYPE
				stz	GP.CRAUXTYPE+1

				lda GP.FoundBITS
				and	#CMDBITS0.T
				bne	BS.CreateFileOrDir

				lda #$0F
				sta	GP.ParamT
BS.CreateFileOrDir
				lda GP.EXECACTV
				asl
				lda #$00
				adc	GP.OPENCNT
				cmp	#$08
				bcs	LAD8D

				lda GP.ParamT
				sta	GP.CRTYPE
				ldx	#$C3
				ldy	#$01
				cmp	#$0F
				bne	LAD82

				ldy	#$0D

LAD82			stx	GP.CRACCESS
				sty	GP.CRSTTYPE
				lda #MLI.C.CREATE
				jmp	GP.GOSYSTEM

LAD8D			lda #BS.E.NOBUFFER
				rts
*--------------------------------------
BS.KW.RENAME	lda GP.FoundBITS
				lsr
				lsr
				lda #MLI.C.RENAME
				bcs	LAD9E

				jmp	BS.SYNERR
*--------------------------------------
BS.KW.DELETE	lda #MLI.C.DESTROY
				.HS 2C					BIT ABS
BS.SETPREFIX	lda #MLI.C.SETPREFIX

LAD9E			jmp	GP.GOSYSTEM
*--------------------------------------
BS.KW.LOCK		jsr	BS.GetFileInfo
				lda GP.FIACCESS
				and	#$3C
				ora	#$01
				bra BS.KW.UNLOCK1
*--------------------------------------
BS.KW.UNLOCK	jsr	BS.GetFileInfo
				lda #$C3
				ora	GP.FIACCESS

BS.KW.UNLOCK1	sta	GP.FIACCESS
				jmp	BS.SetFileInfo
*--------------------------------------
BS.KW.PREFIX	lda GP.FoundBITS+1
				and	#CMDBITS1.SD

				bne	BS.SETPREFIX

				lda GP.FoundBITS
				lsr
				bcs	BS.SETPREFIX

BS.GETPREFIX	lda ZP.PROMPT
				beq	LADF0

				jsr	MON.CROUT
				ldx	#$00

LADD8			cpx	BS.CMDBUF.LEN
				beq	LADE8

				lda BS.CMDBUF,x
				ora	#$80
				jsr	MON.COUT
				inx
				bne	LADD8

LADE8			jsr	MON.CROUT
				jsr	MON.CROUT
				clc
				rts

LADF0			sec
				ror	GP.PFXACTV
				clc
				rts
*--------------------------------------
MAN
SAVE usr/src/basic.fx/basic.s.b
LOAD usr/src/basic.fx/basic.s
ASM
