	.TITLE	DIALOG
	.DSABL	GBL
	.GLOBL	DISP
	.GLOBL	WINPKEY
	.GLOBL	BAX
	.GLOBL	INVIEW
	.GLOBL	L.GOTO
	.GLOBL	SYNTAX
	.GLOBL	COPY2
	.GLOBL	WHO
	.GLOBL	T.OWNER	T.PHO	T.ADR

	.INCLU	"SCRMAC"
	.INCLU	"DIAMAC"

.MACRO	.LABEL	ADDR,CODE
	.WORD	ADDR-.,CODE
.ENDM

DIALOG::
	.WHCUR
	MOV	R2,-(SP)
	MOV	R3,-(SP)
	MOV	R4,-(SP)

	MOVB	(R1)+,-(SP)
	.WATTR
	CLR	BX
	MOVB	(R1)+,FGET
	BGE	1$
	MOV	BAX(R5),BX
	MOV	#WIDTH/2,R0
	BR	2$
1$:	MOV	#WIDTH,R0
2$:	SUB	(R1),R0
	ASR	R0
	SUB	#4.,R0
	ADD	R0,BX
	MOV	(R1)+,DX
	ADD	#8.,DX
	MOV	(R1)+,DY
	ADD	#4.,DY
	MOV	(R1)+,BY

	MOV	BX,R0
	CMP	R0,#2
	BGE	3$
	MOV	#2,BX
	BR	4$

3$:	ADD	DX,R0
	SUB	#WIDTH-4,R0
	BLE	4$
	SUB	R0,BX
4$:

NOTGET	==	. + 2
	TST	#0
	BNE	.NOTGET
FGET	=	. + 2
	TSTB	#0
	BLE	YGET
ING	==	. + 2
	TSTB	#0
	BNE	NGET
YGET:	MOV	DX,R3
	ADD	#2,R3
	MOV	DY,R4
	INC	R4
	.WGET	BX,BY,R3,R4

.NOTGET:
	MOV	BY,R0
	MOV	DY,R4
3$:	.WCCLR	BX,R0,DX
	INC	R0
	SOB	R4,3$

	MOV	BX,R3
	ADD	DX,R3
	MOV	BY,R4
	INC	R4
	MOV	DY,R0
	DEC	R0
4$:	.WDARK	R3,R4,#2
	INC	R4
	SOB	R0,4$

	MOV	BX,R3
	ADD	#2,R3
	MOV	BY,R4
	ADD	DY,R4
	.WDARK	R3,R4,DX

NGET:	ADD	#3.,BX
	SUB	#8.,DX
	INC	BY
	SUB	#4.,DY

	TSTB	FGET
	BLE	.YGET
	TSTB	ING
	BNE	.NGET

.YGET:	MOV	BX,R3
	MOV	BY,R4

	.WPUT	#T0,R3,R4,#1
	INC	R3
	.WPUT	#TG,R3,R4,DX
	ADD	DX,R3
	.WPUT	#T1,R3,R4,#1

	INC	R4
	MOV	BX,R3
	MOV	R3,R2
	ADD	DX,R2
	INC	R2
	MOV	DY,R0
2$:	.WPUT	#TV,R3,R4,#1
	.WPUT	#TV,R2,R4,#1
	INC	R4
	SOB	R0,2$

	.WPUT	#T2,R3,R4,#1
	INC	R3
	.WPUT	#TG,R3,R4,DX
	ADD	DX,R3
	.WPUT	#T3,R3,R4,#1

.NGET:
ITEMS	=	. + 2
	CLRB	#0
	INC	BX
	MOV	BX,IBX
	INC	IBX
	MOV	BY,R4

4$:	MOV	(R1)+,R3
	BMI	1$
	BEQ	11$
	MOV	R3,.R3
	TSTB	FGET
	BLE	13$
	TSTB	ING
	BEQ	13$
	CMP	R3,#T.F1
	BEQ	12$
	CMP	R3,#T.F2
	BEQ	12$
	CMP	R3,#T.F3
	BEQ	12$
	CMP	R3,#T.F4
	BNE	2$
12$:	.WCCLR	BX,R4,DX
13$:	.PUSH	ATTR
	.PUSH	R3
5$:	TSTB	(R3)+
	BNE	5$
	MOV	R3,R2
	SUB	(SP),R2
	DEC	R2
	MOV	DX,R0
	SUB	R2,R0
	ASR	R0
	ADD	BX,R0
	TST	NOTGET
	BEQ	101$
.R3	=	. + 2
	CMP	#0,#T.OWNER
	BEQ	100$
	CMP	.R3,#T.PHO
	BEQ	100$
	CMP	.R3,#T.ADR
	BNE	101$
100$:	.WATTR	#^B1011
101$:	.WPUT	,R0,R4,R2
	.WATTR
	BR	2$
1$:	NEG	R3
	MOV	ITEMS,R0
	ASL	R0
	MOV	R3,LINES(R0)
	MOV	(R3)+,R0
	MOV	R0,-(SP)
