Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | /\r |
2 | / F4 LIBRARY P L O T . R A\r | |
3 | /\r | |
4 | / PLOT.RA RELEASE 22-MAY-74 ON S8-LFTNA-C-VAV\r | |
5 | /\r | |
6 | / UPDATES:\r | |
7 | /\r | |
8 | / CLRPLT: INSERTS THE DISPLY TASK ONLY ONCE INTO THE IDLE QUEUE.\r | |
9 | / 11-SEP-80 HA\r | |
10 | /\r | |
11 | /\r | |
12 | / CLRPLT: THERE IS AN OPTIONAL THIRD PARAMETER. IT SPECIFIES THE NUMBER\r | |
13 | / OF (X,Y) POINTS ALREADY PRESENT IN THE BUFFER TO BE DISPLAYED.\r | |
14 | / EACH (X,Y) PAIR CONSITS OF TWO SIGNED 10 BIT INTEGERS STORED IN ONE\r | |
15 | / WORD EACH.\r | |
16 | /\r | |
17 | / EXAMPLE: CALL CLRPLT (BUFFER,LENGTH)\r | |
18 | / CALL CLRPLT (SAMPLE,LENGHT,SAMCNT) DISPLAYES SAMCNT POINTS \r | |
19 | /\r | |
20 | / 11-SEP-80 HA\r | |
21 | /\r | |
22 | /\r | |
23 | LINC=6141\r | |
24 | PDP=2\r | |
25 | DIS=140\r | |
26 | COMMZ #PAGE0 /STANDARD PAGE 0\r | |
27 | ORG 17\r | |
28 | 0 /ALPHA REG FOR PDP-12\r | |
29 | ENTRY #DISP /THIS IS SO #PAGE0 CAN BE LOADED\r | |
30 | #DISP,\r | |
31 | DISPLY, 0\r | |
32 | TAD BUFADR+2 /GET BUFFER ADDRESS\r | |
33 | DCA BUFADR\r | |
34 | TAD DBFLD /SET UP CHANGABLE CDF\r | |
35 | DCA FLDDB\r | |
36 | DBFLD, HLT /GO TO FIRST FIELD OF BUFFER\r | |
37 | TAD PLTXR+4 /NUMBER OF POINTS\r | |
38 | CMA\r | |
39 | DCA NPTS /NEGATED\r | |
40 | JMP ENDDL /BEGIN DISPLAY\r | |
41 | DSPLUP, /START OF DISPLAY LOOP\r | |
42 | IFSW 8 <\r | |
43 | TAD% BUFADR /GET X VALUE\r | |
44 | 6053 /LOAD X DISPLACEMENT\r | |
45 | CLA\r | |
46 | ISZ BUFADR /BUMP ADDRESS\r | |
47 | SKP CLA\r | |
48 | JMS BUMPF /BUMP FIELD\r | |
49 | TAD% BUFADR\r | |
50 | 6054 /LOAD Y DISPLACEMENT\r | |
51 | CLA\r | |
52 | ISZ BUFADR /INCR ADDRESS\r | |
53 | SKP CLA\r | |
54 | JMS BUMPF /INCR FIELD\r | |
55 | 6052 /SKIP ON BEAM POSITIONED\r | |
56 | JMP .-1\r | |
57 | 6055 /INTENSIFY POINT\r | |
58 | >\r | |
59 | IFNSW 8 <\r | |
60 | TAD% BUFADR /GET X DISPLACEMENT\r | |
61 | DCAZ 17 /INTO ALPHA REG\r | |
62 | ISZ BUFADR /INCREMENT ADDRESS\r | |
63 | SKP CLA\r | |
64 | JMS BUMPF /INCREMENT DATA FIELD\r | |
65 | TAD% BUFADR /GET Y DISPLACEMENT\r | |
66 | CIF 10\r | |
67 | LINC\r | |
68 | DIS 17\r | |
69 | PDP\r | |
70 | CLA\r | |
71 | ISZ BUFADR /INCR BUFFER POINTER\r | |
72 | SKP CLA\r | |
73 | JMS BUMPF\r | |
74 | >\r | |
75 | ENDDL, ISZ NPTS /INCREMENT COUNTER\r | |
76 | JMP DSPLUP /LOOP\r | |
77 | CDF 10\r | |
78 | JMP% DISPLY /RETURN TO IDLE Q\r | |
79 | BUMPF, 0 /FIELD CHANGER\r | |
80 | TAD FLDDB /BUMP FIELD\r | |
81 | TAD L10\r | |
82 | DCA FLDDB\r | |
83 | FLDDB, HLT /CHANGE IT NOW\r | |
84 | JMP% BUMPF\r | |
85 | PUTONQ, 0 /PUT DISPLY ONTO BACKROUND Q\r | |
86 | TAD BUFADR+1 /CREATE CDF FOR DISPLAY LOOP\r | |
87 | AND L7\r | |
88 | CLL RAL\r | |
89 | RTL\r | |
90 | TAD FLD0\r | |
91 | DCA DBFLD\r | |
92 | IFSW 8 <\r | |
93 | 6050 /CLEAR DISPLAY LOGIC\r | |
94 | >\r | |
95 | CDF CIF\r | |
96 | SKP\r | |
97 | JMP% PUTONQ\r | |
98 | DCA .-2 /ONCE ONLY\r | |
99 | CIF CDF 10\r | |
100 | JMS% ONQBX+1\r | |
101 | ADDR DISPLY\r | |
102 | CIF CDF\r | |
103 | JMP% PUTONQ /CALLED VIA TRAP4\r | |
104 | EXTERN ONQB\r | |
105 | ONQBX, ADDR ONQB\r | |
106 | BUFADR, 0\r | |
107 | 0\r | |
108 | PLTXR, 0;0;0;-1;0;0\r | |
109 | FLD0, CDF\r | |
110 | L7, 7\r | |
111 | L10, 10\r | |
112 | NPTS, 0\r | |
113 | \f SECT PLOT\r | |
114 | JA #PLOT\r | |
115 | NAME, TEXT +PLOT +\r | |
116 | PLTBAS, 0;0;0\r | |
117 | XLO,\r | |
118 | X, 0;0;0\r | |
119 | YLO,\r | |
120 | Y, 0;0;0\r | |
121 | XHI,\r | |
122 | N, 0;0;0\r | |
123 | YHI, 0;0;0\r | |
124 | ADRBUF, 0;0;0\r | |
125 | TEMP, 0;0;0\r | |
126 | IFSW 8 <\r | |
127 | YSCALE, F 1022.\r | |
128 | YZERO, F 511.\r | |
129 | ORG 10*3+PLTBAS\r | |
130 | FNOP\r | |
131 | JA NAME+3\r | |
132 | 0\r | |
133 | PLTRET, JA .\r | |
134 | XSCALE, F 786.\r | |
135 | XZERO, F 511.\r | |
136 | RANGE, F 1022.\r | |
137 | BASE, F 511.>\r | |
138 | IFNSW 8 <\r | |
139 | YSCALE, F 510.\r | |
140 | YZERO, F 255.\r | |
141 | ORG 10*3+PLTBAS\r | |
142 | FNOP\r | |
143 | JA NAME+3\r | |
144 | 0\r | |
145 | PLTRET, JA .\r | |
146 | XSCALE, F 392.\r | |
147 | XZERO, F 0.\r | |
148 | RANGE, F 510.\r | |
149 | BASE, F 255.>\r | |
150 | L1P5, F 1.5\r | |
151 | XYPAIR, 0;0;0\r | |
152 | #PLOT, BASE PLTBAS\r | |
153 | JSA SETUP\r | |
154 | LDX 1,1\r | |
155 | FLDA% PLTBAS,1 /GET ARG ADDRESSES\r | |
156 | FSTA N\r | |
157 | FLDA% PLTBAS,1+\r | |
158 | FSTA X\r | |
159 | FLDA% PLTBAS,1+\r | |
160 | FSTA Y\r | |
161 | STARTF\r | |
162 | FLDA% N /NUMBER OF POINTS TO PLOT\r | |
163 | FNEG\r | |
164 | ATX 1 /INTO XR 1\r | |
165 | LDX -1,2 /XR 2 IS THE INDEXER\r | |
166 | PLTLUP, JXN PLOOP,3+ /ANY MORE ROOM IN PLOT BUFFER ?\r | |
167 | LDX -1,3 /NO, FIX COUNT\r | |
168 | JA PLTRET\r | |
169 | PLOOP, FLDA% Y,2+ /GET Y VALUE\r | |
170 | FMUL YSCALE /SCALE IT\r | |
171 | FSUB YZERO /SUBTRACT LOWER LIMIT\r | |
172 | ALN 0\r | |
173 | FSTA XYPAIR\r | |
174 | FLDA% X,2 /GET X VALUE OF PAIR\r | |
175 | FMUL XSCALE /SCALE IT\r | |
176 | FSUB XZERO /SUBTRACT LOWER LIMIT\r | |
177 | ALN 0\r | |
178 | STARTD\r | |
179 | FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT\r | |
180 | FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER\r | |
181 | FSTA% ADRBUF,4\r | |
182 | ADDX 1,4 /TROUBLE IS, WE WANT POST INCREMENT\r | |
183 | STARTF\r | |
184 | JXN PLTLUP,1+ /LOOP IF MORE POINTS\r | |
185 | JA PLTRET\r | |
186 | BASE 0\r | |
187 | SETUP, JA .\r | |
188 | STARTD\r | |
189 | FLDA 30 /GET RETURN ADDRESS\r | |
190 | FSTA PLTRET\r | |
191 | FLDA 0 /GET ARG POINTER\r | |
192 | BASE PLTBAS\r | |
193 | SETB PLTBAS\r | |
194 | SETX PLTXR\r | |
195 | FSTA PLTBAS\r | |
196 | JA SETUP\r | |
197 | \f SECT PLOTR\r | |
198 | BASE PLTBAS\r | |
199 | JSA SETUP\r | |
200 | LDX 1,1\r | |
201 | FLDA% PLTBAS,1 /GET ARG ADDRESSES\r | |
202 | FSTA N\r | |
203 | FLDA% PLTBAS,1+\r | |
204 | FSTA X\r | |
205 | FLDA% PLTBAS,1+\r | |
206 | FSTA Y\r | |
207 | FLDA% PLTBAS,1+\r | |
208 | FSTA YHI\r | |
209 | STARTF\r | |
210 | FLDA% YHI\r | |
211 | ATX 5\r | |
212 | FLDA% N /NUMBER OF POINTS TO PLOT\r | |
213 | FNEG\r | |
214 | ATX 1 /INTO XR 1\r | |
215 | LDX -1,2 /XR 2 IS THE INDEXER\r | |
216 | PLOTRL, FLDA% Y,2+ /GET Y VALUE\r | |
217 | FMUL YSCALE /SCALE IT\r | |
218 | FSUB YZERO /SUBTRACT LOWER LIMIT\r | |
219 | ALN 0\r | |
220 | FSTA XYPAIR\r | |
221 | FLDA% X,2 /GET X VALUE OF PAIR\r | |
222 | FMUL XSCALE /SCALE IT\r | |
223 | FSUB XZERO /SUBTRACT LOWER LIMIT\r | |
224 | ALN 0\r | |
225 | STARTD\r | |
226 | FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT\r | |
227 | FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER\r | |
228 | FSTA% ADRBUF,5\r | |
229 | ADDX 1,5 /TROUBLE IS, WE WANT POST INCREMENT\r | |
230 | STARTF\r | |
231 | JXN PLOTRL,1+ /LOOP IF MORE POINTS\r | |
232 | JA PLTRET\r | |
233 | \f SECT CLRPLT\r | |
234 | BASE PLTBAS\r | |
235 | JSA SETUP\r | |
236 | LDX 0,4 /DISABLE DISPLAY LOOP\r | |
237 | LDX 1,1\r | |
238 | FLDA% PLTBAS,1 /GET ARG POINTERS\r | |
239 | FSTA N\r | |
240 | FLDA% PLTBAS,1+\r | |
241 | FSTA ADRBUF\r | |
242 | FSTA BUFADR+1\r | |
243 | STARTF\r | |
244 | FLDA% N /SIZE OF BUFFER\r | |
245 | FMUL L1P5 /NUMBER OF 2 WORD PAIRS\r | |
246 | FNEG\r | |
247 | ATX 3 /INTO SOME CHOICE XRS\r | |
248 | STARTD\r | |
249 | FLDA% PLTBAS,0 / LOAD RETURN ADR. --> FAC\r | |
250 | FSUB PLTBAS / SUBTRACT PARAMETER LIST ADR.\r | |
251 | FSUB LC6 / FAC=0 <==> TWO PARAM. ELSE FAC=2 <==> THREE PAR.\r | |
252 | JEQ CTRP0 / CONTINUE AT CTRP0 IF THERE ARE TWO PARA. ONLY\r | |
253 | FLDA% PLTBAS,1+ / LOAD ADR. OF THIRD PARAMETER\r | |
254 | FSTA TEMP / LOAD CONTENTS OF THIRD PARAMETER\r | |
255 | STARTF\r | |
256 | FLDA% TEMP / NUMBER OF POINTS ALREADY TO DISPLAY \r | |
257 | ATX 4 / INSERT IT INTO X4 THE WORD COUNT REGISTER\r | |
258 | CTRP0,\r | |
259 | STARTF\r | |
260 | CTRP, TRAP4 PUTONQ /PUTISPLY ONTO IDLE Q\r | |
261 | STARTD / BUT PUT DISPLY ONLY ONCE ONTO THE IDLE LOOP\r | |
262 | FLDA LFNOP\r | |
263 | FSTA CTRP / CLEAR TRAP4 INTO FNOP\r | |
264 | STARTF\r | |
265 | LFNOP, FNOP / TWO FNOP INSTRUCTION MUST FOLLOW HERE!\r | |
266 | FNOP\r | |
267 | CLRRET, JA PLTRET\r | |
268 | LC6, 0;2\r | |
269 | \f SECT SCALE /SET SCALING FACTORS\r | |
270 | BASE PLTBAS\r | |
271 | JSA SETUP\r | |
272 | LDX 1,1\r | |
273 | FLDA% PLTBAS,1 /GET ARGS\r | |
274 | FSTA XLO\r | |
275 | FLDA% PLTBAS,1+\r | |
276 | FSTA YLO\r | |
277 | FLDA% PLTBAS,1+\r | |
278 | FSTA XHI\r | |
279 | FLDA% PLTBAS,1+\r | |
280 | FSTA YHI\r | |
281 | STARTF\r | |
282 | FLDA% XHI /COMPUTE X RANGE\r | |
283 | FSUB% XLO\r | |
284 | FSTA XHI\r | |
285 | FLDA% YHI /NOW Y RANGE\r | |
286 | FSUB% YLO\r | |
287 | FSTA YHI\r | |
288 | FLDA RANGE /COMPUTE XSCALE\r | |
289 | FDIV XHI\r | |
290 | FSTA XSCALE\r | |
291 | FLDA RANGE /NOW Y SCALE\r | |
292 | FDIV YHI\r | |
293 | FSTA YSCALE\r | |
294 | FLDA% XLO /COMPUTE XZERO\r | |
295 | FMUL RANGE\r | |
296 | FDIV XHI\r | |
297 | IFSW 8 <\r | |
298 | FADD BASE>\r | |
299 | FSTA XZERO\r | |
300 | FLDA% YLO /NOW YZERO\r | |
301 | FMUL RANGE\r | |
302 | FDIV YHI\r | |
303 | FADD BASE\r | |
304 | FSTA YZERO\r | |
305 | SCLRET, JA PLTRET\r | |
306 | END\r | |
307 | \f\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 |