	.TITLE	VIEW
	.MCALL	.PURGE	.LOOKU	.CSTAT	.READW
	.DSABL	GBL
	.GLOBL	AREA	ADDR	BUFF	STR	TOP
	.GLOBL	.10	.8	..8	..16
	.GLOBL	RAD
	.GLOBL	INVIEW	HLINE
	.GLOBL	ENTRY	TTI
	.GLOBL	$0	$1	$PANEL	RDRAW
	.GLOBL	L.PRI	L.GOTO	PROMPT
	.GLOBL	UPACK	PRPACK	TOASZ	FFILE	FILE
	.GLOBL	BRKS

	.GLOBL	KILKEY	WINPKE	BREAK	DISP
	.GLOBL	UNCACHE

	.INCLU	"SCRMAC"
	.INCLU	"DIAMAC"

SWIDTH	=	20

LS	=	HEIGHT	- 2
LB	=	LS	* 2

EOL	=	15
EOL2	=	12
RUS	=	16
LAT	=	17
TAB	=	11

.MACRO	.LABEL	ADDR,CODE
	.WORD	ADDR-.,CODE
.ENDM

VIEW::
	CALL	UNCACHE
	MOV	#T.F4,R3
	CALL	UPACK
	CALL	PRPACK
	CALL	TOASZ
	CALL	FFILE

	.DIALOG	#D.RTF
	.PURGE	#0
	.LOOKU	#AREA,#0,#FILE
	BCC	2$
	.DIALOG	#D.VFNF
1$:	.WRES
	CALL	L.GOTO
	.WSCUR
	MOV	$PANEL,R5
	CALL	KILKEY
	JMP	TTI

2$:	.CSTAT	#AREA,#0,#ADDR

3$:	CLRB	FL.RL
	MOV	#2,TYPE
	MOV	#1$,.ERR

	CLR	FP0
	CLR	FP0+2

	MOV	#-1,R0
	MOV	R0,ADDR
	MOV	R0,ADDR+2

	CALL	.CDTYPE

	MOV	#WIDTH,R0
	MOV	BP0,R1
4$:	CMPB	(R1)+,#EOL
	BNE	5$
	CLR	TYPE
	CALL	.CDTYPE
	BR	6$

5$:	SOB	R0,4$
6$:	MOVB	#-1,REDUMP

	MOV	#DONE,.ERR
	.WRES

	MOV	#2,INVIEW
	CALL	HLINE

	CALL	GOTO

	.WATTR	#^B1000
	.WCCLR	#0,#0,#WIDTH
	.WPUT	#T.VIEW,#19.,#0,#5
	.WPUT	#PROMPT,#25.,#0,#3
	.WPUT	#T.COL,#28.,#0,#1
	MOV	#T.F4,R0
	MOV	R0,R1
7$:	TSTB	(R1)+
	BNE	7$
	SUB	R0,R1
	DEC	R1
	.WPUT	R0,#29.,#0,R1

	MOV	#STR,R1
	MOV	#5,R3
	MOV	ADDR+4,R0
	CALL	.10
	.WPUT	R1,#58.,#0,R3
	.WPUT	#T.BLO,#64.,#0,#6

DTYPE:
;  Ascii View: MZ0:MYFILE.MAC			; 1.00
;  Alternative text view: MZ0:MYFILE.MAC	; 1.01
;012345678901234567890123456789

	.WATTR	#^B1000
	MOV	TYPE,R0
	BNE	1$
	MOV	KOI,R1
	.WPUT	P.KOI(R1),#2.,#0,#11.
	BR	2$
1$:	.WCCLR	#2.,#0,#11.
2$:	.WPUT	P.TYPE(R0),#13.,#0,#5.

INKEY:	MOV	ADDR+4,R3
	BNE	1$
	MOV	#100.,R0
	BR	2$

1$:	CLR	R0
	MOV	FP2,R1
	MUL	#100.,R1
	DIV	R3,R0
	BEQ	2$
	CMP	SP1,BP.EOF
	BHIS	2$
	DEC	R0

