1 /TK4013.PA-GRAPHICS TERMINAL SIMULATOR 2 / 3 / 4 /JOHN P. RANCK 5 /DEPARTMENT OF CHEMISTRY 6 /ELIZABETHTOWN COLLEGE 7 /ELIZABETHTOWN, PENNA. 17022 8 / 9 / 10 / 11 / 12 / 13 /A PROGRAM TO SIMULATE A TEKTRONIX 4013 GRAPHICS TERMINAL 14 /CONNECTED TO A HOST COMPUTER (DEC-10 IN THIS APPLICATION) 15 / 16 / 17 /HARDWARE REQUIRED: 18 / 19 / 1. PDP-8 WITH 8K MEMORY (OR CONDITIONALLY 4K; SEE BELOW) 20 / 2. TEKTRONIX 613 (OR 611 PRESUMABLY) OR SIMILAR STORAGE MONITOR 21 / 3. VC8E X-Y INTERFACE FOR STORAGE MONITOR 22 / 4. KL8E OR SIMILAR SERIAL LINE INTERFACE FOR HOST COMPUTER 23 / 5. TELETYPE OR SIMILAR TERMINAL. DECWRITER WITH NUMERIC KEYPAD 24 / FOR CURSOR CONTROL IS EXCELLENT 25 / 6. (OPTIONAL) 10 V. FULL SCALE X-Y PLOTTER WITH REMOTE PEN LIFT 26 / SUCH AS HEWLETT PACKARD 7015A 27 / 7. (OPTIONAL) USER CONSTRUCTED ANALOG SWITCH CIRCUIT FOR COMPUTER 28 / MUTING OF PLOTTER SERVO MOTORS 29 /PROGRAM DESCRIPTION: 30 / 31 /THE PROGRAM ITSELF OCCUPIES ALL OF MEMORY FIELD 0 EXCEPT FOR THE LAST 32 /PAGE (7600-7777) WHICH IS LEFT FOR THE MONITOR. A SHORTENED 33 /VERSION OF UTIL10.PA (DECUS NO. 8-XXX) WHICH CONTAINS A GROUP OF 34 /ROUTINES TO LOG ON AND OFF THE DEC-10 AND TO SET LINE CHARACTERISTICS 35 /RESIDES IN LOCATIONS 6600-7577. THESE ROUTINES MAY BE REPLACED BY 36 /OTHERS ADAPTED TO OTHER HOST COMPUTERS OR THESE FUNCTIONS MAY 37 /BE PERFORMED MANUALLY, IN WHICH CASE THESE MEMORY LOCATIONS ARE NOT USED. 38 / 39 /THE ENTIRE MEMORY FIELD 1 (EXCEPT FOR 17600-17777) IS USED AS A CIRCULAR 40 /BUFFER FOR CHARACTERS RECEIVED FROM THE HOST COMPUTER. THIS IS 41 /EXTRAVAGANT AND UNNECESSARY; IT WAS DONE ONLY BECAUSE THE MEMORY WAS 42 /AVAILABLE. IF UTIL10 OR ITS EQUIVALENT IS NOT USED IN FIELD 0, THIS 43 /BUFFER MAY BE SHORTENED AND PLACED IN LOCATIONS 6600-7577 AND THE ENTIRE 44 /PROGRAM CAN BE PACKED INTO A 4K SYSTEM. IT MAY BE NECESSARY TO USE 45 /THE XON AND XOF COMMANDS TO THE HOST MONITOR TO PREVENT THE HOST FROM 46 /OVERFILLING THIS SMALLER BUFFER. NORMALLY THE PROGRAM CAN KEEP UP 47 /WITH A 1200 BAUD SERIAL TRANSMISSION FROM THE HOST COMPUTER AND THE 48 /LARGER BUFFER IS SUPERFLUOUS. AN EXCEPTION OCCURS WHEN THE (SLOW) 49 /PLOTTER IS USED. 50 / 51 /IN THIS IMPLEMENTATION LOCATION 17777, WHICH IS IN THE SYS AREA BUT 52 /WHICH IS UNUSED BY THE MONITOR, HAS BEEN USED AS A STATUS WORD 53 /FOR THE HOST COMPUTER. 54 / 55 /THE MAIN PROGRAM (BEGINNING AT LOCATION 200) IS A SHORT ENDLESS LOOP WHICH 56 / 1. CHECKS THE HEYBOARD FOR A CHARACTER AND UPON FINDING ONE EITHER 57 / A. EXERCISES THE APPROPRIATE "TERMINAL" CONTROL OR 58 / B. TRANSMITS THE CHARACTER TO THE HOST COMPUTER 59 / AND 2. CHECKS THE BUFFER AREA FOR UNTREATED CHARACTERS FROM THE HOST AND 60 / UPON FINDING ONE, INITIATES THE APPROPRIATE "GRAPHICS TERMINAL" 61 / RESPONSE. 62 /COMMUNICATION WITH THE HOST COMPUTER IS HANDLED BY THE INTERRUPT SERVICE 63 /ROUTINE IN LOCATIONS 50-101. 64 /SPECIAL KEYBOARD FUNCTIONS 65 / 66 /PAGE, RESET, VIEW, ETC., KEYS AND CURSOR CONTROLS NORMALLY 67 /FOUND ON THE TEKTRONIX TERMINALS ARE ABSENT FROM THE DECWRITER KEYBOARD 68 /AND MUST BE SIMULATED. 69 / 70 / TILDE- (ASCII 176) IS USED FOR THE PAGE COMMAND. 71 / GRAVE- (ASCII 140) IS USED TO RESTORE OR INTENSIFY THE DISPLAY 72 / AS WELL AS A TRAP CHARACTER. 73 / 74 / THE FOLLOWING CONTROL CHARACTERS HAVE SPECIAL EFFECTS WHEN THEY 75 / IMMEDIATELY FOLLOW THE TRAP CHARACTER (GRAVE). 76 / 77 / CTRL R- RESET. 78 / CTRL A- SELECT ALTERNATE (APL) CHARACTER SET (CRT ONLY). 79 / CTRL N- SELECT NORMAL CHARACTER SET. 80 / CTRL T- PRINT ALPHANUMERICS ON TTY. 81 / CTRL D- PRINT ALPHANUMERICS ON CRT DISPLAY. 82 / CTRL P- PLOTTER ON (CRT OFF). 83 / CTRL C- PLOTTER OFF (CRT ON). 84 / CTRL E- EXIT TO OS/8 MONITOR. 85 / CTRL K- LOG OFF HOST AND EXIT TO OS/8 MONITOR. 86 / 87 /THE NUMERIC KEYPAD IS USED FOR CURSOR CONTROL. ON DECWRITERS WITHOUT 88 /NUMERIC KEYPAD, ANOTHER GROUP OF 3 X 3 KEYS MAY BE USED. PRESSING 89 /ANY OF THE 8 CHARACTERS AROUND THE PERIPHERY OF THE 3 X 3 ARRAY 90 /(I.E., 1 THROUGH 4 AND 6 THROUGH 9) RESULTS IN MOVING THE CURSOR ONE 91 /STEP IN THE DIRECTION THAT THE KEY IS FROM THE CENTER OF THE ARRAY 92 /(I.E., 1=SOUTHWEST, 2=SOUTH, 6=EAST, 7=NORTHWEST, ETC.). 93 /LARGE (8 RASTER POINTS) AND SMALL (1 RASTER POINT) STEPSIZES EXIST. 94 /THE LARGE STEP IS INITIALLY CHOSEN. THE SMALL STEP IS SPECIFIED BY 95 /PRESSING THE "." (PERIOD) KEY (THE SMALLER KEY AT THE BOTTOM OF THE NUMERIC 96 /KEYPAD) AND THE LARGER STEP IS SPECIFIED BY PRESSING THE "0" (ZERO) 97 /KEY (THE LARGER KEY AT THE BOTTOM OF THE NUMERIC KEYPAD). THE REPEAT KEY IS 98 /USEFUL FOR MOVING THE CURSOR LONG DISTANCES. PRESSING THE "5" KEY IN THE 99 /CENTER OF THE NUMERIC KEYPAD RETURNS THE CURSOR TO ITS ORIGINAL OR 100 /HOME POSITION (WHERE IT WAS BEFORE CURSOR CONTROL WAS EXERCISED). 101 /THE PROGRAM IS THOROUGHLY DOCUMENTED WITH COMMENTS IN NEARLY EVERY LINE OF THE 102 /LISTING AND A LOGIC FLOW CHART IS GIVEN AT THE BEGINNING OF EACH SUBROUTINE. 103 / 104 / 105 /ALL PARAMETERS TO BE SET BY THE USER ARE CONTAINED IN THE FIRST PAGE OF CODE. 106 /CONDITIONAL ASSEMBLY PARAMETERS KEEP THE CODE AS SHORT AS POSSIBLE. 107 /THE CODE ACTUALLY ASSEMBLED WILL BE SSHORTER IF (1) THE EXTENDED ARITHMETIC 108 /ELEMENT WITH HARDWARE MULTIPLY/DIVIDE IS PRESENT, OR (2) NO PLOTTER 109 /IS PRESENT. 110 /ASSEMBLY PARAMETERS TO BE SET BY USER 111 112 EAE=0 /=1 IF EXTENDED ARITHMETIC ELEMENT (HARDWARE 113 /MULTIPLY-DIVIDE) IS AVAILABLE 114 PLOTER=1 /=1 IF X-Y PLOTTER IS AVAILABLE 115 116 /DEVICE CODES TO BE SET BY USER 117 118 DISDEV=05 /DEVICE CODE SET FOR VC8E (OS/8 DEC STANDARD=05) 119 INTEN=16 /DEVICE CODE FOR INPUT FROM HOST COMPUTER (SET ON KL8-E BOARD) 120 OUTTEN=17 /DEVICE CODE FOR OUTPUT FROM HOST COMPUTER (SET ON KL8-E BOARD) 121 122 /VC8E COMMANDS 123 124 DICL=10^DISDEV+6001 125 DISD=10^DISDEV+6002 126 DILX=10^DISDEV+6003 127 DILY=10^DISDEV+6004 128 DIXY=10^DISDEV+6005 129 DILE=10^DISDEV+6006 130 DIRE=10^DISDEV+6007 131 132 /KL8E INPUT COMMANDS 133 134 TENKCF=10^INTEN+6000 135 TENKSF=10^INTEN+6001 136 TENKIE=10^INTEN+6005 137 TENKRB=10^INTEN+6006 138 139 /KL8E OUTPUT COMMANDS 140 141 TENTFL=10^OUTTEN+6000 142 TENTSF=10^OUTTEN+6001 143 TENTCF=10^OUTTEN+6002 144 TENTLS=10^OUTTEN+6006 145 146 /DEFINITION OF MULTIPLY AND DIVIDE COMMANDS, DEPENDING ON WHETHER EAE PRESENT 147 148 IFZERO EAE < 149 MUY=JMS I [MULTPY 150 DVI=JMS I [DIVIDE 151 > 152 153 IFNZRO EAE < 154 MUY=7405 155 DVI=7407 156 > 157 158 159 FIXTAB 160 /INTERRUPT IS VECTORED TO LOCATION 0 161 162 *0 163 000000 0000 0 164 000001 5050 JMP INTER /JUMP TO INTERRUPT WERVICE ROUTINE 165 166 167 168 /STATUS REGISTER 169 170 000002 0000 STATUS, 0 /A SOFTWARE STATUS REGISTER USED FOR MANY HOUSEKEEPING 171 /FUNCTIONS (SEE FOLLOWING) 172 173 174 175 /BITS FOR STATUS REGISTER 176 177 000003 6000 MODMSK, 6000 /COMBIIATION OF BITS 0 AND 1 178 000004 4000 GRMODE, 4000 /BIT 0; GRAPHICS (GR) MODE 179 000005 2000 GIMODE, 2000 /BIT 1; GRAPHIC INPUT (GI) MODE 180 IFNZRO PLOTER < 181 ALTDIS, /BIT 2; ALTERNATE DISPLAY DEVICE (PLOTTER) 182 000006 1000 HCMODE, 1000 /OR HARDCOPY (HC) MODE 183 > 184 000007 0400 ALTAN, 0400 /BIT 3; ALTERNATE ALPHANUMERIC DEVICE (TTY) 185 000010 0200 ALTCHR, 0200 /BIT 4; ALTERNATE CHARACTER SET 186 000011 0100 MARGIN, 0100 /BIT 5; MARGIN 1 (ALTERNATE MARGIN) 187 000012 0040 ESCTRP, 0040 /BIT 6; ESCAPE CHARACTER RECEIVED FROM HOST 188 000013 0020 KBTRAP, 0020 /BIT 7; TRAP CHARACTER RECEIVED FROM KEYBOARD 189 190 191 192 /AUTO-INDEX REGISTERS (BE SURE NOT TO MOVE FROM MEMORY LOCATIONS 10-17) 193 194 000014 7777 RECPT, -1 /POINTER TO BUFFER FOR INCOMING CHARACTER 195 000015 7777 GETPT, -1 /POINTER TO BUFFER FOR OUTGOING CHARACTER 196 197 198 199 /BITS FOR VC8E STATUS REGISTER 200 201 000016 0040 CRSBT, 0040 /CURSOR BIT 202 000017 7737 MCRSBT, 7737 /COMPLEMENT OF CURSOR BIT 203 000020 0020 STORE, 0020 /STORE BIT 204 000021 0010 ERASBT, 0010 /ERASE BIT 205 IFNZRO PLOTER < 206 000022 0004 PLTON, 0004 /PLOTTER SERVO ON BIT 207 000023 7773 PLTOF, 7773 /COMPLEMENT OF PLOTTER SERVO BIT 208 000024 0002 PEN, 0002 /PEN DOWN BIT 209 000025 7775 PENUP, 7775 /COMPLEMENT OF PEN DOWN BIT 210 > 211 212 213 214 /SOME CONSTANTS AND VARIABLES CONVENIENTLY STORED ON PAGE ZERO 215 216 000026 7000 HOMEX, -1000 /X COORDINATE OF "HOME" LOCATION 217 000027 0577 HOMEY, 577 /Y COORDINATE OF "HOME" LOCATION 218 000030 0000 LASTX, 0 /LAST X COORDINATE DISPLAYED 219 000031 0000 LASTY, 0 /LAST Y COORDINATE DISPLAYED 220 000032 0000 NEWX, 0 /NEXT X COORDINATE TO BE DISPLAYED 221 000033 0000 NEWY, 0 /NEXT Y COORDINATE TO BE DISPLAYED 222 000034 0000 CURSX, 0 /X COORDINATE OF CURSOR 223 000035 0000 CURSY, 0 /Y COORDINATE OF CURSOR 224 225 000036 7600 KBMON, 7600 /ADDRESS TO RETURN TO OS/8 226 227 IFNZRO PLOTER < 228 000037 5400 VECTIM, -2400 /TIME CONSTANT IN VECTOR PLOTTING ROUTINE 229 000040 5000 PENTIM, -3000 /TIME CONSTANT IN PEN RAISE/LOWER ROUTINE 230 > 231 000041 7574 MTTWID, -204 /MINUS NO. CHARACTERS PER LINE ON CONSOLE OUTPUT DEVICE 232 /132 DECIMAL = 204 OCTAL FOR DECWRITER; 72 DECIMAL = 110 OCTAL FOR TTY) 233 000042 7666 MDIWID, -112 /74 CHARACTERS LINE WIDTH FOR DISPLAY 234 000043 0000 DKVECT, 0 /FLAG FOR DARK VECTOR 235 000044 0000 PNTTAB, 0 /POINTER TO CHARACTER TABLES 236 000045 0000 CHARCT, 0 /COUNT OF CHARACTERS IN PRESENT LINE 237 000046 0000 LINECT, 0 /COUNT OF LINES IN THIS COLUMN ON DISPLAY DEVICE 238 000047 0000 TENTPF, 0 /SOFTWARE FLAG FOR OUTPUT SIDE OF HOST COMPUTER INTERFACE 239 240 241 242 /INTERRUPT SERVICE ROUTINE 243 / SAVE ACCUMULATOR AND LINK 244 / SELECT (DEVICE) 245 / / (DEC-10 INPUT) 246 / / / READ CHARACTER 247 / / / STORE CHARACTER IN BUFFER 248 / / / IF (END OF BUFFER) RESET POINTER 249 / / ////////FIN 250 / / (DEC-10 OUTPUT) 251 / / / CLEAR HARDWARE FLAG 252 / / / SET SOFTWARE FLAG 253 / / ////////FIN 254 / ////////FIN 255 / RESTORE ACCUMULATOR AND LINK 256 / TURN INTERRUPT FACILITY ON 257 ////////FIN 258 259 260 261 262 000050 3102 INTER, DCA SAVEAC /SAVE AC 263 000051 7004 RAL 264 000052 3103 DCA SAVEL /AND LINK 265 000053 6161 TENKSF /IS INTERRUPT FOR HOST INPUT? 266 000054 5070 JMP OUTFLT /NO; TRY HOST OUTPUT 267 000055 6166 TENKRB /YES; READ CHARACTER 268 000056 6211 CDF 10 /CHANGE TO FIELD 1 269 000057 3414 DCA I RECPT /AND STORE CHAR IN BUFFER AND INCREMENT POINTER 270 000060 6201 CDF 0 /RESET FIELD 0 271 000061 1014 TAD RECPT /CHECK BUFFER POINTER 272 000062 1104 TAD M7577 /IS IT POINTING 273 000063 7640 SZA CLA /TO SYSTEM AREA? 274 000064 5074 JMP INTEX /NO; EXIT INTERRUPT SERVICE ROUTINE 275 000065 7040 CMA /YES; RESET POINTER TO -1 276 000066 3014 DCA RECPT /SO IT INCREMENTS TO LOCATION 0 NEXT 277 000067 5074 JMP INTEX /AND EXIT INTERRUPT SERVICE ROUTINE 278 000070 6171 OUTFLT, TENTSF /IS INTERRUPT BECAUSE HOST OUTPUT CHARACTER CLEAR? 279 000071 5074 JMP INTEX /NO; EXIT INTERRUPT SERVICE ROUTINE 280 000072 6172 TENTCF /YES; CLEAR FLAG SO NO FURTHER INTERRUPTS OCCUR 281 000073 2047 ISZ TENTPF /AND SET SOFTWARE FLAG 282 000074 7300 INTEX, CLA CLL /EXIT INTERRUPT SERVICE ROUTINE 283 000075 1103 TAD SAVEL /GET LINK 284 000076 7010 RAR /AND RESTORE IT 285 000077 1102 TAD SAVEAC /GET AC 286 000100 6001 ION /TURN INTERRUPT FACILITY ON 287 000101 5400 JMP I 0 /AND RETURN FROM WHENCE INTERRUPT OCCURRED 288 289 000102 0000 SAVEAC, 0 /LOCATION TO HOLD AC DURING INTERRUPT 290 000103 0000 SAVEL, 0 /LOCATION TO HOLD LINK DURING INTERRUPT 291 000104 0201 M7577, -7577 /ADDRESS BEFORE BEGINNING OF SYSTEM AREA 292 293 294 295 /TO INITIALIZE- 296 / FIX ALL DEVICE FLAGS 297 / SET DISPLAY TO STORE 298 / ERASE- 299 / SET AN MODE 300 / SET AND DEVICE TO DISPLAY 301 / SET GR DEVICE TO DISPLAY 302 / SET NORMAL CHARACTER SET 303 / HOME- 304 / LOGIN DEC-10 305 / TURN DEC-10 INTERRUPT ON 306 ////////FIN 307 308 309 000105 0000 INIT, 0 /BEGINNING OF INITIALIZE PROCEDURE 310 000106 6031 KSF; TENKCF; TFL; TENTFL; DICL /INITIALIZE ALL FLAGS 000107 6160 000110 6040 000111 6170 000112 6051 311 000113 1020 TAD STORE /SET DISPLAY 312 000114 6056 DILE /TO STORE 313 000115 4775 JMS ERASE /ERASE SCREEN 314 000116 3002 DCA STATUS /CLEAR STATUS REGISTER (AN MODE;NORMAL DEVICES AND CHAR SET) 315 000117 4150 JMS HOME /MOVE BEAM TO HOME POSITION 316 000120 4774 JMS UTIL10 /USE UTILITY ROUTINE TO LOGIN DEC-10 IF NECESSARY 317 000121 4000 4000 /ARGUMENT FOR LOGIN 318 000122 6035 KIE /SET TTY INTERRUPT OFF 319 000123 7001 IAC 320 000124 6165 TENKIE /SET HOST INTERRUPT ON 321 000125 7200 CLA 322 000126 6001 ION /ENABLE INTERRUPT FACILITY 323 000127 5505 JMP I INIT /EXIT INITIALIZE PROCEDURE 324 325 326 327 328 /TO EXIT- 329 / ERASE AND SET TO NON-STORE 330 / TURN DEC-10 INTERRUPT OFF 331 / IF (PLOTTER PRESENT) TURN PLOTTER OFF PROPERLY 332 / IF (^K ON KEYBOARD) LOG OFF DEC-10 333 / RETURN TO KEYBOARD MONITOR 334 ////////FIN 335 336 337 000130 6002 EXIT, IOF /TURN INTERRUPT FACILITY OFF 338 000131 1021 TAD ERASBT /CLEAR ALL BITS IN DISPLAY REGISTER 339 000132 6056 DILE /EXCEPT ERASE BIT WHICH WILL CLEAR AFTER ERASE 340 000133 7200 CLA 341 000134 6165 TENKIE /SET HOST COMPUTER INTERRUPT OFF 342 IFNZRO PLOTER < 343 000135 1006 TAD HCMODE /GET HC MODE BIT 344 000136 0002 AND STATUS /FROM STATUS REGISTER 345 000137 7640 SZA CLA /IF PLOTTER IS TURNED ON 346 000140 4773 JMS CLRHC /TURN IT OFF PROPERLY 347 > 348 000141 1772 TAD KBCHAR /GET LAST CHARACTER ENTERED FROM KEYBOARD 349 000142 1771 TAD MCTRLK /AND COMPARE TO ^K 350 000143 7640 SZA CLA /IS IT ^K? 351 000144 5147 JMP .+3 /NO; MUST BE ^E; SIMPLE EXIT 352 000145 4774 JMS UTIL10 /YES; LOG OFF DEC-10 353 000146 0000 0 /ARGUMENT FOR LOG OFF 354 000147 5436 JMP I KBMON /AND EXIT THE PROGRAM BY RETURNING TO KB MONITOR 355 356 357 /TO HOME- 358 / MOVE TO HOME POSITION 359 / FIX AN CURSOR 360 / SET MARGIN 0 361 / RESET CHARACTER COUNTER 362 / RESET LINE COUNTER 363 ////////FIN 364 365 000150 0000 HOME, 0 366 000151 1026 TAD HOMEX /GET X COORDINATE OF HOME LOCATION 367 000152 3032 DCA NEWX /AND STORE IT AS NEXT LOCATION 368 000153 1027 TAD HOMEY /GET Y COORDINATE OF HOME LOCATION 369 000154 3033 DCA NEWY /AND STORE IT AS NEXT LOCATION 370 000155 2043 ISZ DKVECT /SET DARK VECTOR 371 000156 4770 JMS DISVEC /AND MOVE TO HOME 372 000157 4767 JMS ACRSON /TURN ALPHANUMERIC CURSOR ON 373 /(SUBROUTINE WILL CHECK FOR AN MODE) 374 000160 1011 TAD MARGIN /GET MASK FOR ALTERNATE MARGIN BIT 375 000161 7040 CMA /COMPLEMENT IT 376 000162 0002 AND STATUS /SO IT MASKS ALL OTHER BITS FROM STATUS REGISTER 377 000163 3002 DCA STATUS /AND EFFECTIVELY CLEARS THE MARGIN BIT 378 000164 3045 DCA CHARCT /SET CHARACTER COUNTER TO ZERO 379 000165 3046 DCA LINECT /SET LINE COUNTER TO ZERO 380 000166 5550 JMP I HOME /EXIT HOME SUBROUTINE 381 382 PAGE 383 384 385 386 387 388 389 390 391 392 /TEKTRONIX 4010 GRAPHICS TERMINAL PROGRAM--BEGINNING OF PROGRAM 393 / INITIALIZE- 394 / WHILE (TRUE) ,I.E. FOREVER 395 / / IF (CHARACTER AT KEYBOARD) 396 / / / READ KEYBOARD 397 / / / HANDLE-KEYBOARD-CHARACTER 398 / / ////////FIN 399 / / TEST-FOR-HOST-CHARACTER AND IF PRESENT HANDLE-HOST-CHARACTER 400 / ////////FIN 401 ////////FIN 402 403 404 000200 4105 JMS INIT /INITIALIZE- 405 000201 6031 FOREVR, KSF /HAS CHARACTER BEEN RECEIVED FROM KEYBOARD? 406 000202 5205 JMP .+3 /NO; CHECK HOST FOR INPUT 407 000203 6036 KRB /YES; READ IT 408 000204 4777 JMS KBHNDL /AND TAKE CARE OF IT 409 000205 4207 JMS HOCHIN /TO CHACK FOR CHARACTER FROM HOST AND TAKE CARE OF IT IF ANY 410 000206 5201 JMP FOREVR /LOOP ENDLESSLY; THE PROGRAM IS EXITED BY KEYBOARD COMMAND 411 412 413 414 415 /TO TEST-FOR-HOST-CHARACTER 416 / IF (CHARACTER PRESENT) 417 / / IF (END OF BUFFER) RESET POINTER 418 / / GET CHARACTER FROM HOST 419 / / HANDLE HOST CHARACTER 420 / ////////FIN 421 ////////FIN 422 423 424 425 426 000207 0000 HOCHIN, 0 427 000210 1014 TAD RECPT /GET INPUT POINTER TO BUFFER 428 000211 7041 CIA /AND COMPARE IT 429 000212 1015 TAD GETPT /TO OUTPUT POINTER 430 000213 7650 SNA CLA /SAME? 431 000214 5231 JMP HOINEX /YES; NOTHING FROM HOST COMPUTER SO LEAVE 432 000215 6211 CDF 10 /NO; CHANGE TO FIELD 1 433 000216 1015 TAD GETPT /GET BUFFER OUTPUT POINTER 434 000217 1232 TAD M7576 /COMPARE TO NEXT TO LAST LOCATION IN BUFFER 435 000220 7640 SZA CLA /SAME? 436 000221 5226 JMP NOTLST /NO; LEAVE IT ALONE 437 000222 7040 CMA /YES; RESET 438 000223 3015 DCA GETPT /POINTER TO -1 439 000224 1633 TAD I L7577 /GET LAST CHARACTER 440 000225 7410 SKP 441 000226 1415 NOTLST, TAD I GETPT /GET NEXT CHARACTER 442 000227 6201 CDF 0 /RESET DATA FIELD 443 000230 5776 JMP HOHNDL /GO HANDLE HOST CHARACTER 444 000231 5607 HOINEX, JMP I HOCHIN /EXIT FROM HOST CHARACTER SUBROUTINE 445 446 000232 0202 M7576, -7576 447 000233 7577 L7577, 7577 448 449 450 451 452 /TO ERASE- 453 / WHEN (HC MODE) 454 / / TYPE MESSAGE FOR NEW SHEET 455 / / MOVE PEN AWAY 456 / / WAIT-FOR-KEYBOARD-ENTRY 457 / / MOVE PEN BACK 458 / ////////FIN 459 / ELSE ERASE DISPLAY 460 ////////FIN 461 462 000234 0000 ERASE, 0 463 IFNZRO PLOTER < 464 000235 1006 TAD HCMODE /GET HC MODE BIT 465 000236 0002 AND STATUS /MASK FROM STATUS WORD 466 000237 7650 SNA CLA /HC MODE? 467 000240 5246 JMP ERAS /NO; SO ERASE SCREEN 468 000241 1375 TAD (ERATXT /YES; GET STARTING ADDRESS OF TELETYPE MESSAGE 469 000242 3774 DCA TYTXPT /AND STORE AS POINTER 470 000243 4773 JMS TYPTXT /GO TYPE THE MESSAGE 471 000244 4772 JMS KBWAIT /AND WAIT FOR USER RESPONSE ON KEYBOARD 472 000245 5253 JMP ERASEX /GO TO EXIT 473 > 474 000246 1021 ERAS, TAD ERASBT /GET ERASE BIT 475 000247 7421 MQL /PUT IT IN MQ 476 000250 6057 DIRE /READ VC8E REGISTER 477 000251 7501 MQA /ADD ERASE BIT 478 000252 6056 DILE /AND STORE IN VC8E REGISTER 479 000253 5634 ERASEX, JMP I ERASE /EXIT ERASE SUBROUTINE 480 481 IFNZRO PLOTER < 482 000254 2025 ERATXT, TEXT /PUT CLEAN PAPER ON PLOTTER; PRESS KEY WHEN READY/ 000255 2440 000256 0314 000257 0501 000260 1640 000261 2001 000262 2005 000263 2240 000264 1716 000265 4020 000266 1417 000267 2424 000270 0522 000271 7340 000272 2022 000273 0523 000274 2340 000275 1305 000276 3140 000277 2710 000300 0516 000301 4022 000302 0501 000303 0431 000304 0000 483 /TO SET-HC-MODE//////////////////////////////////////////// 484 / SET STATUS WORD 485 / TURN CURSOR OFF 486 / TURN ON SERVO 487 / TYPE MESSAGE 488 / MOVE PEN AWAY 489 / WAIT-FOR-KB-INPUT 490 / MOVE PEN BACK 491 ////////FIN 492 493 494 000305 0000 SETHC, 0 495 000306 1006 TAD HCMODE /GET HC MODE BIT 496 000307 7421 MQL /STORE IN MQ REGISTER 497 000310 1002 TAD STATUS /GET STATUS REGISTER 498 000311 7501 MQA /SET HC MODE BIT 499 000312 3002 DCA STATUS /AND PUT ALL BACK IN STATUS REGISTER 500 000313 1022 TAD PLTON /GET PLOTTER SERVO ON BIT 501 000314 7421 MQL /PUT IT IN MQ 502 000315 6057 DIRE /READ BC8E REGISTER 503 000316 0017 AND MCRSBT /MASK ALL BUT CURSOR BIT(I.E.,TURN CURSOR OFF) 504 000317 7501 MQA /SET PLOTTER SERVO BIT 505 000320 6056 DILE /AND RELOAD VC8E REGISTER 506 000321 1371 TAD (SETTXT /GET BEGINNING OF TELETYPE MESSAGE 507 000322 3774 DCA TYTXPT /STORE IT AS A POINTER 508 000323 4773 JMS TYPTXT /GO TYPE IT 509 000324 4772 JMS KBWAIT /AND WAIT FOR USER RESPONSE 510 000325 5705 JMP I SETHC /EXIT SET HARD COPY ROUTINE 511 512 000326 2022 SETTXT, TEXT /PREPARE PLOTTER; PRESS KEY WHEN READY/ 000327 0520 000330 0122 000331 0540 000332 2014 000333 1724 000334 2405 000335 2273 000336 4020 000337 2205 000340 2323 000341 4013 000342 0531 000343 4027 000344 1005 000345 1640 000346 2205 000347 0104 000350 3100 513 514 515 516 517 518 519 /TO CLEAR-HC-MODE 520 / CLEAR STATUS WORD 521 / TURN CURSOR ON 522 / MOVE PEN AWAY 523 / TURN SERVO OFF 524 ////////FIN 525 526 527 000351 0000 CLRHC, 0 528 000352 1366 TAD P777 /GET VALUE OF MAXIMUM X COORDINATE 529 000353 6053 DILX /AND LOAD IT INTO X DAC 530 000354 4770 JMS WAITSL /WAIT FOR PEN TO SLEW OFF PAGE 531 000355 1006 TAD HCMODE /GET HC MODE BIT 532 000356 7040 CMA /COMPLEMENT IT TO MAKE MASK TO 533 000357 0002 AND STATUS /MASK ALL OTHER BITS FROM STATUS REGISTER 534 000360 3002 DCA STATUS /RESTORE STATUS REGISTER WITH HC BIT OFF 535 000361 6057 DIRE /READ VC8E REGISTER 536 000362 0023 AND PLTOF /MASK ALL BITS EXCEPT PLOTTER SERVO BIT 537 /(I.E., TURN SERVO OFF) 538 000363 6056 DILE /AND RELOAD VC8E REGISTER 539 000364 4767 JMS ACRSON /TURN AN CURSOR ON (IF AN MODE) 540 000365 5751 JMP I CLRHC /EXIT CLEAR HC MODE SUBROUTINE 541 542 000366 0777 P777, 777 /MAXIMUM X COORDINATE 543 > 544 545 546 547 548 549 000367 2457 PAGE 000370 2523 000371 0326 000372 1426 000373 1400 000374 1424 000375 0254 000376 1006 000377 0400 550 /TO HANDLE-KB-CHARACTER 551 / WHEN (KEYBOARD TRAP SET) 552 / / CLEAR KEYBOARD TRAP 553 / / SELECT (CHARACTER) 554 / / / (^R) RESET- 555 / / / (^N) SET NORMAL CHARACTER SET 556 / / / (^A) 557 / / / / SET ALTERNATE CHARACTER SET 558 / / / / SET AN DEVICE TO DISPLAY 559 / / / ////////FIN 560 / / / (^D) SET AN DEVICE TO DISPLAY 561 / / / (^T) UNLESS (ALTERNATE CHARACTER SET) SET AN DEVICE TO TELETYPE 562 / / / (^P) IF (PLOTTER) SET-HC-MODE 563 / / / (^C) IF (PLOTTER) CLEAR-HC-MODE 564 / / / (^E) EXIT- 565 / / / (^K) EXIT-(WITH LOG OFF) 566 / / / (`) 567 / / / / VIEW- 568 / / / / SET KEYBOARD TRAP 569 / / / ////////FIN 570 / / ////////FIN 571 / ////////FIN 572 / ELSE 573 / / SELECT (CHARACTER) 574 / / / (~) PAGE- 575 / / / (`) 576 / / / / VIEW- 577 / / / / SET KEYBOARD TRAP 578 / / / ////////FIN 579 / / / (OTHERWISE) 580 / / / / WHEN (GI MODE) 581 / / / / / SELECT (CHARACTER) 582 / / / / / / (CR) RETURN-CHARACTER-AND-COORDIANTES 583 / / / / / / (NUMERAL OR PERIOD) CONTROL CURSOR 584 / / / / / / (OTHERWISE) HOLD CHARACTER FOR TRANSMIT 585 / / / / / ////////FIN 586 / / / / ////////FIN 587 / / / / ELSE TRANSMIT-TO-HOST 588 / / / ////////FIN 589 / / ////////FIN 590 / /////////FIN 591 ////////FIN 592 000400 0000 KBHNDL, 0 593 000401 3343 DCA KBCHAR /STORE CHARACTER TEMPORARILY 594 000402 1002 TAD STATUS /GET STATUS WORD 595 000403 0013 AND KBTRAP /MASK KEYBOARD TRAP BIT 596 000404 7650 SNA CLA /IS TRAP SET? 597 000405 5315 JMP KBTPCL /NO; JUMP AHEAD 598 000406 1013 TAD KBTRAP /YES; GET TRAP BIT 599 000407 7040 CMA /AND FORM MASK TO CLEAR IT 600 000410 0002 AND STATUS /MASK ALL OTHER BITS FROM STATUS WORD 601 000411 3002 DCA STATUS /AND RESET STATUS WORD WITH TRAP BIT CLEAR 602 000412 1343 SELCTR, TAD KBCHAR /GET KEYBOARD CHARACTER 603 000413 1344 TAD MCTRLR /ADD MINUS ^R 604 000414 7640 SZA CLA /IS IT ^R? 605 000415 5220 JMP SELCTN /NO; CHECK NEXT OPTION 606 000416 4777 JMS RESET /YES; RESET 607 000417 5342 JMP KBHNEX /AND JUMP TO SUBROUTINE EXIT 608 609 000420 1343 SELCTN, TAD KBCHAR /GET KEYBOARD CHARACTER 610 000421 1345 TAD MCTRLN /ADD MINUS ^N 611 000422 7640 SZA CLA /IS IT ^N? 612 000423 5226 JMP SELCTA /NO; CHECK NEXT OPTION 613 000424 1010 TAD ALTCHR /YES; GET ALTERNATE CHARACTER SET BIT 614 000425 5776 JMP CLRSTA /AND EXIT SUBROUTINE THROUGH BIT CLEAR SEQUENCE 615 616 000426 1343 SELCTA, TAD KBCHAR /GET KEYBOARD CHARACTER 617 000427 1346 TAD MCTRLA /ADD MINUS ^A 618 000430 7640 SZA CLA /IS IT ^A? 619 000431 5240 JMP SELCTD /NO; CHECK NEXT OPTION 620 000432 1007 TAD ALTAN /YES; GET ALTERNATE ALPHANUMERIC DEVICE BIT 621 000433 7040 CMA /AND FORM COMPLEMENTARY MASK 622 000434 0002 AND STATUS /MASK ALL OTHER BITS FROM STATUS WORD 623 000435 3002 DCA STATUS /AND RESET STATUS WORD 624 000436 1010 TAD ALTCHR /GET ALTERNATE CHARACTER SET BIT 625 000437 5775 JMP SETSTA /AND EXIT SUBROUTINE THROUGH BIT SET SEQUENCE 626 627 000440 1343 SELCTD, TAD KBCHAR /GET KEYBOARD CHARACTER 628 000441 1347 TAD MCTRLD /ADD MINUS ^D 629 000442 7640 SZA CLA /IS IT ^D? 630 000443 5247 JMP SELCTT /NO; CHECK NEXT OPTION 631 000444 4774 JMS ACRSON /YES; TURN ALPHANUMERIC CURSOR ON 632 000445 1007 TAD ALTAN /GET ALTERNATE ALPHANUMERIC DEVICE (TTY) BIT 633 000446 5776 JMP CLRSTA /AND EXIT SUBROUTINE THROUGH BIT CLEAR SEQUENCE 634 635 000447 1343 SELCTT, TAD KBCHAR /GET KEYBOARD CHARACTER 636 000450 1350 TAD MCTRLT /ADD MINUS ^T 637 000451 7640 SZA CLA /IS IT ^T? 638 000452 5262 JMP SELCTP /NO; CHECK NEXT OPTION 639 000453 1010 TAD ALTCHR /YES; GET ALTERNATE CHARACTER SET BIT 640 000454 0002 AND STATUS /AND MASK FROM STATUS WORD 641 000455 7640 SZA CLA /IS ALTERNATE CHARACTER SET REQUIRED? 642 000456 5342 JMP KBHNEX /YES; SO EXIT SUBROUTINE WITHOUT SWITCHING TO TTY 643 /WHICH CAN'T PRINT ALTERNATE CHARACTER SETS 644 000457 4773 JMS ACRSOF /NO; TURN ALPHANUMERIC CURSOR OFF 645 000460 1007 TAD ALTAN /GET ALTERNATE ALPHANUMERIC DEVICE BIT 646 000461 5775 JMP SETSTA /AND EXIT SUBROUTINE THROUGH BIT SET SEQUENCE 647 000462 1343 SELCTP, TAD KBCHAR /GET KEYBOARC CHARACTER 648 IFNZRO PLOTER < 649 000463 1352 TAD MCTRLP /ADD MINUS ^P 650 000464 7640 SZA CLA /IS IT ^P? 651 000465 5270 JMP SELCTC /NO; CHECK NEXT OPTION 652 000466 4772 JMS SETHC /YES; SET HC MODE 653 000467 5342 JMP KBHNEX /AND EXIT SUBROUTINE 654 655 000470 1343 SELCTC, TAD KBCHAR /GET KEYBOARD CHARACTER 656 000471 1351 TAD MCTRLC /ADD MINUS ^C 657 000472 7640 SZA CLA /IS IT ^C? 658 000473 5276 JMP SELCTE /NO; CHECK NEXT OPTION 659 000474 4771 JMS CLRHC /YES; CLEAR HC MODE 660 000475 5342 JMP KBHNEX /AND EXIT SUBROUTINE 661 662 000476 1343 SELCTE, TAD KBCHAR /GET KEYBOARD CHARACTER 663 > 664 000477 1353 TAD MCTRLE /ADD MINUS ^E 665 000500 7650 SNA CLA /IS IT ^E? 666 000501 5130 JMP EXIT /YES; EXIT PROGRAM 667 668 000502 1343 SELCTK, TAD KBCHAR /GET KEYBOARD CHARACTER 669 000503 1354 TAD MCTRLK /ADD MINUS ^K 670 000504 7650 SNA CLA /IS IT ^K? 671 000505 5130 JMP EXIT /YES; EXIT THE PROGRAM 672 673 000506 1343 SELVIE, TAD KBCHAR /GET KEYBOARD CHARACTER 674 000507 1355 TAD MVIEW /ADD MINUS ` 675 000510 7640 SZA CLA /IS IT `? 676 000511 5342 JMP KBHNEX /NO; EXIT SUBROUTINE 677 000512 4770 VIE, JMS VIEW /YES; INTENSIFY SCREEN 678 000513 1013 TAD KBTRAP /GET KEYBOARD TRAP BIT 679 000514 5775 JMP SETSTA /AND EXIT SUBROUTINE THROUGH BIT SET SEQUENCE 680 681 682 683 000515 1343 KBTPCL, TAD KBCHAR /KEYBOARD TRAP IS CLEAR; GET KEYBOARD CHARACTER 684 000516 1356 TAD MPAGE /ADD MINUS ~ 685 000517 7640 SZA CLA /IS IT ~? 686 000520 5323 JMP SELVU /NO; CHECK NEXT OPTION 687 000521 4767 JMS NEWPAG /YES; GO TO NEW PAGE SEQUENCE 688 000522 5342 JMP KBHNEX /AND EXIT SUBROUTINE 689 690 000523 1343 SELVU, TAD KBCHAR /GET KEYBOARD CHARACTER 691 000524 1355 TAD MVIEW /ADD MINUS ` 692 000525 7650 SNA CLA /IS IT `? 693 000526 5312 JMP VIE /YES; GO TO INTENSIFY SEQUENCE 694 695 000527 1005 SELOTH, TAD GIMODE /GET GI MODE BIT 696 000530 0002 AND STATUS /AND MASK FROM STATUS WORD 697 000531 7650 SNA CLA /IS GI MODE SET? 698 000532 5340 JMP SENDIT /NO; CHARACTER IS TO BE TRANSMITTED TO HOST 699 000533 1343 TAD KBCHAR /YES; GET KEYBOARD CHARACTER 700 000534 1357 TAD MCRET /ADD MINUS 701 000535 7640 SZA CLA /IS IT ? 702 000536 5766 JMP CURS /NO; SO IT MUST BE CURSOR CONTROL 703 000537 5765 JMP CLSGIN /YES; SO PREPARE TO CLESE GI MODE 704 705 000540 1343 SENDIT, TAD KBCHAR /GET KEYBOARD CHARACTER 706 000541 4764 JMS XMITEN /AND GO SEND IT TO HOST 707 708 709 000542 5600 KBHNEX, JMP I KBHNDL /EXIT FROM KEYBOARD SUBROUTINE 710 711 712 000543 0000 KBCHAR, 0 /STORAGE FOR KEYBOARD CHARACTER 713 000544 7556 MCTRLR, -222 /MINUS ^R 714 000545 7562 MCTRLN, -216 /MINUS ^N 715 000546 7577 MCTRLA, -201 /MINUS ^A 716 000547 7574 MCTRLD, -204 /MINUS ^D 717 000550 7554 MCTRLT, -224 /MINUS ^T 718 000551 7575 MCTRLC, -203 /MINUS ^C 719 000552 7560 MCTRLP, -220 /MINUS ^P 720 000553 7573 MCTRLE, -205 /MINUS ^E 721 000554 7565 MCTRLK, -213 /MINUS ^K 722 000555 7440 MVIEW, -340 /MINUS ` 723 000556 7402 MPAGE, -376 /MINUS ~ 724 000557 7563 MCRET, -215 /MINUS 725 726 727 000564 1352 PAGE 000565 0610 000566 0614 000567 1565 000570 1000 000571 0351 000572 0305 000573 2505 000574 2457 000575 0603 000576 0600 000577 0762 728 729 730 000600 7040 CLRSTA, CMA /COMPLEMENT AC TO FORM MASK TO CLEAR ALL BITS SAVE THOSE IN AC 731 000601 0002 AND STATUS /AND MASK ALL OTHERS FROM STATUS WORD 732 000602 5206 JMP DCASTA /AND RESET STATUS WORD AS THE SUBROUTINE IS EXITED 733 734 000603 7421 SETSTA, MQL /PUT BITS TO BE SET INTO MQ REGISTER 735 000604 1002 TAD STATUS /GET STATUS WORD 736 000605 7501 MQA /INCLUSIVE OR ALL BITS TO BE ADDED TO STATUS WORD 737 000606 3002 DCASTA, DCA STATUS /AND RESTORE STATUS WORD 738 000607 5777 JMP KBHNEX /AND EXIT THE SUBROUTINE 739 740 000610 1325 CLSGIN, TAD GICHAR /GET GRAPHIC INPUT CHARACTER 741 000611 4776 JMS XMITEN /AND SEND IT TO HOST 742 000612 4775 JMS RETCOR /GO TO SUBROUTINE TO SEND COORDINATES TO HOST 743 000613 5777 JMP KBHNEX /AND EXIT THIS SUBROUTINE 744 745 /TO READ-CURSOR-INPUT 746 / SELECT (CHARACTER) 747 / / (0) SET LARGE STEP SIZE 748 / / (.) SET SMALL STEP SIZE 749 / / (5) RESET CURSOR TO INITIAL VALUE 750 / / (1) DECREMENT X; DECREMENT Y 751 / / (2) DECREMENT Y 752 / / (3) INCREMENT X; DECREMENT Y 753 / / (4) DECREMENT X 754 / / (6) INCREMENT X 755 / / (7) DECREMENT X; INCREMENT Y 756 / / (8) INCREMENT Y 757 / / (9) INCREMENT X; INCREMENT Y 758 / / (OTHERWISE) STORE GI CHARACTER 759 / ////////FIN 760 / MOVE-CURSOR 761 ////////FIN 762 763 764 765 766 000614 1774 CURS, TAD KBCHAR /GET KEYBOARD CHARACTER 767 000615 1314 TAD MZERO /ADD MINUS 0 768 000616 7640 SZA CLA /IS IT 0? 769 000617 5223 JMP TRYPER /NO; TRY NEXT OPTION 770 000620 1351 TAD LGSTEP /YES; GET LARGE CURSOR STEP SIZE 771 000621 3353 DCA CURSTP /AND SET CURSOR STEP SIZE WORD 772 000622 5777 JMP KBHNEX /AND EXIT SUBROUTINE 773 774 000623 1774 TRYPER, TAD KBCHAR /GET KEYBOARD CHARACTER 775 000624 1315 TAD MPER /ADD MINUS . 776 000625 7640 SZA CLA /IS IT .? 777 000626 5232 JMP TRYFIV /NO; CHECK NEXT OPTION 778 000627 1352 TAD SMSTEP /YES; GET SMALL CURSOR STEP SIZE 779 000630 3353 DCA CURSTP /AND SET CURSOR STEP SIZE WORD 780 000631 5777 JMP KBHNEX /AND EXIT SUBROUTINE 781 782 000632 1774 TRYFIV, TAD KBCHAR /GET KEYBOARD CHARACTER 783 000633 1316 TAD M265 /ADD MINUS 5 784 000634 7640 SZA CLA /IS IT 5? 785 000635 5245 JMP TRYNUM /NO; CHECK NUXT OPTION 786 000636 1030 TAD LASTX /YES; GET LAST X COORDINATE (BEFORE CURSOR MOVEMENT) 787 000637 6053 DILX /AND RESTORE X DAC 788 000640 3034 DCA CURSX /ALSO SET LAST CURSOR VALUE OF X 789 000641 1031 TAD LASTY /GET LAST Y COORDINATE (BEFORE CURSOR MOVEMENT) 790 000642 6054 DILY /RESTORE Y DAC 791 000643 3035 DCA CURSY /AND SET LAST CURSOR VALUE OF Y 792 000644 5777 JMP KBHNEX /EXIT SUBROUTINE 793 794 000645 1774 TRYNUM, TAD KBCHAR /GET KEYBOARD CHARACTER 795 000646 1317 TAD M261 /ADD MINUS 1 796 000647 7710 SPA CLA /IS IT LESS THAN 1? 797 000650 5311 JMP NOTCUR /YES; THEREFORE CHARACTER CANNOT BE CURSOR CONTROL 798 000651 1774 TAD KBCHAR /NO; GET CHARACTER AGAIN 799 000652 1320 TAD M272 /ADD MINUS 10 800 000653 7700 SMA CLA /IS IT LESS THAN 10? 801 000654 5311 JMP NOTCUR /NO; THEREFORE CHARACTER CANNOT BE CURSOR CONTROL 802 000655 1774 TAD KBCHAR /YES; CHARACTER IS CURSOR CONTROL; GET IT AGAIN 803 000656 0321 AND IIOO /MASK 10'S (OCTAL) AND 4'S BIT 804 000657 7640 SZA CLA /IS EITHER BIT SET? 805 000660 5263 JMP .+3 /YES; JUMP AHEAD 806 000661 7040 CMA /NO; CHARACTER IS 1,2,OR 3; SET AC TO -1 807 000662 5270 JMP LOADMQ /AND SET IT IN MQ FOR Y CONTROL 808 000663 7001 IAC /CHARACTER IS 4,5,7,8,OR 9; SET AC=1 809 000664 1774 TAD KBCHAR /AND ADD CHARACTER (CHAR IS INCREMENTED) 810 000665 0322 AND IOOO /MASK 10'2 BIT 811 000666 7640 SZA CLA /IS 10'S BIT SET? 812 000667 7001 IAC /YES; CHAR IS 7,8,OR 9 (REMEMBER INCREMENT);SET AC=1 813 000670 7421 LOADMQ, MQL /AND SET IT IN MQ FOR Y CONTROL 814 000671 1774 TAD KBCHAR /GET KEYBOARC CHARACTER AGAIN 815 000672 7112 CLL RTR /DO SOME FUNNY STUFF 816 000673 1774 TAD KBCHAR /AND SOME MORE 817 000674 0323 AND OOIO /MASK 2'S BIT FROM MODIFIED CHARACTER 818 000675 7640 SZA CLA /IS 2'S BIT SET 819 000676 5301 JMP .+3 /YES; JUMP AHEAD 820 000677 7040 CMA /NO; CHARACTER MUST BE 1,4,OR 7;SET AC=-1 FOR X MOVEMENT 821 000700 5307 JMP DONCUR /AND JUMP TO CURSOR EXIT 822 000701 1774 TAD KBCHAR /2'S BIT IS NOT SET; GET CHARACTER AGAIN 823 000702 7112 CLL RTR /DO THE SAME FUNNY 824 000703 1774 TAD KBCHAR /STUFF TO THE CHARACTER AGAIN 825 000704 0324 AND OOOI /MASK THE 1'S BIT 826 000705 7640 SZA CLA /IS THE 1'S BIT SET? 827 000706 7001 IAC /YES; CHARACTER IS 3,6,OR 9; SET AC=1 FOR +X MOVEMENT OF CURSOR 828 829 000707 4326 DONCUR, JMS MOVCUR /+1 OR -1 IS IN MQ FOR Y MOVEMENT OF CURSOR 830 /+1 OR -1 IS IN ACCUMULATOR FOR X MOVEMENT OF CURSOR 831 /GO TO A SUBROUTINE WHICH CAN USE THESE TO MOVE THE CURSOR 832 000710 5777 JMP KBHNEX /AND EXIT THE KEYBOARD SUBROUTINE 833 834 000711 1774 NOTCUR, TAD KBCHAR /CHARACTER IS NOT CURSOR CONTROL; GET IT AGAIN 835 000712 3325 DCA GICHAR /IT IS A GRAPHIC INPUT CHARACTER; PUT IT AWAY WHERE IT CAN BE USED 836 000713 5777 JMP KBHNEX /AND EXIT KEYBOARD SUBROUTINE 837 838 000714 7520 MZERO, -260 /MINUS 0 839 000715 7522 MPER, -256 /MINUS . 840 000716 7513 M265, -265 /MINUS 5 841 000717 7517 M261, -261 /MINUS 1 842 000720 7506 M272, -272 /MINUS 2 843 000721 0014 IIOO, 0014 /MASK FOR SELECTING CURSOR CONTROL CHARACTERS 844 000722 0010 IOOO, 0010 /MASK FOR SELECTING CURSOR CONTROL CHARACTERS 845 000723 0002 OOIO, 0002 /MASK FOR SELECTING CURSOR CONTROL CHARACTERS 846 000724 0001 OOOI, 0001 /MASK FOR SELECTING CURSOR CONTROL CHARACTERS 847 000725 0000 GICHAR, 0 /SOTRAGE OF GRAPHIC INPUT CHARACTER 848 /TO MOVE-CURSOR 849 / IF (MOVE X) 850 / / GET STEPSIZE 851 / / IF (NEGATIVE MOVEMENT) NEGATE STEPSIZE 852 / / ADD TO OLD X VALUE OF CURSOR 853 / ////////FIN 854 / ELSE GET OLD X VALUE OF CURSOR 855 / LOAD X DAC 856 / STORE X VALUE OF CURSOR 857 / IF (MOVE Y) 858 / / GET STEPSIZE 859 / / IF (NEGATIVE MOVEMENT) NEGATE STEPSIZE 860 / / ADD TO OLD Y VALUE OF CURSOR 861 / ////////FIN 862 / ELSE GET OLD Y VALUE OF CURSOR 863 / LOAD Y DAC 864 / STORE Y VALUE OF CURSOR 865 ////////FIN 866 867 868 869 870 000726 0000 MOVCUR, 0 871 000727 7104 CLL RAL /MOVE SIGN TO LINK 872 000730 7640 SZA CLA /IS X MOVEMENT OF CURSOR ZERO? 873 000731 1353 TAD CURSTP /NO; GET STEP SIZE 874 000732 7430 SZL /YES; ALSO HERE WITH STEP SIZE IN AC; IS MOVEMENT NEGATIVE? 875 000733 7141 CIA CLL /YES: SO NEGATE STEPSIZE (NEGATING ZERO DOES NOTHING) 876 000734 1034 TAD CURSX /ADD STEP TO OLD VALUE OF X COORDINATE OF CURSOR 877 000735 6053 DILX /LOAD X DAC 878 000736 3034 DCA CURSX /AND STORE UPDATED VALUE OF X COORDINATE OF CURSOR 879 000737 7501 MQA /GET THE Y INCREMENT FROM THE MQ REGISTER 880 000740 7104 CLL RAL /MOVE SIGN TO LINK 881 000741 7640 SZA CLA /IS Y MOVEMENT OF CURSOR ZERO? 882 000742 1353 TAD CURSTP /NO; GET STEP SIZE 883 000743 7430 SZL /YES; ALSO HERE WITH STEP SIZE IN AC; IS MOVEMENT NEGATIVE? 884 000744 7141 CIA CLL /YES; SO NEGATE STEPSIZE (INCLUDING ZERO) 885 000745 1035 TAD CURSY /ADD STEP TO OLD VALUE OF Y COORDINATE OF CURSOR 886 000746 6054 DILY /LOAD Y DAC 887 000747 3035 DCA CURSY /AND STORE UPDATED VALUE OF Y COORDINATE OF CURSOR 888 000750 5726 JMP I MOVCUR /EXIT SUBROUTINE 889 890 000751 0020 LGSTEP, 0020 /LARGE CURSOR STEP = 16 RASTER UNITS 891 000752 0002 SMSTEP, 0002 /SMALL CURSOR STEP = 2 RASTER UNITS 892 000753 0000 CURSTP, 0 /STORAGE OF PRESENT CURSOR STEP SIZE 893 894 895 896 897 898 899 /TO TYPE A CHARACTER 900 / REPEAT UNTIL (TELEPRINTER READY) 901 / ////////FIN 902 / TYPE CHARACTER 903 / CLEAR AC 904 ////////FIN 905 906 907 000754 0000 TYPE, 0 908 000755 6041 TSF /IS TELEPRINTER FLAG SET? 909 000756 5355 JMP .-1 /NO; GO BACK AND TRY AGAIN 910 000757 6046 TLS /YES; TYPE CHARACTER 911 000760 7200 CLA /CLEAR AC ALWAYS BEFORE RETURN 912 000761 5754 JMP I TYPE /AND RETURN FROM SUBROUTINE 913 914 915 916 917 /TO RESET- 918 / SET ALPHANUMERIC (AN) MODE 919 / HOME- 920 ////////FIN 921 922 923 000762 0000 RESET, 0 924 000763 1003 TAD MODMSK /GET BITS FOR GI AND GR MODES 925 000764 7040 CMA /COMPLEMENT TO MAKE MASK 926 000765 0002 AND STATUS /TO GET ALL OTHER BITS FROM STATUS WORD 927 000766 3002 DCA STATUS /AND RESET STATUS WORD WITH GI AND GR MODE BITS CLEAR 928 000767 4150 JMS HOME /MOVE BEAM TO HOME POSITION 929 000770 5762 JMP I RESET /AND LEAVE RESET SUBROUTINE 930 931 932 933 000774 0543 PAGE 000775 1455 000776 1352 000777 0542 934 935 936 /TO VIEW- 937 / UNLESS (HC MODE) RESTORE TO FULL INTENSITY 938 ////////FIN 939 940 941 001000 0000 VIEW, 0 942 IFNZRO PLOTER < 943 001001 1006 TAD HCMODE /GET HC MODE BIT 944 001002 0002 AND STATUS /MASK IT FROM STATUS WORD 945 001003 7650 SNA CLA /HC MODE? 946 > 947 001004 6055 DIXY /NO; INTENSIFY 948 001005 5600 JMP I VIEW /RETURN FROM INTENSIFY SUBROUTINE (DOING NOTHING IF HC MODE) 949 950 /TO HANDLE-HOST-CHARACTER 951 / WHEN (ESCAPE TRAP SET) 952 / / CLEAR ESCAPE TRAP 953 / / SELECT (CHARACTER) 954 / / / (FF) PAGE- 955 / / / (ENQ) 956 / / / / UNLESS (GI MODE) RETURN-STATUS 957 / / / / RETURN COORDINATES 958 / / / ////////FIN 959 / / / (SUB) SET GI MODE 960 / / / (OTHERWISE) ERROR- 961 / / ////////FIN 962 / ////////FIN 963 / ELSE 964 / / WHEN (CONTROL CHARACTER) 965 / / / SELECT (CHARACTER) 966 / / / / (EXC) SET EXCAPE TRAP 967 / / / / (CR) 968 / / / / / UNLESS (AN MODE) SET AN MODE 969 / / / / / MARGIN- 970 / / / / ////////FIN 971 / / / / (LF) LINEFEED- 972 / / / / (GS) SET GR MODE 973 / / / / (US) SET AN MODE 974 / / / / (HT) SPACE- 975 / / / / (VT) LINEFEED- 976 / / / / (BS) BACKSPACE 977 / / / / (BEL) RING BELL 978 / / / / (SO) SET ALTERNATE CHARACTER SET 979 / / / / (SI) SET NORMAL CHARACTER SET 980 / / / / (OTHERWISE) ERROR- 981 / / / ////////FIN 982 / / ////////FIN 983 / / ELSE 984 / / / CONDITIONAL 985 / / / / (GR MODE) TREAT-COORDINATE-CHARACTER 986 / / / / (OTHERWISE) /PRINT-CHARACTER 987 / / / ////////FIN 988 / / ////////FIN 989 / ////////FIN 990 ////////FIN 991 992 001006 3341 HOHNDL, DCA HOCHAR /STORE CHARACTER FROM HOST TEMPORARILY 993 001007 1012 TAD ESCTRP /GET ESCAPE TRAP BIT 994 001010 0002 AND STATUS /AND MASK FROM STATUS WOOD 995 001011 7650 SNA CLA /IS ESCAPE TRAP SET? 996 001012 5250 JMP ESCCLR /NO; JUMP AHEAD TO NEXT SECTION 997 001013 1012 TAD ESCTRP /YES; GET ESCAPE TRAP BIT AGAIN 998 001014 7040 CMA /AND FORM COMPLEMENTARY MASK 999 001015 0002 AND STATUS /TO CLEAR BIT FROM STATUS WORD 1000 001016 3002 DCA STATUS /RESET STATUS WORD 1001 001017 1341 SELENQ, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1002 001020 1343 TAD MENQ /ADD MINUS ENQ 1003 001021 7640 SZA CLA /IS IT ENQ? 1004 001022 5225 JMP SELFF /NO; CHECK NEXT OPTION 1005 001023 4777 JMS RETCOR /YES; RETURN COORDINATES 1006 001024 5776 JMP HOHNEX /AND EXIT SUBROUTINE 1007 1008 001025 4775 SELFF, JMS CLRGI /PRESUME GI MODE AND CLEAR IT 1009 001026 1341 TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1010 001027 1342 TAD MFF /ADD MINUS FF 1011 001030 7640 SZA CLA /IS IT FF? 1012 001031 5234 JMP SELSUB /NO; CHECK NEXT OPTION 1013 001032 4774 JMS NEWPAG /YES; GO TO NEW PAGE 1014 001033 5776 JMP HOHNEX /AND EXIT SUBROUTINE 1015 1016 001034 1341 SELSUB, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1017 001035 1344 TAD MSUB /ADD MINUS SUB 1018 001036 7640 SZA CLA /IS IT SUB? 1019 001037 5247 JMP SELERR /NO; CHECK NEXT OPTION 1020 001040 1005 TAD GIMODE /YES; GET GI MODE BIT 1021 001041 7421 MQL /PUT IT IN MQ REGISTER 1022 001042 1002 TAD STATUS /GET STATUS WORD 1023 001043 7501 MQA /INCLUSIVE OR GI MODE BIT INTO STATUS WORD 1024 001044 3002 DCA STATUS /AND RESTORE STATUS WORD 1025 001045 4773 JMS CURSON /TURN CURSOR ON 1026 001046 5776 JMP HOHNEX /AND EXIT SUBROUTINE 1027 1028 001047 5776 SELERR, JMP HOHNEX /NO ERROR ROUTINE AT PRESENT; SIMPLY EXIT SUBROUTINE 1029 1030 001050 1341 ESCCLR, TAD HOCHAR /ESCAPE TRAP NOT SET; GET CHARACTER RECEIVED FROM HOST 1031 001051 0355 AND BITS56 /GET MASK FOR 100'S AND 40'S BITS 1032 001052 7640 SZA CLA /IS EITHER BIT SET? (IF NOT, IT IS A CONTROL CHARACTER) 1033 001053 5772 JMP NOTCTL /BITS NOT SET; CHARACTER IS CONTROL CHARACTER 1034 001054 1341 TAD HOCHAR /BITS SET; CHARACTER IS NOT A CONTROL CHARACTER; GET IT AGAIN 1035 001055 1345 TAD MESC /ADD MINUS ESC 1036 001056 7640 SZA CLA /IS IT ESC? 1037 001057 5262 JMP SELCR /NO; CHECK NEXT OPTION 1038 001060 1012 TAD ESCTRP /YES; GET EXCAPE TRAP BIT 1039 001061 5771 JMP SETST /AND EXIT SUBROUTINE THROUGH BIT SET SEQUENCE 1040 1041 001062 1341 SELCR, TAD HOCHAR /GET CHARACTER RECEIVED FFOM HOST 1042 001063 1346 TAD MCR /ADD MINUS CR 1043 001064 7640 SZA CLA /IS IT CR? 1044 001065 5301 JMP SELLF /NO; CHECK NEXT OPTION 1045 001066 1002 TAD STATUS /YES; GET STATUS WORD 1046 001067 0005 AND GIMODE /AND MASK GI MODE BIT 1047 001070 7640 SZA CLA /IS GI MODE SET? 1048 001071 4775 JMS CLRGI /YES; CLEAR GI MODE 1049 001072 4770 JMS GOMARG /MOVE TO MARGIN 1050 001073 1004 TAD GRMODE /GET GR MODE BIT 1051 001074 1005 TAD GIMODE /AND GI MODE BIT 1052 001075 0002 AND STATUS /MASK BOTH FROM STATUS WORD 1053 001076 7650 SNA CLA /IS EITHER SET? 1054 001077 5776 JMP HOHNEX /NO; EXIT SUBROUTINE 1055 001100 5767 JMP SETAN /YES; SET ALPHANUMERIC MODE (AND EXIT SUBROUTINE) 1056 1057 001101 1341 SELLF, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1058 001102 1347 TAD MLF /ADD MINUS LF 1059 001103 7640 SZA CLA /IS IT LF? 1060 001104 5307 JMP SELGS /NO; CHECK NEXT OPTION 1061 001105 4766 JMS LINFED /YES; LINEFEED 1062 001106 5776 JMP HOHNEX /AND EXIT SUBROUTINE 1063 1064 001107 1341 SELGS, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1065 001110 1350 TAD MGS /ADD MINUS GS 1066 001111 7650 SNA CLA /IS IT GS? 1067 001112 5765 JMP SETGR /YES; SET GR MODE (AND EXIT SUBROUTINE) 1068 1069 001113 1341 SELUS, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1070 001114 1351 TAD MUS /ADD MINUS US 1071 001115 7650 SNA CLA /IS IT US? 1072 001116 5767 JMP SETAN /YES; SET ALPHANUMERIC MODE (AND EXIT SUBROUTINE) 1073 1074 001117 1341 SELHT, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1075 001120 1352 TAD MHT /ADD MINUS HT 1076 001121 7640 SZA CLA /IS IT HT? 1077 001122 5325 JMP SELVT /NO; CHECK NEXT OPTION 1078 001123 4764 JMS SPACE /YES; SPACE 1079 001124 5776 JMP HOHNEX /AND EXIT SUBROUTINE 1080 1081 001125 1341 SELVT, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1082 001126 1353 TAD MVT /ADD MINUS VT 1083 001127 7640 SZA CLA /IS IT VT? 1084 001130 5333 JMP SELBS /NO; CHECK NEXT OPTION 1085 001131 4766 JMS LINFED /YES; LINEFEED 1086 001132 5776 JMP HOHNEX /AND EXIT SUBROUTINE 1087 1088 001133 1341 SELBS, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1089 001134 1354 TAD MBS /ADD MINUS BS 1090 001135 7640 SZA CLA /IS IT BS? 1091 001136 5763 JMP SELBEL /NO; CHECK NEXT OPTION 1092 001137 4762 JMS BACKSP /YES; BACKSPACE 1093 001140 5776 JMP HOHNEX /AND EXIT SUBROUTINE 1094 1095 001141 0000 HOCHAR, 0 /TEMPORARY STORAGE ON THIS PAGE OF CHARACTER RECEIVED FROM HOST 1096 1097 /FOLLOWING CHARACTERS ARE SET FOR EVEN PARITY 1098 /RECEIVED FROM HOST COMPUTER. 1099 001142 7764 MFF, -14 /MINUS FF 1100 001143 7773 MENQ, -5 /MINUS ENQ 1101 001144 7546 MSUB, -232 /MINUS SUB 1102 001145 7745 MESC, -33 /MINUS ESC 1103 001146 7563 MCR, -215 /MINUS CR 1104 001147 7766 MLF, -12 /MINUS LF 1105 001150 7743 MGS, -35 /MINUS GS 1106 001151 7541 MUS, -237 /MINUS US 1107 001152 7767 MHT, -11 /MINUS HT 1108 001153 7565 MVT, -213 /MINUS VT 1109 001154 7570 MBS, -210 /MINUS BS 1110 1111 001155 0140 BITS56, 140 /MASK FOR BITS WHICH INDICATE NON-CONTROL CHARACTER IF EITHER SET 1112 1113 1114 1115 1116 001162 2406 PAGE 001163 1200 001164 2400 001165 1235 001166 2271 001167 1241 001170 2427 001171 1302 001172 1225 001173 1330 001174 1565 001175 1317 001176 1306 001177 1455 1117 001200 1777 SELBEL, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1118 001201 1307 TAD MBEL /ADD MINUS BEL 1119 001202 7640 SZA CLA /IS IT BEL? 1120 001203 5207 JMP SELSO /NO; CHECK NEXT OPTION 1121 001204 1310 TAD BEL /YES; GET ASCII FOR BELL 1122 001205 4776 JMS TYPE /AND TRANSMIT TO TELETYPE 1123 001206 5306 JMP HOHNEX /AND EXIT SUBROUTINE 1124 1125 001207 1777 SELSO, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1126 001210 1311 TAD MSO /ADD MINUS SO 1127 001211 7640 SZA CLA /IS IT SO? 1128 001212 5215 JMP SELSI /NO; CHECK NEXT OPTION 1129 001213 1010 TAD ALTCHR /YES; GET ALTERNATE CHARACTER SET BIT 1130 001214 5302 JMP SETST /AND LEAVE SUBROUTINE THROUGH BIT SET SEQUENCE 1131 1132 001215 1777 SELSI, TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1133 001216 1312 TAD MSI /ADD MINUS SI 1134 001217 7640 SZA CLA /IS IT SI? 1135 001220 5224 JMP SELOT /NO; CHECK NEXT OPTION 1136 001221 7421 MQL /YES; CLEAR MQ REGISTER 1137 001222 1010 TAD ALTCHR /AND GET ALTERNATE CHARACTER SET BIT IN AC 1138 001223 5277 JMP CLRST /AND EXIT SUBROUTINE THROUGH BIT CLEAR SEQUENCE 1139 1140 001224 5306 SELOT, JMP HOHNEX /NO ERROR HANDLING ROUTINE SO JUST EXIT 1141 001225 1002 NOTCTL, TAD STATUS /CHARACTER IS NOT CONTROL CHARACTER; GET STATUS WORD 1142 001226 0004 AND GRMODE /AND MASK GR MODE BIT 1143 001227 7650 SNA CLA /IS GR MODE SET? 1144 001230 5233 JMP NOTGR /NO; JUMP AHEAD 1145 001231 4775 JMS COORD /YES; TREAT CHARACTER AS A COORDINATE 1146 001232 5306 JMP HOHNEX /AND EXIT SUBROUTINE 1147 1148 001233 4774 NOTGR, JMS PRCHAR /NOT GR MODE SO PRINT CHARACTER 1149 001234 5306 JMP HOHNEX /AND EXIT SUBROUTINE 1150 1151 001235 2043 SETGR, ISZ DKVECT /BEGINNING OF SEQUENCE TO SET GR MODE; SET DARK VECTOR FLAG FIRST 1152 001236 4773 JMS ACRSOF /TURN AN CURSOR OFF 1153 001237 1004 TAD GRMODE /GET GR MODE BIT 1154 001240 7410 SKP 1155 001241 4772 SETAN, JMS ACRSON /BEGINNING OF SEQUENCE TO SET AN MODE; TURN AN CURSOR ON 1156 001242 7421 MQL /LOAD MQ (GR MODE BIT OR 0 IF AN MODE) 1157 IFNZRO PLOTER < 1158 001243 1006 TAD HCMODE /GET HC MODE BIT 1159 001244 0002 AND STATUS /AND MASK FROM STATUS WORD 1160 001245 7640 SZA CLA /IS HC MODE SET? 1161 001246 1006 TAD HCMODE /YES; GET HC MODE BIT AGAIN 1162 001247 7501 MQA /INCLUSIVE OR GR MODE BIT IF SET ABOVE 1163 001250 7421 MQL /MOVE ALL THESE BITS (HC AND PERHAPS GR) TO MQ REGISTER 1164 > 1165 001251 3045 DCA CHARCT /RESET CHARACTER COUNTER (THIS LINE) TO ZERO 1166 001252 1030 TAD LASTX /GET LAST VALUE OF X COORDINATE 1167 001253 6053 DILX /LOAD IT INTO X DAC 1168 001254 1313 TAD K1000 /ADD 1000 TO X COORDINATE (OFFSET IT) SO THAT IT IS POSITIVE 1169 001255 1314 TAD M16 /SUBTRACT ONE CHARACTER WIDTH 1170 001256 7500 SMA /IF THE RESULT IS NEGATIVE, EXIT THE LOOP 1171 001257 2045 ISZ CHARCT /OTHERWISE INCREMENT THE CHARACTER COUTN 1172 001260 7500 SMA /STILL PART OF THE EXIT 1173 001261 5255 JMP .-4 /IF THE RESULT IS NOT NEGATIVE, GO SUBTRACT ANOTHER CHARACTER WIDTH 1174 001262 7200 CLA /OUT OF THE LOOP HERE; GET RID OF RESIDUAL IN AC 1175 001263 3046 DCA LINECT /CLEAR LINE COUNTER (THIS COLUMN) 1176 001264 1031 TAD LASTY /GET LASY VALUE OF Y COORDINATE 1177 001265 6054 DILY /LOAD Y DAC 1178 001266 1315 TAD M767 /OFFSET Y COORDINATE SO IT IS ALWAYS NEGATIVE 1179 001267 1316 TAD D22 /AND ADD HEIGHT OF ONE CHARACTER (AND SPACE BETWEEN LINES) 1180 001270 7510 SPA /IF RESULT IS POSITIVE, EXIT LOOP 1181 001271 2046 ISZ LINECT /OTHERWISE, INCREMENT LINE COUNTER 1182 001272 7510 SPA /STILL PART OF THE EXIT 1183 001273 5267 JMP .-4 /IF RESULT WAS NOT POSITIVE, GO ADD ANOTHER LINE HEIGHT 1184 001274 7200 CLA /OUT OF LOOP; GET RID OF RESIDUE IN AC 1185 001275 1004 TAD GRMODE /GET GR MODE BIT 1186 001276 1011 TAD MARGIN /GET ALTERNATE MARGIN BIT 1187 001277 7040 CLRST, CMA /COMPLEMENT THESE BITS TO FORM MASK TO CLEAR THESE BITS 1188 001300 0002 AND STATUS /CLEAR THE BITS FROM THE STATUS WORD 1189 001301 5304 JMP .+3 /AND JUMP AHEAD 1190 001302 7421 SETST, MQL /PUT ALL BITS IN AC INTO MQ REGISTER 1191 001303 1002 TAD STATUS /GET STATUS WORD 1192 001304 7501 MQA /AND INCLUSIVE OR (SET) THE REQUIRED BITS (IF NOT ALREADY SET) 1193 001305 3002 DCAST, DCA STATUS /RESTORE STATUS WORD 1194 1195 001306 5771 HOHNEX, JMP HOINEX /EXIT THIS ROUTINE BY JUMPING BACK TO HOST INPUT ROUTINE 1196 1197 001307 7571 MBEL, -207 /MINUS BEL 1198 001310 0207 BEL, 207 /BEL FOR TTY 1199 001311 7562 MSO, -216 /MINUS SO 1200 001312 7761 MSI, -17 /MINUS SI 1201 001313 1000 K1000, 1000 /A NEEDED CONSTANT 1202 001314 7762 M16, -16 /MINUS THE WIDTH OF A CHARACTER SPACE IN RASTER UNITS 1203 001315 7011 M767, -767 /A NEEDED CONSTANT 1204 001316 0026 D22, 26 /THE HEIGHT OF A CHARACTER SPACE IN RASTER UNITS 1205 1206 /TO CLEAR-GI-MODE 1207 / CLEAR BI MODE BIT IN STATUS WORD 1208 / CLEAR CURSOR BIT IN VC8E REGISTER 1209 ////////FIN 1210 1211 1212 1213 1214 001317 0000 CLRGI, 0 1215 001320 1005 TAD GIMODE /GET GI MODE BIT 1216 001321 7040 CMA /COMPLEMENT IT TO FORM MASK TO 1217 001322 0002 AND STATUS /CLEAR BIT FROM STATUS WORD 1218 001323 3002 DCA STATUS /AND RESTORE STATUS WORD 1219 001324 6057 DIRE /READ VC8E REGISTER 1220 001325 0017 AND MCRSBT /MASK ALL BUT CURSOR BIT 1221 001326 6056 DILE /AND RESOTRE VC8E REGISTER 1222 001327 5717 JMP I CLRGI /EXIT SUBROUTINE 1223 1224 1225 1226 1227 1228 /TO TURN-CURSOR-ON 1229 / SET CURSOR BIT IN VC8E REGISTER 1230 / INTENSIFY 1231 / SET LARGE STEP 1232 / SET LAST CURSOR COORDINATES TO REMEMBER 1233 / PRESET GRAPHIC INPUT DEFAULT CHARACTER (SPACE) 1234 ////////FIN 1235 1236 1237 1238 1239 001330 0000 CURSON, 0 1240 001331 6057 DIRE /READ VC8E REGISTER 1241 001332 0017 AND MCRSBT /MASK ALL BUT CURSOR BIT 1242 001333 1016 TAD CRSBT /ADD CURSOR BIT 1243 001334 6056 DILE /RESTORE VC8E REGISTER 1244 001335 6052 DISD /SKIP IF DISPLAY READY 1245 001336 5335 JMP .-1 /ELSE TRY AGAIN 1246 001337 6055 DIXY /INTENSIFY 1247 001340 1770 TAD LGSTEP /GET LARGE STEP VALUE FOR CURSOR MOVEMENT 1248 001341 3767 DCA CURSTP /STORE LARGE VALUE AS DEFAULT CURSOR STEP SIZE 1249 001342 1030 TAD LASTX /GET LAST VALUE OF X DISPLAYED 1250 001343 3034 DCA CURSX /AND STORE IT 1251 001344 1031 TAD LASTY /GET LAST VALUE OF Y DISPLAYED 1252 001345 3035 DCA CURSY /AND STORE IT 1253 001346 1351 TAD ASCSP /GET ASCII FOR SPACE 1254 001347 3766 DCA GICHAR /AND STORE IT AS DEFAULT FOR GRAPHIC INPUT CHARACTER 1255 001350 5730 JMP I CURSON /EXIT SUBROUTINE 1256 1257 001351 0240 ASCSP, 240 1258 /TO TRANSMIT-A-CHARACTER-TO-HOST 1259 / REPEAT UNTIL (SOFTWARE TELEPRINTER FLAG SET) 1260 / ////////FIN 1261 / CLEAR SOFTWARE TELEPRINTER FLAG 1262 / TRANSMIT CHARACTER 1263 ////////FIN 1264 1265 1266 1267 1268 001352 0000 XMITEN, 0 1269 001353 3364 DCA CHRHLD /STORE CHARACTER TO BE TRANSMITTED 1270 001354 1047 TAD TENTPF /GET SOFTWARE TELEPRINTER FLAG 1271 001355 7650 SNA CLA /IS FLAG SET? 1272 001356 5354 JMP .-2 /NO; TRY AGAIN 1273 001357 3047 DCA TENTPF /YES; CLEAR FLAG 1274 001360 1364 TAD CHRHLD /GET CHARACTER BACK 1275 001361 6176 TENTLS /AND TRANSMIT IT TO HOST 1276 001362 7200 CLA /CLEAR AC 1277 001363 5752 JMP I XMITEN /AND EXIT SUBROUTINE 1278 1279 001364 0000 CHRHLD, 0 /TEMPPRARY STORAGE FOR CHARACTER TO BE TRANSMITTED 1280 1281 1282 1283 1284 1285 001366 0725 PAGE 001367 0753 001370 0751 001371 0231 001372 2457 001373 2505 001374 2000 001375 1600 001376 0754 001377 1141 1286 IFNZRO PLOTER < 1287 1288 /TO TYPE-A-TEXT-MESSAGE 1289 / DO (I=1,2) 1290 / / GET NEXT WORD FROM TEXT 1291 / / IF (I=2) INTERCHANGE BYTES 1292 / / GET MOST SIGNIFICANT BYTE 1293 / / FIX SEVENTH BIT 1294 / / IF (END OF MESSAGE,I.E.,NULL) EXIT 1295 / / TYPE-CHARACTER 1296 / / IF (I=2) BUMP WORD POINTER 1297 / ////////FIN 1298 / SEND CR AND LF 1299 ////////FIN 1300 1301 1302 1303 1304 001400 0000 TYPTXT, 0 1305 001401 7100 CLL /CLEAR LINK AS LOOP COUNTER 1306 001402 1624 SEC, TAD I TYTXPT /GET WORD CONTAINING TWO CHARACTERS 1307 001403 7430 SZL /DO NOTHING FIRST TIME, BUT 1308 001404 7002 BSW /EXCHANGE BYTES SECOND TIME 1309 001405 0225 AND MSBYTE /MASK THE LEFT-HAND BYTE WHICH IS THE SIXBIT CHARACTER 1310 001406 7540 SMA SZA /SKIP IF SIXTH BIT IS SET OF IF CHAR IS NULL 1311 001407 7001 IAC /ELSE SET 7TH BIT; AT THE MOMENT IT IS IN THE WRONG PLACE 1312 001410 7022 BSW CML /BUT NOW IT AND THE LS SIX BITS ARE ALL PROPERLY 1313 /IN THE 7 LS BITS OF THE 12-BIT WORD; 1314 /ALSO, COMPLEMENT LOOP COUNTER WHILE CONVENIENT 1315 001411 7450 SNA /IS THE CHARACTER A NULL? 1316 001412 5217 JMP END /YES; END OF TEXT SO JUMP TO EXIT 1317 001413 4777 JMS TYPE /NO; GO TYPE THE CHARACTER 1318 001414 7420 SNL /SKIP FIRST TIME THROUGH (COUNTER WAS COMPLEMENTED ALREADY) 1319 001415 2224 ISZ TYTXPT /BUMP TEXT POINTER SECOND TIME ONLY 1320 001416 5202 JMP SEC /LOOP ENDLESSLY; (EXIT UPON FINDING A NULL CHARACTER) 1321 001417 1364 END, TAD CR /EXIT SEQUENCE; GET ASCII FOR CR 1322 001420 4777 JMS TYPE /AND TYPE IT 1323 001421 1776 TAD LF /GET ASCII FOR LF 1324 001422 4777 JMS TYPE /AND TYPE IT 1325 001423 5600 JMP I TYPTXT /EXIT SUBROUTINE 1326 1327 001424 0000 TYTXPT, 0 /STORAGE FOR POINTER TO TEXT 1328 001425 7700 MSBYTE, 7700 /MASK FOR MOST SIGNIFICANT BYTE 1329 /TO WAIT-FOR-USER-RESPONSE 1330 / REMEMBER PEN STATUS 1331 / IF (PEN DOWN) RAISE PEN 1332 / REMEMBER PRESENT PEN LOCATION 1333 / MOVE PEN TO RIGHT MARGIN 1334 / WAIT FOR KEYBOARD ENTRY 1335 / MOVE PEN BACK TO WHERE IT WAS 1336 / RESTORE PEN STATUS 1337 ////////FIN 1338 1339 1340 1341 1342 001426 0000 KBWAIT, 0 1343 001427 6057 DIRE /GET VC8E REGISTER 1344 001430 3252 DCA HOLDDI /AND PUT IT AWAY 1345 001431 1252 TAD HOLDDI /GET IT AGAIN 1346 001432 0025 AND PENUP /CLEAR PEN-DOWN BIT 1347 001433 6056 DILE /AND SET REGISTER TO EFFECT ACTION 1348 001434 4775 JMS WAITPN /WAIT FOR PEN TO MOVE 1349 001435 1030 TAD LASTX /GET PRESENT VALUE OF PEN X COORDINATE 1350 001436 3253 DCA HOLDX /AND STORE IT 1351 001437 1254 TAD L777 /GET X COORDINATE FOR RIGHT MARGIN 1352 001440 6053 DILX /AND LOAD DAC TO MOVE PEN 1353 001441 6031 KSF /HAS A CHARACTER BEEN ENTERED AT KEYBOARD? 1354 001442 5241 JMP .-1 /NO; LOOK AGAIN UNTIL 1355 001443 6030 KCF /IT IS THERE AND THEN LOWER THE FLAG IGNORING THE CHARACTER 1356 001444 1253 TAD HOLDX /GET X COORDINATE BACK 1357 001445 6053 DILX /AND LOAD DAC TO MOVE THE PEN BACK 1358 001446 7200 CLA /CLEAR THE AC SINCE DILX DOESN'T DO IT 1359 001447 1252 TAD HOLDDI /GET BACK VC8E STATUS 1360 001450 6056 DILE /AND RESTORE IT. THIS INCLUDES PEN UP/DOWN INFO 1361 001451 5626 JMP I KBWAIT /EXIT THE SUBROUTINE 1362 1363 001452 0000 HOLDDI, 0 /STORAGE FOR VC8E REGISTER 1364 001453 0000 HOLDX, 0 /STORAGE FOR X COORDINATE OF PEN 1365 001454 0777 L777, 777 /X COORDINATE OF RIGHT-HAND MARGIN 1366 > 1367 /TO RETURN-STATUS-AND-COORDINATES 1368 / UNLESS (GI MODE) SEND STATUS 1369 / SEND HI X 1370 / SEND LO X 1371 / SEND HI Y 1372 / SEND LO Y 1373 / IF (CR TERMINATOR) 1374 / / SEND CR 1375 / / IF (EOT TERMINATOR) SEND EOT 1376 / ////////FIN 1377 ////////FIN 1378 1379 1380 1381 1382 1383 1384 001455 0000 RETCOR, 0 1385 001456 1005 TAD GIMODE /GET GI MODE BIT 1386 001457 0002 AND STATUS /AND MASK IT FROM STATUS WORD 1387 001460 7640 SZA CLA /IS GI MODE SET? 1388 001461 5305 JMP CRSCRD /YES; SKIP STATUS WORD AND SEND COORDINATES ONLY 1389 001462 1004 TAD GRMODE /GET GR MODE BIT 1390 001463 0002 AND STATUS /AND MASK IT FROM STATUS WORD 1391 001464 7640 SZA CLA /IS GR MODE SET? 1392 001465 7001 IAC /YES; SET BIT IN STATUS REPORT CHARACTER 1393 001466 7104 CLL RAL /MOVE BIT LEFT PREPARATORY TO SETTING MARGIN BIT 1394 001467 7421 MQL /STORE STATUS REPORT WORD THAT IS BEING FORMED 1395 001470 1011 TAD MARGIN /GET ALTERNATE MARGIN BIT 1396 001471 0002 AND STATUS /AND MASK IT FROM STATUS WORD 1397 001472 7640 SZA CLA /IS ALTERNATE MARGIN SET? 1398 001473 7001 IAC /YES; SET A BIT 1399 001474 7501 MQA /BRING BACK THE GR MODE BIT 1400 001475 7104 CLL RAL /SHIFT ONCE MORE AND STATUS BITS ARE READY TO SEND TO HOST 1401 001476 1354 TAD GINTAG /ADD THE IDENTIFYING TAG BITS AND THE ENTIRE CHARACTER IS READY TO SEND 1402 001477 4774 JMS XMITEN /SEND THE STATUS CHARACTER 1403 001500 1030 ALCORD, TAD LASTX /GET THE LAST X COORDINATE 1404 001501 3355 DCA CORDX /AND STORE IT AS THE CURSOR COORDINATE 1405 001502 1031 TAD LASTY /GET THE LAST Y COORDINATE 1406 001503 3356 DCA CORDY /AND STORE IT AS THE CURSOR COORDINATE 1407 001504 5311 JMP SENCOR /JUMP OVER THE NEXT FEW LINES 1408 001505 1034 CRSCRD, TAD CURSX /COME HERE IF GI MODE; GET THE LAST CURSOR X COORDINATE 1409 001506 3355 DCA CORDX /AND STORE IT WHERE IT CAN BE FOUND TO SEND 1410 001507 1035 TAD CURSY /LIKEWISE GET THE LAST CURSOR Y COORDINATE 1411 001510 3356 DCA CORDY /AND STORE IT WHERE IT CAN BE FOUND TO SEND 1412 001511 1355 SENCOR, TAD CORDX /NOW GET THE PROPER X COORDINATE 1413 001512 1357 TAD L1000 /RESTORE IT TO THE EXPECTED RANGE 1414 001513 7004 RAL /MOVE IT OVER SO MS 5 BITS IN MS HALF OF WORD 1415 001514 7002 BSW /MOVE THE MS 5 BITS TO THE LS BYTE OF THE WORD 1416 001515 0361 AND FIVBTS /MASK THE 5 LS BITS 1417 001516 1354 TAD GINTAG /ADD THE TAG BITS 1418 001517 4774 JMS XMITEN /AND SEND THE HI HALF OF THE X COORDINATE 1419 001520 1355 TAD CORDX /GET THE X COORDINATE AGAIN 1420 001521 1357 TAD L1000 /RESTORE THE RANGE AGAIN 1421 001522 0361 AND FIVBTS /MASK THE LS 5 BITS 1422 001523 1354 TAD GINTAG /ADD THE TAG BITS 1423 001524 4774 JMS XMITEN /AND SEND THE LO HALF OF THE X COORCINATE 1424 001525 1356 TAD CORDY /GET THE Y COORDINATE 1425 001526 1360 TAD P600 /RESOTRE TO THE EXPECTED RANGE 1426 001527 7004 RAL /MOVE 5 MS BITS TO MS BYTE OF WORD 1427 001530 7002 BSW /MOVE 5 MS BITS TO LS BYTE OF WORD 1428 001531 0361 AND FIVBTS /MASK THE 5 LS BITS 1429 001532 1354 TAD GINTAG /ADD THE TAG BITS 1430 001533 4774 JMS XMITEN /AND SEND THE HIGH HALF OF THE Y COORDINATE 1431 001534 1356 TAD CORDY /GET THE Y COORDINATE AGAIN 1432 001535 1360 TAD P600 /AND RESTORE THE RANGE AGAIN 1433 001536 0361 AND FIVBTS /MASK THE 5 LS BITS 1434 001537 1354 TAD GINTAG /ADD THE TAG BITS 1435 001540 4774 JMS XMITEN /AND SEND THE LO HALF OF THE Y COORDINATE 1436 001541 1363 TAD TRMNTR /GET THE TERMINATOR CODE WORD 1437 001542 7104 CLL RAL /MOVE EOT BIT INTO LINK AND CR BIT INTO SIGN 1438 001543 7650 SNA CLA /IS CR BIT SET? 1439 001544 5353 JMP RETCEX /NO; SKIP TERMINATORS; GO TO END OF ROUTINE 1440 001545 1364 TAD CR /YES; GET ASCII FOR CR 1441 001546 4774 JMS XMITEN /AND SEND IT 1442 001547 7420 SNL /IS EOT BIT SET? 1443 001550 5353 JMP RETCEX /NO; SKIP TO END OF ROUTINE 1444 001551 1362 TAD EOT /YES; GET ASCII FOR EOT 1445 001552 4774 JMS XMITEN /AND SEND IT 1446 001553 5655 RETCEX, JMP I RETCOR /LEAVE SUBROUTINE 1447 1448 001554 0240 GINTAG, 240 /TAG BITS FOR STATUS AND COORDINATE RETURN CHARACTERS 1449 001555 0000 CORDX, 0 /STORAGE FOR PROPER (ALPHANUMERIC OF GRAPHIC) CURSOR X COORDINATE 1450 001556 0000 CORDY, 0 /DITTO FOR Y COORDINATE 1451 001557 1000 L1000, 1000 /SCALE RESTORATION FACTOR; SOFTWARE X COORDINATES RANGE FROM 0-1777; 1452 /HARDWARE COORDINATES ARE SET FOR -1000 TO 777 BY HARDWARE JUMPER 1453 001560 0600 P600, 600 /SCALE RESTORATION FACTOR; SOFTWARE Y COORDINATES RANGE FROM 780 TO 0 1454 /HARDWARE COORDINATES RANGE FROM -1000 TO 777 BY HARDWARE JUMPER 1455 001561 0037 FIVBTS, 37 /MASK FOR 5 LS BITS 1456 001562 0204 EOT, 204 /ASCII FOR EOT 1457 001563 2000 TRMNTR, 2000 /TERMINATOR CODE SET BY USER; BIT 0 SET FOR EOT; BIT 1 SET FOR CR 1458 001564 0215 CR, 215 /ASCII FOR CR 1459 /TO PAGE- 1460 / ERASE- 1461 / RESET- 1462 ////////FIN 1463 1464 1465 001565 0000 NEWPAG, 0 1466 001566 4773 JMS ERASE /ERASE SCREEN 1467 001567 4772 JMS RESET /RESET 1468 001570 5765 JMP I NEWPAG /LEAVE NEW PAGE SUBROUTINE 1469 1470 1471 001572 0762 PAGE 001573 0234 001574 1352 001575 1760 001576 2365 001577 0754 1472 1473 /TO TREAT-COORDINATE-CHARACTER 1474 / WHEN (HI) 1475 / / WHEN (LAST=X) SET HI Y 1476 / / ELSE SET HI X 1477 / ////////FIN 1478 / ELSE 1479 / / WHEN (Y) SET LO Y 1480 / / ELSE 1481 / / / SET LO X 1482 / / / DISPLAY-VECTOR 1483 / / ////////FIN 1484 / ////////FIN 1485 / UPDATE LAST 1486 ////////FIN 1487 1488 001600 0000 COORD, 0 1489 001601 1777 TAD HOCHAR /GET CHARACTER RECEIVED FROM HOST 1490 001602 0257 AND LOBIT /MASK THE LO BIT 1491 001603 7640 SZA CLA /IS IT A LO HALF OF A COORDINTAE? 1492 001604 5227 JMP LO /YES; JUMP AHEAD 1493 001605 1263 TAD LAST /NO; SO IT MUST BE A HI HALF; GET LAST FLAG 1494 001606 7640 SZA CLA /WAS LAST CHARACTER AN X COORDINATE? 1495 001607 5221 JMP SETHIX /NO; THE PRESENT CHARACTER IS THE HI HALF OF AN X COORDINATE 1496 001610 4266 JMS FIXHI /YES; THE PRESENT CHARACTER IS THE HI HALF OF A Y COORDINATE 1497 /GO TO A SUBROUTINE THAT FIXES THE CHARACTER AS A HI HALF 1498 001611 1033 TAD NEWY /GET THE HOLDING REGISTER FOR Y COORDINATES BEING FORMED 1499 001612 0265 AND LS5BTS /MASK THE 5 LS BITS 1500 001613 7501 MQA /AND BRING IN THE 5 MS BITS WHICH WERE STORED IN MQ BY THE SUBROUTINE FIXHI 1501 001614 1260 TAD M600 /OFFSET PROPERLY FOR THE HARDWARE 1502 001615 3033 DCA NEWY /STORE THE RESULTING Y COORDINATE 1503 001616 7001 IAC /SET THE AC 1504 001617 3263 DCA LAST /AND SET THE LAST = Y FLAG 1505 001620 5256 JMP COOREX /AND EXIT THE SUBROUTINE 1506 001621 4266 SETHIX, JMS FIXHI /GO TO A SUBROUTINE THAT FIXES THE CHARACTER AS A HI HALF 1507 001622 7501 MQA /BRING THE HI HALF INTO THE AC 1508 001623 1261 TAD M1000 /SET THE OFFSET EXPECTED BY THE HARDWARE 1509 001624 3032 DCA NEWX /AND STORE THE COORDINTE THAT IS BEING FORMED 1510 001625 3263 DCA LAST /CLEAR THE LAST = Y FLAG 1511 001626 5256 JMP COOREX /AND EXIT THE SUBROUTINE 1512 001627 1777 LO, TAD HOCHAR /CHARACTER IS THE LO HALF OF A COORDINATE; GET CHARACTER AGAIN 1513 001630 0262 AND YBIT /MASK THE Y BIT 1514 001631 7650 SNA CLA /IS THE Y BIT SET? 1515 001632 5245 JMP LOX /NO; SO IT MUST BE LO X 1516 001633 1777 TAD HOCHAR /YES; IT IS LO Y; GET THE CHARACTER AGAIN 1517 001634 0265 AND LS5BTS /MASK THE 5 LS BITS 1518 001635 7421 MQL /PUT THEM IN MQ 1519 001636 1033 TAD NEWY /GET THE MS 5 BITS AND OFFSET 1520 001637 0264 AND MS7BTS /MASK OUT ALL OLD JUNK 1521 001640 7501 MQA /AND SET THE LS BITS 1522 001641 3033 DCA NEWY /AND STORE THE COMPLETED COORDINATE 1523 001642 7001 IAC /SET THE AC 1524 001643 3263 DCA LAST /AND THE LAST = Y FLAG 1525 001644 5256 JMP COOREX /EXIT THE SUBROUTINE 1526 001645 1032 LOX, TAD NEWX /GET THE X COORDINTAE THAT IS BEING FORMED 1527 001646 0264 AND MS7BTS /CANCEL OUT ALL THE OLD JUNK IN THE LS 5 BITS 1528 001647 7421 MQL /STORE THE HI 5 BITS AND OFFSET IN THE MQ 1529 001650 1777 TAD HOCHAR /GET THE CHARACTER AGAIN 1530 001651 0265 AND LS5BTS /MASK THE 5 LS BITS 1531 001652 7501 MQA /AND BRING BACK THE HI HALF AND OFFSET FROM THE MQ 1532 001653 3032 DCA NEWX /STORE THE COMPLETE X COORDINATE 1533 001654 3263 DCA LAST /CLEAR THE LAST = Y FLAG 1534 001655 4275 JMS DISVEC /ALL COORDINATE SETS END WITH LO X SO GO DISPLAY THE VECTOR 1535 001656 5600 COOREX, JMP I COORD /AND LEAVE THE SUBROUTINE 1536 1537 001657 0100 LOBIT, 100 /BIT IDENTIFYING THE LO HALF OF A COORDINATE PAIR 1538 001660 7200 M600, -600 /OFFSET FOR Y COORDINATES; (SEE SUBROUTINE RETCOR (ABOVE)) 1539 001661 7000 M1000, -1000 /OFFSET FOR X COORDINATES; (SEE SUBROUTINE RETCOR (ABOVE)) 1540 001662 0040 YBIT, 40 /A BIT IDENTIFYING THE CHARACTER AS PART OF A Y COORDINATE 1541 001663 0000 LAST, 0 /=1 IF LAST CHARACTER RECEIVED AND TREATED WAS PART OF A Y COORDINAAE 1542 001664 7740 MS7BTS, 7740 /MASK FOR THE MS 7 BITS 1543 001665 0037 LS5BTS, 37 /MASK FOR THE LS 5 BITS 1544 1545 1546 001666 0000 FIXHI, 0 /A SUBROUTINE TO STRIP THE COORDINATE BITS FROM A HI CHARACTER 1547 /SHIFT THEM TO THE RIGHT LOCATION, AND STORE IN MQ 1548 001667 1777 TAD HOCHAR /GET THE CHARACTER THAT WAS RECEIVED FROM HOST 1549 001670 0265 AND LS5BTS /MASK OUT THE COORDINATE BITS (FROM TAG BITS, ETC.) 1550 001671 7002 BSW /MOVE THEM LEFT 6 PLACES 1551 001672 7110 CLL RAR /AND RIGHT ONE PLACE; NET = LEFT 5 PLACES 1552 001673 7421 MQL /PUT THE RESULT IN MQ 1553 001674 5666 JMP I FIXHI /AND RETURN 1554 1555 /TO DISPLAY-VECTOR 1556 / IF (HC MODE) FIX-PEN 1557 / WHEN (LIGHT VECTOR) USE VECTOR SUBROUTINE 1558 / ELSE 1559 / / UNLESS (HC MODE) MOVE BEAM INSTANTLY 1560 / ////////FIN 1561 / UPDATE LAST X, LAST Y 1562 / SET LIGHT VECTOR 1563 ////////FIN 1564 1565 1566 1567 1568 1569 1570 001675 0000 DISVEC, 0 1571 IFNZRO PLOTER < 1572 001676 1006 TAD HCMODE /GET HC MODE BIT 1573 001677 0002 AND STATUS /AND MASK FROM STATUS WORD 1574 001700 7650 SNA CLA /IS HC MODE SET? 1575 001701 5304 JMP .+3 /NO; SKIP PEN STUFF 1576 001702 4332 JMS FIXPEN /YES; FIS PEN AS NECESSARY 1577 001703 5317 JMP GOVECT /AND GO TO THE VECTOR DRAWING PART 1578 > 1579 001704 4776 JMS ACRSOF /HC MODE NOT SET; TURN THE AN CURSOR OFF 1580 001705 1043 TAD DKVECT /GET THE DARK VECTOR FLAG 1581 001706 7650 SNA CLA /IS IT A DARK (INVISIBLE) VECTOR? 1582 001707 5317 JMP GOVECT /NO; GO TH THE VECTOR DRAWING PART 1583 001710 1032 TAD NEWX /YES; GET THE NEW X 1584 001711 6053 DILX /AND LOAD THE DAC INSTANTLY 1585 001712 7200 CLA /DILX DOES NOT CLEAR AC SO DO IT 1586 001713 1033 TAD NEWY /GET THE NEW Y 1587 001714 6054 DILY /AND LOAD THE Y DAC 1588 001715 7200 CLA /CLEAR AC AGAIN 1589 001716 7410 SKP /SKIP THE VECTOR DRAWING ROUTINE SINCE THE VECTOR IS DARK 1590 001717 4775 GOVECT, JMS VECT /THE VECTOR IS LIGHT (DISPLAYED) SO GO DRAW IT 1591 001720 1032 TAD NEWX /UPDATE SOME REGISTERS 1592 001721 3030 DCA LASTX 1593 001722 1033 TAD NEWY 1594 001723 3031 DCA LASTY 1595 IFNZRO PLOTER < 1596 001724 1006 TAD HCMODE /GET HC MODE BIT 1597 001725 0002 AND STATUS /AND MASK IT FROM STATUS WORD 1598 001726 7650 SNA CLA /IS HC MODE SET? 1599 > 1600 001727 4774 JMS ACRSON /NO; TURN AN CURSOR BACK ON 1601 001730 3043 DCA DKVECT /BECAUSE A VECTOR WAS JUST DISPLAYED, NEXT VECTOR SHOULD ALSO BE 1602 /DISPLAYED UNLESS THIS FLAG IS TURNED OFF ELSEWHERE 1603 001731 5675 JMP I DISVEC /LEAVE THE SUBROUTINE 1604 IFNZRO PLOTER < 1605 /TO FIX-PEN 1606 / WHEN (DARK VECTOR) 1607 / / IF (DOWN) RAISE PEN 1608 / ////////FIN 1609 / ELSE 1610 / / IF (UP) LOWER PEN 1611 / ////////FIN 1612 ////////FIN 1613 1614 1615 1616 1617 1618 1619 001732 0000 FIXPEN, 0 1620 001733 1043 TAD DKVECT /GET DARK VECTOR FLAG 1621 001734 7650 SNA CLA /IS DARK VECTOR FLAG SET: 1622 001735 5347 JMP LTVECT /NO; SO VECTOR IS TO BE DISPLAYED 1623 001736 6057 DIRE /YES; VECTOR IS NOT TO BE DISPLAYED; GET VC8E REGISTER 1624 001737 0024 AND PEN /MASK THE PEN BIT 1625 001740 7650 SNA CLA /IS PEN ALREADY UP? 1626 001741 5357 JMP FIXEX /YES; NOTHING TO DO SO LEAVE 1627 001742 6057 DIRE /NO; GET VC8E REGISTER AGAIN 1628 001743 0025 AND PENUP /AND MASK ALL BITS EXCEPT PEN BIT (I.E., CLEAR PEN BIT) 1629 001744 6056 DILE /AND RESTORE VC8E REGISTER TO INITIATE PEN CHANGE 1630 001745 4360 JMS WAITPN /JUMP TO A SOFTWARE TIMING LOOP TO WAIT FOR PEN CHANGE 1631 001746 5357 JMP FIXEX /AND LEAVE THE SUBROUTINE 1632 001747 6057 LTVECT, DIRE /VECTOR IS TO BE DISPLAYED; PEN MUST BE DOWN; GET VC8E REGISTER 1633 001750 0024 AND PEN /MASK THE PEN BIT 1634 001751 7640 SZA CLA /IS PEN ALREADY DOWN? 1635 001752 5357 JMP FIXEX /YES; NOTHING TO DO SO LEAVE THE SUBROUTINE 1636 001753 6057 DIRE /NO; IT MUST BE LOWERED; GET VC8E REGISTER 1637 001754 1024 TAD PEN /ADD THE PEN DOWN BIT 1638 001755 6056 DILE /AND RESTORE VC8E REGISTER TO INITIATE PEN CHANGE 1639 001756 4360 JMS WAITPN /WAIT IN A SOFTWARE TIMING LOOP UNTIL PEN IS CHANGED 1640 001757 5732 FIXEX, JMP I FIXPEN /EXIT FROM PEN FIX SUBROUTINE 1641 1642 001760 0000 WAITPN, 0 /A SOFTWARE TIMING LOOP TO WAIT FOR PEN CHANGE 1643 001761 1040 TAD PENTIM /GET TIMING CONSTANT SET BY USER ON PAGE ZERO 1644 001762 3366 DCA WAIT /STORE LOCALLY 1645 001763 2366 ISZ WAIT /INCREMENT COUNTER 1646 001764 5363 JMP .-1 /GO BACK AS OFTEN AS NECESSARY UNTIL COUNTER IS SATISFIED 1647 001765 5760 JMP I WAITPN /THEN LEAVE LOOP AND LEAVE TIMING SUBROUTINE 1648 1649 001766 0000 WAIT, 0 /LOCAL STORAGE OF LOOP COUNTER 1650 > 1651 1652 1653 1654 001774 2457 PAGE 001775 2600 001776 2505 001777 1141 1655 /TO PRINT-CHARACTER 1656 / UNLESS (RUBOUT) 1657 / / WHEN (ALTAN) 1658 / / / TYPE-CHARACTER 1659 / / / INCREMENT CHARACTER COUNT 1660 / / / IF (CHARACTER COUNT > TTY WIDTH) NEXTLINE- 1661 / / ////////FIN 1662 / / ELSE 1663 / / / WHEN (SCOPE) 1664 / / / / POINT TO CHARACTER IN TABLE 1665 / / / / DISPLAY-CHARACTER 1666 / / / ////////FIN 1667 / / / ELSE 1668 / / / / POINT TO CHARACTER IN TABLE 1669 / / / / PLOT-CHARACTER 1670 / / / ////////FIN 1671 / / / INCREMENT CHARACTER COUNT 1672 / / / IF (CHARACTER COUNT > DISPLAY WIDTH) NEXTLINE- 1673 / / ////////FIN 1674 / ////////FIN 1675 ////////FIN 1676 1677 1678 1679 1680 1681 1682 002000 0000 PRCHAR, 0 1683 002001 1777 TAD HOCHAR /GET CHARACTER THAT WAS RECEIVED FROM HOST 1684 002002 1260 TAD MRO /SUBTRACT ASCII FOR RO 1685 002003 7650 SNA CLA /IS IT RO? 1686 002004 5257 JMP PREXIT /YES; IGNORE IT 1687 002005 1007 TAD ALTAN /NO; GET ALTERNATE ALPHANUMERIC DEVICE BIT 1688 002006 0002 AND STATUS /AND MASK FROM STATUS WORD 1689 002007 7650 SNA CLA /IS IT SET? 1690 002010 5215 JMP NOTTTY /NO; DEVICE IS NOT ALT AN DEVICE (TTY) 1691 002011 1777 TAD HOCHAR /YES; GET THE CHARACTER AGAIN 1692 002012 4776 JMS TYPE /AND TYPE IT ON THE ALTERNATE AN DEVICE (CONSOLE TTY) 1693 002013 1041 TAD MTTWID /GET NEGATIVE OF TTY LINE WIDTH (SET BY USER ON PAGE ZERO) 1694 002014 5253 JMP PRCHEX /AND GO CHECK AGAINST ACTUAL CHARACTER COUNT 1695 1696 002015 1777 NOTTTY, TAD HOCHAR /GET CHARACTER AGAIN 1697 002016 1265 TAD M40 /SUBTRACT 40 FROM ASCII VALUE OF CHARACTER TO GET PLACE VALUE IN TABLE 1698 /(FIRST 0-37 CHARACTERS ARE NON-PRINTING, SO THEY DO NOT EXIST IN TABLE) 1699 002017 0266 AND MASK7 /MASK ALL BUT THE TABLE PLACE BITS 1700 002020 3267 DCA TABPOS /STORE TABLE PLACE VALUE 1701 IFNZRO PLOTER < 1702 002021 1006 TAD ALTDIS /GET ALTERNATE DISPLAY (PLOTTER) BIT 1703 002022 0002 AND STATUS /AND MASK IT FROM STATUS WORD 1704 002023 7640 SZA CLA /IS ALTERNATE DISPLAY (PLOTTER) BIT SET? 1705 002024 5240 JMP PLTER /YES; GO TO THE PLOTTER PART 1706 > 1707 002025 1010 TAD ALTCHR /NO; GET ALTERNATE CHARACTER SET BIT 1708 002026 0002 AND STATUS /AND MASK FROM STATUS WORD 1709 002027 7640 SZA CLA /IS ALTERNATE CHARACTER SET REQUIRED? 1710 002030 1261 TAD PNTOF /YES; ADD ADDITIONAL OFFSET FOR DOT CHARACTER TABLE 1711 002031 1267 TAD TABPOS /TO THE PREVIOUSLY STOREC TABLE PLACE VALUE 1712 002032 7104 CLL RAL /JUGGLE SOME MORE TO FIX IT RIGHT 1713 002033 1267 TAD TABPOS /AND JUGGLE SOME MORE 1714 002034 1262 TAD DOTTBP /AND ADD THE POINTER TO THE BEGINNING OF THE TABLE 1715 002035 3044 DCA PNTTAB /STORE THE POINTER TO THE CHARACTER IN THE DOT TABLE 1716 002036 4270 JMS DICHAR /GO DISPLAY THE CHARACTER 1717 IFNZRO PLOTER < 1718 002037 5252 JMP PRCHEX-1 /AND PREPARE TO LEAVE THE PRINT SUBROUTINE 1719 1720 002040 1010 PLTER, TAD ALTCHR /CHARACTER IS TO BE PRINTED ON PLOTTER; GET ALTERNATE CHARACTER SET BIT 1721 002041 0002 AND STATUS /AND MASK IT FROM STATUS WORD 1722 002042 7640 SZA CLA /IS ALTERNATE CHARACTER SET REQUIRED? 1723 002043 1263 TAD VECOF /YES; GET OFFSET FACTOR FOR ALT CHAR SET IN VECTOR TABLE 1724 002044 1267 TAD TABPOS /ADD TO PREVIOUSLY STOREC TABLE POSITION VALUE 1725 002045 1264 TAD VECTBP /AND ADD POINTER TO BEGINNING OF VECOTR TABLE 1726 002046 3044 DCA PNTTAB /AND STORE POINTER TO CHARACTER IN VECTOR TABLE 1727 002047 1444 TAD I PNTTAB /VECTOR TABLE IS DOUBLY INDEXED SO USE POINTER AS A POINTER TO 1728 002050 3044 DCA PNTTAB /A POINTER AND SET UP CHARACTER POINTER CORRECTLY 1729 002051 4775 JMS PLCHAR /NOW GO PLOT THE CHARACTER 1730 > 1731 002052 1042 TAD MDIWID /GET THE NEGATIVE OF THE MAXIMUM CHARACTER COUNT ON THE DISPLAY DEVICE 1732 002053 2045 PRCHEX, ISZ CHARCT /INCREMENT THE CHARACTER COUNTER 1733 002054 1045 TAD CHARCT /COMPARE THE CURRENT CHARACTER COUNT WITH THE MAXIMUM VALUE 1734 002055 7700 SMA CLA /IS MAXIMUM EXCEEDED? 1735 002056 4774 JMS NXTLIN /YES; GO TO THE NEXT LINE 1736 002057 5600 PREXIT, JMP I PRCHAR /NO; EXIT THE SUBROUTINE 1737 1738 002060 7401 MRO, -377 /NEGATIVE OF ASCII FOR RO 1739 002061 0220 PNTOF, 220 /A CONSTANT USED IN CALCULATING OFFSET IN THE DOT TABLE 1740 002062 3200 DOTTBP, DOTTAB /POINTER TO THE BEGINNING OF THE DOT TABLE 1741 IFNZRO PLOTER < 1742 002063 0140 VECOF, 140 /A CONSTANT USED IN CALCULATING OFFSET IN THE VECTOR TABLE 1743 002064 4300 VECTBP, VECTAB /POINER TO BEGINNING OF VECTOR TABLE 1744 > 1745 002065 7740 M40, -40 /CONSTANT TO SUBTRACT TO ACCOUNT FOR NON-PRINTING (CONTROL) CHARACTERS 1746 002066 0177 MASK7, 177 /MASK FOR 7 LS BITS 1747 002067 0000 TABPOS, 0 /VALUE OF CHARACTER POISTION IN TABLE 1748 /TO DISPLAY-CHARACTER 1749 / IF (SUBSCRIPT) SHIFT DOWN 1750 / REPEAT UNTIL (ALL BITS USED) 1751 / / GET BIT 1752 / / IF (BIT SET) DISPLAY-POINT 1753 / / IF (12 BITS) 1754 / / / IF (3 WORDS) 1755 / / / / MOVE TO NEW CHARACTER START POSITION 1756 / / / / EXIT THE ROUTINE 1757 / / / ////////FIN 1758 / / / NEW WORD 1759 / / / RESET 12 BITS PER WORD COUNTER 1760 / / ////////FIN 1761 / / WHEN (<7 BITS) INCREMENT Y 1762 / / ELSE 1763 / / / RESET 7 BITS PER COLUMN COUNTER 1764 / / / INCREMENT X 1765 / / ////////FIN 1766 / ////////FIN 1767 ////////FIN 1768 1769 1770 002070 0000 DICHAR, 0 1771 002071 5773 JMP SETDOT /OUT OF SPACE ON THIS PAGE SO GO TO A SMALL PART ELSEWHERE 1772 002072 1444 TAD I PNTTAB /GET FIRST WORD OF CHARACTER DOT MATRIX INFORMATION 1773 002073 7710 SPA CLA /IS FIRST BIT SET: 1774 002074 1362 TAD M6 /YES; CHARACTER IS SUBSCRIPTED; ADD -6 TO Y COORDINATE 1775 002075 1031 TAD LASTY /ADD Y COORDINATE OF BEGINNING OF CHARACTER 1776 002076 3355 DCA BASEY /AND STORE AS A BASE LINE VALUE FOR THE CCARACTER 1777 002077 1355 TAD BASEY /GET THE BASELINE VALUE BACK 1778 002100 3357 DCA RUNY /AND STORE IT AS A RUNNING VALUE FOR Y COORD@NATE 1779 002101 1030 TAD LASTX /GET THE INITIAL VALUE FOR THE X COORDINATE OF THE CHARACTER 1780 002102 3356 DCA RUNX /AND STORE IT AS A RUNNING VALUE FOR X COORDINATE 1781 002103 1363 TAD M7 /GET A MINUS 7 1782 002104 3366 DCA COUNT7 /AND STORE IT AS A COUNTER FOR 7 DOT POSITIONS PER COLUMN 1783 002105 1361 TAD M3 /GET A MINUS 3 1784 002106 3365 DCA COUNT3 /AND STORE IT AS A COUNTER FOR 3 12-BIT WORDS PER 35 BIT CHARACTER 1785 002107 1364 TAD M14 /GET A MINUS 12 (DECIMAL) 1786 002110 3367 DCA COUN14 /AND STORE IT AS A COUNTER FOR 12 BITS PER WORD 1787 002111 1444 TAD I PNTTAB /GET THE WORD POINTED TO IN THE TABLE 1788 002112 7104 CLL RAL /MOVE THE SUBSCRIPT BIT OUT AND MOVE THE FIRST BIT TO SIGN 1789 002113 3370 DCA SHREG /STORE THE SHIFTED WORD 1790 002114 2367 ISZ COUN14 /INCREMENT THE BITS PER WORD COUNTER 1791 002115 1370 DOTLOP, TAD SHREG /GET THE SHIFTED DOT INFORMATION 1792 002116 7104 CLL RAL /SHIFT THE NEXT DOT BIT TO THE LINK 1793 002117 3370 DCA SHREG /AND STORE THE SHIFTED WORD AGAIN 1794 002120 7430 SZL /IS BIT SET? 1795 002121 4772 JMS DISPPT /YES; GO DISPLAY A POINT 1796 002122 2367 ISZ COUN14 /INCREMENT THE BITS PER WORD COUNTER 1797 002123 5340 JMP NOT14 /IF THE WORD IS NOT FININSHED, SKIP THE TERMINATE STUFF 1798 002124 2365 ISZ COUNT3 /ALL 12 BITS HAVE BEEN TAKEN OUT OF A WORD SO INCREMENT 1799 /THE WORDS PER CHARACTER COUNTER 1800 002125 5333 JMP NOT3 /IF THREE WORDS HAVE NOT BEEN USED UP, SKIP THE TERMINATE CHARACTER STUFF 1801 002126 1360 TAD D14 /ALL 3 WORDS HAVE BEEN USED AND CHARACTER IS COMPLETE SO 1802 /GET A (DECIMAL) 14 TO 1803 002127 1030 TAD LASTX /ADD TO THE BEGINNING X COORDINATE 1804 002130 3030 DCA LASTX /AND STORE THE VALUE AS THE BEGINNING COORDINATE OF THE NEXT CHARACTER 1805 002131 4771 JMS ACRSON /TURN THE ALPHANUMERIC CURSOR ON 1806 002132 5670 JMP I DICHAR /AND LEAVE THE SUBROUTINE 1807 1808 002133 2044 NOT3, ISZ PNTTAB /POINT TO THE NEXT WORD IN THE DOT TABLE 1809 002134 1444 TAD I PNTTAB /AND GET IT 1810 002135 3370 DCA SHREG /AND STORE IT IN THE SHIFT REGISTER 1811 002136 1364 TAD M14 /GET THE VALUE TO 1812 002137 3367 DCA COUN14 /RESET THE BITS PER WORD COUNTER 1813 1814 002140 2366 NOT14, ISZ COUNT7 /INCREMENT THE BITS PER COLUMN COUNTER 1815 002141 5351 JMP NOT7 /NOT YET 7 BITS THIS COLUMN SO SKIP THE COLUMN TERMINATE STUFF 1816 002142 1363 TAD M7 /7 BITS HAVE BEEN USED IN THIS COLUMN SO GET A MINUS 7 1817 002143 3366 DCA COUNT7 /TO RESET THE COUNTER 1818 002144 7305 CLA CLL IAC RAL /SET AC=2 1819 002145 1356 TAD RUNX /ADD TO RUNNING X COORDINTE 1820 002146 3356 DCA RUNX /TO FORM NEW RUNNING X COORDINATE 1821 002147 1355 TAD BASEY /GET BASE VALUE FOR Y COORDINATE 1822 002150 5353 JMP .+3 /SKIP THIS STUFF FROM ANOTHER BRANCH 1823 1824 002151 7305 NOT7, CLA CLL IAC RAL /NOT AT END OF COLUMN SO ADD 2 1825 002152 1357 TAD RUNY /TO THE RUNNING Y COORDINATE 1826 002153 3357 DCA RUNY /AND SET NEW RUNNING Y 1827 002154 5315 JMP DOTLOP /AND GO THROUGH THE CHECK IF BIT SET AND INTENSIFY LOOP AGAIN 1828 1829 002155 0000 BASEY, 0 /THE Y COORDINATE OF THE LOWER LEFT CORNER OF THE CHARACTER 1830 002156 0000 RUNX, 0 /THE X COORDINATE OF THE DOT IN THE 5 X 7 MATRIX THAT IS BEING CONSIDERED NOW 1831 002157 0000 RUNY, 0 /THE Y COORDINATE OF THE DOT IN THE 5 X 7 MATRIX THAT IS BEING CONSIDERED NOW 1832 002160 0016 D14, 16 /DECIMAL 14: THE WIDTH OF THE CHARACTER CELL 1833 002161 7775 M3, -3 /TO RESET THE 3 WORDS PER CHARACTER COUNTER 1834 002162 7772 M6, -6 /TO DEPRESS THE CHARACTER CELL 6 UNITS IF THE CHARACTER IS PRINTED BELOW THE LINE 1835 002163 7771 M7, -7 /TO RESET THE 7 DOTS PER COLUMN COUNTER 1836 002164 7764 M14, -14 /MINUS (DECIMAL) 12 TO RESET THE 12 BITS PER WORD COUNTER 1837 002165 0000 COUNT3, 0 /THE WORDS PER CHARACTER COUNTER 1838 002166 0000 COUNT7, 0 /THE BITS PER COLUMN COUNTER 1839 002167 0000 COUN14, 0 /THE BITS PER WORD WOUNTER 1840 002170 0000 SHREG, 0 /TEMPORARY HOLDING FOR THE TABLE WORD AS THE BITS ARE BEING UNPACKED 1841 1842 002171 2457 PAGE 002172 2204 002173 2200 002174 2265 002175 2233 002176 0754 002177 1141 1843 1844 002200 3231 SETDOT, DCA LX /BECAUSE THIS IS A NEW CHARACTER, CLEAR THE VALUE REMEMBERED FOR 1845 002201 3232 DCA LY /THE LAST VALUES OF THE X AND Y DAC'S 1846 002202 4777 JMS ACRSOF /TURN THE ALPHANUMERIC CURSOR OFF 1847 002203 5776 JMP DICHAR+2 /AND RETURN TO THE PART ON THE PREVIOUS PAGE 1848 /TO DISPLAY-A-POINT 1849 / IF (NEW VALUE FOR Y) SET Y DAC 1850 / IF (NEW VALUE FOR X) SET X DAC 1851 / INTENSIFY 1852 ////////FIN 1853 1854 002204 0000 DISPPT, 0 1855 002205 1775 TAD RUNY /GET PRESENT Y COORDINATE FOR POINT 1856 002206 7041 CIA /AND SUBTRACT IT FROM 1857 002207 1232 TAD LY /THE LAST VALUE SET IN THE Y DAC 1858 002210 7650 SNA CLA /IS IT THE SAVME? 1859 002211 5215 JMP .+4 /YES; SKIP AHEAD 1860 002212 1775 TAD RUNY /NO; GET THE PRESENT Y VALUE 1861 002213 6054 DILY /LOAD IT IN THE Y DAC 1862 002214 3232 DCA LY /AND REMEMBER IT 1863 1864 002215 1774 TAD RUNX /GET PRESENT X COORDINATE FOR POINT 1865 002216 7041 CIA /AND SUBTRACT IT FROM 1866 002217 1231 TAD LX /THE LAST VALUE SET IN THE X DAC 1867 002220 7650 SNA CLA /IS IT THE SAME? 1868 002221 5225 JMP .+4 /YES; SKIP AHEAD 1869 002222 1774 TAD RUNX /NO; GET THE PRESENT X VALUE 1870 002223 6053 DILX /LOAD IT IN THE X DAC 1871 002224 3231 DCA LX /AND REMEMBER IT 1872 1873 002225 6052 DISD /ARE THE DAC'S SETTLED? 1874 002226 5225 JMP .-1 /NO; TRY AGAIN 1875 002227 6055 DIXY /YES; INTENSIFY THE POINT 1876 002230 5604 JMP I DISPPT /AND LEAVE THE SUBROUTINE 1877 1878 002231 0000 LX, 0 /THE LAST VALUE SET IN THE X DAC 1879 002232 0000 LY, 0 /THE LAST VALUE SET IN THE Y DAC 1880 IFNZRO PLOTER < 1881 /TO PLOT-CHARACTER 1882 / GET COORDINATE WORD 1883 / REPEAT UNTIL (FIRST WORD OF NEXT CHARACTER) 1884 / / SET UP X COORDINATE OF VECTOR 1885 / / SET UP Y COORDINATE OF VECTOR 1886 / / IF (DARK VECTOR) SET DARK VECTOR FLAG 1887 / / DISPLAY-VECTOR 1888 / / GET NEXT COORDINATE WORD 1889 / ////////FIN 1890 ////////FIN 1891 1892 1893 002233 0000 PLCHAR, 0 1894 002234 1444 TAD I PNTTAB /GET WORD CONTAINING VECTOR COORDINATES FROM TABLE 1895 002235 7002 NXTVEC, BSW /INTERCHANGE BYTES 1896 002236 7510 SPA /IS BIT 6 OF ORIGINAL WORD SET? 1897 002237 2043 ISZ DKVECT /YES; VECTOR IS DARK SO SET FLAG 1898 002240 7110 CLL RAR /MOVE SIGN BIT TO LINK AND SET COORDINATE VALUES UP PROPERLY 1899 002241 0264 AND LS4BTS /MASK THE COORDINATE INFORMATION 1900 002242 7430 SZL /IS THE NEGATIVE BIT SET? 1901 002243 7041 CIA /YES; NEGATE THE RELATIVE COORDINATE AND THEN 1902 002244 1030 TAD LASTX /ADD THE LAST VALUE TO THE NEW (RELATIVE) COORDINATE 1903 002245 3032 DCA NEWX /STORE THE VALUE AS THE NEW X COORDINATE 1904 002246 1444 TAD I PNTTAB /GET THE COORDINATE WORD AGAIN 1905 002247 7110 CLL RAR /MOVE THE SIGN BIT TO THE LINK AND SET UP THE COORDINATE INFO PROPERLY 1906 002250 0264 AND LS4BTS /MASK THE COORDINATE INFORMATION 1907 002251 7430 SZL /IS THE NEGATIVE BIT SET? 1908 002252 7041 CIA /YES; NEGATE THE RELATIVE COORDINATE AND THEN 1909 002253 1031 TAD LASTY /ADD THE LAST VALUE TO THE NEW (RELATIVE) COORDINATE 1910 002254 3033 DCA NEWY /AND STORE THE VALUE AS THE NEW Y COORDINATE 1911 002255 4773 JMS DISVEC /NOW GO DISPLAY THE VECTOR 1912 002256 2044 ISZ PNTTAB /POINT TO THE NEXT WORD (COORDINATE PAIR) 1913 002257 1444 TAD I PNTTAB /GET IT 1914 002260 7500 SMA /IS IT THE FIRST WORD OF THE NEXT CHARACTER? 1915 002261 5235 JMP NXTVEC /NO; IT IS THE NEXT VECTOR OF THIS CHARACTER SO TREAT IT AS SUCH 1916 002262 7200 CLA /YES; CLEAR THE AC 1917 002263 5633 JMP I PLCHAR /AND LEAVE THE SUBROUTINE 1918 1919 002264 0017 LS4BTS, 17 /MASK FOR THE LEAST SIGNIFICANT 4 BITS (THE COORDINATE INFO) 1920 1921 1922 1923 1924 /TO NEXTLINE- 1925 / LINEFEED- 1926 / MARGIN- 1927 ////////FIN 1928 1929 1930 002265 0000 NXTLIN, 0 1931 002266 4271 JMS LINFED /LINEFEED 1932 002267 4772 JMS GOMARG /GO TO MARGIN 1933 002270 5665 JMP I NXTLIN /LEAVE THE SUBROUTINE 1934 /TO LINEFEED- 1935 / WHEN (TTY) MOVE DOWN ONE LINE 1936 / ELSE 1937 / / COUNT LINE 1938 / / WHEN (LINE # < 35) MOVE DOWN ONE LINE 1939 / / ELSE 1940 / / / CHANGE MARGIN 1941 / / / MOVE TO LINE 1 1942 / / / WHEN (MARGIN 1) 1943 / / / / WHEN (CHARACTER COUNT > 37) 1944 / / / / / SET CHARACTER COUNT = 37 1945 / / / / / X COORDINATE = 0 1946 / / / / ////////FIN 1947 / / / / ELSE 1948 / / / / / SET CHARACTER COUNT = CHARACTER COUNT + 37 1949 / / / / / SET X COORDINATE = LAST X COORDINATE + 1000 1950 / / / / ////////FIN 1951 / / / ////////FIN 1952 / / / ELSE 1953 / / / / SET CHARACTER COUNT = CHARACTER COUNT - 37 1954 / / / / SET X COORDINATE = LAST X COORDINATE - 1000 1955 / / / ////////FIN 1956 / / ////////FIN 1957 / ////////FIN 1958 ////////FIN 1959 1960 1961 002271 0000 LINFED, 0 1962 002272 1007 TAD ALTAN /GET ALT ALPHANUMERIC DEVICE (TTY) BIT 1963 002273 0002 AND STATUS /FROM THE STATUS WORD 1964 002274 7650 SNA CLA /IS IT SET? 1965 002275 5301 JMP NTTY /NO; DEVICE IS NOT TTY 1966 002276 1365 TAD LF /DEVICE IS TTY SO GET LF CHARACTER 1967 002277 4771 JMS TYPE /AND TYPE IT 1968 002300 5360 JMP LINFEX /AND GO TO EXIT POINT 1969 1970 002301 2046 NTTY, ISZ LINECT /DEVICE IS NOT TTY SO INCREMENT THE LINECOUNT 1971 002302 1046 TAD LINECT /GET THE LINECOUNT 1972 002303 1361 TAD MD35 /AND SUBTRACT (DECIMAL) 35 1973 002304 7700 SMA CLA /DOES THIS MAKE THE NEW LINE NUMBER > 35? 1974 002305 5313 JMP MARG1 /YES; GO CHECK SOME MORE STUFF 1975 002306 1030 TAD LASTX /NO; GET THE LAST X COORDINATE 1976 002307 3032 DCA NEWX /AND STORE IT AS THE NEW VALUE 1977 002310 1031 TAD LASTY /GET THE LAST Y COORDINATE 1978 002311 1362 TAD MD22 /AND SUBTRACT (DECIMAL) 22 1979 002312 5355 JMP GOLIN /AND GO DO THE LINEFEED 1980 1981 002313 1011 MARG1, TAD MARGIN /GET THE ALTERNATE MARGIN BIT 1982 002314 0002 AND STATUS /FROM THE STATUS WORD 1983 002315 7650 SNA CLA /IS IT SET? 1984 002316 1011 TAD MARGIN /NO; GET MARGIN BIT 1985 002317 7421 MQL /AND STORE IT (OR ZERO) IN THE MQ REGISTER 1986 002320 1011 TAD MARGIN /GET THE MARGIN BIT AGAIN 1987 002321 7040 CMA /COMPLEMENT IT; I.E., COMPLEMENT THE MASK 1988 002322 0002 AND STATUS /AND MASK ALL BUT THE MARGIN BIT FROM THE STATUS WORD 1989 002323 7501 MQA /BRING IN WHAT WAS STORED IN MQ; THIS SEQUENCE ALWAYS REVERSES 1990 /THE MARGIN BIT IN THE STATUS WORD 1991 002324 3002 DCA STATUS /AND RESTORE THE STATUS WORD 1992 002325 3046 DCA LINECT /RESET THE LINECOUNTER SINCE A NEW MARGIN HAS BEEN SET 1993 002326 1011 TAD MARGIN /GET THE MARGIN BIT AGAIN 1994 002327 0002 AND STATUS /FROM THE STATUS WORD 1995 002330 7650 SNA CLA /IS IT SET? 1996 002331 5346 JMP MR0 /NO; SO THE MARGIN IS THE NORMAL ONE; GO TO THE RIGHT SEQUENCE 1997 002332 1045 TAD CHARCT /YES; MARGIN IS ALTERNATE ONE; GET CHARACTER COUNT 1998 002333 1363 TAD MD37 /AND SUBTRACT 37 1999 002334 7710 SPA CLA /IS COUNT > 37? 2000 002335 5341 JMP .+4 /NO; JUMP AHEAD 2001 002336 1770 TAD D37 /YES; CHARACTER WILL BE OFF RIGHT OF SCREEN SO 2002 002337 3045 DCA CHARCT /SET CHARACTER COUNT = 37 (= ALTERNATE MARGIN VALUE) 2003 002340 5353 JMP GOLIN-2 /AND GO WRAP THE SUBROUTINE UP 2004 2005 002341 1770 TAD D37 /CHARACTER COUNT IS < 37 SO X VALUE IS OK; ADD 37 2006 002342 1045 TAD CHARCT /TO THE CHARACTER COUNT 2007 002343 3045 DCA CHARCT /AND STORE THE NEW VALUE 2008 002344 1364 TAD P1000 /ADD 1000 (OCTAL) 2009 002345 5352 JMP GOLIN-3 /TO THE LAST X VALUE AND WRAP UP THE ROUTINE 2010 2011 002346 1363 MR0, TAD MD37 /NORMAL MARGIN IS SPECIFIED SO SUBTRACT 37 2012 002347 1045 TAD CHARCT /FROM THE CHARACTER COUNT 2013 002350 3045 DCA CHARCT /AND STORE THE NEW VALUE 2014 002351 1767 TAD M1000 /SUBTRACT 1000 (OCTAL) FROM THE 2015 002352 1030 TAD LASTX /LAST X VALUE 2016 002353 3032 DCA NEWX /AND STORE IT 2017 002354 1027 TAD HOMEY /GET THE HOME VALUE FOR THE Y COORDINATE (TOP OF SCREEN) 2018 002355 3033 GOLIN, DCA NEWY /AND STORE IT AS THE NEX Y COORDINATE 2019 002356 2043 ISZ DKVECT /SET THE DARK VECTOR FLAG 2020 002357 4773 JMS DISVEC /AND GO DISPLAY THE DARK VECTOR I.E., MOVE TO THE NEW MARGIN 2021 002360 5671 LINFEX, JMP I LINFED /LEAVE THE SUBROUTINE 2022 2023 002361 7735 MD35, -43 /MINUS (DECIMAL) 35 2024 002362 7752 MD22, -26 /MINUS (DECIMAL) 22 2025 002363 7733 MD37, -45 /MINUS (DECIMAL) 37 2026 002364 1000 P1000, 1000 /OFFSET VALUE FOR HALF OF SCREEN IN X DIRECTION 2027 002365 0212 LF, 212 /ASCII FOR LF 2028 2029 2030 2031 002367 1661 PAGE 002370 2455 002371 0754 002372 2427 002373 1675 002374 2156 002375 2157 002376 2072 002377 2505 2032 /TO SPACE- 2033 / GET ASCII FOR SPACE 2034 / PRINT IT 2035 ////////FIN 2036 2037 2038 002400 0000 SPACE, 0 2039 002401 1205 TAD SPAC /GET ASCII FOR SPACE 2040 002402 3777 DCA HOCHAR /PRETEND IT CAME FROM HOST 2041 002403 4776 JMS PRCHAR /AND USE PRINT ROUTINE 2042 002404 5600 JMP I SPACE /LEAVE SUBROUTINE 2043 2044 002405 0040 SPAC, 40 /ASCII FOR SPACE 2045 2046 2047 2048 2049 2050 /TO BACKSPACE- 2051 / DECREMENT CHARACTER COUNT 2052 / IF (TTY) PRINT BACKSPACE CHARACTER 2053 / ELSE MOVE BEAM BACK ONE CHARACTER CELL 2054 ////////FIN 2055 2056 2057 002406 0000 BACKSP, 0 2058 002407 7040 CMA /SET AC = -1 2059 002410 1045 TAD CHARCT /AND ADD THE CHARACTER COUNT 2060 002411 3045 DCA CHARCT /AND STORE THE DECREMENTED VALUE 2061 002412 1007 TAD ALTAN /GET THE ALTERNATE ALPHANUMERIC DEVICE (TTY) BIT 2062 002413 0002 AND STATUS /FROM THE STATUS WORD 2063 002414 7640 SZA CLA /IS ALT DEVICE BIT SET? 2064 002415 5222 JMP PRBACK /YES; GO TO THE PROPER PLACE 2065 002416 1226 TAD MD14 /NO; ADD MINUS (DECIMAL) 14 TO 2066 002417 1030 TAD LASTX /THE PRESENN CHARACTER ORIGIN POSITION 2067 002420 3030 DCA LASTX /AND STORE AS THE NEW CHARACTER X ORIGIN 2068 002421 5224 JMP BACKEX /AND GO TO THE EXIT POINT 2069 2070 002422 1225 PRBACK, TAD BAKSP /GET ASCII FOR BACKSPACE 2071 002423 4775 JMS TYPE /AND TYPE IT 2072 002424 5606 BACKEX, JMP I BACKSP /AND LEAVE THE SUBROUTINE 2073 2074 002425 0210 BAKSP, 210 /ASCII FOR BACKSPACE 2075 002426 7762 MD14, -16 /MINUS (DECIMML) 14 (THE WIDTH OF A CHARACTER CELL) 2076 2077 /TO GO-TO-MARGIN 2078 / WHEN (TTY) 2079 / / CARRAIGE RETURN 2080 / / SET CHARACTER COUNT = 0 2081 / ////////FIN 2082 / ELSE 2083 / / WHEN (MARGIN 0) 2084 / / / MOVE TO MARGIN 0 2085 / / / SET CHARACTER COUTN = 0 2086 / / ////////FIN 2087 / / ELSE 2088 / / / MOVE TO MARGIN 1 2089 / / / SET CHARACTER COUNT = 37 2090 / / ////////FIN 2091 / ////////FIN 2092 ////////FIN 2093 2094 2095 002427 0000 GOMARG, 0 2096 002430 1007 TAD ALTAN /GET THE ALTERNATE ALPHANUMERIC DEVICE (TTY) BIT 2097 002431 0002 AND STATUS /FROM THE STATUS WORD 2098 002432 7650 SNA CLA /IS TTY BIT SET? 2099 002433 5240 JMP .+5 /NO; JUMP AHEAD 2100 002434 1774 TAD CR /YES; GET ASCII FOR CR 2101 002435 4775 JMS TYPE /AND TYPE IT 2102 002436 3045 DCA CHARCT /SET CHARACTER COUNT = 0 2103 002437 5254 JMP MARGEX /AND GO TO EXIT POINT 2104 2105 002440 1011 TAD MARGIN /GET MARGIN BIT 2106 002441 0002 AND STATUS /FROM STATUS WORD 2107 002442 7640 SZA CLA /WHICH MARGIN? 2108 002443 5247 JMP MAR1 /MARGIN 1 (ALTERNATE MARGIN) 2109 002444 3045 DCA CHARCT /MARGIN 0; RESET CHARACTER COUNTER = 0 2110 002445 1256 TAD MAR0X /GET X COORDINATE OF MARGIN 0 2111 002446 5251 JMP GOMAEX /AND GO TO THAT VALUE 2112 002447 1255 MAR1, TAD D37 /MARGIN 1; GET (DECIMAL) 37 2113 002450 3045 DCA CHARCT /AND SET CHARACTER COUNTER 2114 002451 3032 GOMAEX, DCA NEWX /SET NEW X COORDINATE =0 FOR MARGIN 1 OR = -1000 FOR MARGIN 0 2115 002452 2043 ISZ DKVECT /SET DARK VECTOR FLAG 2116 002453 4773 JMS DISVEC /AND GO DISPLAY VECTOR (MOVE TO MARGIN ) 2117 002454 5627 MARGEX, JMP I GOMARG /AND EXIT THE SUBROUTINE 2118 2119 002455 0045 D37, 45 /DECIMAL 37 = CHARACTER COUNT OF HALF SCREEN (MARGIN 1) 2120 002456 7000 MAR0X, -1000 /X COORDINATE OF LEFT MMRGIN (MARGIN 0) 2121 2122 /TO TURN-ALPHANUMERIC-CURSOR-ON 2123 / IF (AN MODE) 2124 / / SET CURSOR BIT IN VC8E REGISTER 2125 / / ADD ONE HALF CELL WIDTH TO X COORDINATE AND SET DAC 2126 / / ADD ONE HALF CELL HEIGHT TO Y COORDINATE AND SET DAC 2127 / ////////FIN 2128 ////////FIN 2129 2130 002457 0000 ACRSON, 0 2131 002460 1003 TAD MODMSK /GET MASK FOR MODE BITS 2132 IFNZRO PLOTER < 2133 002461 1006 TAD HCMODE /AND MASK FOR HC MODE BIT IF THERE IS A PLOTTER 2134 > 2135 002462 0002 AND STATUS /MASK THE MODE BITS FROM THE STATUS WORD 2136 002463 7640 SZA CLA /IS ANY OF THE BITS SET 2137 002464 5657 JMP I ACRSON /YES; MODE IS NOT AN SO LEAVE THE SUBROUTINE 2138 002465 1016 TAD CRSBT /NO; GET THE CURSOR BIT 2139 002466 7421 MQL /PUT IT IN THE MQ REGISTER 2140 002467 6057 DIRE /READ THE VC8E REGISTER 2141 002470 7501 MQA /AND SET THE CURSOR BIT 2142 002471 6056 DILE /AND SET THE VC8E REGISTER 2143 002472 1303 TAD P5 /GET PLUS 5 2144 002473 1030 TAD LASTX /AND ADD THE LAST X COORDINATE 2145 002474 6053 DILX /SET THE CENTER OF CHARACTER CELL VALUE IN THE X DAC 2146 002475 7200 CLA /DILX DOESN'T CLEAR AC SO DO IT 2147 002476 1304 TAD P6 /GET PLUS SIX 2148 002477 1031 TAD LASTY /AND ADD THE LAST Y COORDINATE 2149 002500 6054 DILY /SET THE CENTER OF CHARACTER CELL VALUE IN THE Y DAC 2150 002501 7200 CLA /DILY DOESN'T CLEAR THE AC SO DO IT 2151 002502 5657 JMP I ACRSON /LEAVE THE SUBROUTINE 2152 2153 002503 0005 P5, 5 /HALF THE CHARACTER CELL WIDTH TO PUT THE CURSOR OVER THE CENTER OF CELL 2154 002504 0006 P6, 6 /HALF THE CHARACTER CELL HEIGHT TO PUT THE CURSOR OFER THE CENTER OF CELL 2155 2156 2157 /TO TURN-ALPHANUMERIC-CURSOR-OFF 2158 / CLEAR CURSOR BIT IN VC8E REGISTER 2159 / WAIT FOR REGISTER SETTLE 2160 ////////FIN 2161 2162 2163 002505 0000 ACRSOF, 0 2164 002506 6057 DIRE /GET VC8E REGISTER 2165 002507 0017 AND MCRSBT /MASK ALL BUT CURSOR BIT 2166 002510 6056 DILE /RELOAD THE REGISTER WITH CURSOR BIT CLEAR 2167 002511 4313 JMS WAITCR /GO TO A WAIT LOOP 2168 002512 5705 JMP I ACRSOF /AND EXIT THE SUBROUTINE 2169 /TO WAIT-FOR-CURSOR-TO-TURN-ON-OR-OFF 2170 2171 002513 0000 WAITCR, 0 2172 002514 1321 TAD CURWAT /GET TIMING CONSTANT 2173 002515 3322 DCA WAIT2 /SET COUNTER 2174 002516 2322 ISZ WAIT2 /INCREMENT COUNTER 2175 002517 5316 JMP .-1 /INCREMENT AGAIN UNTIL ZERO THEN 2176 002520 5713 JMP I WAITCR /EXIT THE WAIT SUBROUTINE 2177 2178 002521 5000 CURWAT, -3000 /TIMING CONSTANT FOR CURSOR WAIT 2179 002522 0000 WAIT2, 0 /COUNTER FOR TIMING LOOP 2180 2181 2182 2183 2184 IFNZRO PLOTER < 2185 /TO WAIT-FOR-PEN-TO-SLEW-OFF-PAGE 2186 2187 002523 0000 WAITSL, 0 2188 002524 7200 CLA /CLEAR AC BECAUSE IT IS NOT ALWAYS DONE ELSEWHERE 2189 002525 1334 TAD MIN40 /GET TIMEING CONSTANT 2190 002526 3335 DCA WAIT1 /AND SET OUTER LOOP COUNTER 2191 002527 2322 ISZ WAIT2 /INCREMENT INNER LOOP COUNTER 2192 002530 5327 JMP .-1 I/GO BACK TO DO IT AGAIN UNLESS COUNT = 0 THEN 2193 002531 2335 ISZ WAIT1 /LEAVE INNER LOOP AND INCREMENT OUTER LOOP COUNTER 2194 002532 5327 JMP .-3 /GO BACK TO THE INNER LOOP UNLESS OUTER LOOP COUNT = 0 THEN 2195 002533 5723 JMP I WAITSL /LEAVE THE SUBROUTINE 2196 2197 002534 7740 MIN40, -40 /LOOP COUNTER FOR WAIT 2198 002535 0000 WAIT1, 0 /COUNTER FOR OUTER LOOP 2199 > 2200 2201 002573 1675 PAGE 002574 1564 002575 0754 002576 2000 002577 1141 2202 /TO DISPLAY-A-VECTOR 2203 / GET X1, X2, Y1, Y2 2204 / CALCULATE DX = ABS (X2-X1) 2205 / CALCULATE DY = ABS (Y2-Y1) 2206 / CALCULATE SLOPE = DY/DX AND SIGN OF SLOPE 2207 / IF (SLOPE > 1) REVERSE DY AND DX 2208 / IF (DX=0) EXIT 2209 / SET STEP DIRECTION 2210 / IF (PLOTTER) SET X2 OVERSHOOT TO ALLOW FOR PEN DRAG, BUT DO NOT WRAP AROUND END OF PAGE 2211 / REPEAT UNTIL (RUNNING X = X2) 2212 / / STEP X 2213 / / LOAD X DAC 2214 / / MULTIPLY-SLOPE-TIMES-RUNNING-X 2215 / / ADD INTERCEPT TO GET RUNNING Y 2216 / / LOAD Y DAC 2217 / / WHEN (PLOTTER) ENTER WAIT LOOP 2218 / / ELSE INTENSIFY 2219 / ////////FIN 2220 ////////FIN 2221 2222 2223 002600 0000 VECT, 0 /ENTRY 2224 002601 1030 TAD LASTX /=X1 2225 002602 3350 DCA VECX1 /STORE LOCALLY 2226 002603 1031 TAD LASTY /=Y1 2227 002604 3351 DCA VECY1 /STORE LOCALLY 2228 002605 1032 TAD NEWX /=X2 2229 002606 3352 DCA VECX2 /STORE LOCALLU 2230 002607 1033 TAD NEWY /=Y2 2231 002610 3353 DCA VECY2 /STORE LOCALLY 2232 2233 002611 3777 DCA SIGNSL /CLEAR SIGN 2234 002612 1350 TAD VECX1 /GET X1 2235 002613 7041 CIA /AND SUBTRACT FROM 2236 002614 1352 TAD VECX2 /X2 2237 002615 7500 SMA /IF POSITIVE 2238 002616 5221 JMP .+3 /JUMP AHEAD 2239 002617 7041 CIA /ELSE NEGATE TO MAKE IT POSITIVE 2240 002620 2777 ISZ SIGNSL /AND COMPLEMENT THE SIGN FLAG TO REMEMBER ONE OF THE 2241 /QUANTITIES USED TO COMPUTE THE SLOPE IS NEGATIVE 2242 002621 3776 DCA DX /AND STORE ABS (X2-X1) 2243 2244 002622 1351 TAD VECY1 /GET Y1 2245 002623 7041 CIA /AND SUBTRACT IT FROM 2246 002624 1353 TAD VECY2 /Y2 2247 002625 7500 SMA /IF POSITIVE 2248 002626 5231 JMP .+3 /JUMP AHEAD 2249 002627 7041 CIA /ELSE NEGATE IT TO MAKE IT POSITIVE 2250 002630 2777 ISZ SIGNSL /COMPLEMENT THE SIGN FLAG BECAUSE ONE OF THE 2251 /QUANTITIES USED TO CALCULATE THE SLOPE IS NEGATIVE 2252 002631 3775 DCA DY /AND STORE ABS (Y2-Y1) 2253 002632 1777 TAD SIGNSL /GET SIGN OF SLOPE AND 2254 002633 7010 RAR /MOVE PARITY BIT TO LINK 2255 002634 7200 CLA /THROW AWAY THE REST 2256 002635 1360 TAD LNOP /=7000 2257 002636 7430 SZL /IS SIGN OF SLOPE NEGATIVE? 2258 002637 1361 TAD L41 /YES; CHANGE NOP TO CIA 2259 002640 3777 DCA SIGNSL /NOP (7000) IF SLOPE POS; CIA (7041) IF NEG 2260 2261 002641 1776 TAD DX /GET DX 2262 002642 7041 CIA /AND SUBTRACT FROM 2263 002643 1775 TAD DY /DY 2264 002644 7740 SMA SZA CLA /IF DY > DX, SLOPE.GT.1 SO 2265 002645 5774 JMP REVERS /REVERSE X AND Y IN CALCULATION AND FOR LOADING DACS 2266 002646 1356 SLOPOK, TAD LDILX /OTHERWISE, SET DISPLAY COMMANDS NORMAL; GET THE DILX COMMAND 2267 002647 3324 DCA LDX /AND PUT IT IN THE NORMAL PLACE TO LOAD X DAC 2268 002650 1357 TAD LDILY /GET THE DILY COMMAND 2269 002651 3333 DCA LDY /AND PUT IT IN THE NORMAL PLACE TO LOAD Y DAC 2270 2271 002652 1350 SETSTP, TAD VECX1 /GET X1 2272 002653 7041 CIA /AND COMPARE TO 2273 002654 1352 TAD VECX2 /X2 2274 002655 7450 SNA /IF X1=X2, VECTOR LENGTH IS ZERO SO 2275 002656 5600 JMP I VECT /EXIT THE SUBROUTINE 2276 002657 7104 CLL RAL /OTHERWISE, ROTATE THE SIGN OF X2-X1 INTO LINK 2277 002660 7224 CLA CML RAL /AC=1 FOR POSITIVE DIRECTION; =0 FOR NEG 2278 002661 7450 SNA /IF NEGATIVE DIRECTION, 2279 002662 7340 CLL STA /SET AC =-1 2280 002663 3355 DCA STEP /STORE SIGNED STEPSIZE 2281 IFNZRO PLOTER < 2282 002664 1006 TAD HCMODE /GET PLOT (HC MODE) BIT 2283 002665 0002 AND STATUS /FROM STATUS WORD 2284 002666 7650 SNA CLA /IS IT SET? 2285 002667 5275 JMP .+6 /NO; JUMP AHEAD 2286 002670 1355 TAD STEP /YES; INCREMENT X2 BY 2287 002671 1355 TAD STEP /THREE STEPSIZES; THIS OVERSHOOT COMPENSATES FOR 2288 002672 1355 TAD STEP /THE PEN DRAG AND DEAD BAND IN THE HP 7015 PLOTTER 2289 002673 1352 TAD VECX2 /USERS OF OTHER PLOTTERS MAY ADJUST THIS PART FOR BEST RESULTS 2290 002674 3352 DCA VECX2 /STORE THE X2 PLUS OVERSHOOT 2291 002675 1352 TAD VECX2 /GET X2 (WITH OVERSHOOT IF HC MODE) 2292 002676 7106 CLL RTL /MOVE 10-BIT VALUE TO MS 10 BITS SO SIGN IS IN MS BIT 2293 002677 7500 SMA /IS X DAC VALUE NEGATIVE? 2294 002700 5305 JMP POSAC /NO; GO TO THE POSITIVE BRANCH 2295 002701 7630 SZL CLA /YES; WAS X COORDINATE (12-BIT VALUE) NEGATIVE? 2296 002702 5311 JMP X2OK /YES; X COORDINATE AND DAC LOAD AGREE WITH NO ROLLOVER 2297 002703 1373 TAD (777 /NO; ROLLOVER HAS OCCURRED, GET MAXIMUM X SCREEN VALUE 2298 002704 5310 JMP .+4 /AND TAKE IT AHEAD 2299 2300 002705 7620 POSAC, SNL CLA /X DAC VALUE WAS POSITIVE; WAS 12-BIT COORDINATE POSITIVE? 2301 002706 5311 JMP X2OK /YES; EVERYTHING OK 2302 002707 1372 TAD (-1000 /NO; ROLLOVER HAS OCCURRED; GET MINIMUM X SCREEN VALUE 2303 2304 002710 3352 DCA VECX2 /DEPOSIT PROPER (NON-ROLLOVER) VALUE IN X2 2305 > 2306 002711 1350 X2OK, TAD VECX1 /GET X1 2307 002712 5322 JMP VECTGO /AND JUMP INTO THE LOOP AT THE PROPER PLACE 2308 2309 002713 1354 VECLOP, TAD VECX /GET THE OLD RUNNING VALUE OF X 2310 002714 7041 CIA /AND COMPARE IT TO 2311 002715 1352 TAD VECX2 /THE FINAL VALUE OF X (PERHAPS WITH OVERSHOOT) 2312 002716 7650 SNA CLA /DO THEY AGREE? 2313 002717 5600 JMP I VECT /YES; VECTOR IS FINISHED; LEAVE THE SUBROUTINE 2314 002720 1354 TAD VECX /NO; GET THE RUNNING VALUE BACK 2315 002721 1355 TAD STEP /INCREMENT IT BY A STEP OF THE PROPER SIGN 2316 002722 3354 VECTGO, DCA VECX /AND STORE THE NEW RUNNING VALUE OF X 2317 002723 1354 TAD VECX /GET THE NEW VALUE AGAIN 2318 002724 0000 LDX, 0 /DILX (OR, IF REVERSED, DILY) WILL HAVE BEEN PUT HERE 2319 002725 7041 CIA /COMPARE THE VALUE JUST LOADED TO 2320 002726 1350 TAD VECX1 /X1 2321 002727 7440 SZA /ARE THEY THE SAME? 2322 002730 4771 JMS VECMUL /NO; GO MULTIPLY (X1-RUN X) BY THE SLOPE AND RETURN WITH VALUE IN AC 2323 002731 7041 CIA /CHANGE SIGN BECAUSE DX = (RUN X - X1),NOT (X1-RUN X) 2324 002732 1351 TAD VECY1 /ADD Y1 AND RESULT IS RUNNING VALUE OF Y 2325 002733 0000 LDY, 0 /DILY (OR, IF REVERSED, DILX) WILL HAVE BEEN PUT HERE 2326 002734 7300 CLA CLL /CLEAR ALL UNNECESSARY JUNK BECAUSE DILX AND DILY DON'T DO IT 2327 IFNZRO PLOTER < 2328 002735 1002 TAD STATUS /GET THE STATUS WORD 2329 002736 0006 AND HCMODE /AND MASK THE HC (PLOT) MODE BIT 2330 002737 7640 SZA CLA /IS HC MODE SET? 2331 002740 5346 JMP .+6 /YES; GO TO THE PLOT PART 2332 > 2333 002741 1043 TAD DKVECT /NO; GET DARK VECTOR FLAG 2334 002742 7640 SZA CLA /IS FLAG SET? 2335 002743 5313 JMP VECLOP /YES; NOTHING TO DISPLAY SO LOOP TO NEXT POINT IN VECTOR 2336 002744 6055 DIXY /NO; POINT MUST BE DISPLAYED; INTENSIFY THE POINT 2337 002745 5313 JMP VECLOP /NOW LOOP FOR THE NEXT POINT 2338 2339 IFNZRO PLOTER < 2340 002746 4362 JMS WAITVC /THE PLOTTER SERVOS ARE DRIVEN DIRECTLY FROM THE DACS AND 2341 /THE SERVOS NEED TIME TO MOVE, SO GO TO A WAIT LOOP 2342 002747 5313 JMP VECLOP /AND NOW GO CALCULATE AND PLOT THE NEXT POINT IN THE VECTOR 2343 > 2344 002750 0000 VECX1, 0 /LOCAL STORAGE OF X COORDINATE OF BEGINNING POINT OF VECTOR 2345 002751 0000 VECY1, 0 /LOCAL STORAGE OF Y COORDINATE OF BEGINNING POINT OF VECTOR 2346 002752 0000 VECX2, 0 /LOCAL STORAGE OF X COORDINATE OF ENDING POINT OF VECTOR 2347 002753 0000 VECY2, 0 /LOCAL STORAGE OF Y COORDINATE OF ENDING POINT OF VECTOR 2348 002754 0000 VECX, 0 /RUNNING VALUE OF X 2349 002755 0000 STEP, 0 /THE SIGNED VALUE OF THE STEP IN X TO BE USED TO CALCULATE THE NEW RUNNING X 2350 2351 002756 6053 LDILX, DILX /A COMMAND TO BE READ AND INSERTED AT PROPER PLACE 2352 002757 6054 LDILY, DILY /DITTO 2353 002760 7000 LNOP, NOP /DITTO 2354 002761 0041 L41, 41 /THE VALUE TO CHANGE A NOT (7000) TO A CIA (7041) 2355 2356 2357 2358 /TO WAIT FOR PLOTTER SERVOS TO RESPOND TO VALUES LOADED INTO DAC'S 2359 2360 IFNZRO PLOTER < 2361 002762 0000 WAITVC, 0 2362 002763 1037 TAD VECTIM /GET TIME CONSTANT SET BY USER ON PAGE ZERO 2363 002764 3370 DCA VCTIMC /AND STORE AS LOCAL COUNTER 2364 002765 2370 ISZ VCTIMC /INCREMENT THE COUNTER 2365 002766 5365 JMP .-1 /REPEAT IF COUNTER NOT RUN OUT 2366 002767 5762 JMP I WAITVC /WHEN COUNTER RUNS OUT, LEAVE THE WAIT SUBROUTINE 2367 2368 002770 0000 VCTIMC, 0 /LOCAL STORAGE OF THE COUNTER 2369 > 2370 2371 2372 002771 3000 PAGE 002772 7000 002773 0777 002774 3020 002775 3012 002776 3014 002777 3016 2373 /TO MULTYPLY-AC-BY-SLOPE-AND-RETURN-RESULT-IN-AC 2374 / IF (AC NEGATIVE) 2375 / / CHANGE TO POSITIVE 2376 / / REMEMBER SIGN CHANGE 2377 / ////////FIN 2378 / WHEN (DY=0) EXIT WITH AC CLEAR 2379 / ELSE 2380 / / MULTIPLY-BY-DY 2381 / / DIVIDE-BY-DX 2382 / / NEGATE RESULL IF AC WAS NEGATIVE UPON ENTRY 2383 / ////////FIN 2384 ////////FIN 2385 2386 2387 003000 0000 VECMUL, 0 2388 003001 7500 SMA /IS AC NEGATIVE? 2389 003002 5205 JMP .+3 /NO; SKIP NEXT PART 2390 003003 7041 CIA /YES; MAKE IT POSITIVE 2391 003004 2200 ISZ VECMUL /AND CHANGE THE RETURN POINT SO A CIA IS SKIPPED 2392 003005 7421 MQL /PUT THE VALUE IN THE MQ TO SET UP FOR THE TWO REGISTER MULTIPLY-DIVIDE 2393 003006 1212 TAD DY /GET DY IN THE AC 2394 003007 7650 SNA CLA /IS IT ZERO? 2395 003010 5600 JMP I VECMUL /IF SO, RETURN 0 2396 003011 4577 MUY /IF NOT, GO MULTIPLY AC (NOW IN MQ) BY DY 2397 003012 0000 DY, 0 /ARGUMENT FOR MULTIPLICATION (DY) IS STORED HERE 2398 003013 4576 DVI /NOW DIVIDE BY DX 2399 003014 0000 DX, 0 /WHICH IS STORED HERE 2400 003015 7701 CLA MQA /BRING THE RESULT OF THE MULTIPLY AND DIVIDE 2401 /(WHICH IS SINGLE PRECISION) BACK INTO THE AC 2402 003016 0000 SIGNSL, 0 /NOP OR CIA 2403 003017 5600 JMP I VECMUL /AND RETURN WITH THE RESULT 2404 2405 2406 003020 1777 REVERS, TAD VECY2 /REPLACE X2 WITH Y2 2407 003021 3776 DCA VECX2 2408 2409 003022 1031 TAD LASTY /REVERSE THE INITIAL VALUES OF X AND Y 2410 003023 3775 DCA VECX1 2411 003024 1030 TAD LASTX 2412 003025 3774 DCA VECY1 2413 2414 003026 1214 TAD DX /INTERCHANGE DX AND DY 2415 003027 3241 DCA VCTEM 2416 003030 1212 TAD DY 2417 003031 3214 DCA DX 2418 003032 1241 TAD VCTEM 2419 003033 3212 DCA DY 2420 2421 003034 1773 TAD LDILX /SET DISPLAY COMMANDS REVERSE 2422 003035 3772 DCA LDY 2423 003036 1771 TAD LDILY 2424 003037 3770 DCA LDX 2425 003040 5767 JMP SETSTP /AND GO BACK TO REGULAR SEQUENCE 2426 2427 003041 0000 VCTEM, 0 /TEMPORARY STORAGE FOR REVERSAL OV VALUES 2428 /TO MULTIPLY (MULTIPLIER IN MQ, MULTIPLICAND IN ARGUMENT POSITION) 2429 / IF (MULTIPLICAND NEGATIVE) 2430 / / TAKE ABSOLUTE VALUE OF MULTIPLICAND 2431 / / REMEMBER SIGN CHANGE 2432 / ////////FIN 2433 / IF (MULTIPLIER NEGATIVE) 2434 / / TAKE ABSOLUTE VALUE OF MULTIPLIER 2435 / / REMEMBER SIGN CHANGE 2436 / ////////FIN 2437 / DO (12 TIMES) 2438 / / IF (LS BIT IN MULTIPLIER = 1) ADD MULTIPLICAND TO AC 2439 / / SHIFT AC AND MQ, DROPPING LS BIT OF MQ 2440 / ////////FIN 2441 / FIX SIGN OF PRODUCT 2442 ////////FIN 2443 2444 2445 IFZERO EAE < 2446 003042 0000 MULTPY, 0 /ENTRY TO MULTIPLY ROUTINE 2447 003043 7300 CLA CLL /CLEAR AC AND LINK (MULTIPLIER IS IN MQ) 2448 003044 1351 TAD MDCONS /GET DECIMAL -12 TO 2449 003045 3352 DCA MDCOUN /SET UP COUNTER 2450 003046 1642 TAD I MULTPY /GET THE MULTIPLICAND FROM THE ARGUMENT POSITION 2451 003047 2242 ISZ MULTPY /BUMP POINTER TO THE RETRUN ADDRESS 2452 003050 7510 SPA CLL /IS MULTIPLICAND POSITIVE? 2453 003051 7161 CIA STL /NO, MAKE IT POSITIVE AND SET LINK AS REMINDER 2454 003052 3354 DCA MPCND /STORE THE ABS VALUE OF MULTIPLICAND 2455 003053 7701 CLA MQA /BRING MULTIPLIER INTO AC 2456 003054 7510 SPA /IS MULTIPLIER NEGATIVE? 2457 003055 7061 CIA CML /YES; MAKE IT POSITIVE AND COMPLEMENT LINK AS REMINDER 2458 003056 7010 RAR /BEGINNING OF MULTIPLY LOOP; MOVE LS BIT OF MULTIPLIER INTO LINK 2459 /(FIRST TIME THROUGH THIS LOOP, SIGN OF PRODUCT GOES INTO SIGN POSITION; 2460 /THEREAFTER IT IS SHIFTED RIGHT) 2461 003057 7521 SWP /PUT PARTIAL MULTIPLIER (AND SIGN OF PRODUCT) BACK INTO MQ 2462 003060 7430 SZL /WAS LS BIT SHIFTED OUT OF MULTIPLIER 1? 2463 003061 1354 TAD MPCND /YES; ADD MULTIPLICAND INTO PARTIAL PRODUCT AT THIS POSITION 2464 003062 7110 CLL RAR /NOW THROW AWAY THE MULTIPLIER BIT AND SHIFT PARTIAL PRODUCT 2465 /(LS BIT GOES INTO LINK) 2466 003063 7521 SWP /PARTIAL PRODUCT TO MQ, PARTIAL MULTIPLIER INTO AC 2467 003064 2352 ISZ MDCOUN /INCREMENT THE 12 BIT COUNTER 2468 003065 5256 JMP .-7 /GO AROUND THE LOOP AGAIN IF NOT DONE 12 TIMES 2469 2470 003066 7010 RAR /MOVE THE SIGN OF THE PRODUCT INTO LINK 2471 003067 7430 SZL /IF BIT IS SET, 2472 003070 7041 CIA /COMPLEMENT AND INCREMENT THE LS HALF OF THE PRODUCT 2473 003071 7521 SWP /REVERSE THE PARTS OF THE PRODUCT (MS HALF NOW IN AC) 2474 003072 7430 SZL /IF SIGN BIT IS SET, 2475 003073 7040 CMA /AIMPLY COMPLEMENT THE MS HALF 2476 003074 7100 CLL /NOW THROW AWAY THE SIGN 2477 003075 5642 JMP I MULTPY /AND LEAVE THE SUBROUTINE WITH MS PART IN AC, LS PART IN MQ 2478 /TO DIVIDE (MS PART OF DIVIDEND IN AC, LS PART IN MQ; SIGN PROPERLY SET) 2479 / IF (DIVIDEND NEGATIVE) 2480 / / TAKE ABSOLUTE VALUE 2481 / / REMEMBER SIGN CHANGE 2482 / ////////FIN 2483 / IF (DIVISOR NEGATIVE) 2484 / / TAKE ABSOLUTE VALUE 2485 / / REMEMBER SIGN CHANGE 2486 / ////////FIN 2487 / DO (12 TIMES) 2488 / / SUBTRACT DIVISOR 2489 / / WHEN (DIVIDEND GOES NEGATIVE) ADD DIVISOR BACK TO DIVIDEND 2490 / / ELSE SET LS BIT OF QUOTIENT 2491 / / SHIFT PARTIAL QUOTIENT AND DIVIDEND 2492 / ////////FIN 2493 / FIX SIGN OF QUOTIENT 2494 ////////FIN 2495 2496 2497 003076 0000 DIVIDE, 0 /ENTRY TO DIVIDE ROUTINE 2498 003077 7100 CLL /CLEAR LINK AS PLACE TO REMEMBER NUMBER OF SIGN CHANGES 2499 003100 7510 SPA /IS DIVIDEND NEGATIVE? 2500 003101 7160 CMA STL /YES; COMPLEMENT THE MS PART AND SET LINK TO REMEMBER 2501 003102 7521 SWP /GET THE LS PART INTO AC 2502 003103 7430 SZL /ARE WE NEGATING DIVIDEND? 2503 003104 7041 CIA /YES; COMPLEMENT AND INCREMENT THE LS PART 2504 003105 3353 DCA MDTEMP /STORE THE LS PART SOMEPLACE SO WE HAVE AC FREE TEMPORARILY 2505 003106 1676 TAD I DIVIDE /GET THE DIVISOR FROM THE ARGUMENT POSITION 2506 003107 7510 SPA /IS IT NEGATIVE? 2507 003110 7020 CML /YES; COMPLEMENT THE LINK TO REMEMBER THIS 2508 003111 7500 SMA /IS DIVISOR NEGATIVE (SORRY, WE MUST ASK AGAIN) 2509 003112 7041 CIA /NO; MAKE IT NEGATIVE 2510 003113 3355 DCA DIVSOR /AND STORE NEGATIVE OF ABS VALUE OF DIVISOR TO USE IN SUBTRACTIONS 2511 003114 1351 TAD MDCONS /GET MINUS DECIMAL 12 2512 003115 3352 DCA MDCOUN /AND SET 12 BIT COUNTER 2513 003116 1353 TAD MDTEMP /GET BACK LS PART OF DIVIDEND 2514 003117 7004 RAL /SHIFT SIGN OF QUOTIENT INTO LS END OF QUOTIENT, SHIFT DIVIDEND 2515 003120 7521 SWP /ONE PLACE TO THE LEFT AND EXCHANGE SO MS PART OF DIVIDEND IS IN AC AND 2516 003121 7004 RAL /SHIFT SIGN OF DIVIDEND (NECESSARILY ZERO) INTO LINK 2517 2518 /HERE IS AN ERROR CHECKING PART THAT WILL TRAP EITHER ZERO DIVISOR OR QUOTIENT OVERFLOW. 2519 /LINK WILL BE SET UPON RETURN TO INDICATE ERROR CGNDITION AND WILL BE CLEAR TO INDICATE NO 2520 /ERROR. 2521 /BECAUSE OF PREVIOUS CHECK FOR DX = 0, A ZERO DIVISOR CAN NEVER OCCUR IN THIS GRAPHICS PROGRAM 2522 /AND BECAUSE THIS DIVIDE ROUTINE IS CALLED ONLY IN THE CONTEXT OF SOME X COORDINATE * DY / DX 2523 /AND IT HAS BEEN CAREFULLY ARRANGED THAT DY IS LESS THAN OR EQUAL TO DX, THE QUOTIENT OVERFLOW 2524 /CONDITION CAN NEVER ARISE IN THIS GRAPHICS PROGRAM. THE ERROR EXIT, THEREFORE, CAN NEVER 2525 /BE TAKEN AND THE SET LINK IS NOT CHECKED FOR UPON RETURN. THE CODE IS LEFT IN ONLY FOR 2526 /GENERALITY. 2527 2528 003122 1355 TAD DIVSOR /SUBTRACT THE DIVISOR (STARTING AT THE MS END) 2529 003123 7510 SPA /IS THE RESULT NEGATIVE? 2530 003124 5334 JMP .+10 /YES; NO QUOTIENT OVERFLOW CONDITION OR ZERO DIVISOR SO GO ON WITH DIVISION 2531 003125 7120 STL /NO; QUOTIENT OVERFLOW OR ZERO DIVISOR; SET LINK AS ERROR FLAG 2532 003126 5676 JMP I DIVIDE /AND RETURN 2533 /END OF ERROR CHECKING PART 2534 003127 7521 SWP /JUMP BACK POINT IN LOOP; PUT MS PART OF DIVIDEND IN AC 2535 003130 7004 RAL /AND SHIFT LEFT; MS BIT FROM LS PART COMES INTO LS BIT OF AC 2536 003131 1355 TAD DIVSOR /SUBTRACT DIVISOR 2537 003132 7500 SMA /IS RESULT NEGATIVE: 2538 003133 5337 JMP .+4 /NO; JUMP AHEAD TO PROPER BRANCH 2539 003134 1676 TAD I DIVIDE /YES; ADD DIVISOR BACK 2540 003135 7100 CLL /SET ZERO BIT TO BE PUT INTO QUOTIENT 2541 003136 7410 SKP /AND JOIN THE POSITIVE BRANCH ONE STEP AHEAD 2542 2543 003137 7120 STL /RESULT OF SUBTRACTION WAS POSITIVE WHICH IS OK SO SET BIT IN QUOTIENT 2544 003140 7521 SWP /LS PART OF DIVIDEND TO AC 2545 003141 7004 RAL /QUOTIENT BIT FROM LINK INTO LS BIT; SHIFT LS PART LEFT AND MS BIT INTO LINK 2546 003142 2352 ISZ MDCOUN /BUMP 12 BIT COUNTER 2547 003143 5327 JMP .-14 /AND GO AROUND THE LOOP AGAIN IF NOT DONE 12 TIMES 2548 003144 7530 SZL CLL /OR LEAVE THE LOOP; CLEAR THE LINK TO INDICATE NO ERROR; WAS LINK SET? 2549 003145 7041 CIA /YES; QUOTIENT MUST BE NEGATIVE SO NEGATE IT 2550 003146 7521 SWP /AND PUT IT INTO THE MQ 2551 003147 2276 ISZ DIVIDE /POINT TO RETURN ADDRESS 2552 003150 5676 JMP I DIVIDE /AND RETURN FROM SUBROUTINE 2553 2554 003151 7764 MDCONS, -14 /MINUS DECIMAL 12 FOR BIT COUNTER FOR MULTIPLY/DIVIDE LOOPS 2555 003152 0000 MDCOUN, 0 /12 BIT COUNTER FOR MULTIPLY/DIVIDE LOOPS 2556 003153 0000 MDTEMP, 0 /TEMPORARY STORAGE FOR PART OF DIVIDEND WHILE DIVIDE IS BEING SET UP 2557 003154 0000 MPCND, 0 /MULTIPLICAND 2558 003155 0000 DIVSOR, 0 /NEGATIVE OF DIVISOR 2559 > 2560 2561 003167 2652 PAGE 003170 2724 003171 2757 003172 2733 003173 2756 003174 2751 003175 2750 003176 2752 003177 2753 2562 /HERE BEGINNETH THE TABLE OF DOT MATRIX INFORMATION FOR THE STANDARD CHARACTER SET. 2563 /THE MATRIX IS A 5 X 7 MATRIX WITH 35 BITS OF INFORMATION STORED IN THREE 12-BIT WORDS 2564 /LET THE WORDS BE DESIGNATED "A", "B", AND "C", IN ORDER. THE MATRIX IS STORED: 2565 / 2566 / A07 B02 B09 C04 C11 2567 / A06 B01 B08 C03 C10 2568 / A05 B00 B07 C02 C09 2569 / A04 A11 B06 C01 C08 2570 / A03 A10 B05 C00 C07 2571 / A02 A09 B04 B11 C06 2572 / A01 A08 B03 B10 C05 2573 / 2574 /IF BIT A00 IS SET, THE ENTIRE 5 X 7 MATRIX IS TO BE SHIFTED DOWN 3 MATRIX POSITIONS 2575 /BEFORE PRINTING. THIS ALLOWS CHARACTERS WITH TAILS BELOW THE LINE. 2576 /THE CHARACTERS ARE IN ORDER OF THEIR ASCII CODES BEGINNING WITH 040 AND 2577 /ENDING WITH 177. 2578 2579 003200 0000 DOTTAB, 0 /SPACE 2580 003201 0000 0 2581 003202 0000 0000 2582 003203 0000 0000 /! 2583 003204 0576 0576 2584 003205 0000 0000 2585 003206 0000 0000 /" 2586 003207 7000 7000 2587 003210 1600 1600 2588 003211 0517 0517 /# 2589 003212 7123 7123 2590 003213 7624 7624 2591 003214 1105 1105 /$ 2592 003215 2655 2655 2593 003216 2422 2422 2594 003217 3062 3062 /% 2595 003220 3043 3043 2596 003221 1143 1143 2597 003222 1551 1551 /& 2598 003223 1531 1531 2599 003224 0120 0120 2600 003225 0000 0000 /' 2601 003226 7034 7034 2602 003227 0000 0000 2603 003230 0003 0003 /( 2604 003231 4212 4212 2605 003232 0200 0200 2606 003233 0010 0010 /) 2607 003234 1210 1210 2608 003235 7000 7000 2609 003236 1243 1243 /* 2610 003237 4370 4370 2611 003240 7052 7052 2612 003241 0201 0201 /+ 2613 003242 0370 0370 2614 003243 2010 2010 2615 003244 0013 0013 /, 2616 003245 0340 0340 2617 003246 0000 0000 2618 003247 0201 0201 /- 2619 003250 0040 0040 2620 003251 2010 2010 2621 003252 0014 0014 /. 2622 003253 0600 0600 2623 003254 0000 0000 2624 003255 3002 3002 // 2625 003256 0040 0040 2626 003257 1003 1003 2627 003260 1752 1752 /0 2628 003261 1446 1446 2629 003262 1276 1276 2630 003263 0010 0010 /1 2631 003264 2776 2776 2632 003265 0000 0000 2633 003266 3451 3451 /2 2634 003267 1446 1446 2635 003270 2306 2306 2636 003271 1050 1050 /3 2637 003272 1446 1446 2638 003273 2266 2266 2639 003274 0602 0602 /4 2640 003275 4113 4113 2641 003276 7620 7620 2642 003277 1170 1170 /5 2643 003300 5426 5426 2644 003301 1271 1271 2645 003302 1711 1711 /6 2646 003303 2446 2446 2647 003304 2260 2260 2648 003305 3022 3022 /7 2649 003306 1044 1044 2650 003307 1203 1203 2651 003310 1551 1551 /8 2652 003311 1446 1446 2653 003312 2266 2266 2654 003313 0151 0151 /9 2655 003314 1445 1445 2656 003315 2236 2236 2657 003316 0006 0006 /: 2658 003317 6330 6330 2659 003320 0000 0000 2660 003321 0013 0013 /; 2661 003322 3354 3354 2662 003323 0000 0000 2663 003324 0001 0001 /< 2664 003325 0121 0121 2665 003326 0501 0501 2666 003327 0502 0502 /= 2667 003330 4120 4120 2668 003331 5024 5024 2669 003332 2024 2024 /> 2670 003333 2120 2120 2671 003334 2000 2000 2672 003335 0040 0040 /? 2673 003336 1544 1544 2674 003337 1400 1400 2675 003340 1451 1451 /AT 2676 003341 1746 1746 2677 003342 0276 0276 2678 003343 3702 3702 /A 2679 003344 2104 2104 2680 003345 4574 4574 2681 003346 2037 2037 /B 2682 003347 7446 7446 2683 003350 2266 2266 2684 003351 1750 1750 /C 2685 003352 1406 1406 2686 003353 0242 0242 2687 003354 2037 2037 /D 2688 003355 7406 7406 2689 003356 0276 0276 2690 003357 3771 3771 /E 2691 003360 1446 1446 2692 003361 0301 0301 2693 003362 3761 3761 /F 2694 003363 1044 1044 2695 003364 0201 0201 2696 003365 1750 1750 /G 2697 003366 1406 1406 2698 003367 2371 2371 2699 003370 3761 3761 /H 2700 003371 0040 0040 2701 003372 2177 2177 2702 003373 0010 0010 /I 2703 003374 1776 1776 2704 003375 0200 0200 2705 003376 1010 1010 /J 2706 003377 0402 0402 2707 003400 0077 0077 2708 003401 3761 3761 /K 2709 003402 0121 0121 2710 003403 0501 0501 2711 003404 3770 3770 /L 2712 003405 0402 0402 2713 003406 0100 0100 2714 003407 3760 3760 /M 2715 003410 2020 2020 2716 003411 0577 0577 2717 003412 3760 3760 /N 2718 003413 2020 2020 2719 003414 2177 2177 2720 003415 1750 1750 /O 2721 003416 1406 1406 2722 003417 0276 0276 2723 003420 3761 3761 /P 2724 003421 1044 1044 2725 003422 2206 2206 2726 003423 1750 1750 /Q 2727 003424 1505 1505 2728 003425 0336 0336 2729 003426 3761 3761 /R 2730 003427 1145 1145 2731 003430 2306 2306 2732 003431 1050 1050 /S 2733 003432 5446 5446 2734 003433 4242 4242 2735 003434 0020 0020 /T 2736 003435 1774 1774 2737 003436 0201 0201 2738 003437 1770 1770 /U 2739 003440 0402 0402 2740 003441 0077 0077 2741 003442 0764 0764 /V 2742 003443 0401 0401 2743 003444 0037 0037 2744 003445 3764 3764 /W 2745 003446 0101 0101 2746 003447 0177 0177 2747 003450 3062 3062 /X 2748 003451 4040 4040 2749 003452 5143 5143 2750 003453 0020 0020 /Y 2751 003454 2760 2760 2752 003455 0401 0401 2753 003456 3032 3032 /Z 2754 003457 1446 1446 2755 003460 1303 1303 2756 003461 0017 0017 /[ 2757 003462 7406 7406 2758 003463 0200 0200 2759 003464 0060 0060 /\ 2760 003465 4040 4040 2761 003466 4140 4140 2762 003467 0010 0010 /] 2763 003470 1407 1407 2764 003471 7600 7600 2765 003472 0100 0100 /^ 2766 003473 2374 2374 2767 003474 0404 0404 2768 003475 0203 0203 /_ 2769 003476 4250 4250 2770 003477 2010 2010 2771 003500 0000 0000 /` 2772 003501 1010 1010 2773 003502 1000 1000 2774 003503 1012 1012 /a 2775 003504 4522 4522 2776 003505 5070 5070 2777 003506 3771 3771 /b 2778 003507 0442 0442 2779 003510 2060 2060 2780 003511 1411 1411 /c 2781 003512 0442 0442 2782 003513 2020 2020 2783 003514 1411 1411 /d 2784 003515 0442 0442 2785 003516 2177 2177 2786 003517 1612 1612 /e 2787 003520 4522 4522 2788 003521 5010 5010 2789 003522 0217 0217 /f 2790 003523 6044 6044 2791 003524 0202 0202 2792 003525 5151 5151 /g 2793 003526 1446 1446 2794 003527 2276 2276 2795 003530 3761 3761 /h 2796 003531 0040 0040 2797 003532 2160 2160 2798 003533 0012 0012 /i 2799 003534 0752 0752 2800 003535 0000 0000 2801 003536 5010 5010 /j 2802 003537 0401 0401 2803 003540 7600 7600 2804 003541 3762 3762 /k 2805 003542 0242 0242 2806 003543 1000 1000 2807 003544 0010 0010 /l 2808 003545 1776 1776 2809 003546 0000 0000 2810 003547 3601 3601 /m 2811 003550 0700 0700 2812 003551 2160 2160 2813 003552 3601 3601 /n 2814 003553 0040 0040 2815 003554 2160 2160 2816 003555 1411 1411 /o 2817 003556 0442 0442 2818 003557 2060 2060 2819 003560 7761 7761 /p 2820 003561 1044 1044 2821 003562 2206 2206 2822 003563 4141 4141 /q 2823 003564 1047 1047 2824 003565 7700 7700 2825 003566 2117 2117 /r 2826 003567 0440 0440 2827 003570 2020 2020 2828 003571 0212 0212 /s 2829 003572 4522 4522 2830 003573 5040 5040 2831 003574 0107 0107 /t 2832 003575 6422 6422 2833 003576 0040 0040 2834 003577 1610 1610 /u 2835 003600 0402 0402 2836 003601 0170 0170 2837 003602 0604 0604 /v 2838 003603 0401 0401 2839 003604 0030 0030 2840 003605 1610 1610 /w 2841 003606 0202 0202 2842 003607 0070 0070 2843 003610 0011 0011 /x 2844 003611 0301 0301 2845 003612 4110 4110 2846 003613 5171 5171 /y 2847 003614 0442 0442 2848 003615 2077 2077 2849 003616 0011 0011 /z 2850 003617 0642 0642 2851 003620 6110 6110 2852 003621 0206 0206 /{ 2853 003622 6406 6406 2854 003623 0200 0200 2855 003624 0000 0000 /| 2856 003625 0734 0734 2857 003626 0000 0000 2858 003627 0010 0010 /} 2859 003630 1405 1405 2860 003631 5410 5410 2861 003632 0200 0200 /~ 2862 003633 4040 4040 2863 003634 4010 4010 2864 003635 3777 3777 /RUBOUT 2865 003636 7777 7777 2866 003637 7777 7777 2867 /HERE BEGINNETH THE DOT MATRIX TABLE FOR THE ALTERNATE (APL) CHARACTER SET. 2868 /USER MAY SUBSTITUTE ANOTHER ALTERNATE SET OBSERVING TWO RULES: 2869 / 1. THREE WORDS PER CHARACTER WITH BITS AS ABOVE 2870 / 2. ASCII 40 THROUGH 177 IN ORDER 2871 2872 /THIS TABLE IS FOR THE APL CHARACTER SET 2873 2874 003640 0000 ALTDOT, 0000 /SPACE 2875 003641 0000 0000 2876 003642 0000 0000 2877 003643 0060 0060 /UMLAUT 2878 003644 3000 3000 2879 003645 0603 0603 2880 003646 0010 0010 /) 2881 003647 1210 1210 2882 003650 7000 7000 2883 003651 0001 0001 /< 2884 003652 0121 0121 2885 003653 0501 0501 2886 003654 0011 0011 /=< 2887 003655 0523 0523 2888 003656 0501 0501 2889 003657 0502 0502 /= 2890 003660 4120 4120 2891 003661 5024 5024 2892 003662 2024 2024 /> 2893 003663 2120 2120 2894 003664 2000 2000 2895 003665 0010 0010 /] 2896 003666 1407 1407 2897 003667 7600 7600 2898 003670 0061 0061 /OR 2899 003671 4300 4300 2900 003672 3003 3003 2901 003673 3003 3003 /AND 2902 003674 0030 0030 2903 003675 6140 6140 2904 003676 1502 1502 /=/ 2905 003677 4160 4160 2906 003700 5026 5026 2907 003701 0201 0201 /DIVIDE 2908 003702 0250 0250 2909 003703 2010 2010 2910 003704 4005 4005 /, 2911 003705 4160 4160 2912 003706 0000 0000 2913 003707 0201 0201 /+ 2914 003710 0370 0370 2915 003711 2010 2010 2916 003712 0014 0014 /. 2917 003713 0600 0600 2918 003714 0000 0000 2919 003715 3002 3002 // 2920 003716 0040 0040 2921 003717 1003 1003 2922 003720 1752 1752 /0 2923 003721 1446 1446 2924 003722 1276 1276 2925 003723 0010 0010 /1 2926 003724 2776 2776 2927 003725 0000 0000 2928 003726 3451 3451 /2 2929 003727 1446 1446 2930 003730 2306 2306 2931 003731 1050 1050 /3 2932 003732 1446 1446 2933 003733 2266 2266 2934 003734 0602 0602 /4 2935 003735 4113 4113 2936 003736 7620 7620 2937 003737 1170 1170 /5 2938 003740 5426 5426 2939 003741 1271 1271 2940 003742 1711 1711 /6 2941 003743 2446 2446 2942 003744 2260 2260 2943 003745 3022 3022 /7 2944 003746 1044 1044 2945 003747 1203 1203 2946 003750 1551 1551 /8 2947 003751 1446 1446 2948 003752 2266 2266 2949 003753 0151 0151 /9 2950 003754 1445 1445 2951 003755 2236 2236 2952 003756 0003 0003 /( 2953 003757 4212 4212 2954 003760 0200 0200 2955 003761 0017 0017 /[ 2956 003762 7406 7406 2957 003763 0200 0200 2958 003764 0013 0013 /; 2959 003765 3354 3354 2960 003766 0000 0000 2961 003767 1042 1042 /TIMES 2962 003770 4040 4040 2963 003771 5042 5042 2964 003772 0006 0006 /: 2965 003773 6330 6330 2966 003774 0000 0000 2967 003775 0060 0060 /\ 2968 003776 4040 4040 2969 003777 4140 4140 2970 004000 0020 0020 /NEGATIVE 2971 004001 1004 1004 2972 004002 0201 0201 2973 004003 0704 0704 /ALPHA 2974 004004 2120 2120 2975 004005 2024 2024 2976 004006 1004 1004 /DECODE 2977 004007 0371 0371 2978 004010 0040 0040 2979 004011 1700 1700 /DOWN 2980 004012 2010 2010 2981 004013 0474 0474 2982 004014 0017 0017 /MINIMUM 2983 004015 7402 7402 2984 004016 0000 0000 2985 004017 0705 0705 /EPSILON 2986 004020 2251 2251 2987 004021 0400 0400 2988 004022 2010 2010 /UNDERLINE 2989 004023 0402 0402 2990 004024 0100 0100 2991 004025 0141 0141 /DEL 2992 004026 2110 2110 2993 004027 2406 2406 2994 004030 1405 1405 /DELTA 2995 004031 0221 0221 2996 004032 2060 2060 2997 004033 0000 0000 /IOTA 2998 004034 4361 4361 2999 004035 0000 0000 3000 004036 0302 0302 /DEGREE 3001 004037 2110 2110 3002 004040 3000 3000 3003 004041 0000 0000 /' 3004 004042 0070 0070 3005 004043 0000 0000 3006 004044 3750 3750 /QUAD 3007 004045 2412 2412 3008 004046 0576 0576 3009 004047 0000 0000 /ABSOLUTE 3010 004050 0774 0774 3011 004051 0000 0000 3012 004052 0040 0040 /ENCODE 3013 004053 2370 2370 3014 004054 0402 0402 3015 004055 0704 0704 /CIRCLE 3016 004056 2211 2211 3017 004057 0434 0434 3018 004060 1243 1243 /* 3019 004061 4370 4370 3020 004062 7052 7052 3021 004063 0040 0040 /? 3022 004064 1544 1544 3023 004065 1400 1400 3024 004066 2017 2017 /RHO 3025 004067 4110 4110 3026 004070 4414 4414 3027 004071 0017 0017 /MAXIMUM 3028 004072 7004 7004 3029 004073 0200 0200 3030 004074 0200 0200 /TILDE 3031 004075 4040 4040 3032 004076 4010 4010 3033 004077 0404 0404 /DOWN ARROW 3034 004100 0775 0775 3035 004101 0020 0020 3036 004102 0744 0744 /UP 3037 004103 0201 0201 3038 004104 0036 0036 3039 004105 0604 0604 /OMEGA 3040 004106 0101 0101 3041 004107 0030 0030 3042 004110 1044 1044 /LEFT 3043 004111 2211 2211 3044 004112 0434 0434 3045 004113 0100 0100 /UP ARROW 3046 004114 2374 2374 3047 004115 0404 0404 3048 004116 0704 0704 /RIGHT 3049 004117 2211 2211 3050 004120 0442 0442 3051 004121 0203 0203 /LEFT ARROW 3052 004122 4250 4250 3053 004123 2010 2010 3054 004124 1741 1741 /LEFT BAR 3055 004125 0040 0040 3056 004126 2010 2010 3057 004127 0201 0201 /RIGHT ARROW 3058 004130 0250 0250 3059 004131 7010 7010 3060 004132 2034 2034 />= 3061 004133 2522 2522 3062 004134 2000 2000 3063 004135 0201 0201 /- 3064 004136 0040 0040 3065 004137 2010 2010 3066 004140 0202 0202 /DIAMOND 3067 004141 4210 4210 3068 004142 5010 5010 3069 004143 3702 3702 /A 3070 004144 2104 2104 3071 004145 4574 4574 3072 004146 2037 2037 /B 3073 004147 7446 7446 3074 004150 2266 2266 3075 004151 1750 1750 /C 3076 004152 1406 1406 3077 004153 0242 0242 3078 004154 2037 2037 /D 3079 004155 7406 7406 3080 004156 0276 0276 3081 004157 3771 3771 /E 3082 004160 1446 1446 3083 004161 0301 0301 3084 004162 3761 3761 /F 3085 004163 1044 1044 3086 004164 0201 0201 3087 004165 1750 1750 /G 3088 004166 1406 1406 3089 004167 2371 2371 3090 004170 3761 3761 /H 3091 004171 0040 0040 3092 004172 2177 2177 3093 004173 0010 0010 /I 3094 004174 1776 1776 3095 004175 0200 0200 3096 004176 1010 1010 /J 3097 004177 0402 0402 3098 004200 0077 0077 3099 004201 3761 3761 /K 3100 004202 0121 0121 3101 004203 0501 0501 3102 004204 3770 3770 /L 3103 004205 0402 0402 3104 004206 0100 0100 3105 004207 3760 3760 /M 3106 004210 2020 2020 3107 004211 0577 0577 3108 004212 3760 3760 /N 3109 004213 2020 2020 3110 004214 2177 2177 3111 004215 1750 1750 /O 3112 004216 1406 1406 3113 004217 0276 0276 3114 004220 3761 3761 /P 3115 004221 1044 1044 3116 004222 2206 2206 3117 004223 1750 1750 /Q 3118 004224 1505 1505 3119 004225 0336 0336 3120 004226 3761 3761 /R 3121 004227 1145 1145 3122 004230 2306 2306 3123 004231 1050 1050 /S 3124 004232 5446 5446 3125 004233 4242 4242 3126 004234 0020 0020 /T 3127 004235 1774 1774 3128 004236 0201 0201 3129 004237 1770 1770 /U 3130 004240 0402 0402 3131 004241 0077 0077 3132 004242 0764 0764 /V 3133 004243 0401 0401 3134 004244 0037 0037 3135 004245 3764 3764 /W 3136 004246 0101 0101 3137 004247 0177 0177 3138 004250 3062 3062 /X 3139 004251 4040 4040 3140 004252 5143 5143 3141 004253 0020 0020 /Y 3142 004254 2760 2760 3143 004255 0401 0401 3144 004256 3032 3032 /Z 3145 004257 1446 1446 3146 004260 1303 1303 3147 004261 0206 0206 /{ 3148 004262 6406 6406 3149 004263 0200 0200 3150 004264 0201 0201 /RIGHT BAR 3151 004265 0040 0040 3152 004266 2076 2076 3153 004267 0010 0010 /} 3154 004270 1405 1405 3155 004271 5410 5410 3156 004272 1105 1105 /$ 3157 004273 2655 2655 3158 004274 2422 2422 3159 004275 3777 3777 /RUBOUT 3160 004276 7777 7777 3161 004277 7777 7777 3162 IFNZRO PLOTER < 3163 3164 /TABLE OF POINTERS TO VECTOR TABLE FOR STANDARD CHARACTER SET 3165 /VECTOR CHARACTERS MUST BE SET UP WITH A DOUBLE POINTER SINCE THE NUMBER OF VECTORS 3166 /PER CHARACTER IS NOT CONSTANT. HENCE, THE POINTERS OCCUR HERE FROM ASCII 040 TO 177 3167 /IN ORDER AND ONE POINTER PER WORD. THE POINTER IS TO THE FIRST VECTOR FOR EACH CHARACTER. 3168 3169 004300 4600 VECTAB, SP 3170 004301 4601 EX 3171 004302 4613 QUO 3172 004303 4630 NU 3173 004304 4644 DO 3174 004305 4664 PC 3175 004306 4700 AM 3176 004307 4716 AP 3177 004310 4725 LP 3178 004311 4732 RP 3179 004312 4737 AS 3180 004313 4750 PL 3181 004314 4756 COM 3182 004315 4765 DA 3183 004316 4770 PE 3184 004317 4776 SL 3185 004320 5000 N0 3186 004321 5014 N1 3187 004322 5022 N2 3188 004323 5035 N3 3189 004324 5053 N4 3190 004325 5060 N5 3191 004326 5072 N6 3192 004327 5106 N7 3193 004330 5111 N8 3194 004331 5132 N9 3195 004332 5146 COL 3196 004333 5161 SC 3197 004334 5175 LAN 3198 004335 5201 EQ 3199 004336 5206 RAN 3200 004337 5212 QUS 3201 004340 5227 AT 3202 004341 5246 A 3203 004342 5253 B 3204 004343 5267 C 3205 004344 5300 D 3206 004345 5307 E 3207 004346 5317 F 3208 004347 5326 G 3209 004350 5341 H 3210 004351 5347 UCI 3211 004352 5356 J 3212 004353 5365 K 3213 004354 5373 L 3214 004355 5377 M 3215 004356 5404 N 3216 004357 5410 O 3217 004360 5422 P 3218 004361 5431 Q 3219 004362 5445 R 3220 004363 5456 S 3221 004364 5473 T 3222 004365 5500 U 3223 004366 5507 V 3224 004367 5513 W 3225 004370 5521 X 3226 004371 5526 Y 3227 004372 5534 UCZ 3228 004373 5541 LBK 3229 004374 5546 RSL 3230 004375 5551 RBK 3231 004376 5556 UA 3232 004377 5564 LA 3233 004400 5572 AG 3234 004401 5575 LCA 3235 004402 5607 LCB 3236 004403 5617 LCC 3237 004404 5630 LCD 3238 004405 5640 LCE 3239 004406 5652 LCF 3240 004407 5661 LCG 3241 004410 5674 LCH 3242 004411 5703 LCI 3243 004412 5713 LCJ 3244 004413 5725 LCK 3245 004414 5734 LCL 3246 004415 5742 LCM 3247 004416 5755 LCN 3248 004417 5765 LCO 3249 004420 5777 LCP 3250 004421 6007 LCQ 3251 004422 6017 LCR 3252 004423 6025 LCS 3253 004424 6034 LCT 3254 004425 6043 LCU 3255 004426 6053 LCV 3256 004427 6057 LCW 3257 004430 6065 LCX 3258 004431 6072 LCY 3259 004432 6103 LCZ 3260 004433 6110 LBC 3261 004434 6120 VER 3262 004435 6125 RBC 3263 004436 6135 TIL 3264 004437 6142 RO 3265 /TABLE OF POINTERS TO VECTOR TABLE FOR ALTERNATE CHARACTER SET 3266 /NOTE THAT SOME CCARACTERS IN THIS SET ARE THE SAME AS IN THE STANDARD 3267 /SO THAT SOME POINTERS IN THIS SET POINT TO THE SAME PLACE AS SOME POINTERS 3268 /OF THE STANDARD SET 3269 3270 004440 4600 APLVTB, SP 3271 004441 6152 APLUML 3272 004442 4732 RP 3273 004443 6170 APLLT 3274 004444 6165 APLLE 3275 004445 5201 EQ 3276 004446 6177 APLGT 3277 004447 5551 RBK 3278 004450 6203 APLOR 3279 004451 6207 APLAND 3280 004452 6213 APLNE 3281 004453 6222 APLDIV 3282 004454 4756 COM 3283 004455 4750 PL 3284 004456 4770 PE 3285 004457 4776 SL 3286 004460 5000 N0 3287 004461 5014 N1 3288 004462 5022 N2 3289 004463 5035 N3 3290 004464 5053 N4 3291 004465 5060 N5 3292 004466 5072 N6 3293 004467 5106 N7 3294 004470 5111 N8 3295 004471 5132 N9 3296 004472 4725 LP 3297 004473 5541 LBK 3298 004474 5161 SC 3299 004475 6237 APLMPY 3300 004476 5146 COL 3301 004477 5546 RSL 3302 004500 6245 APLNEG 3303 004501 6250 APLALP 3304 004502 6261 APLDEC 3305 004503 6266 APLDOW 3306 004504 6275 APLMIN 3307 004505 6301 APLEPS 3308 004506 6313 APLUND 3309 004507 6316 APLDEL 3310 004510 6323 APLDLT 3311 004511 6330 APLIOT 3312 004512 6335 APLDEG 3313 004513 6347 APLAPO 3314 004514 6352 APLQUA 3315 004515 6360 APLABS 3316 004516 6363 APLENC 3317 004517 6370 APLCIR 3318 004520 6402 APLSTR 3319 004521 5212 QUS 3320 004522 6414 APLRHO 3321 004523 6425 APLMAX 3322 004524 6135 TIL 3323 004525 6431 APLDA 3324 004526 6437 APLUP 3325 004527 6446 APLOME 3326 004530 6460 APLLFT 3327 004531 5556 UA 3328 004532 6467 APLRT 3329 004533 5564 LA 3330 004534 6476 APLLBR 3331 004535 6503 APLRA 3332 004536 6174 APLGE 3333 004537 4765 DA 3334 004540 6511 APLDIA 3335 004541 5246 A 3336 004542 5253 B 3337 004543 5267 C 3338 004544 5300 D 3339 004545 5307 E 3340 004546 5317 F 3341 004547 5326 G 3342 004550 5341 H 3343 004551 5347 UCI 3344 004552 5356 J 3345 004553 5365 K 3346 004554 5373 L 3347 004555 5377 M 3348 004556 5404 N 3349 004557 5410 O 3350 004560 5422 P 3351 004561 5431 Q 3352 004562 5445 R 3353 004563 5456 S 3354 004564 5473 T 3355 004565 5500 U 3356 004566 5507 V 3357 004567 5513 W 3358 004570 5521 X 3359 004571 5526 Y 3360 004572 5534 UCZ 3361 004573 6110 LBC 3362 004574 6517 APLRBR 3363 004575 6125 RBC 3364 004576 4644 DO 3365 004577 6142 RO 3366 /TABLE OF VECTORS FOR STANDARD CHARACTER SET. 3367 /EACH 12-BIT WORD CONTAINS ALL THE INFORMATION FOR THE NEXT VECTOR. 3368 /THE CHARACTER CELL IS A 10 X 14 MATRIX WITH 4 ADDITIONAL BLANK SPACES TO THE RIGHT 3369 /OF THE CELL AND 8 ADDITIONAL BLANK SPAAES ABOVE THE CELL (I.E., THE SPACE BETWEEN CELLS 3370 /IN THE SAME LINE IS 4 RASTER UNITS AND THE SPACE BETWEEN LINES IS 8 RASTER UNITS). 3371 /THE BEAM (OR PEN) IS ASSUMED AT THE LOWER LEFT CORNER OF THE CHARACTER CELL INITIALLY, 3372 /AND THE BEAM (OR PEN) MUST BE PUT AT THE LOWER LEFT CORNER OF THE NEXT 3373 /CHARACTER CELL AT THE COMPLETION OF THE PRESENT CHARACTER. EACH 12-BIT WORD IS 3374 /CONSTRUCTED AS FOLLOWS: 3375 / 3376 / BIT 00 SET IF THIS IS THE FIRST VECTOR OF A CHARACTER 3377 / BITS 01-04 X COORDINATE OF TIP COMPARED TO TAIL, I.E., RELATIVE X COMPONENT 3378 / BIT 05 SET IF X COMPONENT OF VECTOR IS NEGATIVE 3379 / BIT 06 SET IF VECTOR IS NOT TO BE DISPLAYED OR DRAWN, I.E., DARK VECTOR 3380 / BITS 07-10 Y COORDINATE OF TIP COMPARED TO TAIL, I.E., RELATIVE Y COMPONENT 3381 / BIT 11 SET IF Y COMPONENT OF VECTOR IS NEGATIVE 3382 / 3383 3384 004600 7440 SP, 7440 /SPACE 3385 004601 5040 EX, 5040 /! 3386 004602 0400 0400 3387 004603 0004 0004 3388 004604 0500 0500 3389 004605 0005 0005 3390 004606 0252 0252 3391 004607 0222 0222 3392 004610 0500 0500 3393 004611 0223 0223 3394 004612 2253 2253 3395 004613 4472 QUO, 4472 /" 3396 004614 0500 0500 3397 004615 0004 0004 3398 004616 0400 0400 3399 004617 0005 0005 3400 004620 0507 0507 3401 004621 1646 1646 3402 004622 0500 0500 3403 004623 0004 0004 3404 004624 0400 0400 3405 004625 0005 0005 3406 004626 0507 0507 3407 004627 1665 1665 3408 004630 4642 NU, 4642 /# 3409 004631 0030 0030 3410 004632 0011 0011 3411 004633 0500 0500 3412 004634 2000 2000 3413 004635 0500 0500 3414 004636 0010 0010 3415 004637 0031 0031 3416 004640 0010 0010 3417 004641 0400 0400 3418 004642 2100 2100 3419 004643 3253 3253 3420 004644 4246 DO, 4246 /$ 3421 004645 0405 0405 3422 004646 1000 1000 3423 004647 0404 0404 3424 004650 0004 0004 3425 004651 0504 0504 3426 004652 1100 1100 3427 004653 0504 0504 3428 004654 0004 0004 3429 004655 0404 0404 3430 004656 1000 1000 3431 004657 0405 0405 3432 004660 1150 1150 3433 004661 0037 0037 3434 004662 0003 0003 3435 004663 2242 2242 3436 004664 6434 PC, 6434 /% 3437 004665 1543 1543 3438 004666 0007 0007 3439 004667 0700 0700 3440 004670 0006 0006 3441 004671 0600 0600 3442 004672 0463 0463 3443 004673 0007 0007 3444 004674 0600 0600 3445 004675 0006 0006 3446 004676 0700 0700 3447 004677 2051 2051 3448 004700 6440 AM, 6440 /& 3449 004701 2524 2524 3450 004702 0004 0004 3451 004703 0404 0404 3452 004704 0400 0400 3453 004705 0405 0405 3454 004706 0005 0005 3455 004707 1515 1515 3456 004710 0005 0005 3457 004711 0405 0405 3458 004712 1400 1400 3459 004713 0404 0404 3460 004714 0004 0004 3461 004715 1051 1051 3462 004716 5064 AP, 5064 /' 3463 004717 0406 0406 3464 004720 0004 0004 3465 004721 0500 0500 3466 004722 0005 0005 3467 004723 0400 0400 3468 004724 2073 2073 3469 004725 5474 LP, 5474 /( 3470 004726 0507 0507 3471 004727 0021 0021 3472 004730 0407 0407 3473 004731 2040 2040 3474 004732 5074 RP, 5074 /) 3475 004733 0407 0407 3476 004734 0021 0021 3477 004735 0507 0507 3478 004736 2240 2240 3479 004737 4646 AS, 4646 /* 3480 004740 1020 1020 3481 004741 0511 0511 3482 004742 0510 0510 3483 004743 1021 1021 3484 004744 0510 0510 3485 004745 1100 1100 3486 004746 2000 2000 3487 004747 1257 1257 3488 004750 5246 PL, 5246 /+ 3489 004751 0020 0020 3490 004752 0011 0011 3491 004753 1100 1100 3492 004754 2000 2000 3493 004755 1257 1257 3494 004756 5047 COM, 5047 /, 3495 004757 0406 0406 3496 004760 0004 0004 3497 004761 0500 0500 3498 004762 0005 0005 3499 004763 0400 0400 3500 004764 2040 2040 3501 004765 4256 DA, 4256 /- 3502 004766 2000 2000 3503 004767 1257 1257 3504 004770 5040 PE, 5040 /. 3505 004771 0400 0400 3506 004772 0004 0004 3507 004773 0500 0500 3508 004774 0005 0005 3509 004775 2440 2440 3510 004776 6434 SL, 6434 // 3511 004777 1075 1075 3512 005000 6434 N0, 6434 /0 3513 005001 0303 0303 3514 005002 0302 0302 3515 005003 1500 1500 3516 005004 0507 0507 3517 005005 0021 0021 3518 005006 0407 0407 3519 005007 1400 1400 3520 005010 0406 0406 3521 005011 0020 0020 3522 005012 0506 0506 3523 005013 1475 1475 3524 005014 4464 N1, 4464 /1 3525 005015 0610 0610 3526 005016 0035 0035 3527 005017 1100 1100 3528 005020 2000 2000 3529 005021 1240 1240 3530 005022 4070 N2, 4070 /2 3531 005023 0404 0404 3532 005024 1400 1400 3533 005025 0405 0405 3534 005026 0007 0007 3535 005027 0505 0505 3536 005030 1500 1500 3537 005031 0505 0505 3538 005032 0013 0013 3539 005033 2400 2400 3540 005034 1040 1040 3541 005035 4070 N3, 4070 /3 3542 005036 0404 0404 3543 005037 1400 1400 3544 005040 0405 0405 3545 005041 0007 0007 3546 005042 0505 0505 3547 005043 1100 1100 3548 005044 1000 1000 3549 005045 0405 0405 3550 005046 0007 0007 3551 005047 0505 0505 3552 005050 1500 1500 3553 005051 0504 0504 3554 005052 3445 3445 3555 005053 6040 N4, 6040 /4 3556 005054 0034 0034 3557 005055 1723 1723 3558 005056 2000 2000 3559 005057 1253 1253 3560 005060 4044 N5, 4044 /5 3561 005061 0405 0405 3562 005062 1400 1400 3563 005063 0404 0404 3564 005064 0010 0010 3565 005065 0504 0504 3566 005066 2100 2100 3567 005067 0014 0014 3568 005070 2400 2400 3569 005071 1075 1075 3570 005072 4056 N6, 4056 /6 3571 005073 2000 2000 3572 005074 0405 0405 3573 005075 0007 0007 3574 005076 0505 0505 3575 005077 1500 1500 3576 005100 0504 0504 3577 005101 0024 0024 3578 005102 0404 0404 3579 005103 1400 1400 3580 005104 0405 0405 3581 005105 1071 1071 3582 005106 6434 N7, 6434 /7 3583 005107 2500 2500 3584 005110 3475 3475 3585 005111 4456 N8, 4456 /8 3586 005112 1400 1400 3587 005113 0404 0404 3588 005114 0006 0006 3589 005115 0504 0504 3590 005116 1500 1500 3591 005117 0505 0505 3592 005120 0007 0007 3593 005121 0405 0405 3594 005122 0505 0505 3595 005123 0007 0007 3596 005124 0405 0405 3597 005125 1400 1400 3598 005126 0404 0404 3599 005127 0006 0006 3600 005130 0504 0504 3601 005131 1457 1457 3602 005132 4044 N9, 4044 /9 3603 005133 0405 0405 3604 005134 1400 1400 3605 005135 0404 0404 3606 005136 0024 0024 3607 005137 0504 0504 3608 005140 1500 1500 3609 005141 0505 0505 3610 005142 0007 0007 3611 005143 0405 0405 3612 005144 2000 2000 3613 005145 1057 1057 3614 005146 5044 COL, 5044 /: 3615 005147 0400 0400 3616 005150 0004 0004 3617 005151 0500 0500 3618 005152 0005 0005 3619 005153 0060 0060 3620 005154 0400 0400 3621 005155 0004 0004 3622 005156 0500 0500 3623 005157 0005 0005 3624 005160 2465 2465 3625 005161 5064 SC, 5064 /; 3626 005162 0400 0400 3627 005163 0004 0004 3628 005164 0500 0500 3629 005165 0005 0005 3630 005166 0461 0461 3631 005167 0500 0500 3632 005170 0004 0004 3633 005171 0400 0400 3634 005172 0005 0005 3635 005173 0507 0507 3636 005174 2442 2442 3637 005175 6274 LAN, 6274 /< 3638 005176 2117 2117 3639 005177 2017 2017 3640 005200 1240 1240 3641 005201 4262 EQ, 4262 /= 3642 005202 2000 2000 3643 005203 0051 0051 3644 005204 2100 2100 3645 005205 3253 3253 3646 005206 4240 RAN, 4240 /> 3647 005207 2016 2016 3648 005210 2116 2116 3649 005211 3275 3275 3650 005212 4470 QUS, 4470 /? 3651 005213 0404 0404 3652 005214 0400 0400 3653 005215 0405 0405 3654 005216 0007 0007 3655 005217 0707 0707 3656 005220 0005 0005 3657 005221 0245 0245 3658 005222 0500 0500 3659 005223 0005 0005 3660 005224 0400 0400 3661 005225 0004 0004 3662 005226 2045 2045 3663 005227 5654 AT, 5654 /@ 3664 005230 0010 0010 3665 005231 0500 0500 3666 005232 0305 0305 3667 005233 0205 0205 3668 005234 1000 1000 3669 005235 0010 0010 3670 005236 0504 0504 3671 005237 1100 1100 3672 005240 0505 0505 3673 005241 0015 0015 3674 005242 0405 0405 3675 005243 1000 1000 3676 005244 0404 0404 3677 005245 1251 1251 3678 005246 5234 A, 5234 /A 3679 005247 1235 1235 3680 005250 0512 0512 3681 005251 1500 1500 3682 005252 3053 3053 3683 005253 4034 B, 4034 /B 3684 005254 2000 2000 3685 005255 0405 0405 3686 005256 0007 0007 3687 005257 0505 0505 3688 005260 2100 2100 3689 005261 2000 2000 3690 005262 0405 0405 3691 005263 0007 0007 3692 005264 0505 0505 3693 005265 2100 2100 3694 005266 3440 3440 3695 005267 6470 C, 6470 /C 3696 005270 0504 0504 3697 005271 1500 1500 3698 005272 0505 0505 3699 005273 0025 0025 3700 005274 0405 0405 3701 005275 1400 1400 3702 005276 0404 0404 3703 005277 1045 1045 3704 005300 4034 D, 4034 /D 3705 005301 2000 2000 3706 005302 0405 0405 3707 005303 0025 0025 3708 005304 0505 0505 3709 005305 2100 2100 3710 005306 3440 3440 3711 005307 6474 E, 6474 /E 3712 005310 2500 2500 3713 005311 0017 0017 3714 005312 1400 1400 3715 005313 1500 1500 3716 005314 0017 0017 3717 005315 2400 2400 3718 005316 1040 1040 3719 005317 6474 F, 6474 /F 3720 005320 2500 2500 3721 005321 0017 0017 3722 005322 1400 1400 3723 005323 1500 1500 3724 005324 0017 0017 3725 005325 3440 3440 3726 005326 6470 G, 6470 /G 3727 005327 0504 0504 3728 005330 1500 1500 3729 005331 0505 0505 3730 005332 0025 0025 3731 005333 0405 0405 3732 005334 1400 1400 3733 005335 0404 0404 3734 005336 0012 0012 3735 005337 1100 1100 3736 005340 2057 2057 3737 005341 4034 H, 4034 /H 3738 005342 0017 0017 3739 005343 2400 2400 3740 005344 0016 0016 3741 005345 0035 0035 3742 005346 1040 1040 3743 005347 4274 UCI, 4274 /I 3744 005350 2000 2000 3745 005351 1100 1100 3746 005352 0035 0035 3747 005353 1100 1100 3748 005354 2000 2000 3749 005355 1240 1240 3750 005356 4050 J, 4050 /J 3751 005357 0005 0005 3752 005360 0405 0405 3753 005361 1400 1400 3754 005362 0404 0404 3755 005363 0030 0030 3756 005364 1075 1075 3757 005365 4034 K, 4034 /K 3758 005366 0021 0021 3759 005367 2020 2020 3760 005370 1313 1313 3761 005371 1423 1423 3762 005372 1040 1040 3763 005373 4074 L, 4074 /L 3764 005374 0035 0035 3765 005375 2400 2400 3766 005376 1040 1040 3767 005377 4034 M, 4034 /M 3768 005400 1217 1217 3769 005401 1216 1216 3770 005402 0035 0035 3771 005403 1040 1040 3772 005404 4034 N, 4034 /N 3773 005405 2435 2435 3774 005406 0034 0034 3775 005407 1075 1075 3776 005410 4440 O, 4440 /O 3777 005411 0504 0504 3778 005412 0024 0024 3779 005413 0404 0404 3780 005414 1400 1400 3781 005415 0405 0405 3782 005416 0025 0025 3783 005417 0505 0505 3784 005420 1500 1500 3785 005421 3040 3040 3786 005422 4034 P, 4034 /P 3787 005423 2000 2000 3788 005424 0405 0405 3789 005425 0007 0007 3790 005426 0505 0505 3791 005427 2100 2100 3792 005430 3457 3457 3793 005431 4440 Q, 4440 /Q 3794 005432 0504 0504 3795 005433 0024 0024 3796 005434 0404 0404 3797 005435 1400 1400 3798 005436 0405 0405 3799 005437 0023 0023 3800 005440 0707 0707 3801 005441 1300 1300 3802 005442 1246 1246 3803 005443 0607 0607 3804 005444 1040 1040 3805 005445 4034 R, 4034 /R 3806 005446 2000 2000 3807 005447 0405 0405 3808 005450 0007 0007 3809 005451 0505 0505 3810 005452 2100 2100 3811 005453 1200 1200 3812 005454 1217 1217 3813 005455 1040 1040 3814 005456 4044 S, 4044 /S 3815 005457 0405 0405 3816 005460 1400 1400 3817 005461 0404 0404 3818 005462 0006 0006 3819 005463 0504 0504 3820 005464 1500 1500 3821 005465 0504 0504 3822 005466 0006 0006 3823 005467 0404 0404 3824 005470 1400 1400 3825 005471 0405 0405 3826 005472 1071 1071 3827 005473 4074 T, 4074 /T 3828 005474 2400 2400 3829 005475 1300 1300 3830 005476 0035 0035 3831 005477 2240 2240 3832 005500 4074 U, 4074 /U 3833 005501 0031 0031 3834 005502 0405 0405 3835 005503 1400 1400 3836 005504 0404 0404 3837 005505 0030 0030 3838 005506 1075 1075 3839 005507 4074 V, 4074 /V 3840 005510 1235 1235 3841 005511 1234 1234 3842 005512 1075 1075 3843 005513 4074 W, 4074 /W 3844 005514 0435 0435 3845 005515 0634 0634 3846 005516 0635 0635 3847 005517 0434 0434 3848 005520 1075 1075 3849 005521 6434 X, 6434 /X 3850 005522 1317 1317 3851 005523 1316 1316 3852 005524 2435 2435 3853 005525 1040 1040 3854 005526 4074 Y, 4074 /Y 3855 005527 1217 1217 3856 005530 1216 1216 3857 005531 1317 1317 3858 005532 0017 0017 3859 005533 2240 2240 3860 005534 4074 UCZ, 4074 /Z 3861 005535 2400 2400 3862 005536 2535 2535 3863 005537 2400 2400 3864 005540 1040 1040 3865 005541 6074 LBK, 6074 /[ 3866 005542 1500 1500 3867 005543 0035 0035 3868 005544 1400 1400 3869 005545 1440 1440 3870 005546 4074 RSL, 4074 /\ 3871 005547 2435 2435 3872 005550 1040 1040 3873 005551 4474 RBK, 4474 /] 3874 005552 1400 1400 3875 005553 0035 0035 3876 005554 1500 1500 3877 005555 3040 3040 3878 005556 4260 UA, 4260 /^ 3879 005557 1014 1014 3880 005560 1015 1015 3881 005561 1114 1114 3882 005562 0035 0035 3883 005563 2240 2240 3884 005564 5246 LA, 5246 /_(LEFT ARROW) 3885 005565 1310 1310 3886 005566 1210 1210 3887 005567 1311 1311 3888 005570 2400 2400 3889 005571 1057 1057 3890 005572 4674 AG, 4674 /` 3891 005573 1011 1011 3892 005574 1665 1665 3893 005575 6052 LCA, 6052 /a 3894 005576 1100 1100 3895 005577 0505 0505 3896 005600 0003 0003 3897 005601 0405 0405 3898 005602 1000 1000 3899 005603 0012 0012 3900 005604 0504 0504 3901 005605 0700 0700 3902 005606 2657 2657 3903 005607 4474 LCB, 4474 /b 3904 005610 0035 0035 3905 005611 1000 1000 3906 005612 0404 0404 3907 005613 0006 0006 3908 005614 0504 0504 3909 005615 1100 1100 3910 005616 3057 3057 3911 005617 6052 LCC, 6052 /c 3912 005620 0504 0504 3913 005621 0500 0500 3914 005622 0505 0505 3915 005623 0007 0007 3916 005624 0405 0405 3917 005625 0400 0400 3918 005626 0404 0404 3919 005627 1445 1445 3920 005630 6074 LCD, 6074 /d 3921 005631 0035 0035 3922 005632 1100 1100 3923 005633 0504 0504 3924 005634 0006 0006 3925 005635 0404 0404 3926 005636 1000 1000 3927 005637 1457 1457 3928 005640 4446 LCE, 4446 /e 3929 005641 1400 1400 3930 005642 0004 0004 3931 005643 0504 0504 3932 005644 0500 0500 3933 005645 0505 0505 3934 005646 0007 0007 3935 005647 0405 0405 3936 005650 0600 0600 3937 005651 1640 1640 3938 005652 5040 LCF, 5040 /f 3939 005653 0030 0030 3940 005654 0404 0404 3941 005655 0400 0400 3942 005656 0557 0557 3943 005657 1100 1100 3944 005660 3057 3057 3945 005661 4445 LCG, 4445 /g 3946 005662 0405 0405 3947 005663 0400 0400 3948 005664 0404 0404 3949 005665 0022 0022 3950 005666 1100 1100 3951 005667 0505 0505 3952 005670 0007 0007 3953 005671 0405 0405 3954 005672 1000 1000 3955 005673 1440 1440 3956 005674 4440 LCH, 4440 /h 3957 005675 0034 0034 3958 005676 0017 0017 3959 005677 1000 1000 3960 005700 0405 0405 3961 005701 0013 0013 3962 005702 1440 1440 3963 005703 5240 LCI, 5240 /i 3964 005704 0016 0016 3965 005705 0046 0046 3966 005706 0002 0002 3967 005707 0300 0300 3968 005710 0003 0003 3969 005711 0200 0200 3970 005712 2265 2265 3971 005713 4447 LCJ, 4447 /j 3972 005714 0400 0400 3973 005715 0404 0404 3974 005716 0020 0020 3975 005717 0046 0046 3976 005720 0002 0002 3977 005721 0300 0300 3978 005722 0003 0003 3979 005723 0200 0200 3980 005724 2265 2265 3981 005725 4440 LCK, 4440 /k 3982 005726 0034 0034 3983 005727 0023 0023 3984 005730 1212 1212 3985 005731 0707 0707 3986 005732 1017 1017 3987 005733 1440 1440 3988 005734 4674 LCL, 4674 /l 3989 005735 0400 0400 3990 005736 0035 0035 3991 005737 0500 0500 3992 005740 1000 1000 3993 005741 1640 1640 3994 005742 4240 LCM, 4240 /m 3995 005743 0016 0016 3996 005744 0005 0005 3997 005745 0404 0404 3998 005746 0405 0405 3999 005747 0013 0013 4000 005750 0012 0012 4001 005751 0404 0404 4002 005752 0405 0405 4003 005753 0013 0013 4004 005754 1240 1240 4005 005755 4440 LCN, 4440 /n 4006 005756 0016 0016 4007 005757 0005 0005 4008 005760 0404 0404 4009 005761 0400 0400 4010 005762 0405 0405 4011 005763 0013 0013 4012 005764 1440 1440 4013 005765 5040 LCO, 5040 /o 4014 005766 0504 0504 4015 005767 0006 0006 4016 005770 0404 0404 4017 005771 0400 0400 4018 005772 0405 0405 4019 005773 0007 0007 4020 005774 0505 0505 4021 005775 0500 0500 4022 005776 2440 2440 4023 005777 4451 LCP, 4451 /p 4024 006000 0026 0026 4025 006001 1000 1000 4026 006002 0405 0405 4027 006003 0007 0007 4028 006004 0505 0505 4029 006005 1100 1100 4030 006006 3040 3040 4031 006007 6051 LCQ, 6051 /q 4032 006010 0026 0026 4033 006011 1100 1100 4034 006012 0505 0505 4035 006013 0007 0007 4036 006014 0405 0405 4037 006015 1000 1000 4038 006016 1440 1440 4039 006017 4440 LCR, 4440 /r 4040 006020 0016 0016 4041 006021 0007 0007 4042 006022 0606 0606 4043 006023 0400 0400 4044 006024 1657 1657 4045 006025 4440 LCS, 4440 /s 4046 006026 1000 1000 4047 006027 0404 0404 4048 006030 1506 1506 4049 006031 0404 0404 4050 006032 1000 1000 4051 006033 1457 1457 4052 006034 4260 LCT, 4260 /t 4053 006035 1400 1400 4054 006036 0750 0750 4055 006037 0025 0025 4056 006040 0405 0405 4057 006041 0400 0400 4058 006042 1440 1440 4059 006043 4456 LCU, 4456 /u 4060 006044 0013 0013 4061 006045 0405 0405 4062 006046 0400 0400 4063 006047 0404 0404 4064 006050 0012 0012 4065 006051 0017 0017 4066 006052 1440 1440 4067 006053 4456 LCV, 4456 /v 4068 006054 0617 0617 4069 006055 0616 0616 4070 006056 1457 1457 4071 006057 4256 LCW, 4256 /w 4072 006060 0417 0417 4073 006061 0416 0416 4074 006062 0417 0417 4075 006063 0416 0416 4076 006064 1257 1257 4077 006065 4440 LCX, 4440 /x 4078 006066 1416 1416 4079 006067 1540 1540 4080 006070 1417 1417 4081 006071 1440 1440 4082 006072 4456 LCY, 4456 /y 4083 006073 0013 0013 4084 006074 0405 0405 4085 006075 1000 1000 4086 006076 0016 0016 4087 006077 0023 0023 4088 006100 0505 0505 4089 006101 1100 1100 4090 006102 3050 3050 4091 006103 4456 LCZ, 4456 /z 4092 006104 1400 1400 4093 006105 1517 1517 4094 006106 1400 1400 4095 006107 1440 1440 4096 006110 5674 LBC, 5674 /{ 4097 006111 0505 0505 4098 006112 0007 0007 4099 006113 0505 0505 4100 006114 0405 0405 4101 006115 0007 0007 4102 006116 0405 0405 4103 006117 1640 1640 4104 006120 5274 VER, 5274 /| 4105 006121 0013 0013 4106 006122 0051 0051 4107 006123 0013 0013 4108 006124 2240 2240 4109 006125 4674 RBC, 4674 /} 4110 006126 0405 0405 4111 006127 0007 0007 4112 006130 0405 0405 4113 006131 0505 0505 4114 006132 0007 0007 4115 006133 0505 0505 4116 006134 2440 2440 4117 006135 4254 TIL, 4254 /~ 4118 006136 0404 0404 4119 006137 1005 1005 4120 006140 0404 0404 4121 006141 1261 1261 4122 006142 6404 RO, 6404 /RUBOUT 4123 006143 2504 2504 4124 006144 2404 2404 4125 006145 2504 2504 4126 006146 2404 2404 4127 006147 2504 2504 4128 006150 2404 2404 4129 006151 1075 1075 4130 /TABLE OF VECTORS FOR ALTERNATE (APL) CHARACTER SET 4131 4132 006152 4270 APLUML, 4270 /UMLAUT 4133 006153 0004 0004 4134 006154 0400 0400 4135 006155 0005 0005 4136 006156 0500 0500 4137 006157 1440 1440 4138 006160 0400 0400 4139 006161 0004 0004 4140 006162 0500 0500 4141 006163 0005 0005 4142 006164 1671 1671 4143 006165 4240 APLLE, 4240 /=< 4144 006166 2000 2000 4145 006167 2340 2340 4146 006170 2270 APLLT, 2270 /< 4147 006171 2113 2113 4148 006172 2013 2013 4149 006173 1245 1245 4150 006174 4240 APLGE, 4240 />= 4151 006175 2000 2000 4152 006176 2340 2340 4153 006177 0244 APLGT, 0244 /> 4154 006200 2012 2012 4155 006201 2112 2112 4156 006202 3271 3271 4157 006203 4070 APLOR, 4070 /OR 4158 006204 1225 1225 4159 006205 1224 1224 4160 006206 1071 1071 4161 006207 4044 APLAND, 4044 /AND 4162 006210 1224 1224 4163 006211 1225 1225 4164 006212 1045 1045 4165 006213 4450 APLNE, 4450 /=/ 4166 006214 2024 2024 4167 006215 0047 0047 4168 006216 2100 2100 4169 006217 0053 0053 4170 006220 2000 2000 4171 006221 1253 1253 4172 006222 4256 APLDIV, 4256 /DIVIDE 4173 006223 2000 2000 4174 006224 0744 0744 4175 006225 0500 0500 4176 006226 0004 0004 4177 006227 0400 0400 4178 006230 0005 0005 4179 006231 0051 0051 4180 006232 0005 0005 4181 006233 0500 0500 4182 006234 0004 0004 4183 006235 0400 0400 4184 006236 2053 2053 4185 006237 4246 APLMPY, 4246 /MULTIPLY 4186 006240 2020 2020 4187 006241 1111 1111 4188 006242 1110 1110 4189 006243 2021 2021 4190 006244 1247 1247 4191 006245 4274 APLNEG, 4274 /NEGATE 4192 006246 2000 2000 4193 006247 1275 1275 4194 006250 6264 APLALP, 6264 /ALPHA 4195 006251 1115 1115 4196 006252 0500 0500 4197 006253 0504 0504 4198 006254 0004 0004 4199 006255 0404 0404 4200 006256 0400 0400 4201 006257 1015 1015 4202 006260 1251 1251 4203 006261 4244 APLDEC, 4244 /DECODE 4204 006262 2000 2000 4205 006263 1100 1100 4206 006264 0024 0024 4207 006265 2271 2271 4208 006266 4244 APLDOW, 4244 /DOWN 4209 006267 0020 0020 4210 006270 0404 0404 4211 006271 1000 1000 4212 006272 0405 0405 4213 006273 0021 0021 4214 006274 1245 1245 4215 006275 4470 APLMIN, 4470 /MINIMUM 4216 006276 0025 0025 4217 006277 1400 1400 4218 006300 1445 1445 4219 006301 6066 APLEPS, 6066 /EPSILON 4220 006302 1300 1300 4221 006303 0505 0505 4222 006304 0005 0005 4223 006305 1200 1200 4224 006306 1300 1300 4225 006307 0005 0005 4226 006310 0405 0405 4227 006311 1200 1200 4228 006312 1447 1447 4229 006313 4240 APLUND, 4240 /UNDERLINN 4230 006314 2000 2000 4231 006315 1240 1240 4232 006316 5250 APLDEL, 5250 /DEL 4233 006317 1120 1120 4234 006320 2000 2000 4235 006321 1121 1121 4236 006322 2251 2251 4237 006323 4244 APLDLT, 4244 /DELTA 4238 006324 1220 1220 4239 006325 1221 1221 4240 006326 2100 2100 4241 006327 3245 3245 4242 006330 4664 APLIOT, 4664 /IOTA 4243 006331 0400 0400 4244 006332 0021 0021 4245 006333 0400 0400 4246 006334 1645 1645 4247 006335 5052 APLDEG, 5052 /DEGREE 4248 006336 0400 0400 4249 006337 0404 0404 4250 006340 0004 0004 4251 006341 0504 0504 4252 006342 0500 0500 4253 006343 0505 0505 4254 006344 0005 0005 4255 006345 0405 0405 4256 006346 2453 2453 4257 006347 5060 APLAPO, 5060 /APOSTROPHE 4258 006350 0010 0010 4259 006351 2271 2271 4260 006352 4244 APLQUA, 4244 /QUAD 4261 006353 0024 0024 4262 006354 2000 2000 4263 006355 0025 0025 4264 006356 2100 2100 4265 006357 3245 3245 4266 006360 5274 APLABS, 5274 /ABSOLUTE 4267 006361 0035 0035 4268 006362 2240 2240 4269 006363 4270 APLENC, 4270 /ENCODE 4270 006364 2000 2000 4271 006365 1100 1100 4272 006366 0025 0025 4273 006367 2245 2245 4274 006370 4644 APLCIR, 4644 /CIRCLE 4275 006371 1000 1000 4276 006372 0606 0606 4277 006373 0010 0010 4278 006374 0706 0706 4279 006375 1100 1100 4280 006376 0707 0707 4281 006377 0011 0011 4282 006400 0607 0607 4283 006401 2645 2645 4284 006402 4446 APLSTR, 4446 /STAR 4285 006403 0610 0610 4286 006404 1102 1102 4287 006405 1003 1003 4288 006406 0012 0012 4289 006407 0013 0013 4290 006410 1002 1002 4291 006411 1103 1103 4292 006412 0611 0611 4293 006413 1447 1447 4294 006414 4440 APLRHO, 4440 /RHO 4295 006415 0022 0022 4296 006416 0404 0404 4297 006417 0400 0400 4298 006420 0405 0405 4299 006421 0005 0005 4300 006422 0505 0505 4301 006423 1100 1100 4302 006424 3053 3053 4303 006425 4444 APLMAX, 4444 /MAXIMUM 4304 006426 0024 0024 4305 006427 1400 1400 4306 006430 1471 1471 4307 006431 4274 APLDA, 4274 /DOWN ARROW 4308 006432 0035 0035 4309 006433 1114 1114 4310 006434 1015 1015 4311 006435 1014 1014 4312 006436 1255 1255 4313 006437 4270 APLUP, 4270 /UP 4314 006440 0021 0021 4315 006441 0405 0405 4316 006442 1000 1000 4317 006443 0404 0404 4318 006444 0020 0020 4319 006445 1271 1271 4320 006446 4264 APLOME, 4264 /OMEGA 4321 006447 0015 0015 4322 006450 0405 0405 4323 006451 0400 0400 4324 006452 0010 0010 4325 006453 0011 0011 4326 006454 0400 0400 4327 006455 0404 0404 4328 006456 0014 0014 4329 006457 1265 1265 4330 006460 4244 APLLFT, 4244 /LEFT 4331 006461 1400 1400 4332 006462 0404 0404 4333 006463 0014 0014 4334 006464 0504 0504 4335 006465 1500 1500 4336 006466 3271 3271 4337 006467 6270 APLRT, 6270 /RIGHT 4338 006470 1500 1500 4339 006471 0505 0505 4340 006472 0015 0015 4341 006473 0405 0405 4342 006474 1400 1400 4343 006475 1245 1245 4344 006476 4244 APLLBR, 4244 /LEFT BAR 4345 006477 0024 0024 4346 006500 0013 0013 4347 006501 2000 2000 4348 006502 1257 1257 4349 006503 4056 APLRA, 4056 /RIGNT ARROW 4350 006504 2400 2400 4351 006505 1312 1312 4352 006506 1213 1213 4353 006507 1313 1313 4354 006510 2247 2247 4355 006511 5244 APLDIA, 5244 /DIAMOND 4356 006512 1012 1012 4357 006513 1112 1112 4358 006514 1113 1113 4359 006515 1013 1013 4360 006516 2245 2245 4361 006517 4256 APLRBR, 4256 /RIGHT BAR 4362 006520 2000 2000 4363 006521 0012 0012 4364 006522 0025 0025 4365 006523 1245 1245 4366 006524 4000 STOPCH, 4000 /A STOP CHARACTER MUST END THIS TABLE 4367 > 4368 4369 PAGE 4370 /THIS IS A SHORTENED VERSION OF THE PROGRAM UTIL10 WHICH IS USED 4371 /TO LOGIN AND LOGOUT THE DEC-10. ONE ARGUMENT IS USED. IF THE 4372 /ARGUMENT IS 1, THE ACTION IS LOGIN; IF 0 THE ACTION IS LOGOUT. 4373 /WORD 7777 OF FIELD 1 (SYS AREA) IS PRESUMED AS A STATUS WORD. 4374 /BIT 11 IF SET INDICATES LOGGED IN; IF CLEAR,LOGGED OUT. 4375 /OTHER BITS ARE USED FOR OTHER PUTPOSES BY OTHER PROGRAMS, BUT 4376 /ARE NOT RELEVANT HERE. 4377 4378 006600 0000 UTIL10, 0 /STARTING ADDRESS FOR SUBROUTINE 4379 006601 6170 TENTFL /SET THE DEC-10 OUTPUT FLAG (IT IS KEPT CLEAR IN MAIN PROGRAM) 4380 006602 6211 CDF 10 /POINT TO DF 1 FOR C.D. TABLES AND STATUS WORD 4381 006603 1652 TAD I STATPT /GET STATUS WORD 4382 006604 3253 DCA OLDST /AND STORE IT 4383 006605 6201 CDF 0 /NO; ENTRY IS BY SUBROUTINE CALL; CHANGE TO DF 0 4384 006606 1600 TAD I UTIL10 /GET ARGUMENT 4385 006607 2200 ISZ UTIL10 /POINT TO RETURN ADDRESS 4386 006610 3254 DCA NEWST /STORE ARG AS STATUS TO BE ACHIEVED BY SUBROUTINE 4387 / 4388 006611 1254 BEGLPS, TAD NEWST /COME HERE AFTER NEW STATUS WORD IS SET 4389 006612 7040 CMA /COMPUTE BITS TO BE CLEARED AS 4390 006613 0253 AND OLDST / OLD.AND.NOT.NEW 4391 006614 3262 DCA CLRREG /STORE BITS TO BE CLEARED 4392 006615 1253 TAD OLDST /COMPUTE BITS TO BE SET AS 4393 006616 7040 CMA / NEW.AND.NOT.OLD 4394 006617 0254 AND NEWST 4395 006620 3263 DCA SETREG /STORE BITS TO BE SET 4396 006621 1377 TAD (SETCLR+27 /BEGIN CLEAR ROUTINE BY 4397 006622 3314 DCA SCPT /SETTING POINTER TO BOTTOM OF TABLE 4398 006623 1262 NXTCLR, TAD CLRREG /GET CLEAR WORD 4399 006624 7450 SNA /ZERO? 4400 006625 5236 JMP CLRDON /YES; NO MORE CLEARING NECESSARY 4401 006626 7110 CLL RAR /NO; SHIFT RIGHT-MOST BIT INTO LINK 4402 006627 3262 DCA CLRREG /STORE SHIFTED WORD 4403 006630 7430 SZL /TAKE CLEAR ACTION FOR THIS BIT? 4404 006631 4264 JMS TRAREC /YES 4405 006632 7344 STA CLL RAL /NO; TAD (-2 4406 006633 1314 TAD SCPT /DECREMENT POINTER BY 2 4407 006634 3314 DCA SCPT /AND STORE IT 4408 006635 5223 JMP NXTCLR /GO BACK AND CLEAR MORE 4409 006636 1376 CLRDON, TAD (SETCLR /BEGIN SET ROUTINE BY 4410 006637 3314 DCA SCPT /SETTING POINTER TO TOP OF TABLE 4411 006640 1263 NXTSET, TAD SETREG /GET SET WORD 4412 006641 7450 SNA /ZERO? 4413 006642 5255 JMP FIXSTA /YES; NO MORE SETTING NECESSARY 4414 006643 7104 CLL RAL /NO; SHIFT LEFT-MOST BIT TO LINK 4415 006644 3263 DCA SETREG /STORE SHIFTED WORD 4416 006645 7430 SZL /TAKE SET ACTION FOR THIS BIT? 4417 006646 4264 JMS TRAREC /YES 4418 006647 2314 ISZ SCPT /NO; INCREMENT POINTER 4419 006650 2314 ISZ SCPT /BY 2 4420 006651 5240 JMP NXTSET /GO BACK AND SET MORE 4421 4422 006652 7777 STATPT, 7777 /POINTER TO STATUS WORD IN FIELD 1 4423 006653 0000 OLDST, 0 /LOCALLY STORED VALUE OF 17777 (OLD STATUS WORD) 4424 006654 0000 NEWST, 0 /STATUS WORD AS IT SHOULD APPEAR AFTER EXECUTION OF THIS SUBROUTINE 4425 006655 6211 FIXSTA, CDF 10 /CHANGE TO DF 1 4426 006656 1254 TAD NEWST /GET NEW STATUS WORD 4427 006657 3652 DCA I STATPT /AND PUT IT IN 17777 4428 006660 6201 CDF 0 /RESET DATA FIELD 0 4429 006661 5600 RETURN, JMP I UTIL10 /ULTIMATELY COME HERE TO LEAVE ROUTINE 4430 / 4431 006662 0000 CLRREG, 0 /BITS TO BE CLEARED 4432 006663 0000 SETREG, 0 /BITS TO BE SET 4433 / 4434 006664 0000 TRAREC, 0 /SUBROUTINE TO TAKE ACTION ASSOCIATED WITH SET OR CLEAR BIT 4435 006665 1375 TAD (BUFFER /GET ADDRESS OF DEC-10 TEXT RETURN BUFFER 4436 006666 3774 DCA IBP /AND SET FILL POINTER 4437 006667 1375 TAD (BUFFER /LIKEWISE 4438 006670 3773 DCA OBP /SET EMPTY POINTER 4439 006671 1714 TAD I SCPT /GET APPROPRIATE WORD FROM SET/CLEAR TABLE 4440 006672 3315 DCA TRPT /AND STORE AS A POINTER 4441 006673 4316 MORE, JMS TRANS /TRANSMIT THE APPROPRIATE COMMAND 4442 006674 2315 ISZ TRPT /POINT TO THE EXPECTED RETURN STRING 4443 006675 1715 TAD I TRPT /GET THE FIRST CHARACTER FROM THE RETURN STRING 4444 006676 7450 SNA /IS IT ZERO? 4445 006677 5307 JMP GOTALL+1 /YES; NOTHING TO COME BACK SO SKIP 4446 006700 4772 RECAGN, JMS RECV /NO; SOMETHING IS EXPECTED; 4447 /LOOK; BUT COME BACK IMMEDIATELY IF NOTHING IN FROM DEC-10 4448 006701 1771 TAD NXTMSG /GET FLAG 4449 006702 7640 SZA CLA /HAS EVERYTHING BEEN RECEIVED? 4450 006703 5306 JMP GOTALL /YES 4451 006704 4353 JMS LISTKB /NO; CHECK KB SO WE HAVE A WAY TO ESCAPE THIS 4452 /WAIT LOOP IF NECESSARY 4453 006705 5275 JMP RECAGN-3 /NOW CHECK FOR NEXT STUFF BACK FROM DEC-10 4454 006706 3771 GOTALL, DCA NXTMSG /END OF EXPECTED RESPOINSE 4455 006707 2315 ISZ TRPT /POINT TO NEXT COMMAND 4456 006710 1715 TAD I TRPT /GET IT 4457 006711 7640 SZA CLA /ZERO? 4458 006712 5273 JMP MORE /NO; GO BACK AND SEND NEXT COMMAND 4459 006713 5664 JMP I TRAREC /YES; END OF COMMAND/RESPONSE SEQUENCE; RETURN 4460 / 4461 006714 0000 SCPT, 0 /POINTER TO SET/CLEAR TABLE 4462 006715 0000 TRPT, 0 /POINTER FOR COMMAND/RESPONSE TABLE 4463 / 4464 006716 0000 TRANS, 0 /SUBROUTINE TO TRANSMIT A COMMAND TO DEC-10 4465 006717 1715 TAD I TRPT /GET COMMAND POINTER 4466 006720 3334 DCA TRANSP /AND STORE AS CHARACTER POINTER 4467 006721 1734 NXTCHR, TAD I TRANSP /GET CHAR 4468 006722 7550 SNA SPA /NULL? (CLOSE WITH LF) OR -1? (CLOSE WITH CR) 4469 006723 5327 JMP CLOSE /YES; END OF COMMAND 4470 006724 4335 JMS TCHAR /NO; TRANSMIT IT 4471 006725 2334 ISZ TRANSP /POINT TO NEXT CHAR 4472 006726 5321 JMP NXTCHR /GET IT AND GO AROUND AGAIN 4473 / 4474 006727 7640 CLOSE, SZA CLA /SKIP IF LAST CHAR IN STRING = 0; 4475 006730 7325 CLA IAC STL RAL /=TAD (3; TO SET CR AS BREAK CHAR WHEN LF ADDED IN NEXT STEP 4476 006731 1370 TAD (212 /GET BREAK CHAR (LF) TO CLOSE COMMAND; =(CR) IF STRING CLOSED WITH -1 4477 006732 4335 JMS TCHAR /AND TRANSMIT IT 4478 006733 5716 JMP I TRANS /RETURN 4479 006734 0000 TRANSP, 0 4480 / 4481 006735 0000 TCHAR, 0 /SUBROUTINE TO TRANSMIT A CHARACTER TO DEC-10 4482 006736 0367 AND (177 /MASK TO 7 BITS 4483 006737 6171 TRYSND, TENTSF /DEC-10 READY? 4484 006740 5344 JMP TRYGET /NO; SEE IF ANYTHING COMING BACK; 4485 /DON'T HANG UP HERE AND MISS WHAT THE DEC-10 IS SENDING 4486 006741 6176 TENTLS /YES; TRANSMIT 4487 006742 7300 CLA CLL /CLEAR AC AND L 4488 006743 5735 JMP I TCHAR / AND RETURN 4489 006744 6161 TRYGET, TENKSF /ANYTHING COMING BACK? 4490 006745 5337 JMP TRYSND /NO; TRY SENDING AGAIN 4491 006746 3352 DCA HOLCHR /YES; STORE THE CHARACTER WAITING TO BE SENT 4492 006747 4772 JMS RECV /GET THE CHARACTER COMING IN 4493 006750 1352 TAD HOLCHR /NOW GET BACK THE CHARACTER TO BE SENT 4494 006751 5337 JMP TRYSND /AND TRY AGAIN 4495 006752 0000 HOLCHR, 0 /TEMP STORAGE FOR CHARACTER TO BE TRANSMITTED 4496 / 4497 006753 0000 LISTKB, 0 /SUBROUTINE TO CHECK KEYBOARD FOR ^C 4498 006754 6031 KSF /CHECK KB FLAG 4499 006755 5753 JMP I LISTKB /NO INPUT; RETURN 4500 006756 6036 KRB /READ KB INPUT 4501 006757 1366 TAD (-203 /CHECK FOR 4502 006760 7650 SNA CLA / ^C 4503 006761 5765 JMP MON /YES; RETURN TO KB MONITOR 4504 006762 5753 JMP I LISTKB /RETURN FROM SUBROUTINE 4505 4506 006765 7100 PAGE 006766 7575 006767 0177 006770 0212 006771 7077 006772 7000 006773 7071 006774 7070 006775 0000 006776 7101 006777 7130 4507 007000 0000 RECV, 0 /SUBROUTINE TO RECEIVE MESSAGES FROM DEC-10 4508 007001 3274 DCA TPT /STORE POINTER ON THIS PAGE 4509 007002 6161 LIST10, TENKSF /ANYTHING IN? 4510 007003 5600 JMP I RECV /NO; GO BACK IMMEDIATELY 4511 007004 6166 TENKRB /CHAR IN BUFFER; READ IT 4512 007005 3272 DCA TEMP /PUT IT AWAY NEARBY 4513 007006 1272 TAD TEMP /AND GET IT BACK 4514 007007 1377 TAD (-377 /RUBOUT? 4515 007010 7650 SNA CLA 4516 007011 5202 JMP LIST10 /YES; IGNORE IT 4517 007012 1272 TAD TEMP /NO; GET IT AGAIN 4518 007013 6211 CDF 10 /POINT TO BUFFER FIELD 4519 007014 3670 DCA I IBP /PUT IT IN BUFFER 4520 007015 6201 CDF 0 /AND POINT TO PRESENT FIELD ONCE AGAIN 4521 007016 2270 ISZ IBP /AND INCREMENT POINTER 4522 007017 1273 TAD TRPFLG /GET TRAP FLAG 4523 007020 7640 SZA CLA /AND TEST IT 4524 007021 5226 JMP TRFLST /FLAG SET; JUMP AHEAD 4525 007022 1274 BACK, TAD TPT /FLAG CLEAR; GET POINTER TO CURRENT TRAP PHRASE 4526 007023 3275 DCA TRAPP /STORE IT AS A CHAR POINTER 4527 007024 1270 TAD IBP /GET CURRENT INPUT BUFFER POINTER 4528 007025 3276 DCA TRPBEG /AND STORE IT AS POSSIBLE BEGINNING OF TRAP 4529 007026 1272 TRFLST, TAD TEMP /GET CHAR 4530 007027 7041 CIA /AND COMPARE IT WITH 4531 007030 1675 TAD I TRAPP /NEXT TRAP CHAR 4532 007031 7650 SNA CLA /SAME? 4533 007032 5240 JMP AHEAD /YES; GO AHEAD 4534 007033 1273 TAD TRPFLG /NO; GET TRAP FLAG 4535 007034 7650 SNA CLA /WAS TRAP SET? 4536 007035 5202 JMP LIST10 /NO; GET NEXT CHAR 4537 007036 3273 DCA TRPFLG /YES; CLEAR FLAG 4538 007037 5222 JMP BACK /GO BACK AND CHECK CHAR AGAINST FIRST IN TRAP STRING 4539 007040 7001 AHEAD, IAC /SET 4540 007041 3273 DCA TRPFLG / TRAP FLAG 4541 007042 2275 ISZ TRAPP /BUMP POINTER IN TRAP TEXT 4542 007043 1675 TAD I TRAPP /GET NEXT CHAR IN TRAP TEXT 4543 007044 7640 SZA CLA /NULL? 4544 007045 5202 JMP LIST10 /NO; GO BACK FOR MORE 4545 007046 1376 TAD (BUFFER /YES; RESET 4546 007047 3270 DCA IBP /BUFFER INPUT POINTER 4547 007050 3273 DCA TRPFLG /CLEAR TRAP FLAG 4548 / 4549 007051 1271 NXTTYP, TAD OBP /GET BUFFER OUTPUT POINTER 4550 007052 7040 CMA /AND COMPARE WITH 4551 007053 1276 TAD TRPBEG /TRAP BEGINNING POINTER 4552 007054 7650 SNA CLA /SAME? 4553 007055 5264 JMP ENDOUT /YES; END OF OUTPUT 4554 007056 6211 CDF 10 /CHANGE TO BUFFER FIELD 4555 007057 1671 TAD I OBP /NO; GET CHAR AND 4556 007060 6201 CDF 0 /AND RETURN TO PRESENT FIELD 4557 007061 2271 ISZ OBP /INCREMENT POINTER 4558 007062 4775 JMS TYPE /TYPE IT 4559 007063 5251 JMP NXTTYP /GET ANOTHER CHAR TO TYPE 4560 007064 1376 ENDOUT, TAD (BUFFER /GET RESET VALUE OF BUFFER POINTER 4561 007065 3271 DCA OBP /AND RESET OUTPUT POINTER 4562 007066 2277 ISZ NXTMSG /SET FLAG TO INDICATE RESPONSE AND TYPEOUT COMPLETED 4563 007067 5600 JMP I RECV /RETURN 4564 / 4565 007070 0000 IBP, 0 /FILL POINTER FOR BUFFER 4566 007071 0000 OBP, 0 /EMPTY POINTER FOR BUFFER 4567 007072 0000 TEMP, 0 /TEMP STORAGE 4568 007073 0000 TRPFLG, 0 /TRAP FLAG 4569 007074 0000 TPT, 0 /POINTER TO TRAP PHRASE ON THIS PAGE TOO 4570 007075 0000 TRAPP, 0 /CHAR POINTER FOR TRAP TEXT 4571 007076 0000 TRPBEG, 0 /POINTER (IN BUFFER) TO POSSIBLE BEGINNING OF TRAP SEQUENCE 4572 007077 0000 NXTMSG, 0 /FLAG; SET = RESPOINSE AND TYPEOUT COMPLETE 4573 4574 007100 1774 MON, TAD I (7600 /BRANCH HERE BECAUSE OF ^C ON KEYBOARD; RETURN TO MONITOR 4575 / 4576 /TABLE OF POINTERS FOR SET AND CLEAR SEQUENCES FOR EACH BIT 4577 / 4578 /BITS ARE FIRST CLEARED IN ORDER 11-0 4579 /AND THEN BITS ARE SET IN ORDER 0-11 4580 / 4581 007101 7131 SETCLR, LOG; KILL /BIT0 007102 7164 4582 007103 7164 KILL; URESET /BIT1 007104 7143 4583 007105 7164 KILL; STOP /BIT2 007106 7140 4584 007107 7164 KILL; STOP /BIT3 007110 7140 4585 007111 0000 ZBLOCK 20 /ADJUST THIS NUMBER AS ADDITIONS ARE MADE TO TABLE 007112 0000 007113 0000 007114 0000 007115 0000 007116 0000 007117 0000 007120 0000 007121 0000 007122 0000 007123 0000 007124 0000 007125 0000 007126 0000 007127 0000 007130 0000 4586 / 4587 /TABLE OF COMMAND AND RESPONSE PAIRS 4588 /END EACH SEQUENCE WITH A ZERO 4589 / 4590 NICHTS=0 /JUST A CONVENIENT DEFINITION 4591 / 4592 007131 7200 LOG, CTRLC; CRLFPD 007132 7336 4593 007133 7205 LOGIN; PWDCLN 007134 7341 4594 007135 7224 PASSWD; CRLFPD 007136 7336 4595 007137 0000 0 4596 / 4597 007140 7202 STOP, DCTRLC; CRLFPD 007141 7336 4598 007142 0000 0 4599 / 4600 007143 7200 URESET, CTRLC; CRLFPD 007144 7336 4601 007145 7327 CTRLS; UPS 007146 7354 4602 007147 7302 NTAPE; PERIOD 007150 7360 4603 007151 7232 SFILL1; CRLFPD 007152 7336 4604 007153 7316 SFORM; CRLFPD 007154 7336 4605 007155 7245 SCRLF; CRLFPD 007156 7336 4606 007157 7256 NTAB; CRLFPD 007160 7336 4607 007161 7271 ECHO; CRLFPD 007162 7336 4608 007163 0000 0 4609 / 4610 007164 7202 KILL, DCTRLC; CRLFPD 007165 7336 4611 007166 7331 KF; CRLFPD 007167 7336 4612 007170 0000 0 4613 / 4614 007174 7600 PAGE 007175 0754 007176 0000 007177 7401 4615 / 4616 /COMMANDS--THE ACTUAL CHARACTERS TO BE TRANSMITTED 4617 /EACH STRING ENDS WITH A 0 TO CLOSE WITH A LF OR WITH -1 4618 /TO CLOSE WITH A CR 4619 / 4620 007200 0203 CTRLC, 203;0 007201 0000 4621 007202 0203 DCTRLC, 203;203;0 007203 0203 007204 0000 4622 007205 0314 LOGIN, "L;"O;"G;" ;"2;"7;"0;"1;"7;",;"2;"7;"0;"0;-1 007206 0317 007207 0307 007210 0240 007211 0262 007212 0267 007213 0260 007214 0261 007215 0267 007216 0254 007217 0262 007220 0267 007221 0260 007222 0260 007223 7777 4623 007224 0320 PASSWD, "P;"D;"P;"8;"E;0 007225 0304 007226 0320 007227 0270 007230 0305 007231 0000 4624 007232 0324 SFILL1, "T;"T;"Y;" ;"F;"I;"L;"L;" ;"1;0 007233 0324 007234 0331 007235 0240 007236 0306 007237 0311 007240 0314 007241 0314 007242 0240 007243 0261 007244 0000 4625 007245 0324 SCRLF, "T;"T;"Y;" ;"C;"R;"L;"F;0 007246 0324 007247 0331 007250 0240 007251 0303 007252 0322 007253 0314 007254 0306 007255 0000 4626 007256 0324 NTAB, "T;"T;"Y;" ;"N;"O;" ;"T;"A;"B;0 007257 0324 007260 0331 007261 0240 007262 0316 007263 0317 007264 0240 007265 0324 007266 0301 007267 0302 007270 0000 4627 007271 0324 ECHO, "T;"T;"Y;" ;"E;"C;"H;"O;0 007272 0324 007273 0331 007274 0240 007275 0305 007276 0303 007277 0310 007300 0317 007301 0000 4628 007302 0324 NTAPE, "T;"T;"Y;" ;"N;"O;" ;"T;"A;"P;"E;0 007303 0324 007304 0331 007305 0240 007306 0316 007307 0317 007310 0240 007311 0324 007312 0301 007313 0320 007314 0305 007315 0000 4629 007316 0324 SFORM, "T;"T;"Y;" ;"F;"O;"R;"M;0 007317 0324 007320 0331 007321 0240 007322 0306 007323 0317 007324 0322 007325 0315 007326 0000 4630 007327 0223 CTRLS, 223;0 007330 0000 4631 007331 0313 KF, "K;"/;"F;215;0 007332 0257 007333 0306 007334 0215 007335 0000 4632 / 4633 /TRAPS--THE SEQUENCE OF CHARACTERS TO BE RECEIVED--BUT NOT PRINTED!! 4634 / 4635 007336 0012 CRLFPD, 12;56;0 007337 0056 007340 0000 4636 007341 0120 PWDCLN, 120;341;363;363;167;157;162;344;72;240;0 007342 0341 007343 0363 007344 0363 007345 0167 007346 0157 007347 0162 007350 0344 007351 0072 007352 0240 007353 0000 4637 007354 0136 UPS, 136;123;56;0 007355 0123 007356 0056 007357 0000 4638 007360 0056 PERIOD, 56; 0 007361 0000 4639 / 4640 /BUFFER FOR TEXT COMING FROM DEC-10 COULD BEGIN HERE IF THERE WERE 4641 /ENOUGH ROOM. SINCE THERE ISN'T, PUT IN IN NEXT FIELD. 4642 /IT OCCUPIES THE SAME SPACE AS THE BUFFER FOR THE MAIN PROGRAM, 4643 /BUT SO WHAT? 4644 / 4645 000167 2457 FIELD 1 000170 1675 000171 0554 000172 0543 000173 0351 000174 6600 000175 0234 000176 3076 000177 3042 4646 *0 4647 010000 0000 BUFFER, 0 /BEGINNING OF TEXT BUFFER 4648 4649 $ A 5246 ACRSOF 2505 ACRSON 2457 AG 5572 AHEAD 7040 ALCORD 1500 unreferenced ALTAN 0007 ALTCHR 0010 ALTDIS 0006 ALTDOT 3640 unreferenced AM 4700 AP 4716 APLABS 6360 APLALP 6250 APLAND 6207 APLAPO 6347 APLCIR 6370 APLDA 6431 APLDEC 6261 APLDEG 6335 APLDEL 6316 APLDIA 6511 APLDIV 6222 APLDLT 6323 APLDOW 6266 APLENC 6363 APLEPS 6301 APLGE 6174 APLGT 6177 APLIOT 6330 APLLBR 6476 APLLE 6165 APLLFT 6460 APLLT 6170 APLMAX 6425 APLMIN 6275 APLMPY 6237 APLNE 6213 APLNEG 6245 APLOME 6446 APLOR 6203 APLQUA 6352 APLRA 6503 APLRBR 6517 APLRHO 6414 APLRT 6467 APLSTR 6402 APLUML 6152 APLUND 6313 APLUP 6437 APLVTB 4440 unreferenced AS 4737 ASCSP 1351 AT 5227 B 5253 BACK 7022 BACKEX 2424 BACKSP 2406 BAKSP 2425 BASEY 2155 BEGLPS 6611 unreferenced BEL 1310 BITS56 1155 BUFFER 0000 C 5267 CHARCT 0045 CHRHLD 1364 CLOSE 6727 CLRDON 6636 CLRGI 1317 CLRHC 0351 CLRREG 6662 CLRST 1277 CLRSTA 0600 CLSGIN 0610 COL 5146 COM 4756 COORD 1600 COOREX 1656 CORDX 1555 CORDY 1556 COUN14 2167 COUNT3 2165 COUNT7 2166 CR 1564 CRLFPD 7336 CRSBT 0016 CRSCRD 1505 CTRLC 7200 CTRLS 7327 CURS 0614 CURSON 1330 CURSTP 0753 CURSX 0034 CURSY 0035 CURWAT 2521 D 5300 D14 2160 D22 1316 D37 2455 DA 4765 DCAST 1305 unreferenced DCASTA 0606 DCTRLC 7202 DICHAR 2070 DICL 6051 DILE 6056 DILX 6053 DILY 6054 DIRE 6057 DISD 6052 DISDEV 0005 DISPPT 2204 DISVEC 1675 DIVIDE 3076 DIVSOR 3155 DIXY 6055 DKVECT 0043 DO 4644 DONCUR 0707 DOTLOP 2115 DOTTAB 3200 DOTTBP 2062 DVI 4576 DX 3014 DY 3012 E 5307 EAE 0000 ECHO 7271 END 1417 ENDOUT 7064 EOT 1562 EQ 5201 ERAS 0246 ERASBT 0021 ERASE 0234 ERASEX 0253 ERATXT 0254 ESCCLR 1050 ESCTRP 0012 EX 4601 EXIT 0130 F 5317 FIVBTS 1561 FIXEX 1757 FIXHI 1666 FIXPEN 1732 FIXSTA 6655 FOREVR 0201 G 5326 GETPT 0015 GICHAR 0725 GIMODE 0005 GINTAG 1554 GOLIN 2355 GOMAEX 2451 GOMARG 2427 GOTALL 6706 GOVECT 1717 GRMODE 0004 H 5341 HCMODE 0006 HOCHAR 1141 HOCHIN 0207 HOHNDL 1006 HOHNEX 1306 HOINEX 0231 HOLCHR 6752 HOLDDI 1452 HOLDX 1453 HOME 0150 HOMEX 0026 HOMEY 0027 IBP 7070 IIOO 0721 INIT 0105 INTEN 0016 INTER 0050 INTEX 0074 IOOO 0722 J 5356 K 5365 K1000 1313 KBCHAR 0543 KBHNDL 0400 KBHNEX 0542 KBMON 0036 KBTPCL 0515 KBTRAP 0013 KBWAIT 1426 KF 7331 KILL 7164 L 5373 L1000 1557 L41 2761 L7577 0233 L777 1454 LA 5564 LAN 5175 LAST 1663 LASTX 0030 LASTY 0031 LBC 6110 LBK 5541 LCA 5575 LCB 5607 LCC 5617 LCD 5630 LCE 5640 LCF 5652 LCG 5661 LCH 5674 LCI 5703 LCJ 5713 LCK 5725 LCL 5734 LCM 5742 LCN 5755 LCO 5765 LCP 5777 LCQ 6007 LCR 6017 LCS 6025 LCT 6034 LCU 6043 LCV 6053 LCW 6057 LCX 6065 LCY 6072 LCZ 6103 LDILX 2756 LDILY 2757 LDX 2724 LDY 2733 LF 2365 LGSTEP 0751 LINECT 0046 LINFED 2271 LINFEX 2360 LIST10 7002 LISTKB 6753 LNOP 2760 LO 1627 LOADMQ 0670 LOBIT 1657 LOG 7131 LOGIN 7205 LOX 1645 LP 4725 LS4BTS 2264 LS5BTS 1665 LTVECT 1747 LX 2231 LY 2232 M 5377 M1000 1661 M14 2164 M16 1314 M261 0717 M265 0716 M272 0720 M3 2161 M40 2065 M6 2162 M600 1660 M7 2163 M7576 0232 M7577 0104 M767 1315 MAR0X 2456 MAR1 2447 MARG1 2313 MARGEX 2454 MARGIN 0011 MASK7 2066 MBEL 1307 MBS 1154 MCR 1146 MCRET 0557 MCRSBT 0017 MCTRLA 0546 MCTRLC 0551 MCTRLD 0547 MCTRLE 0553 MCTRLK 0554 MCTRLN 0545 MCTRLP 0552 MCTRLR 0544 MCTRLT 0550 MD14 2426 MD22 2362 MD35 2361 MD37 2363 MDCONS 3151 MDCOUN 3152 MDIWID 0042 MDTEMP 3153 MENQ 1143 MESC 1145 MFF 1142 MGS 1150 MHT 1152 MIN40 2534 MLF 1147 MODMSK 0003 MON 7100 MORE 6673 MOVCUR 0726 MPAGE 0556 MPCND 3154 MPER 0715 MR0 2346 MRO 2060 MS7BTS 1664 MSBYTE 1425 MSI 1312 MSO 1311 MSUB 1144 MTTWID 0041 MULTPY 3042 MUS 1151 MUY 4577 MVIEW 0555 MVT 1153 MZERO 0714 N 5404 N0 5000 N1 5014 N2 5022 N3 5035 N4 5053 N5 5060 N6 5072 N7 5106 N8 5111 N9 5132 NEWPAG 1565 NEWST 6654 NEWX 0032 NEWY 0033 NICHTS 0000 unreferenced NOT14 2140 NOT3 2133 NOT7 2151 NOTCTL 1225 NOTCUR 0711 NOTGR 1233 NOTLST 0226 NOTTTY 2015 NTAB 7256 NTAPE 7302 NTTY 2301 NU 4630 NXTCHR 6721 NXTCLR 6623 NXTLIN 2265 NXTMSG 7077 NXTSET 6640 NXTTYP 7051 NXTVEC 2235 O 5410 OBP 7071 OLDST 6653 OOIO 0723 OOOI 0724 OUTFLT 0070 OUTTEN 0017 P 5422 P1000 2364 P5 2503 P6 2504 P600 1560 P777 0366 PASSWD 7224 PC 4664 PE 4770 PEN 0024 PENTIM 0040 PENUP 0025 PERIOD 7360 PL 4750 PLCHAR 2233 PLOTER 0001 PLTER 2040 PLTOF 0023 PLTON 0022 PNTOF 2061 PNTTAB 0044 POSAC 2705 PRBACK 2422 PRCHAR 2000 PRCHEX 2053 PREXIT 2057 PWDCLN 7341 Q 5431 QUO 4613 QUS 5212 R 5445 RAN 5206 RBC 6125 RBK 5551 RECAGN 6700 RECPT 0014 RECV 7000 RESET 0762 RETCEX 1553 RETCOR 1455 RETURN 6661 unreferenced REVERS 3020 RO 6142 RP 4732 RSL 5546 RUNX 2156 RUNY 2157 S 5456 SAVEAC 0102 SAVEL 0103 SC 5161 SCPT 6714 SCRLF 7245 SEC 1402 SELBEL 1200 SELBS 1133 SELCR 1062 SELCTA 0426 SELCTC 0470 SELCTD 0440 SELCTE 0476 SELCTK 0502 unreferenced SELCTN 0420 SELCTP 0462 SELCTR 0412 unreferenced SELCTT 0447 SELENQ 1017 unreferenced SELERR 1047 SELFF 1025 SELGS 1107 SELHT 1117 unreferenced SELLF 1101 SELOT 1224 SELOTH 0527 unreferenced SELSI 1215 SELSO 1207 SELSUB 1034 SELUS 1113 unreferenced SELVIE 0506 unreferenced SELVT 1125 SELVU 0523 SENCOR 1511 SENDIT 0540 SETAN 1241 SETCLR 7101 SETDOT 2200 SETGR 1235 SETHC 0305 SETHIX 1621 SETREG 6663 SETST 1302 SETSTA 0603 SETSTP 2652 SETTXT 0326 SFILL1 7232 SFORM 7316 SHREG 2170 SIGNSL 3016 SL 4776 SLOPOK 2646 unreferenced SMSTEP 0752 SP 4600 SPAC 2405 SPACE 2400 STATPT 6652 STATUS 0002 STEP 2755 STOP 7140 STOPCH 6524 unreferenced STORE 0020 T 5473 TABPOS 2067 TCHAR 6735 TEMP 7072 TENKCF 6160 TENKIE 6165 TENKRB 6166 TENKSF 6161 TENTCF 6172 TENTFL 6170 TENTLS 6176 TENTPF 0047 TENTSF 6171 TIL 6135 TPT 7074 TRANS 6716 TRANSP 6734 TRAPP 7075 TRAREC 6664 TRFLST 7026 TRMNTR 1563 TRPBEG 7076 TRPFLG 7073 TRPT 6715 TRYFIV 0632 TRYGET 6744 TRYNUM 0645 TRYPER 0623 TRYSND 6737 TYPE 0754 TYPTXT 1400 TYTXPT 1424 U 5500 UA 5556 UCI 5347 UCZ 5534 UPS 7354 URESET 7143 UTIL10 6600 V 5507 VCTEM 3041 VCTIMC 2770 VECLOP 2713 VECMUL 3000 VECOF 2063 VECT 2600 VECTAB 4300 VECTBP 2064 VECTGO 2722 VECTIM 0037 VECX 2754 VECX1 2750 VECX2 2752 VECY1 2751 VECY2 2753 VER 6120 VIE 0512 VIEW 1000 W 5513 WAIT 1766 WAIT1 2535 WAIT2 2522 WAITCR 2513 WAITPN 1760 WAITSL 2523 WAITVC 2762 X 5521 X2OK 2711 XMITEN 1352 Y 5526 YBIT 1662