software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape5 / SET.PA
CommitLineData
7af5ad59
PH
1/8 OS8 SET (PAL8/MACREL VERSION)
2
3/
4/S.R.
5/
6/
7/ S E T
8/
9/
10/
11/
12/
13/
14/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
15/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
16/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
17/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
18/
19/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
20/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
21/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
22/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
23/
24/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
25/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
26/DIGITAL.
27/
28/
29/ COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION.
30/
31/
32/
33/
34\f/ EDIT HISTORY:
35
36/ 19-MAR-77 S.R. REMOVED FROM CAMP V4
37/ 19-MAR-77 S.R. FIXED BUG WITH SET MTA FILES
38/ 19-MAR-77 S.R. FIXED BUG WITH SET CDR
39/ 19-MAR-77 S.R. FIXED BUG WITH = OPTION
40/ 19-MAR-77 S.R. CONVERTED TO MACREL CODE
41/ 01-APR-77 S.R. TTY PAUSE
42/ 01-APR-77 S.R. TTY HEIGHT
43/ 01-APR-77 S.R. TTY SCOPE
44/ 17-APR-77 S.R. REWROTE TTY PAGE
45/ 17-APR-77 S.R. DEV: DVCODE
46/ 17-APR-77 S.R. FINISHED TTY SCOPE
47/ 27-APR-77 S.R. TTY COL
48/ 27-APR-77 S.R. SYS OPTIONS (INIT, OS8, OS78)
49/ 03-MAY-77 S.R. LA8A, LA78
50/ 03-MAY-77 S.R. INIT OS78 FIXES TERMINATE
51/ 03-MAY-77 S.R. BASIC FIXES
52/ 29-JUN-77 S.R. TTY ARROW (NOT FOR PS/8)
53/ 29-JUN-77 S.R. TTY ESC (NOT FOR PS/8)
54/ 29-JUN-77 S.R. DEV BLK LOC (NOT FOR PS/8)
55
56/ MUST SKIP LOCS 1000-1777
57
58 LINBUF=1000
59
60 AUXBUF=6600
61
62 IFDEF EDF <MACREL=1>
63 IFNDEF EDF <MACREL=0>
64
65 IFNZRO MACREL < .XSECT XSET
66 >
67 IFZERO MACREL < *10 >
68
69XR1, 0
70XR2, 0
71XR3, 0
72
73 IFNZRO MACREL < .ZSECT ZSET
74 >
75 IFZERO MACREL < *20 >
76TEMP, 0
77T, 0
78T2, 0
79LINPTR, 0
80T3, 0
81FLAG, 0
82SPKNT, 0
83DEVTYP, 0 /DEVICE TYPE (BITS 6-11)
84ENTRY, 0 /HANDLER ENTRY POINT
85NUM, 0
86TYP, 0 /0 MEANS 'F', 1 MEANS 'R'
87T4, 0
88DEVNUM, 0
89DCW, 0 /DEVICE CONTROL WORD
90DCWPTR, 0
91USR, 200 /POINTS TO USR ENTRY POINT
92ESCBIT, 0 /1 MEANS USER TYPED ALTMODE
93CNT, 0
94CTOFLG, 0 /-1 MEANS SAW ^O
95PTR, 0
96DHIT, 0 /DEVICE HANDLER INFO TABLE - 1
97DHI, 0 /DEVICE HANDLER INFO
98DBLK, 0 /DEVICE HANDLER BLOCK
99VNOPTR, 0 /PTS TO VERSION # IN HANDLER
100VNO, 0 /CURRENT HANDLER VERSION NUMBER
101SAVPTR, 0
102NO, 0 /1 MEANS 'NO'
103FLG, 1 /1 MEANS SAW NO DIGITS
104RR, 0
105NUCODE, 0
106SCOP, 0 /NON-0 IF TTY IS SCOPE
107NUM2, 0
108
109/0000-0777 /SET
110/1000-1377 /OS/8 LINE BUFFER
111/1400-1777 /PS/8 LINE BUFFER
112/2000-6577 /SET
113/6600-7177 /AUXILIARY I/O BUFFER
114/7000-7177 /I/O BUFFER FOR TECO CCB
115/7200-7577 /OS/8 HANDLER
116/7600-7777 /OS/8
117
118 SCPBIT=7726 /BIT 4
119\f IFNZRO MACREL < .ASECT ASET
120 >
121 *200
122
123START, SKP
124 JMP CHN
125 TAD ("#
126 JMS I [TYPE
127 JMS BIT
128 JMS I [READ /READ A LINE INTO OS/8 LINE BUFFER
129CHN, TAD [LINBUF /CHAIN ENTRY ADDRESS
130 DCA LINPTR /INITIALIZE POINTER TO LINE BUFFER
131 JMS BIT
132 STA
133 JMS I [SPACE /IGNORE LEADING SPACES
134 JMS GETTWO /GET TWO CHARS
135 DCA TEMP
136 JMS I [SCAN /SCAN PAST EXTRA LETTERS OR DIGITS
137 TAD TEMP
138 JMS I [BRANCH /GO TO APPROPRIATE ROUTINE
139 -2305;SET /SE
140 -2605;VERSION /VE
141 -1005;HELP /HE
142 0
143 SNA CLA
144 JMP I [GOAWAY
145 JMP I [SYNTAX /NONE OF THESE
146
147BIT, 0
148 CDF 10
149 TAD I (SCPBIT
150 CDF 0
151 AND [200
152 DCA SCOP /NOTE WHETHER TTY IS SCOPE V3D
153 JMP I BIT
154\f/ GETTWO
155
156/GET TWO LETTERS OR DIGITS FROM INPUT LINE, PACK IN SIXBIT
157/ADVANCE PAST THEM. SUBSTITUTE NULL IF NOT FOUND.
158
159GETTWO, 0
160 JMS GETSIX
161 CLL RTL
162 RTL
163 RTL
164 DCA T2
165 JMS GETSIX
166 TAD T2 /COMBINE
167 JMP I GETTWO
168
169GETSIX, 0 /GET A SIXBIT LETTER OR DIGIT (OR NULL)
170 JMS ALPHA /IS IT ALPHANUMERIC?
171 JMP NOTALPH /NO
172 AND [77 /YES
173 JMP I GETSIX /TRUNCATE TO SIXBIT
174NOTALPH,CLA
175 JMS BACKC
176 JMP I GETSIX /RETURN NULL
177
178GETC, 0 /GET A CHARACTER, ADVANCE POINTER
179 TAD I LINPTR
180 AND [177 /ALWAYS RETURN 8-BIT
181 SZA
182 TAD [200 /WITH HIGH ORDER BIT ON
183 ISZ LINPTR /ADVANCE SCAN
184 JMP I GETC /RETURN
185
186BACKC, 0 /MOVE SCAN POINTER BACK ONE
187 STA
188 TAD LINPTR
189 DCA LINPTR
190 JMP I BACKC /RETURN
191\f/RETURN 1 NOT OF TYPE DESIRED
192/RETURN 2 DESIRED TYPE
193/IN BOTH CASES, CHAR IS LEFT IN AC
194
195ALPHA, 0 /LOOK FOR ALPHANUMERIC
196 JMS I [GETC
197 JMS LETTER /IS IT A LETTER?
198 JMP TRYDIG /NO, TRY DIGIT
199 JMP GOTAL /YES
200TRYDIG, JMS DIGIT /IS IT A DIGIT?
201 JMP I ALPHA /NO, AINT LETTER OR DIGIT
202GOTAL, ISZ ALPHA /YES, EITHER LETTER OR DIGIT
203 JMP I ALPHA /RETURN WITH IT IN AC
204
205LETTER, 0 /LOOK FOR LETTER
206 TAD (-"A
207 CLL
208 TAD ("A-"Z-1
209 SNL
210 ISZ LETTER
211 TAD ("Z+1 /RESTORE CHAR
212 JMP I LETTER
213
214DIGIT, 0 /LOOK FOR DIGIT
215 TAD (-"0
216 CLL
217 TAD ("0-"9-1 /(DECIMAL)
218 SNL
219 ISZ DIGIT
220 TAD ("9+1 /RESTORE DIGIT TO CHARACTER FORM
221 JMP I DIGIT /AND RETURN WITH IT IN AC
222\fHELP, JMS I [PRINT
223 TEXT /SET DEV: [NO] ATTRIB [N]/
224 JMS I [PRINT
225 TEXT /VERSION/
226 JMS I [PRINT
227 TEXT /HELP/
228 JMP I [START
229 PAGE
230\fSYNTAX, CLA
231 JMS PRINT
232 TEXT /? SYNTAX ERROR/
233GOAWAY, TAD ESCBIT
234 SZA CLA
235 JMP I [7605 /LINE ENDED WITH ESCAPE
236 TAD I [READ /WAS 'READ' EVER CALLED?
237 SZA CLA
238 JMP I [START /YES, GET A NEW LINE
239 JMP I [7605 /NO, WE MUST'VE BEEN CHAINED TO, RECALL KBM
240
241PRINT, 0
242 TAD I PRINT
243 RTR
244 RTR
245 RTR
246 JMS PRIN
247 TAD I PRINT
248 JMS PRIN
249 ISZ PRINT
250 JMP PRINT+1
251LV, JMS I [CRLF
252 ISZ PRINT
253 JMP I PRINT
254
255PRIN, 0
256 AND [77
257 SNA
258 JMP LV
259 TAD [240
260 AND [77
261 TAD [240
262 DCA T3
263 TAD [200
264 KRS
265 TAD (-203
266 SNA
267 JMP CTRLC
268 TAD (203-217 /^O
269 SNA CLA
270 JMS CTRLO
271 TAD T3
272 JMS I [TYPE
273 JMP I PRIN
274\fCTRLC, TAD ["^
275 JMS I [TYPE
276 TAD ("C
277 JMS I [TYPE /ECHO "^C"
278 JMS I [DELAYY
279 JMP I [7600 /THEN GO AWAY
280CTRLO, 0
281 KCC /CLEAR OUT ^O
282 TAD ["^
283 JMS I [TYPE
284 TAD ("O
285 JMS I [TYPE
286 JMS I [CRLF
287 STA
288 DCA CTOFLG /STOP ECHOING
289 JMP I CTRLO
290
291VERSION,JMS PRINT
292 TEXT \OS/8 SET V1B\
293 JMP I [START
294NUMBIG, JMS PRINT
295 TEXT /? NUMBER TOO BIG/
296 JMP I [GOAWAY
297\fNONEX, JMS PRINT
298 TEXT /? CAN'T - DEVICE DOESN'T EXIST/
299 JMP I [GOAWAY
300
301SYSERR, JMS PRINT
302 TEXT \? I/O ERROR ON SYS:\
303 JMP I [GOAWAY
304 PAGE
305\fSYSOS8, 0
306 TAD NO /REVERSE MEANING OF 'NO'
307 SNA CLA
308 IAC
309 DCA NO
310 JMS SYS78
311 JMP I SYSOS8
312
313SYS78, 0
314 TAD [7771
315 JMS I [SET200
316 JMS I [7607
317 200
318 AUXBUF
319 0
320 JMP I [SYSERR
321 TAD (AUXBUF+371
322 JMS I [SET200
323 JMS I [7607
324 4200
325 AUXBUF
326 0
327 JMP I [SYSERR
328 JMS I [7607 /THERE'S A 2ND COPY
329 200 /IN BLOCK 11 LOCATION 56
330 AUXBUF
331 11
332 JMP I [SYSERR
333 TAD (AUXBUF+56
334 JMS I [SET200
335 JMS I [7607
336 4200
337 AUXBUF
338 11
339 JMP I [SYSERR
340 JMS I (FIXCCL
341 JMP I SYS78
342\fSYSINI, 0
343 JMS I [GETC
344 SNA CLA
345 JMP DEFINI /ASSUME @INIT
346 TAD NO
347 SZA CLA
348 JMP I [SYNTAX /SET SYS NO INIT CMD
349 JMS I [BACKC
350 TAD LINPTR
351 DCA SAVLP
352 TAD (-6 /ALLOW A MAXIMUM OF 5 CHARS
353 DCA SAVKN
354SAVLUP, JMS I [GETC
355 SNA CLA
356 JMP DEFDO
357 ISZ SAVKN
358 JMP SAVLUP
359 JMS I [PRINT
360 TEXT /? INITIAL COMMAND TOO BIG/
361 JMP I [GOAWAY
362
363SAVKN, 0
364SAVLP, 0
365
366DEFINI, TAD (INIMSG
367 DCA SAVLP
368DEFDO, JMS I [7607
369 200
370 AUXBUF
371 0
372 JMP I [SYSERR
373 TAD NO
374 SZA CLA
375 TAD (400-1077
376 TAD (1077
377 DCA I (AUXBUF+77
378 JMS I [7607
379 4200
380 AUXBUF
381 0
382 JMP I [SYSERR
383 TAD NO
384 SZA CLA
385 JMP I SYSINI
386 JMS I [7607
387 200
388 AUXBUF
389 11
390 JMP I [SYSERR
391 STA
392 TAD SAVLP
393 DCA XR2
394 TAD (AUXBUF-1
395 DCA XR3
396 TAD (-5
397 DCA SAVKN
398MOVL, TAD I XR2
399 DCA I XR3
400 ISZ SAVKN
401 JMP MOVL
402 JMS I [7607
403 4200
404 AUXBUF
405 11
406 JMP I [SYSERR
407 JMP I SYSINI
408
409INIMSG, "@;"I;"N;"I;"T;0
410 PAGE
411\f *1400
412
413/THIS WON'T ALWAYS WORK UNDER PS/8:
414
415TTGGO, JMP I TTGAG
416TTGAG, 0
417 JMS I [TTST1
418 JMS I [PRINT
419TEXT /A FUNNY THING HAPPENED TO ME ON THE WAY TO THE COMPUTER ROOM./
420 JMS I [PRINT
421TEXT /A PANHANDLER CAME UP TO ME AND SAID,/
422 JMS I [PRINT
423TEXT /"CAN YOU SPARE ME $25,000 FOR A CUP OF COFFEE?"/
424 JMS I [PRINT
425TEXT /"WHY SO MUCH?", I ASKED IN AMAZEMENT./
426 JMS I [PRINT
427TEXT /"THINGS HAVE BECOME SO AUTOMATED", HE REPLIED,/
428 JMS I [PRINT
429TEXT /"THAT THE ONLY WAY I CAN ORDER IT/
430 JMS I [PRINT
431TEXT /IS WITH A COMPUTER ORDER FORM"./
432 JMP I (TTGGO
433\fTTESC, 0 /V3D
434 JMS I (OLDTST
435 JMS I [SRCH
436 200;200;44
437 JMP I [REASEM
438 TAD (-4
439 DCA TEMP /SEE SOURCE OF KL8E
440 TAD NO
441 SZA CLA
442 TAD (7640-CLA /YES
443 TAD (CLA /NO
444 DCA I TEMP
445 JMP I TTESC
446
447TTAROW, 0 /V3D
448 JMS I (OLDTST
449 JMS I [SRCH
450 200;200;7740
451 JMP I [REASEM
452 IAC
453 DCA TEMP
454 TAD I TEMP
455 RAL
456KSPA, SPA CLA
457 JMP I [REASEM
458 ISZ TEMP
459 ISZ TEMP
460 TAD TEMP
461 TAD (3
462 DCA TEMP2
463 TAD NO
464 SNA CLA
465 JMP YESARO /YES
466 TAD KSPA /NO
467NOAROW, DCA I TEMP
468 JMP I TTAROW
469YESARO, TAD I TEMP2
470 JMP NOAROW
471\fGENBLK, 0 /V3D
472 JMS I (GENCMN
473 TAD NUM2
474 DCA BLOK /GET BLOCK NUMBER
475 TAD (LOC
476 JMS I [KEYSRCH
477 JMP I [SYNTAX
478 JMS I (GENCMN /GET LOCATION
479 TAD [-400
480 CLL
481 TAD NUM2
482 SZL CLA
483 JMP I [NUMBIG
484 TAD NUM2
485 TAD PAUXBUF
486 DCA NUM2
487 JMS I ENTRY /READ BLOCK
488 200
489PAUXBUF,AUXBUF
490BLOK, 0
491 JMP I [SYSERR
492 TAD TEMP
493 SNA CLA
494 JMS I (ODT
495 JMS I [ONUM
496 DCA NUM
497 CLA IAC
498 DCA DEVNUM /FAKE OUT - PREVENTS RE-WRITING USED HANDLER
499 TAD FLG
500 SZA CLA
501 JMP I GENBLK
502 JMS I [GETC
503 SZA CLA
504 JMP I [SYNTAX
505 TAD NUM
506 DCA I NUM2 /SET NEW VALUE
507 TAD BLOK
508 DCA BLOK2
509 JMS I ENTRY
510 4200
511 AUXBUF
512TEMP2,
513BLOK2, 0
514 JMP I [SYSERR
515 JMP I GENBLK
516 PAGE
517\f *2000
518
519/ORIGIN PAST OS/8 LINE BUFFER AT 1000.
520/SKIP PAST PS/8 LINE BUFFER (AT 1400) JUST IN CASE
521/PS/8 USERS WISH TO PATCH THIS PROGRAM
522
523/SCAN PAST EXTRA LETTERS OR DIGITS
524
525SCAN, 0
526 JMS I [ALPHA
527 JMP NOPE
528 CLA
529 JMP SCAN+1
530NOPE, CLA
531 JMS I [BACKC
532 JMP I SCAN
533
534/SCAN PAST SPACES; GIVE ERROR IF NO SPACES FOUND UNLESS AC=-1
535
536SPACE, 0
537 DCA FLAG /SET AC=-1 TO PREVENT ERROR ON NO SPACES FOUND
538 DCA SPKNT /INITIALIZE SPACE COUNTER
539 SKP /JUMP INTO LOOP
540GOTSP, ISZ SPKNT
541 JMS I [GETC /GET NEXT CHAR
542 TAD [-240
543 SNA CLA /IS IT A SPACE?
544 JMP GOTSP /YES, COUNT IT
545 JMS I [BACKC /NO, PUT IT BACK
546 ISZ FLAG /CHECK FLAG
547 SKP /USER DIDN'T SPECIFY FLAG
548 JMP I SPACE /-0 MEANT DON'T CHECK IF FOUND SPACE
549 TAD SPKNT /HOW MANY SPACES DID WE FIND?
550 SZA CLA
551 JMP I SPACE /SOME. OK
552 JMP I [SYNTAX /NONE. TSK. TSK.
553\fBRANCH, 0
554 DCA T
555BR2, TAD I BRANCH
556 ISZ BRANCH
557 SNA
558 JMP NOTFND
559 TAD T
560 SNA CLA
561 JMP FOUND
562 ISZ BRANCH
563 JMP BR2
564
565FOUND, TAD I BRANCH
566 DCA T
567 JMP I T /FOUND ITEM IN COLUMN 1, JUMP TO ADDRESS IN COL 2
568
569NOTFND, TAD T
570 JMP I BRANCH /IF NOT FOUND IN COL 1, RETURN WITH AC INTACT
571
572BADKBM, CDF 0
573 JMS I [PRINT
574 TEXT /? OLD VERSION OF KBM/
575 JMP I [GOAWAY
576\f LLS=6666
577 DBTD=6574
578 LSF=6661
579 DBST=6570
580
581LP78, 0
582 TAD (CMA-NOP
583 JMS LP8A
584 JMP I LP78
585
586LP8A, 0
587 TAD (NOP /AC MAY BE NON-0
588 DCA LPKOD
589 JMS I (LPTST1
590 TAD VNO
591 TAD (-2
592 SNA CLA
593 JMP I (OLDERR
594 JMS I [SRCH
595 0;200;7700
596 JMP I (OLDERR
597 TAD (3
598 DCA TEMP
599 TAD I TEMP
600 AND [7000
601 TAD [-7000
602 SZA CLA /NOP OR CMA
603 JMP I (OLDERR
604 TAD LPKOD
605 DCA I TEMP
606 ISZ TEMP
607 TAD I TEMP
608 AND [7000
609 TAD (-6000
610 SZA CLA
611 JMP I (OLDERR
612 TAD LPKOD
613 AND [70
614 SZA CLA
615 TAD (DBTD-LLS
616 TAD (LLS
617 DCA I TEMP
618 ISZ TEMP
619 TAD LPKOD
620 DCA I TEMP
621 JMS I [SRCH
622 100;100;6203
623 JMP I (OLDERR
624 TAD (2
625 DCA TEMP
626 TAD LPKOD
627 AND [70
628 SZA CLA
629 TAD (DBST-LSF
630 TAD (LSF
631 DCA I TEMP
632 JMP I LP8A
633
634LPKOD, 0
635 PAGE
636\f/READ A LINE INTO OS/8 LINE BUFFER
637
638READ, 0
639 DCA CTOFLG /ALLOW ECHOING
640RD1, TAD [LINBUF
641 DCA LINPTR
642 DCA ESCBIT
643GT, JMS I [GET
644LOOK, JMS I [BRANCH
645 -377;RUBOUT
646 -217;GT /^O
647 -203;CTRLC /^C
648 -212;LF /LINE FEED
649 -215;CR /CARRIAGE RETURN
650 -375;ESCAPE /ALTMODE
651 -376;ESCAPE /ALTMODE (2ND FLAVOR)
652 -233;ESCAPE /ESCAPE
653 -225;CTRLU /^U
654 -200;GT /IGNORE NULLS
655 -223;GT /IGNORE ^S
656 0
657 DCA TEMP /NONE OF THESE
658 TAD LINPTR
659 TAD (-LINBUF-377
660 SNA CLA /AT END OF LINE BUFFER?
661 JMP GT /YES, DON'T ACCEPT CHAR
662 TAD TEMP /NO, RETRIEVE CHAR
663 JMS I [TYPE /ECHO IT
664 TAD TEMP /INSERT IN BUFFER
665 DCA I LINPTR
666 ISZ LINPTR /BUMP POINTER
667 JMP GT /NEXT
668
669CTRLU, TAD ["^
670 JMS I [TYPE
671 TAD ("U
672 JMS I [TYPE /ECHO "^U" <CR><LF>
673 JMS I [CRLF
674RDA, TAD ("#
675 JMS I [TYPE
676 JMP RD1
677\f BS=10
678
679RUBOUT, TAD LINPTR
680 TAD [-LINBUF
681 SNA
682 JMP BOL /AT BEGIN OF LINE
683 TAD [LINBUF-1
684 DCA LINPTR /MOVE POINTER BACK ONE
685 TAD SCOP
686 SZA CLA
687 TAD (BS-"\
688 TAD ["\
689 JMS I [TYPE /ECHO "\"
690RUB3, TAD SCOP
691 SNA CLA
692 JMP .+3
693 TAD [40
694 SKP
695 TAD I LINPTR
696 JMS I [TYPE /ECHO RUBBED-OUT CHARACTER
697 TAD SCOP
698 SNA CLA
699 JMP GT2
700 TAD [BS
701 JMS I [TYPE
702GT2, JMS I [GET
703 JMS I [BRANCH
704 -377;RUB2
705 -216;GT2 /IGNORE ^O
706 -203;CTRLC /^C
707 0
708 DCA TEMP /A NEW CHAR
709 TAD SCOP
710 SZA CLA
711 JMP .+3
712 TAD ["\
713 JMS I [TYPE /ENCLOSE RUBBED-OUT CHARS IN \'S
714 TAD TEMP
715 JMP LOOK
716
717RUB2, TAD LINPTR
718 TAD [-LINBUF
719 SNA
720 JMP BOL2
721 TAD [LINBUF-1
722 DCA LINPTR
723 JMP RUB3
724\fBOL2, TAD SCOP
725 SZA CLA
726 JMP BOL
727 TAD ["\
728 JMS I [TYPE
729BOL, JMS I [CRLF
730 JMP RDA
731
732ESCAPE, TAD ["$ /ECHO ESCAPE AS DOLLAR SIGN
733 JMS I [TYPE
734 ISZ ESCBIT /NOTE ESCAPE
735CR, DCA I LINPTR /INSERT 0 AT END
736 JMS I [CRLF
737 JMP I READ /RETURN, WE GOT LINE
738\fLF, DCA I LINPTR /TEMPORARILY INSERT A 0 SENTINEL
739 TAD [LINBUF-1
740 DCA XR1
741 JMS I [CRLF
742 TAD ["#
743 JMS I [TYPE
744LFLP, TAD I XR1
745 SNA
746 JMP I [GT /FINISHED, GET SOME MORE CHARS
747 JMS I [TYPE /ECHO CURRENT CHARS
748 JMP LFLP
749 PAGE
750\f/GET A DECIMAL NUMBER, RETURN IT IN AC
751
752NUMBER, 0
753 DCA NUM
754 CLA IAC
755 DCA FLG
756 JMS I [BACKC
757NM1, JMS I [GETC
758 JMS I [DIGIT
759 JMP EON
760 TAD (-"0 /CONVERT TO DIGIT
761 DCA T4
762 DCA FLG /NOTE PASSAGE OF A DIGIT
763 TAD NUM
764 AND [7000
765 SZA CLA
766 JMP I [NUMBIG
767 TAD NUM
768 CLL RTL
769 TAD NUM
770 CLL RAL
771 TAD T4
772 SZL
773 JMP I [NUMBIG
774 DCA NUM
775 JMP NM1
776
777EON, CLA
778 JMS I [BACKC
779 TAD FLG
780 SZA
781 DCA NUM /IF NO DIGITS, RETURN A 1
782 TAD NUM
783 JMP I NUMBER
784\f/ GETDEV
785
786/PARSES OFF A DEVICE NAME (1-4 CHARS)
787/DETERMINES IF IT EXISTS
788/LOADS HANDLER INTO 7200-7577 IF NOT ALREADY IN CORE
789/SETS ENTRY POINT ADDRESS AT 'ENTRY'
790/SETS DEVICE NUMBER AT 'DEVNUM'
791/SETS DEVICE CONTROL WORD AT 'DCW'
792/SETS 'DEVTYP'
793
794GETDEV, 0
795 JMS I [GETTWO
796 DCA WD1
797 JMS I [GETTWO
798 DCA WD2
799 TAD WD1
800 TAD WD2
801 DCA WD1 /COMBINE TWO WORDS INTO 1 (IN WD1)
802 TAD WD2
803 SNA CLA
804 JMP INQ
805 TAD WD1 /OS/8 KLUDGE FOR UNIQUENESS
806 CLL RAL
807 STL RAR /FORCE BIT 0 ON IF 2ND WORD WAS NON-ZERO
808 DCA WD1
809INQ, DCA WD2
810 CIF 10
811 JMS I USR
812 12 /INQUIRE
813WD1, 0 /DEVICE NAME
814WD2, 0 /GETS DEVICE NUMBER
815WD3, 0 /GETS ENTRY POINT
816 JMP I [NONEX /DEVICE DOESN'T EXIST
817 TAD WD3
818 SZA /IS HANDLER ALREADY IN CORE?
819 JMP INCORE /YES
820 TAD WD1
821 DCA DW1
822 TAD (7201 /ALLOW TWO PAGE HANDLER IN 7200
823 DCA DW3
824 DCA DW2
825 CIF 10
826 JMS I USR
827 1 /FETCH
828DW1, 0 /DEVICE NAME
829DW2, 0 /GETS DEVICE NUMBER
830DW3, 0 /GETS ENTRY POINT
831 JMP I [NONEX /DOESN'T EXIST
832 TAD DW2
833 DCA DEVNUM
834 TAD DW3
835 DCA ENTRY
836 JMP GETYP
837\fINCORE, DCA ENTRY
838 TAD WD2
839 DCA DEVNUM
840GETYP, TAD DEVNUM
841 TAD (7757
842 DCA DCWPTR /POINT INTO DEVICE CONTROL WGRD TABLE
843 CDF 10
844 TAD I DCWPTR /GET DCW
845 DCA DCW
846 TAD DCW
847 RTR
848 RAR
849 AND [77
850 DCA DEVTYP
851 STA
852 TAD I (37 /GET ADDRESS OF DHIT
853 DCA DHIT
854 TAD DHIT
855 TAD DEVNUM
856 DCA DHI
857 TAD I DHI
858 CDF 0
859 DCA DHI
860 TAD DHI
861 RTL
862 RTL
863 RTL
864 AND (17
865 SZA
866 TAD (15
867 DCA DBLK
868 JMP I GETDEV
869
870DELAYY, 0
871 TAD (-10
872 DCA OUTER
873 ISZ ZER
874 JMP .-1
875 ISZ OUTER
876 JMP .-3
877 JMP I DELAYY
878ZER, 0
879OUTER, -10
880 PAGE
881\fOLDTST, 0 /V3D
882 JMS I (ASRTST
883 TAD VNO
884 JMS I [BRANCH
885 -1;OLDERR
886 -2;OLDERR
887 -3;OLDERR
888 -4;OLDERR
889 -5;TSTOK
890 ZBLOCK 4
891 0
892 JMP I [NEWERR
893TSTOK, JMP I OLDTST
894\fTTPAUS, 0
895 JMS OLDTST
896 JMS I [SRCH
897 200;100;15
898 JMP I [REASEM
899 TAD (-3
900 DCA TEMP /SEE SOURCE OF KL8E FOR EXPLANATION
901 TAD NO
902 SNA CLA
903 TAD (7650-7610 /YES
904 TAD (7610 /NO
905 DCA I TEMP
906 DCA NUM
907 JMS I [GETC
908 SNA CLA
909 JMP NOPA /NO PAUSE VALUE
910 TAD NO
911 SZA CLA
912 JMP I [SYNTAX /SET TTY NO PAUSE N
913 JMS I [NUMBER
914 SNA
915 JMP BADPAUS
916 DCA NUM
917 TAD NUM /SCALE CORRECTLY
918 CLL RAL
919 TAD NUM
920 CLL RTL
921 DCA NUM
922 TAD FLG
923 SZA CLA
924 JMP BADPAUS /NO DIGITS
925 TAD NUM
926 AND [6000
927 SZA CLA
928 JMP BADPAUS
929 JMS I [SRCH
930 300;77;7600
931 JMP I [REASEM
932 TAD (5
933 DCA TEMP
934 TAD NUM
935 CIA
936 DCA I TEMP
937NOPA, JMS I (BASLUK
938 JMP I TTPAUS
939 TAD NUM
940 CIA
941 DCA I (AUXBUF+1
942 JMS I (BASWRI
943 JMP I TTPAUS
944\fBADPAUS,JMS I [PRINT
945 TEXT /? BAD VALUE FOR PAUSE DURATION/
946 JMP I [GOAWAY
947\fONUM, 0
948 DCA NUM
949 CLA IAC
950 DCA FLG
951ONM1, JMS I [GETC
952 TAD (-"0-10 /CONVERT TO DIGIT
953 CLL
954 TAD [10
955 SNL
956 JMP OEON
957 DCA T4
958 DCA FLG
959 TAD NUM
960 AND [7000
961 SZA CLA
962 JMP I [NUMBIG
963 TAD NUM
964 CLL RTL
965 RAL
966 TAD T4
967 DCA NUM
968 JMP ONM1
969OEON, CLA
970 JMS I [BACKC
971 TAD NUM
972 JMP I ONUM
973 PAGE
974\fTTCOL, 0
975 TAD NO
976 SZA CLA
977 JMP I [SYNTAX /SET TTY NO COL
978 JMS I [GETC
979 SNA CLA
980 JMP BADCOL /NO COL SPECIFIED
981 JMS I [NUMBER
982 SNA
983 JMP BADCOL
984 DCA NUM
985 TAD FLG
986 SZA CLA
987 JMP I [SYNTAX
988 TAD NUM
989 AND [7770
990 SZA CLA
991 JMP BADCOL
992 TAD (CCLNAM /READ IN CCL.SV
993 JMS I [LOOKUP
994 JMP CCLNF /CCL NOT FOUND
995 TAD (2 /WANT 2ND BLOCK IN CCL
996 DCA ARG2 /CCL LOCATIONS 12400-12777
997 JMS I (7607
998 200 /READ IN 2 PAGES
999 AUXBUF
1000ARG2, 0
1001 JMP I [SYSERR
1002 TAD ARG2
1003 DCA ARG3
1004 TAD I (AUXBUF /GET PTR TO DIRECT COL WORD
1005 SPA
1006 JMP OLDCCL
1007 TAD (AUXBUF-2400 /RELOCATE
1008 DCA ARG2
1009 TAD NUM
1010 DCA I ARG2
1011 JMS I (7607
1012 4200
1013 AUXBUF
1014ARG3, 0
1015 JMP I [SYSERR
1016 JMP I TTCOL
1017\fBADCOL, JMS I [PRINT
1018 TEXT /? BAD COLUMN COUNT/
1019 JMP I [GOAWAY
1020
1021OLDCCL, CLA
1022 JMS I [PRINT
1023 TEXT /? WRONG VERSION OF CCL/
1024 JMP I [GOAWAY
1025\fTYPE, 0
1026 DCA TYPEM
1027 JMS I [DELAYY
1028 DCA .-1 /DELAY FIRST TIME THRU TO LET THINGS QUIET DOWN
1029 TAD CTOFLG
1030 SZA CLA
1031 JMP I TYPE /NO ECHOING
1032 TAD TYPEM
1033 TLS
1034 TSF
1035 JMP .-1
1036 CLA
1037 JMP I TYPE
1038
1039TYPEM, 0
1040
1041CCLNAM, FILENAME CCL.SV
1042
1043CCLNF, JMS I [PRINT
1044 TEXT /? CCL.SV NOT FOUND/
1045 JMP I [GOAWAY
1046\f CCLBLK=67
1047
1048FIXCCL, 0
1049 JMS I [7607
1050 200
1051 AUXBUF
1052 CCLBLK
1053 JMP I [SYSERR
1054 TAD I (AUXBUF
1055 TAD (-"G
1056 SPA CLA
1057 JMP I (OLDCCL
1058 TAD (CCLTBL
1059 JMS I (FIXUP
1060 JMS I [7607
1061 4200
1062 AUXBUF
1063 CCLBLK
1064 JMP I [SYSERR
1065 JMP I FIXCCL
1066 PAGE
1067\fESC, "E;"S;"C;4000+"A;4000+"P;4000+"E;0
1068
1069TTHGHT, 0
1070 JMS I (OLDTST
1071 JMS I [GETC
1072 SNA CLA
1073 JMP I (BADHIT /NO HEIGHT
1074 TAD NO
1075 SZA CLA
1076 JMP I [SYNTAX /SET TTY NO HEIGHT
1077 JMS I [NUMBER
1078 SNA
1079 JMP I (BADHIT
1080 DCA NUM
1081 TAD FLG
1082 SZA CLA
1083 JMP I (BADHIT /NO DIGITS
1084 JMS I [SRCH
1085 300;77;7600
1086 JMP I [REASEM
1087 TAD (3
1088 DCA TEMP
1089 TAD NUM
1090 CIA
1091 DCA I TEMP
1092 TAD I TEMP
1093 ISZ TEMP
1094 DCA I TEMP
1095 JMS I (BASLUK
1096 JMP I TTHGHT
1097 TAD NUM
1098 CIA
1099 DCA I (AUXBUF
1100 JMS I (BASWRI
1101 JMP I TTHGHT
1102\f/ LOC YES NO
1103KBMTBL, AUXBUF+313; 0210; 1070
1104 AUXBUF+314; 1313; 2020
1105 AUXBUF+316; 1324; 7240
1106 AUXBUF+317; 4423; 3020
1107 AUXBUF+322; 1313; 1440
1108 AUXBUF+224; 7555; 7403
1109 AUXBUF+225; 1207; 1302
1110 AUXBUF+226; 7557; 7402
1111 AUXBUF+227; 1207; 1302
1112 0
1113
1114CDTBL, AUXBUF+135; 0210; 1102
1115 AUXBUF+136; 1335; 2024
1116 AUXBUF+140; 1346; 7240
1117 AUXBUF+141; 4466; 3024
1118 AUXBUF+144; 1335; 1420
1119 AUXBUF+33; 7555; 7403
1120 AUXBUF+34; 5207; 5321
1121 AUXBUF+35; 7557; 7402
1122 AUXBUF+36; 5207; 5321
1123 0
1124
1125CCLTBL, AUXBUF+4; 0024; 0002
1126 AUXBUF+5; 0522; 0143
1127 AUXBUF+6; 5551; 5363
1128 AUXBUF+7; 5600; 6000
1129 0
1130
1131AROW, "A;"R;"R;"O;"W;0
1132 PAGE
1133\f/ SCOPE BIT ON DISK:
1134/ BLOCK 0 REL 126 BIT 4
1135
1136/ SCOPE BIT IN MEMORY:
1137/ LOC 17726 BIT 4
1138
1139TTSCOP, 0
1140/THE FOLLOWING CODE WOULD BE ADDED IF WE WANT TO
1141/ALLOW CHANGING KL8E SCOPE PATTERNS
1142/ JMS I (ASRTST
1143/ TAD VNO
1144/ JMS I [BRANCH
1145/ -1;OLDERR
1146/ -2;OLDERR
1147/ -3;OLDERR
1148/ -4;OLDERR
1149/ -5;TTSCOK
1150/ ZBLOCK 2
1151/ 0
1152/ JMP I [NEWERR
1153TTSCOK, JMS I (7607
1154 200
1155 AUXBUF /READ 2 PAGES INTO AUXILIARY BUFFER
1156 11
1157 JMP I [SYSERR
1158 TAD (KBMTBL
1159 JMS FIXUP
1160 JMS I (7607
1161 4200
1162 AUXBUF
1163 11
1164 JMP I [SYSERR
1165 JMS I (7607
1166 200
1167 AUXBUF /READ BLOCK 53 (CD)
1168 53
1169 JMP I [SYSERR
1170 TAD (CDTBL
1171 JMS FIXUP
1172 JMS I (7607
1173 4200
1174 AUXBUF
1175 53
1176 JMP I [SYSERR
1177 TAD NO /SET SCOPE BIT
1178 SNA CLA
1179 IAC
1180 DCA SCOP
1181 CDF 10
1182 TAD (SCPBIT
1183 JMS SET200
1184 CDF 0
1185 JMS I (7607
1186 200
1187 AUXBUF
1188 0
1189 JMP I [SYSERR
1190 TAD (AUXBUF+126
1191 JMS SET200
1192 JMS I (7607
1193 4200
1194 AUXBUF
1195 0
1196 JMP I [SYSERR
1197/ JMS I [SRCH
1198/ 366;11;7770
1199/ JMP I [REASEM
1200/ CLA
1201/ JMS I [SRCH
1202/ 0;200;"\
1203/ JMP I [OLDERR
1204/ IAC
1205/ DCA TEMP
1206/ TAD NO
1207/ SNA CLA
1208/ TAD (1336-1367
1209/ TAD (1367
1210/ DCA I TEMP
1211 JMP I TTSCOP
1212\fSET200, 0 /DF IS SPECIALLY SET
1213 DCA HLTPTR
1214 TAD I HLTPTR
1215 AND (7577
1216 DCA TEMP
1217 TAD TEMP
1218 TAD (-HLT
1219 SZA CLA
1220 JMP I (BADKBM
1221 TAD NO
1222 SNA CLA
1223 TAD [200
1224 TAD TEMP
1225 DCA I HLTPTR
1226 JMP I SET200
1227HLTPTR, 0
1228
1229FIXUP, 0
1230 DCA FIXPTR
1231FIXLUP, TAD I FIXPTR
1232 SNA
1233 JMP I FIXUP
1234 DCA FIXLOC
1235 ISZ FIXPTR
1236 TAD NO
1237 SZA CLA
1238 ISZ FIXPTR
1239 TAD I FIXPTR
1240 DCA I FIXLOC
1241 TAD NO
1242 SNA CLA
1243 ISZ FIXPTR
1244 ISZ FIXPTR
1245 JMP FIXLUP
1246
1247FIXPTR, 0
1248FIXLOC, 0
1249\fBASNAM, FILENAME BASIC.SV
1250
1251BASLUK, 0
1252 TAD (BASNAM
1253 JMS I (LOOKUP
1254 JMP I BASLUK
1255 ISZ BASLUK
1256 TAD (7
1257 DCA BASBLK
1258 JMS I [7607
1259 200
1260 AUXBUF
1261BASBLK, 0
1262 JMP I [SYSERR
1263 TAD BASBLK
1264 DCA BASB2
1265 TAD I (AUXBUF+2
1266 SNA CLA
1267 JMP I BASLUK
1268 JMP I (OLDBAS
1269
1270BASWRI, 0
1271 JMS I [7607
1272 4200
1273 AUXBUF
1274BASB2, 0
1275 JMP I [SYSERR
1276 JMP I BASWRI
1277 PAGE
1278\fTTCODE, 0
1279 TAD NO
1280 SZA CLA
1281 JMP I [SYNTAX
1282 JMS I [ONUM
1283 SNA
1284 JMP I [SYNTAX
1285 DCA NUCODE
1286 TAD NUCODE
1287 AND [7700
1288 SZA CLA
1289 JMP I [NUMBIG
1290 JMS I [TTST1
1291 TAD (7200
1292 DCA RR
1293 JMS GETIOT
1294 JMP I [OLDERR
1295 CIA
1296 DCA T2
1297TTLP, JMS GETIOT
1298 JMP I [OLDERR
1299 CIA
1300 DCA T3
1301 TAD T3
1302 CIA
1303 TAD T2
1304 SNA
1305 JMP TTLP
1306 SMA CLA
1307 JMP .+3
1308 TAD T3
1309 DCA T2 /T2 CONTAINS NEG OF SMALLER IOT
1310 TAD (7200
1311 DCA RR
1312TTLP2, JMS GETIOT
1313 JMP I TTCODE
1314 TAD T2
1315 SZA CLA
1316 CLA IAC
1317 TAD NUCODE
1318 CLL RTL
1319 RAL
1320 DCA T3
1321 TAD I RR
1322 AND (7007
1323 TAD T3
1324 DCA I RR
1325 JMP TTLP2
1326\fGETIOT, 0
1327 ISZ RR
1328 TAD RR
1329 TAD (-7600
1330 SNA CLA
1331 JMP I GETIOT
1332 TAD I RR
1333 AND [7000
1334 TAD [-6000
1335 SZA CLA
1336 JMP GETIOT+1
1337 TAD I RR
1338 RTR
1339 RAR
1340 AND [77
1341 TAD (-20
1342 CLL RAR
1343 SNA
1344 JMP GETIOT+1
1345 RAL
1346 TAD (20
1347 ISZ GETIOT
1348 JMP I GETIOT
1349\fNOTIMPL,JMS I [PRINT
1350 TEXT /% OPERATION NOT YET IMPLEMENTED/
1351 JMP I [GOAWAY
1352\fSET, JMS I [SPACE
1353 DCA VNO /V3C
1354 JMS I [GETDEV
1355 JMS I [GETC
1356 JMS I [BRANCH
1357 -":;COLN
1358 -" ;COLN
1359 -"-;HYPH
1360 0
1361 JMP I [SYNTAX /NO : OR BLANK AFTER NAME
1362
1363BADHIT, JMS I [PRINT
1364 TEXT /? BAD HEIGHT SPECIFIED/
1365 JMP I [GOAWAY
1366
1367TTALT, 0
1368 JMS I [TTST1
1369 JMP I [NOTIMPL
1370 JMP I TTALT
1371 PAGE
1372\fCOLN, STA
1373 JMS I [SPACE /IGNORE OPTIONAL SPACES
1374 JMS I [GETC
1375 SNA
1376 JMP I [SYNTAX
1377 TAD (-"-
1378 SNA CLA
1379 JMP HYPH
1380 JMS I [BACKC
1381 STA
1382 TAD DEVNUM
1383 SNA CLA
1384 JMP SYSDV
1385COLN2, DCA NAM1
1386 DCA NAM2
1387 TAD (MAIN-1 /LOOK FOR DEVICE TYPE IN MAIN TABLE
1388MNLUP, DCA XR1
1389 TAD I XR1
1390 SMA SZA
1391 JMP NOTYP /NOT FOUND
1392 TAD DEVTYP
1393 SNA CLA
1394 JMP FNDTYP
1395 TAD XR1
1396 TAD (3 /POINT TO NEXT ENTRY
1397 JMP MNLUP
1398\fFNDTYP, TAD I XR1 /GET GENERIC NAME
1399 DCA NAM1
1400 TAD I XR1
1401 DCA NAM2
1402 DCA AUXFLG
1403 TAD I XR1 /GET PTR TO DEVICE TABLE
1404INTO, DCA PTR
1405 DCA NO
1406 TAD LINPTR
1407 DCA SAVPTR /SAVE SCAN POINTER
1408 JMS I [GETTWO
1409 TAD (-1617
1410 SNA CLA /ARE NEXT TWO CHARS 'NO'?
1411 JMS SAWNO /YES
1412 TAD SAVPTR /NO
1413 DCA LINPTR /RESTORE PTR
1414SCNLUP, TAD I PTR
1415 SNA /GET NEXT KEYWORD POINTER
1416 JMP NOKEY
1417 ISZ PTR /POINT TO PTR TO ROUTINE
1418 JMS I [KEYSRCH
1419 JMP NOF /NOT FOUND
1420 TAD I PTR /FOUND
1421 DCA PTR /GET PTR TO ROUTINE
1422 STA
1423 TAD DEVNUM
1424 SZA CLA
1425 JMS I (HREAD /READ HANDLER
1426 JMS I PTR /CALL ROUTINE
1427 STA
1428 TAD DEVNUM
1429 SZA CLA
1430 JMS I (HWRITE /REWRITE HANDLER
1431 JMP I [GOAWAY
1432
1433SYSDV, ISZ AUXFLG
1434 TAD (SYSAUX
1435 JMP INTO /V3D ALLOW SET SYS:
1436\fHYPH, JMS I [ALPHA
1437 JMP I [BADV
1438 DCA VNO
1439 TAD VNO
1440 SNA
1441 JMP I [BADV
1442 AND [17
1443 DCA VNO
1444 JMS I [SPACE /IGNORE SPACE
1445 JMP COLN2
1446\fNOKEY, TAD AUXFLG
1447 SNA CLA
1448 JMP NOO
1449 JMS I [PRINT
1450 TEXT \? UNKNOWN ATTRIBUTE FOR DEVICE \
1451 *.-1
1452NAM1, 0
1453NAM2, 0
1454 0
1455 JMP I [GOAWAY
1456
1457SAWNO, 0
1458 ISZ NO
1459 STA
1460 JMS I [SPACE
1461 TAD LINPTR
1462 DCA SAVPTR
1463 JMP I SAWNO
1464
1465NOTYP, CLA
1466 ISZ AUXFLG
1467 TAD (AUX /SEARCH AUXILIARY TABLE
1468 JMP INTO
1469\fNOF, ISZ PTR
1470 TAD SAVPTR
1471 DCA LINPTR
1472 JMP SCNLUP
1473
1474AUXFLG, 0
1475
1476NOO, ISZ AUXFLG
1477 TAD (AUX
1478 DCA PTR
1479 JMP SCNLUP
1480 PAGE
1481\fHREAD, 0
1482 TAD DBLK
1483 SNA
1484 JMP RESERR
1485 DCA BLOCK
1486 JMS I [7607
1487 200 /READ 2 PAGES
1488L7200, 7200 /INTO 7200-7577
1489BLOCK, 0 /FROM THIS BLOCK ON SYSTEM DEVICE
1490 JMP I [SYSERR
1491 TAD DHI
1492 AND [177 /GET RELATIVE ENTRY PT
1493 TAD L7200
1494 DCA ENTRY
1495 TAD VNO
1496 SZA CLA /V3C
1497 JMP I HREAD /VNO ALREADY SET BY - COMMAND
1498 TAD ENTRY
1499VLOOP, DCA VNOPTR
1500 TAD I VNOPTR
1501 CLL
1502 TAD [-33
1503 SZL CLA
1504 JMP BACKV
1505 TAD I VNOPTR
1506 SNA
1507 JMP OLDERR
1508 DCA VNO
1509 JMP I HREAD
1510BACKV, STA
1511 TAD VNOPTR
1512 JMP VLOOP
1513
1514RESERR, JMS I [PRINT
1515 TEXT /? CAN'T - DEVICE IS RESIDENT/
1516 JMP I [GOAWAY
1517\fOLDERR, CLA
1518 JMS I [PRINT
1519 TEXT /? CAN'T - OBSOLETE HANDLER/
1520 JMP I [GOAWAY
1521
1522HWRITE, 0
1523 TAD BLOCK
1524 DCA BLKTWO
1525 JMS I [7607
1526 4200
1527 7200
1528BLKTWO, 0
1529 JMP I [SYSERR
1530 JMP I HWRITE
1531\fNEWERR, CLA
1532 JMS I [PRINT
1533 TEXT /? CAN'T - UNKNOWN VERSION OF THIS HANDLER/
1534 JMP I [GOAWAY
1535\fMAIN, -0; DEVICE TTY; TTYTBL
1536 -1; DEVICE PTR; PTRTBL
1537 -2; DEVICE PTP; PTPTBL
1538 -3; DEVICE CDR; CDRTBL
1539 -4; DEVICE LPT; LPTTBL
1540 -20; DEVICE MTA; MTATBL
1541 1
1542 ZBLOCK 20
1543/TABLE ENDS WITH A POSITIVE NON-ZERO NUMBER
1544\fLPTTBL, WIDTH;LPWDTH
1545 LC;LPLC
1546 LV8E;LPLV
1547 LA8A; LP8A
1548 LA78; LP78
1549 ZBLOCK 4
1550 0
1551
1552MTATBL, PARITY;MTAPAR
1553 DENSITY;MTADEN
1554 FILES;MTAFIL
1555 ZBLOCK 4
1556 0
1557\fAUX, LOC;GENLOC
1558 FILES;GENFIL
1559 READO;GENREA
1560 VERS;GENVER
1561 DVCO;GENDVC /V3D
1562 BLK;GENBLK /V3D
1563 ZBLOCK 6
1564 0
1565\fWIDTH, "W;"I;"D;"T;"H;0
1566LC, "L;"C;0
1567LV8E, "L;"V;4000+"8;4000+"E;0
1568CODE, "C;"O;"D;"E;0
1569ALT, "A;"L;"T;4000+"M;4000+"O;4000+"D;4000+"E;0
1570ECHO, "E;"C;"H;"O;0
1571PAYGE, "P;"A;"G;"E;0
1572TAB, "T;"A;"B;0
1573LOC, "L;"O;"C;4000+"A;4000+"T;4000+"I;4000+"O;4000+"N;0
1574FILES, "F;"I;"L;"E;4000+"S;0
1575READO, "R;"E;"A;"D;4000+"O;4000+"N;4000+"L;4000+"Y;0
1576VERS, "V;"E;"R;4000+"S;4000+"I;4000+"O;4000+"N;0
1577PARITY, "P;"A;"R;4000+"I;4000+"T;4000+"Y;0
1578DENSITY,"D;"E;"N;4000+"S;4000+"I;4000+"T;4000+"Y;0
1579FILL, "F;"I;"L;"L;0
1580FLAGG, "F;"L;"A;"G;0
1581CTRL, "C;"T;"R;"L;0
1582EVEN, "E;4000+"V;4000+"E;4000+"N;0
1583ODD, "O;4000+"D;4000+"D;0
1584DELAY, "D;"E;"L;"A;"Y;0
1585GAG, "G;"A;"G;0
1586PAUS, "P;"A;"U;"S;"E;0
1587HGHT, "H;"E;"I;"G;"H;"T;0
1588SCOPP, "S;"C;"O;"P;"E;0
1589SYSAUX, INIT; SYSINI
1590 OS8; SYSOS8
1591 OS78; SYS78
1592 ZBLOCK 10
1593 0
1594DVCO, "D;"V;"C;4000+"O;4000+"D;4000+"E;0
1595COL, "C;"O;"L;4000+"U;4000+"M;4000+"N;0
1596LA8A, "L;"A;"8;"A;0
1597LA78, "L;"A;"7;"8;0
1598INIT, "I;"N;"I;"T;0
1599OS8, "O;"S;"8;0
1600OS78, "O;"S;"7;"8;0
1601 PAGE
1602\fLPWDTH, 0
1603 JMS I (GETWID
1604 JMS LPTST1
1605 TAD NUM
1606 CMA
1607 DCA I (7200
1608 JMP I LPWDTH
1609
1610LPTST1, 0
1611 TAD I (7201
1612 SPA CLA
1613 JMP L645
1614 TAD VNO
1615 JMS I [BRANCH
1616 -1;OLDERR
1617 -2;LPTOK
1618 -3;LPTOK
1619 ZBLOCK 4
1620 0
1621 JMP I [NEWERR
1622LPTOK, JMP I LPTST1
1623
1624L645, JMS I [PRINT
1625 TEXT /? CAN'T AFFECT ANNALEX LPT/
1626 JMP I [GOAWAY
1627\fASRTST, 0
1628 TAD DHI
1629 SPA CLA
1630 JMP I ASRTST
1631 JMS I [PRINT
1632 TEXT /? CAN'T - NOT KL8E HANDLER/
1633 JMP I [GOAWAY
1634\fGENVER, 0
1635 TAD NO
1636 SZA CLA
1637 JMP I [SYNTAX
1638 JMS I [ALPHA
1639 JMP BADV
1640 DCA NUM
1641 TAD NUM
1642 AND (40
1643 SZA CLA
1644 JMP BADV
1645 TAD NUM
1646 AND (37
1647 DCA I VNOPTR
1648 JMP I GENVER
1649
1650GENREA, 0
1651 CDF 10
1652 TAD I DCWPTR
1653 CLL RTL
1654 CLL RAL
1655 TAD NO
1656 RAR
1657 CML RAR
1658 RAR
1659 DCA I DCWPTR
1660 CDF 0
1661 JMP I GENREA
1662
1663GENFIL, 0
1664 CDF 10
1665 TAD I DCWPTR
1666 CLL RAL
1667 CLL RAL /ZERO LINK
1668 TAD NO
1669 RAR
1670 CML RAR
1671 DCA I DCWPTR
1672 CDF 0
1673 JMP I GENFIL
1674\fBADV, CLA
1675 JMS I [PRINT
1676 TEXT /? BAD VERSION LETTER/
1677 JMP I [GOAWAY
1678
1679CRLF, 0
1680 TAD [215
1681 JMS I (TYPE
1682 TAD [212
1683 JMS I (TYPE
1684 JMP I CRLF
1685 PAGE
1686\fLPLV, 0
1687 JMS I (LPTST1
1688 TAD NO
1689 CLL RTL
1690 RTL
1691 TAD (4
1692 DCA I (7201
1693 JMP I LPLV
1694
1695LPLC, 0
1696 JMS I (LPTST1
1697 TAD NO
1698 CLL RTL
1699 RTL
1700 RAL
1701 CIA
1702 DCA I (7202
1703 JMP I LPLC
1704
1705TTECHO, 0
1706 JMS I [TTST1
1707 TAD NO
1708 SZA CLA
1709 TAD (SKP CLA-SZA
1710 TAD (SZA
1711 DCA I (7200+120
1712 JMP I TTECHO
1713\fTTPAGE, 0
1714 JMS I (OLDTST
1715 JMS I [SRCH /V3D NEW ROUTINE
1716 215;100;7450
1717 JMP I [REASEM
1718 TAD (3 /POINT TO 'SZA CLA'
1719 DCA TEMP
1720 TAD NO
1721 SNA CLA
1722 TAD (SZA CLA-CLA /YES
1723 TAD (CLA /NO
1724 DCA I TEMP
1725 JMP I TTPAGE
1726\fTTTAB, 0
1727 JMS I [TTST1
1728 JMS I [GETC
1729 SNA
1730 JMP TTEO
1731 TAD (-"/
1732 SNA CLA
1733 JMS I [GETC
1734 TAD (-"N
1735 SZA CLA
1736 JMP I [SYNTAX
1737 JMP NOTEC
1738TTEO, TAD NO
1739 SNA CLA
1740 TAD (5000
1741 TAD L200
1742 JMS I (TECO
1743NOTEC, JMS I [SRCH
1744L200, 200;100;7
1745 JMP I [REASEM
1746 DCA TEMP
1747 STA CLL RAL /-2
1748 TAD TEMP
1749 DCA T2
1750 TAD TEMP
1751 TAD (3
1752 DCA T3
1753 TAD NO
1754 SNA CLA
1755 JMP SETAB
1756 TAD TEMP
1757 TAD (-4
1758 DCA T4
1759 TAD T4
1760 AND (77
1761 TAD (1200 /TAD TTY240
1762 DCA I T2
1763 TAD (SZA CLA
1764 DCA I T3
1765 JMP I TTTAB
1766\fSETAB, TAD TEMP
1767 TAD (-12
1768 DCA T4
1769 TAD I T4
1770 DCA I T2
1771 TAD (SKP CLA
1772 DCA I T3
1773 JMP I TTTAB
1774
1775BADWID, JMS I [PRINT
1776 TEXT /? ILLEGAL WIDTH/
1777 JMP I [GOAWAY
1778
1779BLK, "B;"L;"O;"C;"K;0
1780 PAGE
1781\fTTFILL, 0
1782 JMS I [TTST1
1783 JMS I [SRCH
1784 200;100;1377
1785 JMP I [REASEM
1786 TAD (-1
1787 DCA TEMP
1788 TAD NO
1789 CLL RAL
1790 TAD (2
1791 TAD TEMP
1792 DCA T2
1793 TAD I T2
1794 DCA I TEMP
1795 JMP I TTFILL
1796
1797REASEM, JMS I [PRINT
1798 TEXT /? CAN'T - MUST REASSEMBLE KL8E SOURCE/
1799 JMP I [GOAWAY
1800
1801TTDELAY,0
1802 JMS I [TTST1
1803 JMP I [NOTIMPL
1804 JMP I TTDELAY
1805\f/ENTER WITH PTR TO POSSIBLE KEYWORD IN AC
1806
1807KEYSRCH,0
1808 DCA KPTR
1809KL, TAD I KPTR
1810 ISZ KPTR
1811 SNA
1812 JMP GOTKEY
1813 CIA
1814 DCA TEMP
1815 JMS I [ALPHA /IS IT ALPHANUMERIC?
1816 JMP EOK /NO
1817 TAD TEMP /COMPARE
1818 CLL RAL /LOW ORDER 11 BITS
1819 SNA CLA
1820 JMP KL /MATCHED, KEEP LOOKING
1821 JMP I KEYSRCH /DIDN'T MATCH
1822EOK, JMS I [BACKC
1823 TAD TEMP
1824 CIA /INPUT STREAM RAN OUT OR HIT SPACE
1825 SPA CLA
1826 JMP GOTKEY /SPACE OR EOL MATCH FLAGGED CHARACTER
1827 JMP I KEYSRCH
1828
1829KPTR, 0
1830
1831GOTKEY, JMS I [SCAN
1832 STA /SKIP EXTRA STUFF
1833 JMS I [SPACE
1834 ISZ KEYSRCH /TAKE GOOD RETURN 2
1835 JMP I KEYSRCH
1836
1837PTRTBL, ZBLOCK 4
1838 0
1839
1840PTPTBL, ZBLOCK 4
1841 0
1842\fTTYTBL, WIDTH;TTWIDTH
1843 CODE;TTCODE
1844 ALT;TTALT
1845 ECHO;TTECHO
1846 LC;TTLC
1847 PAYGE;TTPAGE
1848 TAB;TTTAB
1849 FILL;TTFILL
1850 FLAGG;TTFLAG
1851 CTRL;TTCTRL
1852 GAG;TTGAG
1853 DELAY;TTDELAY
1854 PAUS;TTPAUS /V3D
1855 HGHT;TTHGHT /V3D
1856 SCOPP;TTSCOP /V3D
1857 COL;TTCOL /V3D
1858 ESC;TTESC /V3D
1859 AROW;TTAROW /V3D
1860 ZBLOCK 10
1861 0
1862 PAGE
1863\fTTFLAG, 0
1864 JMS TTST1
1865 JMS I [SRCH
1866 200;200;247
1867 JMP I [REASEM
1868 TAD (-2
1869 DCA TEMP
1870 TAD NO
1871 SNA CLA
1872 TAD (SZA CLA-CLA
1873 TAD (CLA
1874 DCA I TEMP
1875 JMP I TTFLAG
1876
1877TTLC, 0
1878 JMS TTST1
1879 JMS I [SRCH
1880 200;200;377
1881 JMP I [REASEM
1882 TAD (5
1883 DCA TEMP
1884 TAD I TEMP
1885 CLL
1886 TAD [200
1887 SNL CLA
1888 JMP I [REASEM
1889 TAD NO
1890 SNA CLA
1891 TAD [40 /SNA CLA
1892 TAD (7610 /SKP CLA
1893 DCA I TEMP
1894 JMP I TTLC
1895
1896TTCTRL, 0
1897 JMS TTST1
1898 JMP I [NOTIMPL
1899 JMP I TTCTRL
1900\fTTWIDTH,0
1901 JMS GETWID
1902 JMS TTST1
1903 TAD NUM
1904 AND [7
1905 SZA CLA
1906 JMP I [BADWID
1907 TAD NUM
1908 TAD [-200
1909 SNA CLA
1910 JMP I [BADWID
1911 JMS I [SRCH
1912 200;200;7600
1913 JMP I [REASEM
1914 IAC
1915 DCA TEMP
1916 TAD I TEMP
1917 AND [177
1918 TAD (177+7200
1919 DCA T2
1920 TAD TEMP
1921 IAC
1922 DCA T3
1923 TAD NUM
1924 CIA
1925 DCA I T3
1926 TAD I T3
1927 DCA I T2
1928 JMP I TTWIDTH
1929\fGETWID, 0
1930 TAD NO
1931 SZA CLA
1932 JMP I [SYNTAX
1933 JMS OPTEQ
1934 JMS I [NUMBER
1935 SNA
1936 JMP I (BADWID
1937 DCA NUM
1938 TAD FLG
1939 SZA CLA
1940 JMP I [SYNTAX /NO DIGITS
1941 TAD NUM
1942 AND [7400
1943 SZA CLA
1944 JMP I [NUMBIG
1945 JMP I GETWID
1946
1947TTST1, 0
1948 JMS I (ASRTST
1949 TAD VNO
1950 JMS I [BRANCH
1951 -1;OLDERR
1952 -2;OLDERR
1953 -3;TTOK
1954 -4;TTOK /V3C
1955 -5;TTOK /V3D
1956 ZBLOCK 4
1957 0
1958 JMP I [NEWERR
1959TTOK, JMP I TTST1
1960\fOPTEQ, 0
1961 JMS I [GETC
1962 TAD (-"=
1963 SZA CLA
1964 JMP I OPTEQ
1965 STA /V3D
1966 JMS I [SPACE
1967 JMP I OPTEQ
1968 PAGE
1969\fOPRIN, 0
1970 DCA N3
1971 TAD (-4
1972 DCA OKNT
1973OPLP, TAD N3
1974 JMS DGP
1975 TAD N3
1976 RTL
1977 RAL
1978 DCA N3
1979 ISZ OKNT
1980 JMP OPLP
1981 JMP I OPRIN
1982
1983DGP, 0
1984 RTL
1985 RTL
1986 AND [7
1987 TAD [60
1988 JMS I [TYPE
1989 JMP I DGP
1990
1991OKNT, 0
1992N3, 0
1993GTEM, 0
1994\fSRCH, 0
1995 TAD I SRCH
1996 ISZ SRCH
1997 TAD (7200-1
1998 DCA XR1
1999 TAD I SRCH
2000 ISZ SRCH
2001 CIA
2002 DCA CNT
2003 TAD I SRCH
2004 CIA
2005 DCA TEMP
2006 ISZ SRCH
2007SRLUP, TAD I XR1
2008 TAD TEMP
2009 SNA CLA
2010 JMP SRFND
2011 ISZ CNT
2012 JMP SRLUP
2013 JMP I SRCH
2014SRFND, ISZ SRCH
2015 TAD XR1
2016 JMP I SRCH
2017\fGENCMN, 0
2018 TAD NO
2019 SZA CLA
2020 JMP I [SYNTAX
2021 JMS I [ONUM
2022 DCA NUM2
2023 TAD FLG
2024 SZA CLA
2025 JMP I [SYNTAX
2026 JMS I [GETC
2027 DCA TEMP
2028 TAD TEMP
2029 SNA
2030 JMP I GENCMN
2031 TAD (-"=
2032 SZA
2033 TAD ("=-",
2034 SZA CLA
2035 JMP I [SYNTAX
2036 JMP I GENCMN
2037\fGENLOC, 0
2038 JMS GENCMN
2039 TAD DHI
2040 SPA CLA
2041 TAD [-200
2042 TAD [-200
2043 CLL
2044 TAD NUM2
2045 SZL CLA
2046 JMP I [NUMBIG
2047 TAD NUM2
2048 TAD (7200 /BASE OF HANDLER
2049 DCA NUM2
2050 TAD TEMP
2051 SNA CLA
2052 JMS ODT
2053GETNEW, JMS I [ONUM
2054 DCA NUM
2055 TAD FLG
2056 SZA CLA
2057 JMP I GENLOC
2058 JMS I [GETC
2059 SZA CLA
2060 JMP I [SYNTAX
2061 TAD NUM
2062 DCA I NUM2
2063 JMP I GENLOC
2064\fODT, 0
2065 TAD I NUM2
2066 JMS OPRIN
2067 TAD ("/
2068 JMS I [TYPE
2069 TAD I [READ
2070 DCA GTEM /SAVE CHAIN STATUS
2071 JMS I [READ
2072 TAD [LINBUF
2073 DCA LINPTR
2074 TAD GTEM
2075 DCA I [READ
2076 JMP I ODT
2077
2078OLDBAS, JMS I [PRINT
2079 TEXT /? OLD BASIC/
2080 JMP I [GOAWAY
2081 PAGE
2082\fMTAPAR, 0
2083 TAD NO
2084 SZA CLA
2085 JMP I [SYNTAX
2086 JMS MTST1
2087 TAD LINPTR
2088 DCA SAVPTR
2089 TAD (EVEN
2090 JMS I [KEYSRCH
2091 SKP
2092 JMP SETE
2093 TAD SAVPTR
2094 DCA LINPTR
2095 TAD (ODD
2096 JMS I [KEYSRCH
2097 JMP I [SYNTAX
2098 TAD (400
2099SETE, TAD (2
2100 DCA I (7200
2101 JMP I MTAPAR
2102
2103MTST1, 0
2104 TAD VNO
2105 JMS I [BRANCH
2106 -1;OLDERR
2107 -2;OLDERR
2108 -3;OLDERR
2109 -4;MTOK
2110 -5;MTOK
2111 -6;MTOK
2112 ZBLOCK 4
2113 0
2114 JMP I [NEWERR
2115MTOK, JMP I MTST1
2116
2117MTADEN, 0
2118 JMS MTST1
2119 TAD NO
2120 SZA CLA
2121 JMP I [SYNTAX
2122 JMP I [NOTIMP
2123 JMP I MTADEN
2124\fMTAFIL, 0
2125 JMS MTST1
2126 TAD NO
2127 CIA /V3D
2128 IAC /V3D
2129 DCA I (7201
2130 JMP I MTAFIL
2131
2132BADCOD, JMS I [PRINT
2133 TEXT /? UNKNOWN CARD CODE/
2134 JMP I [GOAWAY
2135
2136/SUPPOSED TO WORK ON ALL VERSIONS
2137
2138CDCODE, 0
2139 TAD NO
2140 SZA CLA
2141 JMP I [SYNTAX
2142 JMS I (OPTEQ
2143 JMS I [NUMBER
2144 TAD (-32 /026
2145 SNA
2146 JMP C026
2147 TAD (32-35 /029
2148 SZA CLA
2149 JMP BADCOD
2150 JMS CHANGE
2151 LIST1;LIST2
2152 JMP I CDCODE
2153C026, JMS CHANGE
2154 LIST1;LIST3
2155 JMP I CDCODE
2156\fCHANGE, 0
2157 TAD I CHANGE
2158 DCA P1
2159 ISZ CHANGE
2160 TAD I CHANGE
2161 DCA P2
2162 ISZ CHANGE
2163CHLUP, TAD I P1
2164 SNA
2165 JMP I CHANGE
2166 TAD (7200 /BASE OF HANDLER
2167 DCA P3
2168 TAD I P2
2169 DCA I P3
2170 ISZ P1
2171 ISZ P2
2172 JMP CHLUP
2173
2174P1, 0
2175P2, 0
2176P3, 0
2177\fGET, 0
2178 KSF
2179 JMP .-1
2180 KRB
2181 AND [177
2182 TAD [200 /FORCE TO 8-BIT
2183 JMP I GET
2184 PAGE
2185\f/FIXED FOR V3D:
2186LIST1, 104;105;106
2187 114;115;116
2188 124;125;126;127
2189 134;135;136
2190 0
2191
2192LIST2, 3203;4007;3502
2193 7514;0577;3637
2194 0104;1211;3374;0641
2195 7316;3410;1376
2196
2197LIST3, 7735;4076;0774
2198 3314;1002;0305
2199 3204;1273;3606;1341
2200 3716;1175;3401
2201\fTECNAM, FILENAME TECO.SV
2202
2203TECO, 0
2204 DCA SA
2205 TAD (TECNAM
2206 JMS LOOKUP
2207 JMP I TECO /NOT THERE
2208 DCA BLKN
2209 JMS I (7607
2210 100 /READ 1 PAGE FROM TECO
2211 7000 /BUFFER
2212BLKN, 0
2213 JMP I [SYSERR
2214 TAD BLKN
2215 DCA BLKN2
2216 TAD SA
2217 DCA I (7002 /REL LOC 2 IS S.A.
2218 JMS I (7607
2219 4100
2220 7000
2221BLKN2, 0
2222 JMP I [SYSERR
2223 JMP I TECO
2224
2225SA, 0
2226\fLOOKUP, 0
2227 DCA ARG1 /PTR TO FILENAME IN AC
2228 CLA IAC /LOOKUP ON SYS
2229 CIF 10
2230 JMS I USR
2231 2
2232ARG1, 0 /STARTING BLOCK
2233 0
2234 JMP I LOOKUP /NOT FOUND
2235 TAD ARG1
2236 ISZ LOOKUP
2237 JMP I LOOKUP /RETURN 2 WITH BLOCK # IN AC
2238\fGENDVC, 0
2239 TAD NO
2240 SZA CLA
2241 JMP I [SYNTAX
2242 JMS I [ONUM
2243 SNA
2244 JMP I [SYNTAX
2245 DCA NUCODE
2246 TAD NUCODE
2247 AND [7700
2248 SZA CLA
2249 JMP I (NUMBIG
2250 TAD NUCODE
2251 TAD (-30
2252 SPA CLA
2253 JMP I [NUMBIG
2254 TAD NUCODE
2255 CLL RTL
2256 RAL
2257 DCA NUCODE
2258 TAD (7200
2259 DCA RR
2260DVLUP, JMS I (GETIOT
2261 JMP I GENDVC
2262 TAD (-30
2263 SPA CLA
2264 JMP DVLUP
2265 TAD I RR
2266 AND (7007
2267 TAD NUCODE
2268 DCA I RR
2269 JMP DVLUP
2270\fCDRTBL, CODE;CDCODE
2271 ZBLOCK 4
2272 0
2273 PAGE
2274
2275/7000-7177 BUFFER FOR TECO CCB
2276/7200-7577 BUFFER FOR HANDLER
2277\f FIELD 0
2278 *200
2279 $