A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk1_im6100 / rka / paroff / plotup.ra
CommitLineData
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
31DISPLY, 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
36DBFLD, 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
41DSPLUP, /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
75ENDDL, ISZ NPTS /INCREMENT COUNTER\r
76 JMP DSPLUP /LOOP\r
77 CDF 10\r
78 JMP% DISPLY /RETURN TO IDLE Q\r
79BUMPF, 0 /FIELD CHANGER\r
80 TAD FLDDB /BUMP FIELD\r
81 TAD L10\r
82 DCA FLDDB\r
83FLDDB, HLT /CHANGE IT NOW\r
84 JMP% BUMPF\r
85PUTONQ, 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
105ONQBX, ADDR ONQB\r
106BUFADR, 0\r
107 0\r
108PLTXR, 0;0;0;-1;0;0\r
109FLD0, CDF\r
110L7, 7\r
111L10, 10\r
112NPTS, 0\r
113\f SECT PLOT\r
114 JA #PLOT\r
115NAME, TEXT +PLOT +\r
116PLTBAS, 0;0;0\r
117XLO,\r
118X, 0;0;0\r
119YLO,\r
120Y, 0;0;0\r
121XHI,\r
122N, 0;0;0\r
123YHI, 0;0;0\r
124ADRBUF, 0;0;0\r
125TEMP, 0;0;0\r
126 IFSW 8 <\r
127YSCALE, F 1022.\r
128YZERO, F 511.\r
129 ORG 10*3+PLTBAS\r
130 FNOP\r
131 JA NAME+3\r
132 0\r
133PLTRET, JA .\r
134XSCALE, F 786.\r
135XZERO, F 511.\r
136RANGE, F 1022.\r
137BASE, F 511.>\r
138 IFNSW 8 <\r
139YSCALE, F 510.\r
140YZERO, F 255.\r
141 ORG 10*3+PLTBAS\r
142 FNOP\r
143 JA NAME+3\r
144 0\r
145PLTRET, JA .\r
146XSCALE, F 392.\r
147XZERO, F 0.\r
148RANGE, F 510.\r
149BASE, F 255.>\r
150L1P5, F 1.5\r
151XYPAIR, 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
166PLTLUP, JXN PLOOP,3+ /ANY MORE ROOM IN PLOT BUFFER ?\r
167 LDX -1,3 /NO, FIX COUNT\r
168 JA PLTRET\r
169PLOOP, 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
187SETUP, 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
216PLOTRL, 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
258CTRP0,\r
259 STARTF\r
260CTRP, 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
265LFNOP, FNOP / TWO FNOP INSTRUCTION MUST FOLLOW HERE!\r
266 FNOP\r
267CLRRET, JA PLTRET\r
268LC6, 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
305SCLRET, 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