1 / KL8 CONSOLE OVERLAY FILE 2 3 / LAST EDIT: 08-APR-1987 23:00:00 CJL 4 5 / MAY BE ASSEMBLED WITH '/J' SWITCH SET. 6 7 / THIS IS THE CONSOLE OVERLAY FILE FOR KL8 TYPE CONSOLE SUPPORT WITH 8 / STANDARD BUFFERED LPT: AND I/O ERROR HANDLING CAPABILITIES. 9 10 / ASSEMBLY PARAMETERS. 11 12 / SETTING OVTYPE=1 GENERATES A STANDARD OVERLAY (DEVICE 03, 04 CONSOLE 13 / AND DEVICE 65, 66 LPT:). 14 15 / SETTING OVTYPE=2 GENERATES A NON-STANDARD OVERLAY (DEVICE 03, 04 CONSOLE 16 / AND DEVICE 40, 41 LPT:). 17 18 / SETTING OVTYPE=10 GENERATES A DECMATE OVERLAY (DEVICE 03, 04 CONSOLE 19 / AND DEVICE 32, 33 LPT:). 20 21 / SETTING OVTYPE=60 GENERATES A NON-STANDARD OVERLAY (DEVICE 40, 41 CONSOLE 22 / AND DEVICE 65, 66 LPT:). 23 24 / SETTING OVTYPE=61 GENERATES A NON-STANDARD OVERLAY (DEVICE 40, 41 CONSOLE 25 / AND DEVICE 03, 04 LPT:). 26 27 / ADDITIONAL TYPES CAN BE DEFINED FOR OTHER DEVICE CODES. 28 29 / SETTING LPBUFF=1 GENERATES AN OVERLAY WITH LPT: BUFFERING ENABLED. 30 31 / SETTING LPBUFF=0 GENERATES AN OVERLAY WITH LPT: BUFFERING DISABLED. 32 33 / SETTING LCASE=1 GENERATES AN OVERLAY WITH LOWER-CASE CHARACTERS PASSED. 34 35 / SETTING LCASE=0 GENERATES AN OVERLAY WITH LOWER-CASE FOLDED TO UPPER-CASE. 36 37 / SETTING VT8LPT=1 GENERATES INTERRUPT ENABLE FOR A DEVICE 66 LPT: 38 / SHARING INTERRUPT CONTROL WITH THE VT-8/E KEYBOARD (DEVICE 43). 39 40 / SETTING VT8LPT=0 GENERATES INTERRUPT ENABLE FOR DEVICE 66 ALONE. 41 42 / SETTING ONEWAY=1 ASSUMES A HARDWARE HANDSHAKING (CENTRONICS, ETC.) TYPE 43 / INTERFACE TO THE LPT: WHICH HAS NO INPUT HANDLING. 44 45 / SETTING ONEWAY=0 ASSUMES A SOFTWARE HANDSHAKING (<^S>/<^Q>) TYPE INTERFACE 46 / WITH SUITABLE INPUT HANDLING. 47 / SET CUSTOM PARAMETERS HERE. 48 49 / DKEY= 43 /VT-8/E KEYBOARD IOT CODE 50 51 / IRATE= 14 /4800 BAUD SERIAL PRINTER ON DECMATE, ETC. 52 53 / KEY= 03 /KEYBOARD CODE 54 55 / LCASE= 1 /LOWER-CASE CHARACTERS ALLOWED 56 57 / LIN= 65 /LPT: INPUT CODE 58 59 / LPBUFF= 1 /ENABLE LPT: BUFFERING 60 61 / LPT= 66 /LPT: OUTPUT CODE 62 63 / NMCH1= "K^100+"L-300 /FIRST NAME PAIR 64 65 / NMCH2= "8^100 /SECOND NAME PAIR 66 67 / NMCH3= 0000 /THIRD NAME PAIR 68 69 / NOLIE= 1 /LIEIOT DOES NOT EXIST (USUALLY LPT: IS OUTPUT ONLY) 70 71 / NOLOE= 1 /LPEIOT DOES NOT EXIST (INTERRUPTS ENABLED WITH 72 / /DKIEIOT SHARED WITH VT-8/E KEYBOARD) 73 / ONEWAY= 1 /LPT: OUTPUT ONLY 74 75 / OUT= 04 /CONSOLE OUTPUT CODE 76 77 / OVTYPE= 01 /GENERATE STANDARD OVERLAY 78 79 / VT8LPT= 1 /ALLOW VT-8/E KEYBOARD AND LPT: INTERRUPTS 80 / CONDITIONAL ASSEMBLY PARAMETERS. 81 82 IFNDEF OVTYPE /STANDARD OVERLAY TYPE 83 84 / "KL8" OVERLAY CONDITIONALS. 85 86 IFZERO OVTYPE-1 < 87 88 IFNDEF DKEY /VT-8/E KEYBOARD CODE 89 IFNDEF KEY /KEYBOARD CODE 90 IFNDEF LIN /LPT: INPUT CODE 91 IFNDEF LPT /LPT: OUTPUT CODE 92 IFNDEF NMCH1 /FIRST NAME PAIR 93 IFNDEF NMCH2 /SECOND NAME PAIR 94 IFNDEF NMCH3 /THIRD NAME PAIR 95 IFNDEF ONEWAY /ONE-WAY LPT: HANDLING 96 IFNDEF OUT /CONSOLE OUTPUT CODE 97 IFNDEF VT8LPT /VT-8/E LPT: INTERRUPTS 98 99 / LPT: INTERRUPT ENABLE DEFINITIONS. 100 101 IFNDEF NOLIE /LIEIOT DOES/DOES NOT EXIST 102 IFNDEF NOLOE /LPEIOT DOES/DOES NOT EXIST 103 104 > 105 106 / "KL8SP" OVERLAY CONDITIONALS. 107 108 IFZERO OVTYPE-2 < 109 110 IFNDEF KEY /KEYBOARD CODE 111 IFNDEF LIN /LPT: INPUT CODE 112 IFNDEF LPT /LPT: OUTPUT CODE 113 IFNDEF NMCH1 /FIRST NAME PAIR 114 IFNDEF NMCH2 /SECOND NAME PAIR 115 IFNDEF NMCH3 /THIRD NAME PAIR 116 IFNDEF ONEWAY /TWO-WAY LPT: HANDLING 117 IFNDEF OUT /CONSOLE OUTPUT CODE 118 IFNDEF VT8LPT /NO VT-8/E LPT: INTERRUPTS 119 120 / LPT: INTERRUPT ENABLE DEFINITIONS. 121 122 IFNDEF NOLIE /LIEIOT DOES/DOES NOT EXIST 123 IFNDEF NOLOE /LPEIOT DOES/DOES NOT EXIST 124 125 > 126 / "KLMATE" OVERLAY CONDITIONALS. 127 128 IFZERO OVTYPE-10 < 129 130 IFNDEF IRATE /4800 BAUD LPT: BAUD RATE 131 IFNDEF KEY /KEYBOARD CODE 132 IFNDEF LIN /LPT: INPUT CODE 133 IFNDEF LPT /LPT: OUTPUT CODE 134 IFNDEF LSBIOT /SET LPT: BAUD RATE 135 IFNDEF NMCH1 /FIRST NAME PAIR 136 IFNDEF NMCH2 /SECOND NAME PAIR 137 IFNDEF NMCH3 /THIRD NAME PAIR 138 IFNDEF ONEWAY /TWO-WAY LPT: HANDLING 139 IFNDEF OUT /CONSOLE OUTPUT CODE 140 IFNDEF VT8LPT /NO VT-8/E LPT: INTERRUPTS 141 142 / LPT: INTERRUPT ENABLE DEFINITIONS. 143 144 IFNDEF NOLIE /LIEIOT EXISTS 145 IFNDEF NOLOE /LPEIOT EXISTS 146 147 > 148 149 / "KL40" OVERLAY CONDITIONALS. 150 151 152 IFZERO OVTYPE-60 < 153 154 IFNDEF DKEY /VT-8/E KEYBOARD CODE 155 IFNDEF KEY /KEYBOARD CODE 156 IFNDEF LIN /LPT: INPUT CODE 157 IFNDEF LPT /LPT: OUTPUT CODE 158 IFNDEF NMCH1 /FIRST NAME PAIR 159 IFNDEF NMCH2 /SECOND NAME PAIR 160 IFNDEF NMCH3 /THIRD NAME PAIR 161 IFNDEF ONEWAY /IS ONE-WAY LPT: HANDLING 162 IFNDEF OUT /CONSOLE OUTPUT CODE 163 IFNDEF VT8LPT /VT-8/E LPT: INTERRUPTS 164 165 / LPT: INTERRUPT ENABLE DEFINITIONS. 166 167 IFNDEF NOLIE /LIEIOT DOES/DOES NOT EXIST 168 IFNDEF NOLOE /LPEIOT DOES/DOES NOT EXIST 169 170 > 171 / "KL40SP" OVERLAY CONDITIONALS. 172 173 IFZERO OVTYPE-61 < 174 175 IFNDEF KEY /KEYBOARD CODE 176 IFNDEF LIN /LPT: INPUT CODE 177 IFNDEF LPT /LPT: OUTPUT CODE 178 IFNDEF NMCH1 /FIRST NAME PAIR 179 IFNDEF NMCH2 /SECOND NAME PAIR 180 IFNDEF NMCH3 /THIRD NAME PAIR 181 IFNDEF ONEWAY /TWO-WAY LPT: HANDLING 182 IFNDEF OUT /CONSOLE OUTPUT CODE 183 IFNDEF VT8LPT /NO VT-8/E LPT: INTERRUPTS 184 185 / LPT: INTERRUPT ENABLE DEFINITIONS. 186 187 IFNDEF NOLIE /LIEIOT DOES/DOES NOT EXIST 188 IFNDEF NOLOE /LPEIOT DOES/DOES NOT EXIST 189 190 > 191 192 / DEFAULT ("CATCH-ALL") PARAMETERS. 193 194 IFNDEF DKEY /VT-8/E KEYBOARD CODE 195 IFNDEF IRATE /4800 BAUD SERIAL LPT: RATE 196 IFNDEF KEY /KEYBOARD CODE 197 IFNDEF LCASE /LOWER-CASE CHARACTERS ALLOWED 198 IFNDEF LIN /LPT: INPUT CODE 199 IFNDEF LPBUFF /LPT: BUFFERING ENABLED 200 IFNDEF LPT /LPT: OUTPUT CODE 201 IFNDEF LSBIOT /NO SERIAL LPT: RATE SETTING 202 IFNDEF NMCH1 /FIRST NAME PAIR 203 IFNDEF NMCH2 /SECOND NAME PAIR 204 IFNDEF NMCH3 /THIRD NAME PAIR 205 IFNDEF NOLIE /NO LPT: INPUT INTERRUPTS 206 IFNDEF NOLOE /LPEIOT ENALES LPT: INTERRUPTS 207 IFNDEF ONEWAY /TWO-WAY LPT: HANDLING 208 IFNDEF OUT /CONSOLE OUTPUT CODE 209 210 IFZERO LPT-66 < 211 212 IFNDEF VT8LPT /NO SHARED INTERRUPT HANDLING 213 214 > 215 216 IFNDEF VT8LPT /VT-8/E LPT: IF DEVICE 66 217 218 // P?S/8 DEFINITIONS. 219 220 ADRLST= 7603 /ZAP ADDRESS LIST 221 CALADR= 0020 /CALLING ADDRESS 222 CALFLD= 0021 /CALLING FIELD 223 CCHECK= 2343 /<^C> CHECK ROUTINE 224 CHKCNT= 0043 /CHECKSUM COUNT 225 CHKPTR= 0044 /CHECKSUM POINTER 226 CNTLST= 7615 /ZAP CONTENTS LIST 227 CONINT= 0000 /CONSOLE INTERRUPT LOCATION 228 CONOFF= 0100 /CONSOLE OFF 229 DEVWRD= 0104 /DEVICE WORD 230 DSPBLB= 0024 /BLURB DISPLAY 231 ERRTRP= 0046 /ERROR TRAP 232 ESTATUS=0077 /ERROR STATUS 233 FILBLB= 0023 /BLURB FILL 234 FUDWRD= 0105 /FUDGE WORD 235 HIDWRD= 7600 /SYSTEM HANDLER ID NUMBER WORD 236 INCON= 0031 /CONSOLE INPUT 237 INFLAG= 0025 /CONSOLE INPUT EVENT FLAG 238 INTFLGS=0002 /INTERRUPT FLAGS 239 INTLST= 0003 /INTERRUPT LIST POINTER 240 IOTRAP= 0045 /I/O TRAP 241 IOWAIT= 0047 /I/O WAIT 242 LCMODE= 0006 /LPT: CASE 243 LINFLAG=0030 /LPT: INPUT EVENT FLAG 244 LPMODE= 0004 /LPT: BUFFERING MODE 245 LPTFLAG=0027 /LPT: OUTPUT EVENT FLAG 246 MOVBLB= 0022 /MOVE BLURB POINTER 247 OUTCON= 0033 /CONSOLE OUTPUT 248 OUTFLAG=0026 /CONSOLE OUTPUT EVENT FLAG 249 OUTLPT= 0035 /LOGICAL LPT: 250 OVID= 0106 /OVERLAY ID AREA 251 OVRCOMM=2511 /MONITOR ONCE-ONLY REJOIN ADDRESS 252 OVRWRD= 0111 /OVERLAY TYPE WORD 253 P7JMP= 2337 /OUTPUT JUMP INSTRUCTION 254 P7OUT= 2335 /OUTPUT WAITING ADDRESS 255 P7TLS= 2340 /OUTPUT INSTRUCTION HERE 256 P7TSF= 2336 /OUTPUT SKIP INSTRUCTION HERE 257 SBOOT= 7600 /MONITOR RESTARTS HERE 258 SBTFUN= 7602 /BOOTSTRAP FUNCTION WORD 259 SCRSIZE=7611 /SYSTEM CORE SIZE WORD 260 SYSIO= 7640 /SYSTEM I/O ADDRESS 261 TRAPIO= 1041 /I/O TRAP 262 TRPBLK= 0113 /TRAP BLOCKS ARE HERE 263 TRPERR= 1200 /ERROR TRAP 264 TTY= 0003 /BASIC TTY: DEVICE CODE 265 TTYTST= 2506 /TTY: TIME-OUT ROUTINE IN KEYBOARD MONITOR 266 VTMODE= 0005 /VT-8/E MODE WORD 267 WAITIO= 1110 /I/O WAIT TRAP 268 XIOMON= 0102 /MONITOR STARTUP ADDRESS WITHIN OVERLAY 269 ZAPLST= 7627 /I/O ZAP CONTENTS LIST 270 271 // END OF P?S/8 DEFINITIONS. 272 / IOT DEFINITIONS. 273 274 / CONSOLE KEYBOARD DEFINITIONS. 275 276 KIEIOT= KEY^10+6005 /KEYBOARD INTERRUPT ENABLE PER AC[11] 277 KRBIOT= KEY^10+6006 /READ KEYBOARD BUFFER, CLEAR THE FLAG 278 KSFIOT= KEY^10+6001 /SKIP ON (AND CLEAR IF 6120) KEYBOARD FLAG 279 KTIIOT= KEY^10+6003 /KEYBOARD TEST INSTRUCTION 280 281 / CONSOLE OUTPUT DEFINITIONS. 282 283 TCFIOT= OUT^10+6002 /CLEAR TTY: FLAG 284 TFLIOT= OUT^10+6000 /SET TTY: FLAG 285 TIEIOT= OUT^10+6005 /OUTPUT INTERRUPT ENABLE PER AC[11] (FOR 6120) 286 TLSIOT= OUT^10+6006 /OUTPUT CHARACTER, CLEAR FLAG 287 TSFIOT= OUT^10+6001 /SKIP ON (CLEAR IF 6120) OUTPUT FLAG 288 289 / LPT: INPUT DEFINITIONS. 290 291 ISLI= ONEWAY-1 /7777 IF LPT: INPUT, ELSE 0000 292 ISLIE= NOLIE-1&ISLI /7777 IF LIEIOT EXISTS, ELSE 0000 293 LINNOP= ONEWAY^NOP /0000 IF LPT: INPUT, ELSE 7000 294 295 LIEIOT= LIN^10+6005&ISLIE /LPT: INPUT INTERRUPT ENALE PER AC[11] 296 LIRBIOT=LIN^10+6006&ISLI /READ LPT: INPUT, CLEAR FLAG (IF NOT 6120) 297 LISFIOT=LIN^10+6001&ISLI!LINNOP /SKIP ON (CLEAR FLAG IF 6120) LPT: INPUT FLAG 298 299 / LPT: OUTPUT DEFINITIONS. 300 301 ISLOE= NOLOE-1 /7777 IF LPEIOT EXISTS, ELSE 0000 302 303 LCFIOT= LPT^10+6002 /CLEAR LPT: OUTPUT FLAG 304 LLSIOT= LPT^10+6006 /OUTPUT LPT: CHARACTER, CLEAR FLAG (IF NOT 6120) 305 LPEIOT= LPT^10+6005&ISLOE /LPT: OUTPUT INTERRUPT ENABLE PER AC[11] 306 LSFIOT= LPT^10+6001 /SKIP ON (CLEAR FLAG IF 6120) LPT: OUTPUT FLAG 307 308 / VT-8/E KEYBOARD DEFINITIONS. 309 310 DKCFIOT=DKEY^10+6000 /CLEAR VT-8/E KEYBOARD FLAG 311 DKIEIOT=DKEY^10+6005 /INTERRUPT ENABLE PER AC[11] ON VT-8/E, LPT: 312 DKSFIOT=DKEY^10+6001 /SKIP ON VT-8/E KEYBOARD FLAG 313 314 / KEYBOARD MONITOR I/O DEFINITIONS. 315 316 MONKCC= TTY^10+6002 /CLEAR KEYBOARD FLAG IN KEYBOARD MONITOR 317 MONKRB= TTY^10+6006 /READ KEYBOARD BUFFER, CLEAR IN MONITOR 318 MONKRS= TTY^10+6004 /READ KEYBOARD BUFFER IN KEYBOARD MONITOR 319 MONKSF= TTY^10+6001 /SKIP ON KEYBOARD FLAG IN KEYBOARD MONITOR 320 MONTLS= TTY+1^10+6006 /KEYBOARD MONITOR OUTPUT CHARACTER, CLEAR FLAG 321 MONTSF= TTY+1^10+6001 /SKIP ON OUTPUT FLAG IN KEYBOARD MONITOR 322 / OTHER DEFINITIONS. 323 324 BCLI= 1560 /BIT CLEAR IMMEDIATE 325 BUFSIZE=2000 /SIZE OF LPT: BUFFER 326 CIF10= CIF 10 /CIF CONSTANT 327 COM= 0017 /COMPLEMENT AC 328 ESF= 0004 /LOAD SPECIAL FUNCTIONS REGISTER 329 JMPIC= JMP I . /CURRENT PAGE JMP INDIRECT INSTRUCTION 330 JMSC= JMS . /CURRENT PAGE JMS INSTRUCTION 331 LINC= 6141 /GOTO LINC MODE 332 NL0001= CLA IAC /LOAD AC WITH 0001 333 NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 334 NL0010= CLA IAC RAL RAR /LOAD AC WITH 0010 **** ON 6120 ONLY **** 335 NL2000= CLA CLL CML RTR /LOAD AC WITH 2000 336 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 337 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 338 NL7776= CLA CLL CMA RAL /LOAD AC WITH 7776 339 NL7777= CLA CMA /LOAD AC WITH 7777 340 PDP= 0002 /GOTO PDP-8 MODE 341 SFA= 0024 /READ SPECIAL FUNCTIONS REGISTER 342 SYSINST=SYSIO&177+JMSC /I/O CALL INSTRUCTION DEFINITION 343 / FILE HEADER FOR CONSOLE UTILITY VALIDATION. 344 345 *NMCH1 /FIRST TWO DEVICE NAME CHARACTERS 346 347 *NMCH2 /SECOND TWO DEVICE NAME CHARACTERS 348 349 *NMCH3 /THIRD TWO DEVICE NAME CHARACTERS 350 351 / THE CONSOLE OVERLAY IMAGE STARTS HERE. IT EXTENDS FROM 0000-5777 ON 352 / THE SYSTEM DEVICE, BUT IS VIRTUALLY LOADED IN THREE PARTS: 0000-1777, 353 / 2000-3777, 4000-5777. THE PORTION FROM 0000-1777 WILL BE INITIALLY 354 / BROUGHT IN WITH THE CONSOLE UTILITY ITSELF FOR USE WITH /U LOADING OF 355 / BINARY FILES. WHEN CALCULATING THE CHECKSUM, THE PORTION FROM 0000-2577 356 / WILL BE LOADED. 357 358 *0 /START AT THE BEGINNING 359 360 / THE CONSOLE INTERRUPT ROUTINE IS ENTERED HERE. EVENT FLAGS WILL BE SET 361 / FOR THE BENEFIT OF THE NORMAL NON-INTERRUPT CONSOLE ROUTINES. THE SOLE 362 / PURPOSE IS TO CLEAR THE INTERRUPT FOR THE BENEFIT OF THE USER. IT IS STILL 363 / NECESSARY TO CALL THE I/O ROUTINES IN THE NORMAL MANNER TO DO THE ACTUAL 364 / I/O. THOUGH IT NORMALLY CAUSES THE RESPECTIVE FLAGS TO CLEAR, THE 365 / CONSOLE INTERRUPT HANDLER COULD CONCEIVABLY MISS AN INTERRUPT FLAG 366 / BELONGING TO THE OVERLAY. THEREFORE THE USER PROGRAM SHOULD ATTEMPT TO 367 / NOT DUPLICATE INTERRUPT HANDLING FOR THE DEVICES SUPPORTED BY THE OVERLAY, 368 / AS THIS COULD LEAD TO ANOMALOUS RESULTS. IT IS SUGGESTED THAT THE USER'S 369 / PROGRAM BE TAILORED TO THE SYSTEM AT HAND AND SHOULD "TIME-OUT" ANY 370 / STRAY INTERRUPTS FROM OTHER DEVICES SUSPECTED OF POSSIBLY BEING SUPPORTED 371 / BY THE OVERLAY. THE OVERLAY INTERRUPT HANDLER SHOULD ALWAYS BE CALLED 372 / BEFORE TESTING ANY FLAG POSSIBLY ASSOCIATED WITH THE OVERLAY. THE OVERLAY 373 / INTERRUPT ROUTINES WILL CHECK ALL OVERLAY ASSOCIATED FLAGS EACH TIME THE 374 / OVERLAY INTERRUPT HANDLER IS CALLED, AND SET STATUS BITS IN THE AC UPON 375 / INTERRUPT EXIT. 376 377 000000 0000 CONINT, .-. /CONSOLE INTERRUPT ENTRY POINT 378 000001 5577 JMP I [INTCON] /GO HANDLE IT THERE 379 380 / THE FOLLOWING LOCATIONS ARE PROVIDED TO ALLOW INTERRUPT-DRIVEN PROGRAMS 381 / THE ABILITY TO INTERACT WITH THE OVERLAY BETTER. 382 383 000002 0000 INTFLGS,.-. /INTERRUPT FLAGS 384 000003 0665 INTLST, INTDEV /INTERRUPT DEVICE LIST POINTER 385 386 / THE FOLLOWING LOCATION CONTROLS WHETHER OR NOT LPT: BUFFERING OCCURS. 387 / SETTING LPMODE=1 PREVENTS BUFFERING, SETTING LPMODE=0 ALLOWS BUFFERING TO 388 / A CHARACTER. IF BUFFERING IS ALLOWED, LPMODE WILL BE NEGATIVE 389 / IMMEDIATELY AFTER SENDING A 7777 TO THE LPT: ROUTINE. THIS WILL STILL 390 / ALLOW BUFFERING, BUT WILL TEMPORARILY SUSPEND IT WHEN STARTING UP A NEW 391 / PROGRAM, SO THAT THE PROGRAM CAN TIME OUT THE EXISTENCE OF THE LPT: 392 / HARDWARE. THE LPMODE VALUE WILL BE THE TWO'S COMPLEMENT OF THE CURRENT 393 / COUNT OF CHARACTERS STILL LEFT TO BE SENT UNTIL FULL BUFFERING TO A 394 / IS TO BE REENABLED. IF LPMODE=1, THEN THIS WILL NOT OCCUR. 395 396 000004 0000 LPMODE, 1-LPBUFF /LPT: BUFFERING MODE; 1=NO BUFFERING ALLOWED 397 / THE FOLLOWING WORD IS RESERVED FOR VT-8/E, ETC. OVERLAY STRUCTURES WHICH 398 / REQUIRE MODE SWITCHING ON INTERRUPT, ETC. IF THE USER PROGRAM DISCOVERS 399 / THAT THE VT-8/E VIDEO INTERRUPT IS BEING HANDLED BY SEARCHING THE INTERRUPT 400 / DEVICE LIST FOR AN EXTRA DEVICE, AND THAT DEVICE HAPPENS TO BE THE VT-8/E 401 / VIDEO INTERFACE, THEN THIS WORD CAN BE MODIFIED TO ALLOW USER GRAPHICS 402 / MODE, ETC. TO BE APPENDED TO THE INTERRUPT HANDLER. 403 404 000005 0000 VTMODE, .-. /VT-8/E MODE WORD 405 406 / THE FOLLOWING WORD CONTROLS THE DISPOSITION OF LOWER-CASE CHARACTERS TO 407 / BE OUTPUT TO THE LOGICAL LPT: HANDLER. IF LCMODE=0 THEN THESE CHARACTERS 408 / WILL BE OUTPUT AS IS; IF LCMODE=7740 THEN THEY WILL BE "FOLDED" TO THEIR 409 / UPPER-CASE EQUIVALENTS. 410 411 000006 0000 LCMODE, 1-LCASE^7740 /LOWER-CASE MODE; 7740=FOLD TO UPPER 412 000007 0000 LINCHAR,.-. /LPT: INPUT CHARACTER 413 414 *10 /GET TO AUTO-INDEX AREA 415 416 000010 0000 CXR1, .-. /AUTO-INDEX NUMBER ONE 417 000011 0000 CXR2, .-. /AUTO-INDEX NUMBER TWO 418 000012 0000 INCHAR, .-. /LATEST INPUT CHARACTER 419 000013 0000 KEYTMP, .-. /KEYBOARD INTERRUPT TEMPORARY 420 000014 0000 LPTAC, .-. /LPT: AC TEMPORARY 421 000015 0000 LPTCHAR,.-. /LPT: CHARACTER TEMPORARY 422 000016 0000 OUTAC, .-. /OUTPUT ROUTINE AC TEMPORARY 423 000017 0000 OUTCHR, .-. /OUTPUT CHARACTER TEMPORARY 424 425 *20 /GET PAST AUTO-INDEX AREA 426 427 / THE FOLLOW LOCATIONS ARE USED TO HOLD THE CALLER'S ADDRESS AND FIELD. THEY 428 / ARE USED BOTH BY THE TRAP BLOCK ROUTINES AND THE ERROR BLURB HANDLING 429 / ROUTINES OF THE OVERLAY. 430 431 000020 0000 CALADR, .-. /CALLING ADDRESS 432 000021 0000 CALFLD, .-. /CALLING FIELD 433 434 / THE FOLLOWING ARE ROUTINE POINTERS FOR THE TRAP BLOCK ROUTINES. 435 / THEY ARE EXPECTED TO HANDLE THEIR RESPECTIVE TASKS BY THE 436 / ERROR RECOVERY ROUTINES CONTAINED IN THE PARTICULAR TRAP BLOCKS OF 437 / THE CURRENTLY CONFIGURED SYSTEM. 438 439 000022 1064 MOVBLB, BLBMOVE /POINTER TO ERROR BLURB MOVE ROUTINE 440 000023 1000 FILBLB, BLBFILL /POINTER TO ERROR BLURB FILL ROUTINE 441 000024 1113 DSPBLB, BLBDISPLAY /POINTER TO ERROR BLURB DISPLAY ROUTINE 442 / THE FOLLOWING ARE EVENT FLAGS FOR THE INTERRUPT HANDLERS OF THE DEVICES 443 / SUPPORTED BY THE OVERLAY. IT IS POSSIBLE TO REFERENCE THEM DIRECTLY FROM 444 / A REAL-TIME PROGRAM, BUT IT IS RECOMMENDED THAT THEY BE CLEARED BY CALLING 445 / THE APPROPRIATE OVERLAY ROUTINE ESPECIALLY THE LPT: INPUT FLAG. THIS FLAG 446 / IS USED TO ARBITRATE OUTPUT FLOW WITHIN THE LPT: ROUTINE ITSELF. UNLESS 447 / THE USER IS THOROUGHLY FAMILIAR WITH THE INNER STRUCTURE OF THE LPT: 448 / ROUTINE, IT IS BEST LEFT TO ITSELF! 449 450 000025 0000 INFLAG, 0 /CONSOLE INPUT INTERRUPT FLAG 451 000026 0000 OUTFLAG,0 /CONSOLE OUTPUT INTERRUPT FLAG 452 000027 0000 LPTFLAG,0 /LPT: OUTPUT INTERRUPT FLAG 453 000030 0000 LINFLAG,0 /LPT: INPUT INTERRUPT FLAG 454 455 / THE FOLLOWING ARE THE MAIN ENTRY POINTS FOR THE CONSOLE AND LPT: ROUTINES. 456 457 000031 0000 INCON, .-. /CONSOLE INPUT ROUTINE 458 000032 5576 JMP I [CONIN] /GO HANDLE IT THERE 459 460 000033 0000 OUTCON, .-. /CONSOLE OUTPUT ROUTINE 461 000034 5575 JMP I [CONOUT] /GO HANDLE IT THERE 462 463 000035 0000 OUTLPT, .-. /LPT: OUTPUT ROUTINE 464 000036 5574 JMP I [LPTOUT] /GO HANDLER IT THERE 465 466 000037 0000 EMPTPTR,.-. /BUFFER EMPTYING POINTER 467 000040 0000 EMPTR, .-. /TEMPORARY EMPTYING POINTER 468 000041 0000 FILLPTR,.-. /BUFFER FILLING POINTER 469 000042 0000 LSTATUS,0 /LPT: STATUS 470 471 / THE FOLLOWING WORDS ARE USED BY THE CONSOLE UTILITY CODE TO DETERMINE THE 472 / CHECKSUMMED REGION OF THE OVERLAY. DUE TO RESTRICTIONS OF THE UTILITY, 473 / THIS REGION MUST BE LOCATED BETWEEN 0000 AND 2577. 474 475 000043 7101 CHKCNT, CONOFF+1-ENDROM /CHECKSUM COUNT 476 000044 0101 CHKPTR, CONOFF+1 /CHECKSUM POINTER 477 478 / THE FOLLOWING ARE LINKAGE POINTERS PROVIDED FOR THE TRAP BLOCK ROUTINES. 479 480 000045 5573 IOTRAP, JMP I [TRAPIO&177+TRPAGE] /GO HANDLE I/O CALLS THERE 481 000046 5572 ERRTRP, JMP I [TRPERR&177+TRPAG2] /GO HANDLE I/O ERRORS THERE 482 000047 5571 IOWAIT, JMP I [WAITIO&177+TRPAGE] /GO WAIT FOR I/O TO COMPLETE THERE 483 000050 0000 0 /RESERVED FOR ADDITIONAL HANDLER INTERCEPT 484 485 / THE FOLLOWING WORD IS USED TO INDICATE INITIAL RELOADING OF THE OVERLAY. 486 / ANY CLEANUP CAUSED BY RELOADING OF THE OVERLAY IS GOVERNED BY THE 487 / VALUE OF THIS WORD. THE TRAP BLOCKS WILL BE RELOADED IF THIS WORD IS -1. 488 489 000051 7777 INITSW, -1 /FIRST TIME SINCE RELOAD SWITCH 490 / THE INTERRUPT ROUTINE EXITS HERE. 491 492 000052 0000 INTRET, .-. /WILL BE CIF CDF RETURN FIELD 493 000053 5400 JMP I CONINT /RETURN TO CALLER 494 495 / THE CONSOLE TURNOFF ROUTINE EXITS HERE. 496 497 000054 0000 OFFRET, .-. /WILL BE CIF CDF RETURN FIELD 498 000055 5500 JMP I CONOFF /RETURN TO CALLER 499 500 / THE LPT: ROUTINE EXITS HERE. 501 502 000056 0000 LPTRET, .-. /WILL BE CIF CDF RETURN FIELD 503 000057 5435 JMP I OUTLPT /RETURN TO CALLER 504 505 / THE INPUT ROUTINE RETURNS HERE. 506 507 000060 0000 INRET, .-. /WILL BE CIF CDF RETURN FIELD 508 000061 5431 JMP I INCON /RETURN TO CALLER 509 510 / THE OUTPUT ROUTINE RETURNS HERE. 511 512 000062 0000 OUTRET, .-. /WILL BE CIF CDF RETURN FIELD 513 000063 5433 JMP I OUTCON /RETURN TO CALLER 514 515 / PRINTER BAUD RATE VARIABLE. 516 517 000064 0014 BAUDRAT,IRATE /HOLDS PRINTER BAUD RATE VALUE 518 519 000065 0000 ZBLOCK 77-. /EMPTY SPACE 000066 0000 000067 0000 000070 0000 000071 0000 000072 0000 000073 0000 000074 0000 000075 0000 000076 0000 520 521 000077 0000 ESTATUS,.-. /ERROR STATUS STORED HERE DURING ERROR RECOVERY 522 523 / THE FOLLOWING ENTRY IS USED FOR ANY HOUSEKEEPING NEEDED BY 524 / THE OVERLAY ROUTINES WHEN THE OVERLAY IS REQUESTED TO SHUT DOWN 525 / BY VARIOUS PROGRAMS SUCH AS "BIN" ETC., WHICH CAN'T FUNCTION DURING 526 / DMA, ETC. CAUSED BY VARIOUS VERSIONS OF THE OVERLAY. 527 528 000100 0000 CONOFF, .-. /CONSOLE OFF ROUTINE 529 000101 5570 JMP I [OFFCON] /HANDLE IT THERE 530 531 / THE FOLLOWING IS THE SPECIAL ENTRY POINT FOR THE KEYBOARD MONITOR. IT IS 532 / DELIBERATELY PLACED WITHIN THE "ROM" AREA (WHICH STARTED ONE WORD AGO) 533 / AS A DELIBERATE MEASURE TO CAUSE RELOAD IN CASE THE OVERLAY IS PARTIALLY 534 / CLOBBERED, BUT NOT WITHIN THE "ROM" AREA. SHOULD THE MONITOR INITIALIZATION 535 / FAIL TO COMPLETE, THIS LOCATION WILL BE NON-ZERO, THUS FURTHER ATTEMPTS 536 / TO REBOOT THE SYSTEM WILL RELOAD THE OVERLAY. THIS ENTRY WILL INITIALIZE 537 / THE MONITOR'S CONSOLE ROUTINES TO CALL THE OVERLAY, AND WILL INTERCEPT 538 / ALL SYSTEM READ/WRITE I/O ACCORDING TO THE DICTATES OF THE TRAP BLOCKS. 539 540 000102 0000 XIOMON, 0 /KEYBOARD MONITOR INITIALIZATION ENTRY POINT 541 000103 5567 JMP I [MONINIT] /GO HANDLE IT THERE 542 / THE FOLLOWING WORD WILL EVENTUALLY CONTAIN THE ID VALUE FOR THE 543 / PARTICULAR READ/WRITE I/O SYSTEM. THIS VALUE IS INCLUDED IN THE CHECKSUM 544 / FOR THE "ROM" AREA AND SHOULD BE SET TO ZERO INITIALLY. 545 546 000104 0000 DEVWRD, 0 /WILL BE HARDWARE ID NUMBER 547 548 NOPUNCH /FOOL THE ASSEMBLER 549 550 / THE FOLLOWING WORD IS PROVIDED TO "KLUDGE" THE CHECKSUM TO A UNIQUE VALUE 551 / TO PREVENT INCORRECT MONITOR/OVERLAY LINKAGE WHEN BOOTING TO A NEW 552 / SYSTEM DEVICE/OVERLAY COMBINATION. THE OVERLAY TYPE*100+HARDWARE ID# 553 / SHOULD BE THE TOTAL CHECKSUM VALUE (INVERTED). 554 555 000105 0000 FUDWRD, .-. /WILL BE CHANGED AS NECESSARY 556 557 / OVERLAY ID NAME FIELD. 558 559 / THE FOLLOWING WORDS WILL BE UPDATED FROM THE BINARY OVERLAY FILES' 560 / SPECIAL ORIGIN SETTINGS IN THEIR HEADERS. 561 562 000106 1314 OVID, NMCH1 /FIRST PAIR OF DEVICE NAME CHARACTERS 563 000107 7000 NMCH2 /SECOND PAIR OF DEVICE NAME CHARACTERS 564 000110 0000 NMCH3 /THIRD PAIR OF DEVICE NAME CHARACTERS 565 566 ENPUNCH /UN-FOOL THE ASSEMBLER 567 568 *. /ESTABLISH CURRENT ORIGIN AGAIN 569 570 / THE FOLLOWING WORD WILL BE USED TO CALCULATE THE CHECKSUM FOR THE 571 / OVERLAY AND WILL BE ITS FINAL CHECKSUM VALUE. IT SHOULD CONTAIN THE 572 / UNIQUE OVERLAY TYPE NUMBER*100. 573 574 000111 0100 OVRWRD, OVTYPE^100 /OVERLAY TYPE WORD 575 PAGE 576 577 / MONITOR INITIALIZATION STARTS HERE. 578 579 000200 1051 MONINIT,TAD INITSW /GET FIRST TIME SWITCH 580 000201 7640 SZA CLA /SKIP IF NOT FIRST TIME 581 000202 4777 JMS I (TRPINIT) /ELSE RELOAD THE TRAP BLOCKS 582 000203 4566 JMS I [SETFLD] /SET OUR DATA FIELD 583 000204 1376 TAD (ADRLST&177+TRPAGE-1) /SETUP 584 000205 3010 DCA CXR1 /ADDRESS POINTER 585 000206 1375 TAD (ZAPLST&177+TRPAGE-1) /SETUP 586 000207 3011 DCA CXR2 /REPLACEMENT POINTER 587 000210 7344 NL7776 /SETUP THE 588 000211 3031 DCA INCON /ZAPPING COUNT 589 000212 1410 IOZAPLP,TAD I CXR1 /GET AN ADDRESS TO ZAP 590 000213 7450 SNA /END OF A LIST? 591 000214 5235 JMP IOZAPEND /YES 592 000215 3035 DCA OUTLPT /NO, STASH THE POINTER 593 000216 1411 TAD I CXR2 /GET A REPLACEMENT VALUE 594 000217 3033 DCA OUTCON /STASH IT 595 000220 1033 TAD OUTCON /GET IT BACK 596 000221 1374 TAD (-CIF10) /COMPARE TO MAGIC VALUE 597 000222 7640 SZA CLA /SKIP IF IT MATCHES 598 000223 5230 JMP IOZAPOK /JUMP IF NOT 599 000224 6224 RIF /GET OUR FIELD 600 000225 1165 TAD [CDF] /FORM CDF OUR FIELD 601 000226 7001 IAC /TAD (CIF-CDF) /MAKE IT CIF OUR FIELD 602 000227 3033 DCA OUTCON /SAVE AS NEW REPLACEMENT VALUE 603 000230 6201 IOZAPOK,CDF 00 /GO TO FIELD ZERO 604 000231 1033 TAD OUTCON /GET REPLACEMENT VALUE 605 000232 3435 DCA I OUTLPT /ZAP IT IN 606 000233 4566 JMS I [SETFLD] /BACK TO OUR FIELD 607 000234 5212 JMP IOZAPLP /KEEP GOING 608 609 000235 1373 IOZAPEN,TAD (MONADR-1) /SETUP THE 610 000236 3010 DCA CXR1 /MONITOR ZAP LIST 611 000237 1372 TAD (MONZAP-1) /SETUP THE 612 000240 3011 DCA CXR2 /MONITOR CONTENTS LIST 613 000241 2031 ISZ INCON /DONE BOTH LISTS? 614 000242 5212 JMP IOZAPLP /NO, GO DO MONITOR ZAPS 615 000243 2051 ISZ INITSW /FIRST TIME? 616 000244 5247 JMP INITNORM /NO, JUST KEEP GOING 617 000245 4771 JMS I (INITEST) /GO PROVE THE CONSOLE HARDWARE EXISTS 618 619 / CLEAR EVERYTHING UPON OVERLAY RELOAD HERE. 620 621 000246 4770 JMS I (CLEAR) /DO CLEAR OPERATIONS NOW 622 000247 3051 INITNOR,DCA INITSW /CLEAR THE SWITCH 623 000250 4767 JMS I (INTSET) /ENABLE DEVICE INTERRUPTS 624 000251 4766 JMS I (PDP12ENABLE) /ENABLE PDP-12 INTERRUPTS 625 000252 1064 TAD BAUDRATE /GET PRINTER BAUD RATE FOR DECMATE 626 000253 7000 LSBIOT /SET THE BAUD RATE 627 000254 7000 NOP /JUST IN CASE 628 000255 7200 CLA /CLEAN UP 629 000256 1365 TAD (-10) /SETUP THE 630 000257 3031 DCA INCON /TIME-OUT COUNTER 631 000260 6041 OUTTST, TSFIOT /FLAG UP? 632 000261 5264 JMP OUTIME /NO, TIME IT OUT 633 000262 6040 TFLIOT /RESET IT FOR DECMATE 634 000263 5271 JMP OUTCOMMON /CONTINUE THERE 635 636 000264 2035 OUTIME, ISZ OUTLPT /WAITED ENOUGH? 637 000265 5260 JMP OUTTST /NO, KEEP GOING 638 000266 2031 ISZ INCON /WAITED TOO LONG? 639 000267 5260 JMP OUTTST /NO, KEEP GOING 640 000270 6046 TLSIOT /YES, SET THE FLAG NOW 641 000271 3102 OUTCOMM,DCA XIOMON /RESET "ROM" LOCATION 642 000272 7346 NL7775 /-3 643 000273 1012 TAD INCHAR /COMPARE TO LATEST INPUT 644 000274 0164 AND [177] /JUST SEVEN BITS 645 000275 7650 SNA CLA /SKIP IF NOT <^C> 646 000276 7240 NL7777 /ELSE SET <^C> INDICATOR 647 000277 6203 CIF CDF 00 /GOING TO FIELD 0 648 000300 5764 JMP I (OVRCOMMON) /RETURN TO THE MONITOR ONCE-ONLY CODE 649 650 / KEYBOARD MONITOR REPLACEMENT ADDRESSES. 651 652 000301 2336 MONADR, P7TSF /WAS TSFIOT 653 000302 2337 P7JMP /WAS JMP I P7OUT 654 000303 2340 P7TLS /WAS TLSIOT 655 000304 2345 CCHECK+2 /WAS KSFIOT 656 000305 2346 CCHECK+3 /WAS JMP I CCHECK 657 000306 2347 CCHECK+4 /WAS KRBIOT 658 000307 0000 0 /THIS ENDS THE LIST 659 660 / KEYBOARD MONITOR REPLACEMENT VALUES. 661 662 000310 6212 MONZAP, CIF 10 /WILL BECOME CIF OUR FIELD 663 000311 4033 JMS OUTCON /CALL OUTPUT ROUTINE 664 000312 5735 P7OUT&177+JMPIC /JMP I P7OUT 665 000313 6212 CIF 10 /WILL BECOME CIF OUR FIELD 666 000314 4031 JMS INCON /CALL INPUT ROUTINE 667 000315 5743 CCHECK&177+JMPIC /JMP I CCHECK 668 000364 2511 PAGE 000365 7770 000366 1725 000367 1551 000370 1704 000371 4000 000372 0307 000373 0300 000374 1566 000375 5426 000376 5402 000377 1600 669 / CONSOLE INPUT ROUTINE. 670 671 000400 7326 CONIN, NL0002 /SET CIF BIT 672 000401 6214 RDF /GET CALLING FIELD 673 000402 1165 TAD [CDF] /TURN INTO CIF CDF CALLING FIELD 674 000403 3060 DCA INRET /STORE IN-LINE FOR EXIT LATER 675 000404 4777 JMS I (INTEST) /TEST FOR KEYBOARD INPUT 676 000405 5060 JMP INRET /WASN'T ANY, TAKE IMMEDIATE RETURN 677 000406 2031 ISZ INCON /BUMP RETURN ADDRESS BECAUSE THERE WAS INPUT 678 000407 1012 TAD INCHAR /GET THE CHARACTER 679 000410 5060 JMP INRET /FINISH IT THERE 680 681 / CONSOLE OUTPUT ROUTINE. 682 683 000411 3016 CONOUT, DCA OUTAC /SAVE PASSED VALUE 684 000412 1016 TAD OUTAC /GET IT AGAIN 685 000413 0164 AND [177] /JUST SEVEN-BIT 686 000414 3017 DCA OUTCHR /STASH THE CHARACTER 687 000415 7326 NL0002 /SET CIF BIT 688 000416 6214 RDF /GET CALLING FIELD 689 000417 1165 TAD [CDF] /MAKE IT CIF CDF RETURN FIELD 690 000420 3062 DCA OUTRET /STORE FOR EXIT LATER 691 000421 4776 JMS I (OUTEST) /TEST (AND OUTPUT) THE CHARACTER 692 000422 7410 SKP /SKIP IF FLAG WASN'T UP 693 000423 2033 ISZ OUTCON /BUMP TO SKIP RETURN 694 000424 1016 TAD OUTAC /GET ORIGINAL AC 695 000425 5062 JMP OUTRET /FINISH IT THERE 696 / LOGICAL LPT: HANDLER. 697 698 / SETTING LPMODE TO 0000 ALLOWS BUFFERING TO A CHARACTER. 699 700 / SETTING LPMODE TO 0001 DISABLES ALL BUFFERING. 701 702 / DURING BUFFERING OPERATIONS, LPMODE WILL CHANGE FROM 0000 TO A 703 / NEGATIVE COUNT FOR INITIALIZATION PURPOSES. 704 705 000426 3014 LPTOUT, DCA LPTAC /SAVE PASSED AC 706 000427 7326 NL0002 /SET CIF BIT 707 000430 6214 RDF /GET CALLING FIELD 708 000431 1165 TAD [CDF] /TURN INTO CIF CDF RETURN FIELD 709 000432 3056 DCA LPTRET /STORE FOR EXIT LATER 710 000433 1014 TAD LPTAC /GET PASSED AC VALUE 711 000434 7040 CMA /INVERT FOR TEST 712 000435 7650 SNA CLA /SKIP IF 7777 WAS NOT PASSED 713 000436 5307 JMP LPINIT /JUMP IF 7777 WAS PASSED 714 000437 1014 TAD LPTAC /GET ORIGINAL VALUE 715 000440 0164 AND [177] /JUST SEVEN-BIT 716 000441 3015 DCA LPTCHAR /SAVE THE CHARACTER TO BE OUTPUT 717 000442 1004 TAD LPMODE /GET BUFFERING MODE 718 000443 7640 SZA CLA /SKIP IF BUFFERING CURRENTLY ALLOWED 719 000444 5277 JMP BUFOFF /JUMP IF NOT 720 000445 4775 JMS I (BUFCHK) /CHECK CURRENT BUFFER STATUS 721 000446 5273 JMP BUFULL /BUFFER CURRENTLY FULL 722 000447 5262 JMP BUFACTIVE /BUFFER CURRENTLY PARTIALLY FULL 723 000450 1015 BUFEMPT,TAD LPTCHAR /GET THE CHARACTER 724 000451 4774 JMS I (LPOUT) /TRY TO OUTPUT IT 725 000452 7410 SKP /SKIP IF UNSUCCESSFUL 726 000453 5325 JMP LPEXIT /JUMP IF IT WORKED 727 000454 1015 LPFFTST,TAD LPTCHAR /GET THE CHARACTER 728 000455 1373 TAD (-14) /COMPARE TO 729 000456 7650 SNA CLA /SKIP IF DIFFERENT 730 000457 5326 JMP LPFXIT /ELSE TAKE NON-SKIP RETURN 731 000460 4772 JMS I (LPFILL) /BUFFER THE CHARACTER 732 000461 5325 JMP LPEXIT /TAKE SKIP RETURN 733 734 000462 4771 BUFACTI,JMS I (LPEMPTY) /GET A CHARACTER FROM BUFFER 735 000463 4774 JMS I (LPOUT) /TRY TO OUTPUT IT 736 000464 5254 JMP LPFFTST /COULDN'T, TRY TO BUFFER LATEST CHARACTER 737 000465 1040 BUFULEN,TAD EMPTR /GET TEMPORARY POINTER 738 000466 3037 DCA EMPTPTR /PERMANENTLY EMPTY THE BUFFER POSITION 739 000467 4775 JMS I (BUFCHK) /CHECK THE BUFFER AGAIN 740 000470 7402 HLT /**** IMPOSSIBLE TO BE FULL WHEN JUST EMPTIED ONE **** 741 000471 5262 JMP BUFACTIVE /BUFFER STILL ACTIVE, TRY AGAIN TO EMPTY IT 742 000472 5250 JMP BUFEMPTY /BUFFER NOW EMPTY, GO DEAL WITH LATEST CHARACTER 743 744 000473 4771 BUFULL, JMS I (LPEMPTY) /GET A CHARACTER FROM BUFFER 745 000474 4774 JMS I (LPOUT) /TRY TO OUTPUT IT 746 000475 5326 JMP LPFXIT /COULDN'T, FORGET IT 747 000476 5265 JMP BUFULENTRY /DID, SO DOWNGRADE THE BUFFER TO ACTIVE AND KEEP GOING 748 000477 1015 BUFOFF, TAD LPTCHAR /GET LATEST CHARACTER 749 000500 4774 JMS I (LPOUT) /TRY TO OUTPUT IT 750 000501 5326 JMP LPFXIT /FORGET IT 751 000502 1004 TAD LPMODE /GET LATEST MODE 752 000503 7510 SPA /SKIP IF BUFFERING NOT ALLOWED 753 000504 7001 IAC /ELSE TRY TO END TEMPORARY PAUSE 754 000505 3004 DCA LPMODE /STORE BACK 755 000506 5325 JMP LPEXIT /TAKE SKIP RETURN FOR NOW 756 757 000507 1163 LPINIT, TAD [LPTBUFFER] /SETUP THE 758 000510 3041 DCA FILLPTR /FILL POINTER 759 000511 1163 TAD [LPTBUFFER] /SETUP THE 760 000512 3037 DCA EMPTPTR /EMPTYING POINTER 761 000513 1004 TAD LPMODE /GET BUFFERING MODE 762 000514 7750 SPA SNA CLA /SKIP IF BUFFERING NOT ALLOWED 763 000515 1162 TAD [7600] /ELSE SETUP TEMPORARY PAUSE VALUE 764 000516 7001 IAC /RESET NON-BUFFERING VALUE AT LEAST 765 000517 3004 DCA LPMODE /STORE NEW MODE 766 000520 7240 NL7777 /SET THE 767 000521 3027 DCA LPTFLAG /OUTPUT FLAG 768 000522 7240 NL7777 /GET A 769 000523 4774 JMS I (LPOUT) /TRY TO OUTPUT IT 770 000524 7410 SKP /SKIP IF UNSUCCESSFUL 771 000525 2035 LPEXIT, ISZ OUTLPT /BUMP TO SKIP RETURN 772 000526 1014 LPFXIT, TAD LPTAC /RESTORE ORIGINAL AC 773 000527 5056 JMP LPTRET /FINISH IT THERE 774 775 000571 1477 PAGE 000572 1465 000573 7764 000574 1400 000575 1447 000576 1647 000577 1617 776 / INTERRUPT HANDLER. 777 778 000600 7326 INTCON, NL0002 /SET CIF BIT 779 000601 6214 RDF /GET CALLING FIELD 780 000602 1165 TAD [CDF] /TURN INTO CIF CDF CALLING FIELD 781 000603 3052 DCA INTRET /STORE IN-LINE FOR EXIT LATER 782 000604 3002 DCA INTFLGS /CLEAR INTERRUPT FLAGS 783 000605 6031 KSFIOT /INPUT FLAG UP? 784 000606 5225 JMP LPRINT /NO, TRY OUTPUT 785 000607 1025 TAD INFLAG /GET CURRENT FLAG 786 000610 7640 SZA CLA /SKIP IF CLEAR 787 000611 1377 TAD (4400) /ELSE SET ERROR, OVERRUN ERROR BITS 788 000612 3025 DCA INFLAG /STORE FOR NOW 789 000613 6036 KRBIOT /GET THE CHARACTER, CLEARING THE FLAG 790 000614 3013 DCA KEYTMP /SAVE IT 791 000615 1025 TAD INFLAG /GET THE FLAG 792 000616 7040 CMA /INVERT IT 793 000617 0013 AND KEYTMP /AND OFF NON-CONFLICTING BITS 794 000620 1025 TAD INFLAG /OR IN THE FLAG 795 000621 7450 SNA /SKIP IF SOMETHING SET 796 000622 1376 TAD (5000) /ELSE SET ERROR, FRAMING ERROR BITS 797 000623 3025 DCA INFLAG /STORE FINAL CHARACTER FLAG VALUE 798 000624 2002 ISZ INTFLGS /SET KEYBOARD INTERRUPT FLAG BIT 799 000625 7000 LPRINT, LISFIOT /INPUT FLAG UP? 800 000626 5236 JMP OUTINT /NO, FORGET IT 801 000627 0000 LIRBIOT /YES, READ IT IN 802 000630 7450 SNA /SKIP IF SOMETHING THERE 803 000631 1376 TAD (5000) /ELSE SET ERROR, FRAMING ERROR BITS 804 000632 3030 DCA LINFLAG /STORE THE INPUT FLAG 805 000633 1002 TAD INTFLGS /GET INTERRUPT FLAGS 806 000634 1375 TAD (4) /SET LPT: INPUT INTERRUPT BIT 807 000635 3002 DCA INTFLGS /STORE BACK 808 000636 6041 OUTINT, TSFIOT /OUTPUT FLAG UP? 809 000637 5245 JMP LPTINT /NO, TRY LPT: 810 000640 6042 TCFIOT /YES, CLEAR IT 811 000641 7240 NL7777 /SET FLAG VALUE 812 000642 3026 DCA OUTFLAG /STORE IT 813 000643 2002 ISZ INTFLGS /SET ON THE 814 000644 2002 ISZ INTFLGS /OUTPUT INTERRUPT BIT 815 000645 6661 LPTINT, LSFIOT /LPT: FLAG UP? 816 000646 5255 JMP VTINT /NO, TRY VT-8/E KEYBOARD 817 000647 6662 LCFIOT /CLEAR THE FLAG 818 000650 7240 NL7777 /SET THE 819 000651 3027 DCA LPTFLAG /EVENT FLAG 820 000652 1002 TAD INTFLGS /GET INTERRUPT FLAGS 821 000653 1374 TAD (10) /SET LPT: INTERRUPT BIT 822 000654 3002 DCA INTFLGS /STORE BACK 823 000655 6431 VTINT, DKSFIOT /VT-8/E KEYBOARD? 824 000656 5263 JMP INTXIT /NO, FORGET IT 825 000657 6430 DKCFIOT /YES, CLEAR THE FLAG 826 000660 1002 TAD INTFLGS /GET INTERRUPT FLAGS 827 000661 1373 TAD (20) /SET EXTRA BIT 828 000662 3002 DCA INTFLGS /STORE BACK 829 000663 1002 INTXIT, TAD INTFLGS /GET INTERRUPT FLAGS 830 000664 5052 JMP INTRET /FINISH IT THERE 831 832 / INTERRUPT DEVICE LIST. 833 834 / FLAG SKIP INSTRUCTIONS FOR ALL DEVICES HANDLED BY THE OVERLAY. 835 836 / POSITIONAL DESCRIPTION. 837 838 / ENTRY 0: KEYBOARD SKIP 839 / ENTRY 1: CONSOLE OUTPUT SKIP 840 / ENTRY 2: LPT: INPUT SKIP 841 / ENTRY 3: LPT: OUTPUT SKIP 842 / ENTRY 4-N: EXTRA DEVICE SKIPS (VT-8/E, ETC.) 843 / 0000 END OF LIST 844 845 / ENTRIES 0-3 MUST BE PRESENT; 7777 MEANS DEVICE DOES NOT INTERRUPT FOR 846 / THIS FUNCTION. ENTRIES 4-N ARE OPTIONAL. 847 848 000665 6031 INTDEV, KSFIOT /KEYBOARD SKIP 849 000666 6041 TSFIOT /CONSOLE OUTPUT SKIP 850 000667 7777 -ONEWAY!LISFIOT /LPT: INPUT SKIP 851 000670 6661 LSFIOT /LPT: OUTPUT SKIP 852 000671 6431 -VT8LPT&DKSFIOT /VT-8/E KEYBOARD SKIP 853 854 000672 0000 ZBLOCK 7 /FOR EXTRA DEVICE SKIPS 000673 0000 000674 0000 000675 0000 000676 0000 000677 0000 000700 0000 855 856 000701 0000 0000 /THIS ENDS THE LIST 857 858 / CONSOLE TURNOFF ROUTINE. 859 860 000702 6002 OFFCON, IOF /PREVENT PROBLEMS 861 000703 7326 NL0002 /SET CIF BIT 862 000704 6214 RDF /GET CALLING FIELD 863 000705 1165 TAD [CDF] /TURN INTO CIF CDF CALLING FIELD 864 000706 3054 DCA OFFRET /STORE IN-LINE 865 000707 5054 JMP OFFRET /FINISH IT THERE 866 / ERROR BLURBS. 867 868 000710 0122 REDBLB, "R&177 /READ BLURB 869 000711 0145 "E&177+40 870 000712 0141 "A&177+40 871 000713 0144 "D&177+40 872 873 000714 0127 WRIBLB, "W&177 /WRITE BLURB 874 000715 0162 "R&177+40 875 000716 0151 "I&177+40 876 000717 0164 "T&177+40 877 878 000720 0146 FRMBLB, "F&177+40 /FROM BLURB 879 000721 0162 "R&177+40 880 000722 0157 "O&177+40 881 000723 0155 "M&177+40 882 883 000724 0151 TOBLB, "I&177+40 /TO BLURB 884 000725 0156 "N&177+40 885 000726 0164 "T&177+40 886 000727 0157 "O&177+40 887 888 000773 0020 PAGE 000774 0010 000775 0004 000776 5000 000777 4400 889 890 ENDROM= . /END OF "ROM" AREA 891 / ERROR BLURB HANDLING ROUTINES. 892 893 001000 0000 BLBFILL,.-. /FORMAT ERROR BLURB ROUTINE 894 001001 7200 CLA /CLEAN UP 895 001002 1021 TAD CALFLD /GET CDF CALLING FIELD 896 001003 3204 DCA EBLOCK /STORE IN-LINE 897 001004 0000 EBLOCK, .-. /WILL BE CDF CALLING FIELD 898 001005 1020 TAD CALADR /GET CALLING ADDRESS 899 001006 3204 DCA EBLOCK /STASH IT 900 001007 1604 TAD I EBLOCK /GET TRANSFER ADDRESS 901 001010 3357 DCA EADDR /STASH IT 902 001011 2204 ISZ EBLOCK /BUMP TO FUNCTION WORD 903 001012 1604 TAD I EBLOCK /GET FUNCTION WORD 904 001013 3360 DCA EFUN /STASH IT 905 001014 2204 ISZ EBLOCK /BUMP TO BLOCK NUMBER 906 001015 1604 TAD I EBLOCK /GET BLOCK NUMBER 907 001016 3204 DCA EBLOCK /STASH IT 908 001017 4566 JMS I [SETFLD] /SET OUR FIELD 909 001020 1360 TAD EFUN /GET FUNCTION WORD 910 001021 7710 SPA CLA /SKIP IF READING 911 001022 5232 JMP EWRITE /JUMP IF WRITING 912 001023 4777 JMS I (MOV4) /MOVE IN 913 001024 0707 REDBLB-1 /THE READ 914 001025 1310 FUNBLB-1 /BLURB 915 001026 4777 JMS I (MOV4) /MOVE IN 916 001027 0723 TOBLB-1 /THE "TO" 917 001030 1332 FTBLB-1 /BLURB 918 001031 5240 JMP ECOMMON /CONTINUE THERE 919 920 001032 4777 EWRITE, JMS I (MOV4) /MOVE IN 921 001033 0713 WRIBLB-1 /THE WRITE 922 001034 1310 FUNBLB-1 /BLURB 923 001035 4777 JMS I (MOV4) /MOVE IN 924 001036 0717 FRMBLB-1 /THE "FROM" 925 001037 1332 FTBLB-1 /BLURB 926 001040 1360 ECOMMON,TAD EFUN /GET THE FUNCTION WORD 927 001041 0161 AND [7] /JUST UNIT BITS 928 001042 1160 TAD ["0&177] /MAKE IT ASCII 929 001043 3776 DCA I (UNTBLB) /STORE IN MESSAGE 930 001044 1360 TAD EFUN /GET FUNCTION WORD AGAIN 931 001045 7012 RTR;RAR /MOVE OVER 001046 7010 932 001047 0161 AND [7] /ISOLATE FIELD BITS 933 001050 1160 TAD ["0&177] /MAKE IT ASCII 934 001051 3775 DCA I (FLDBLB) /STORE IN MESSAGE 935 001052 1204 TAD EBLOCK /GET BLOCK NUMBER 936 001053 4774 JMS I (OCTMOVE) /PRINT IT 937 001054 1325 BLKBLB-1 /IN MESSAGE 938 001055 1357 TAD EADDR /GET TRANSFER ADDRESS 939 001056 4774 JMS I (OCTMOVE) /PRINT IT 940 001057 1340 ADDBLB-1 /IN MESSAGE 941 001060 1077 TAD ESTATUS /GET ERROR STATUS 942 001061 4774 JMS I (OCTMOVE) /PRINT IT 943 001062 1360 STATBLB-1 /IN MESSAGE 944 001063 5600 JMP I BLBFILL /RETURN 945 001064 0000 BLBMOVE,.-. /BLURB MOVE ROUTINE 946 001065 3360 DCA EFUN /SAVE BLURB ADDRESS 947 001066 6002 IOF /PREVENT PROBLEMS! 948 001067 4566 JMS I [SETFLD] /SETUP OUR FIELD 949 001070 1664 TAD I BLBMOVE /GET MOVE LENGTH 950 001071 3357 DCA EADDR /SAVE IT 951 001072 2264 ISZ BLBMOVE /BUMP PAST ARGUMENT 952 001073 1357 TAD EADDR /GET THE LENGTH 953 001074 7104 CLL RAL /*2 954 001075 1373 TAD (ERRBLB-1) /POINT TO BEGINNING OF BLURB REGION 955 001076 3010 DCA CXR1 /STASH THE POINTER 956 001077 3011 DCA CXR2 /CLEAR FLAG 957 001100 1760 BLMVLUP,TAD I EFUN /GET A PAIR 958 001101 7012 RTR;RTR;RTR /LEFT ONE FIRST 001102 7012 001103 7012 959 001104 4772 JMS I (BLBCHAR) /PUT IT IN MESSAGE 960 001105 1760 TAD I EFUN /GET PAIR AGAIN 961 001106 4772 JMS I (BLBCHAR) /PUT IT IN MESSAGE 962 001107 2360 ISZ EFUN /BUMP TO NEXT PAIR 963 001110 2357 ISZ EADDR /DONE ALL PAIRS YET? 964 001111 5300 JMP BLMVLUP /NO, KEEP GOING 965 001112 5664 JMP I BLBMOVE /YES, RETURN 966 967 001113 0000 BLBDISP,.-. /BLURB DISPLAY AND REPLY ROUTINE 968 001114 7200 CLA /CLEAN UP 969 001115 1012 TAD INCHAR /GET FORMER INPUT CHARACTER 970 001116 3357 DCA EADDR /SAVE IT 971 001117 1371 TAD (BLURB) /POINT TO MESSAGE 972 001120 3360 DCA EFUN /SET IT UP 973 001121 4566 JMS I [SETFLD] /SETUP OUR FIELD 974 001122 1760 PLOOP, TAD I EFUN /GET A CHARACTER 975 001123 7450 SNA /END OF LIST? 976 001124 5334 JMP PEND /YES 977 001125 7510 SPA /PRINTABLE? 978 001126 5331 JMP NOPRNT /NO, FORGET THIS ONE 979 001127 4033 JMS OUTCON /PRINT IT 980 001130 5327 JMP .-1 /WAIT FOR IT 981 001131 7200 NOPRNT, CLA /CLEAN UP 982 001132 2360 ISZ EFUN /BUMP TO NEXT 983 001133 5322 JMP PLOOP /KEEP GOING 984 001134 4031 PEND, JMS INCON /GET SOME INPUT 985 001135 5334 JMP .-1 /WAIT FOR IT 986 001136 0164 AND [177] /JUST SEVEN-BIT 987 001137 3360 DCA EFUN /SAVE IT 988 001140 7346 NL7775 /-3 989 001141 1360 TAD EFUN /COMPARE TO LATEST 990 001142 7540 SMA SZA /SKIP IF <^C> OR LESS 991 001143 5352 JMP NOTUPC /JUMP IF <^D> OR GREATER 992 001144 7700 SMA CLA /SKIP IF LESS THAN <^C> 993 001145 5350 JMP GOTUPC /JUMP IF <^C> 994 001146 1357 TAD EADDR /GET PREVIOUS CHARACTER 995 001147 3012 DCA INCHAR /RESTORE IT 996 001150 6203 GOTUPC, CIF CDF 00 /GOING TO FIELD 0 997 001151 5562 JMP I [SBOOT] /GOODBYE! 998 999 001152 7200 NOTUPC, CLA /CLEAN UP 1000 001153 1357 TAD EADDR /GET PREVIOUS CHARACTER 1001 001154 3012 DCA INCHAR /RESTORE IT 1002 001155 6201 CDF 00 /SOME I/O ROUTINES MIGHT WANT THIS 1003 001156 5713 JMP I BLBDISPLAY /RETURN 1004 1005 001157 0000 EADDR, .-. /ADDRESS TEMPORARY 1006 001160 0000 EFUN, .-. /FUNCTION TEMPORARY 1007 1008 001171 1247 PAGE 001172 1223 001173 1273 001174 1200 001175 1340 001176 1324 001177 1707 1009 001200 0000 OCTMOVE,.-. /FOUR DIGIT MOVE ROUTINE 1010 001201 3223 DCA BLBCHAR /SAVE PASSED VALUE 1011 001202 1157 TAD [-4] /SETUP THE 1012 001203 3422 DCA I MOVBLB /MOVE COUNT 1013 001204 1600 TAD I OCTMOVE /GET THE MESSAGE ADDRESS 1014 001205 3010 DCA CXR1 /SET IT UP 1015 001206 2200 ISZ OCTMOVE /BUMP PAST ARGUMENT 1016 001207 1223 OCTLUP, TAD BLBCHAR /GET THE VALUE 1017 001210 7106 CLL RTL;RAL /MOVE UP 001211 7004 1018 001212 3223 DCA BLBCHAR /STORE BACK 1019 001213 1223 TAD BLBCHAR /GET IT AGAIN 1020 001214 7004 RAL /MOVE UP 1021 001215 0161 AND [7] /JUST LATEST DIGIT 1022 001216 1160 TAD ["0&177] /MAKE IT ASCII 1023 001217 3410 DCA I CXR1 /STORE IN MESSAGE 1024 001220 2422 ISZ I MOVBLB /DONE YET? 1025 001221 5207 JMP OCTLUP /NO, KEEP GOING 1026 001222 5600 JMP I OCTMOVE /YES, RETURN 1027 1028 001223 0000 BLBCHAR,.-. /BLURB CHARACTER FILLING ROUTINE 1029 001224 0377 AND (77) /JUST SIX-BIT 1030 001225 7450 SNA /? 1031 001226 1376 TAD (" &77) /MAKE IT A 1032 001227 1376 TAD (40) /INVERT QUADRANT BIT 1033 001230 0377 AND (77) /REMOVE EXCESS 1034 001231 1376 TAD (40) /INVERT AGAIN 1035 001232 3200 DCA OCTMOVE /SAVE IT FOR NOW 1036 001233 1200 TAD OCTMOVE /GET IT BACK 1037 001234 1375 TAD (-" !200) /COMPARE TO 1038 001235 7640 SZA CLA /SKIP IF IT MATCHES 1039 001236 5243 JMP BLBCHOK /JUMP IF NOT 1040 001237 1011 TAD CXR2 /GET FLAG 1041 001240 7650 SNA CLA /SKIP IF NON- SEEN 1042 001241 7330 NL4000 /ELSE SET IGNORE FLAG 1043 001242 7410 SKP /DON'T CHANGE FLAG 1044 001243 2011 BLBCHOK,ISZ CXR2 /BUMP FLAG 1045 001244 1200 TAD OCTMOVE /GET THE CHARACTER 1046 001245 3410 DCA I CXR1 /STORE IN MESSAGE 1047 001246 5623 JMP I BLBCHAR /RETURN 1048 / MAIN ERROR MESSAGE. 1049 1050 001247 0015 BLURB, "M&37 / 1051 001250 0012 "J&37 / 1052 001251 0012 "J&37 / 1053 001252 4000 4000 /ERROR GOES HERE 1054 001253 4000 4000 /ERROR GOES HERE 1055 001254 4000 4000 /ERROR GOES HERE 1056 001255 4000 4000 /ERROR GOES HERE 1057 001256 4000 4000 /ERROR GOES HERE 1058 001257 4000 4000 /ERROR GOES HERE 1059 001260 4000 4000 /ERROR GOES HERE 1060 001261 4000 4000 /ERROR GOES HERE 1061 001262 4000 4000 /ERROR GOES HERE 1062 001263 4000 4000 /ERROR GOES HERE 1063 001264 4000 4000 /ERROR GOES HERE 1064 001265 4000 4000 /ERROR GOES HERE 1065 001266 4000 4000 /ERROR GOES HERE 1066 001267 4000 4000 /ERROR GOES HERE 1067 001270 4000 4000 /ERROR GOES HERE 1068 001271 4000 4000 /ERROR GOES HERE 1069 001272 4000 4000 /ERROR GOES HERE 1070 001273 4000 4000 /ERROR GOES HERE 1071 001274 0040 ERRBLB, " &177 /ERROR BLURB STARTS HERE 1072 001275 0105 "E&177 1073 001276 0122 "R&177 1074 001277 0122 "R&177 1075 001300 0117 "O&177 1076 001301 0122 "R&177 1077 001302 0040 " &177 1078 001303 0167 "W&177+40 1079 001304 0150 "H&177+40 1080 001305 0151 "I&177+40 1081 001306 0154 "L&177+40 1082 001307 0145 "E&177+40 1083 001310 0040 " &177 1084 001311 0000 FUNBLB, ZBLOCK 4 /WILL BE "READ" OR "WRIT" 001312 0000 001313 0000 001314 0000 1085 001315 0151 "I&177+40 1086 001316 0156 "N&177+40 1087 001317 0147 "G&177+40 1088 001320 0040 " &177 1089 001321 0123 "S&177 1090 001322 0131 "Y&177 1091 001323 0123 "S&177 1092 001324 0000 UNTBLB, .-. /UNIT DIGIT WILL GO HERE 1093 001325 0072 ":&177 1094 001326 0000 BLKBLB, ZBLOCK 4 /BLOCK NUMBER WILL GO HERE 001327 0000 001330 0000 001331 0000 1095 001332 0040 " &177 1096 001333 0000 FTBLB, ZBLOCK 4 /"FROM" OR "INTO" WILL GO HERE 001334 0000 001335 0000 001336 0000 1097 001337 0040 " &177 1098 001340 0000 FLDBLB, .-. /FIELD DIGIT WILL GO HERE 1099 001341 0000 ADDBLB, ZBLOCK 4 /TRANSFER ADDRESS DIGITS WILL GO HERE 001342 0000 001343 0000 001344 0000 1100 001345 0040 " &177 1101 001346 0040 " &177 1102 001347 0040 " &177 1103 001350 0040 " &177 1104 001351 0123 "S&177 1105 001352 0164 "T&177+40 1106 001353 0141 "A&177+40 1107 001354 0164 "T&177+40 1108 001355 0165 "U&177+40 1109 001356 0163 "S&177+40 1110 001357 0072 ":&177 1111 001360 0040 " &177 1112 001361 0000 STATBLB,ZBLOCK 4 /STATUS DIGITS WILL GO HERE 001362 0000 001363 0000 001364 0000 1113 001365 0015 "M&37 / 1114 001366 0012 "J&37 / 1115 001367 0012 "J&37 / 1116 001370 0000 0 /THIS ENDS THE MESSAGE 1117 1118 001375 7740 PAGE 001376 0040 001377 0077 1119 / LPT: SUPPORT ROUTINES. 1120 1121 001400 0000 LPOUT, .-. /LPT: OUTPUT ROUTINE 1122 001401 3247 DCA BUFCHK /SAVE PASSED VALUE 1123 001402 1247 TAD BUFCHK /GET IT BACK 1124 001403 1377 TAD (-177) /ADD ON UPPER LIMIT 1125 001404 7100 CLL /CLEAR LINK FOR TEST 1126 001405 1376 TAD (37) /ADD ON RANGE 1127 001406 7630 SZL CLA /SKIP IF OUT OF RANGE 1128 001407 1006 TAD LCMODE /ELSE ADD ON FOLD VALUE 1129 001410 1247 TAD BUFCHK /GET ORIGINAL EITHER WAY 1130 001411 3247 DCA BUFCHK /STORE BACK 1131 001412 1042 TAD LSTATUS /GET CURRENT STATUS 1132 001413 7700 SMA CLA /SKIP IF IN <^S>/<^Q> WAIT 1133 001414 5220 JMP LPOTEST /JUMP IF NOT 1134 001415 4310 JMS LINPUT /TRY TO CHANGE STATUS 1135 001416 7750 SPA SNA CLA /SKIP IF <^Q> RECEIVED 1136 001417 5600 JMP I LPOUT /ELSE TAKE FAILURE RETURN 1137 001420 7410 LPOTEST,SKP /**** NOT 6120 **** 0000 1138 001421 5227 JMP LPOCIF /KEEP GOING 1139 001422 6000 SKON /INTERRUPT ON? 1140 001423 7001 IAC /TAD (IOF-ION) /NO, MAKE IT "IOF" 1141 001424 1156 TAD [ION] /GET "ION" INSTRUCTION 1142 001425 3243 DCA LOBARE /STORE IN-LINE 1143 001426 7410 SKP /DON'T DO CIF OUR FIELD 1144 001427 0000 LPOCIF, .-. /WILL BE CIF OUR FIELD 1145 001430 1027 TAD LPTFLAG /GET OUTPUT FLAG 1146 001431 6661 LSFIOT /FLAG UP NOW? 1147 001432 7410 SKP /SKIP IF NOT 1148 001433 7240 NL7777 /ELSE SET FLAG VALUE 1149 001434 7450 SNA /SKIP IF EITHER FLAG IS OR WAS SET 1150 001435 5243 JMP LOBARE /JUMP IF NEITHER 1151 001436 0247 AND BUFCHK /GET THE CHARACTER 1152 001437 6666 LLSIOT /OUTPUT IT NOW 1153 001440 7200 CLA /CLEAN UP 1154 001441 3027 DCA LPTFLAG /CLEAR EVENT FLAG 1155 001442 2200 ISZ LPOUT /BUMP TO SKIP RETURN 1156 001443 7000 LOBARE, NOP /**** 6120 **** ION OR IOF 1157 001444 4310 JMS LINPUT /GET NEW INPUT STATUS 1158 001445 3042 DCA LSTATUS /STORE IT 1159 001446 5600 JMP I LPOUT /RETURN 1160 001447 0000 BUFCHK, .-. /BUFFER STATUS ROUTINE 1161 001450 7201 NL0001 /SETUP INCREMENT 1162 001451 1041 TAD FILLPTR /GET FILL POINTER+1 1163 001452 7041 CIA /INVERT FOR TESTING 1164 001453 1037 TAD EMPTPTR /COMPARE TO EMPTYING POINTER 1165 001454 0375 AND (BUFSIZE-1) /JUST RELATIVE BITS 1166 001455 7450 SNA /SKIP IF BUFFER IS NOT FULL 1167 001456 5647 JMP I BUFCHK /TAKE FIRST RETURN 1168 001457 2247 ISZ BUFCHK /BUMP TO SKIP RETURN 1169 001460 7001 IAC /CHECK IF EMPTY 1170 001461 0375 AND (BUFSIZE-1) /JUST RELATIVE BITS 1171 001462 7650 SNA CLA /SKIP IF PARTIALLY USED 1172 001463 2247 ISZ BUFCHK /ELSE TAKE DOUBLE-SKIP EMPTY RETURN 1173 001464 5647 JMP I BUFCHK /RETURN EITHER WAY 1174 1175 001465 0000 LPFILL, .-. /BUFFER FILL ROUTINE 1176 001466 7201 NL0001 /SET INCREMENT 1177 001467 1041 TAD FILLPTR /GET THE POINTER 1178 001470 0375 AND (BUFSIZE-1) /JUST RELATIVE BITS 1179 001471 1163 TAD [LPTBUFFER] /ADD ON BUFFER BASE 1180 001472 3041 DCA FILLPTR /STORE UPDATED POINTER 1181 001473 0000 LPFCDF, .-. /WILL BE CDF OUR FIELD 1182 001474 1015 TAD LPTCHAR /GET THE CHARACTER 1183 001475 3441 DCA I FILLPTR /STORE IN THE BUFFER 1184 001476 5665 JMP I LPFILL /RETURN 1185 1186 001477 0000 LPEMPTY,.-. /BUFFER EMPTY ROUTINE 1187 001500 7201 NL0001 /SET INCREMENT 1188 001501 1037 TAD EMPTPTR /GET THE POINTER 1189 001502 0375 AND (BUFSIZE-1) /JUST RELATIVE BITS 1190 001503 1163 TAD [LPTBUFFER] /ADD ON BUFFER BASE 1191 001504 3040 DCA EMPTR /STORE IN TEMPORARY POINTER 1192 001505 0000 LPECDF, .-. /WILL BE CDF OUR FIELD 1193 001506 1440 TAD I EMPTR /GET THE CHARACTER 1194 001507 5677 JMP I LPEMPTY /RETURN 1195 001510 0000 LINPUT, .-. /LPT: INPUT ROUTINE 1196 001511 7410 LINPROT,SKP /**** NOT 6120 **** 0000 1197 001512 5320 JMP LICIF1 /KEEP GOING 1198 001513 6000 SKON /INTERRUPT ON? 1199 001514 7001 IAC /TAD (IOF-ION) /NO, MAKE IT "IOF" 1200 001515 1156 TAD [ION] /GET "ION" INSTRUCTION 1201 001516 3347 DCA LINBARE /STORE IN-LINE 1202 001517 7410 SKP /DON'T DO CIF OUR FIELD 1203 001520 0000 LICIF1, .-. /WILL BE CIF OUR FIELD 1204 001521 1030 TAD LINFLAG /GET INPUT FLAG 1205 001522 7450 SNA /SKIP IF SET 1206 001523 5330 JMP LIFLGTEST /JUMP IF NOT 1207 001524 3007 DCA LINCHAR /STORE FOR NOW 1208 001525 3030 DCA LINFLAG /CLEAR EVENT FLAG 1209 001526 1007 TAD LINCHAR /GET THE CHARACTER 1210 001527 5335 JMP GOTLINPUT /CONTINUE THERE 1211 1212 001530 7410 LIFLGTE,SKP /**** NOT 6120 **** 0000 1213 001531 0000 LICIF2, .-. /WILL BE CIF OUR FIELD 1214 001532 0000 ONEWAY-1&LISFIOT /FLAG UP NOW? 1215 001533 5347 JMP LINBARE /NO, JUST RETURN 1216 001534 0000 LIRBIOT /YES, READ THE CHARACTER AND CLEAR THE FLAG 1217 001535 0164 GOTLINP,AND [177] /JUST SEVEN-BIT 1218 001536 1374 TAD (-"S!300) /IS IT <^S>? 1219 001537 7450 SNA /SKIP IF NOT 1220 001540 5346 JMP LPSETS /JUMP IF SO 1221 001541 1373 TAD (-"Q+"S) /IS IT <^Q>? 1222 001542 7640 SZA CLA /SKIP IF SO 1223 001543 5347 JMP LINBARE /JUMP IF NOT 1224 001544 7332 NL2000 /SET <^Q> VALUE 1225 001545 7410 SKP /NOT <^S> VALUE 1226 001546 7330 LPSETS, NL4000 /SET <^S> VAUE 1227 001547 7000 LINBARE,NOP /**** 6120 **** ION OR IOF 1228 001550 5710 JMP I LINPUT /RETURN 1229 / INTERRUPT SETUP ROUTINE. 1230 1231 001551 0000 INTSET, .-. /INTERRUPT SETUP 1232 001552 7240 NL7777 /SET ALL BITS 1233 001553 6035 KINLOCA,KIEIOT /**** PRE-OMNIBUS DEVICE 03 **** 0000 1234 001554 7000 NOP /JUST IN CASE 1235 001555 7240 NL7777 /SET ALL BITS 1236 001556 6045 TINLOCA,TIEIOT /**** PRE-OMNIBUS DEVICE 03 **** 0000 1237 001557 7000 NOP /JUST IN CASE 1238 001560 7240 NL7777 /SET ALL BITS 1239 001561 0000 LINLOCA,ONEWAY-1&LIEIOT /ENABLE INTERRUPTS, ERRORS ON KL-8/JA 1240 001562 7000 NOP /JUST IN CASE 1241 001563 7240 NL7777 /SET ALL BITS 1242 001564 0000 LOTLOCA,LPEIOT /ENABLE INTERRUPTS ON LS-8/E 1243 001565 7000 NOP /JUST IN CASE 1244 001566 7240 NL7777 /SET ALL BITS 1245 001567 6435 DKILOCA,-VT8LPT&DKIEIOT /ENABLE INTERRUPTS ON VT-8/E KEYBOARD, LPT: 1246 001570 7000 NOP /JUST IN CASE 1247 001571 7200 CLA /CLEAN UP 1248 001572 5751 JMP I INTSET /RETURN 1249 1250 001573 0002 PAGE 001574 7755 001575 1777 001576 0037 001577 7601 1251 / SUPPORT ROUTINES. 1252 1253 001600 0000 TRPINIT,.-. /TRAP BLOCK INITIAL READIN ROUTINE 1254 001601 1777 TAD I (SBTFUN) /GET MONITOR'S UNIT 1255 001602 0161 AND [7] /JUST UNIT BITS 1256 001603 1167 TAD [2^100] /ADD ON READ BITS 1257 001604 6224 RIF /ADD ON FIELD BITS 1258 001605 3212 DCA TRDFUN /STORE IN-LINE 1259 001606 4566 JMS I [SETFLD] /SETUP OUR FIELD 1260 001607 6202 CIF 00 /GOTO MONITOR FIELD 1261 001610 4776 JMS I (SYSIO) /CALL I/O ROUTINES 1262 001611 5400 TRP, TRPAGE /TRANSFER ADDRESS 1263 001612 0200 TRDFUN, 2^100+.-.+.-. /FIELD, UNIT BITS WILL BE FILLED IN 1264 001613 0113 TRPBLK /TRAP BLOCK NUMBER 1265 001614 1611 TAD I TRP/(HIDWRD&7600+TRPAGE)/GET ID NUMBER 1266 001615 3104 DCA DEVWRD /STORE IT 1267 001616 5600 JMP I TRPINIT /RETURN 1268 1269 / INPUT FLAG TEST ROUTINE. 1270 1271 001617 0000 INTEST, .-. /INPUT TEST ROUTINE 1272 001620 7410 INPROT, SKP /**** NOT 6120 **** 0000 1273 001621 5227 JMP INCIF1 /KEEP GOING 1274 001622 6000 SKON /INTERRUPT ON? 1275 001623 7001 IAC /TAD (IOF-ION) /NO, MAKE IT "IOF" 1276 001624 1156 TAD [ION] /GET "ION" INSTRUCTION 1277 001625 3245 DCA INBARE /STORE IN-LINE 1278 001626 7410 SKP /DON'T DO CIF OUR FIELD 1279 001627 0000 INCIF1, .-. /WILL BE CIF OUR FIELD 1280 001630 1025 TAD INFLAG /GET INPUT FLAG 1281 001631 7450 SNA /SKIP IF SET 1282 001632 5236 JMP IFLGTEST /JUMP IF NOT 1283 001633 3012 DCA INCHAR /SAVE IN INPUT BUFFER 1284 001634 3025 DCA INFLAG /CLEAR EVENT FLAG 1285 001635 5244 JMP INCOME /CONTINUE THERE 1286 1287 001636 7410 IFLGTES,SKP /**** NOT 6120 **** 0000 1288 001637 0000 INCIF2, .-. /WILL BE CIF OUR FIELD 1289 001640 6031 KSFIOT /FLAG UP? 1290 001641 5245 JMP INBARE /NO, TAKE IMMEDIATE RETURN 1291 001642 6036 KRBIOT /YES, GET THE CHARACTER AND CLEAR HARDWARE FLAG 1292 001643 3012 DCA INCHAR /SAVE IN INPUT BUFFER 1293 001644 2217 INCOME, ISZ INTEST /BUMP RETURN ADDRESS 1294 001645 7000 INBARE, NOP /**** 6120 **** ION OR IOF 1295 001646 5617 JMP I INTEST /RETURN TO INPUT ROUTINE 1296 001647 0000 OUTEST, .-. /OUTPUT TEST (AND PRINT) ROUTINE 1297 001650 7410 OUTPROT,SKP /**** NOT 6120 **** 0000 1298 001651 5257 JMP OUTCIF /KEEP GOING 1299 001652 6000 SKON /INTERRUPT ON? 1300 001653 7001 IAC /TAD (IOF-ION) /NO, MAKE IT "IOF" 1301 001654 1156 TAD [ION] /GET "ION" INSTRUCTION 1302 001655 3273 DCA OUTBARE /STORE IN-LINE 1303 001656 7410 SKP /DON'T USE CIF OUR FIELD 1304 001657 0000 OUTCIF, .-. /WILL BE CIF OUR FIELD 1305 001660 1026 TAD OUTFLAG /GET OUTPUT FLAG 1306 001661 6041 TSFIOT /OUTPUT FLAG SET? 1307 001662 7410 SKP /SKIP IF NOT 1308 001663 7240 NL7777 /ELSE INDICATE SO 1309 001664 7450 SNA /SKIP IF INTERRUPT OR FLAG UP NOW 1310 001665 5273 JMP OUTBARE /ELSE TAKE IMMEDIATE RETURN 1311 001666 0017 AND OUTCHR /GET THE CHARACTER 1312 001667 6046 TLSIOT /OUTPUT IT NOW 1313 001670 7200 CLA /CLEAN UP 1314 001671 3026 DCA OUTFLAG /CLEAR INTERRUPT FLAG 1315 001672 2247 ISZ OUTEST /BUMP TO GOOD RETURN 1316 001673 7000 OUTBARE,NOP /**** 6120 **** ION OR IOF 1317 001674 5647 JMP I OUTEST /TAKE SKIP RETURN TO CALLER 1318 1319 001675 0000 SETFLD, .-. /DATA FIELD SETUP ROUTINE 1320 001676 7200 CLA /CLEAN UP 1321 001677 6224 RIF /GET OUR FIELD 1322 001700 1165 TAD [CDF] /TURN INTO CDF INSTRUCTION 1323 001701 3302 DCA SETCDF /STORE IN-LINE 1324 001702 0000 SETCDF, .-. /WILL BE CDF OUR FIELD 1325 001703 5675 JMP I SETFLD /RETURN 1326 1327 / RELOAD CLEAR ROUTINE. 1328 1329 001704 0000 CLEAR, .-. /CLEAR ROUTINE 1330 001705 7300 CLA CLL /CLEAN UP 1331 001706 5704 JMP I CLEAR /RETURN 1332 1333 001707 0000 MOV4, .-. /MOVE FOUR CHARACTERS ROUTINE 1334 001710 1157 TAD [-4] /SETUP THE 1335 001711 3304 DCA CLEAR /MOVE COUNT 1336 001712 1707 TAD I MOV4 /GET THE "FROM" LOCATION 1337 001713 3010 DCA CXR1 /SET IT UP 1338 001714 2307 ISZ MOV4 /BUMP TO NEXT 1339 001715 1707 TAD I MOV4 /GET THE "TO" LOCATION 1340 001716 3011 DCA CXR2 /SET IT UP 1341 001717 2307 ISZ MOV4 /BUMP PAST ARGUMENT 1342 001720 1410 TAD I CXR1 /GET A WORD 1343 001721 3411 DCA I CXR2 /PUT A WORD 1344 001722 2304 ISZ CLEAR /DONE YET? 1345 001723 5320 JMP .-3 /NO, KEEP GOING 1346 001724 5707 JMP I MOV4 /YES, RETURN 1347 001725 0000 PDP12EN,.-. /PDP-12 INTERRUPT ENABLE ROUTINE 1348 001726 5725 PDP12ZA,JMP I PDP12ENABLE /**** PRE-OMNIBUS DEVICE 03 **** 0000 1349 001727 6141 LINC /GOTO LINC MODE 1350 001730 0017 COM /COMPLEMENT AC 1351 001731 0002 PDP /BACK TO PDP-8 MODE 1352 001732 7650 SNA CLA /SKIP IF AC CHANGED 1353 001733 5725 JMP I PDP12ENABLE /RETURN IF NOT PDP-12 1354 001734 6141 LINC /GOTO LINC MODE 1355 001735 0024 SFA /GET CURRENT SPECIAL FUNCTIONS VALUE 1356 001736 1560 BCLI; 40 /TURN OFF INTERRUPT INHIBIT BIT 001737 0040 1357 001740 0004 ESF /WRITE BACK NEW VALUE 1358 001741 0002 PDP /BACK TO PDP-8 MODE 1359 001742 7200 CLA /CLEAN UP 1360 001743 5725 JMP I PDP12ENABLE /RETURN 1361 1362 001776 7640 PAGE 001777 7602 1363 LPTBUFF=. /LPT: BUFFER STARTS HERE 1364 1365 NOPUNCH /FOOL THE ASSEMBLER 1366 1367 002000 0000 ZBLOCK 2600-. /END OF CHECKSUM CALCULATION REGION 002001 0000 002002 0000 002003 0000 002004 0000 002005 0000 002006 0000 002007 0000 002010 0000 002011 0000 002012 0000 002013 0000 002014 0000 002015 0000 002016 0000 002017 0000 002020 0000 002021 0000 002022 0000 002023 0000 002024 0000 002025 0000 002026 0000 002027 0000 002030 0000 002031 0000 002032 0000 002033 0000 002034 0000 002035 0000 002036 0000 002037 0000 002040 0000 002041 0000 002042 0000 002043 0000 002044 0000 002045 0000 002046 0000 002047 0000 002050 0000 002051 0000 002052 0000 002053 0000 002054 0000 002055 0000 002056 0000 002057 0000 002060 0000 002061 0000 002062 0000 002063 0000 002064 0000 002065 0000 002066 0000 002067 0000 002070 0000 002071 0000 002072 0000 002073 0000 002074 0000 002075 0000 002076 0000 002077 0000 002100 0000 002101 0000 002102 0000 002103 0000 002104 0000 002105 0000 002106 0000 002107 0000 002110 0000 002111 0000 002112 0000 002113 0000 002114 0000 002115 0000 002116 0000 002117 0000 002120 0000 002121 0000 002122 0000 002123 0000 002124 0000 002125 0000 002126 0000 002127 0000 002130 0000 002131 0000 002132 0000 002133 0000 002134 0000 002135 0000 002136 0000 002137 0000 002140 0000 002141 0000 002142 0000 002143 0000 002144 0000 002145 0000 002146 0000 002147 0000 002150 0000 002151 0000 002152 0000 002153 0000 002154 0000 002155 0000 002156 0000 002157 0000 002160 0000 002161 0000 002162 0000 002163 0000 002164 0000 002165 0000 002166 0000 002167 0000 002170 0000 002171 0000 002172 0000 002173 0000 002174 0000 002175 0000 002176 0000 002177 0000 002200 0000 002201 0000 002202 0000 002203 0000 002204 0000 002205 0000 002206 0000 002207 0000 002210 0000 002211 0000 002212 0000 002213 0000 002214 0000 002215 0000 002216 0000 002217 0000 002220 0000 002221 0000 002222 0000 002223 0000 002224 0000 002225 0000 002226 0000 002227 0000 002230 0000 002231 0000 002232 0000 002233 0000 002234 0000 002235 0000 002236 0000 002237 0000 002240 0000 002241 0000 002242 0000 002243 0000 002244 0000 002245 0000 002246 0000 002247 0000 002250 0000 002251 0000 002252 0000 002253 0000 002254 0000 002255 0000 002256 0000 002257 0000 002260 0000 002261 0000 002262 0000 002263 0000 002264 0000 002265 0000 002266 0000 002267 0000 002270 0000 002271 0000 002272 0000 002273 0000 002274 0000 002275 0000 002276 0000 002277 0000 002300 0000 002301 0000 002302 0000 002303 0000 002304 0000 002305 0000 002306 0000 002307 0000 002310 0000 002311 0000 002312 0000 002313 0000 002314 0000 002315 0000 002316 0000 002317 0000 002320 0000 002321 0000 002322 0000 002323 0000 002324 0000 002325 0000 002326 0000 002327 0000 002330 0000 002331 0000 002332 0000 002333 0000 002334 0000 002335 0000 002336 0000 002337 0000 002340 0000 002341 0000 002342 0000 002343 0000 002344 0000 002345 0000 002346 0000 002347 0000 002350 0000 002351 0000 002352 0000 002353 0000 002354 0000 002355 0000 002356 0000 002357 0000 002360 0000 002361 0000 002362 0000 002363 0000 002364 0000 002365 0000 002366 0000 002367 0000 002370 0000 002371 0000 002372 0000 002373 0000 002374 0000 002375 0000 002376 0000 002377 0000 002400 0000 002401 0000 002402 0000 002403 0000 002404 0000 002405 0000 002406 0000 002407 0000 002410 0000 002411 0000 002412 0000 002413 0000 002414 0000 002415 0000 002416 0000 002417 0000 002420 0000 002421 0000 002422 0000 002423 0000 002424 0000 002425 0000 002426 0000 002427 0000 002430 0000 002431 0000 002432 0000 002433 0000 002434 0000 002435 0000 002436 0000 002437 0000 002440 0000 002441 0000 002442 0000 002443 0000 002444 0000 002445 0000 002446 0000 002447 0000 002450 0000 002451 0000 002452 0000 002453 0000 002454 0000 002455 0000 002456 0000 002457 0000 002460 0000 002461 0000 002462 0000 002463 0000 002464 0000 002465 0000 002466 0000 002467 0000 002470 0000 002471 0000 002472 0000 002473 0000 002474 0000 002475 0000 002476 0000 002477 0000 002500 0000 002501 0000 002502 0000 002503 0000 002504 0000 002505 0000 002506 0000 002507 0000 002510 0000 002511 0000 002512 0000 002513 0000 002514 0000 002515 0000 002516 0000 002517 0000 002520 0000 002521 0000 002522 0000 002523 0000 002524 0000 002525 0000 002526 0000 002527 0000 002530 0000 002531 0000 002532 0000 002533 0000 002534 0000 002535 0000 002536 0000 002537 0000 002540 0000 002541 0000 002542 0000 002543 0000 002544 0000 002545 0000 002546 0000 002547 0000 002550 0000 002551 0000 002552 0000 002553 0000 002554 0000 002555 0000 002556 0000 002557 0000 002560 0000 002561 0000 002562 0000 002563 0000 002564 0000 002565 0000 002566 0000 002567 0000 002570 0000 002571 0000 002572 0000 002573 0000 002574 0000 002575 0000 002576 0000 002577 0000 1368 1369 002600 0000 ZBLOCK LPTBUFF+BUFSIZE-. /GET TO END OF LPT: BUFFER 002601 0000 002602 0000 002603 0000 002604 0000 002605 0000 002606 0000 002607 0000 002610 0000 002611 0000 002612 0000 002613 0000 002614 0000 002615 0000 002616 0000 002617 0000 002620 0000 002621 0000 002622 0000 002623 0000 002624 0000 002625 0000 002626 0000 002627 0000 002630 0000 002631 0000 002632 0000 002633 0000 002634 0000 002635 0000 002636 0000 002637 0000 002640 0000 002641 0000 002642 0000 002643 0000 002644 0000 002645 0000 002646 0000 002647 0000 002650 0000 002651 0000 002652 0000 002653 0000 002654 0000 002655 0000 002656 0000 002657 0000 002660 0000 002661 0000 002662 0000 002663 0000 002664 0000 002665 0000 002666 0000 002667 0000 002670 0000 002671 0000 002672 0000 002673 0000 002674 0000 002675 0000 002676 0000 002677 0000 002700 0000 002701 0000 002702 0000 002703 0000 002704 0000 002705 0000 002706 0000 002707 0000 002710 0000 002711 0000 002712 0000 002713 0000 002714 0000 002715 0000 002716 0000 002717 0000 002720 0000 002721 0000 002722 0000 002723 0000 002724 0000 002725 0000 002726 0000 002727 0000 002730 0000 002731 0000 002732 0000 002733 0000 002734 0000 002735 0000 002736 0000 002737 0000 002740 0000 002741 0000 002742 0000 002743 0000 002744 0000 002745 0000 002746 0000 002747 0000 002750 0000 002751 0000 002752 0000 002753 0000 002754 0000 002755 0000 002756 0000 002757 0000 002760 0000 002761 0000 002762 0000 002763 0000 002764 0000 002765 0000 002766 0000 002767 0000 002770 0000 002771 0000 002772 0000 002773 0000 002774 0000 002775 0000 002776 0000 002777 0000 003000 0000 003001 0000 003002 0000 003003 0000 003004 0000 003005 0000 003006 0000 003007 0000 003010 0000 003011 0000 003012 0000 003013 0000 003014 0000 003015 0000 003016 0000 003017 0000 003020 0000 003021 0000 003022 0000 003023 0000 003024 0000 003025 0000 003026 0000 003027 0000 003030 0000 003031 0000 003032 0000 003033 0000 003034 0000 003035 0000 003036 0000 003037 0000 003040 0000 003041 0000 003042 0000 003043 0000 003044 0000 003045 0000 003046 0000 003047 0000 003050 0000 003051 0000 003052 0000 003053 0000 003054 0000 003055 0000 003056 0000 003057 0000 003060 0000 003061 0000 003062 0000 003063 0000 003064 0000 003065 0000 003066 0000 003067 0000 003070 0000 003071 0000 003072 0000 003073 0000 003074 0000 003075 0000 003076 0000 003077 0000 003100 0000 003101 0000 003102 0000 003103 0000 003104 0000 003105 0000 003106 0000 003107 0000 003110 0000 003111 0000 003112 0000 003113 0000 003114 0000 003115 0000 003116 0000 003117 0000 003120 0000 003121 0000 003122 0000 003123 0000 003124 0000 003125 0000 003126 0000 003127 0000 003130 0000 003131 0000 003132 0000 003133 0000 003134 0000 003135 0000 003136 0000 003137 0000 003140 0000 003141 0000 003142 0000 003143 0000 003144 0000 003145 0000 003146 0000 003147 0000 003150 0000 003151 0000 003152 0000 003153 0000 003154 0000 003155 0000 003156 0000 003157 0000 003160 0000 003161 0000 003162 0000 003163 0000 003164 0000 003165 0000 003166 0000 003167 0000 003170 0000 003171 0000 003172 0000 003173 0000 003174 0000 003175 0000 003176 0000 003177 0000 003200 0000 003201 0000 003202 0000 003203 0000 003204 0000 003205 0000 003206 0000 003207 0000 003210 0000 003211 0000 003212 0000 003213 0000 003214 0000 003215 0000 003216 0000 003217 0000 003220 0000 003221 0000 003222 0000 003223 0000 003224 0000 003225 0000 003226 0000 003227 0000 003230 0000 003231 0000 003232 0000 003233 0000 003234 0000 003235 0000 003236 0000 003237 0000 003240 0000 003241 0000 003242 0000 003243 0000 003244 0000 003245 0000 003246 0000 003247 0000 003250 0000 003251 0000 003252 0000 003253 0000 003254 0000 003255 0000 003256 0000 003257 0000 003260 0000 003261 0000 003262 0000 003263 0000 003264 0000 003265 0000 003266 0000 003267 0000 003270 0000 003271 0000 003272 0000 003273 0000 003274 0000 003275 0000 003276 0000 003277 0000 003300 0000 003301 0000 003302 0000 003303 0000 003304 0000 003305 0000 003306 0000 003307 0000 003310 0000 003311 0000 003312 0000 003313 0000 003314 0000 003315 0000 003316 0000 003317 0000 003320 0000 003321 0000 003322 0000 003323 0000 003324 0000 003325 0000 003326 0000 003327 0000 003330 0000 003331 0000 003332 0000 003333 0000 003334 0000 003335 0000 003336 0000 003337 0000 003340 0000 003341 0000 003342 0000 003343 0000 003344 0000 003345 0000 003346 0000 003347 0000 003350 0000 003351 0000 003352 0000 003353 0000 003354 0000 003355 0000 003356 0000 003357 0000 003360 0000 003361 0000 003362 0000 003363 0000 003364 0000 003365 0000 003366 0000 003367 0000 003370 0000 003371 0000 003372 0000 003373 0000 003374 0000 003375 0000 003376 0000 003377 0000 003400 0000 003401 0000 003402 0000 003403 0000 003404 0000 003405 0000 003406 0000 003407 0000 003410 0000 003411 0000 003412 0000 003413 0000 003414 0000 003415 0000 003416 0000 003417 0000 003420 0000 003421 0000 003422 0000 003423 0000 003424 0000 003425 0000 003426 0000 003427 0000 003430 0000 003431 0000 003432 0000 003433 0000 003434 0000 003435 0000 003436 0000 003437 0000 003440 0000 003441 0000 003442 0000 003443 0000 003444 0000 003445 0000 003446 0000 003447 0000 003450 0000 003451 0000 003452 0000 003453 0000 003454 0000 003455 0000 003456 0000 003457 0000 003460 0000 003461 0000 003462 0000 003463 0000 003464 0000 003465 0000 003466 0000 003467 0000 003470 0000 003471 0000 003472 0000 003473 0000 003474 0000 003475 0000 003476 0000 003477 0000 003500 0000 003501 0000 003502 0000 003503 0000 003504 0000 003505 0000 003506 0000 003507 0000 003510 0000 003511 0000 003512 0000 003513 0000 003514 0000 003515 0000 003516 0000 003517 0000 003520 0000 003521 0000 003522 0000 003523 0000 003524 0000 003525 0000 003526 0000 003527 0000 003530 0000 003531 0000 003532 0000 003533 0000 003534 0000 003535 0000 003536 0000 003537 0000 003540 0000 003541 0000 003542 0000 003543 0000 003544 0000 003545 0000 003546 0000 003547 0000 003550 0000 003551 0000 003552 0000 003553 0000 003554 0000 003555 0000 003556 0000 003557 0000 003560 0000 003561 0000 003562 0000 003563 0000 003564 0000 003565 0000 003566 0000 003567 0000 003570 0000 003571 0000 003572 0000 003573 0000 003574 0000 003575 0000 003576 0000 003577 0000 003600 0000 003601 0000 003602 0000 003603 0000 003604 0000 003605 0000 003606 0000 003607 0000 003610 0000 003611 0000 003612 0000 003613 0000 003614 0000 003615 0000 003616 0000 003617 0000 003620 0000 003621 0000 003622 0000 003623 0000 003624 0000 003625 0000 003626 0000 003627 0000 003630 0000 003631 0000 003632 0000 003633 0000 003634 0000 003635 0000 003636 0000 003637 0000 003640 0000 003641 0000 003642 0000 003643 0000 003644 0000 003645 0000 003646 0000 003647 0000 003650 0000 003651 0000 003652 0000 003653 0000 003654 0000 003655 0000 003656 0000 003657 0000 003660 0000 003661 0000 003662 0000 003663 0000 003664 0000 003665 0000 003666 0000 003667 0000 003670 0000 003671 0000 003672 0000 003673 0000 003674 0000 003675 0000 003676 0000 003677 0000 003700 0000 003701 0000 003702 0000 003703 0000 003704 0000 003705 0000 003706 0000 003707 0000 003710 0000 003711 0000 003712 0000 003713 0000 003714 0000 003715 0000 003716 0000 003717 0000 003720 0000 003721 0000 003722 0000 003723 0000 003724 0000 003725 0000 003726 0000 003727 0000 003730 0000 003731 0000 003732 0000 003733 0000 003734 0000 003735 0000 003736 0000 003737 0000 003740 0000 003741 0000 003742 0000 003743 0000 003744 0000 003745 0000 003746 0000 003747 0000 003750 0000 003751 0000 003752 0000 003753 0000 003754 0000 003755 0000 003756 0000 003757 0000 003760 0000 003761 0000 003762 0000 003763 0000 003764 0000 003765 0000 003766 0000 003767 0000 003770 0000 003771 0000 003772 0000 003773 0000 003774 0000 003775 0000 003776 0000 003777 0000 1370 1371 INITEST,*6000-400 /GET TO END OF CONSOLE AREA 1372 1373 005400 0000 TRPAGE, ZBLOCK 200 /FIRST TRAP BLOCKS PAGE 005401 0000 005402 0000 005403 0000 005404 0000 005405 0000 005406 0000 005407 0000 005410 0000 005411 0000 005412 0000 005413 0000 005414 0000 005415 0000 005416 0000 005417 0000 005420 0000 005421 0000 005422 0000 005423 0000 005424 0000 005425 0000 005426 0000 005427 0000 005430 0000 005431 0000 005432 0000 005433 0000 005434 0000 005435 0000 005436 0000 005437 0000 005440 0000 005441 0000 005442 0000 005443 0000 005444 0000 005445 0000 005446 0000 005447 0000 005450 0000 005451 0000 005452 0000 005453 0000 005454 0000 005455 0000 005456 0000 005457 0000 005460 0000 005461 0000 005462 0000 005463 0000 005464 0000 005465 0000 005466 0000 005467 0000 005470 0000 005471 0000 005472 0000 005473 0000 005474 0000 005475 0000 005476 0000 005477 0000 005500 0000 005501 0000 005502 0000 005503 0000 005504 0000 005505 0000 005506 0000 005507 0000 005510 0000 005511 0000 005512 0000 005513 0000 005514 0000 005515 0000 005516 0000 005517 0000 005520 0000 005521 0000 005522 0000 005523 0000 005524 0000 005525 0000 005526 0000 005527 0000 005530 0000 005531 0000 005532 0000 005533 0000 005534 0000 005535 0000 005536 0000 005537 0000 005540 0000 005541 0000 005542 0000 005543 0000 005544 0000 005545 0000 005546 0000 005547 0000 005550 0000 005551 0000 005552 0000 005553 0000 005554 0000 005555 0000 005556 0000 005557 0000 005560 0000 005561 0000 005562 0000 005563 0000 005564 0000 005565 0000 005566 0000 005567 0000 005570 0000 005571 0000 005572 0000 005573 0000 005574 0000 005575 0000 005576 0000 005577 0000 1374 1375 005600 0000 TRPAG2, ZBLOCK 200 /SECOND TRAP BLOCKS PAGE 005601 0000 005602 0000 005603 0000 005604 0000 005605 0000 005606 0000 005607 0000 005610 0000 005611 0000 005612 0000 005613 0000 005614 0000 005615 0000 005616 0000 005617 0000 005620 0000 005621 0000 005622 0000 005623 0000 005624 0000 005625 0000 005626 0000 005627 0000 005630 0000 005631 0000 005632 0000 005633 0000 005634 0000 005635 0000 005636 0000 005637 0000 005640 0000 005641 0000 005642 0000 005643 0000 005644 0000 005645 0000 005646 0000 005647 0000 005650 0000 005651 0000 005652 0000 005653 0000 005654 0000 005655 0000 005656 0000 005657 0000 005660 0000 005661 0000 005662 0000 005663 0000 005664 0000 005665 0000 005666 0000 005667 0000 005670 0000 005671 0000 005672 0000 005673 0000 005674 0000 005675 0000 005676 0000 005677 0000 005700 0000 005701 0000 005702 0000 005703 0000 005704 0000 005705 0000 005706 0000 005707 0000 005710 0000 005711 0000 005712 0000 005713 0000 005714 0000 005715 0000 005716 0000 005717 0000 005720 0000 005721 0000 005722 0000 005723 0000 005724 0000 005725 0000 005726 0000 005727 0000 005730 0000 005731 0000 005732 0000 005733 0000 005734 0000 005735 0000 005736 0000 005737 0000 005740 0000 005741 0000 005742 0000 005743 0000 005744 0000 005745 0000 005746 0000 005747 0000 005750 0000 005751 0000 005752 0000 005753 0000 005754 0000 005755 0000 005756 0000 005757 0000 005760 0000 005761 0000 005762 0000 005763 0000 005764 0000 005765 0000 005766 0000 005767 0000 005770 0000 005771 0000 005772 0000 005773 0000 005774 0000 005775 0000 005776 0000 005777 0000 1376 1377 ENPUNCH /UN-FOOL THE ASSEMBLER 1378 1379 *INITEST /ESTABLISH CURRENT ORIGIN 1380 / ONCE-ONLY TEST FOR EXISTENCE CODE. THIS CAN BE LOCATED WITHIN A BUFFER 1381 / ETC., SINCE IT IS ONLY USED WHEN THE OVERLAY IS RELOADED. 1382 1383 004000 0000 INITEST,.-. /EXISTENCE TEST ROUTINE 1384 004001 7344 NL7776 /SETUP THE 1385 004002 3033 DCA OUTCON /TIME-OUT COUNTER 1386 004003 4566 JMS I [SETFLD] /SETUP OUR DATA FIELD 1387 004004 7201 NL0001 /TAD (CIF-CDF) /SETUP CIF OFFSET 1388 004005 1777 TAD I (SETCDF) /FORM CIF OUR FIELD 1389 004006 3776 DCA I (INCIF1) /STORE IN-LINE 1390 004007 1776 TAD I (INCIF1) /GET IT BACK 1391 004010 3775 DCA I (INCIF2) /STORE IN-LINE 1392 004011 1775 TAD I (INCIF2) /GET IT BACK 1393 004012 3774 DCA I (LICIF1) /STORE IN-LINE 1394 004013 1774 TAD I (LICIF1) /GET IT BACK 1395 004014 3773 DCA I (LICIF2) /STORE IN LINE 1396 004015 1773 TAD I (LICIF2) /GET IT BACK 1397 004016 3772 DCA I (OUTCIF) /STORE IN-LINE 1398 004017 1772 TAD I (OUTCIF) /GET IT BACK 1399 004020 3771 DCA I (LPOCIF) /STORE IN LINE 1400 004021 1777 TAD I (SETCDF) /GET CDF OUR FIELD 1401 004022 3770 DCA I (LPECDF) /STORE IN-LINE 1402 004023 1777 TAD I (SETCDF) /GET CDF OUR FIELD 1403 004024 3767 DCA I (LPFCDF) /STORE IN-LINE 1404 004025 7240 NL7777 /SETUP TEST VALUE 1405 004026 6033 KTILOCA,KTIIOT /EXECUTE CONSOLE TEST IOT 1406 004027 7650 SNA CLA /SKIP IF AC NOT CLEAR AND WE WEREN'T SKIPPED 1407 004030 5251 JMP OLDWAY /JUMP IF IOT CLEARED AC OR SKIPPED 1408 004031 7215 DMTEST, NL0010 /ATTEMPT 6120 FEAT 1409 004032 1366 TAD (-10) /DID IT WORK? 1410 004033 7650 SNA CLA /SKIP IF NOT 1411 004034 5243 JMP TSTAGN /JUMP IF IT DID 1412 004035 3765 DCA I (INPROT) /ALLOW INPUT PROTECTION VIA CIF 1413 004036 3764 DCA I (IFLGTEST) /SAME FOR HARDWARE TEST 1414 004037 3763 DCA I (LINPROT) /ALLOW LPT: INPUT PROTECTION VIA CIF 1415 004040 3762 DCA I (LIFLGTEST) /SAME FOR HARDWARE TEST 1416 004041 3761 DCA I (OUTPROTECT) /ALLOW CONSOLE OUTPUT PROTECTION VIA CIF 1417 004042 3760 DCA I (LPOTEST) /ALLOW LPT: OUTPUT PROTECTION VIA CIF 1418 004043 1366 TSTAGN, TAD (-10) /SETUP THE 1419 004044 3031 DCA INCON /TIME-OUT TIMER 1420 004045 6041 TIMTST, TSFIOT /FLAG UP? 1421 004046 5256 JMP TIMOUT /NO, GO TEST IT 1422 004047 7300 CLA CLL /YES, CLEAN UP 1423 004050 5600 JMP I INITEST /RETURN 1424 1425 004051 7200 OLDWAY, CLA /CLEAN UP 1426 004052 3757 DCA I (KINLOCATION) /PREVENT KEYBOARD INTERRUPT ENABLE 1427 004053 3756 DCA I (TINLOCATION) /PREVENT TERMINAL INTERRUPT ENABLE 1428 004054 3755 DCA I (PDP12ZAP) /ALLOW PDP-12 INTERRUPT ENABLE TEST 1429 004055 5231 JMP DMTEST /CONTINUE THERE 1430 1431 004056 2035 TIMOUT, ISZ OUTLPT /WASTE 1432 004057 5245 JMP TIMTST /SOME TIME 1433 004060 2031 ISZ INCON /WAITED TOO LONG? 1434 004061 5245 JMP TIMTST /NO, TRY AGAIN 1435 / THE FLAG MAY NEVER COME UP, SO LET'S ATTEMPT TO SET IT. 1436 1437 004062 6046 TLSIOT /THIS SHOULD SET THE FLAG EVENTUALLY 1438 004063 2033 ISZ OUTCON /TRIED TO SET IT TOO MANY TIMES? 1439 004064 5243 JMP TSTAGN /NO, KEEP GOING 1440 1441 / SINCE THE CONSOLE HARDWARE (PRESUMABLY SPECIFIC) IS NOT AVAILABLE, WE 1442 / RESTORE THE ORIGINAL KEYBOARD MONITOR AND LET IT FEND FOR ITSELF. 1443 1444 004065 7344 NL7776 /SETUP THE 1445 004066 3031 DCA INCON /ZAP COUNT 1446 004067 1354 TAD (ADRLST&177+TRPAGE-1) /POINT AT 1447 004070 3010 DCA CXR1 /ADDRESS LIST 1448 004071 1353 TAD (CNTLST&177+TRPAGE-1) /POINT AT 1449 004072 3011 DCA CXR2 /NORMAL CONTENTS LIST 1450 004073 1410 PTBKLP, TAD I CXR1 /GET AN ADDRESS 1451 004074 7450 SNA /END OF LIST? 1452 004075 5304 JMP PTBKDONE /YES 1453 004076 3033 DCA OUTCON /NO, STASH IT 1454 004077 1411 TAD I CXR2 /GET A VALUE 1455 004100 6201 CDF 00 /GOTO MONITOR'S FIELD 1456 004101 3433 DCA I OUTCON /ZAP IT BACK 1457 004102 4566 JMS I [SETFLD] /BACK TO OUR FIELD 1458 004103 5273 JMP PTBKLP /KEEP GOING 1459 1460 004104 1352 PTBKDON,TAD (MONADR-1) /POINT AT MONITOR'S 1461 004105 3010 DCA CXR1 /ADDRESS LIST 1462 004106 1351 TAD (MONCON-1) /POINT AT MONITOR'S 1463 004107 3011 DCA CXR2 /CONTENTS LIST 1464 004110 2031 ISZ INCON /DONE WITH BOTH YET? 1465 004111 5273 JMP PTBKLP /NO, KEEP GOING 1466 004112 5750 JMP I (PTBMORE) /CONTINUE THERE 1467 1468 / MONITOR LOCATIONS' NORMAL CONTENTS LIST. 1469 1470 004113 6041 MONCON, MONTSF /FOR P7TSF 1471 004114 5735 P7OUT&177+JMPIC /FOR P7JMP 1472 004115 6046 MONTLS /FOR P7TLS 1473 004116 6031 MONKSF /FOR CCHECK+2 1474 004117 5743 CCHECK&177+JMPIC /FOR CCHECK+3 1475 004120 6036 MONKRB /FOR CCHECK+4 1476 004150 4200 PAGE 004151 4112 004152 0300 004153 5414 004154 5402 004155 1726 004156 1556 004157 1553 004160 1420 004161 1650 004162 1530 004163 1511 004164 1636 004165 1620 004166 7770 004167 1473 004170 1505 004171 1427 004172 1657 004173 1531 004174 1520 004175 1637 004176 1627 004177 1702 1477 / NOW DETERMINE HOW WE SHOULD READ THE MONITOR'S KEYBOARD FOR <^S>/<^Q> 1478 / ETC. PURPOSES. 1479 1480 004200 6201 PTBMORE,CDF 00 /GOTO MONITOR'S FIELD 1481 004201 1777 TAD I (SBOOT) /GET THE BOOTSTRAP INSTRUCTION 1482 004202 1376 TAD (-SYSINST) /COMPARE TO POSSIBLE VALUE 1483 004203 7640 SZA CLA /SKIP IF IT MATCHES 1484 004204 5210 JMP EROK /JUMP IF OTHER 1485 004205 2245 ISZ CTZAP1 /CHANGE "MONKRS" 1486 004206 2245 ISZ CTZAP1 /TO "MONKRB" 1487 004207 3250 DCA CTZAP2 /ELIMINATE "MONKCC" 1488 004210 4566 EROK, JMS I [SETFLD] /RESTORE OUR FIELD 1489 004211 6046 MONTLS /SET THE OUTPUT FLAG NOW 1490 004212 1375 TAD (ERBLURB-1) /POINT TO 1491 004213 3010 DCA CXR1 /ERROR MESSAGE 1492 004214 1410 ERBLUP, TAD I CXR1 /GET A CHARACTER 1493 004215 3011 DCA CXR2 /SAVE IT 1494 004216 4241 PAGN, JMS CTLCTST /CHECK FOR INPUT 1495 004217 1374 TAD (-"S!300) /IS IT <^S>? 1496 004220 7640 SZA CLA /SKIP IF SO 1497 004221 5226 JMP PTRY /JUMP IF NOT 1498 004222 4241 JMS CTLCTST /CHECK AGAIN 1499 004223 1373 TAD (-"Q!300) /IS IT <^Q>? 1500 004224 7640 SZA CLA /SKIP IF SO 1501 004225 5222 JMP .-3 /ELSE WAIT FOR IT 1502 004226 1011 PTRY, TAD CXR2 /GET THE CHARACTER 1503 004227 6041 MONTSF /FLAG UP? 1504 004230 5216 JMP PAGN /NO, TRY INPUT WHILE WAITING 1505 004231 6046 MONTLS /YES, SEND IT NOW 1506 004232 7700 SMA CLA /END OF LIST? 1507 004233 5214 JMP ERBLUP /NO, KEEP GOING 1508 004234 6203 CIF CDF 00 /GOING TO FIELD 0 1509 004235 7346 NL7775 /SETUP MASK 1510 004236 0772 AND I (SCRSIZE) /GET OTHER BITS 1511 004237 3772 DCA I (SCRSIZE) /STORE CORE WORD WITHOUT "C" BIT 1512 004240 5771 JMP I (TTYTST) /CONTINUE THERE 1513 1514 004241 0000 CTLCTST,.-. /CONTROL CHARACTER INPUT ROUTINE 1515 004242 7200 CLA /CLEAN UP 1516 004243 6031 MONKSF /FLAG UP? 1517 004244 5641 JMP I CTLCTST /NO, FORGET IT 1518 004245 6034 CTZAP1, MONKRS/OR MONKRB /GET THE CHARACTER 1519 004246 0370 AND (177) /JUST SEVEN-BIT 1520 004247 3012 DCA INCHAR /SAVE IT 1521 004250 6032 CTZAP2, MONKCC/OR 0000 /CLEAR THE FLAG 1522 004251 1012 TAD INCHAR /GET THE CHARACTER 1523 004252 5641 JMP I CTLCTST /RETURN 1524 / ERROR BLURB. 1525 1526 004253 0007 ERBLURB,"G&37 / 1527 004254 0007 "G&37 / 1528 004255 0007 "G&37 / 1529 004256 0007 "G&37 / 1530 004257 0015 "M&37 / 1531 004260 0012 "J&37 / 1532 004261 0012 "J&37 / 1583 004344 0007 "G&37 / 1584 004345 0007 "G&37 / 1585 004346 0007 "G&37 / 1586 004347 0015 "M&37 / 1587 004350 0012 "J&37 / 1588 004351 4012 "J&37!4000 / WHICH ENDS THE LIST 1589 1590 004370 0177 FIELD 0 /HERE COME THE LITERALS! 004371 2506 004372 7611 004373 7757 004374 7755 004375 4252 004376 3540 004377 7600 000156 6001 000157 7774 000160 0060 000161 0007 000162 7600 000163 2000 000164 0177 000165 6201 000166 1675 000167 0200 000170 0702 000171 5510 000172 5600 000173 5441 000174 0426 000175 0411 000176 0400 000177 0600 1591 1592 $ /THAT'S ALL FOLK! ADDBLB 1341 ADRLST 7603 BAUDRA 0064 BCLI 1560 BLBCHA 1223 BLBCHO 1243 BLBDIS 1113 BLBFIL 1000 BLBMOV 1064 BLKBLB 1326 BLMVLU 1100 BLURB 1247 BUFACT 0462 BUFCHK 1447 BUFEMP 0450 BUFOFF 0477 BUFSIZ 2000 BUFULE 0465 BUFULL 0473 CALADR 0020 CALFLD 0021 CCHECK 2343 CHKCNT 0043 unreferenced CHKPTR 0044 unreferenced CIF10 6212 CLEAR 1704 CNTLST 7615 COM 0017 CONIN 0400 CONINT 0000 CONOFF 0100 CONOUT 0411 CTLCTS 4241 CTZAP1 4245 CTZAP2 4250 CXR1 0010 CXR2 0011 DEVWRD 0104 DKCFIO 6430 DKEY 0043 DKIEIO 6435 DKILOC 1567 unreferenced DKSFIO 6431 DMTEST 4031 DSPBLB 0024 unreferenced EADDR 1157 EBLOCK 1004 ECOMMO 1040 EFUN 1160 EMPTPT 0037 EMPTR 0040 ENDROM 1000 ERBLUP 4214 ERBLUR 4253 EROK 4210 ERRBLB 1274 ERRTRP 0046 unreferenced ESF 0004 ESTATU 0077 EWRITE 1032 FILBLB 0023 unreferenced FILLPT 0041 FLDBLB 1340 FRMBLB 0720 FTBLB 1333 FUDWRD 0105 unreferenced FUNBLB 1311 GOTLIN 1535 GOTUPC 1150 HIDWRD 7600 unreferenced IFLGTE 1636 INBARE 1645 INCHAR 0012 INCIF1 1627 INCIF2 1637 INCOME 1644 INCON 0031 INFLAG 0025 INITES 4000 INITNO 0247 INITSW 0051 INPROT 1620 INRET 0060 INTCON 0600 INTDEV 0665 INTEST 1617 INTFLG 0002 INTLST 0003 unreferenced INTRET 0052 INTSET 1551 INTXIT 0663 IOTRAP 0045 unreferenced IOWAIT 0047 unreferenced IOZAPE 0235 IOZAPL 0212 IOZAPO 0230 IRATE 0014 ISLI 0000 ISLIE 0000 ISLOE 0000 JMPIC 5600 JMSC 4200 KEY 0003 KEYTMP 0013 KIEIOT 6035 KINLOC 1553 KRBIOT 6036 KSFIOT 6031 KTIIOT 6033 KTILOC 4026 unreferenced LCASE 0001 LCFIOT 6662 LCMODE 0006 LICIF1 1520 LICIF2 1531 LIEIOT 0000 LIFLGT 1530 LIN 0065 LINBAR 1547 LINC 6141 LINCHA 0007 LINFLA 0030 LINLOC 1561 unreferenced LINNOP 7000 LINPRO 1511 LINPUT 1510 LIRBIO 0000 LISFIO 7000 LLSIOT 6666 LOBARE 1443 LOTLOC 1564 unreferenced LPBUFF 0001 LPECDF 1505 LPEIOT 0000 LPEMPT 1477 LPEXIT 0525 LPFCDF 1473 LPFFTS 0454 LPFILL 1465 LPFXIT 0526 LPINIT 0507 LPMODE 0004 LPOCIF 1427 LPOTES 1420 LPOUT 1400 LPRINT 0625 LPSETS 1546 LPT 0066 LPTAC 0014 LPTBUF 2000 LPTCHA 0015 LPTFLA 0027 LPTINT 0645 LPTOUT 0426 LPTRET 0056 LSBIOT 7000 LSFIOT 6661 LSTATU 0042 MONADR 0301 MONCON 4113 MONINI 0200 MONKCC 6032 MONKRB 6036 MONKRS 6034 MONKSF 6031 MONTLS 6046 MONTSF 6041 MONZAP 0310 MOV4 1707 MOVBLB 0022 NL0001 7201 NL0002 7326 NL0010 7215 NL2000 7332 NL4000 7330 NL7775 7346 NL7776 7344 NL7777 7240 NMCH1 1314 NMCH2 7000 NMCH3 0000 NOLIE 0001 NOLOE 0001 NOPRNT 1131 NOTUPC 1152 OCTLUP 1207 OCTMOV 1200 OFFCON 0702 OFFRET 0054 OLDWAY 4051 ONEWAY 0001 OUT 0004 OUTAC 0016 OUTBAR 1673 OUTCHR 0017 OUTCIF 1657 OUTCOM 0271 OUTCON 0033 OUTEST 1647 OUTFLA 0026 OUTIME 0264 OUTINT 0636 OUTLPT 0035 OUTPRO 1650 OUTRET 0062 OUTTST 0260 OVID 0106 unreferenced OVRCOM 2511 OVRWRD 0111 unreferenced OVTYPE 0001 P7JMP 2337 P7OUT 2335 P7TLS 2340 P7TSF 2336 PAGN 4216 PDP 0002 PDP12E 1725 PDP12Z 1726 PEND 1134 PLOOP 1122 PTBKDO 4104 PTBKLP 4073 PTBMOR 4200 PTRY 4226 REDBLB 0710 SBOOT 7600 SBTFUN 7602 SCRSIZ 7611 SETCDF 1702 SETFLD 1675 SFA 0024 STATBL 1361 SYSINS 4240 SYSIO 7640 TCFIOT 6042 TFLIOT 6040 TIEIOT 6045 TIMOUT 4056 TIMTST 4045 TINLOC 1556 TLSIOT 6046 TOBLB 0724 TRAPIO 1041 TRDFUN 1612 TRP 1611 TRPAG2 5600 TRPAGE 5400 TRPBLK 0113 TRPERR 1200 TRPINI 1600 TSFIOT 6041 TSTAGN 4043 TTY 0003 TTYTST 2506 UNTBLB 1324 VT8LPT 0001 VTINT 0655 VTMODE 0005 unreferenced WAITIO 1110 WRIBLB 0714 XIOMON 0102 ZAPLST 7627