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., ; [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., ; [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