2$:	.WATTR	#^B1000
	MOV	#3,R3
	MOV	#T.PER,R1
	CALL	.10
	.WPUT	R1,#75.,#0,#4

	;CALL	OUTPTRS
	;CALL	KILKEY
	CALL	DUMP
	CALL	WINPKEY
	JSR	R0,DISP
	.LABEL	DOWN	,215
	.LABEL	UP	,214
	.LABEL	PGDN	,217
	.LABEL	PGUP	,216

	.LABEL	END	,215!40
	.LABEL	END	,217!40
	.LABEL	HOME	,214!40
	.LABEL	HOME	,216!40
	.LABEL	SEARCH	,207
	.LABEL	.SEARCH	,207!40
	.LABEL	DONE	,212
	.LABEL	DONE	,33

	.LABEL	CH.RL	,211

	.LABEL	CDTYPE	,202
	.LABEL	CDTYPE	,203
	.LABEL	CDTYPE	,204
	.LABEL	CDTYPE	,205
	.LABEL	CDTYPE	,206

	.LABEL	VIEWER	,210
	.WORD
	BR	INKEY

DOWN:	CMP	SP1,BP.EOF
	BHIS	2$
	CMP	SP1,BP2
	BNE	1$
	CALL	SWD
	BCS	2$

1$:	MOV	#HEIGHT,R3
	MOV	SP1,R4
	CALL	LINE

	MOV	.WIDTH,R0
	ADD	R0,SP0
	ADD	R0,SP1
	.WUP
2$:	BR	INKEY

UP:	CMP	SP0,BP.BOF
	BEQ	2$
	CMP	SP0,BP0
	BNE	1$
	CALL	SWU
	BCS	2$

1$:	MOV	.WIDTH,R0
	SUB	R0,SP0
	SUB	R0,SP1

	MOV	#HEIGHT,R3
	MOV	SP0,R4
	CALL	LINE
	.WDOWN
2$:	BR	..INKEY

PGDN:	MOVB	#LS-2,COUNT

1$:	CMP	SP1,BP.EOF
	BHIS	3$
	CMP	SP1,BP2
	BNE	2$
	CALL	SWD
	BCS	3$

2$:	MOV	.WIDTH,R0
	ADD	R0,SP0
	ADD	R0,SP1
	INCB	REDUMP

	DECB	COUNT
	BNE	1$

3$:	BR	..INKEY

PGUP:	MOVB	#LS-2,COUNT

1$:	CMP	SP0,BP.BOF
	BEQ	3$
	CMP	SP0,BP0
	BNE	2$
	CALL	SWU
	BCS	3$

2$:	MOV	.WIDTH,R0
	SUB	R0,SP0
	SUB	R0,SP1
	INCB	REDUMP

	DECB	COUNT
	BNE	1$

3$:
..INKEY:
	JMP	INKEY

END:	CLRB	FL.RL
	MOV	ADDR+4,FP0
	CLR	FP0+2
	MOV	ADDR+4,FP2
	CLR	FP2+2
	MOVB	#-1,REDUMP
	CLR	BP.BOF

	MOV	BP2,R0
	MOV	R0,BP
	MOV	R0,BP.EOF
	MOV	R0,SP1
	SUB	LS.WIDTH,R0
	MOV	R0,SP0

	MOV	#LB,R5
1$:	CALL	RLU
	SOB	R5,1$

	MOV	FP0,FP1
	MOV	FP0+2,FP1+2

	MOV	#LB,R5
2$:	CALL	RLU
	SOB	R5,2$

	MOV	BP.BOF,R0
	SUB	SP0,R0
	BLOS	3$
	ADD	R0,SP0
	ADD	R0,SP1
3$:	BR	.INKEY

HOME:	CLRB	FL.RL
	CLR	FP0
	CLR	FP0+2
	CLR	FP2
	CLR	FP2+2

	MOV	#-1,R0
	MOVB	R0,REDUMP
	MOV	R0,BP.EOF

	MOV	TOP,R0
	MOV	R0,BP
	MOV	R0,BP.BOF
	MOV	R0,SP0
	ADD	LS.WIDTH,R0
	MOV	R0,SP1

	CALL	RBD
