--- /dev/null
+/
+/ VERSION 5A 4-27-77 PT
+/
+ LINC=6141
+ PDP=2
+ DIS=140
+ COMMZ #PAGE0 /STANDARD PAGE 0
+ ORG 17
+ 0 /ALPHA REG FOR PDP-12
+ ENTRY #DISP /THIS IS SO #PAGE0 CAN BE LOADED
+#DISP,
+DISPLY, 0
+ TAD BUFADR+2 /GET BUFFER ADDRESS
+ DCA BUFADR
+ TAD DBFLD /SET UP CHANGABLE CDF
+ DCA FLDDB
+DBFLD, HLT /GO TO FIRST FIELD OF BUFFER
+ TAD PLTXR+4 /NUMBER OF POINTS
+ CMA
+ DCA NPTS /NEGATED
+ JMP ENDDL /BEGIN DISPLAY
+DSPLUP, /START OF DISPLAY LOOP
+ IFSW 8 <
+ TAD% BUFADR /GET X VALUE
+ 6053 /LOAD X DISPLACEMENT
+ CLA
+ ISZ BUFADR /BUMP ADDRESS
+ SKP CLA
+ JMS BUMPF /BUMP FIELD
+ TAD% BUFADR
+ 6054 /LOAD Y DISPLACEMENT
+ CLA
+ ISZ BUFADR /INCR ADDRESS
+ SKP CLA
+ JMS BUMPF /INCR FIELD
+ 6052 /SKIP ON BEAM POSITIONED
+ JMP .-1
+ 6055 /INTENSIFY POINT
+ >
+ IFNSW 8 <
+ TAD% BUFADR /GET X DISPLACEMENT
+ DCAZ 17 /INTO ALPHA REG
+ ISZ BUFADR /INCREMENT ADDRESS
+ SKP CLA
+ JMS BUMPF /INCREMENT DATA FIELD
+ TAD% BUFADR /GET Y DISPLACEMENT
+ CIF 10
+ LINC
+ DIS 17
+ PDP
+ CLA
+ ISZ BUFADR /INCR BUFFER POINTER
+ SKP CLA
+ JMS BUMPF
+ >
+ENDDL, ISZ NPTS /INCREMENT COUNTER
+ JMP DSPLUP /LOOP
+ CDF 10
+ JMP% DISPLY /RETURN TO IDLE Q
+BUMPF, 0 /FIELD CHANGER
+ TAD FLDDB /BUMP FIELD
+ TAD L10
+ DCA FLDDB
+FLDDB, HLT /CHANGE IT NOW
+ JMP% BUMPF
+PUTONQ, 0 /PUT DISPLY ONTO BACKROUND Q
+ TAD BUFADR+1 /CREATE CDF FOR DISPLAY LOOP
+ AND L7
+ CLL RAL
+ RTL
+ TAD FLD0
+ DCA DBFLD
+ IFSW 8 <
+ 6050 /CLEAR DISPLAY LOGIC
+ >
+ CDF CIF
+ SKP
+ JMP% PUTONQ
+ DCA .-2 /ONCE ONLY
+ CIF CDF 10
+ JMS% ONQBX+1
+ ADDR DISPLY
+ CIF CDF
+ JMP% PUTONQ /CALLED VIA TRAP4
+ EXTERN ONQB
+ONQBX, ADDR ONQB
+BUFADR, 0
+ 0
+PLTXR, 0;0;0;-1;0;0
+FLD0, CDF
+L7, 7
+L10, 10
+NPTS, 0
+\f SECT PLOT
+ JA #PLOT
+NAME, TEXT +PLOT +
+PLTBAS, 0;0;0
+XLO,
+X, 0;0;0
+YLO,
+Y, 0;0;0
+XHI,
+N, 0;0;0
+YHI, 0;0;0
+ADRBUF, 0;0;0
+ IFSW 8 <
+YSCALE, F 1022.
+YZERO, F 511.
+ ORG 10*3+PLTBAS
+ FNOP
+ JA NAME+3
+ 0
+PLTRET, JA .
+XSCALE, F 786.
+XZERO, F 511.
+RANGE, F 1022.
+BASE, F 511.>
+ IFNSW 8 <
+YSCALE, F 510.
+YZERO, F 255.
+ ORG 10*3+PLTBAS
+ FNOP
+ JA NAME+3
+ 0
+PLTRET, JA .
+XSCALE, F 392.
+XZERO, F 0.
+RANGE, F 510.
+BASE, F 255.>
+L1P5, F 1.5
+XYPAIR, 0;0;0
+#PLOT, BASE PLTBAS
+ JSA SETUP
+ LDX 1,1
+ FLDA% PLTBAS,1 /GET ARG ADDRESSES
+ FSTA N
+ FLDA% PLTBAS,1+
+ FSTA X
+ FLDA% PLTBAS,1+
+ FSTA Y
+ STARTF
+ FLDA% N /NUMBER OF POINTS TO PLOT
+ FNEG
+ ATX 1 /INTO XR 1
+ LDX -1,2 /XR 2 IS THE INDEXER
+PLTLUP, JXN PLOOP,3+ /ANY MORE ROOM IN PLOT BUFFER ?
+ LDX -1,3 /NO, FIX COUNT
+ JA PLTRET
+PLOOP, FLDA% Y,2+ /GET Y VALUE
+ FMUL YSCALE /SCALE IT
+ FSUB YZERO /SUBTRACT LOWER LIMIT
+ ALN 0
+ FSTA XYPAIR
+ FLDA% X,2 /GET X VALUE OF PAIR
+ FMUL XSCALE /SCALE IT
+ FSUB XZERO /SUBTRACT LOWER LIMIT
+ ALN 0
+ STARTD
+ FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT
+ FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER
+ FSTA% ADRBUF,4
+ ADDX 1,4 /TROUBLE IS, WE WANT POST INCREMENT
+ STARTF
+ JXN PLTLUP,1+ /LOOP IF MORE POINTS
+ JA PLTRET
+ BASE 0
+SETUP, JA .
+ STARTD
+ FLDA 30 /GET RETURN ADDRESS
+ FSTA PLTRET
+ FLDA 0 /GET ARG POINTER
+ BASE PLTBAS
+ SETB PLTBAS
+ SETX PLTXR
+ FSTA PLTBAS
+ JA SETUP
+\f SECT PLOTR
+ BASE PLTBAS
+ JSA SETUP
+ LDX 1,1
+ FLDA% PLTBAS,1 /GET ARG ADDRESSES
+ FSTA N
+ FLDA% PLTBAS,1+
+ FSTA X
+ FLDA% PLTBAS,1+
+ FSTA Y
+ FLDA% PLTBAS,1+
+ FSTA YHI
+ STARTF
+ FLDA% YHI
+ ATX 5
+ FLDA% N /NUMBER OF POINTS TO PLOT
+ FNEG
+ ATX 1 /INTO XR 1
+ LDX -1,2 /XR 2 IS THE INDEXER
+PLOTRL, FLDA% Y,2+ /GET Y VALUE
+ FMUL YSCALE /SCALE IT
+ FSUB YZERO /SUBTRACT LOWER LIMIT
+ ALN 0
+ FSTA XYPAIR
+ FLDA% X,2 /GET X VALUE OF PAIR
+ FMUL XSCALE /SCALE IT
+ FSUB XZERO /SUBTRACT LOWER LIMIT
+ ALN 0
+ STARTD
+ FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT
+ FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER
+ FSTA% ADRBUF,5
+ ADDX 1,5 /TROUBLE IS, WE WANT POST INCREMENT
+ STARTF
+ JXN PLOTRL,1+ /LOOP IF MORE POINTS
+ JA PLTRET
+\f SECT CLRPLT
+ BASE PLTBAS
+ JSA SETUP
+ LDX 0,4 /DISABLE DISPLAY LOOP
+ LDX 1,1
+ FLDA% PLTBAS,1 /GET ARG POINTERS
+ FSTA N
+ FLDA% PLTBAS,1+
+ FSTA ADRBUF
+ FSTA BUFADR+1
+ STARTF
+ FLDA% N /SIZE OF BUFFER
+ FMUL L1P5 /NUMBER OF 2 WORD PAIRS
+ FNEG
+ ATX 3 /INTO SOME CHOICE XRS
+ TRAP4 PUTONQ /PUTISPLY ONTO IDLE Q
+CLRRET, JA PLTRET
+\f SECT SCALE /SET SCALING FACTORS
+ BASE PLTBAS
+ JSA SETUP
+ LDX 1,1
+ FLDA% PLTBAS,1 /GET ARGS
+ FSTA XLO
+ FLDA% PLTBAS,1+
+ FSTA YLO
+ FLDA% PLTBAS,1+
+ FSTA XHI
+ FLDA% PLTBAS,1+
+ FSTA YHI
+ STARTF
+ FLDA% XHI /COMPUTE X RANGE
+ FSUB% XLO
+ FSTA XHI
+ FLDA% YHI /NOW Y RANGE
+ FSUB% YLO
+ FSTA YHI
+ FLDA RANGE /COMPUTE XSCALE
+ FDIV XHI
+ FSTA XSCALE
+ FLDA RANGE /NOW Y SCALE
+ FDIV YHI
+ FSTA YSCALE
+ FLDA% XLO /COMPUTE XZERO
+ FMUL RANGE
+ FDIV XHI
+ IFSW 8 <
+ FADD BASE>
+ FSTA XZERO
+ FLDA% YLO /NOW YZERO
+ FMUL RANGE
+ FDIV YHI
+ FADD BASE
+ FSTA YZERO
+SCLRET, JA PLTRET
+ END
+\f