A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / plot.ra
CommitLineData
81e70d48
PH
1/
2/ VERSION 5A 4-27-77 PT
3/
4 LINC=6141
5 PDP=2
6 DIS=140
7 COMMZ #PAGE0 /STANDARD PAGE 0
8 ORG 17
9 0 /ALPHA REG FOR PDP-12
10 ENTRY #DISP /THIS IS SO #PAGE0 CAN BE LOADED
11#DISP,
12DISPLY, 0
13 TAD BUFADR+2 /GET BUFFER ADDRESS
14 DCA BUFADR
15 TAD DBFLD /SET UP CHANGABLE CDF
16 DCA FLDDB
17DBFLD, HLT /GO TO FIRST FIELD OF BUFFER
18 TAD PLTXR+4 /NUMBER OF POINTS
19 CMA
20 DCA NPTS /NEGATED
21 JMP ENDDL /BEGIN DISPLAY
22DSPLUP, /START OF DISPLAY LOOP
23 IFSW 8 <
24 TAD% BUFADR /GET X VALUE
25 6053 /LOAD X DISPLACEMENT
26 CLA
27 ISZ BUFADR /BUMP ADDRESS
28 SKP CLA
29 JMS BUMPF /BUMP FIELD
30 TAD% BUFADR
31 6054 /LOAD Y DISPLACEMENT
32 CLA
33 ISZ BUFADR /INCR ADDRESS
34 SKP CLA
35 JMS BUMPF /INCR FIELD
36 6052 /SKIP ON BEAM POSITIONED
37 JMP .-1
38 6055 /INTENSIFY POINT
39 >
40 IFNSW 8 <
41 TAD% BUFADR /GET X DISPLACEMENT
42 DCAZ 17 /INTO ALPHA REG
43 ISZ BUFADR /INCREMENT ADDRESS
44 SKP CLA
45 JMS BUMPF /INCREMENT DATA FIELD
46 TAD% BUFADR /GET Y DISPLACEMENT
47 CIF 10
48 LINC
49 DIS 17
50 PDP
51 CLA
52 ISZ BUFADR /INCR BUFFER POINTER
53 SKP CLA
54 JMS BUMPF
55 >
56ENDDL, ISZ NPTS /INCREMENT COUNTER
57 JMP DSPLUP /LOOP
58 CDF 10
59 JMP% DISPLY /RETURN TO IDLE Q
60BUMPF, 0 /FIELD CHANGER
61 TAD FLDDB /BUMP FIELD
62 TAD L10
63 DCA FLDDB
64FLDDB, HLT /CHANGE IT NOW
65 JMP% BUMPF
66PUTONQ, 0 /PUT DISPLY ONTO BACKROUND Q
67 TAD BUFADR+1 /CREATE CDF FOR DISPLAY LOOP
68 AND L7
69 CLL RAL
70 RTL
71 TAD FLD0
72 DCA DBFLD
73 IFSW 8 <
74 6050 /CLEAR DISPLAY LOGIC
75 >
76 CDF CIF
77 SKP
78 JMP% PUTONQ
79 DCA .-2 /ONCE ONLY
80 CIF CDF 10
81 JMS% ONQBX+1
82 ADDR DISPLY
83 CIF CDF
84 JMP% PUTONQ /CALLED VIA TRAP4
85 EXTERN ONQB
86ONQBX, ADDR ONQB
87BUFADR, 0
88 0
89PLTXR, 0;0;0;-1;0;0
90FLD0, CDF
91L7, 7
92L10, 10
93NPTS, 0
94\f SECT PLOT
95 JA #PLOT
96NAME, TEXT +PLOT +
97PLTBAS, 0;0;0
98XLO,
99X, 0;0;0
100YLO,
101Y, 0;0;0
102XHI,
103N, 0;0;0
104YHI, 0;0;0
105ADRBUF, 0;0;0
106 IFSW 8 <
107YSCALE, F 1022.
108YZERO, F 511.
109 ORG 10*3+PLTBAS
110 FNOP
111 JA NAME+3
112 0
113PLTRET, JA .
114XSCALE, F 786.
115XZERO, F 511.
116RANGE, F 1022.
117BASE, F 511.>
118 IFNSW 8 <
119YSCALE, F 510.
120YZERO, F 255.
121 ORG 10*3+PLTBAS
122 FNOP
123 JA NAME+3
124 0
125PLTRET, JA .
126XSCALE, F 392.
127XZERO, F 0.
128RANGE, F 510.
129BASE, F 255.>
130L1P5, F 1.5
131XYPAIR, 0;0;0
132#PLOT, BASE PLTBAS
133 JSA SETUP
134 LDX 1,1
135 FLDA% PLTBAS,1 /GET ARG ADDRESSES
136 FSTA N
137 FLDA% PLTBAS,1+
138 FSTA X
139 FLDA% PLTBAS,1+
140 FSTA Y
141 STARTF
142 FLDA% N /NUMBER OF POINTS TO PLOT
143 FNEG
144 ATX 1 /INTO XR 1
145 LDX -1,2 /XR 2 IS THE INDEXER
146PLTLUP, JXN PLOOP,3+ /ANY MORE ROOM IN PLOT BUFFER ?
147 LDX -1,3 /NO, FIX COUNT
148 JA PLTRET
149PLOOP, FLDA% Y,2+ /GET Y VALUE
150 FMUL YSCALE /SCALE IT
151 FSUB YZERO /SUBTRACT LOWER LIMIT
152 ALN 0
153 FSTA XYPAIR
154 FLDA% X,2 /GET X VALUE OF PAIR
155 FMUL XSCALE /SCALE IT
156 FSUB XZERO /SUBTRACT LOWER LIMIT
157 ALN 0
158 STARTD
159 FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT
160 FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER
161 FSTA% ADRBUF,4
162 ADDX 1,4 /TROUBLE IS, WE WANT POST INCREMENT
163 STARTF
164 JXN PLTLUP,1+ /LOOP IF MORE POINTS
165 JA PLTRET
166 BASE 0
167SETUP, JA .
168 STARTD
169 FLDA 30 /GET RETURN ADDRESS
170 FSTA PLTRET
171 FLDA 0 /GET ARG POINTER
172 BASE PLTBAS
173 SETB PLTBAS
174 SETX PLTXR
175 FSTA PLTBAS
176 JA SETUP
177\f SECT PLOTR
178 BASE PLTBAS
179 JSA SETUP
180 LDX 1,1
181 FLDA% PLTBAS,1 /GET ARG ADDRESSES
182 FSTA N
183 FLDA% PLTBAS,1+
184 FSTA X
185 FLDA% PLTBAS,1+
186 FSTA Y
187 FLDA% PLTBAS,1+
188 FSTA YHI
189 STARTF
190 FLDA% YHI
191 ATX 5
192 FLDA% N /NUMBER OF POINTS TO PLOT
193 FNEG
194 ATX 1 /INTO XR 1
195 LDX -1,2 /XR 2 IS THE INDEXER
196PLOTRL, FLDA% Y,2+ /GET Y VALUE
197 FMUL YSCALE /SCALE IT
198 FSUB YZERO /SUBTRACT LOWER LIMIT
199 ALN 0
200 FSTA XYPAIR
201 FLDA% X,2 /GET X VALUE OF PAIR
202 FMUL XSCALE /SCALE IT
203 FSUB XZERO /SUBTRACT LOWER LIMIT
204 ALN 0
205 STARTD
206 FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT
207 FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER
208 FSTA% ADRBUF,5
209 ADDX 1,5 /TROUBLE IS, WE WANT POST INCREMENT
210 STARTF
211 JXN PLOTRL,1+ /LOOP IF MORE POINTS
212 JA PLTRET
213\f SECT CLRPLT
214 BASE PLTBAS
215 JSA SETUP
216 LDX 0,4 /DISABLE DISPLAY LOOP
217 LDX 1,1
218 FLDA% PLTBAS,1 /GET ARG POINTERS
219 FSTA N
220 FLDA% PLTBAS,1+
221 FSTA ADRBUF
222 FSTA BUFADR+1
223 STARTF
224 FLDA% N /SIZE OF BUFFER
225 FMUL L1P5 /NUMBER OF 2 WORD PAIRS
226 FNEG
227 ATX 3 /INTO SOME CHOICE XRS
228 TRAP4 PUTONQ /PUTISPLY ONTO IDLE Q
229CLRRET, JA PLTRET
230\f SECT SCALE /SET SCALING FACTORS
231 BASE PLTBAS
232 JSA SETUP
233 LDX 1,1
234 FLDA% PLTBAS,1 /GET ARGS
235 FSTA XLO
236 FLDA% PLTBAS,1+
237 FSTA YLO
238 FLDA% PLTBAS,1+
239 FSTA XHI
240 FLDA% PLTBAS,1+
241 FSTA YHI
242 STARTF
243 FLDA% XHI /COMPUTE X RANGE
244 FSUB% XLO
245 FSTA XHI
246 FLDA% YHI /NOW Y RANGE
247 FSUB% YLO
248 FSTA YHI
249 FLDA RANGE /COMPUTE XSCALE
250 FDIV XHI
251 FSTA XSCALE
252 FLDA RANGE /NOW Y SCALE
253 FDIV YHI
254 FSTA YSCALE
255 FLDA% XLO /COMPUTE XZERO
256 FMUL RANGE
257 FDIV XHI
258 IFSW 8 <
259 FADD BASE>
260 FSTA XZERO
261 FLDA% YLO /NOW YZERO
262 FMUL RANGE
263 FDIV YHI
264 FADD BASE
265 FSTA YZERO
266SCLRET, JA PLTRET
267 END
268\f