.INKEY:	JMP	INKEY

SEARCH:	.DIALOG	#D.STS
	TST	R1
	BEQ	.RET
.SEARCH:
	MOV	#L.S,R1
	TSTB	@R1
	BNE	CNT
.RET:	JMP	RET

CNT:	CALL	BRKS
	SUB	#T.F3-2,R0

	MOV	#15.,R1
	CMP	R0,R1
	BLE	1$
	MOV	R0,R1
1$:	MOV	R1,.SF

	MOV	#27.,R1
	CMP	R0,R1
	BLE	2$
	MOV	R0,R1
2$:	MOV	R1,.CFTS

	.DIALOG	#D.SF

	MOV	FP0,.FP
	MOV	FP0+2,.FP+2
	MOV	BP.BOF,.BP.BOF
	MOV	BP.EOF,.BP.EOF
	MOV	SP0,.SP0

	MOV	#NFND,.ERR

CMPLIN:	TSTB	BREAK
	BNE	NFND
	CMP	SP0,BP.EOF
	BHIS	NFND
	CMP	SP1,BP2
	BNE	1$
	CMP	SP1,BP.EOF
	BHIS	1$
	CALL	SWD
	BCC	1$
	TSTB	@R2
	BEQ	FND
	BR	NFND

1$:	MOV	.WIDTH,R0
	ADD	R0,SP0
	ADD	R0,SP1

	MOV	SP0,R4
	CMP	R4,BP.EOF
	BHIS	NFND

	CALL	CRESTR
	MOV	#WIDTH,R0
	MOV	#STR,R1

2$:	MOV	#L.S,R2
3$:	TSTB	@R2
	BEQ	FND
	MOVB	(R1)+,R3
	TST	TYPE
	BNE	4$
	CMPB	R3,#EOL
	BEQ	CMPLIN

4$:	CMPB	R3,#'a
	BLO	5$
	CMPB	R3,#'z
	BHI	5$
	BICB	#40,R3
5$:	CMPB	R3,(R2)+
	BNE	6$
	SOB	R0,3$
	TSTB	@R2
	BEQ	FND
	BR	CMPLIN
6$:	SOB	R0,2$
	BR	CMPLIN

FND:	CALL	UNL
	SUB	#STR,R1
	MOV	S.S+6,R0
	SUB	R0,R1
	.PUSH	R1
	.PUSH	#1
	.PUSH	R0
	MOVB	#-1,REDUMP
	CALL	DUMP
	.WBRIT
	BR	RET

NFND:	CALL	UNL
	TSTB	BREAK
	BNE	1$
	.DIALOG	#D.CFTS

1$:	CALL	KILKEY

	MOV	.FP,FP0
	MOV	.FP+2,FP0+2
	MOV	.FP,FP2
	MOV	.FP+2,FP2+2
	MOV	.BP.BOF,BP.BOF
	MOV	.BP.EOF,BP.EOF

	MOV	BP.BOF,R0
	BNE	2$
	MOV	BP0,R0
2$:	MOV	R0,BP

	MOV	.SP0,R0
	MOV	R0,SP0
	ADD	LS.WIDTH,R0
	MOV	R0,SP1

	CALL	RBD

RET:	CLRB	BREAK
	CALL	GOTO
	JMP	INKEY

UNL:	MOV	#DONE,.ERR
	.WRES
	RETURN

DONE:	.WRUL
	INCB	$0+RDRAW
	INCB	$1+RDRAW

	CLR	INVIEW
	CALL	HLINE
	CALL	L.PRI
	CALL	L.GOTO
	.WSCUR
	CALL	KILKEY
	JMP	ENTRY

GOTO:	.WGCUR	#0,#HEIGHT-1
	.WHCUR
	RETURN

