Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | /LAB8E ADVANCED AVERAGER MS (HP7475A) - DISPLAY AND PLOT OUTPUT.\r |
2 | /\r | |
3 | /DEC-8E-AAA4A-A-LA\r | |
4 | /\r | |
5 | /VERSION FOR HP7475A PLOTTER\r | |
6 | /\r | |
7 | /COPYRIGHT 1972\r | |
8 | /DIGITAL EQUIPMENT CORPORATION\r | |
9 | /MAYNARD, MASSACHUSETTS 01754\r | |
10 | /\r | |
11 | /UPDATE 7-AUG-1984 HA UNIVERSITY GOETTINGEN\r | |
12 | /FIXES BUG IN OVRLAY ROUTINE\r | |
13 | /COPYRIGHT 1984 BY HA\r | |
14 | /\r | |
15 | /UPDATE 29-JAN-1985 KJS UNIVERSITY GOETTINGEN\r | |
16 | /PLOTTER CONTROL CHANGED\r | |
17 | /COPYRIGHT 1985 BY KJS\r | |
18 | \f/FILE AD4.1\r | |
19 | /SECTION IV OF THE LAB8/E ADVANCED AVERAGER .\r | |
20 | /THIS IS PART 4 OF ADVANCED AVERAGER FOR OS-8.\r | |
21 | /OVERLAY FOR PS8.\r | |
22 | \r | |
23 | *7557\r | |
24 | OVRLAY, IOF\r | |
25 | CLA CLL CMA\r | |
26 | CLZE /DISABLE CLOCK\r | |
27 | CLA\r | |
28 | ADCL /AD\r | |
29 | DILC /DISPLAY\r | |
30 | DBDI /I/O\r | |
31 | CDF 0 /CHAIN IN WRITE DATA TO DISK\r | |
32 | DCA I KC7746 /0 PS8 JOB STATUS WORD.\r | |
33 | TAD I XXOV4A /OVERLAY.\r | |
34 | DCA XXOV4\r | |
35 | CIF 10\r | |
36 | JMS I CHAIN\r | |
37 | 6\r | |
38 | XXOV4, 0\r | |
39 | CHAIN, 7700\r | |
40 | XXOV4A, PG0OV+2\r | |
41 | PG0OV=5\r | |
42 | \r | |
43 | MONITR=7600\r | |
44 | CLZE=6130\r | |
45 | ADCL=6530\r | |
46 | DILC=6050\r | |
47 | DBEI=6501\r | |
48 | \r | |
49 | \r | |
50 | \f/LAB-8 ADVANCED AVERAGER - SECTION 4 - [U63A.4]\r | |
51 | /COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. 01754\r | |
52 | \r | |
53 | /\r | |
54 | PWAITD=60 /CONTROLS PEN UP/DOWN DELAY TIME\r | |
55 | /\r | |
56 | /BASIC SUBROUTINES [SU63A]\r | |
57 | BRAN=JMS I 132 /BRANCH ACCORDING TO AC MATCH WITH LIST\r | |
58 | SHFT=JMS I 133 /DOUBLE PRECISION ARITHMETIC SHIFT\r | |
59 | DADD=JMS I 134 /DOUBLE PRECISION ADD\r | |
60 | \r | |
61 | /PAGE ZERO CONSTANTS\r | |
62 | K0004=112\r | |
63 | K0003=113\r | |
64 | K0002=114\r | |
65 | KM0001=115\r | |
66 | \r | |
67 | K0007=116\r | |
68 | KM0027=117\r | |
69 | K0377=120\r | |
70 | KM0004=121\r | |
71 | \f\r | |
72 | /TEMPORARY STORAGE REGISTERS 146=177\r | |
73 | TEMP01=146\r | |
74 | TEMP02=147\r | |
75 | TEMP03=150\r | |
76 | TEMP04=151\r | |
77 | TEMP05=152\r | |
78 | TEMP06=153\r | |
79 | TEMP07=154\r | |
80 | TEMP10=155\r | |
81 | \r | |
82 | TEMP11=156\r | |
83 | TEMP12=157\r | |
84 | TEMP13=160\r | |
85 | TEMP14=161\r | |
86 | TEMP15=162\r | |
87 | TEMP16=163\r | |
88 | TEMP17=164\r | |
89 | TEMP20=165\r | |
90 | TEMP21=166\r | |
91 | \r | |
92 | /TEMPORARY STORAGE AND MULTIPLE ACCUMULATORS\r | |
93 | ARITH0=167\r | |
94 | TEMP22=167\r | |
95 | \r | |
96 | ARITH1=170\r | |
97 | TEMP23=170\r | |
98 | \r | |
99 | ARITH2=171\r | |
100 | TEMP24=171\r | |
101 | \r | |
102 | ARITH3=172\r | |
103 | TEMP25=172\r | |
104 | \r | |
105 | ARITH4=173\r | |
106 | TEMP26=173\r | |
107 | \r | |
108 | ARITH5=174\r | |
109 | TEMP27=174\r | |
110 | \r | |
111 | /TEMPORARY STORAGE AND TTY-KBD BUFFERS\r | |
112 | KBDBUF=175\r | |
113 | TEMP30=175\r | |
114 | \r | |
115 | TTYBUF=176\r | |
116 | TEMP31=176\r | |
117 | \r | |
118 | TTYFLG=177\r | |
119 | TEMP32=177\r | |
120 | \f\r | |
121 | /IOT REFERENCES FOR THE LAB/8E\r | |
122 | /\r | |
123 | /\r | |
124 | /AD8-EA 10 BIT A/D CONVERTER\r | |
125 | /\r | |
126 | \r | |
127 | ADCL=6530 /CLEAR ALL\r | |
128 | ADLM=6531 /LOAD MPLXR\r | |
129 | ADST=6532 /START CONVERSION\r | |
130 | ADRB=6533 /READ AD BUFFER\r | |
131 | ADSK=6534 /SKIP ON AD DONE\r | |
132 | ADSE=6535 /SKIP ON TIMING ERROR\r | |
133 | ADLE=6536 /LOAD ENABLE REGISTER\r | |
134 | ADRS=6537 /READ STATUS REGISTER\r | |
135 | /\r | |
136 | /VC8-E POINT PLOT DISPLAY\r | |
137 | /\r | |
138 | DILC=6050 /CLEAR ALL\r | |
139 | DICD=6051 /CLEAR DONE FLAG\r | |
140 | DISD=6052 /SKIP ON DONE FLAG\r | |
141 | DILX=6053 /CLEAR DONE FLAG LOAD X\r | |
142 | DILY=6054 /CLEAR DONE FLAG LOAD Y\r | |
143 | DIXY=6055 /CLEAR DONE, INTENSIFY, SET DONE\r | |
144 | DILE=6056 /LOAD ENABLE CLEAR AC\r | |
145 | DIRE=6057 /ENABLE TO AC\r | |
146 | /\r | |
147 | /DK8-EP REAL TIME CLOCK\r | |
148 | /\r | |
149 | CLZE=6130 /ZERO TO ENABLE\r | |
150 | CLSK=6131 /SKP ON CLOCK FG\r | |
151 | CLOE=6132 /ONES TO ENABLE\r | |
152 | CLAB=6133 /AC TO CLK BUF AND COUNTER REGISTER\r | |
153 | CLEN=6134 /ENABLE TO AC\r | |
154 | CLSA=6135 /STATUS TO AC AND AC ONE'S CLEAR STATUS REG.\r | |
155 | CLBA=6136 /CLK BUF TO AC\r | |
156 | CLCA=6137 /CLK CNTR TO AC AND TO AC\r | |
157 | /\r | |
158 | /DB8-EA 12 CHANNEL DIGITAL I/O\r | |
159 | /\r | |
160 | DBDI=6500 /DISABLE INTERRUPT\r | |
161 | DBEI=6501 /ENABLE INTERRUPT\r | |
162 | DBSK=6502 /SKIP ON INPUT\r | |
163 | DBCI=6503 /CLEAR INPUT BITS WITH SET AC BIT\r | |
164 | DBRI=6504 /READ INPUT\r | |
165 | DBCO=6505 /CLEAR OUTPUT BITS WITH AC BITS\r | |
166 | DBSO=6506 /SET OUTPUT BITS WITH AC BITS\r | |
167 | DBRO=6507 /READ OUTPUT REGISTER\r | |
168 | \r | |
169 | /COMBINED OPERATES\r | |
170 | MTH=CLA CMA CLL RTL; MTW=CLA CMA CLL RAL\r | |
171 | TWO=CLA CLL CML RTL; TWOK=CLA CLL CML RTR\r | |
172 | BSW=7002\r | |
173 | \r | |
174 | /EXTENDED MEMORY\r | |
175 | CDF=6201; RDF=6214; RMF=6244\r | |
176 | \r | |
177 | \f\r | |
178 | \r | |
179 | /PAGE ZERO\r | |
180 | /CONSTANTS\r | |
181 | \r | |
182 | *112\r | |
183 | \r | |
184 | K0004, 0004\r | |
185 | K0003, 0003\r | |
186 | K0002, 0002\r | |
187 | KM0001, -1\r | |
188 | K0007, 7\r | |
189 | KM0027, -27\r | |
190 | K0377, 377\r | |
191 | KM0004, -4\r | |
192 | K0005A, 0005\r | |
193 | K0200, 200\r | |
194 | KM1000, -1000\r | |
195 | KM1777, -1777\r | |
196 | K6777, 6777\r | |
197 | KC7600, 7600\r | |
198 | \r | |
199 | /LINKAGES\r | |
200 | \r | |
201 | *132\r | |
202 | \r | |
203 | 6341 /BRAN\r | |
204 | 6302 /SHFT\r | |
205 | 6362 /DADD\r | |
206 | KSTART, START\r | |
207 | \r | |
208 | /SUBROUTINE TO READ VALUE OF A KNOB\r | |
209 | \r | |
210 | *20\r | |
211 | START0, CDF 10\r | |
212 | TAD I KC7600 /RESTORE BLOCK ADD. FOR CHAIN IN LOC 7.\r | |
213 | /SAVED BY SEC 3.\r | |
214 | CDF 0\r | |
215 | DCA 7\r | |
216 | JMP I KSTART\r | |
217 | \r | |
218 | \r | |
219 | KNOBS, 0\r | |
220 | ADLM /LOAD MUX\r | |
221 | ADST /START CONVERSION\r | |
222 | ADSK /WAIT\r | |
223 | JMP .-1\r | |
224 | ADRB /READ RANGE: 777,-1000\r | |
225 | TAD K6777 /RANGE -3777, -1\r | |
226 | JMP I KNOBS\r | |
227 | \r | |
228 | /SUBROUTINE TO LOAD Y DAC AND DISPLAY\r | |
229 | \r | |
230 | DOY, 0\r | |
231 | DILY /LOAD Y\r | |
232 | DISD /WAIT FOR SETTLE\r | |
233 | JMP .-1\r | |
234 | DIXY /DISPLAY\r | |
235 | JMP I DOY\r | |
236 | \r | |
237 | / LINKS TO PLOTTER SUBROUTINE IN FIELD 3\r | |
238 | HPLON, H3PLON\r | |
239 | HPLOF, H3PLOF\r | |
240 | HPENU, H3PENU\r | |
241 | HPEND, H3PEND\r | |
242 | HPLOT, H3PLOT\r | |
243 | HPLGR, H3PLGR\r | |
244 | \f\r | |
245 | *6400\r | |
246 | /THIS SECTION DISPLAYS, SCALES, AND OUTPUTS M, C, 1000T \r | |
247 | \r | |
248 | /MAIN DISPLAY AND INITIATION FOR SECTION 5\r | |
249 | START, TAD I K0200 /SET JOBLIST POINTER TO FIRST JOB\r | |
250 | IAC\r | |
251 | DCA JPNTR /JOB LIST POINTER\r | |
252 | JPNTR=10\r | |
253 | DCA SFACTR /PRESET SCALE FACTOR\r | |
254 | SFACTR=TEMP32\r | |
255 | TAD KPLOT /AUTO RESET AT 1 MS A TICK\r | |
256 | CLOE\r | |
257 | CMA\r | |
258 | CLZE\r | |
259 | \r | |
260 | DISJOB, CLA CMA\r | |
261 | DCA PMODE /PMODE .NE. 0 FOR NO PLOT\r | |
262 | PMODE=TEMP31\r | |
263 | JMS I JSETX /SETUP DATA POINTERS, COUNTERS, DISPLAY\r | |
264 | TAD TJTYPE /GET #LOC TO SKIP OVER WHEN DISPLAYING MEAN\r | |
265 | BRAN\r | |
266 | K0003\r | |
267 | IAC /SD. AND TREND, SKIP 3\r | |
268 | TAD K0002 /S.D., SKIP 2\r | |
269 | DCA TSKIP\r | |
270 | TSKIP=TEMP15\r | |
271 | KSF /KBD STRUCK?\r | |
272 | JMP DISAVG /NO, GO DISPLAY\r | |
273 | KRB /YES, GET CHARACTER\r | |
274 | BRAN /CHECK AGAINST RESPONSE LIST\r | |
275 | KBDLST\r | |
276 | MTW /X - EXPAND, SCALE UP\r | |
277 | JMP NEWSF /C - CONTRACT, SCALE DOWN\r | |
278 | JMP I PGRDAX /P - FIRST GRID, THAN DATA\r | |
279 | JMP I PDAX /D - DATA ONLY\r | |
280 | JMP I TDATAX /T - TYPE DATA\r | |
281 | JMP I PGRX /G - GRID\r | |
282 | JMP NXTJOB /CR - DISPLAY NEXT JOB\r | |
283 | JMP I IDATAX /I - INTEGRATE\r | |
284 | JMP I OVRLAX /^W - WRITE DATA.\r | |
285 | JMP I OS8 /^C - RETURN TO OS8.\r | |
286 | JMP START /^Z - FIRST JOB\r | |
287 | KECHO, TAD TEMP02 /ECHO\r | |
288 | JMS I TYPEX\r | |
289 | \r | |
290 | DISAVG, JMS GDATAS /GET M (2 WDS) AND SCALE\r | |
291 | JMS I DISPX /DISPLAY M/2^K\r | |
292 | JMS I BLKCNX /MOVE TO NEXT, CHECK FOR END\r | |
293 | JMP DISAVG /NOT ENDED, DISPLAY NEXT POINT\r | |
294 | CLA CMA /ENDED, IS JOB TYPE=1?\r | |
295 | TAD TJTYPE /(1 FOR MEAN ONLY)\r | |
296 | SNA CLA\r | |
297 | JMP DISEND /YES, DISPLAY OF JOBS IS DONE\r | |
298 | JMS I JSETX /NO, SETUP TO DISPLAY MEAN + CF'S\r | |
299 | \f\r | |
300 | DISPSD, JMS GDATAS /GET M AND SCALE\r | |
301 | DCA TMEAN /SAVE M/(2^K)\r | |
302 | TMEAN=TEMP02\r | |
303 | JMS GDATAS /GET 2S/SQRT(N) AND SCALE\r | |
304 | TAD TMEAN /[M+2S/SQRT(N)]/2^K\r | |
305 | JMS I DISPX /DISPLAY IT\r | |
306 | MTW /SKIP OVER TREND IF PRESENT\r | |
307 | JMS I BLKCNX /MOVE TO NEXT DATA POINT, CHECK FOR END\r | |
308 | JMP DISPSD /NOT ENDED, DISPLAY NEXT POINT\r | |
309 | JMS I JSETX /ENDED, SETUP FOR DISPLAY OF MEAN - CF\r | |
310 | DISMSD, JMS GDATAS /GET NM AND SCALE\r | |
311 | DCA TMEAN /SAVE M/2^K\r | |
312 | JMS GDATAS /GET 2S/SQRT(N) AND SCALE\r | |
313 | CMA IAC\r | |
314 | TAD TMEAN /[M-2S/SQRT(N)]/2^K\r | |
315 | JMS I DISPX /DISPLAY IT\r | |
316 | MTW /SKIP OVER TREND IF PRESENT\r | |
317 | JMS I BLKCNX /ANY MORE POINTS?\r | |
318 | JMP DISMSD /MORE POINTS TO DISPLAY, CONTINUE\r | |
319 | MTW /IS JOB TYPE=3?\r | |
320 | TAD TJTYPE /(3 FOR AVG, CF, AND TREND)\r | |
321 | SNA CLA\r | |
322 | JMP DISEND /NO, DISPLAY OF THIS JOB IS DONE\r | |
323 | JMS I JSETX /YES, SETUP TO DISPLAY 1000T\r | |
324 | DCA TSKIP /SKIP NO POINTS AFTER TREND\r | |
325 | DISTRN, TAD K0004 /SKIP MEAN AND CF\r | |
326 | TAD GETPNT\r | |
327 | DCA GETPNT\r | |
328 | JMS I GCDFSX /GET 1000T\r | |
329 | CDF 0 /(*)\r | |
330 | CLL RTR\r | |
331 | RTR\r | |
332 | AND K0377\r | |
333 | TAD KM0775\r | |
334 | JMS I DISPX /DISPLAY RANGES FROM -377+0 TO -377+177\r | |
335 | JMS I BLKCNX /MOVE TO NEXT DATA PNT, CHECK FOR DONE\r | |
336 | JMP DISTRN /NOT DONE. DO NEXT POINT\r | |
337 | \r | |
338 | DISEND, TAD PMODE /NO MORE POINTS IN THIS JOB\r | |
339 | SZA CLA /ARE WE PLOTTING?\r | |
340 | JMP DISJOB /NO, RESTART JOB\r | |
341 | CIF 30 / PLOT DONE\r | |
342 | JMS I HPLOF\r | |
343 | JMP DISJOB /RESUME DISPLAY MODE\r | |
344 | \r | |
345 | \f/SUBROUTINE TO GET DBL DATA WORD AND SCALE\r | |
346 | /RESULT IN ARITH2 AND AC\r | |
347 | GDATAS, 0\r | |
348 | JMS I GCDFSX /GET CDF AND 1ST WORD\r | |
349 | DCA ARITH1 /SAVE IN HI FAC (*)\r | |
350 | TAD I GETPNT /GET LO ORDER PART (*)\r | |
351 | DCA ARITH2 /(*)\r | |
352 | CDF 0 /BACK TO FIELD 0 (*)\r | |
353 | TAD SFACTR /SCALE\r | |
354 | SHFT\r | |
355 | TAD ARITH1\r | |
356 | JMP I GDATAS\r | |
357 | \r | |
358 | /NEW SCALE FACTOR\r | |
359 | NEWSF, CMA /AC=-1 FOR C, +1 FOR X\r | |
360 | TAD SFACTR\r | |
361 | DCA SFACTR\r | |
362 | JMP KECHO\r | |
363 | \r | |
364 | /LOCAL CONSTANTS\r | |
365 | K4077, 4077\r | |
366 | KM0775, -775\r | |
367 | KPLOT, 5400\r | |
368 | \r | |
369 | /LOCAL CROSSPAGE\r | |
370 | JSETX, JSETS\r | |
371 | TYPEX, TYPES\r | |
372 | GCDFSX, GCDFS\r | |
373 | BLKCNX, BLKCNS\r | |
374 | PGRDAX, PGRDA\r | |
375 | PDAX, PDA\r | |
376 | PGRX, PGR\r | |
377 | TDATAX, TDATA\r | |
378 | DISPX, DISPS\r | |
379 | TMESSX, TMESS\r | |
380 | IDATAX, IDATA\r | |
381 | OVRLAX, OVRLAY\r | |
382 | OS8, 7600\r | |
383 | \f*6600\r | |
384 | /SAVE SCALE AND GO TO NEXT JOB\r | |
385 | NXTJOB, TAD JPNTR /MASK SCALE FACTOR INTO J1 BITS 8-11\r | |
386 | DCA PJPNT /ADDRESS OF J1 FOR CURRENT JOB\r | |
387 | PJPNT=TEMP01\r | |
388 | TAD I PJPNT /J1: A/B(1), SF(5), 1(1), CHORD(5)\r | |
389 | AND K4077 /MASK OUT OLD SF\r | |
390 | DCA I PJPNT /J1: A/B(1), 0(5), 1(1), CHORD(5)\r | |
391 | TAD SFACTR\r | |
392 | SPA /SCALE FACTOR LESS THAN 0 ILLEGAL\r | |
393 | CLA\r | |
394 | BSW\r | |
395 | AND K3700\r | |
396 | TAD I PJPNT /J1: A/B(1),0(5), 1(1), CHORD(5)\r | |
397 | DCA I PJPNT /J1: A/B(1), SF#(5), 1(1), CHORD(5)\r | |
398 | TAD K0006 /MOVE TO NEXT JOB\r | |
399 | TAD JPNTR\r | |
400 | DCA JPNTR\r | |
401 | JMS CRLFS /TYPE <CRLF>\r | |
402 | TAD I JPNTR\r | |
403 | SZA CLA\r | |
404 | JMP I DISJOX /DISPLAY NEXT JOB\r | |
405 | JMP I .+1 /NO MORE JOBS, DISPLAY FIRST AGAIN\r | |
406 | START\r | |
407 | \r | |
408 | /LOCAL CONSTANT\r | |
409 | K0006, 6\r | |
410 | K0212, 0212\r | |
411 | K3700, 3700\r | |
412 | \r | |
413 | /LOCAL CROSSPAGE\r | |
414 | DISJOX, DISJOB\r | |
415 | TMESSY, TMESS\r | |
416 | GCDFY, GCDF\r | |
417 | DISPY, DISPS\r | |
418 | \f/SUBROUTINE TO SET UP DATA POINTERS, COUNTERS, AND DISPLAY\r | |
419 | JSETS, 0\r | |
420 | TAD I JPNTR /GET J2 TYPE (4), SORT CODE (8)\r | |
421 | RTL /PUT TYPE IN AC8-11\r | |
422 | RTL\r | |
423 | RAL\r | |
424 | AND K0017 /MASK OUT REST OF J2\r | |
425 | DCA TJTYPE /TYPE CODE\r | |
426 | TJTYPE=TEMP30\r | |
427 | TAD I JPNTR /J3: LINK 1 (- COUNT OF FIRST BLOCK)\r | |
428 | DCA BLCNTR\r | |
429 | BLCNTR=TEMP25\r | |
430 | TAD I JPNTR /J4: LINK 2 (DATA FIELD FOR FIRST BLOCK)\r | |
431 | DCA I GCDFY\r | |
432 | TAD I JPNTR /J5: LINK 3 (START OF FIRST BLOCK-1)\r | |
433 | IAC\r | |
434 | DCA GETPNT\r | |
435 | GETPNT=12\r | |
436 | TAD I JPNTR /J6: DELTAX (8), YSCALE (4)\r | |
437 | DCA ARITH2 /PREPARE TO SHIFT TO SETUP BINARY POINT OF DX\r | |
438 | DCA ARITH1\r | |
439 | TAD K0005A /DELTAX (8): INTEGER PART (5), FRACTION (3)\r | |
440 | SHFT\r | |
441 | TAD ARITH1\r | |
442 | DCA DELTAX\r | |
443 | DELTAX=TEMP21\r | |
444 | TAD ARITH2\r | |
445 | DCA DELTAX+1\r | |
446 | TAD KM0005 /MOVE JOB POINTER BACK TO TOP OF JOB\r | |
447 | TAD JPNTR\r | |
448 | DCA JPNTR\r | |
449 | TAD PMODE /PLOT MODE?\r | |
450 | SZA CLA\r | |
451 | JMP CHAS\r | |
452 | CIF 30\r | |
453 | JMS I HPENU / P E N U P\r | |
454 | CHAS, TAD KM1000\r | |
455 | DILX /SET DISPLAY X TO LEFT EDGE\r | |
456 | DCA ARITH4\r | |
457 | \f JMS KNOBS /GET CURRENT CURSOR SETTING FROM KNOBS 0 AND 1\r | |
458 | DCA CURSE1\r | |
459 | CURSE1=TEMP20\r | |
460 | CLA IAC\r | |
461 | JMS KNOBS\r | |
462 | DCA CURSE2\r | |
463 | CURSE2=TEMP17\r | |
464 | JMP I JSETS\r | |
465 | \r | |
466 | /LOCAL CONSTANTS\r | |
467 | K0017, +17\r | |
468 | GDATAX, GDATAS\r | |
469 | K0034, +34\r | |
470 | K0062, 62\r | |
471 | K0215, 215\r | |
472 | KM0005, -05\r | |
473 | KM0012, -12\r | |
474 | \r | |
475 | PGR, CLA / PLOT GRID\r | |
476 | CIF 30\r | |
477 | JMS I HPLON\r | |
478 | CIF 30\r | |
479 | JMS I HPLGR\r | |
480 | CLA\r | |
481 | JMP DISJOB\r | |
482 | \r | |
483 | PGRDA, CLA / PLOT GRID AND DATA\r | |
484 | CIF 30\r | |
485 | JMS I HPLON\r | |
486 | CIF 30\r | |
487 | JMS I HPLGR\r | |
488 | CLA\r | |
489 | JMP DISJOB+1\r | |
490 | \r | |
491 | PDA, CLA / PLOT DATA\r | |
492 | CIF 30\r | |
493 | JMS I HPLON\r | |
494 | CLA\r | |
495 | JMP DISJOB+1\r | |
496 | \f/SUBROUTINE TO TYPE ASCII IN AC\r | |
497 | TYPES, 0\r | |
498 | TLS\r | |
499 | TSF\r | |
500 | JMP .-1\r | |
501 | TCF\r | |
502 | CLA\r | |
503 | JMP I TYPES\r | |
504 | \r | |
505 | /SUBROUTINE TO TYPE <CRLF>\r | |
506 | CRLFS, 0\r | |
507 | TAD K0215\r | |
508 | JMS TYPES\r | |
509 | TAD K0212\r | |
510 | JMS TYPES\r | |
511 | JMP I CRLFS\r | |
512 | \r | |
513 | \f *7000\r | |
514 | /SUBROUTINE TO DISPLAY POINT: SCALE, BIAS, INCREMENT X\r | |
515 | DISPS, 0\r | |
516 | DCA YSAVE\r | |
517 | YSAVE=TEMP14\r | |
518 | TAD ARITH4 /X FOR NEXT POINT\r | |
519 | DILX\r | |
520 | CLA\r | |
521 | TAD YSAVE /GET POINT\r | |
522 | JMS DOY /DISPLAY IT\r | |
523 | CLA\r | |
524 | TAD PMODE /RUNNING PLOTTER?\r | |
525 | SZA CLA\r | |
526 | JMP DXINC /NO, INCREMENT X AND CONTINUE\r | |
527 | CIF 30\r | |
528 | JMS I HPLOT / PLOT DATA (ARITH4,YSAVE)\r | |
529 | \r | |
530 | DXINC, TAD DELTAX /SETUP X FOR NEXT POINT\r | |
531 | DCA ARITH1\r | |
532 | TAD DELTAX+1\r | |
533 | DCA ARITH2\r | |
534 | DADD /INCREMENT BY DISTANCE BETWEEN POINTS\r | |
535 | JMS CURSES /CURSOR REACHED?\r | |
536 | SKP /YES\r | |
537 | JMP I DISPS /NO\r | |
538 | TAD KM0027\r | |
539 | DCA CRCNTR\r | |
540 | CRCNTR=TEMP01 /INTENSIFY CURSOR\r | |
541 | DIXY\r | |
542 | ISZ CRCNTR /POSITION\r | |
543 | JMP .-2\r | |
544 | JMP I DISPS\r | |
545 | \f/LOCAL CROSSPAGE\r | |
546 | TMESSZ, TMESS\r | |
547 | \r | |
548 | /LOCAL CONSTANTS\r | |
549 | K0777, 777\r | |
550 | K1000, 1000\r | |
551 | K0022, +022\r | |
552 | \r | |
553 | /SUBROUTINE TO MOVE TOWARD CURSOR\r | |
554 | CURSES, 0\r | |
555 | ISZ CURSE1\r | |
556 | SKP /NOT AT CURSOR1\r | |
557 | JMP I CURSES /EXIT, AT CURSOR1\r | |
558 | ISZ CURSE2\r | |
559 | ISZ CURSES /NOT AT CURSOR, EXIT TO CALL+2\r | |
560 | JMP I CURSES /IF AT CURSOR2, EXIT TO CALL+1\r | |
561 | \r | |
562 | /SUBROUTINE TO CHECK BLOCK AND LINK TO NEXT IF REQUIRED\r | |
563 | /EXIT TO CALL +2 IF END OF FILE REACHED\r | |
564 | BLKCNS, 0\r | |
565 | TAD TSKIP /MOVE GETPNT TO NEXT DATA POINT\r | |
566 | TAD GETPNT\r | |
567 | DCA GETPNT\r | |
568 | ISZ BLCNTR /BLOCK COMPLETE?\r | |
569 | JMP I BLKCNS /NO, CONTINUE\r | |
570 | JMS GCDFS /YES, END OF FILE?\r | |
571 | SNA /L1: -COUNT FOR NEXT BLOCK (*)\r | |
572 | ISZ BLKCNS /END OF FILE EXIT TO CALL+2(*)\r | |
573 | DCA BLCNTR /RESET COUNTER(*)\r | |
574 | TAD I GETPNT /L2: CDF N (*)\r | |
575 | DCA GCDF /RESET DATA FIELD (*)\r | |
576 | TAD I GETPNT /L3: START OF NEW BLOCK-1(*)\r | |
577 | DCA GETPNT /RESET DATA POINTER(*)\r | |
578 | CDF 0 /(*)\r | |
579 | JMP I BLKCNS\r | |
580 | \r | |
581 | /SUBROUTINE TO SET DATA FIELD AND GET 1 WORD\r | |
582 | GCDFS, 0\r | |
583 | GCDF, CDF /CURRENT DATA FELD\r | |
584 | TAD I GETPNT /GET DATA (*)\r | |
585 | JMP I GCDFS /(*)\r | |
586 | \f/KEYBOARD LIST\r | |
587 | KBDCHK, +221 /CTRL/Q\r | |
588 | -215 /CR\r | |
589 | \r | |
590 | *7200\r | |
591 | /TYPE DATA IN JOB\r | |
592 | TDATA, JMS PRETYP\r | |
593 | DCA TSKIP /SKIP NOTHING\r | |
594 | TYPLUP, TAD TJTYPE /JOB TYPE: 1, 2, OR 3\r | |
595 | CMA IAC\r | |
596 | DCA TYPCNT\r | |
597 | TYPCNT=TEMP02\r | |
598 | JMS I CRLFX /NEW LINE\r | |
599 | TAD CHANNL /TYPE DATA POINT #\r | |
600 | JMS NUMTYP\r | |
601 | JMS SHFTYP /TYPE SCALED MEAN IN MV\r | |
602 | ISZ TYPCNT /CF COMPUTED?\r | |
603 | SKP /YES\r | |
604 | JMP TYPEND /NO\r | |
605 | JMS SHFTYP /TYPE SCALED CF IN MV\r | |
606 | ISZ TYPCNT /TREND COMPUTED?\r | |
607 | JMS ABSTYP /TYPE 1000T\r | |
608 | TYPEND, JMS I CURSEY /REACHED SECOND CURSOR?\r | |
609 | JMP TYPDUN /YES\r | |
610 | ISZ CHANNL /NO\r | |
611 | JMS I BLKCNY /CHECK FOR END OF JOB\r | |
612 | JMP TYPLUP /NOT ENDED, CONTINUE\r | |
613 | TYPDUN, CLA CLL CMA\r | |
614 | TAD SFACTR\r | |
615 | DCA SFACTR\r | |
616 | JMS I CRLFX /NEW LINE\r | |
617 | JMP I DISJOY /DONE. RETURN TO DISPLAY\r | |
618 | \r | |
619 | /LOCAL CONSTANTS\r | |
620 | K0254, 254 /ASCII COMMA\r | |
621 | K0257, 257 \r | |
622 | KMD1K, -1750 /-1000(10)\r | |
623 | KMCTRL, -221\r | |
624 | KMD100, -144 /-100(10)\r | |
625 | KMD010, -12 /-10(10)\r | |
626 | \r | |
627 | /LOCAL CROSSPAGE\r | |
628 | CRLFX, CRLFS\r | |
629 | TYPEY, TYPES\r | |
630 | BLKCNY, BLKCNS\r | |
631 | DISJOY, DISJOB\r | |
632 | GDATAY, GDATAS\r | |
633 | GCDFSY, GCDFS\r | |
634 | CURSEY, CURSES\r | |
635 | SGNTYX, SGNTYP\r | |
636 | \f/GET DOUBLEWORD DATA POINT, SCALE BY 4, SIGN EXTEND, TYPE SIGNED\r | |
637 | SHFTYP, 0\r | |
638 | JMS I GDATAY /GET DOUBLEWORD AND SCALE BY SF\r | |
639 | JMS I SGNTYX /TYPE SIGNED VALUE IN AC\r | |
640 | JMP I SHFTYP\r | |
641 | \r | |
642 | /TYPE ABSOLUTE VALUE SINGLE WORD IN DATA BLOCK\r | |
643 | ABSTYP, 0\r | |
644 | JMS I GCDFSY /GET DATA WORD (*)\r | |
645 | CDF 0 /(*)\r | |
646 | JMS NUMTYP /TYPE DECIMAL VALUE IN AC\r | |
647 | JMP I ABSTYP\r | |
648 | \r | |
649 | /TYPE DECIMAL VALUE IN AC\r | |
650 | NUMTYP, 0\r | |
651 | DCA ARITH4 /# TO RADIX DEFLATE\r | |
652 | TAD KMD1K /REDUCE BY FACTORS OF 1000(10)\r | |
653 | JMS GDIGIT /TYPE DIGIT FOR 1000'S\r | |
654 | TAD KMD100 /REDUCE BY FACTORS OF 100(10)\r | |
655 | JMS GDIGIT /TYPE DIGIT FOR 100'S\r | |
656 | TAD KMD010 /REDUCE BY FACTORS OF 10'S\r | |
657 | JMS GDIGIT /TYPE DIGIT FOR 10'S\r | |
658 | CLA CMA /REDUCE BY FACTORS OF 1\r | |
659 | JMS GDIGIT /TYPE DIGIT FOR 1'S\r | |
660 | TAD K0254\r | |
661 | JMS I TYPEY /TYPE 1 COMMA\r | |
662 | JMP I NUMTYP\r | |
663 | \r | |
664 | /SUBROUTINE SETS UP FOR TYPING\r | |
665 | PRETYP, 0\r | |
666 | JMS I CRLFX /<CRLF>\r | |
667 | CLA CMA /MOVE POINTER BACK TO SWEEP COUNT\r | |
668 | TAD GETPNT\r | |
669 | DCA GETPNT\r | |
670 | JMS ABSTYP /# OF SWEEPS IN AVERAGE\r | |
671 | TAD SFACTR /SCALE FACTOR\r | |
672 | JMS I SGNTYX\r | |
673 | CLA CLL IAC /TYPEOUT IS IN MV (2MV/COUNT)\r | |
674 | TAD SFACTR\r | |
675 | DCA SFACTR\r | |
676 | DCA CHANNL /DATA POINT # INIT TO 0\r | |
677 | CHANNL=TEMP16\r | |
678 | PRESKP, JMS I CURSEY /LOOK FOR FIRST CURSOR\r | |
679 | JMP I PRETYP /FOUND IT, EXIT\r | |
680 | ISZ CHANNL /NO CURSOR YET, INDEX POINT #\r | |
681 | TWO\r | |
682 | JMS I BLKCNY /STEP THRU DATA POINT\r | |
683 | JMP PRESKP /MORE DATA POINTS, CONTINUE\r | |
684 | JMP TYPDUN /END OF DATA POINTS AND NO CURSOR, GO BACK TO DISPLAY.\r | |
685 | \r | |
686 | \f/SUBROUTINE TO PRINT MESSAGE AND WAIT FOR CR\r | |
687 | TMESS, 0\r | |
688 | TAD I TMESS /ADDR OF MESS-1 AT CALL+1\r | |
689 | DCA TYPNTR\r | |
690 | TYPNTR=13\r | |
691 | ISZ TMESS /EXIT TO CALL+2\r | |
692 | TAD I TYPNTR /GET NEXT CHARACTER\r | |
693 | SNA /0 INDICATES END OF MESS.\r | |
694 | JMP TWAIT /END\r | |
695 | JMS I TYPEY /TYPE CHARACTER\r | |
696 | JMP .-4 /CONTINUE\r | |
697 | \r | |
698 | TWAIT, KSF /END, WAIT FOR CR\r | |
699 | JMP .-1\r | |
700 | KRB\r | |
701 | BRAN\r | |
702 | KBDCHK\r | |
703 | JMP I DISJOY /^Q TYPED, RESTART DISPLAY\r | |
704 | JMS I CRLFX /C.R. TYPED, ECHO IT\r | |
705 | JMP I TMESS /OTHER OR CR, RESUME\r | |
706 | \r | |
707 | /FINDS DIGIT AND TYPES IT\r | |
708 | GDIGIT, 0\r | |
709 | DCA ARITH1 /FACTOR TO DEFLATE BY\r | |
710 | DCA NDIGIT /DIGIT=0\r | |
711 | NDIGIT=TEMP01\r | |
712 | TAD ARITH4\r | |
713 | GLOOP, DCA ARITH4 /SAVE NEW REDUCED ARGUMENT\r | |
714 | TAD ARITH4 /AND PREPARE TO REDUCE AGAIN\r | |
715 | CLL\r | |
716 | TAD ARITH1 /TRIAL SUBTRACTION\r | |
717 | ISZ NDIGIT /INDEX DIGIT\r | |
718 | SZL\r | |
719 | JMP GLOOP /SUBTRACT SOME MORE\r | |
720 | CLA /THAT'S ALL FOR THIS DIGIT\r | |
721 | TAD K0257 /DIGIT IS NDIGIT-1\r | |
722 | TAD NDIGIT /TYPE ASCII\r | |
723 | JMS I TYPEY\r | |
724 | KSF /CHECK FOR CTRL Q\r | |
725 | JMP I GDIGIT /NO KEY, EXIT\r | |
726 | KRB /KEY, BUT IS IT CTRL Q?\r | |
727 | TAD KMCTRL\r | |
728 | SZA CLA\r | |
729 | JMP I GDIGIT /NO, EXIT\r | |
730 | JMP TYPDUN /YES RESUME DISPLAY\r | |
731 | \r | |
732 | \r | |
733 | ZBLOCK 5\r | |
734 | \f/INTEGRATE DATA BETWEEN CURSORS\r | |
735 | IDATA, JMS PRETYP /INITIALIZE TYPEOUT\r | |
736 | TAD CHANNL /LO LIMIT OF INTEGRATION\r | |
737 | JMS NUMTYP\r | |
738 | DCA AVGSUM /CLEAR PARTIAL SUMS\r | |
739 | AVGSUM=TEMP21\r | |
740 | DCA CFLSUM\r | |
741 | CFLSUM=TEMP22\r | |
742 | DCA AVGFLG /CLEAR OFLO FLAGS\r | |
743 | AVGFLG=TEMP14\r | |
744 | DCA CFLFLG\r | |
745 | CFLFLG=TEMP13\r | |
746 | ILOOP, TAD AVGSUM /PREPARE TO UPDATE SUMS\r | |
747 | JMS UPSUM\r | |
748 | ISZ AVGFLG /OVERFLOW RETURN, SET FLAG\r | |
749 | DCA AVGSUM\r | |
750 | CLA CMA /CF'S COMPUTED?\r | |
751 | TAD TJTYPE\r | |
752 | SNA CLA\r | |
753 | JMP IDONE /NO, CONTINUE\r | |
754 | TAD CFLSUM /YES UPDATE THAT SUM\r | |
755 | JMS UPSUM\r | |
756 | ISZ CFLFLG /OVERFLOW RETURN, SET FLAG\r | |
757 | DCA CFLSUM\r | |
758 | MTW /ALREADY PAST CF'S.\r | |
759 | IDONE, ISZ CHANNL /UPDATE DATA POINT #\r | |
760 | JMS I BLKCNZ /MOVE TO NEXT DATA POINT\r | |
761 | JMS I CURSEZ /REACHED SECOND CURSOR?\r | |
762 | SKP /AT SECOND CURSOR OR OUT OF DATA\r | |
763 | JMP ILOOP /CONTINUE\r | |
764 | CLA CMA /GET # OF LAST DATA POINT\r | |
765 | TAD CHANNL\r | |
766 | JMS I NUMTYX\r | |
767 | TAD AVGSUM /TYPE SUM\r | |
768 | JMS SGNTYP\r | |
769 | TAD AVGFLG /TYPE OVERFLOW MARK\r | |
770 | JMS OMARK\r | |
771 | CLA CMA /CFLSUM CALCULATED?\r | |
772 | TAD TJTYPE\r | |
773 | SNA CLA\r | |
774 | JMP .+5 /NO, EXIT\r | |
775 | TAD CFLSUM /YES, OUTPUT INTEGRAL OF CFL'S.\r | |
776 | JMS I NUMTYX\r | |
777 | TAD CFLFLG /OVERFLOW MARK IF REQ.\r | |
778 | JMS OMARK\r | |
779 | JMP I .+1 /TYPE SOME CRLF, RESTORE SCALE FACTOR\r | |
780 | TYPDUN /AND RESUME DISPLAY\r | |
781 | \f/SUBROUTINE TO TYPE SIGNED # IN AC\r | |
782 | SGNTYP, 0\r | |
783 | DCA ARITH4\r | |
784 | TAD ARITH4\r | |
785 | SPA CLA /TYPE CORRECT SIGN: " " OR "-"\r | |
786 | TAD K0015 /MAKE A "-"\r | |
787 | TAD K240\r | |
788 | JMS I TYPEZ\r | |
789 | TAD ARITH4\r | |
790 | SPA\r | |
791 | CMA IAC /GET ABS VALUE\r | |
792 | JMS I NUMTYX /AND TYPE IT\r | |
793 | JMP I SGNTYP\r | |
794 | \r | |
795 | /LOCAL CROSSPAGE\r | |
796 | NUMTYX, NUMTYP\r | |
797 | BLKCNZ, BLKCNS\r | |
798 | CURSEZ, CURSES\r | |
799 | TYPEZ, TYPES\r | |
800 | GDATAZ, GDATAS\r | |
801 | \r | |
802 | /SUBROUTINE TO GET SUM OF AC AND NEXT DATA POINT\r | |
803 | UPSUM, 0\r | |
804 | DCA INADD /SAVE ADDEND\r | |
805 | INADD=TEMP02\r | |
806 | JMS I GDATAZ /GET AUGEND\r | |
807 | SPA /SET LINK BIT EQUAL TO SIGN BIT\r | |
808 | CML\r | |
809 | TAD INADD /ADD ADDEND\r | |
810 | DCA INSUM\r | |
811 | INSUM=TEMP03\r | |
812 | TAD INADD /MODIFY LINK BIT IN ACCORD WITH SIGN\r | |
813 | SPA CLA\r | |
814 | CML\r | |
815 | TAD INSUM /WE HAVE FAKED A 13 BIT ADD\r | |
816 | SPA SZL /ARE THE LINK AND SIGN BITS EQUAL?\r | |
817 | CML CMA /1,1 TO 0,0; 0,1 TO 1,0; 1,0 TO 0,1\r | |
818 | SMA SNL CLA /0,1 AND 1,0 ARE OVERFLOW\r | |
819 | ISZ UPSUM /L,S WERE 0,0 OR 1,1; NO OVERFLOW\r | |
820 | TAD INSUM /GET THE RESULT AND EXIT\r | |
821 | JMP I UPSUM /TO CALL+1 (OVRFLO) OR CALL+2 (NORMAL)\r | |
822 | \r | |
823 | /SUBROUTINE TO TYPE "^" IF OVERFLOW (AC#0)\r | |
824 | OMARK, 0\r | |
825 | SNA CLA /AC=0?\r | |
826 | JMP I OMARK /YES, EXIT\r | |
827 | TAD K0336 /NO, TYPE "^"\r | |
828 | JMS I TYPEZ\r | |
829 | JMP I OMARK\r | |
830 | \r | |
831 | /LOCAL CONSTANTS\r | |
832 | K0336, 336 /^\r | |
833 | K0015, 015\r | |
834 | K240, 240\r | |
835 | \f/KBD RESPONSE LIST\r | |
836 | KBDLST, +330 /X\r | |
837 | +303 /C\r | |
838 | +320 /P\r | |
839 | +304 /D\r | |
840 | +324 /T\r | |
841 | +307 /G\r | |
842 | +215 /CR\r | |
843 | +311 /I\r | |
844 | 227 /^W\r | |
845 | 203 /^C\r | |
846 | -232 /^Z\r | |
847 | KC7746, 7746\r | |
848 | \r | |
849 | \f/ AAVG4 PLOTTER SUBROUTINES\r | |
850 | /\r | |
851 | / REV0.0 25-JAN-85 KJ.S.\r | |
852 | /\r | |
853 | \r | |
854 | FIELD 3\r | |
855 | *200\r | |
856 | \r | |
857 | H3PLOT, 0 / MOVE PEN; 'PA' COMMAND IS INITIATED\r | |
858 | CLA / BY H3PENX\r | |
859 | CDF 0\r | |
860 | TAD I (ARITH4 / GET X POSITION\r | |
861 | DCA XPOS\r | |
862 | TAD I (YSAVE / GET Y POSITION\r | |
863 | DCA YPOS\r | |
864 | CDF 30\r | |
865 | \r | |
866 | TAD PLPAFL\r | |
867 | SNA CLA / FIRST 'PA'-COMMAND ?\r | |
868 | JMP H3PLT1 / NO:\r | |
869 | TAD (HTPLPA / YES: OUTPUT 'PA'\r | |
870 | JMS TTO\r | |
871 | \r | |
872 | H3PLT1, TAD XPOS\r | |
873 | TAD (1000 / MAKE STRAIGHT BINARY\r | |
874 | AND (1777\r | |
875 | JMS TDO\r | |
876 | 0\r | |
877 | TAD (",\r | |
878 | JMS TCO\r | |
879 | \r | |
880 | TAD YPOS\r | |
881 | TAD (1000\r | |
882 | AND (1777\r | |
883 | JMS TDO\r | |
884 | 0\r | |
885 | TAD (",\r | |
886 | JMS TCO\r | |
887 | \r | |
888 | TAD PLPAFL\r | |
889 | SNA CLA / FIRST PA COMMAND ?\r | |
890 | JMP .+3 / NO: EXIT\r | |
891 | TAD (HTPLRD\r | |
892 | JMS TTO\r | |
893 | DCA PLPAFL\r | |
894 | CIF CDF 0\r | |
895 | JMP I H3PLOT\r | |
896 | \r | |
897 | XPOS, 0\r | |
898 | YPOS, 0\r | |
899 | \r | |
900 | PLPAFL, 1\r | |
901 | HTPLPA, TEXT /SP1;PA/;0\r | |
902 | HTPLRD, TEXT /;PD;PA/;0\r | |
903 | \r | |
904 | H3PENU, 0 / PEN UP\r | |
905 | CDF 30\r | |
906 | CLA\r | |
907 | TAD (HTPENU\r | |
908 | JMS TTO\r | |
909 | ISZ PLPAFL / SET FLAG\r | |
910 | TAD H3PENU\r | |
911 | JMP EXIT+1\r | |
912 | \r | |
913 | /1. TERMINATES A PROCEEDING 'PA'-COMMAND\r | |
914 | /2. SETS PEN UP\r | |
915 | /3. ERROR STATUS\r | |
916 | HTPENU, TEXT /;PU;OE;/;0\r | |
917 | \r | |
918 | H3PEND, 0\r | |
919 | CDF 30\r | |
920 | TAD (HTPEND\r | |
921 | JMS TTO\r | |
922 | ISZ PLPAFL\r | |
923 | TAD H3PEND\r | |
924 | JMP EXIT+1\r | |
925 | \r | |
926 | /1. TERMINATES A PROCEEDING 'PA'-COMMAND\r | |
927 | /2. SETS PEN UP\r | |
928 | /3. ERROR STATUS\r | |
929 | HTPEND, TEXT /;PD;OE;/;0\r | |
930 | \r | |
931 | H3PLOF, 0\r | |
932 | CDF 30\r | |
933 | CLA\r | |
934 | TAD (HTPLOF\r | |
935 | JMS TTO\r | |
936 | TAD H3PLOF\r | |
937 | JMP EXIT+1\r | |
938 | \r | |
939 | /1. TERMINATES A PROCEEDING 'PA'-COMMAND\r | |
940 | /2. SETS PEN UP\r | |
941 | /3. POSITIONS PEN TO UPPER LEFT CORNER\r | |
942 | /4. REMOVES PEN\r | |
943 | /5. ERROR STATUS\r | |
944 | HTPLOF, TEXT /;PU;PA0,1150;SP0;OE;/;0\r | |
945 | \r | |
946 | EXIT, 0\r | |
947 | DCA EXIT\r | |
948 | JMS TRI / READ ERROR STATUS\r | |
949 | TAD (-260\r | |
950 | SNA / ERROR NUMBER = 0 ?\r | |
951 | JMP EXITA / YES:\r | |
952 | TAD (260 / NO:\r | |
953 | TLS / TYPE NUMBER\r | |
954 | CLA\r | |
955 | CIF CDF 0\r | |
956 | JMP I (DISJOB / CONTINUE DISPLAY\r | |
957 | \r | |
958 | EXITA, CIF CDF 0\r | |
959 | JMP I EXIT\r | |
960 | \r | |
961 | PAGE\r | |
962 | \fH3PLON, 0 / INIT PLOTTER\r | |
963 | CDF 30\r | |
964 | CLA CLL\r | |
965 | TAD (330 / SET INPUT DEV FOR ERROR CODE\r | |
966 | JMS TIDC\r | |
967 | TAD (340 / AND OUTPUT DEV TO 33/34\r | |
968 | JMS TODC\r | |
969 | \r | |
970 | CLA\r | |
971 | TAD (HTPLON\r | |
972 | JMS TTO / OUTPUT ASCII STRING\r | |
973 | \r | |
974 | TAD H3PLON\r | |
975 | JMP EXIT+1\r | |
976 | \r | |
977 | /1. INITIALIZATION FOR DIN A4 SIZE\r | |
978 | /2. PLOT HEADER\r | |
979 | HTPLON, TEXT /$[$.N;19:$[$.H32;;17:IN;PS4;RO90;IP975,3800,7300,9800;/\r | |
980 | TEXT /IW;SC0,1023,0,1023;SP0;OE;/;0\r | |
981 | \r | |
982 | H3PLGR, 0 / PLOT GRID\r | |
983 | CDF 30\r | |
984 | CLA\r | |
985 | TAD (HTPLGR\r | |
986 | JMS TTO\r | |
987 | TAD H3PLGR\r | |
988 | JMP EXIT+1\r | |
989 | \r | |
990 | PAGE\r | |
991 | \f\r | |
992 | /1. PLOT GRID WITH DIFFERENT PEN SIZES\r | |
993 | HTPLGR, TEXT /$$SP1;PA0,0;PD;PA0,256,-15,256,0,256,/\r | |
994 | TEXT /0,512,-15,512,0,512,0,768,-15,768,0,768,0,1023,/\r | |
995 | TEXT /1023,1023,1023,-15,1023,0,819,0,819,-15,819,0,/\r | |
996 | TEXT /614,0,614,-15,614,0,410,0,410,-15,410,0,/\r | |
997 | TEXT /205,0,205,-15,205,0,0,0,0,-15,0,0;PU;/\r | |
998 | TEXT /SR1.5,2.2;PA-8,-55;LB0$C$PA176,-55;LB100$C$/\r | |
999 | TEXT /PA381,-55;LB200$C$PA585,-55;LB300$C$/\r | |
1000 | TEXT /PA790,-55;LB400$C$PA994,-55;LB500$C$/\r | |
1001 | TEXT /SR1.8,2.6;PA650,-120;LBZEIT [%MS%]$C$/\r | |
1002 | TEXT /SR1.5,2.2;PA-68,245;LB-1$C$PA-68,501;LB 0$C$/\r | |
1003 | TEXT /PA-68,757;LB 1$C$/\r | |
1004 | TEXT /SP2;PA0,96;PD;PA1023,96;/\r | |
1005 | TEXT /PU;PA1023,128;PD;PA0,128;PU;PA0,160;PD;PA1023,160;/\r | |
1006 | TEXT /PU;PA1023,512;PD;PA0,512;PU;SP0;OE;/\r | |
1007 | 0\r | |
1008 | \r | |
1009 | PAGE\r | |
1010 | \r | |
1011 | XLIST\r | |
1012 | \f/ TRI.PA\r | |
1013 | /\r | |
1014 | / TTY READ INPUT\r | |
1015 | /\r | |
1016 | / READS CHARACTER FROM TTY\r | |
1017 | /\r | |
1018 | / ENTRY: AC = NO CARE\r | |
1019 | / EXIT: AC = CHARACTER\r | |
1020 | /\r | |
1021 | / SUBRS: NONE\r | |
1022 | /\r | |
1023 | / 02-MAY-84 REV 0.0 KJ.S.\r | |
1024 | / 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT\r | |
1025 | /\r | |
1026 | \r | |
1027 | TRI, 0\r | |
1028 | CLA\r | |
1029 | TIKSF, KSF\r | |
1030 | JMP .-1\r | |
1031 | TIKRB, KRB\r | |
1032 | AND (177\r | |
1033 | TAD (200\r | |
1034 | JMP I TRI\r | |
1035 | \f/ TIDC.PA\r | |
1036 | /\r | |
1037 | / CHANGE SERIAL INPUT DEVICE CODE\r | |
1038 | /\r | |
1039 | / ENTRY: AC = XNNX NN = DEV.CODE\r | |
1040 | / EXIT: AC = 0\r | |
1041 | /\r | |
1042 | / SUBR: LOCATINONS IN TRI ARE CHANGED\r | |
1043 | /\r | |
1044 | / 18-OCT-84 REV 0.0 KJ.S.\r | |
1045 | /\r | |
1046 | \r | |
1047 | TIDC, 0\r | |
1048 | AND (770\r | |
1049 | DCA TIDCSV\r | |
1050 | TAD (6001\r | |
1051 | TAD TIDCSV\r | |
1052 | DCA TIKSF\r | |
1053 | TAD (6006\r | |
1054 | TAD TIDCSV\r | |
1055 | DCA TIKRB\r | |
1056 | JMP I TIDC\r | |
1057 | \r | |
1058 | TIDCSV, 0\r | |
1059 | \r | |
1060 | PAGE\r | |
1061 | \f/ TTI.PA\r | |
1062 | /\r | |
1063 | / TELETYPE TEXT INPUT\r | |
1064 | /\r | |
1065 | / READS INPUT FROM TTY AND STORES 2 CHARACTERS/WORD\r | |
1066 | / INTO TEXT BUFFER. ACCEPTS ONLY PRINTABLE CHARACTERS.\r | |
1067 | / ALL OTHER INPUT AND CHARACTERS AFTER BUFFER-OVERFLOW\r | |
1068 | / IS ECHED AS 'BELL'. THE INPUT TERMINATOR IS NOT\r | |
1069 | / ECHOED.\r | |
1070 | /\r | |
1071 | / ENTRY: AC = TERMINATOR, 0 = CR\r | |
1072 | / ARG1 POINTER TO TEXT BUFFER\r | |
1073 | / ARG2 LENGTH OF TEXT BUFFER (WORDS)\r | |
1074 | / EXIT: AC = 0\r | |
1075 | /\r | |
1076 | / SUBR TRI,TCO\r | |
1077 | /\r | |
1078 | / 16-JUL-84 REV 0.0 KJ.S.\r | |
1079 | / 22-JUL-84 REV 0.1 KJ.S. SOME BUGS REMOVED\r | |
1080 | / 23-JUL-84 REV 0.2 KJ.S. BUG AFTER 'DEL' REM.\r | |
1081 | /\r | |
1082 | \r | |
1083 | TTI, 0\r | |
1084 | SNA / AC = TERMINATOR\r | |
1085 | TAD (215 / AC = 0 TERMINATOR = CR\r | |
1086 | AND (377\r | |
1087 | CIA\r | |
1088 | DCA TTITM / SAVE\r | |
1089 | TAD I TTI / GET ARG1 = BUFFER POINTER\r | |
1090 | DCA TTIBPT\r | |
1091 | ISZ TTI\r | |
1092 | CLA CLL\r | |
1093 | TAD I TTI / GET ARG2 = BUFFER LENGTH\r | |
1094 | RAL\r | |
1095 | CIA\r | |
1096 | IAC\r | |
1097 | DCA TTIBLN / = - BUFFER LENGTH * 2 + 1\r | |
1098 | ISZ TTI\r | |
1099 | DCA TTICNT / CLEAR CHARACTER COUNTER\r | |
1100 | DCA TTIXF / CLEAR EXIT FLAG\r | |
1101 | \r | |
1102 | TTI1, JMS TRI / READ INPUT\r | |
1103 | DCA TTICH\r | |
1104 | \r | |
1105 | TAD TTICH\r | |
1106 | TAD TTITM\r | |
1107 | SZA CLA / TERMINATOR ?\r | |
1108 | JMP TTI2 / NO:\r | |
1109 | ISZ TTIXF / YES: SET EXIT FLAG\r | |
1110 | DCA TTICH / PUT 'ZERO' INTO BUFFER\r | |
1111 | JMP TTI3\r | |
1112 | \r | |
1113 | TTI2, TAD TTICH / CHECK INPUT\r | |
1114 | TAD (-240\r | |
1115 | SPA / CHAR.GE.240 ?\r | |
1116 | JMP TTI10 / NO: CONTROL CHAR\r | |
1117 | TAD (-100\r | |
1118 | SMA CLA / CHAR.LT.340 ?\r | |
1119 | JMP TTI10 / N0: CONTROL CHAR\r | |
1120 | \r | |
1121 | TAD TTICNT / CHECK FOR BUFFER OVERFLOW\r | |
1122 | TAD TTIBLN\r | |
1123 | SMA CLA / COUNTER.LT.BUFFER*2 ?\r | |
1124 | JMP TTI10 / NO: BUFFER OVERFLOW\r | |
1125 | \r | |
1126 | TAD TTICH / ECHO\r | |
1127 | JMS TCO\r | |
1128 | TAD TTICH / MAKE 6-BIT-ASCII\r | |
1129 | AND (77\r | |
1130 | DCA TTICH\r | |
1131 | \r | |
1132 | TTI3, CLA CLL\r | |
1133 | TAD TTICNT / CALCULATE BUFFER POINTER\r | |
1134 | RAR\r | |
1135 | TAD TTIBPT\r | |
1136 | DCA TTIPNT\r | |
1137 | \r | |
1138 | SZL / LINK=MSB OF TTICNT.EQ.0 ?\r | |
1139 | JMP TTI4 / N0: 2. BYTE OF WORD\r | |
1140 | TAD TTICH / YES: 1. BYTE\r | |
1141 | BSW\r | |
1142 | JMP TTI5\r | |
1143 | TTI4, TAD I TTIPNT / ADD 1.BYTE\r | |
1144 | AND (7700\r | |
1145 | TAD TTICH\r | |
1146 | TTI5, DCA I TTIPNT / STORE IN BUFFER\r | |
1147 | ISZ TTICNT / INCREMENT COUNTER\r | |
1148 | \r | |
1149 | TAD TTIXF\r | |
1150 | SNA CLA / EXIT ?\r | |
1151 | JMP TTI1 / NO: GET NEXT CHARACTER\r | |
1152 | JMP I TTI / YES:\r | |
1153 | \r | |
1154 | TTI10, CLA CLL / INPUT IS A CONTROL CHARACTER\r | |
1155 | TAD TTICH\r | |
1156 | TAD (-377\r | |
1157 | SNA CLA / CHAR.EQ.DEL ?\r | |
1158 | JMP TTI12 / YES:\r | |
1159 | TTI11, TAD (207 / NO: ILLEGAL INPUT\r | |
1160 | JMS TCO / ECHO BELL\r | |
1161 | JMP TTI1 / CONTINUE\r | |
1162 | \r | |
1163 | TTI12, TAD TTICNT\r | |
1164 | SNA / BUFFER EMPTY ?\r | |
1165 | JMP TTI11 / YES:\r | |
1166 | TAD (-1 / NO: DECREMENT\r | |
1167 | DCA TTICNT\r | |
1168 | TAD (210 / BACKSPACE\r | |
1169 | JMS TCO\r | |
1170 | TAD (240\r | |
1171 | JMS TCO\r | |
1172 | TAD (210\r | |
1173 | JMS TCO\r | |
1174 | JMP TTI1\r | |
1175 | \r | |
1176 | \r | |
1177 | TTITM, 0 / MINUS INPUT TERMINATOR\r | |
1178 | TTIBPT, 0 / BUFFER START POINTER\r | |
1179 | TTIBLN, 0 / MINUS LENGTH OF BUFFER\r | |
1180 | TTIPNT, 0 / CURRENT BUFFER POINTER\r | |
1181 | TTICNT, 0 / CURRENT LENGTH COUNTER\r | |
1182 | TTISWD, 0 / INPUT CONTROL FLAG\r | |
1183 | TTICH, 0 / LAST INPUT CHAR\r | |
1184 | TTIXF, 0 / EXIT FLAG\r | |
1185 | \r | |
1186 | PAGE\r | |
1187 | \f/ TDO.PA\r | |
1188 | /\r | |
1189 | / TYPES DECIMAL INTEGERS WITH DIFFERENT FORMATS\r | |
1190 | /\r | |
1191 | / ENTRY: AC = NUMBER TO BE TYPED\r | |
1192 | / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT\r | |
1193 | / BIT 1 IF SET, FILL FORMAT WITH ZEROS\r | |
1194 | / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r | |
1195 | / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,\r | |
1196 | / NO LEADING ZEROS OR SPACES\r | |
1197 | / EXIT: AC = 0\r | |
1198 | /\r | |
1199 | / SUBR: TIO,TCO\r | |
1200 | /\r | |
1201 | /\r | |
1202 | / 19-OCT-84 REV 0.0 KJ.S.\r | |
1203 | /\r | |
1204 | \r | |
1205 | TDO, 0\r | |
1206 | DCA TION0 / SAVE NUMBER\r | |
1207 | TAD I TDO\r | |
1208 | ISZ TDO\r | |
1209 | DCA TIOFL / SAVE FLAG\r | |
1210 | TAD TDOTST / POINTER TO HEXADECIMAL TABLE\r | |
1211 | JMS TDOHO / PROCEED\r | |
1212 | JMP I TDO\r | |
1213 | \r | |
1214 | TDOTST, .+1 / TABLE OF DECIMAL VALUES\r | |
1215 | 140 / -4000\r | |
1216 | 4060 / -2000\r | |
1217 | 6030 / -1000\r | |
1218 | 6340 / -800\r | |
1219 | 7160 / -400\r | |
1220 | 7470 / -200\r | |
1221 | 7634 / -100\r | |
1222 | 7660 / -80\r | |
1223 | 7730 / -40\r | |
1224 | 7754 / -20\r | |
1225 | 7766 / -10\r | |
1226 | \f/ TOO.PA\r | |
1227 | /\r | |
1228 | / TYPES OCTAL INTEGERS WITH DIFFERENT FORMATS\r | |
1229 | /\r | |
1230 | / ENTRY: AC = NUMBER TO BE TYPED\r | |
1231 | / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT\r | |
1232 | / BIT 1 IF SET, FILL FORMAT WITH ZEROS\r | |
1233 | / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r | |
1234 | / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,\r | |
1235 | / NO LEADING ZEROS OR SPACES\r | |
1236 | / EXIT: AC = 0\r | |
1237 | /\r | |
1238 | / SUBR: TIO,TCO\r | |
1239 | /\r | |
1240 | /\r | |
1241 | / 18-OCT-84 REV 0.0 KJ.S.\r | |
1242 | / 18-OCT-84 REV 0.1 KJ.S. SOME BUGS REMOVED\r | |
1243 | / 19-OCT-84 REV 1.0 KJ.S. USING SUBR. TIO\r | |
1244 | /\r | |
1245 | \r | |
1246 | TOO, 0\r | |
1247 | DCA TION0 / SAVE NUMBER\r | |
1248 | TAD I TOO\r | |
1249 | ISZ TOO\r | |
1250 | DCA TIOFL / SAVE FLAG\r | |
1251 | TAD TOOTST / POINTER TO OCTAL TABLE\r | |
1252 | JMS TDOHO / PROCEED\r | |
1253 | JMP I TOO\r | |
1254 | \r | |
1255 | TOOTST, .+1 / TABLE OF OCTAL VALUES\r | |
1256 | 4000\r | |
1257 | 6000\r | |
1258 | 7000\r | |
1259 | 0000\r | |
1260 | 7400\r | |
1261 | 7600\r | |
1262 | 7700\r | |
1263 | 0000\r | |
1264 | 7740\r | |
1265 | 7760\r | |
1266 | 7770\r | |
1267 | \f/ THO.PA\r | |
1268 | /\r | |
1269 | / TYPES HEXADECIMAL INTEGERS WITH DIFFERENT FORMATS\r | |
1270 | /\r | |
1271 | / ENTRY: AC = NUMBER TO BE TYPED\r | |
1272 | / ARG1 BIT 0 IF SET, TYPE SIGNED OUTPUT\r | |
1273 | / BIT 1 IF SET, FILL FORMAT WITH ZEROS\r | |
1274 | / UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r | |
1275 | / BIT 6-11 OUTPUT FIELD WIDTH. IF ZERO,\r | |
1276 | / NO LEADING ZEROS OR SPACES\r | |
1277 | / EXIT: AC = 0\r | |
1278 | /\r | |
1279 | / SUBR: TIO,TCO\r | |
1280 | /\r | |
1281 | /\r | |
1282 | / 19-OCT-84 REV 0.0 KJ.S.\r | |
1283 | /\r | |
1284 | \r | |
1285 | THO, 0\r | |
1286 | DCA TION0 / SAVE NUMBER\r | |
1287 | TAD I THO\r | |
1288 | ISZ THO\r | |
1289 | DCA TIOFL / SAVE FLAG\r | |
1290 | TAD THOTST / POINTER TO DECIMAL TABLE\r | |
1291 | JMS TDOHO / PROCEED\r | |
1292 | JMP I THO\r | |
1293 | \r | |
1294 | THOTST, .+1 / TABLE OF HEXADECIMAL VALUES\r | |
1295 | 0000\r | |
1296 | 0000\r | |
1297 | 0000\r | |
1298 | 4000\r | |
1299 | 6000\r | |
1300 | 7000\r | |
1301 | 7400\r | |
1302 | 7600\r | |
1303 | 7700\r | |
1304 | 7740\r | |
1305 | 7760\r | |
1306 | \f/ TCR CARRIAGE RETURN\r | |
1307 | /\r | |
1308 | / MOVES CURSOR TO THE BEGINNING OF THE\r | |
1309 | / PRESENT LINE\r | |
1310 | /\r | |
1311 | / ENTRY: AC = NO CARE\r | |
1312 | / EXIT: AC = 0\r | |
1313 | /\r | |
1314 | / 10-APR-84 REV 0.0 KJ.S.\r | |
1315 | /\r | |
1316 | \r | |
1317 | TCR, 0\r | |
1318 | CLA\r | |
1319 | TAD (215\r | |
1320 | JMS TCO / OUTPUT\r | |
1321 | CLA\r | |
1322 | JMP I TCR\r | |
1323 | \r | |
1324 | \f/ TNL NEW LINE\r | |
1325 | /\r | |
1326 | / POSITIONS CURSOR TO BEGINNING\r | |
1327 | / OF NEXT LINE\r | |
1328 | /\r | |
1329 | / ENTRY: AC = NO CARE\r | |
1330 | / EXIT: AC = 0\r | |
1331 | /\r | |
1332 | / 10-APR-84 REV 0.0 KJ.S.\r | |
1333 | /\r | |
1334 | \r | |
1335 | TNL, 0\r | |
1336 | JMS TCR\r | |
1337 | TAD (212\r | |
1338 | JMS TCO / LF\r | |
1339 | JMP I TNL\r | |
1340 | \f\r | |
1341 | TIOF, 0 / SUBROUTINE TO CHECK OUTPUT\r | |
1342 | AND (17 / FORMAT AND TYPE\r | |
1343 | DCA TIOPT / STORE\r | |
1344 | ISZ TIOCT / INCREMENT DIGIT COUNTER\r | |
1345 | \r | |
1346 | TAD TIOZF\r | |
1347 | SZA CLA / ZERO FLAG = 0 ?\r | |
1348 | JMP TIOF2 / NO: TYPE DIGIT\r | |
1349 | TAD TIOPT / YES:\r | |
1350 | SZA CLA / DIGIT = 0 ?\r | |
1351 | JMP TIOF1 / NO:\r | |
1352 | TAD TIOFL / YES:\r | |
1353 | SNA CLA / FIELD WIDTH = 0 ?\r | |
1354 | JMP I TIOF / YES: EXIT\r | |
1355 | TAD TIOFL\r | |
1356 | TAD TIOCT\r | |
1357 | SPA CLA / FILL CHAR WITHIN FIELD ?\r | |
1358 | JMP I TIOF / NO: EXIT\r | |
1359 | TAD TIOFC / YES: TYPE FILL CHARACTER\r | |
1360 | JMP TIOF4\r | |
1361 | \r | |
1362 | TIOF1, TAD TIOFL\r | |
1363 | SNA / FIELD WIDTH = 0 ?\r | |
1364 | JMP TIOF2 / YES: NO FIXED FIELD WIDTH\r | |
1365 | TAD TIOCT / NO:\r | |
1366 | SPA CLA / DIGIT WITHIN FIELD ?\r | |
1367 | JMP TIOER / NO: FIELD WIDTH TOO SMALL\r | |
1368 | TIOF2, ISZ TIOZF / SET ZERO FLAG\r | |
1369 | TAD TIOSG\r | |
1370 | SNA CLA / SIGN NEEDED ?\r | |
1371 | JMP TIOF3 / NO:\r | |
1372 | DCA TIOSG / CLEAR SIGN FLAG\r | |
1373 | TAD ("- / YES: TYPE IT\r | |
1374 | JMS TCO\r | |
1375 | TIOF3, TAD TIOPT / TYPE DIGIT\r | |
1376 | TAD (-12\r | |
1377 | SMA / HEX - CHAR. ?\r | |
1378 | TAD (7 / YES: MAKE A LETTER\r | |
1379 | TAD (272 / NO: MAKE NUMBER\r | |
1380 | TIOF4, JMS TCO\r | |
1381 | JMP I TIOF / EXIT\r | |
1382 | \r | |
1383 | PAGE\r | |
1384 | \f / SUBROUTINE FOR TDO,TOO,THO\r | |
1385 | / TION0 AND TIOFL MUST BE SET\r | |
1386 | \r | |
1387 | TDOHO, 0\r | |
1388 | DCA TIOPT / AC = TABLE POINTER\r | |
1389 | DCA TIOSG / CLEAR SIGN FLAG\r | |
1390 | TAD (240\r | |
1391 | DCA TIOFC / FILL CHAR = SPACE\r | |
1392 | TAD TIOFL\r | |
1393 | AND (2000\r | |
1394 | SNA CLA / FILL CHAR = ZERO ?\r | |
1395 | JMP TIOA / NO:\r | |
1396 | TAD (260 / YES:\r | |
1397 | DCA TIOFC\r | |
1398 | JMP TIOB / NO SIGN OPTION\r | |
1399 | \r | |
1400 | TIOA, TAD TIOFL\r | |
1401 | SMA CLA / SIGNED OUTPUT ?\r | |
1402 | JMP TIOB / NO:\r | |
1403 | TAD TION0 / YES: COMPLEMENT NEGATIV NUMBER\r | |
1404 | SMA / NEGATIV NUMBER ?\r | |
1405 | JMP TIOB / NO:\r | |
1406 | CIA / YES: COMPLEMENT\r | |
1407 | DCA TION0\r | |
1408 | ISZ TIOSG / SET SIGN FLAG\r | |
1409 | \r | |
1410 | TIOB, CLA\r | |
1411 | TAD TIOFL\r | |
1412 | AND (77 / GET FIELD WIDTH\r | |
1413 | DCA TIOFL / CLEAR UNUSED BITS\r | |
1414 | TAD TIOFL\r | |
1415 | SNA / FIELD WIDTH ZERO ?\r | |
1416 | JMP TIOD / YES:\r | |
1417 | CIA / NO: COMPLEMENT\r | |
1418 | TAD TIOSG / TAKE SIGN INTO ACCOUNT\r | |
1419 | TAD (4 / MAX 4 DIGIT\r | |
1420 | SMA / FILL CHARACTER NEEDED ?\r | |
1421 | JMP TIOD / NO:\r | |
1422 | DCA TIOCT / YES: -# OF SPACE TO FILL FORMAT\r | |
1423 | \r | |
1424 | TIOC, TAD TIOFC / TYPE\r | |
1425 | JMS TCO\r | |
1426 | ISZ TIOCT\r | |
1427 | JMP TIOC\r | |
1428 | \r | |
1429 | TIOD, CLA\r | |
1430 | TAD (-13 / # OF SUBTRACTIONS\r | |
1431 | DCA TIOCT / TO COUNTER\r | |
1432 | DCA TION1\r | |
1433 | \r | |
1434 | TIOE, CLA CLL / SUCCESSIV SUBTRACTIONS OF\r | |
1435 | TAD TION0 / DECIMAL VALUES FROM TABLE\r | |
1436 | TAD I TIOPT / SUBTRACTION\r | |
1437 | SZL / CARRY ?\r | |
1438 | DCA TION0 / YES, NEW VALUE\r | |
1439 | CLA\r | |
1440 | TAD TION1 / RESULT IN LINK\r | |
1441 | RAL\r | |
1442 | DCA TION1 / SHIFTED INTO TION1\r | |
1443 | ISZ TIOPT / INCREMENT POINTER\r | |
1444 | ISZ TIOCT / DONE ?\r | |
1445 | JMP TIOE / NO, CONTINUE\r | |
1446 | \r | |
1447 | DCA TIOZF / CLEAR LEADING ZERO FLAG\r | |
1448 | \r | |
1449 | TAD TIOSG\r | |
1450 | CIA\r | |
1451 | TAD (-5\r | |
1452 | DCA TIOCT / SET DIGIT COUNTER, 4 DIGITS + SIGN\r | |
1453 | \r | |
1454 | TAD TION1 / 1. DIGIT\r | |
1455 | BSW\r | |
1456 | RTR\r | |
1457 | JMS TIOF\r | |
1458 | \r | |
1459 | TAD TION1 / 2. DIGIT\r | |
1460 | RTR\r | |
1461 | RTR\r | |
1462 | JMS TIOF\r | |
1463 | \r | |
1464 | TAD TION1 / 3. DIGIT\r | |
1465 | JMS TIOF\r | |
1466 | \r | |
1467 | ISZ TIOZF / 4. DIGIT ALWAYS TYPED\r | |
1468 | TAD TION0 \r | |
1469 | JMS TIOF\r | |
1470 | \r | |
1471 | JMP I TDOHO\r | |
1472 | \r | |
1473 | TIOER, TAD TIOFL / ERROR, FILL FORMAT WITH ****\r | |
1474 | CIA\r | |
1475 | DCA TIOCT\r | |
1476 | TAD ("*\r | |
1477 | JMS TCO / TYPE CHARACTER\r | |
1478 | ISZ TIOCT\r | |
1479 | JMP .-4\r | |
1480 | CLA\r | |
1481 | JMP I TDOHO / EXIT MAIN SUBROUTINE\r | |
1482 | \r | |
1483 | TION0, 0 / GETS LSD\r | |
1484 | TION1, 0 / GETS 3 MSD\r | |
1485 | TIOPT, 0 / POINTER\r | |
1486 | TIOCT, 0 / COUNTER\r | |
1487 | TIOFL, 0 / FLAGS\r | |
1488 | TIOSG, 0 / SIGN FLAG\r | |
1489 | TIOZF, 0 / ZERO SUPPRESS FLAG\r | |
1490 | TIOFC, 0 / FILL CHARACTER\r | |
1491 | \f/ TSO STRING OUTPUT\r | |
1492 | /\r | |
1493 | / TYPES A STRING OF ASCII - CHARACTERS\r | |
1494 | / BUFFER CONTAINS ONE CHARACTER PER\r | |
1495 | / WORD AND MUST BE TERMINATED BY 0\r | |
1496 | /\r | |
1497 | / ENTRY: AC = POINTER TO BUFFER\r | |
1498 | / EXIT: AC = 0\r | |
1499 | /\r | |
1500 | / 10-APR-84 REV 0.0 KJ.S.\r | |
1501 | /\r | |
1502 | \r | |
1503 | TSO, 0\r | |
1504 | DCA TSOPT / BUFFER POINTER\r | |
1505 | TSOA, TAD I TSOPT / GET CHARACTER\r | |
1506 | SNA / CHARACTER.EQ.0 ?\r | |
1507 | JMP I TSO / YES: EXIT\r | |
1508 | JMS TCO / NO: PRINT\r | |
1509 | ISZ TSOPT\r | |
1510 | JMP TSOA\r | |
1511 | JMP TSOA\r | |
1512 | \r | |
1513 | TSOPT, 0\r | |
1514 | \r | |
1515 | PAGE\r | |
1516 | \f/ TCO CHARACTER OUTPUT\r | |
1517 | /\r | |
1518 | / TYPES ONE ASCII-CHARACTER CALLING\r | |
1519 | / CP-ROUTINE, RESPONS TO CTRL/S - CTRL/Q\r | |
1520 | /\r | |
1521 | / ENTRY: AC = CHARACTER\r | |
1522 | / EXIT: AC = 0 LINK UNCHANGED\r | |
1523 | /\r | |
1524 | / 10-APR-84 REV 0.0 KJ.S.\r | |
1525 | / 18-OCT-84 REV 0.1 KJ.S. HARDWARE INDEPENDENT\r | |
1526 | / 18-OCT-84 REV 0.2 KJ.S. LINK PRESERVED\r | |
1527 | /\r | |
1528 | \r | |
1529 | TCO, 0\r | |
1530 | DCA TCOSV / SAVE CHAR\r | |
1531 | JMS TOKSF / CHECK XON/XOFF\r | |
1532 | JMP TCO2\r | |
1533 | JMS TOKRB\r | |
1534 | AND (177\r | |
1535 | TAD (7755\r | |
1536 | SZA CLA / CTRL/S ?\r | |
1537 | JMP TCO2 / NO:\r | |
1538 | TCO1, CLA / YES: WAITING FOR CTRL/Q\r | |
1539 | JMS TOKSF\r | |
1540 | JMP .-1\r | |
1541 | JMS TOKRB\r | |
1542 | AND (177\r | |
1543 | TAD (7757\r | |
1544 | SZA CLA / CTRL/Q ?\r | |
1545 | JMP TCO1 / NO: WAIT\r | |
1546 | TCO2, TAD TCOSV / YES: TYPE CHARACTER\r | |
1547 | JMS TOTLS\r | |
1548 | JMS TOTSF\r | |
1549 | JMP .-1\r | |
1550 | CLA\r | |
1551 | JMP I TCO\r | |
1552 | \r | |
1553 | TCOSV, 0\r | |
1554 | \r | |
1555 | / SUBROUTINES WITH I/O INSTRUCTIONS\r | |
1556 | / DEVICE-CODE CAN BE SET BY TODC\r | |
1557 | \r | |
1558 | TOKSF, 0\r | |
1559 | KSF\r | |
1560 | SKP\r | |
1561 | ISZ TOKSF\r | |
1562 | JMP I TOKSF\r | |
1563 | TOKRB, 0\r | |
1564 | KRB\r | |
1565 | JMP I TOKRB\r | |
1566 | TOTSF, 0\r | |
1567 | TSF\r | |
1568 | SKP\r | |
1569 | ISZ TOTSF\r | |
1570 | JMP I TOTSF\r | |
1571 | TOTLS, 0\r | |
1572 | TLS\r | |
1573 | JMP I TOTLS\r | |
1574 | \f/ TODC.PA\r | |
1575 | /\r | |
1576 | / CHANGE SERIAL OUTPUT DEVICE AND THE CORRESPONDING\r | |
1577 | / INPUT DEVICE FOR XON/XOFF PROTOCOL\r | |
1578 | /\r | |
1579 | / ENTRY: AC = XNNX NN = OUTPUT, NN-1 = INPUT DEVICE\r | |
1580 | / EXIT: AC = 0\r | |
1581 | /\r | |
1582 | / 18-OCT-84 REV 0.0 KJ.S.\r | |
1583 | /\r | |
1584 | \r | |
1585 | TODC, 0\r | |
1586 | AND (770\r | |
1587 | DCA TODCSV\r | |
1588 | TAD (6001\r | |
1589 | TAD TODCSV\r | |
1590 | DCA TOTSF+1\r | |
1591 | TAD (6006\r | |
1592 | TAD TODCSV\r | |
1593 | DCA TOTLS+1\r | |
1594 | TAD (-10 / CHANGE INPUT\r | |
1595 | TAD TODCSV\r | |
1596 | DCA TODCSV\r | |
1597 | TAD (6001\r | |
1598 | TAD TODCSV\r | |
1599 | DCA TOKSF+1\r | |
1600 | TAD (6006\r | |
1601 | TAD TODCSV\r | |
1602 | DCA TOKRB+1\r | |
1603 | JMP I TODC\r | |
1604 | \r | |
1605 | TODCSV, 0\r | |
1606 | \f PAGE\r | |
1607 | / TTO TEXT OUTPUT\r | |
1608 | /\r | |
1609 | / TYPE TEXT FROM 6-BIT ASCII BUFFER CREATED WITH\r | |
1610 | / PAL8 TEXT PSEUDO-OP.\r | |
1611 | /\r | |
1612 | / $ - OPTION:\r | |
1613 | / CHARACTERS BETWEEN TWO $-CHARACTERS ARE CONVERTED\r | |
1614 | / TO CONTROL CHARACTERS.\r | |
1615 | /\r | |
1616 | / # - OPTION:\r | |
1617 | / MULTIPLE OUTPUT OF SAME CHARACTER. THE FIRST CHARACTER\r | |
1618 | / AFTER # IS TREATED AS NUMBER ( LOWER 6 BITS ) AND\r | |
1619 | / THE SECOND CHARACTER IS PRINTED.\r | |
1620 | /\r | |
1621 | / NOTE:\r | |
1622 | / IF THE $- AND %-OPTIONS ARE USED, THE TEXT BUFFER MUST\r | |
1623 | / TERMINATED WITH A ZERO WORD. THIS FEATURE COMBINES\r | |
1624 | / SEVERAL TEXT BUFFERS TO ONE BUFFER WITH THE /F OPTION.\r | |
1625 | /\r | |
1626 | / % - OPTION\r | |
1627 | / CHARACTERS BETWEEN TWO "-CHARACTERS ARE CONVERTED\r | |
1628 | / TO LOWER CASE CHARACTER. MAY BE COMBINED WITH\r | |
1629 | / OTHER OPTIONS\r | |
1630 | /\r | |
1631 | / ENTRY: AC = POINTER TO TEXT-BUFFER\r | |
1632 | / EXIT: AC = 0\r | |
1633 | /\r | |
1634 | / 06-APR-84 REV 0.0 KJ.S.\r | |
1635 | / 09-APR-84 REV 0.1 KJ.S. LOCATIONS RENAMED\r | |
1636 | / 11-APR-84 REV 0.2 KJ.S. OUTPUT CODE CHANGED\r | |
1637 | / 09-FEB-85 REV 0.3 KJ.S. #-OPTION ADDED\r | |
1638 | / 13-FEB-85 REV 0.4 KJ.S. %-OPTION ADDED\r | |
1639 | /\r | |
1640 | \r | |
1641 | TTO, 0\r | |
1642 | DCA TTOPNT / SAVE POINTER TO TEXT\r | |
1643 | DCA TTOCFL / CLEAR CONTROL-FLAG\r | |
1644 | DCA TTOEFL / AND END-FLAG\r | |
1645 | \r | |
1646 | TTOA, CLA\r | |
1647 | TAD I TTOPNT\r | |
1648 | SNA / ZERO WORD ?\r | |
1649 | JMP TTOR / YES: END OF BUFFER\r | |
1650 | BSW\r | |
1651 | JMS TTOB\r | |
1652 | TAD I TTOPNT\r | |
1653 | JMS TTOB\r | |
1654 | ISZ TTOPNT\r | |
1655 | JMP TTOA\r | |
1656 | \r | |
1657 | TTOB, 0\r | |
1658 | AND (77 / MAKE 6-BIT ASCII\r | |
1659 | SNA / CHAR = 0 ?\r | |
1660 | JMP TTOB2 / YES: CHECK IF END OF BUFFER\r | |
1661 | TAD (-43\r | |
1662 | SNA / CHAR = 43 = # ?\r | |
1663 | JMP TTOB3 / YES: REP. OPTION\r | |
1664 | TAD (-1\r | |
1665 | SNA / CHAR = 44 = $ ?\r | |
1666 | JMP TTOB1 / YES: TOGGLE CONTROL FLAG\r | |
1667 | TAD (-1\r | |
1668 | SNA / CHAR = 45 = % ?\r | |
1669 | JMP TTOB5 / YES: TOGGLE CONTROL FLAG\r | |
1670 | TAD (5 / NO, PRINT CHARACTER\r | |
1671 | SPA / MAKE 8-BIT ASCII:\r | |
1672 | TAD (100 / 01-37 TO 301-337\r | |
1673 | TAD (240 / 40-77 TO 240-277\r | |
1674 | TAD TTOCFL / ADD CTRL SET BY $\r | |
1675 | TAD TTOLFL / AND LOWER FLAG SET BY %\r | |
1676 | DCA TTOSV\r | |
1677 | \r | |
1678 | ISZ TTONFL\r | |
1679 | SKP\r | |
1680 | JMP TTOB4 / LAST CHAR WAS #, MAKE NUMBER\r | |
1681 | TTOB0, TAD TTOSV\r | |
1682 | JMS TCO\r | |
1683 | ISZ TTONFL\r | |
1684 | JMP TTOB0 / LOOP FOR #-OPTION\r | |
1685 | CLA CLL CMA RAL / DONE, FLAG = -2\r | |
1686 | JMP TTOBX\r | |
1687 | \r | |
1688 | TTOB5, CLA / TOGGLE LOWER CASE FLAG\r | |
1689 | TAD TTOLFL\r | |
1690 | SNA CLA / LOWER CASE FLAG ZERO ?\r | |
1691 | TAD (40 / YES: SET TO 40\r | |
1692 | DCA TTOLFL / NO: CLEAR FLAG\r | |
1693 | JMP TTOB6\r | |
1694 | \r | |
1695 | TTOB1, CLA / TOGGLE CONTROL CHAR FLAG\r | |
1696 | TAD TTOCFL\r | |
1697 | SNA CLA / CONTROL FLAG ZERO ?\r | |
1698 | TAD (-100 / YES: SET TO -100\r | |
1699 | DCA TTOCFL / NO: CLEAR FLAG\r | |
1700 | TTOB6, CLA IAC / SET END FLAG\r | |
1701 | DCA TTOEFL\r | |
1702 | JMP I TTOB\r | |
1703 | \r | |
1704 | TTOB2, CLA\r | |
1705 | TAD TTOEFL\r | |
1706 | SNA CLA / TTOEFL.GT.0 ?\r | |
1707 | JMP TTOR / NO: END OF BUFFER, EXIT\r | |
1708 | JMP I TTOB / YES: IGNORE ZERO CHAR AFTER USE OF $\r | |
1709 | \r | |
1710 | TTOB3, CLA CMA / CHAR = #\r | |
1711 | JMP TTOBX / NEXT CHAR IS CONVERT TO NUMBER\r | |
1712 | \r | |
1713 | TTOB4, CLA IAC / MAKE NUMBER\r | |
1714 | TAD TTOSV\r | |
1715 | AND (77\r | |
1716 | CIA\r | |
1717 | \r | |
1718 | TTOBX, DCA TTONFL / SET FLAG\r | |
1719 | JMP I TTOB\r | |
1720 | \r | |
1721 | TTOR, CLA / CLEAR ALL FLAGS\r | |
1722 | DCA TTOCFL\r | |
1723 | DCA TTOEFL\r | |
1724 | JMP I TTO / AND EXIT\r | |
1725 | \r | |
1726 | TTOPNT, 0\r | |
1727 | TTOCFL, 0\r | |
1728 | TTOLFL, 0\r | |
1729 | TTOEFL, 0\r | |
1730 | TTONFL, -2\r | |
1731 | TTOSV, 0\r | |
1732 | \r | |
1733 | PAGE\r | |
1734 | \f\f\f\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\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\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0 |