	.TITLE	SELECT
	.DSABL	GBL
	.GLOBL	LINES	.LIN3
	.GLOBL	SCROL	OFFS	SEL	PTRS
	.GLOBL	LDEV	LSODEV	DEV
	.GLOBL	MODE	BAX	RDRAW	START
	.GLOBL	BRIEF	FULL
	.GLOBL	KEYIN	DOWN
	.GLOBL	CURSOR	O.R5
	.GLOBL	UNPACK	UPACK	MINI
	.GLOBL	FPUT

	.GLOBL	FUNC	FLAG
	.GLOBL	MASK	SCNMSK

	.INCLU	"SCRMAC"
	.INCLU	"DIAMAC"

SU:	.WORD	D.SEL	,D.UNSEL
SUM:	.WORD	D.SMAT	,D.USMAT
SUMR:	.WORD	MRK	,UNMRK

.ALT	= . + 2
GPL::	CLR	#0
	BR	GPLMI
GMI::	MOV	#2,.ALT

GPLMI:	MOV	.ALT,R1
	.DIALOG	SU(R1)
	TST	R1
	BEQ	2$
	MOV	.ALT,R0
	MOV	SUMR(R0),FUNC

	MOV	#T.F1+4,MASK
	CLR	FLAG
	CALL	SCNMSK
	TST	FLAG
	BNE	1$
	MOV	MASK,R1
	CALL	BRKS
	MOV	.ALT,R1
	.DIALOG	SUM(R1)
	BR	2$

1$:	INCB	RDRAW(R5)
2$:	JMP	KEYIN

MRK:	BIS	#1,(R2)
1$:	INC	FLAG
	RETURN

UNMRK	= .
	BIC	#1,(R2)
	BR	1$

INSERT::
	CALL	CURSOR
	CALL	UPACK
	CALL	UNPACK
	MOV	#MINI,R1

	MOV	#1,R0
	XOR	R0,(R2)
	BIT	R0,(R2)
	BEQ	1$
	.WATTR	#^B0111
1$:	MOV	OFFS(R5),R3
	MOV	BAX(R5),R0
	ADD	#2,R0

	CMPB	MODE(R5),#BRIEF
	BNE	2$

	CLR	R2
	DIV	#LINES,R2
	ADD	#2,R3

	.PUSH	R1
	MOV	R2,R1
	MUL	#13.,R1
	ADD	R1,R0
	.WPUT	,R0,R3,#10.
	BR	3$

2$:	ADD	#2,R3
	CALL	FPUT
3$:	CLR	O.R5
	JMP	DOWN

GSEL::	MOV	SEL(R5),R4
	ADD	#3*2,R4
	MOV	R4,R3
	TST	(R3)+
	CLR	(R4)

	MOV	PTRS(R5),R1
	MOV	(R5),R0
	BEQ	3$
1$:	MOV	(R1)+,R2
	BIT	#1,(R2)+
	BEQ	2$
	MOV	(R2)+,(R3)+
	MOV	(R2)+,(R3)+
	MOV	(R2),(R3)+
	INC	(R4)
2$:	SOB	R0,1$
3$:	RETURN

SSEL::	CMP	@DEV(R5),LDEV(R5)
	BNE	5$

	MOV	PTRS(R5),R1
	MOV	SEL(R5),R4
	ADD	#3*2,R4
	MOV	R4,R3
	MOV	(R4),R4
	BEQ	5$
	TST	(R3)+

	MOV	(R5),R0
	BEQ	5$
1$:	MOV	(R1)+,R2
	MOV	R0,-(SP)
	MOV	R3,-(SP)

	MOV	R4,R0
2$:	MOV	R2,-(SP)
	MOV	R3,-(SP)
	TST	(R2)+
	CMP	(R2)+,(R3)+
	BNE	3$
	CMP	(R2)+,(R3)+
	BNE	3$
	CMP	(R2),(R3)
	BNE	3$
	TST	(SP)+
	MOV	(SP)+,R2
	BIS	#1,(R2)
	BR	4$
3$:	MOV	(SP)+,R3
	ADD	#3*2,R3
	MOV	(SP)+,R2
	SOB	R0,2$

4$:	MOV	(SP)+,R3
	MOV	(SP)+,R0
	SOB	R0,1$

5$:	MOV	@DEV(R5),LDEV(R5)
	RETURN

GSCROFF::
	TST	START(R5)
	BNE	1$
	MOV	SCROL(R5),R0
	ADD	OFFS(R5),R0
	ASL	R0
	ADD	PTRS(R5),R0
	MOV	(R0),R0
	TST	(R0)+
	MOV	SEL(R5),R1
	MOV	(R0)+,(R1)+
	MOV	(R0)+,(R1)+
	MOV	(R0),(R1)
1$:	CLR	START(R5)
	RETURN

SSCROFF::
	CMP	@DEV(R5),LSODEV(R5)
	BEQ	SCAN
	CLR	SCROL(R5)
	CLR	OFFS(R5)
RET:	MOV	@DEV(R5),LSODEV(R5)
	RETURN
	
SCAN:	TST	(R5)
	BEQ	RET
	MOV	.LIN3,R4
	CLR	R1
	MOV	PTRS(R5),R0
1$:	MOV	(R0)+,R2
	TST	(R2)+
	MOV	SEL(R5),R3
	CMP	(R2)+,(R3)+
	BNE	2$
	CMP	(R2)+,(R3)+
	BNE	2$
	CMP	(R2),(R3)
	BNE	2$
	CALL	CORR
	BR	RET
2$:	INC	R1
	CMP	R1,(R5)
	BNE	1$

	MOV	SCROL(R5),R0
	ADD	OFFS(R5),R0
	CMP	R0,(R5)
	BLT	RET
	MOV	(R5),R0
	SUB	R4,R0
	BLE	9$
	MOV	R0,SCROL(R5)
	DEC	R4
	MOV	R4,OFFS(R5)
	BR	RET

9$:	CLR	SCROL(R5)
	MOV	(R5),OFFS(R5)
	DEC	OFFS(R5)
	BR	RET

CORR::
	MOV	.LIN3,R4
	MOV	SCROL(R5),R0
	CMP	R1,R0
	BLT	6$
	ADD	R4,R0
	CMP	R1,R0
	BGE	5$

	SUB	SCROL(R5),R1
4$:	MOV	R1,OFFS(R5)
	RETURN

5$:	MOV	R1,R0
	SUB	R4,R0
	INC	R0
	MOV	R0,SCROL(R5)
	SUB	R0,R1
	BR	4$

6$:	MOV	R1,SCROL(R5)
	CLR	OFFS(R5)
	RETURN

BRKS::	MOV	#T.F3,R0
	MOVB	#'",(R0)+
1$:	MOVB	(R1)+,(R0)+
	BNE	1$
	TSTB	-(R0)
	MOVB	#'",(R0)+
	CLRB	(R0)
	RETURN

	.END
                                                                                                                                                                                                                                                                                                                                                                                                