CRESTR:	CLR	R0
	MOV	#STR,R1
	MOV	.WIDTH,R2

	CMP	R4,BP.EOF
	BHIS	5$
	TST	TYPE
	BNE	.CRESTR

1$:	CMPB	@R4,#EOL
	BEQ	5$
	CMPB	@R4,#TAB
	BNE	3$
2$:	MOVB	#' ,(R1)+
	INC	R0
	DEC	R2
	BEQ	4$
	BIT	#7,R0
	BNE	2$
	INC	R4
	BR	1$

3$:	MOVB	(R4)+,(R1)+
	INC	R0
	SOB	R2,1$
4$:	DEC	R0
	SEC
	RETURN

5$:	MOVB	#EOL,@R1
	CLC
	RETURN

.CRESTR:
	MOV	R3,-(SP)
	MOV	R5,-(SP)

	MOV	BP.BOF,R2
	BNE	1$
	MOV	BP0,R2
1$:	NEG	R2
	ADD	R4,R2

	MOV	FP0+2,R5
	ADD	R2,R5
	MOV	R5,R0
	ASR	R0
	SWAB	R0
	BIC	#^C377,R0
	ADD	FP0,R0
	MOV	#3,R3
	CALL	..8
	ADD	R3,R1
	MOVB	#':,(R1)+
	MOV	R5,R0
	CALL	..8
	ADD	R3,R1

	MOVB	#244,(R1)+

	ADD	TYPE,PC
	.WORD
	BR	TWORD
	BR	TBYTE
	BR	TRAD50
	BR	THEX

TWORD:	MOV	#SWIDTH/2,R5
	MOV	#6,R3
1$:	MOV	(R4)+,R0
	CALL	..8
	ADD	R3,R1
	MOVB	#' ,(R1)+
	SOB	R5,1$
	BR	TCNT

TBYTE:	MOV	#SWIDTH/2,R5
	MOV	#3,R3
1$:	MOVB	(R4)+,R0
	BIC	#^C377,R0
	CALL	..8
	ADD	R3,R1
	MOVB	(R4)+,R0
	BIC	#^C377,R0
	CALL	..8
	ADD	R3,R1
	MOVB	#' ,(R1)+
	SOB	R5,1$
	BR	TCNT

TRAD50:	MOV	#SWIDTH/2,R5
1$:	MOVB	#' ,(R1)+
	MOV	(R4)+,R0
	CALL	RAD
	MOV	#3,R3
	ADD	R3,R1
2$:	MOVB	#' ,(R1)+
	SOB	R3,2$
	SOB	R5,1$
	BR	TCNT

THEX:	MOVB	#' ,(R1)+
	MOV	#SWIDTH/4,R5
1$:	MOV	#4,R3
2$:	MOV	R3,-(SP)
	MOV	#2,R3
	MOVB	(R4)+,R0
	CALL	..16
	ADD	R3,R1
	MOV	(SP)+,R3
	MOVB	#' ,(R1)+
	SOB	R3,2$
	MOVB	#267,(R1)+
	MOVB	#' ,(R1)+
	SOB	R5,1$
	DEC	R1

TCNT:	SUB	#SWIDTH,R4

	MOVB	#244,-1(R1)

	MOV	#SWIDTH,R0
1$:	MOVB	(R4)+,(R1)+
	SOB	R0,1$

	MOV	(SP)+,R5
	MOV	(SP)+,R3

	MOV	#WIDTH,R0
	SEC
	RETURN

LINE:	CALL	CRESTR
OUTSTR:	BCC	2$
	CMPB	STR,#EOL
	BEQ	2$
	.WATTR	#^B0110
	.WPUT	#STR,#0,R3,R0
	CMP	R0,#WIDTH
	BEQ	1$
	.WATTR	#^B0111
	.WPUT	#T.CONT,R0,R3,#1
1$:	RETURN

2$:	TST	R0
	BNE	3$
	INC	R0
	MOVB	#' ,STR
3$:	.WATTR	#^B0110
	.WPUT	#STR,#0,R3,R0
	.WCLRE
	RETURN

