	.TITLE	ON.OFF
	.MCALL	.DSTAT	.PRINT
	.DSABL	GBL
	.GLOBL	CTRLO
	.GLOBL	GSCROFF
	.GLOBL	SCROL	OFFS	LSODEV
	.GLOBL	DEV	MODE	TSORT	SEL
	.GLOBL	$PANEL
	.GLOBL	AREA
	.GLOBL	SL.SLEN
	.GLOBL	L.EDIT
	.GLOBL	AUTORR	CLOCK	X.PAL	TB.PAL

.SBTTL Constants definition

SYS$PTR	=	54
$E16LST	=	316
$PRINT	=	22

$IN.PR	=	42
$RT.PR	=	144
$VARS	=	146
$SL	=	254

.SBTTL Handler on/off

;----------------------------------------------
; Device status and load address from PC.SYS
; R0 - LST16 mon. table addr.	

TSTLOAD:
	.DSTAT	#AREA,#PCNAME
	BCS	1$
	MOV	@#SYS$PTR,R0
	ADD	$E16LST(R0),R0		; LST16 address
	MOV	AREA+4,R1
	BNE	1$
	SEC
1$:	RETURN
;----------------------------------------------
ON.HND::				; On-line
	CALL	TSTLOAD
	BCS	3$

	MOV	R1,R3
	ADD	#$IN.PR,R3
	SUB	R0,R3

	MOV	R1,R2
	ADD	#$VARS,R2
	MOV	R2,.VARS

	ADD	#-$VARS+$SL,R2
	MOV	R2,SL.PTR
	SUB	#SL.SLEN,R2
	MOV	R2,SL.STR

	CMP	R3,$PRINT(R0)		; Already ON ?
	BEQ	1$			; Yes -> 1$

	MOV	$PRINT(R0),$RT.PR(R1)
	ADD	R0,$RT.PR(R1)		; Old EMT 351 routine addr.
	MOV	R3,$PRINT(R0)		; New EMT 351 routine addr.
	SEC
3$:	RETURN

1$:	MOV	.VARS,R1
	MOV	(R1)+,AUTORR
	MOV	(R1)+,CLOCK
	MOV	(R1)+,X.PAL
	MOV	(R1)+,TB.PAL
	MOV	(R1)+,TB.PAL+2
	MOV	(R1)+,CTRLO
	MOV	(R1)+,R5
	MOV	R5,$PANEL
2$:	MOV	SEL(R5),R2
	MOV	(R1)+,(R2)+
	MOV	(R1)+,(R2)+
	MOV	(R1)+,(R2)
	MOV	(R1)+,SCROL(R5)
	MOV	(R1)+,OFFS(R5)
	MOV	(R1)+,LSODEV(R5)
	MOV	(R1)+,@DEV(R5)
	MOV	(R1)+,MODE(R5)
	MOV	(R1)+,TSORT(R5)
	ADD	-(R5),R5
	COMB	#0
	BNE	2$
	MOV	#L.EDIT,R2
4$:	MOVB	(R1)+,(R2)+
	BNE	4$
	CLC
	RETURN
;----------------------------------------------
PUT.HND::
	MOV	.VARS,R2
	BEQ	3$
	MOV	AUTORR,(R2)+
	MOV	CLOCK,(R2)+
	MOV	X.PAL,(R2)+
	MOV	TB.PAL,(R2)+
	MOV	TB.PAL+2,(R2)+
	MOV	CTRLO,(R2)+
	MOV	R5,(R2)+
1$:	CALL	GSCROFF
	MOV	SEL(R5),R1
	MOV	(R1)+,(R2)+
	MOV	(R1)+,(R2)+
	MOV	(R1),(R2)+
	MOV	SCROL(R5),(R2)+
	MOV	OFFS(R5),(R2)+
	MOV	LSODEV(R5),(R2)+
	MOV	@DEV(R5),(R2)+
	MOV	MODE(R5),(R2)+
	MOV	TSORT(R5),(R2)+
	ADD	-(R5),R5
	COMB	#0
	BNE	1$
	MOV	#L.EDIT,R1
2$:	MOVB	(R1)+,(R2)+
	BNE	2$
3$:	RETURN
;----------------------------------------------
OFF.HND::				; Off-line
	CALL	TSTLOAD
	BCS	2$
	MOV	$RT.PR(R1),R2
	BEQ	1$
	MOV	R2,$PRINT(R0)
	SUB	R0,$PRINT(R0)
1$:	CLC
2$:	RETURN
;----------------------------------------------
; Handler name

PCNAME:	.RAD50	"PC "
;----------------------------------------------
; Where vars in handler

.VARS:		.WORD
SL.PTR::	.WORD
SL.STR::	.WORD
;----------------------------------------------
	.END
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     