Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-12 - 43,50547/pltcal.mac
There is 1 other file named pltcal.mac in the archive. Click here to see a list.
SUBTTL	CAL driver -- CALCOMP expanded output, DEC compatible

;	  This is the routine which DEC supplies with FORLIB.  It outputs
;	one 6-bit byte per increment.  CSM has rejected this routine because
;	of the size of the output file, which often exceeded the user's
;	FCFS disk quota under MPB (back in the days of RP02s).
;
;	  The bits match the 6 signals on the XY10.
;
;						-X
;Y.NEG==  1	;Move carriage right	  (supply roller)
;Y.POS==  2	;Move carriage left
;X.POS==  4	;Roll drum forward	< +Y  carriage  -Y >
;X.NEG== 10	;Roll drum back
;PEN.DN==20	;Lower the pen		  (takeup roller)
;PEN.UP==40	;Raise the pen			-X

PRINTX	%PLOT - PLTCAL not fully implemented

	PPDATA	(CAL)		;Expand data area

CALNAM:	DEC	10	;XY-10
	ASCII /XY10/
	ASCII /XY-10/
	ASCII /CALCO/	;Calcomp plotter
	ASCII /DEC/	;DEC standard software
	ASCII /EXPAN/	;Expanded spooler format
;** This code copied from the DEC supplied FORPLT module

	HELLO	(PLOT)		;ENTRY TO PLOT
	MOVEM 17,SV17
	MOVEI 17,ARGS-1
	PUSH 17,@0(Q)	;SVX
	PUSH 17,@1(Q)	;SVY
	PUSH 17,@2(Q)	;SVPEN
	MOVEI 17,SV0
	BLT 17,SV0+16	;SAVE AC'S
	MOVE P,PPDP	;PLOT PUSHDOWN POINTER
	PUSHJ P,PLOT.	;DO WORK
	MOVSI 17,SV0
	BLT 17,17
	GOODBY	(3)	;RETURN TO CALLER

;**; [555] CHANGE @ PLT1	CLRH	14-JUN-76
PLT2:	PUSH	P,1		;[555] GET REGISTER
	MOVE	1,PCHN		;[555] GET CHANNEL NUMBER
	TLO	1,(OUTPUT)	;[555] MAKE OUTPUT UUO
	XCT	1		;[555] DO OUTPUT
	POP	P,1		;[555] RESTORE REGISTER
PLT1:	SOSGE	POB+2		;[555] ROOM IN BUFFER ?
	JRST	PLT2		;[555]  NO,  SO OUTPUT IT
	IDPB	DAT,POB+1
	POPJ	P,0

	ENTRY	PLOT.
PLOT.:
PENCK:	MOVM TX,SVPEN
	CAIG TX,1
	JRST PENOK
	SUBI TX,3
	CAMN TX,PEN
	JRST PENOK
	MOVEI DAT,PENUP
	SKIPGE TX
	MOVEI DAT,PENDWN
	PUSHJ P,PLT1
	MOVEM TX,PEN
PENOK:	MOVE TX,SVX
	FMPR TX,STPSIZ
	FADR TX,[DEC 0.5]
	SKIPGE	SVX
	FSBR	TX,[DEC 1.0]
	FUNCT	INT.,<TX>	; [516]
	MOVEM 0,ISX
	MOVE TX,0
	MOVE TY,SVY
	FMPR TY,STPSIZ
	FADR TY,[DEC 0.5]
	SKIPGE	SVY
	FSBR	TY,[DEC 1.0]
	FUNCT	INT.,<TY>	; [516]
	MOVEM 0,ISY
	MOVE TY,0
	SUB TX,IX
	MOVEI TDX,MVLFT
	SKIPL TX
	MOVEI TDX,MVRT
	SUB TY,IY
	MOVEI TDY,MVDWN
	SKIPL TY
	MOVEI TDY,MVUP
	MOVMS TX
	MOVMS TY
	CAMG TY,TX
	JRST NOSWAP
	EXCH TX,TY
	EXCH TDX,TDY
NOSWAP:	JUMPE TX,ENDOU1	;NO MOTION
	JUMPE TY,NORM
	MOVEI SC,0
NY:	TLNE TY,200000
	JRST NX
	LSH TY,1
	TRO TY,1
	AOJA SC,NY
NX:	SUBI SC,^D34
MKSC:	IDIV TY,TX
	MOVNS SC
	LSH TY,0(SC)
NORM:	MOVEM TY,STEP
	MOVEI TY,0
	IOR TDY,TDX
INLOOP:	ADD TY,STEP
	MOVE DAT,TDX
	TLZE TY,200000
	MOVE DAT,TDY
	PUSHJ P,PLT1
	SOJG TX,INLOOP

	MOVE TY,ISX
	MOVEM TY,IX
	MOVE TY,SVX
	MOVEM TY,X
	MOVE TY,ISY
	MOVEM TY,IY
	MOVE TY,SVY
	MOVEM TY,Y
ENDOU1:	SKIPL SVPEN
	JRST ENDOUT
;**;  [555] CHANGE @ ENDOU1 + 2	CLRH	14-JUN-76
	PUSH	P,1		;[555] SAVE 1
	MOVE	1,PCHN		;[555]  GET CHANNEL
	TLO	1,(OUTPUT)	;[555] MAKE OUTPUT
	XCT	1		;[555]  DO OUTPUT
	POP	P,1		;[555] RESTORE 1
	SETZM X
	SETZM Y
	SETZM IX
	SETZM IY
ENDOUT:	SETZM SVPEN
	POPJ P,0


LITCAL:	LIT		;End of PLTCAL.MAC