DUMP:	TSTB	REDUMP
	BEQ	2$
	CLRB	REDUMP
	CLR	R3
	MOV	SP0,R4
	MOV	#LS,R5
1$:	INC	R3
	MOV	R4,-(SP)
	CALL	LINE
	MOV	(SP)+,R4
	ADD	.WIDTH,R4
	SOB	R5,1$
2$:	RETURN

RFP0:	CMP	FP0,ADDR
	BNE	1$
	RETURN
1$:	MOV	FP0,ADDR
	MOV	FP0,FP
	MOV	ADDR+2,ADDR+6
	MOV	#BUFF+1000,ADDR+10
	MOV	#BUFF,ADDR+12
	BR	RFP

RFP2:	CMP	FP2,ADDR+2
	BNE	1$
	RETURN
1$:	MOV	FP2,ADDR+2
	MOV	FP2,FP
	MOV	ADDR,ADDR+6
	MOV	#BUFF,ADDR+10
	MOV	#BUFF+1000,ADDR+12

RFP:	CMP	FP,ADDR+6
	BNE	2$
	MOV	#400,R0
	MOV	R1,-(SP)
	MOV	R2,-(SP)
	MOV	ADDR+10,R1
	MOV	ADDR+12,R2
1$:	MOV	(R1)+,(R2)+
	SOB	R0,1$
	MOV	(SP)+,R2
	MOV	(SP)+,R1
	RETURN

2$:	TSTB	BREAK
	BNE	4$
	.READW	#AREA,#0,ADDR+12,#400,FP
	BCS	3$
	RETURN

3$:	MOV	R1,-(SP)
	.DIALOG	#D.VRE
	DEC	R1
	BNE	4$
	MOV	(SP)+,R1
	BR	RFP

4$:	MOV	#1000,SP
.ERR	=	. + 2
	JMP	@#0

GETCD:	MOV	FP2+2,R1
	ADD	#BUFF+1000,R1

1$:	CMP	FP2,ADDR+4
	BEQ	4$

	CALL	RFP2

	MOVB	(R1)+,R0

	CMP	R1,#BUFF+2000
	BNE	2$
	MOV	#BUFF+1000,R1
	INC	FP2

2$:	TST	TYPE
	BNE	3$
	TSTB	R0
	BEQ	1$
	CMPB	R0,#EOL2
	BEQ	1$
	CALL	C.RLD
	BCS	1$

3$:	SUB	#BUFF+1000,R1
	MOV	R1,FP2+2
	RETURN

4$:	MOVB	#EOL,R0
	CMP	BP.EOF,#-1
	BNE	3$
	MOV	BP,BP.EOF
	SUB	.WIDTH,BP.EOF
	BR	3$

GETCU:	MOV	FP0+2,R1
	ADD	#BUFF,R1

1$:	CMP	R1,#BUFF
	BNE	2$
	TST	FP0
	BEQ	4$
	DEC	FP0
	MOV	#BUFF+1000,R1

2$:	CALL	RFP0

	MOVB	-(R1),R0

	TST	TYPE
	BNE	3$

	TSTB	R0
	BEQ	1$
	CMPB	R0,#EOL2
	BEQ	1$
	CALL	C.RLU
	BCS	1$

3$:	SUB	#BUFF,R1
	MOV	R1,FP0+2
	RETURN

4$:	MOVB	#EOL,R0
	TST	BP.BOF
	BNE	3$
	MOV	BP,BP.BOF
	BR	3$

C.RLD:	ADD	KOI,PC
	BR	KOI78A
	BR	KOI72
	BR	ALTER
KOI78A:	CMPB	R0,#RUS
	BNE	1$
	MOVB	#-1,FL.RL
	BR	R.SEC

1$:	CMPB	R0,#LAT
	BNE	CNV.RL
	CLRB	FL.RL
	BR	R.SEC

C.RLU:	ADD	KOI,PC
	BR	KOI78B
	BR	KOI72
	BR	ALTER
KOI78B:	CMPB	R0,#RUS
	BEQ	1$
	CMPB	R0,#LAT
	BNE	CNV.RL
