A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk4_5 / rkb / paroff / aavg4c.pa
diff --git a/sw/rescue/lab8e_goettingen/disk4_5/rkb/paroff/aavg4c.pa b/sw/rescue/lab8e_goettingen/disk4_5/rkb/paroff/aavg4c.pa
new file mode 100644 (file)
index 0000000..4443493
--- /dev/null
@@ -0,0 +1,1734 @@
+/LAB8E ADVANCED AVERAGER MS (HP7475A) - DISPLAY AND PLOT OUTPUT.\r
+/\r
+/DEC-8E-AAA4A-A-LA\r
+/\r
+/VERSION FOR HP7475A PLOTTER\r
+/\r
+/COPYRIGHT 1972\r
+/DIGITAL EQUIPMENT CORPORATION\r
+/MAYNARD, MASSACHUSETTS 01754\r
+/\r
+/UPDATE 7-AUG-1984 HA UNIVERSITY GOETTINGEN\r
+/FIXES BUG IN OVRLAY ROUTINE\r
+/COPYRIGHT 1984 BY HA\r
+/\r
+/UPDATE 29-JAN-1985 KJS UNIVERSITY GOETTINGEN\r
+/PLOTTER CONTROL CHANGED\r
+/COPYRIGHT 1985 BY KJS\r
+\f/FILE AD4.1\r
+/SECTION IV OF THE LAB8/E ADVANCED AVERAGER .\r
+/THIS IS PART 4 OF ADVANCED AVERAGER FOR OS-8.\r
+/OVERLAY FOR PS8.\r
+\r
+*7557\r
+OVRLAY,        IOF\r
+       CLA CLL CMA\r
+       CLZE            /DISABLE CLOCK\r
+       CLA\r
+       ADCL            /AD\r
+       DILC            /DISPLAY\r
+       DBDI            /I/O\r
+       CDF 0           /CHAIN IN WRITE DATA TO DISK\r
+       DCA I KC7746    /0 PS8 JOB STATUS WORD.\r
+       TAD I XXOV4A    /OVERLAY.\r
+       DCA XXOV4\r
+       CIF 10\r
+       JMS I CHAIN\r
+       6\r
+XXOV4, 0\r
+CHAIN, 7700\r
+XXOV4A,        PG0OV+2\r
+       PG0OV=5\r
+\r
+       MONITR=7600\r
+       CLZE=6130\r
+       ADCL=6530\r
+       DILC=6050\r
+       DBEI=6501\r
+\r
+\r
+\f/LAB-8 ADVANCED AVERAGER - SECTION 4 - [U63A.4]\r
+/COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. 01754\r
+\r
+/\r
+       PWAITD=60               /CONTROLS PEN UP/DOWN DELAY TIME\r
+/\r
+/BASIC SUBROUTINES [SU63A]\r
+       BRAN=JMS I 132          /BRANCH ACCORDING TO AC MATCH WITH LIST\r
+       SHFT=JMS I 133          /DOUBLE PRECISION ARITHMETIC SHIFT\r
+       DADD=JMS I 134          /DOUBLE PRECISION ADD\r
+\r
+/PAGE ZERO CONSTANTS\r
+       K0004=112\r
+       K0003=113\r
+       K0002=114\r
+       KM0001=115\r
+\r
+       K0007=116\r
+       KM0027=117\r
+       K0377=120\r
+       KM0004=121\r
+\f\r
+/TEMPORARY STORAGE REGISTERS 146=177\r
+       TEMP01=146\r
+       TEMP02=147\r
+       TEMP03=150\r
+       TEMP04=151\r
+       TEMP05=152\r
+       TEMP06=153\r
+       TEMP07=154\r
+       TEMP10=155\r
+\r
+       TEMP11=156\r
+       TEMP12=157\r
+       TEMP13=160\r
+       TEMP14=161\r
+       TEMP15=162\r
+       TEMP16=163\r
+       TEMP17=164\r
+       TEMP20=165\r
+       TEMP21=166\r
+\r
+/TEMPORARY STORAGE AND MULTIPLE ACCUMULATORS\r
+       ARITH0=167\r
+       TEMP22=167\r
+\r
+       ARITH1=170\r
+       TEMP23=170\r
+\r
+       ARITH2=171\r
+       TEMP24=171\r
+\r
+       ARITH3=172\r
+       TEMP25=172\r
+\r
+       ARITH4=173\r
+       TEMP26=173\r
+\r
+       ARITH5=174\r
+       TEMP27=174\r
+\r
+/TEMPORARY STORAGE AND TTY-KBD BUFFERS\r
+       KBDBUF=175\r
+       TEMP30=175\r
+\r
+       TTYBUF=176\r
+       TEMP31=176\r
+\r
+       TTYFLG=177\r
+       TEMP32=177\r
+\f\r
+/IOT REFERENCES FOR THE LAB/8E\r
+/\r
+/\r
+/AD8-EA 10 BIT A/D CONVERTER\r
+/\r
+\r
+       ADCL=6530       /CLEAR ALL\r
+       ADLM=6531       /LOAD MPLXR\r
+       ADST=6532       /START CONVERSION\r
+       ADRB=6533       /READ AD BUFFER\r
+       ADSK=6534       /SKIP ON AD DONE\r
+       ADSE=6535       /SKIP ON TIMING ERROR\r
+       ADLE=6536       /LOAD ENABLE REGISTER\r
+       ADRS=6537       /READ STATUS REGISTER\r
+/\r
+/VC8-E POINT PLOT DISPLAY\r
+/\r
+       DILC=6050       /CLEAR ALL\r
+       DICD=6051       /CLEAR DONE FLAG\r
+       DISD=6052       /SKIP ON DONE FLAG\r
+       DILX=6053       /CLEAR DONE FLAG LOAD X\r
+       DILY=6054       /CLEAR DONE FLAG LOAD Y\r
+       DIXY=6055       /CLEAR DONE, INTENSIFY, SET DONE\r
+       DILE=6056       /LOAD ENABLE CLEAR AC\r
+       DIRE=6057       /ENABLE TO AC\r
+/\r
+/DK8-EP        REAL TIME CLOCK\r
+/\r
+       CLZE=6130       /ZERO TO ENABLE\r
+       CLSK=6131       /SKP ON CLOCK FG\r
+       CLOE=6132       /ONES TO ENABLE\r
+       CLAB=6133       /AC TO CLK BUF AND COUNTER REGISTER\r
+       CLEN=6134       /ENABLE TO AC\r
+       CLSA=6135       /STATUS TO AC AND AC ONE'S CLEAR STATUS REG.\r
+       CLBA=6136       /CLK BUF TO AC\r
+       CLCA=6137       /CLK CNTR TO AC AND TO AC\r
+/\r
+/DB8-EA        12 CHANNEL DIGITAL I/O\r
+/\r
+       DBDI=6500       /DISABLE INTERRUPT\r
+       DBEI=6501       /ENABLE INTERRUPT\r
+       DBSK=6502       /SKIP ON INPUT\r
+       DBCI=6503       /CLEAR INPUT BITS WITH SET AC BIT\r
+       DBRI=6504       /READ INPUT\r
+       DBCO=6505       /CLEAR OUTPUT BITS WITH AC BITS\r
+       DBSO=6506       /SET OUTPUT BITS WITH AC BITS\r
+       DBRO=6507       /READ OUTPUT REGISTER\r
+\r
+/COMBINED OPERATES\r
+MTH=CLA CMA CLL RTL;   MTW=CLA CMA CLL RAL\r
+TWO=CLA CLL CML RTL;   TWOK=CLA CLL CML RTR\r
+BSW=7002\r
+\r
+/EXTENDED MEMORY\r
+CDF=6201;      RDF=6214;       RMF=6244\r
+\r
+\f\r
+\r
+/PAGE ZERO\r
+/CONSTANTS\r
+\r
+*112\r
+\r
+K0004, 0004\r
+K0003, 0003\r
+K0002, 0002\r
+KM0001,        -1\r
+K0007, 7\r
+KM0027,        -27\r
+K0377, 377\r
+KM0004,        -4\r
+K0005A,        0005\r
+K0200, 200\r
+KM1000,        -1000\r
+KM1777,        -1777\r
+K6777, 6777\r
+KC7600,        7600\r
+\r
+/LINKAGES\r
+\r
+*132\r
+\r
+       6341                    /BRAN\r
+       6302                    /SHFT\r
+       6362                    /DADD\r
+KSTART,        START\r
+\r
+/SUBROUTINE TO READ VALUE OF A KNOB\r
+\r
+*20\r
+START0,        CDF 10\r
+       TAD I KC7600    /RESTORE BLOCK ADD. FOR CHAIN IN LOC 7.\r
+                       /SAVED BY SEC 3.\r
+       CDF 0\r
+       DCA 7\r
+       JMP I KSTART\r
+\r
+\r
+KNOBS, 0\r
+       ADLM                    /LOAD MUX\r
+       ADST                    /START CONVERSION\r
+       ADSK                    /WAIT\r
+       JMP .-1\r
+       ADRB                    /READ RANGE: 777,-1000\r
+       TAD K6777               /RANGE -3777, -1\r
+       JMP I KNOBS\r
+\r
+/SUBROUTINE TO LOAD Y DAC AND DISPLAY\r
+\r
+DOY,   0\r
+       DILY                    /LOAD Y\r
+       DISD                    /WAIT FOR SETTLE\r
+       JMP .-1\r
+       DIXY                    /DISPLAY\r
+       JMP I DOY\r
+\r
+/ LINKS TO PLOTTER SUBROUTINE IN FIELD 3\r
+HPLON, H3PLON\r
+HPLOF, H3PLOF\r
+HPENU, H3PENU\r
+HPEND, H3PEND\r
+HPLOT, H3PLOT\r
+HPLGR, H3PLGR\r
+\f\r
+*6400\r
+/THIS SECTION DISPLAYS, SCALES, AND OUTPUTS M, C, 1000T \r
+\r
+/MAIN DISPLAY AND INITIATION FOR SECTION 5\r
+START, TAD I K0200             /SET JOBLIST POINTER TO FIRST JOB\r
+       IAC\r
+       DCA JPNTR               /JOB LIST POINTER\r
+       JPNTR=10\r
+       DCA SFACTR              /PRESET SCALE FACTOR\r
+       SFACTR=TEMP32\r
+       TAD KPLOT               /AUTO RESET AT 1 MS A TICK\r
+       CLOE\r
+       CMA\r
+       CLZE\r
+\r
+DISJOB,        CLA CMA\r
+       DCA PMODE               /PMODE .NE. 0 FOR NO PLOT\r
+       PMODE=TEMP31\r
+       JMS I JSETX             /SETUP DATA POINTERS, COUNTERS, DISPLAY\r
+       TAD TJTYPE              /GET #LOC TO SKIP OVER WHEN DISPLAYING MEAN\r
+       BRAN\r
+       K0003\r
+       IAC                     /SD. AND TREND, SKIP 3\r
+       TAD K0002               /S.D., SKIP 2\r
+       DCA TSKIP\r
+       TSKIP=TEMP15\r
+       KSF                     /KBD STRUCK?\r
+       JMP DISAVG              /NO, GO DISPLAY\r
+       KRB                     /YES, GET CHARACTER\r
+       BRAN                    /CHECK AGAINST RESPONSE LIST\r
+       KBDLST\r
+       MTW                     /X - EXPAND, SCALE UP\r
+       JMP NEWSF               /C - CONTRACT, SCALE DOWN\r
+       JMP I PGRDAX            /P - FIRST GRID, THAN DATA\r
+       JMP I PDAX              /D - DATA ONLY\r
+       JMP I TDATAX            /T - TYPE DATA\r
+       JMP I PGRX              /G - GRID\r
+       JMP NXTJOB              /CR - DISPLAY NEXT JOB\r
+       JMP I IDATAX            /I - INTEGRATE\r
+       JMP I OVRLAX            /^W - WRITE DATA.\r
+       JMP I OS8               /^C - RETURN TO OS8.\r
+       JMP START               /^Z - FIRST JOB\r
+KECHO, TAD TEMP02              /ECHO\r
+       JMS I TYPEX\r
+\r
+DISAVG,        JMS GDATAS              /GET M (2 WDS) AND SCALE\r
+       JMS I DISPX             /DISPLAY M/2^K\r
+       JMS I BLKCNX            /MOVE TO NEXT, CHECK FOR END\r
+       JMP DISAVG              /NOT ENDED, DISPLAY NEXT POINT\r
+       CLA CMA                 /ENDED, IS JOB TYPE=1?\r
+       TAD TJTYPE              /(1 FOR MEAN ONLY)\r
+       SNA CLA\r
+       JMP DISEND              /YES, DISPLAY OF JOBS IS DONE\r
+       JMS I JSETX             /NO, SETUP TO DISPLAY MEAN + CF'S\r
+\f\r
+DISPSD,        JMS GDATAS              /GET M AND SCALE\r
+       DCA TMEAN               /SAVE M/(2^K)\r
+       TMEAN=TEMP02\r
+       JMS GDATAS              /GET 2S/SQRT(N) AND SCALE\r
+       TAD TMEAN               /[M+2S/SQRT(N)]/2^K\r
+       JMS I DISPX             /DISPLAY IT\r
+       MTW                     /SKIP OVER TREND IF PRESENT\r
+       JMS I BLKCNX            /MOVE TO NEXT DATA POINT, CHECK FOR END\r
+       JMP DISPSD              /NOT ENDED, DISPLAY NEXT POINT\r
+       JMS I JSETX             /ENDED, SETUP FOR DISPLAY OF MEAN - CF\r
+DISMSD,        JMS GDATAS              /GET NM AND SCALE\r
+       DCA TMEAN               /SAVE M/2^K\r
+       JMS GDATAS              /GET 2S/SQRT(N) AND SCALE\r
+       CMA IAC\r
+       TAD TMEAN               /[M-2S/SQRT(N)]/2^K\r
+       JMS I DISPX             /DISPLAY IT\r
+       MTW                     /SKIP OVER TREND IF PRESENT\r
+       JMS I BLKCNX            /ANY MORE POINTS?\r
+       JMP DISMSD              /MORE POINTS TO DISPLAY, CONTINUE\r
+       MTW                     /IS JOB TYPE=3?\r
+       TAD TJTYPE              /(3 FOR AVG, CF, AND TREND)\r
+       SNA CLA\r
+       JMP DISEND              /NO, DISPLAY OF THIS JOB IS DONE\r
+       JMS I JSETX             /YES, SETUP TO DISPLAY 1000T\r
+       DCA TSKIP               /SKIP NO POINTS AFTER TREND\r
+DISTRN,        TAD K0004               /SKIP MEAN AND CF\r
+       TAD GETPNT\r
+       DCA GETPNT\r
+       JMS I GCDFSX            /GET 1000T\r
+       CDF 0                   /(*)\r
+       CLL RTR\r
+       RTR\r
+       AND K0377\r
+       TAD KM0775\r
+       JMS I DISPX             /DISPLAY RANGES FROM -377+0 TO -377+177\r
+       JMS I BLKCNX            /MOVE TO NEXT DATA PNT, CHECK FOR DONE\r
+       JMP DISTRN              /NOT DONE. DO NEXT POINT\r
+\r
+DISEND,        TAD PMODE               /NO MORE POINTS IN THIS JOB\r
+       SZA CLA                 /ARE WE PLOTTING?\r
+       JMP DISJOB              /NO, RESTART JOB\r
+       CIF 30                  / PLOT DONE\r
+       JMS I HPLOF\r
+       JMP DISJOB              /RESUME DISPLAY MODE\r
+\r
+\f/SUBROUTINE TO GET DBL DATA WORD AND SCALE\r
+/RESULT IN ARITH2 AND AC\r
+GDATAS, 0\r
+       JMS I GCDFSX            /GET CDF AND 1ST WORD\r
+       DCA ARITH1              /SAVE IN HI FAC (*)\r
+       TAD I GETPNT            /GET LO ORDER PART (*)\r
+       DCA ARITH2              /(*)\r
+       CDF 0                   /BACK TO FIELD 0 (*)\r
+       TAD SFACTR              /SCALE\r
+       SHFT\r
+       TAD ARITH1\r
+       JMP I GDATAS\r
+\r
+/NEW SCALE FACTOR\r
+NEWSF, CMA                     /AC=-1 FOR C, +1 FOR X\r
+       TAD SFACTR\r
+       DCA SFACTR\r
+       JMP KECHO\r
+\r
+/LOCAL CONSTANTS\r
+K4077, 4077\r
+KM0775,        -775\r
+KPLOT, 5400\r
+\r
+/LOCAL CROSSPAGE\r
+JSETX, JSETS\r
+TYPEX, TYPES\r
+GCDFSX,        GCDFS\r
+BLKCNX,        BLKCNS\r
+PGRDAX,        PGRDA\r
+PDAX,  PDA\r
+PGRX,  PGR\r
+TDATAX,        TDATA\r
+DISPX, DISPS\r
+TMESSX,        TMESS\r
+IDATAX,        IDATA\r
+OVRLAX,        OVRLAY\r
+OS8,   7600\r
+\f*6600\r
+/SAVE SCALE AND GO TO NEXT JOB\r
+NXTJOB,        TAD JPNTR               /MASK SCALE FACTOR INTO J1 BITS 8-11\r
+       DCA PJPNT               /ADDRESS OF J1 FOR CURRENT JOB\r
+       PJPNT=TEMP01\r
+       TAD I PJPNT             /J1: A/B(1), SF(5), 1(1), CHORD(5)\r
+       AND K4077               /MASK OUT OLD SF\r
+       DCA I PJPNT             /J1: A/B(1), 0(5), 1(1), CHORD(5)\r
+       TAD SFACTR\r
+       SPA                     /SCALE FACTOR LESS THAN 0 ILLEGAL\r
+       CLA\r
+       BSW\r
+       AND K3700\r
+       TAD I PJPNT             /J1: A/B(1),0(5), 1(1), CHORD(5)\r
+       DCA I PJPNT             /J1: A/B(1), SF#(5), 1(1), CHORD(5)\r
+       TAD K0006               /MOVE TO NEXT JOB\r
+       TAD JPNTR\r
+       DCA JPNTR\r
+       JMS CRLFS               /TYPE <CRLF>\r
+       TAD I JPNTR\r
+       SZA CLA\r
+       JMP I DISJOX            /DISPLAY NEXT JOB\r
+       JMP I .+1               /NO MORE JOBS, DISPLAY FIRST AGAIN\r
+       START\r
+\r
+/LOCAL CONSTANT\r
+K0006, 6\r
+K0212, 0212\r
+K3700, 3700\r
+\r
+/LOCAL CROSSPAGE\r
+DISJOX,        DISJOB\r
+TMESSY,        TMESS\r
+GCDFY, GCDF\r
+DISPY, DISPS\r
+\f/SUBROUTINE TO SET UP DATA POINTERS, COUNTERS, AND DISPLAY\r
+JSETS, 0\r
+       TAD I JPNTR             /GET J2 TYPE (4), SORT CODE (8)\r
+       RTL                     /PUT TYPE IN AC8-11\r
+       RTL\r
+       RAL\r
+       AND K0017               /MASK OUT REST OF J2\r
+       DCA TJTYPE              /TYPE CODE\r
+       TJTYPE=TEMP30\r
+       TAD I JPNTR             /J3: LINK 1 (- COUNT OF FIRST BLOCK)\r
+       DCA BLCNTR\r
+       BLCNTR=TEMP25\r
+       TAD I JPNTR             /J4: LINK 2 (DATA FIELD FOR FIRST BLOCK)\r
+       DCA I GCDFY\r
+       TAD I JPNTR             /J5: LINK 3 (START OF FIRST BLOCK-1)\r
+       IAC\r
+       DCA GETPNT\r
+       GETPNT=12\r
+       TAD I JPNTR             /J6: DELTAX (8), YSCALE (4)\r
+       DCA ARITH2              /PREPARE TO SHIFT TO SETUP BINARY POINT OF DX\r
+       DCA ARITH1\r
+       TAD K0005A              /DELTAX (8): INTEGER PART (5), FRACTION (3)\r
+       SHFT\r
+       TAD ARITH1\r
+       DCA DELTAX\r
+       DELTAX=TEMP21\r
+       TAD ARITH2\r
+       DCA DELTAX+1\r
+       TAD KM0005              /MOVE JOB POINTER BACK TO TOP OF JOB\r
+       TAD JPNTR\r
+       DCA JPNTR\r
+       TAD PMODE               /PLOT MODE?\r
+       SZA CLA\r
+       JMP CHAS\r
+       CIF 30\r
+       JMS I HPENU             / P E N  U P\r
+CHAS,  TAD KM1000\r
+       DILX                    /SET DISPLAY X TO LEFT EDGE\r
+       DCA ARITH4\r
+\f      JMS KNOBS               /GET CURRENT CURSOR SETTING FROM KNOBS 0 AND 1\r
+       DCA CURSE1\r
+       CURSE1=TEMP20\r
+       CLA IAC\r
+       JMS KNOBS\r
+       DCA CURSE2\r
+       CURSE2=TEMP17\r
+       JMP I JSETS\r
+\r
+/LOCAL CONSTANTS\r
+K0017, +17\r
+GDATAX,        GDATAS\r
+K0034, +34\r
+K0062, 62\r
+K0215, 215\r
+KM0005,        -05\r
+KM0012,        -12\r
+\r
+PGR,   CLA             / PLOT GRID\r
+       CIF 30\r
+       JMS I HPLON\r
+       CIF 30\r
+       JMS I HPLGR\r
+       CLA\r
+       JMP DISJOB\r
+\r
+PGRDA, CLA             / PLOT GRID AND DATA\r
+       CIF 30\r
+       JMS I HPLON\r
+       CIF 30\r
+       JMS I HPLGR\r
+       CLA\r
+       JMP DISJOB+1\r
+\r
+PDA,   CLA             / PLOT DATA\r
+       CIF 30\r
+       JMS I HPLON\r
+       CLA\r
+       JMP DISJOB+1\r
+\f/SUBROUTINE TO TYPE ASCII IN AC\r
+TYPES, 0\r
+       TLS\r
+       TSF\r
+       JMP .-1\r
+       TCF\r
+       CLA\r
+       JMP I TYPES\r
+\r
+/SUBROUTINE TO TYPE <CRLF>\r
+CRLFS, 0\r
+       TAD K0215\r
+       JMS TYPES\r
+       TAD K0212\r
+       JMS TYPES\r
+       JMP I CRLFS\r
+\r
+\f      *7000\r
+/SUBROUTINE TO DISPLAY POINT: SCALE, BIAS, INCREMENT X\r
+DISPS, 0\r
+       DCA YSAVE\r
+       YSAVE=TEMP14\r
+       TAD ARITH4              /X FOR NEXT POINT\r
+       DILX\r
+       CLA\r
+       TAD YSAVE               /GET POINT\r
+       JMS DOY                 /DISPLAY IT\r
+       CLA\r
+       TAD PMODE               /RUNNING PLOTTER?\r
+       SZA CLA\r
+       JMP DXINC               /NO, INCREMENT X AND CONTINUE\r
+       CIF 30\r
+       JMS I HPLOT             / PLOT DATA (ARITH4,YSAVE)\r
+\r
+DXINC, TAD DELTAX              /SETUP X FOR NEXT POINT\r
+       DCA ARITH1\r
+       TAD DELTAX+1\r
+       DCA ARITH2\r
+       DADD                    /INCREMENT BY DISTANCE BETWEEN POINTS\r
+       JMS CURSES              /CURSOR REACHED?\r
+       SKP                     /YES\r
+       JMP I DISPS             /NO\r
+       TAD KM0027\r
+       DCA CRCNTR\r
+       CRCNTR=TEMP01           /INTENSIFY CURSOR\r
+       DIXY\r
+       ISZ CRCNTR              /POSITION\r
+       JMP .-2\r
+       JMP I DISPS\r
+\f/LOCAL CROSSPAGE\r
+TMESSZ,        TMESS\r
+\r
+/LOCAL CONSTANTS\r
+K0777, 777\r
+K1000, 1000\r
+K0022, +022\r
+\r
+/SUBROUTINE TO MOVE TOWARD CURSOR\r
+CURSES, 0\r
+       ISZ CURSE1\r
+       SKP                     /NOT AT CURSOR1\r
+       JMP I CURSES            /EXIT, AT CURSOR1\r
+       ISZ CURSE2\r
+       ISZ CURSES              /NOT AT CURSOR, EXIT TO CALL+2\r
+       JMP I CURSES            /IF AT CURSOR2, EXIT TO CALL+1\r
+\r
+/SUBROUTINE TO CHECK BLOCK AND LINK TO NEXT IF REQUIRED\r
+/EXIT TO CALL +2 IF END OF FILE REACHED\r
+BLKCNS,        0\r
+       TAD TSKIP               /MOVE GETPNT TO NEXT DATA POINT\r
+       TAD GETPNT\r
+       DCA GETPNT\r
+       ISZ BLCNTR              /BLOCK COMPLETE?\r
+       JMP I BLKCNS            /NO, CONTINUE\r
+       JMS GCDFS               /YES, END OF FILE?\r
+       SNA                     /L1: -COUNT FOR NEXT BLOCK (*)\r
+       ISZ BLKCNS              /END OF FILE EXIT TO CALL+2(*)\r
+       DCA BLCNTR              /RESET COUNTER(*)\r
+       TAD I GETPNT            /L2: CDF N (*)\r
+       DCA GCDF                /RESET DATA FIELD (*)\r
+       TAD I GETPNT            /L3: START OF NEW BLOCK-1(*)\r
+       DCA GETPNT              /RESET DATA POINTER(*)\r
+       CDF 0                   /(*)\r
+       JMP I BLKCNS\r
+\r
+/SUBROUTINE TO SET DATA FIELD AND GET 1 WORD\r
+GCDFS, 0\r
+GCDF,  CDF                     /CURRENT DATA FELD\r
+       TAD I GETPNT            /GET DATA (*)\r
+       JMP I GCDFS             /(*)\r
+\f/KEYBOARD LIST\r
+KBDCHK,        +221                    /CTRL/Q\r
+       -215                    /CR\r
+\r
+*7200\r
+/TYPE DATA IN JOB\r
+TDATA, JMS PRETYP\r
+       DCA TSKIP               /SKIP NOTHING\r
+TYPLUP,        TAD TJTYPE              /JOB TYPE: 1, 2, OR 3\r
+       CMA IAC\r
+       DCA TYPCNT\r
+       TYPCNT=TEMP02\r
+       JMS I CRLFX             /NEW LINE\r
+       TAD CHANNL              /TYPE DATA POINT #\r
+       JMS NUMTYP\r
+       JMS SHFTYP              /TYPE SCALED MEAN IN MV\r
+       ISZ TYPCNT              /CF COMPUTED?\r
+       SKP                     /YES\r
+       JMP TYPEND              /NO\r
+       JMS SHFTYP              /TYPE SCALED CF IN MV\r
+       ISZ TYPCNT              /TREND COMPUTED?\r
+       JMS ABSTYP              /TYPE 1000T\r
+TYPEND,        JMS I CURSEY            /REACHED SECOND CURSOR?\r
+       JMP TYPDUN              /YES\r
+       ISZ CHANNL              /NO\r
+       JMS I BLKCNY            /CHECK FOR END OF JOB\r
+       JMP TYPLUP              /NOT ENDED, CONTINUE\r
+TYPDUN,        CLA CLL CMA\r
+       TAD SFACTR\r
+       DCA SFACTR\r
+       JMS I CRLFX             /NEW LINE\r
+       JMP I DISJOY            /DONE. RETURN TO DISPLAY\r
+\r
+/LOCAL CONSTANTS\r
+K0254, 254                     /ASCII COMMA\r
+K0257, 257                     \r
+KMD1K, -1750                   /-1000(10)\r
+KMCTRL,        -221\r
+KMD100,        -144                    /-100(10)\r
+KMD010,        -12                     /-10(10)\r
+\r
+/LOCAL CROSSPAGE\r
+CRLFX, CRLFS\r
+TYPEY, TYPES\r
+BLKCNY,        BLKCNS\r
+DISJOY,        DISJOB\r
+GDATAY,        GDATAS\r
+GCDFSY,        GCDFS\r
+CURSEY,        CURSES\r
+SGNTYX,        SGNTYP\r
+\f/GET DOUBLEWORD DATA POINT, SCALE BY 4, SIGN EXTEND, TYPE SIGNED\r
+SHFTYP,        0\r
+       JMS I GDATAY            /GET DOUBLEWORD AND SCALE BY SF\r
+       JMS I SGNTYX            /TYPE SIGNED VALUE IN AC\r
+       JMP I SHFTYP\r
+\r
+/TYPE ABSOLUTE VALUE SINGLE WORD IN DATA BLOCK\r
+ABSTYP,        0\r
+       JMS I GCDFSY            /GET DATA WORD (*)\r
+       CDF 0                   /(*)\r
+       JMS NUMTYP              /TYPE DECIMAL VALUE IN AC\r
+       JMP I ABSTYP\r
+\r
+/TYPE DECIMAL VALUE IN AC\r
+NUMTYP,        0\r
+       DCA ARITH4              /# TO RADIX DEFLATE\r
+       TAD KMD1K               /REDUCE BY FACTORS OF 1000(10)\r
+       JMS GDIGIT              /TYPE DIGIT FOR 1000'S\r
+       TAD KMD100              /REDUCE BY FACTORS OF 100(10)\r
+       JMS GDIGIT              /TYPE DIGIT FOR 100'S\r
+       TAD KMD010              /REDUCE BY FACTORS OF 10'S\r
+       JMS GDIGIT              /TYPE DIGIT FOR 10'S\r
+       CLA CMA                 /REDUCE BY FACTORS OF 1\r
+       JMS GDIGIT              /TYPE DIGIT FOR 1'S\r
+       TAD K0254\r
+       JMS I TYPEY             /TYPE 1 COMMA\r
+       JMP I NUMTYP\r
+\r
+/SUBROUTINE SETS UP FOR TYPING\r
+PRETYP,        0\r
+       JMS I CRLFX             /<CRLF>\r
+       CLA CMA                 /MOVE POINTER BACK TO SWEEP COUNT\r
+       TAD GETPNT\r
+       DCA GETPNT\r
+       JMS ABSTYP              /# OF SWEEPS IN AVERAGE\r
+       TAD SFACTR              /SCALE FACTOR\r
+       JMS I SGNTYX\r
+       CLA CLL IAC             /TYPEOUT IS IN MV (2MV/COUNT)\r
+       TAD SFACTR\r
+       DCA SFACTR\r
+       DCA CHANNL              /DATA POINT # INIT TO 0\r
+       CHANNL=TEMP16\r
+PRESKP,        JMS I CURSEY            /LOOK FOR FIRST CURSOR\r
+       JMP I PRETYP            /FOUND IT, EXIT\r
+       ISZ CHANNL              /NO CURSOR YET, INDEX POINT #\r
+       TWO\r
+       JMS I BLKCNY            /STEP THRU DATA POINT\r
+       JMP PRESKP              /MORE DATA POINTS, CONTINUE\r
+       JMP TYPDUN              /END OF DATA POINTS AND NO CURSOR, GO BACK TO DISPLAY.\r
+\r
+\f/SUBROUTINE TO PRINT MESSAGE AND WAIT FOR CR\r
+TMESS, 0\r
+       TAD I TMESS             /ADDR OF MESS-1 AT CALL+1\r
+       DCA TYPNTR\r
+       TYPNTR=13\r
+       ISZ TMESS               /EXIT TO CALL+2\r
+       TAD I TYPNTR            /GET NEXT CHARACTER\r
+       SNA                     /0 INDICATES END OF MESS.\r
+       JMP TWAIT               /END\r
+       JMS I TYPEY             /TYPE CHARACTER\r
+       JMP .-4                 /CONTINUE\r
+\r
+TWAIT, KSF                     /END, WAIT FOR CR\r
+       JMP .-1\r
+       KRB\r
+       BRAN\r
+       KBDCHK\r
+       JMP I DISJOY            /^Q TYPED, RESTART DISPLAY\r
+       JMS I CRLFX             /C.R. TYPED, ECHO IT\r
+       JMP I TMESS             /OTHER OR CR, RESUME\r
+\r
+/FINDS DIGIT AND TYPES IT\r
+GDIGIT, 0\r
+       DCA ARITH1              /FACTOR TO DEFLATE BY\r
+       DCA NDIGIT              /DIGIT=0\r
+       NDIGIT=TEMP01\r
+       TAD ARITH4\r
+GLOOP, DCA ARITH4              /SAVE NEW REDUCED ARGUMENT\r
+       TAD ARITH4              /AND PREPARE TO REDUCE AGAIN\r
+       CLL\r
+       TAD ARITH1              /TRIAL SUBTRACTION\r
+       ISZ NDIGIT              /INDEX DIGIT\r
+       SZL\r
+       JMP GLOOP               /SUBTRACT SOME MORE\r
+       CLA                     /THAT'S ALL FOR THIS DIGIT\r
+       TAD K0257               /DIGIT IS NDIGIT-1\r
+       TAD NDIGIT              /TYPE ASCII\r
+       JMS I TYPEY\r
+       KSF                     /CHECK FOR CTRL Q\r
+       JMP I GDIGIT            /NO KEY, EXIT\r
+       KRB                     /KEY, BUT IS IT CTRL Q?\r
+       TAD KMCTRL\r
+       SZA CLA\r
+       JMP I GDIGIT            /NO, EXIT\r
+       JMP TYPDUN              /YES RESUME DISPLAY\r
+\r
+\r
+       ZBLOCK 5\r
+\f/INTEGRATE DATA BETWEEN CURSORS\r
+IDATA, JMS PRETYP              /INITIALIZE TYPEOUT\r
+       TAD CHANNL              /LO LIMIT OF INTEGRATION\r
+       JMS NUMTYP\r
+       DCA AVGSUM              /CLEAR PARTIAL SUMS\r
+       AVGSUM=TEMP21\r
+       DCA CFLSUM\r
+       CFLSUM=TEMP22\r
+       DCA AVGFLG              /CLEAR OFLO FLAGS\r
+       AVGFLG=TEMP14\r
+       DCA CFLFLG\r
+       CFLFLG=TEMP13\r
+ILOOP, TAD AVGSUM              /PREPARE TO UPDATE SUMS\r
+       JMS UPSUM\r
+       ISZ AVGFLG              /OVERFLOW RETURN, SET FLAG\r
+       DCA AVGSUM\r
+       CLA CMA                 /CF'S COMPUTED?\r
+       TAD TJTYPE\r
+       SNA CLA\r
+       JMP IDONE               /NO, CONTINUE\r
+       TAD CFLSUM              /YES UPDATE THAT SUM\r
+       JMS UPSUM\r
+       ISZ CFLFLG              /OVERFLOW RETURN, SET FLAG\r
+       DCA CFLSUM\r
+       MTW                     /ALREADY PAST CF'S.\r
+IDONE, ISZ CHANNL              /UPDATE DATA POINT #\r
+       JMS I BLKCNZ            /MOVE TO NEXT DATA POINT\r
+       JMS I CURSEZ            /REACHED SECOND CURSOR?\r
+       SKP                     /AT SECOND CURSOR OR OUT OF DATA\r
+       JMP ILOOP               /CONTINUE\r
+       CLA CMA                 /GET # OF LAST DATA POINT\r
+       TAD CHANNL\r
+       JMS I NUMTYX\r
+       TAD AVGSUM              /TYPE SUM\r
+       JMS SGNTYP\r
+       TAD AVGFLG              /TYPE OVERFLOW MARK\r
+       JMS OMARK\r
+       CLA CMA                 /CFLSUM CALCULATED?\r
+       TAD TJTYPE\r
+       SNA CLA\r
+       JMP .+5                 /NO, EXIT\r
+       TAD CFLSUM              /YES, OUTPUT INTEGRAL OF CFL'S.\r
+       JMS I NUMTYX\r
+       TAD CFLFLG              /OVERFLOW MARK IF REQ.\r
+       JMS OMARK\r
+       JMP I .+1               /TYPE SOME CRLF, RESTORE SCALE FACTOR\r
+       TYPDUN                  /AND RESUME DISPLAY\r
+\f/SUBROUTINE TO TYPE SIGNED # IN AC\r
+SGNTYP,        0\r
+       DCA ARITH4\r
+       TAD ARITH4\r
+       SPA CLA         /TYPE CORRECT SIGN: " " OR "-"\r
+       TAD K0015               /MAKE A "-"\r
+       TAD K240\r
+       JMS I TYPEZ\r
+       TAD ARITH4\r
+       SPA\r
+       CMA IAC                 /GET ABS VALUE\r
+       JMS I NUMTYX            /AND TYPE IT\r
+       JMP I SGNTYP\r
+\r
+/LOCAL CROSSPAGE\r
+NUMTYX,        NUMTYP\r
+BLKCNZ,        BLKCNS\r
+CURSEZ,        CURSES\r
+TYPEZ, TYPES\r
+GDATAZ,        GDATAS\r
+\r
+/SUBROUTINE TO GET SUM OF AC AND NEXT DATA POINT\r
+UPSUM, 0\r
+       DCA INADD               /SAVE ADDEND\r
+       INADD=TEMP02\r
+       JMS I GDATAZ            /GET AUGEND\r
+       SPA                     /SET LINK BIT EQUAL TO SIGN BIT\r
+       CML\r
+       TAD INADD               /ADD ADDEND\r
+       DCA INSUM\r
+       INSUM=TEMP03\r
+       TAD INADD               /MODIFY LINK BIT IN ACCORD WITH SIGN\r
+       SPA CLA\r
+       CML\r
+       TAD INSUM               /WE HAVE FAKED A 13 BIT ADD\r
+       SPA SZL                 /ARE THE LINK AND SIGN BITS EQUAL?\r
+       CML CMA                 /1,1 TO 0,0; 0,1 TO 1,0; 1,0 TO 0,1\r
+       SMA SNL CLA             /0,1 AND 1,0 ARE OVERFLOW\r
+       ISZ UPSUM               /L,S WERE 0,0 OR 1,1; NO OVERFLOW\r
+       TAD INSUM               /GET THE RESULT AND EXIT\r
+       JMP I UPSUM             /TO CALL+1 (OVRFLO) OR CALL+2 (NORMAL)\r
+\r
+/SUBROUTINE TO TYPE "^" IF OVERFLOW (AC#0)\r
+OMARK, 0\r
+       SNA CLA                 /AC=0?\r
+       JMP I OMARK             /YES, EXIT\r
+       TAD K0336               /NO, TYPE "^"\r
+       JMS I TYPEZ\r
+       JMP I OMARK\r
+\r
+/LOCAL CONSTANTS\r
+K0336, 336                     /^\r
+K0015, 015\r
+K240,  240\r
+\f/KBD RESPONSE LIST\r
+KBDLST,        +330                    /X\r
+       +303                    /C\r
+       +320                    /P\r
+       +304                    /D\r
+       +324                    /T\r
+       +307                    /G\r
+       +215                    /CR\r
+       +311                    /I\r
+       227                     /^W\r
+       203                     /^C\r
+       -232                    /^Z\r
+KC7746,        7746\r
+\r
+\f/ AAVG4 PLOTTER SUBROUTINES\r
+/\r
+/ REV0.0 25-JAN-85 KJ.S.\r
+/\r
+\r
+       FIELD 3\r
+       *200\r
+\r
+H3PLOT,        0               / MOVE PEN; 'PA' COMMAND IS INITIATED\r
+       CLA             / BY H3PENX\r
+       CDF 0\r
+       TAD I (ARITH4   / GET X POSITION\r
+       DCA XPOS\r
+       TAD I (YSAVE    / GET Y POSITION\r
+       DCA YPOS\r
+       CDF 30\r
+\r
+       TAD PLPAFL\r
+       SNA CLA         / FIRST 'PA'-COMMAND ?\r
+       JMP H3PLT1      / NO:\r
+       TAD (HTPLPA     / YES: OUTPUT 'PA'\r
+       JMS TTO\r
+\r
+H3PLT1,        TAD XPOS\r
+       TAD (1000       / MAKE STRAIGHT BINARY\r
+       AND (1777\r
+       JMS TDO\r
+       0\r
+       TAD (",\r
+       JMS TCO\r
+\r
+       TAD YPOS\r
+       TAD (1000\r
+       AND (1777\r
+       JMS TDO\r
+       0\r
+       TAD (",\r
+       JMS TCO\r
+\r
+       TAD PLPAFL\r
+       SNA CLA         / FIRST PA COMMAND ?\r
+       JMP .+3         / NO: EXIT\r
+       TAD (HTPLRD\r
+       JMS TTO\r
+       DCA PLPAFL\r
+       CIF CDF 0\r
+       JMP I H3PLOT\r
+\r
+XPOS,  0\r
+YPOS,  0\r
+\r
+PLPAFL,        1\r
+HTPLPA,        TEXT /SP1;PA/;0\r
+HTPLRD,        TEXT /;PD;PA/;0\r
+\r
+H3PENU,        0               / PEN UP\r
+       CDF 30\r
+       CLA\r
+       TAD (HTPENU\r
+       JMS TTO\r
+       ISZ PLPAFL              / SET FLAG\r
+       TAD H3PENU\r
+       JMP EXIT+1\r
+\r
+       /1. TERMINATES A PROCEEDING 'PA'-COMMAND\r
+       /2. SETS PEN UP\r
+       /3. ERROR STATUS\r
+HTPENU,        TEXT /;PU;OE;/;0\r
+\r
+H3PEND,        0\r
+       CDF 30\r
+       TAD (HTPEND\r
+       JMS TTO\r
+       ISZ PLPAFL\r
+       TAD H3PEND\r
+       JMP EXIT+1\r
+\r
+       /1. TERMINATES A PROCEEDING 'PA'-COMMAND\r
+       /2. SETS PEN UP\r
+       /3. ERROR STATUS\r
+HTPEND,        TEXT /;PD;OE;/;0\r
+\r
+H3PLOF,        0\r
+       CDF 30\r
+       CLA\r
+       TAD (HTPLOF\r
+       JMS TTO\r
+       TAD H3PLOF\r
+       JMP EXIT+1\r
+\r
+       /1. TERMINATES A PROCEEDING 'PA'-COMMAND\r
+       /2. SETS PEN UP\r
+       /3. POSITIONS PEN TO UPPER LEFT CORNER\r
+       /4. REMOVES PEN\r
+       /5. ERROR STATUS\r
+HTPLOF,        TEXT /;PU;PA0,1150;SP0;OE;/;0\r
+\r
+EXIT,  0\r
+       DCA EXIT\r
+       JMS TRI         / READ ERROR STATUS\r
+       TAD (-260\r
+       SNA             / ERROR NUMBER = 0 ?\r
+       JMP EXITA       / YES:\r
+       TAD (260        / NO:\r
+       TLS             / TYPE NUMBER\r
+       CLA\r
+       CIF CDF 0\r
+       JMP I (DISJOB   / CONTINUE DISPLAY\r
+\r
+EXITA, CIF CDF 0\r
+       JMP I EXIT\r
+\r
+       PAGE\r
+\fH3PLON,       0               / INIT PLOTTER\r
+       CDF 30\r
+       CLA CLL\r
+       TAD (330        / SET INPUT DEV FOR ERROR CODE\r
+       JMS TIDC\r
+       TAD (340        /  AND OUTPUT DEV TO 33/34\r
+       JMS TODC\r
+\r
+       CLA\r
+       TAD (HTPLON\r
+       JMS TTO         / OUTPUT ASCII STRING\r
+\r
+       TAD H3PLON\r
+       JMP EXIT+1\r
+\r
+       /1. INITIALIZATION FOR DIN A4 SIZE\r
+       /2. PLOT HEADER\r
+HTPLON,        TEXT /$[$.N;19:$[$.H32;;17:IN;PS4;RO90;IP975,3800,7300,9800;/\r
+       TEXT /IW;SC0,1023,0,1023;SP0;OE;/;0\r
+\r
+H3PLGR,        0               / PLOT GRID\r
+       CDF 30\r
+       CLA\r
+       TAD (HTPLGR\r
+       JMS TTO\r
+       TAD H3PLGR\r
+       JMP EXIT+1\r
+\r
+       PAGE\r
+\f\r
+       /1. PLOT GRID WITH DIFFERENT PEN SIZES\r
+HTPLGR,        TEXT /$$SP1;PA0,0;PD;PA0,256,-15,256,0,256,/\r
+       TEXT /0,512,-15,512,0,512,0,768,-15,768,0,768,0,1023,/\r
+       TEXT /1023,1023,1023,-15,1023,0,819,0,819,-15,819,0,/\r
+       TEXT /614,0,614,-15,614,0,410,0,410,-15,410,0,/\r
+       TEXT /205,0,205,-15,205,0,0,0,0,-15,0,0;PU;/\r
+       TEXT /SR1.5,2.2;PA-8,-55;LB0$C$PA176,-55;LB100$C$/\r
+       TEXT /PA381,-55;LB200$C$PA585,-55;LB300$C$/\r
+       TEXT /PA790,-55;LB400$C$PA994,-55;LB500$C$/\r
+       TEXT /SR1.8,2.6;PA650,-120;LBZEIT [%MS%]$C$/\r
+       TEXT /SR1.5,2.2;PA-68,245;LB-1$C$PA-68,501;LB 0$C$/\r
+       TEXT /PA-68,757;LB 1$C$/\r
+       TEXT /SP2;PA0,96;PD;PA1023,96;/\r
+       TEXT /PU;PA1023,128;PD;PA0,128;PU;PA0,160;PD;PA1023,160;/\r
+       TEXT /PU;PA1023,512;PD;PA0,512;PU;SP0;OE;/\r
+       0\r
+\r
+       PAGE\r
+\r
+       XLIST\r
+\f/     TRI.PA\r
+/\r
+/      TTY READ INPUT\r
+/\r
+/      READS CHARACTER FROM TTY\r
+/\r
+/      ENTRY:  AC = NO CARE\r
+/      EXIT:   AC = CHARACTER\r
+/\r
+/      SUBRS:  NONE\r
+/\r
+/      02-MAY-84 REV 0.0 KJ.S.\r
+/      18-OCT-84 REV 0.1 KJ.S.  HARDWARE INDEPENDENT\r
+/\r
+\r
+TRI,   0\r
+       CLA\r
+TIKSF, KSF\r
+       JMP .-1\r
+TIKRB, KRB\r
+       AND (177\r
+       TAD (200\r
+       JMP I TRI\r
+\f/     TIDC.PA\r
+/\r
+/      CHANGE SERIAL INPUT DEVICE CODE\r
+/\r
+/      ENTRY:  AC = XNNX  NN = DEV.CODE\r
+/      EXIT:   AC = 0\r
+/\r
+/      SUBR:   LOCATINONS IN TRI ARE CHANGED\r
+/\r
+/      18-OCT-84 REV 0.0 KJ.S.\r
+/\r
+\r
+TIDC,  0\r
+       AND (770\r
+       DCA TIDCSV\r
+       TAD (6001\r
+       TAD TIDCSV\r
+       DCA TIKSF\r
+       TAD (6006\r
+       TAD TIDCSV\r
+       DCA TIKRB\r
+       JMP I TIDC\r
+\r
+TIDCSV,        0\r
+\r
+       PAGE\r
+\f/     TTI.PA\r
+/\r
+/      TELETYPE TEXT INPUT\r
+/\r
+/      READS INPUT FROM TTY AND STORES 2 CHARACTERS/WORD\r
+/      INTO TEXT BUFFER. ACCEPTS ONLY PRINTABLE CHARACTERS.\r
+/      ALL OTHER INPUT AND CHARACTERS AFTER BUFFER-OVERFLOW\r
+/      IS ECHED AS 'BELL'. THE INPUT TERMINATOR IS NOT\r
+/      ECHOED.\r
+/\r
+/      ENTRY:  AC = TERMINATOR, 0 = CR\r
+/      ARG1    POINTER TO TEXT BUFFER\r
+/      ARG2    LENGTH OF TEXT BUFFER (WORDS)\r
+/      EXIT:   AC = 0\r
+/\r
+/      SUBR    TRI,TCO\r
+/\r
+/      16-JUL-84 REV 0.0 KJ.S.\r
+/      22-JUL-84 REV 0.1 KJ.S. SOME BUGS REMOVED\r
+/      23-JUL-84 REV 0.2 KJ.S. BUG AFTER 'DEL' REM.\r
+/\r
+\r
+TTI,   0\r
+       SNA             / AC = TERMINATOR\r
+       TAD (215        / AC = 0  TERMINATOR = CR\r
+       AND (377\r
+       CIA\r
+       DCA TTITM       / SAVE\r
+       TAD I TTI       / GET ARG1 = BUFFER POINTER\r
+       DCA TTIBPT\r
+       ISZ TTI\r
+       CLA CLL\r
+       TAD I TTI       / GET ARG2 = BUFFER LENGTH\r
+       RAL\r
+       CIA\r
+       IAC\r
+       DCA TTIBLN      / = - BUFFER LENGTH * 2 + 1\r
+       ISZ TTI\r
+       DCA TTICNT      / CLEAR CHARACTER COUNTER\r
+       DCA TTIXF       / CLEAR EXIT FLAG\r
+\r
+TTI1,  JMS TRI         / READ INPUT\r
+       DCA TTICH\r
+\r
+       TAD TTICH\r
+       TAD TTITM\r
+       SZA CLA         / TERMINATOR ?\r
+       JMP TTI2        / NO:\r
+       ISZ TTIXF       / YES: SET EXIT FLAG\r
+       DCA TTICH       / PUT 'ZERO' INTO BUFFER\r
+       JMP TTI3\r
+\r
+TTI2,  TAD TTICH       / CHECK INPUT\r
+       TAD (-240\r
+       SPA             / CHAR.GE.240 ?\r
+       JMP TTI10       / NO: CONTROL CHAR\r
+       TAD (-100\r
+       SMA CLA         / CHAR.LT.340 ?\r
+       JMP TTI10       / N0: CONTROL CHAR\r
+\r
+       TAD TTICNT      / CHECK FOR BUFFER OVERFLOW\r
+       TAD TTIBLN\r
+       SMA CLA         / COUNTER.LT.BUFFER*2 ?\r
+       JMP TTI10       / NO: BUFFER OVERFLOW\r
+\r
+       TAD TTICH       / ECHO\r
+       JMS TCO\r
+       TAD TTICH       / MAKE 6-BIT-ASCII\r
+       AND (77\r
+       DCA TTICH\r
+\r
+TTI3,  CLA CLL\r
+       TAD TTICNT      / CALCULATE BUFFER POINTER\r
+       RAR\r
+       TAD TTIBPT\r
+       DCA TTIPNT\r
+\r
+       SZL             / LINK=MSB OF TTICNT.EQ.0 ?\r
+       JMP TTI4        / N0: 2. BYTE OF WORD\r
+       TAD TTICH       / YES: 1. BYTE\r
+       BSW\r
+       JMP TTI5\r
+TTI4,  TAD I TTIPNT    / ADD 1.BYTE\r
+       AND (7700\r
+       TAD TTICH\r
+TTI5,  DCA I TTIPNT    / STORE IN BUFFER\r
+       ISZ TTICNT      / INCREMENT COUNTER\r
+\r
+       TAD TTIXF\r
+       SNA CLA         / EXIT ?\r
+       JMP TTI1        / NO: GET NEXT CHARACTER\r
+       JMP I TTI       / YES:\r
+\r
+TTI10, CLA CLL         / INPUT IS A CONTROL CHARACTER\r
+       TAD TTICH\r
+       TAD (-377\r
+       SNA CLA         / CHAR.EQ.DEL ?\r
+       JMP TTI12       / YES:\r
+TTI11, TAD (207        / NO: ILLEGAL INPUT\r
+       JMS TCO         / ECHO BELL\r
+       JMP TTI1        / CONTINUE\r
+\r
+TTI12, TAD TTICNT\r
+       SNA             / BUFFER EMPTY ?\r
+       JMP TTI11       / YES:\r
+       TAD (-1         / NO: DECREMENT\r
+       DCA TTICNT\r
+       TAD (210        / BACKSPACE\r
+       JMS TCO\r
+       TAD (240\r
+       JMS TCO\r
+       TAD (210\r
+       JMS TCO\r
+       JMP TTI1\r
+\r
+\r
+TTITM, 0               / MINUS INPUT TERMINATOR\r
+TTIBPT,        0               / BUFFER START POINTER\r
+TTIBLN,        0               / MINUS LENGTH OF BUFFER\r
+TTIPNT,        0               / CURRENT BUFFER POINTER\r
+TTICNT,        0               / CURRENT LENGTH COUNTER\r
+TTISWD,        0               / INPUT CONTROL FLAG\r
+TTICH, 0               / LAST INPUT CHAR\r
+TTIXF, 0               / EXIT FLAG\r
+\r
+       PAGE\r
+\f/     TDO.PA\r
+/\r
+/      TYPES DECIMAL INTEGERS WITH DIFFERENT FORMATS\r
+/\r
+/      ENTRY:  AC = NUMBER TO BE TYPED\r
+/      ARG1    BIT 0           IF SET, TYPE SIGNED OUTPUT\r
+/              BIT 1           IF SET, FILL FORMAT WITH ZEROS\r
+/                              UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r
+/              BIT 6-11        OUTPUT FIELD WIDTH. IF ZERO,\r
+/                              NO LEADING ZEROS OR SPACES\r
+/      EXIT:   AC = 0\r
+/\r
+/      SUBR: TIO,TCO\r
+/\r
+/\r
+/      19-OCT-84 REV 0.0 KJ.S.\r
+/\r
+\r
+TDO,   0\r
+       DCA TION0       / SAVE NUMBER\r
+       TAD I TDO\r
+       ISZ TDO\r
+       DCA TIOFL       / SAVE FLAG\r
+       TAD TDOTST      / POINTER TO HEXADECIMAL TABLE\r
+       JMS TDOHO       / PROCEED\r
+       JMP I TDO\r
+\r
+TDOTST,        .+1     / TABLE OF DECIMAL VALUES\r
+        140    / -4000\r
+       4060    / -2000\r
+       6030    / -1000\r
+       6340    /  -800\r
+       7160    /  -400\r
+       7470    /  -200\r
+       7634    /  -100\r
+       7660    /   -80\r
+       7730    /   -40\r
+       7754    /   -20\r
+       7766    /   -10\r
+\f/     TOO.PA\r
+/\r
+/      TYPES OCTAL INTEGERS WITH DIFFERENT FORMATS\r
+/\r
+/      ENTRY:  AC = NUMBER TO BE TYPED\r
+/      ARG1    BIT 0           IF SET, TYPE SIGNED OUTPUT\r
+/              BIT 1           IF SET, FILL FORMAT WITH ZEROS\r
+/                              UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r
+/              BIT 6-11        OUTPUT FIELD WIDTH. IF ZERO,\r
+/                              NO LEADING ZEROS OR SPACES\r
+/      EXIT:   AC = 0\r
+/\r
+/      SUBR: TIO,TCO\r
+/\r
+/\r
+/      18-OCT-84 REV 0.0 KJ.S.\r
+/      18-OCT-84 REV 0.1 KJ.S.  SOME BUGS REMOVED\r
+/      19-OCT-84 REV 1.0 KJ.S.  USING SUBR. TIO\r
+/\r
+\r
+TOO,   0\r
+       DCA TION0       / SAVE NUMBER\r
+       TAD I TOO\r
+       ISZ TOO\r
+       DCA TIOFL       / SAVE FLAG\r
+       TAD TOOTST      / POINTER TO OCTAL TABLE\r
+       JMS TDOHO       / PROCEED\r
+       JMP I TOO\r
+\r
+TOOTST,        .+1     / TABLE OF OCTAL VALUES\r
+       4000\r
+       6000\r
+       7000\r
+       0000\r
+       7400\r
+       7600\r
+       7700\r
+       0000\r
+       7740\r
+       7760\r
+       7770\r
+\f/     THO.PA\r
+/\r
+/      TYPES HEXADECIMAL INTEGERS WITH DIFFERENT FORMATS\r
+/\r
+/      ENTRY:  AC = NUMBER TO BE TYPED\r
+/      ARG1    BIT 0           IF SET, TYPE SIGNED OUTPUT\r
+/              BIT 1           IF SET, FILL FORMAT WITH ZEROS\r
+/                              UNSIGNED OUTPUT ONLY, BIT 0 IGNORED\r
+/              BIT 6-11        OUTPUT FIELD WIDTH. IF ZERO,\r
+/                              NO LEADING ZEROS OR SPACES\r
+/      EXIT:   AC = 0\r
+/\r
+/      SUBR: TIO,TCO\r
+/\r
+/\r
+/      19-OCT-84 REV 0.0 KJ.S.\r
+/\r
+\r
+THO,   0\r
+       DCA TION0       / SAVE NUMBER\r
+       TAD I THO\r
+       ISZ THO\r
+       DCA TIOFL       / SAVE FLAG\r
+       TAD THOTST      / POINTER TO DECIMAL TABLE\r
+       JMS TDOHO       / PROCEED\r
+       JMP I THO\r
+\r
+THOTST,        .+1     / TABLE OF HEXADECIMAL VALUES\r
+       0000\r
+       0000\r
+       0000\r
+       4000\r
+       6000\r
+       7000\r
+       7400\r
+       7600\r
+       7700\r
+       7740\r
+       7760\r
+\f/     TCR     CARRIAGE RETURN\r
+/\r
+/      MOVES CURSOR TO THE BEGINNING OF THE\r
+/      PRESENT LINE\r
+/\r
+/      ENTRY:  AC = NO CARE\r
+/      EXIT:   AC = 0\r
+/\r
+/      10-APR-84 REV 0.0 KJ.S.\r
+/\r
+\r
+TCR,   0\r
+       CLA\r
+       TAD (215\r
+       JMS TCO         / OUTPUT\r
+       CLA\r
+       JMP I TCR\r
+\r
+\f/     TNL     NEW LINE\r
+/\r
+/      POSITIONS CURSOR TO BEGINNING\r
+/      OF NEXT LINE\r
+/\r
+/      ENTRY:  AC = NO CARE\r
+/      EXIT:   AC = 0\r
+/\r
+/      10-APR-84 REV 0.0 KJ.S.\r
+/\r
+\r
+TNL,   0\r
+       JMS TCR\r
+       TAD (212\r
+       JMS TCO         / LF\r
+       JMP I TNL\r
+\f\r
+TIOF,  0               / SUBROUTINE TO CHECK OUTPUT\r
+       AND (17         /  FORMAT AND TYPE\r
+       DCA TIOPT       / STORE\r
+       ISZ TIOCT       / INCREMENT DIGIT COUNTER\r
+\r
+       TAD TIOZF\r
+       SZA CLA         / ZERO FLAG = 0 ?\r
+       JMP TIOF2       / NO: TYPE DIGIT\r
+       TAD TIOPT       / YES:\r
+       SZA CLA         / DIGIT = 0 ?\r
+       JMP TIOF1       / NO:\r
+       TAD TIOFL       / YES:\r
+       SNA CLA         / FIELD WIDTH = 0 ?\r
+       JMP I TIOF      / YES: EXIT\r
+       TAD TIOFL\r
+       TAD TIOCT\r
+       SPA CLA         / FILL CHAR WITHIN FIELD ?\r
+       JMP I TIOF      / NO: EXIT\r
+       TAD TIOFC       / YES: TYPE FILL CHARACTER\r
+       JMP TIOF4\r
+\r
+TIOF1, TAD TIOFL\r
+       SNA             / FIELD WIDTH = 0 ?\r
+       JMP TIOF2       / YES: NO FIXED FIELD WIDTH\r
+       TAD TIOCT       / NO:\r
+       SPA CLA         / DIGIT WITHIN FIELD ?\r
+       JMP TIOER       / NO: FIELD WIDTH TOO SMALL\r
+TIOF2, ISZ TIOZF       / SET ZERO FLAG\r
+       TAD TIOSG\r
+       SNA CLA         / SIGN NEEDED ?\r
+       JMP TIOF3       / NO:\r
+       DCA TIOSG       / CLEAR SIGN FLAG\r
+       TAD ("-         / YES: TYPE IT\r
+       JMS TCO\r
+TIOF3, TAD TIOPT       / TYPE DIGIT\r
+       TAD (-12\r
+       SMA             / HEX - CHAR. ?\r
+       TAD (7          / YES: MAKE A LETTER\r
+       TAD (272        / NO: MAKE NUMBER\r
+TIOF4, JMS TCO\r
+       JMP I TIOF      / EXIT\r
+\r
+       PAGE\r
+\f      / SUBROUTINE FOR TDO,TOO,THO\r
+       / TION0 AND TIOFL MUST BE SET\r
+\r
+TDOHO, 0\r
+       DCA TIOPT       / AC = TABLE POINTER\r
+       DCA TIOSG       / CLEAR SIGN FLAG\r
+       TAD (240\r
+       DCA TIOFC       / FILL CHAR = SPACE\r
+       TAD TIOFL\r
+       AND (2000\r
+       SNA CLA         / FILL CHAR = ZERO ?\r
+       JMP TIOA        / NO:\r
+       TAD (260        / YES:\r
+       DCA TIOFC\r
+       JMP TIOB        / NO SIGN OPTION\r
+\r
+TIOA,  TAD TIOFL\r
+       SMA CLA         / SIGNED OUTPUT ?\r
+       JMP TIOB        / NO:\r
+       TAD TION0       / YES: COMPLEMENT NEGATIV NUMBER\r
+       SMA             / NEGATIV NUMBER ?\r
+       JMP TIOB        / NO:\r
+       CIA             / YES: COMPLEMENT\r
+       DCA TION0\r
+       ISZ TIOSG       / SET SIGN FLAG\r
+\r
+TIOB,  CLA\r
+       TAD TIOFL\r
+       AND (77         / GET FIELD WIDTH\r
+       DCA TIOFL       / CLEAR UNUSED BITS\r
+       TAD TIOFL\r
+       SNA             / FIELD WIDTH ZERO ?\r
+       JMP TIOD        / YES:\r
+       CIA             / NO: COMPLEMENT\r
+       TAD TIOSG       / TAKE SIGN INTO ACCOUNT\r
+       TAD (4          / MAX 4 DIGIT\r
+       SMA             / FILL CHARACTER NEEDED ?\r
+       JMP TIOD        / NO:\r
+       DCA TIOCT       / YES: -# OF SPACE TO FILL FORMAT\r
+\r
+TIOC,  TAD TIOFC       / TYPE\r
+       JMS TCO\r
+       ISZ TIOCT\r
+       JMP TIOC\r
+\r
+TIOD,  CLA\r
+       TAD (-13        / # OF SUBTRACTIONS\r
+       DCA TIOCT       / TO COUNTER\r
+       DCA TION1\r
+\r
+TIOE,  CLA CLL         / SUCCESSIV SUBTRACTIONS OF\r
+       TAD TION0       /  DECIMAL VALUES FROM TABLE\r
+       TAD I TIOPT     / SUBTRACTION\r
+       SZL             / CARRY ?\r
+       DCA TION0       / YES, NEW VALUE\r
+       CLA\r
+       TAD TION1       / RESULT IN LINK\r
+       RAL\r
+       DCA TION1       /  SHIFTED INTO TION1\r
+       ISZ TIOPT       / INCREMENT POINTER\r
+       ISZ TIOCT       / DONE ?\r
+       JMP TIOE        / NO, CONTINUE\r
+\r
+       DCA TIOZF       / CLEAR LEADING ZERO FLAG\r
+\r
+       TAD TIOSG\r
+       CIA\r
+       TAD (-5\r
+       DCA TIOCT       / SET DIGIT COUNTER, 4 DIGITS + SIGN\r
+\r
+       TAD TION1       / 1. DIGIT\r
+       BSW\r
+       RTR\r
+       JMS TIOF\r
+\r
+       TAD TION1       / 2. DIGIT\r
+       RTR\r
+       RTR\r
+       JMS TIOF\r
+\r
+       TAD TION1       / 3. DIGIT\r
+       JMS TIOF\r
+\r
+       ISZ TIOZF       / 4. DIGIT ALWAYS TYPED\r
+       TAD TION0       \r
+       JMS TIOF\r
+\r
+       JMP I TDOHO\r
+\r
+TIOER, TAD TIOFL       / ERROR, FILL FORMAT WITH ****\r
+       CIA\r
+       DCA TIOCT\r
+       TAD ("*\r
+       JMS TCO         / TYPE CHARACTER\r
+       ISZ TIOCT\r
+       JMP .-4\r
+       CLA\r
+       JMP I TDOHO     / EXIT MAIN SUBROUTINE\r
+\r
+TION0, 0       / GETS LSD\r
+TION1, 0       / GETS 3 MSD\r
+TIOPT, 0       / POINTER\r
+TIOCT, 0       / COUNTER\r
+TIOFL, 0       / FLAGS\r
+TIOSG, 0       / SIGN FLAG\r
+TIOZF, 0       / ZERO SUPPRESS FLAG\r
+TIOFC, 0       / FILL CHARACTER\r
+\f/     TSO     STRING OUTPUT\r
+/\r
+/      TYPES A STRING OF ASCII - CHARACTERS\r
+/      BUFFER CONTAINS ONE CHARACTER PER\r
+/      WORD AND MUST BE TERMINATED BY 0\r
+/\r
+/      ENTRY:  AC = POINTER TO BUFFER\r
+/      EXIT:   AC = 0\r
+/\r
+/      10-APR-84 REV 0.0 KJ.S.\r
+/\r
+\r
+TSO,   0\r
+       DCA TSOPT       / BUFFER POINTER\r
+TSOA,  TAD I TSOPT     / GET CHARACTER\r
+       SNA             / CHARACTER.EQ.0 ?\r
+       JMP I TSO       / YES: EXIT\r
+       JMS TCO         / NO: PRINT\r
+       ISZ TSOPT\r
+       JMP TSOA\r
+       JMP TSOA\r
+\r
+TSOPT, 0\r
+\r
+       PAGE\r
+\f/     TCO     CHARACTER OUTPUT\r
+/\r
+/      TYPES ONE ASCII-CHARACTER CALLING\r
+/      CP-ROUTINE, RESPONS TO CTRL/S - CTRL/Q\r
+/\r
+/      ENTRY:  AC = CHARACTER\r
+/      EXIT:   AC = 0  LINK UNCHANGED\r
+/\r
+/      10-APR-84 REV 0.0 KJ.S.\r
+/      18-OCT-84 REV 0.1 KJ.S.  HARDWARE INDEPENDENT\r
+/      18-OCT-84 REV 0.2 KJ.S.  LINK PRESERVED\r
+/\r
+\r
+TCO,   0\r
+       DCA TCOSV       / SAVE CHAR\r
+       JMS TOKSF       / CHECK XON/XOFF\r
+       JMP TCO2\r
+       JMS TOKRB\r
+       AND (177\r
+       TAD (7755\r
+       SZA CLA         / CTRL/S ?\r
+       JMP TCO2        / NO:\r
+TCO1,  CLA             / YES: WAITING FOR CTRL/Q\r
+       JMS TOKSF\r
+       JMP .-1\r
+       JMS TOKRB\r
+       AND (177\r
+       TAD (7757\r
+       SZA CLA         / CTRL/Q ?\r
+       JMP TCO1        / NO: WAIT\r
+TCO2,  TAD TCOSV       / YES: TYPE CHARACTER\r
+       JMS TOTLS\r
+       JMS TOTSF\r
+       JMP .-1\r
+       CLA\r
+       JMP I TCO\r
+\r
+TCOSV, 0\r
+\r
+/      SUBROUTINES WITH I/O INSTRUCTIONS\r
+/      DEVICE-CODE CAN BE SET BY TODC\r
+\r
+TOKSF, 0\r
+       KSF\r
+       SKP\r
+       ISZ TOKSF\r
+       JMP I TOKSF\r
+TOKRB, 0\r
+       KRB\r
+       JMP I TOKRB\r
+TOTSF, 0\r
+       TSF\r
+       SKP\r
+       ISZ TOTSF\r
+       JMP I TOTSF\r
+TOTLS, 0\r
+       TLS\r
+       JMP I TOTLS\r
+\f/     TODC.PA\r
+/\r
+/      CHANGE SERIAL OUTPUT DEVICE AND THE CORRESPONDING\r
+/      INPUT DEVICE FOR XON/XOFF PROTOCOL\r
+/\r
+/      ENTRY:  AC = XNNX  NN = OUTPUT, NN-1 = INPUT DEVICE\r
+/      EXIT:   AC = 0\r
+/\r
+/      18-OCT-84 REV 0.0 KJ.S.\r
+/\r
+\r
+TODC,  0\r
+       AND (770\r
+       DCA TODCSV\r
+       TAD (6001\r
+       TAD TODCSV\r
+       DCA TOTSF+1\r
+       TAD (6006\r
+       TAD TODCSV\r
+       DCA TOTLS+1\r
+       TAD (-10        / CHANGE INPUT\r
+       TAD TODCSV\r
+       DCA TODCSV\r
+       TAD (6001\r
+       TAD TODCSV\r
+       DCA TOKSF+1\r
+       TAD (6006\r
+       TAD TODCSV\r
+       DCA TOKRB+1\r
+       JMP I TODC\r
+\r
+TODCSV,        0\r
+\f      PAGE\r
+/      TTO     TEXT OUTPUT\r
+/\r
+/      TYPE TEXT FROM 6-BIT ASCII BUFFER CREATED WITH\r
+/      PAL8 TEXT PSEUDO-OP.\r
+/\r
+/      $ - OPTION:\r
+/      CHARACTERS BETWEEN TWO $-CHARACTERS ARE CONVERTED\r
+/      TO CONTROL CHARACTERS.\r
+/\r
+/      # - OPTION:\r
+/      MULTIPLE OUTPUT OF SAME CHARACTER. THE FIRST CHARACTER\r
+/      AFTER # IS TREATED AS NUMBER ( LOWER 6 BITS ) AND\r
+/      THE SECOND CHARACTER IS PRINTED.\r
+/\r
+/      NOTE:\r
+/      IF THE $- AND %-OPTIONS ARE USED, THE TEXT BUFFER MUST\r
+/      TERMINATED WITH A ZERO WORD. THIS FEATURE COMBINES\r
+/      SEVERAL TEXT BUFFERS TO ONE BUFFER WITH THE /F OPTION.\r
+/\r
+/      % - OPTION\r
+/      CHARACTERS BETWEEN TWO "-CHARACTERS ARE CONVERTED\r
+/      TO LOWER CASE CHARACTER. MAY BE COMBINED WITH\r
+/      OTHER OPTIONS\r
+/\r
+/      ENTRY: AC = POINTER TO TEXT-BUFFER\r
+/      EXIT:   AC = 0\r
+/\r
+/      06-APR-84 REV 0.0 KJ.S.\r
+/      09-APR-84 REV 0.1 KJ.S.  LOCATIONS RENAMED\r
+/      11-APR-84 REV 0.2 KJ.S.  OUTPUT CODE CHANGED\r
+/      09-FEB-85 REV 0.3 KJ.S.  #-OPTION ADDED\r
+/      13-FEB-85 REV 0.4 KJ.S.  %-OPTION ADDED\r
+/\r
+\r
+TTO,   0\r
+       DCA TTOPNT      / SAVE POINTER TO TEXT\r
+       DCA TTOCFL      / CLEAR CONTROL-FLAG\r
+       DCA TTOEFL      /   AND END-FLAG\r
+\r
+TTOA,  CLA\r
+       TAD I TTOPNT\r
+       SNA             / ZERO WORD ?\r
+       JMP TTOR        / YES: END OF BUFFER\r
+       BSW\r
+       JMS TTOB\r
+       TAD I TTOPNT\r
+       JMS TTOB\r
+       ISZ TTOPNT\r
+       JMP TTOA\r
+\r
+TTOB,  0\r
+       AND (77         / MAKE 6-BIT ASCII\r
+       SNA             / CHAR = 0 ?\r
+       JMP TTOB2       / YES: CHECK IF END OF BUFFER\r
+       TAD (-43\r
+       SNA             / CHAR = 43 = # ?\r
+       JMP TTOB3       / YES: REP. OPTION\r
+       TAD (-1\r
+       SNA             / CHAR = 44 = $ ?\r
+       JMP TTOB1       / YES: TOGGLE CONTROL FLAG\r
+       TAD (-1\r
+       SNA             / CHAR = 45 = % ?\r
+       JMP TTOB5       / YES: TOGGLE CONTROL FLAG\r
+       TAD (5          / NO, PRINT CHARACTER\r
+       SPA             / MAKE 8-BIT ASCII:\r
+       TAD (100        /   01-37 TO 301-337\r
+       TAD (240        /   40-77 TO 240-277\r
+       TAD TTOCFL      / ADD CTRL SET BY $\r
+       TAD TTOLFL      /  AND LOWER FLAG SET BY %\r
+       DCA TTOSV\r
+\r
+       ISZ TTONFL\r
+       SKP\r
+       JMP TTOB4       / LAST CHAR WAS #, MAKE NUMBER\r
+TTOB0, TAD TTOSV\r
+       JMS TCO\r
+       ISZ TTONFL\r
+       JMP TTOB0       / LOOP FOR #-OPTION\r
+       CLA CLL CMA RAL / DONE, FLAG = -2\r
+       JMP TTOBX\r
+\r
+TTOB5, CLA             / TOGGLE LOWER CASE FLAG\r
+       TAD TTOLFL\r
+       SNA CLA         / LOWER CASE FLAG ZERO ?\r
+       TAD (40         / YES: SET TO 40\r
+       DCA TTOLFL      / NO: CLEAR FLAG\r
+       JMP TTOB6\r
+\r
+TTOB1, CLA             / TOGGLE CONTROL CHAR FLAG\r
+       TAD TTOCFL\r
+       SNA CLA         / CONTROL FLAG ZERO ?\r
+       TAD (-100       / YES: SET TO -100\r
+       DCA TTOCFL      / NO: CLEAR FLAG\r
+TTOB6, CLA IAC         / SET END FLAG\r
+       DCA TTOEFL\r
+       JMP I TTOB\r
+\r
+TTOB2, CLA\r
+       TAD TTOEFL\r
+       SNA CLA         / TTOEFL.GT.0 ?\r
+       JMP TTOR        / NO: END OF BUFFER, EXIT\r
+       JMP I TTOB      / YES: IGNORE ZERO CHAR AFTER USE OF $\r
+\r
+TTOB3, CLA CMA         / CHAR = #\r
+       JMP TTOBX       / NEXT CHAR IS CONVERT TO NUMBER\r
+\r
+TTOB4, CLA IAC         / MAKE NUMBER\r
+       TAD TTOSV\r
+       AND (77\r
+       CIA\r
+\r
+TTOBX, DCA TTONFL      / SET FLAG\r
+       JMP I TTOB\r
+\r
+TTOR,  CLA             / CLEAR ALL FLAGS\r
+       DCA TTOCFL\r
+       DCA TTOEFL\r
+       JMP I TTO       /  AND EXIT\r
+\r
+TTOPNT,        0\r
+TTOCFL,        0\r
+TTOLFL,        0\r
+TTOEFL,        0\r
+TTONFL,        -2\r
+TTOSV, 0\r
+\r
+       PAGE\r
+\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
\ No newline at end of file