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