1$:	COMB	FL.RL
R.SEC:	SEC
	RETURN

CNV.RL:	TSTB	FL.RL
	BEQ	R.CLC
	BITB	#100,R0
	BEQ	R.CLC
BISB2:	BISB	#200,R0
R.CLC:	CLC
	RETURN

KOI72:	BITB	#40,R0
	BEQ	R.CLC
	BITB	#100,R0
	BEQ	R.CLC
	BR	BISB2

ALTER:	BIC	#^C377,R0
	MOVB	ALTAB(R0),R0
	BR	R.CLC

RLD:	MOV	.WIDTH,R4
	MOV	BP,R3
	ADD	R4,BP
	TST	TYPE
	BNE	.RLD

1$:	CALL	GETCD
	MOVB	R0,(R3)+
	CMPB	R0,#EOL
	BEQ	3$
	SOB	R4,1$
2$:	CALL	GETCD
	CMPB	R0,#EOL
	BNE	2$
3$:	RETURN

.RLD:	CALL	GETCD
	MOVB	R0,(R3)+
	SOB	R4,.RLD
	RETURN

RLU:	MOV	.WIDTH,R4
	MOV	BP,R3
	SUB	R4,BP
	TST	TYPE
	BNE	.RLU

	MOVB	#EOL,@BP
	CALL	GETCU
1$:	CALL	GETCU
	CMPB	R0,#EOL
	BNE	3$
	MOV	FP0,R0
	ADD	FP0+2,R0
	BEQ	2$
	INC	FP0+2
2$:	RETURN

3$:	MOV	.WIDTH,R4
	MOV	BP,R3
	ADD	R4,R3
	MOV	R3,R2
	TSTB	-(R2)
	DEC	R4
4$:	MOVB	-(R2),-(R3)
	SOB	R4,4$
	MOVB	R0,@R2
	BR	1$

.RLU:	CALL	GETCU
	MOVB	R0,-(R3)
	SOB	R4,.RLU
	RETURN

SWD:	CMP	FP2,ADDR+4
	BEQ	3$

	MOV	LB.WIDTH,R0
	SUB	R0,SP0
	SUB	R0,SP1

	MOV	BP1,R1
	MOV	BP0,R2
1$:	MOVB	(R1)+,(R2)+
	SOB	R0,1$

	CLR	BP.BOF

	MOV	FP1,FP0
	MOV	FP1+2,FP0+2

	MOV	FP2,FP1
	MOV	FP2+2,FP1+2

	MOV	BP1,BP

	MOV	#LB,R5
2$:	CALL	RLD
	SOB	R5,2$

	CLC
	RETURN

3$:	SEC
	RETURN

SWU:	MOV	FP0,R0
	ADD	FP0+2,R0
	BEQ	3$

	MOV	LB.WIDTH,R0
	ADD	R0,SP0
	ADD	R0,SP1

	MOV	BP0,R1
	MOV	BP1,R2
1$:	MOVB	(R1)+,(R2)+
	SOB	R0,1$

	MOV	#-1,BP.EOF

	MOV	FP1,FP2
	MOV	FP1+2,FP2+2

	MOV	FP0,FP1
	MOV	FP0+2,FP1+2

	MOV	BP1,BP

	MOV	#LB,R5
2$:	CALL	RLU
	SOB	R5,2$

	CLC
	RETURN

3$:	SEC
	RETURN

RBD:	MOV	#LB,R5
1$:	CALL	RLD
	SOB	R5,1$

	MOV	FP2,FP1
	MOV	FP2+2,FP1+2

	MOV	#LB,R5
2$:	CALL	RLD
	SOB	R5,2$
	RETURN

.REM_OUTPTRS:
	.WATTR	#^B0111
	MOV	#4,R3
	MOV	#T.NUM,R1
	MOV	FP0,R0
	CALL	.8
BBXX	=	9.
	.WPUT	R1,#BBXX,#0,R3
	MOV	FP0+2,R0
	CALL	.8