3$:	TSTB	(R0)+
	BNE	3$
	SUB	(SP)+,R0
	DEC	R0
IBX	=	. + 2
	MOV	#0,(R3)+
	MOV	R4,(R3)+
	MOV	R0,(R3)+
	TST	(R3)+
	MOV	R0,(R3)
	INC	ITEMS
2$:	INC	R4
	BR	4$

11$:	TSTB	ITEMS
	BEQ	15$
	JMP	.LINES

15$:	MOV	(R1)+,R3
	BEQ	NMENU
 	CLR	R2
	MOV	#LEN,R0
6$:	.PUSH	R3

7$:	MOV	R3,-(SP)
	TSTB	(R3)+
	MOVB	(R3),CUT(R2)
8$:	CMPB	(R3)+,#' 
	BNE	8$
	INC	R2
	MOV	R3,(R0)
	SUB	(SP)+,(R0)+
	TSTB	(R3)
	BNE	7$
	MOV	R2,ITEMS
	CMPB	R2,#1
	BEQ	14$
	DEC	R3
14$:	SUB	(SP),R3
	MOV	DX,R0
	SUB	R3,R0
	ASR	R0
	ADD	BX,R0
	.WPUT	,R0,R4,R3

BHR::
NMENU:	MOV	ITEMS,R1
	BEQ	.RET

	MOV	#X,R2
	MOV	#LEN,R3
1$:	MOV	R0,(R2)+
	ADD	(R3)+,R0
	SOB	R1,1$
CURON:	CALL	CURSOR
KEYIN:	CALL	WINPKEY
	JSR	R0,DISP
	.LABEL	LEFT	,216
	.LABEL	LEFT	,11!20
	.LABEL	RIGHT	,217
	.LABEL	RIGHT	,11
	.LABEL	RIGHT	,40
	.LABEL	DONE	,33
	.LABEL	DONE	,212
	.LABEL	ENTER	,200
	.WORD
	BIC	#40,R0
	CLR	R2
1$:	CMPB	R0,CUT(R2)
	BEQ	2$
	INC	R2
	CMP	R2,ITEMS
	BNE	1$
	BR	KEYIN
2$:	CALL	CURSOR
	MOV	R2,R1
	CALL	CURSOR
	BR	ENTER

LEFT:	CALL	CURSOR
1$:	DEC	R1
	BGE	CURON
	MOV	ITEMS,R1
	BR	1$
RIGHT:	CALL	CURSOR
	INC	R1
	CMP	R1,ITEMS
	BNE	CURON
	CLR	R1
	BR	CURON

ENTER:	INC	R1
	BR	RET
DONE:	CLR	R1
RET:	.WRES
.RET:	TSTB	FGET
	BNE	1$
	TSTB	ING
	BNE	1$
	.WSCUR
1$:	MOV	(SP)+,R4
	MOV	(SP)+,R3
	MOV	(SP)+,R2
	RETURN

CURSOR:	MOV	R1,R0
	ASL	R0
	.WINV	X(R0),R4,LEN(R0)
	RETURN

.LINES:
$BX	=	2
$BY	=	4
$LEN	=	6
$MLEN	=	10
$X	=	12
$SYN	=	14
$ERR	=	16

	.WATTR	#^B0111

	MOV	ITEMS,R2
	MOV	#LINES,R1
1$:	MOV	(R1)+,R4
	CALL	PRI
	SOB	R2,1$

	CLR	NL
	MOV	LINES,R4

	.WSCUR
	.WATTR	#^B0011

	CALL	POS
2$:	CALL	WINPKEY
	TSTB	R0
	BEQ	2$
	CALL	WHO
	BCC	3$
	MOV	R0,-(SP)
	CALL	PRI
	MOV	(SP)+,R0
	BR	TTI

3$:	CLR	$LEN(R4)
	CLR	$X(R4)
	CLRB	@(R4)
	BR	LETTER

.POS:	CALL	POS
$KEYIN:	CALL	WINPKEY
TTI:	JSR	R0,DISP
	.LABEL	$RIGHT	,217
	.LABEL	$LEFT	,216
	.LABEL	$BACK	,230
	.LABEL	$S.U	,'u
	.LABEL	$S.K	,'k
	.LABEL	$TAB	,11
	.LABEL	$TAB	,215
	.LABEL	$STAB	,11!20
	.LABEL	$STAB	,214
	.LABEL	$ENTER	,200
	.LABEL	$DONE	,33
	.LABEL	$DONE	,212
	.WORD
	CALL	WHO
	BCS	$KEYIN

LETTER:	MOV	$MLEN(R4),R1
	SUB	$LEN(R4),R1
	DEC	R1
	BEQ	$KEYIN

	TSTB	R0
	BMI	$KEYIN
	TSTB	INVIEW
	BNE	1$
	CMP	R4,#S.EDIT
	BEQ	1$

	CMP	R4,#S.F2
	BEQ	4$
	CMPB	R0,#'%
	BEQ	1$

