	.TITLE	PPLOA
	.MCALL	.TTINR
	.MCALL	.TRPSE
	.DSABL	GBL
	.GLOBL	AREA	TRINT
	.GLOBL	.ALLOC	.FREE	.GET	.PUT	.GO
	.GLOBL	T.MEM	T.CPPP

	.GLOBL	LO$BEG	LO$DAT	LO$END
	.GLOBL	.PPADR	.PACK

	.GLOBL	.C1CSR	PP$ADR	K25	.K25

	.GLOBL	OLD$KB	NEW$KB

	.GLOBL	ICU

	.GLOBL	SETTO

HEIGHT	=	24.

C1.CSR	=	176660
C1.DAT	=	176662

C1CSR	=	176664
C1DAT	=	176666

PP$LOA::
	MOV	#<LO$END-LO$BEG>/2,R1
	MOV	#LO$BEG,R2

	MOV	R1,-(SP)
	CALL	.ALLOC
	BCC	1$

	MOVB	#'P,T.CPPP
	MOV	#T.MEM,R0
	EMT	351
	JMP	SETTO

1$:	SUB	#<LO$END-LO$DAT>/2,R1
	MOVB	@#C1CSR,.C1CSR
	CLRB	@#C1CSR
	TSTB	@#C1.DAT

	MOV	@#60,OLD$KB
	MOV	#NEW$KB,@#60

	MOV	R0,PP$ADR
	MOV	R0,-(SP)
	MOV	R2,-(SP)
	MOV	R0,-(SP)
	MOV	R1,-(SP)
	SUB	R2,R0
	MOV	R0,.PPADR

	MOV	#RELTAB,R1
2$:	ADD	R0,@(R1)+
	TST	@R1
	BNE	2$

	MOV	R1,-(SP)
	MOV	#177700,-(SP)
	MOV	#1,-(SP)
	CALL	.PUT

	MOV	#.K25,-(SP)
	MOV	#10554,-(SP)
	MOV	#1,-(SP)
	CALL	.GET

	MOV	R1,-(SP)
	MOV	#22552,-(SP)
	MOV	#1,-(SP)
	MOV	#ICU,-(SP)
	MOV	#22552,-(SP)
	MOV	#1,-(SP)
	CALL	.GET
	CALL	.PUT

	MOV	R1,-(SP)
	MOV	#13140,-(SP)
	MOV	#1,-(SP)
	MOV	R1,-(SP)
	MOV	#13140,-(SP)
	MOV	#1,-(SP)
	CALL	.GET
	MOV	@R1,R0
	MOV	R0,K25
	ASR	R0
	ADC	@R1
	CALL	.PUT

	MOV	#T.INIT,R0
	EMT	351

	.TRPSE	#AREA,#TRINT

	CALL	.PUT
	CALL	.GO
	RETURN

RELTAB:
...	=	0
.REPT	32.
	.IRP	N,\...
		.GLOBL	$$$'N
		.WORD	$$$'N
	.ENDM
...	=	... + 1
.ENDM
	.WORD	.PACK
	.WORD

NOROOM:	.ASCIZ	"There is not enough memory in PP RAM. Aborting..."
T.INIT:	.BYTE	12,12,33,'Y,' +HEIGHT-1,' 
	.ASCII	<33>"P;1|25/"

	.ASCII	"C1155639C2151B57C415"
BXOR2::	.ASCII	"0000"
	.ASCII	"C515"
EXOR2::	.ASCII	"0000"
	.ASCII	"401100E11F1108FE5F780CFE840AC50A"
	.ASCII	"5F1108FE9F780CFEC165ACAFC2651AA3"
	.ASCII	"0F7EDF15"
.HR2::	.ASCII	"0000"
	.ASCII	"08FEC0152000C1157CBD9F0A08FE5F780CFE057EDFE52000"
	.ASCII	"08FEDF15DF090CFE"
	.ASCII	"C111C165A8FFC0153000110A027E"
	.ASCII	"8700"
	.ASCII	";"<33>"/"<33>"%!3"<200>
	.EVEN

	.PRINT	...
	.END
                           