NEW
PREFIX
AUTO 4,1
				.LIST OFF	
*--------------------------------------
IO.Reset		jsr IO.Reset.In
				jsr IO.Reset.Out
				jsr IO.Reset.Err
				rts
*--------------------------------------			
IO.Set.In		pha
				jsr IO.Reset.In
				ldy #S.PS.hStdIn
				lda (pPS),y
				>STA.G IO.hIn
				pla
				ldy #S.PS.hStdIn
				sta (pPS),y
				rts
*--------------------------------------			
IO.Reset.In		>LDA.G IO.hIn
				beq .8
				
				pha
				
				ldy #S.PS.hStdIn
				lda (pPS),y
				>SYSCALL fclose
				
				pla
				ldy #S.PS.hStdIn
				sta (pPS),y
				
				>STZ.G IO.hIn
.8				rts
*--------------------------------------
IO.Set.Out		pha
				jsr IO.Reset.Out
				ldy #S.PS.hStdOut
				lda (pPS),y
				>STA.G IO.hOut
				pla
				ldy #S.PS.hStdOut
				sta (pPS),y
				rts
*--------------------------------------			
IO.Reset.Out	>LDA.G IO.hOut
				beq .8
				
				pha
				
				ldy #S.PS.hStdOut
				lda (pPS),y
				>SYSCALL fclose
				
				pla
				ldy #S.PS.hStdOut
				sta (pPS),y
				
				>STZ.G IO.hOut
.8				rts
*--------------------------------------
IO.Set.Err		pha
				jsr IO.Reset.Err
				ldy #S.PS.hStdErr
				lda (pPS),y
				>STA.G IO.hErr
				pla
				ldy #S.PS.hStdErr
				sta (pPS),y
				rts
*--------------------------------------			
IO.Reset.Err	>LDA.G IO.hErr
				beq .8
				
				pha
				
				ldy #S.PS.hStdErr
				lda (pPS),y
				>SYSCALL fclose
				
				pla
				ldy #S.PS.hStdErr
				sta (pPS),y
				
				>STZ.G IO.hErr
.8				rts
*--------------------------------------
IO.PrintBatchErrMsg
				>LDA.G hFileBuf
				>SYSCALL GetMemPtr
				>STYA ZPPtr1
				
				stz ZPPtr3
				stz ZPPtr3+1

.1				>LDYA ZPPtr1
				>STYA ZPPtr2			Save actual line start
				
				inc ZPPtr3
				bne .2
				inc ZPPtr3+1

.2				lda (ZPPtr1)
				beq .6					EoF
				inc ZPPtr1
				bne .3
				inc ZPPtr1+1
				
.3				cmp #$0D
				bne .2					Scan until EoL
				
				ldx ZPPtr1
				cpx ZPInputBufPtr
				lda ZPPtr1+1
				sbc ZPInputBufPtr+1
				bcc .1					not this line....

.4				ldy #0

.5				lda (ZPPtr2),y
				beq .6
				iny
				cmp #$0D
				beq .6
				phy
				>PUSHA
				ldy #S.PS.hStdErr
				lda (pPS),y
				>SYSCALL fputc
				ply
				bra .5
				
.6				>PUSHBI 0
				>PUSHW L.MSG.ECHOCRLF
				ldy #S.PS.hStdErr
				lda (pPS),y
				>SYSCALL fprintf

				lda ZPInputBufPtr
				sec
				sbc ZPPtr2
				beq .8
				tay

.7				phy
				>PUSHBI '-'
				ldy #S.PS.hStdErr
				lda (pPS),y
				>SYSCALL fputc
				ply
				dey
				bne .7
				
.8				>PUSHW ZPPtr3
				
				>PUSHBI 2
				>PUSHW L.MSG.BATCHERR
				ldy #S.PS.hStdErr
				lda (pPS),y
				>SYSCALL fprintf

				rts
*--------------------------------------
IO.PrintErrMsg	pha						Save EC for PrintF

				ldx L.ERR.Codes
				stx ZPPTR1
				ldx L.ERR.Codes+1
				stx ZPPTR1+1

				ldy #0

.1				cmp (ZPPTR1),y
				beq .2
				iny
				cpy #ERR.Count
				bne .1

.2				lda L.ERR.Messages
				sta ZPPTR1
				lda L.ERR.Messages+1
				sta ZPPTR1+1
				
.3				dey
				bmi .8

				lda (ZPPTR1)
				sec
				adc ZPPTR1
				sta ZPPTR1
				bcc .3
				inc ZPPTR1+1
				bra .3
				
.8				>PUSHW ZPPTR1
				pla
				>PUSHA
				>PUSHBI 3
				>PUSHW L.MSG.ERROR
				ldy #S.PS.hStdErr
				lda (pPS),y
				>SYSCALL fprintf
				rts
*--------------------------------------
MAN
SAVE USR/SRC/BIN/SHELL.S.IO
LOAD USR/SRC/BIN/SHELL.S
ASM
