A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk4_5 / rkb / paroff / aavg4c.pa
CommitLineData
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
24OVRLAY, 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
38XXOV4, 0\r
39CHAIN, 7700\r
40XXOV4A, 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
170MTH=CLA CMA CLL RTL; MTW=CLA CMA CLL RAL\r
171TWO=CLA CLL CML RTL; TWOK=CLA CLL CML RTR\r
172BSW=7002\r
173\r
174/EXTENDED MEMORY\r
175CDF=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
184K0004, 0004\r
185K0003, 0003\r
186K0002, 0002\r
187KM0001, -1\r
188K0007, 7\r
189KM0027, -27\r
190K0377, 377\r
191KM0004, -4\r
192K0005A, 0005\r
193K0200, 200\r
194KM1000, -1000\r
195KM1777, -1777\r
196K6777, 6777\r
197KC7600, 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
206KSTART, START\r
207\r
208/SUBROUTINE TO READ VALUE OF A KNOB\r
209\r
210*20\r
211START0, 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
219KNOBS, 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
230DOY, 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
238HPLON, H3PLON\r
239HPLOF, H3PLOF\r
240HPENU, H3PENU\r
241HPEND, H3PEND\r
242HPLOT, H3PLOT\r
243HPLGR, 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
249START, 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
260DISJOB, 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
287KECHO, TAD TEMP02 /ECHO\r
288 JMS I TYPEX\r
289\r
290DISAVG, 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
300DISPSD, 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
310DISMSD, 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
325DISTRN, 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
338DISEND, 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
347GDATAS, 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
359NEWSF, 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
365K4077, 4077\r
366KM0775, -775\r
367KPLOT, 5400\r
368\r
369/LOCAL CROSSPAGE\r
370JSETX, JSETS\r
371TYPEX, TYPES\r
372GCDFSX, GCDFS\r
373BLKCNX, BLKCNS\r
374PGRDAX, PGRDA\r
375PDAX, PDA\r
376PGRX, PGR\r
377TDATAX, TDATA\r
378DISPX, DISPS\r
379TMESSX, TMESS\r
380IDATAX, IDATA\r
381OVRLAX, OVRLAY\r
382OS8, 7600\r
383\f*6600\r
384/SAVE SCALE AND GO TO NEXT JOB\r
385NXTJOB, 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
409K0006, 6\r
410K0212, 0212\r
411K3700, 3700\r
412\r
413/LOCAL CROSSPAGE\r
414DISJOX, DISJOB\r
415TMESSY, TMESS\r
416GCDFY, GCDF\r
417DISPY, DISPS\r
418\f/SUBROUTINE TO SET UP DATA POINTERS, COUNTERS, AND DISPLAY\r
419JSETS, 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
454CHAS, 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
467K0017, +17\r
468GDATAX, GDATAS\r
469K0034, +34\r
470K0062, 62\r
471K0215, 215\r
472KM0005, -05\r
473KM0012, -12\r
474\r
475PGR, 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
483PGRDA, 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
491PDA, 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
497TYPES, 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
506CRLFS, 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
515DISPS, 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
530DXINC, 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
546TMESSZ, TMESS\r
547\r
548/LOCAL CONSTANTS\r
549K0777, 777\r
550K1000, 1000\r
551K0022, +022\r
552\r
553/SUBROUTINE TO MOVE TOWARD CURSOR\r
554CURSES, 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
564BLKCNS, 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
582GCDFS, 0\r
583GCDF, CDF /CURRENT DATA FELD\r
584 TAD I GETPNT /GET DATA (*)\r
585 JMP I GCDFS /(*)\r
586\f/KEYBOARD LIST\r
587KBDCHK, +221 /CTRL/Q\r
588 -215 /CR\r
589\r
590*7200\r
591/TYPE DATA IN JOB\r
592TDATA, JMS PRETYP\r
593 DCA TSKIP /SKIP NOTHING\r
594TYPLUP, 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
608TYPEND, 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
613TYPDUN, 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
620K0254, 254 /ASCII COMMA\r
621K0257, 257 \r
622KMD1K, -1750 /-1000(10)\r
623KMCTRL, -221\r
624KMD100, -144 /-100(10)\r
625KMD010, -12 /-10(10)\r
626\r
627/LOCAL CROSSPAGE\r
628CRLFX, CRLFS\r
629TYPEY, TYPES\r
630BLKCNY, BLKCNS\r
631DISJOY, DISJOB\r
632GDATAY, GDATAS\r
633GCDFSY, GCDFS\r
634CURSEY, CURSES\r
635SGNTYX, SGNTYP\r
636\f/GET DOUBLEWORD DATA POINT, SCALE BY 4, SIGN EXTEND, TYPE SIGNED\r
637SHFTYP, 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
643ABSTYP, 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
650NUMTYP, 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
665PRETYP, 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
678PRESKP, 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
687TMESS, 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
698TWAIT, 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
708GDIGIT, 0\r
709 DCA ARITH1 /FACTOR TO DEFLATE BY\r
710 DCA NDIGIT /DIGIT=0\r
711 NDIGIT=TEMP01\r
712 TAD ARITH4\r
713GLOOP, 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
735IDATA, 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
746ILOOP, 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
759IDONE, 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
782SGNTYP, 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
796NUMTYX, NUMTYP\r
797BLKCNZ, BLKCNS\r
798CURSEZ, CURSES\r
799TYPEZ, TYPES\r
800GDATAZ, GDATAS\r
801\r
802/SUBROUTINE TO GET SUM OF AC AND NEXT DATA POINT\r
803UPSUM, 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
824OMARK, 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
832K0336, 336 /^\r
833K0015, 015\r
834K240, 240\r
835\f/KBD RESPONSE LIST\r
836KBDLST, +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
847KC7746, 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
857H3PLOT, 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
872H3PLT1, 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
897XPOS, 0\r
898YPOS, 0\r
899\r
900PLPAFL, 1\r
901HTPLPA, TEXT /SP1;PA/;0\r
902HTPLRD, TEXT /;PD;PA/;0\r
903\r
904H3PENU, 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
916HTPENU, TEXT /;PU;OE;/;0\r
917\r
918H3PEND, 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
929HTPEND, TEXT /;PD;OE;/;0\r
930\r
931H3PLOF, 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
944HTPLOF, TEXT /;PU;PA0,1150;SP0;OE;/;0\r
945\r
946EXIT, 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
958EXITA, 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
979HTPLON, 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
982H3PLGR, 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
993HTPLGR, 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
1027TRI, 0\r
1028 CLA\r
1029TIKSF, KSF\r
1030 JMP .-1\r
1031TIKRB, 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
1047TIDC, 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
1058TIDCSV, 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
1083TTI, 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
1102TTI1, 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
1113TTI2, 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
1132TTI3, 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
1143TTI4, TAD I TTIPNT / ADD 1.BYTE\r
1144 AND (7700\r
1145 TAD TTICH\r
1146TTI5, 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
1154TTI10, 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
1159TTI11, TAD (207 / NO: ILLEGAL INPUT\r
1160 JMS TCO / ECHO BELL\r
1161 JMP TTI1 / CONTINUE\r
1162\r
1163TTI12, 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
1177TTITM, 0 / MINUS INPUT TERMINATOR\r
1178TTIBPT, 0 / BUFFER START POINTER\r
1179TTIBLN, 0 / MINUS LENGTH OF BUFFER\r
1180TTIPNT, 0 / CURRENT BUFFER POINTER\r
1181TTICNT, 0 / CURRENT LENGTH COUNTER\r
1182TTISWD, 0 / INPUT CONTROL FLAG\r
1183TTICH, 0 / LAST INPUT CHAR\r
1184TTIXF, 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
1205TDO, 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
1214TDOTST, .+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
1246TOO, 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
1255TOOTST, .+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
1285THO, 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
1294THOTST, .+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
1317TCR, 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
1335TNL, 0\r
1336 JMS TCR\r
1337 TAD (212\r
1338 JMS TCO / LF\r
1339 JMP I TNL\r
1340\f\r
1341TIOF, 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
1362TIOF1, 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
1368TIOF2, 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
1375TIOF3, 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
1380TIOF4, 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
1387TDOHO, 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
1400TIOA, 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
1410TIOB, 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
1424TIOC, TAD TIOFC / TYPE\r
1425 JMS TCO\r
1426 ISZ TIOCT\r
1427 JMP TIOC\r
1428\r
1429TIOD, CLA\r
1430 TAD (-13 / # OF SUBTRACTIONS\r
1431 DCA TIOCT / TO COUNTER\r
1432 DCA TION1\r
1433\r
1434TIOE, 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
1473TIOER, 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
1483TION0, 0 / GETS LSD\r
1484TION1, 0 / GETS 3 MSD\r
1485TIOPT, 0 / POINTER\r
1486TIOCT, 0 / COUNTER\r
1487TIOFL, 0 / FLAGS\r
1488TIOSG, 0 / SIGN FLAG\r
1489TIOZF, 0 / ZERO SUPPRESS FLAG\r
1490TIOFC, 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
1503TSO, 0\r
1504 DCA TSOPT / BUFFER POINTER\r
1505TSOA, 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
1513TSOPT, 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
1529TCO, 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
1538TCO1, 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
1546TCO2, 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
1553TCOSV, 0\r
1554\r
1555/ SUBROUTINES WITH I/O INSTRUCTIONS\r
1556/ DEVICE-CODE CAN BE SET BY TODC\r
1557\r
1558TOKSF, 0\r
1559 KSF\r
1560 SKP\r
1561 ISZ TOKSF\r
1562 JMP I TOKSF\r
1563TOKRB, 0\r
1564 KRB\r
1565 JMP I TOKRB\r
1566TOTSF, 0\r
1567 TSF\r
1568 SKP\r
1569 ISZ TOTSF\r
1570 JMP I TOTSF\r
1571TOTLS, 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
1585TODC, 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
1605TODCSV, 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
1641TTO, 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
1646TTOA, 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
1657TTOB, 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
1681TTOB0, 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
1688TTOB5, 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
1695TTOB1, 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
1700TTOB6, CLA IAC / SET END FLAG\r
1701 DCA TTOEFL\r
1702 JMP I TTOB\r
1703\r
1704TTOB2, 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
1710TTOB3, CLA CMA / CHAR = #\r
1711 JMP TTOBX / NEXT CHAR IS CONVERT TO NUMBER\r
1712\r
1713TTOB4, CLA IAC / MAKE NUMBER\r
1714 TAD TTOSV\r
1715 AND (77\r
1716 CIA\r
1717\r
1718TTOBX, DCA TTONFL / SET FLAG\r
1719 JMP I TTOB\r
1720\r
1721TTOR, CLA / CLEAR ALL FLAGS\r
1722 DCA TTOCFL\r
1723 DCA TTOEFL\r
1724 JMP I TTO / AND EXIT\r
1725\r
1726TTOPNT, 0\r
1727TTOCFL, 0\r
1728TTOLFL, 0\r
1729TTOEFL, 0\r
1730TTONFL, -2\r
1731TTOSV, 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