NEW
  AUTO 3,1
				.LIST OFF
*--------------------------------------
PPP.ETCFILE		>PUSHW L.ETCFILE
				>PUSHBI	O.RDONLY
				>PUSHBI 0
				>PUSHWZ
				>SYSCALL FOpen
				bcs .99

				sta hETCFILE

				>PUSHW L.MSG.ETCFILE
				>PUSHW L.ETCFILE
				>PUSHBI 2
				>SYSCALL PrintF

.1				>PUSHB hETCFILE
				>PUSHW L.IN.Buf
				>PUSHWI 255
				>SYSCALL FGetS
				bcs .8
				
				lda IN.Buf
				beq .1
				
				cmp #'#'
				beq .1
				
				>LDYA L.IN.Buf
				>SYSCALL PutS
				
				lda IN.Buf
				cmp #'>'
				bne .2

				>LDYA L.IN.Bufp1
				jsr SSC.Write
				bcs .9

.10				bra .1

.99				rts

.2				cmp #'?'
				bne .7
*--------------------------------------
.3				jsr SSC.Read
				bcs .9

				tya
				beq .3

				lda #0
				sta IN.Buf,y

				>LDYA L.IN.Buf
				>STYA ZPPtr2

.4				jsr PPP.SkipCRLFPtr2
				bcs .3
				
				ldy #$ff

.5				iny
				lda IN.Buf+1,y			skip !
				beq .10
				
.6				cmp (ZPPtr2),y
				beq .5
				
				lda (ZPPtr2),y
				beq .60
				
				cmp #C.CR
				beq .60
				
				jsr PPP.ETCFILE.ERR1
				bra .9
				
.60				jsr PPP.NextStrPtr2
				lda (ZPPtr2)
				bne .4
				
.7				jsr PPP.ETCFILE.ERR2
				bra .9

.8				cmp #MLI.E.EOF
				sec
				bne .9

				lda #0
				clc

.9				php
				pha
				lda hETCFILE
				>SYSCALL FClose
				pla
				plp

				rts
*--------------------------------------
PPP.SkipCRLFPtr2
.1				lda (ZPPtr2)
				beq .9
				
				cmp #C.CR
				bne .8
				
				ldy #1
				lda (ZPPtr2),y
				beq .9
				
				cmp #C.LF
				bne .2
				
				iny
				
.2				tya
				clc
				adc ZPPtr2
				sta ZPPtr2
				bcc .1
				
				inc ZPPtr2+1
				bra .1
				
.8				clc
				rts
				
.9				sec
				rts
*--------------------------------------
PPP.NextStrPtr2	ldy #$ff

.1				iny
				lda (ZPPtr2),y
				beq .2
				
				cmp #C.CR
				bne .1
				
.2				tya
				clc
				adc ZPPtr2
				sta ZPPtr2
				bcc .8
				
				inc ZPPtr2+1
				
.8				rts				
*--------------------------------------
PPP.ETCFILE.ERR1
				>PUSHW L.MSG.UNEXPECTED
				>PUSHW L.IN.Buf
				bra PPP.ETCFILE.ERR
*--------------------------------------
PPP.ETCFILE.ERR2
				>PUSHW L.MSG.SYNTAX
				>PUSHW L.IN.Buf

PPP.ETCFILE.ERR	>PUSHBI 2
				>SYSCALL PrintF
				lda #MLI.E.IO
				sec
				rts
*--------------------------------------
SSC.Write		>STYA ZPPtr1

				ldy #$ff

.10				iny
				lda (ZPPtr1),y
				bne .10

				lda #C.CR
				sta (ZPPtr1),y
				iny

				lda #C.LF
				sta (ZPPtr1),y
				iny

				sty Len

				php
				sei

				ldx DEVSLOTn08F

				ldy #0

.1				phy

				ldy #0

.2				lda SSC.STATUS-$8F,x
				bit #SSC.STATUS.nDCD	true when 0
				bne .9

				bit #SSC.STATUS.TDRE 	Register Empty ?
				bne .3

				iny
				bne .2

.9				pla
				lda	#MLI.E.IO
				plp
				sec
				rts

.3				ply

				lda (ZPPtr1),y
.6				sta SSC.DATA-$8F,x
				iny
				cpy Len
				bne .1

				plp
				clc
				rts
*--------------------------------------
SSC.Read		php
				sei

				ldx DEVSLOTn08F

				ldy #0

.1				phy

				ldy #0

.2				lda SSC.STATUS-$8F,x
				bit #SSC.STATUS.nDCD	true when 0
				bne .9

				bit #SSC.STATUS.RDRF	incoming char?
				bne .3

				iny
				bne .2

				ply

				plp
				clc
				rts

.3				ply

				lda SSC.DATA-$8F,x
				sta IN.Buf,y
				iny

				bra .1

.9				lda	#MLI.E.IO
				plp
				sec
				rts
*--------------------------------------
MAN
SAVE usr/src/drv/pppssc.drv.s.e
LOAD usr/src/drv/pppssc.drv.s
ASM