4$:	CMPB	R0,#':
	BEQ	1$
	CMPB	R0,#'.
	BEQ	1$
	CMPB	R0,#'*
	BEQ	1$
	CMPB	R0,#'0
	BLT	$KEYIN
	CMPB	R0,#'9
	BLE	1$
	CMPB	R0,#'A
	BLT	$KEYIN
	CMPB	R0,#'Z
	BGT	$KEYIN

1$:	MOV	(R4),R1
	MOV	R1,R3
	ADD	$X(R4),R1
	INC	R3
	ADD	$LEN(R4),R3
	MOV	R3,R2
	INC	R3
2$:	CMP	R1,R2
	BEQ	3$
	MOVB	-(R2),-(R3)
	BR	2$
3$:	MOVB	R0,(R1)
	INC	$X(R4)
	INC	$LEN(R4)
	CALL	PRI
	BR	.POS

$STAB:	DEC	NL
	BGE	.TAB
	MOV	ITEMS,NL
	BR	$STAB

$TAB:	INC	NL
	CMP	NL,ITEMS
	BNE	.TAB
	CLR	NL
.TAB:	MOV	NL,R4
	ASL	R4
	MOV	LINES(R4),R4
	BR	.POS

$LEFT:	DEC	$X(R4)
	BGE	.POS
	CLR	$X(R4)
	BR	.POS

$RIGHT:	CMP	$X(R4),$LEN(R4)
	BEQ	$KEYIN
	INC	$X(R4)
	JMP	.POS

$S.U:	TST	$X(R4)
	BNE	1$
	BR	.KEYIN

1$:	MOV	(R4),R1
	MOV	R1,R2
	ADD	$X(R4),R2
2$:	MOVB	(R2)+,(R1)+
	BNE	2$
	SUB	$X(R4),$LEN(R4)
	CLR	$X(R4)

	CALL	PRI
	JMP	.POS

$S.K:	MOV	$X(R4),$LEN(R4)
	MOV	(R4),R0
	ADD	$LEN(R4),R0
	CLRB	(R0)
	CALL	PRI
.KEYIN:	JMP	$KEYIN

$BACK:	TST	$X(R4)
	BEQ	.KEYIN

	DEC	$X(R4)
	DEC	$LEN(R4)
	MOV	(R4),R1
	ADD	$X(R4),R1
	MOV	R1,R2
	INC	R2
1$:	MOVB	(R2)+,(R1)+
	BNE	1$

	CALL	PRI
	JMP	.POS

$DONE:	CLR	R1
	BR	..RET

$ENTER:	MOV	R4,-(SP)
	MOV	ITEMS,R2
	MOV	#LINES,R1
1$:	MOV	(R1)+,R4
	TST	$ERR(R4)
	BNE	2$
	SOB	R2,1$
	MOV	(SP)+,R4
	BR	3$

2$:	MOV	(SP)+,R4
	JMP	$KEYIN

3$:	MOV	#1,R1
..RET:	TSTB	FGET
	BGT	1$
	CALL	L.GOTO
	BR	2$
1$:	.WHCUR
2$:	JMP	RET

POS:	MOV	$BX(R4),R0
	ADD	$X(R4),R0
	.WGCUR	R0,$BY(R4)
	RETURN

PRI:	TST	$LEN(R4)
	BEQ	1$
	MOV	R4,R0
	.WPUT	(R0)+,(R0)+,(R0)+,(R0)

1$:	.WATTR	#^B0011
	TSTB	INVIEW
	BNE	2$
	CMP	R4,#S.EDIT
	BEQ	2$
	MOV	R1,-(SP)
	MOV	R2,-(SP)
	MOV	R4,-(SP)
	MOV	(R4),R1
	MOV	$SYN(R4),R2
	CLR	$ERR(R4)
	CALL	SYNTAX
	MOV	(SP)+,R4
	MOV	(SP)+,R2
	MOV	(SP)+,R1
	BCC	2$
	INC	$ERR(R4)
	.WATTR	#^B0111
2$:	.PUSH	$BX(R4)
	ADD	$LEN(R4),(SP)
	.PUSH	$BY(R4)
	.PUSH	$MLEN(R4)
	SUB	$LEN(R4),(SP)
	.WCCLR
	.WATTR	#^B0011
	RETURN

X:	.BLKW	4
LEN:	.BLKW	4
CUT:	.BLKB	4

NL:	.WORD
LINES:	.BLKW	2

DIA.BX::
BX:	.WORD
BY:	.WORD
DX:	.WORD
DY:	.WORD

T0:	.BYTE	250
T1:	.BYTE	277
T2:	.BYTE	266
T3:	.BYTE	274
TG:	.REPT	57.
		.BYTE	272
	.ENDR
TV:	.BYTE	244
	.EVEN

	.END
                                                                                                                                                                                                                                                                                                                                                                        