	.TITLE	INIEXT
	.MCALL	.PURGE	.LOOKU	.CSTAT	.READW
	.DSABL	GBL
	.GLOBL	ASC
	.GLOBL	AREA	ADDR
	.GLOBL	EXTAB	EXLEN	EXMSL	BUFF

SPACE	=	' 
TAB	=	11
EOL	=	15
EOL2	=	12
SEMI	=	':

.NEXT:
	CMPB	R0,#EOL
	BEQ	2$
	MOV	#2$,.EOL
1$:	CALL	GETC
	BR	1$
2$:	RETURN

.STR:
	MOV	#2$,.EOL
	MOV	R2,R4
	TST	(R4)+
	MOV	#EXMSL-1,R5
1$:	MOVB	R0,(R4)+
	CALL	GETC
	SOB	R5,1$

2$:	CLRB	@R4
	RETURN

.EXT:
	MOV	#IGNORE,.EOL
	MOV	#EXT,R4
	MOV	#3,R5
1$:	CALL	GETC
	CMPB	R0,#SEMI
	BEQ	2$
	CMPB	R0,#'a
	BLT	6$
	CMPB	R0,#'z
	BGT	6$
	BICB	#40,R0
6$:	MOVB	R0,(R4)+
	SOB	R5,1$
	BR	3$

2$:	MOVB	#SPACE,(R4)+
	SOB	R5,2$

3$:	MOV	R0,-(SP)
	MOV	R1,-(SP)
	MOV	#EXT,R1
	CALL	ASC
	MOV	R0,@R2
	MOV	(SP)+,R1
	MOV	(SP)+,R0
	BCS	IGNORE

4$:	CMPB	R0,#SEMI
	BEQ	5$
	CALL	GETC
	BR	4$

5$:	CALL	GETC
	CMPB	R0,#SPACE
	BEQ	5$
	RETURN

IGNORE:
	MOV	#-1,@R2
	CALL	.NEXT
	BR	.EXT

INIEXT::
	MOV	#EXITAB,R1
	MOV	#EXTAB,R2
	MOV	#EXLEN-2,R0
1$:	MOV	#-1,(R2)+
	ADD	#EXMSL,R2
	SOB	R0,1$

2$:	MOV	R2,R0
3$:	MOVB	(R1)+,(R0)+
	BNE	3$
	ADD	#EXMSL+2,R2
	COMB	#0
	BNE	2$

	.PURGE	#0
	.LOOKU	#AREA,#0,#EXFIL
	BCS	4$

	.CSTAT	#AREA,#0,#ADDR
	CLR	ADDR
	TST	ADDR+4
	BNE	READ
4$:	RETURN

READ:	MOV	#-1,R1
	MOV	#EXTAB,R2
	MOV	#EXLEN-2,R3

1$:	CALL	.EXT
	CALL	.STR
	CALL	.NEXT
	ADD	#EXMSL+2,R2
	SOB	R3,1$
	RETURN

JEOF:	TST	(SP)+
	MOV	#-1,@R2
	RETURN

GETC:	CMP	R1,#BUFF+1000
	BLO	1$
	CMP	ADDR,ADDR+4
	BEQ	2$
	MOV	#BUFF,R1
	.READW	#AREA,#0,R1,#400,ADDR
	BCS	JEOF
	INC	ADDR
1$:	MOVB	(R1)+,R0
	BNE	3$
2$:	TST	(SP)+
	BR	JEOF
3$:	CMPB	R0,#EOL2
	BEQ	GETC
	CMPB	R0,#EOL
	BNE	4$
	TST	(SP)+
.EOL	=	. + 2
	JMP	@#0
4$:	CMPB	R0,#TAB
	BNE	5$
	MOVB	#SPACE,R0
5$:	RETURN

EXFIL:	.RAD50	"SY PC    EXT"

EXITAB:	.RAD50	"SAV"
	.ASCIZ	"Run !"
	.RAD50	"COM"
	.ASCIZ	"@!"

EXT:	.ASCII	"EXT"
	.EVEN

	.END
                                                                                                                                                                                         