BBXX	=	BBXX + 5
	.WPUT	R1,#BBXX,#0,R3

	MOV	FP1,R0
	CALL	.8
BBXX	=	BBXX + 8.
	.WPUT	R1,#BBXX,#0,R3

	MOV	FP1+2,R0
	CALL	.8
BBXX	=	BBXX + 5.
	.WPUT	R1,#BBXX,#0,R3

	MOV	FP2,R0
	CALL	.8
BBXX	=	BBXX + 8.
	.WPUT	R1,#BBXX,#0,R3

	MOV	FP2+2,R0
	CALL	.8
BBXX	=	BBXX + 5.
	.WPUT	R1,#BBXX,#0,R3

	MOV	#6,R3
	MOV	BP.BOF,R0
	CALL	.8
BBXX	=	BBXX + 8.
	.WPUT	R1,#BBXX,#0,R3

	MOV	SP0,R0
	CALL	.8
BBXX	=	BBXX + 7.
	.WPUT	R1,#BBXX,#0,R3

	MOV	SP1,R0
	CALL	.8
BBXX	=	BBXX + 7.
	.WPUT	R1,#BBXX,#0,R3

	MOV	BP.EOF,R0
	CALL	.8
BBXX	=	BBXX + 7.
	.WPUT	R1,#BBXX,#0,R3
	RETURN_

CH.RL:	TST	TYPE
	BNE	...INKEY

	COMB	FL.RL

	MOV	#LB*WIDTH*2,R0
	MOV	TOP,R1
	MOVB	#200,R2
1$:	BITB	#100,@R1
	BEQ	2$

	MOVB	@R1,R3
	XOR	R2,R3
	MOVB	R3,@R1

2$:	INC	R1
	SOB	R0,1$
	BR	.REDUMP

CDTYPE:	BIC	#^C7,R0
	NEG	R0
	ADD	#6,R0
	ASL	R0
	CMP	R0,TYPE
	BNE	CONT
...INK:	JMP	INKEY

CONT:	TST	TYPE
	BEQ	1$
	TST	R0
	BEQ	1$
	MOV	R0,TYPE
	BR	.REDUMP

1$:	MOV	R0,TYPE
CHER:	CALL	.CDTYPE

.REDUM:	MOVB	#-1,REDUMP
	JMP	DTYPE

.CDTYP:	TST	TYPE
	BNE	1$
	MOV	#WIDTH,.WIDTH
	MOV	#LS*WIDTH,LS.WID
	MOV	#LB*WIDTH,LB.WID
	BR	2$

1$:	MOV	#SWIDTH,.WIDTH
	MOV	#LS*SWIDTH,LS.WID
	MOV	#LB*SWIDTH,LB.WID

2$:	MOV	#-1,BP.EOF

	BIC	#7,FP0+2
	MOV	FP0,FP2
	MOV	FP0+2,FP2+2

	MOV	TOP,R0
	MOV	R0,BP.BOF

	MOV	FP0,R1
	ADD	FP0+2,R1
	BEQ	3$
	CLR	BP.BOF

3$:	MOV	R0,SP0
	MOV	R0,BP
	MOV	R0,BP0
	ADD	LS.WIDTH,R0
	MOV	R0,SP1
	ADD	LS.WIDTH,R0
	MOV	R0,BP1
	ADD	LB.WIDTH,R0
	MOV	R0,BP2

	TST	TYPE
	BNE	5$
	MOV	FP0,R0
	ADD	FP0+2,R0
	BEQ	5$
4$:	CALL	GETCD
	CMPB	R0,#EOL
	BNE	4$
	MOV	FP2,FP0
	MOV	FP2+2,FP0+2
5$:	JMP	RBD

VIEWER:
	.DIALOG	#D.ER

	MOV	KOI,R2
	MOV	TYPE,R3
	BEQ	1$
	MOV	R3,R1
	ASR	R1
	ADD	#2,R1
	BR	2$

1$:	MOV	R2,R1
	ASR	R1

2$:	CALL	CURSOR

KEYIN:	CALL	WINPKEY
	JSR	R0,DISP
	.LABEL	V.UP	,214
	.LABEL	V.DOWN	,40
	.LABEL	V.DOWN	,215

	.LABEL	V.DONE	,33
	.LABEL	V.DONE	,212
	.LABEL	ENTER	,200
	.WORD
	BR	KEYIN

V.UP:	CALL	CURSOR
	DEC	R1
	BGE	.UD
	ADD	DY,R1
	BR	.UD

V.DOWN:	CALL	CURSOR
	INC	R1
	CMP	R1,DY
	BNE	.UD
	CLR	R1
.UD:	CALL	CURSOR
	BR	KEYIN

ENTER:	CMP	R1,#3
	BHIS	1$
	ASL	R1
	MOV	R1,KOI
	CLR	TYPE
	BR	2$

1$:	SUB	#2,R1
	ASL	R1
	MOV	R1,TYPE

2$:	CMP	R2,KOI
	BNE	3$
	CMP	R3,TYPE
	BEQ	V.DONE
3$:	CLRB	ING
	.WRES

	TST	TYPE
	BEQ	4$
	TST	R3
	BEQ	4$
	JMP	.REDUM
4$:	JMP	CHER

V.DONE:	CLRB	ING
	.WRES
	JMP	INKEY

CURSOR:	MOV	#7.,R0
	ADD	R1,R0
	.WSWAB	DIA.BX,R0,DX
	RETURN

Y0	=	5

D.ER:	.BYTE	^B1011,1
DX:	.WORD	15.
DY:	.WORD	7.
BY:	.WORD	Y0
	.WORD	TL.ER
	.WORD	V.KOI7
	.WORD	V.KOI2
	.WORD	V.ALT
	.WORD	V.WORD
	.WORD	V.BYTE
	.WORD	V.RAD
	.WORD	V.HEX
	.WORD
	.WORD

.WIDTH:	.WORD
LS.WID:	.WORD
LB.WID:	.WORD

FP:	.WORD	0,0
FP0:	.WORD	0,0
FP1:	.WORD	0,0
FP2:	.WORD	0,0
.FP:	.WORD	0,0

BP.BOF:	.WORD
BP.EOF:	.WORD
BP:	.WORD
BP0:	.WORD
BP1:	.WORD
BP2:	.WORD
.BP.BO:	.WORD
.BP.EO:	.WORD

SP0:	.WORD
SP1:	.WORD
.SP0:	.WORD

COUNT:	.BYTE
REDUMP:	.BYTE

KOI:	.WORD	0
P.KOI:	.WORD	T.K78	,T.K	,T.ALT

TYPE:	.WORD
P.TYPE:	.WORD	T.ASC	,T.WORD	,T.BYTE	,T.RAD	,T.HEX

T.K78:	.ASCII	"     KOI7/8"
T.K:	.ASCII	"     KOI7-2"
T.ALT:	.ASCII	"Alternative"

T.ASC:	.ASCII	" text"
T.WORD:	.ASCII	"Words"
T.BYTE:	.ASCII	"Bytes"
T.RAD:	.ASCII	"Rad50"
T.HEX:	.ASCII	"  Hex"
T.VIEW:	.ASCII	"view"
T.COL:	.BYTE	':
T.BLO:	.ASCII	"Blocks"
T.CONT:	.BYTE	204

FL.RL:	.BYTE
T.PER:	.ASCII	"123%"
;T.NUM:	.ASCII	"123456"

TL.ER:	.ASCIZ	" Viewer "
V.KOI7:	.ASCIZ	"KOI7/8"
V.KOI2:	.ASCIZ	"KOI7-2"
V.ALT:	.ASCIZ	"Alternative"
V.WORD:	.ASCIZ	"Words"
V.BYTE:	.ASCIZ	"Bytes"
V.RAD:	.ASCIZ	"Rad50"
V.HEX:	.ASCIZ	"Hex"
	.EVEN

ALTAB:	.INCLU	"ALTAB"

	.END
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               