1 /5 OS/8 SYMBOLIC EDITOR, V12
15 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
19 /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
20 /SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU-
21 /SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANT OTHER
22 /COPIES THEREOF, MAY NOT BR PROVIDED OR OTHERWISE MADE AVAILABLE
23 /TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO
24 /AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE
25 /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
28 /THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
29 /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
30 /EQUIPMRNT COROPATION.
32 /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
33 /SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
42 /COPYRIGHT 1971,1972 DIGITAL EQUIPMENT CORPORATION
43 / MAYNARD, MASSACHUSSETTS 01754
45 /THE SYMBOLIC EDITOR IS A LINE-ORIENTED
46 /TEXT EDITOR WITH CHARACTER AND STRING
47 /SEARCH CAPABILITIES. IT IS DESIGNED
48 /TO BE COMPATIBLE WITH THE OS/8 SYSTEM.
50 /THE DESIGN OF THE EDITOR IS SIMILAR
51 /TO THAT OF THE PAPER TAPE SYMBOLIC
52 /EDITOR AND THE DISK MONITOR SYSTEM
56 / OS/8 V3 CHANGES S.R.
59 /2. ALLOW CHAINING TO EDIT
60 /3. ADDED VERSION # COMMAND (#)
61 /4. COMBINED ^C ROUTINES, TAKING OUT BRANCH THRU 17667
62 /5. ALLOWED PARITY CHARACTERS EVERYWHERE
65 / FIX FOR V10 J.K. 1975
67 / THE CLOSE ERROR MESAGE 2? WAS BEING
68 / GIVEN INSTEAD OF FILE FULL MESSAGE
69 / WHEN THE INPUT FILE FIT INTO THE EDIT BUFFER
70 / BUT WAS TOO LARGE FOR THE AVAILIBLE SPACE ON THE
73 / V11 CHANGES 25-MAY-77 DAVID SPECTOR
75 /1. ESCAPE KEY NO LONGER ECHOED
76 /2. SCOPE MODE SUPPORTED
77 /3. ONCE-ONLY CODE MOVED TO INPUT HANDLER
78 / AREA IN ORDER TO FREE LOCS 3000-3177
80 / V12 CHANGES 27-JUN-77 EDWARD P. STEINBERGER
82 /ALLOWED ESCAPE(233) TO BE AN INPUT CHARACTER IN TEXT MODE.
83 /ECHOS AS "$" ON TERMINAL OR LINEPRINTER (IF V), OUTPUT
86 \f/THE LOADING AND SAVING PROCEDURE FROM PAPER TAPE IS:
92 /THE STARTING ADDRESS IS 00200.
94 /COMMAND DECODER RULES:
95 /*OUTPUT FILE<UP TO 9 INPUT FILES/OPTIONS
98 /A RETURN CONTROL TO EDITOR AFTER FILE CLOSE
99 / (CALLS COMMAND DECODER FOR NEW FILES)
100 / (DEFAULT IS RETURN TO MONITOR)
101 /B CONVERT 2 OR MORE SPACES TO TAB ON INPUT
102 /D DELETE OLD COPY OF OUTPUT FILE BEFORE
106 / 0 FAILURE IN INPUT DEVICE HANDLER
107 / 1 FAILURE IN OUTPUT DEVICE HANDER
108 / 2 COULD NOT CLOSE FILE
109 / 3 COULD NOT OPEN FILE
110 / 4 DEVICE HANDLER COULD NOT BE LOADED
113 PATCH="A /PATCH LEVEL A
116 /A APPEND TEXT TO BUFFER
117 /I INSERT TEXT INTO BUFFER
118 /C CHANGE TEXT IN BUFFER
119 /L LIST TEXT IN BUFFER
120 /D DELETE TEXT IN BUFFER
122 /M MOVE TEXT WITHIN BUFFER
123 /G GET AND LIST TAGGED LINE IN BUFFER
124 /B LIST # OF CORE LOCATIONS LEFT IN BUFFER
126 /J INTER-BUFFER STRING SEARCH
127 /F AFTER J, SEARCH FOR NEXT OCCURRANCE
129 /$ INTRA-BUFFER STRING SEARCH
130 /R READ TEXT INTO BUFFER FROM INPUT DEVICE
131 /N WRITE BUFFER, KILL, AND READ NEXT PAGE
132 /Y INPUT TEXT PAGE, NO OUTPUT
133 /P WRITE TEXT BUFFER TO OUTPUT DEVICE
134 /T PUNCH TRAILER TAPE
135 /E OUTPUT BUFFER, TRANSFER REST OF
136 / INPUT FILE TO OUTPUT FILE
138 /Q IMMEDIATE END OF FILE
140 /# TYPE VERSION NUMBER
145 /.LE. LESS THAN OR EQUAL TO
147 /.GE. GREATER THAN OR EQUAL TO
153 /SINCE THE EDITOR IS CODED ACROSS PAGE BOUNDARIES, IT IS
154 /NECESSARY TO BE AWARE OF THE EFFECTS OF THE INSERTION
155 /OR DELETION OF CODE. FOR THIS REASON, THE LIMITS
156 /OF PERMISSABLE PAGE BOUNDARY WANDERING
157 /ARE INDICATED WITH THE FOLLOWING CONSTRUCTION:
159 /-----------------------------------------------------------------------
160 /SOMEWHERE BETWEEN LINES, THE PAGE BOUNDARY MUST OCCUR
161 /-----------------------------------------------------------------------
165 /MISCELLANEOUS POINTER AND CONSTANTS
167 BUFEND, 6100 /WARNING FOR END OF BUFFER
168 P7700, 7700 /MONITOR CALL LOCATION
171 NOP /RESERVED FOR ODT
178 C277, 277 /QUESTION MARK
180 /AUTO-INDEX REGISTERS
182 AXOUT, 0 /OUTPUT INDEX
183 AXCOMB, 0 /COMBINE POINTER
184 AXTEM, 0 /TEMPORARY INDEX
185 AXIN, 0 /STORAGE INDEX
194 C200, 200 /(START & RESTART)
203 257 /COMMENT DELIMITER (/)
210 C215, 215 /CARRIAGE RETURN
215 M27, -27 /LIST DELIMITER
217 /SPECIAL CHARACTER LIST FOR
219 LIST5=. /USED AT AONE
221 LIST6=. /USED AT SFOUND
224 BELL, 207 / ^G (BELL)
230 000 /(SEARCH CHARACTER)
231 RST3I, RESET3 /RESET AND SAVE BUFFER
232 MCHIN1, -CHIN-1 /LIST DELIMITER
235 /CONSTANTS AND POINTERS
237 CCR=C215 /CARRIAGE RETURN
239 MTABS, -10 /TAB COUNTER
256 CZ, NOP /CONTENTS OF START
261 SXS1, TAD CHAR /CONTENTS OF L3
262 SXS2, SLOOK&177+5200 /JMP SLOOK
263 L3I, L3 /PATCH POINTER
264 L2I, L2 /CONTINUE SEARCH - LETTERS
270 /CHAR IS ALWAYS SET BY OUT, SOMETIMES BY SORTB;
271 /IT IS ALWAYS USED BY PACK AND SORTB.
274 COUNTP, 0 /NUMBER OF PAGES
276 XCT, 0 /UNPACK SWITCH
277 XCTIN, 0 /PACK SWITCH
278 ECHOSW, 1 /NON-ZERO TO PRINT
280 TABIND, 0 /TABS OR SPACES SWITCH
282 THIS, 0 /LINE POINTER.
283 OUTDEV, OUTL /POINTER TO OUTPUT SUBROUTINE
284 GRBAGE, GARBAG /GARBAGE COLLECTOR
285 MARK, 0 /OBJECT LINE IN G.C.
286 XSAV, 0 /HOLD INPUT POINTER.
291 ERSW, ERROR /ERROR ROUTINE
294 EKILLL, 0 /E CMD SWITCH 1 IF E NOT ALLOWED
296 /I-O RELATED POINTERS AND WORDS
299 BUFRDI, BUFRD /OR CHIN...IN DEVICE POINTER
300 BUFWTI, BUFWT /WRITE OUTPUT TO DEVICE
301 CLFLI, FLCLOS /SET TO CLOSE FILE
303 JMPCH, PUNCH&177+5200 /DESTROYED BY YANK
305 /ERROR ROUTINE POINTERS
312 GTEM=. /NEXT 6-BITS OF UNPACK
313 DTEM=. /NEXT POINTER IN DELETE CHAIN
317 /REJECTS ILLEGAL COMMAND
324 JMS I OUTL1 /PRINT "?"
325 CZONE, TAD CZ /RESET PATCHES
327 JMPTE1, JMP I TE1 /*RETURN TO COMMAND MODE*
330 UPAROI, UPAROW /GENERATE ^ CHARACTER
331 MONITOR, MONIT /MONITOR EXIT ROUTINE
337 THSN, 0 /CURRENT LINE NUMBER
338 LSTN, 0 /LAST LINE NUMBER
353 FRST, 0 /FIRST LINE ADDRESS
355 LSTCHK, 0 /DIGIT ACCEPTED FLAG
357 INIT /INITIALIZATION CODE
358 /EITHER 3000 OR VALUE OF RESET
362 STA /V3 NORMAL START OR RESTART ADDR
363 DCA TEMP /V3 CHAIN START ADDR
364 JMP I 177 /START AT 3000 OR RESET
365 /HANDLER FOR ^U (IF IN COMMAND MODE)
366 START, NOP /V3 MAY BE MODIFIED
367 TAD LOW /ENTER COMMAND MODE
368 DCA OUTDEV /INITIALIZE KEYBOARD
369 DCA TABIND /CLEAR TAB INDICATOR
370 ISZ ECHOSW /SET UP FOR ECHO
374 TAD ERSW /RESET ERROR SWITCH AT L1
378 DCA LSTCHK /CLEAR DIGIT ACCEPTED
379 TAD CCR /OUTPUT CARRIAGE RETURN
381 /HANDLER FOR CARRIAGE RETURN (COMMAND MODE)
384 GTOP, DCA ARG0 /CLEAR ARGUMENTS
386 /HANDLER FOR SPACE OR +
390 DCA G2 /SET SIGN TO + OR -
392 CMCHK, JMS I CHI1 /INPUT ONE CHARACTER
397 JMP COUNT /YES - CONTINUE ACCEPTING NUMBERS
401 TAD TEMP /GET ACCUMULATED NUMBER
402 G2, HLT /(NOP) OR (CIA) TO HANDLE SIGN
404 DCA ARG2 /STORE NEW ARGUMENT
405 JMS SORTB /WAS LAST CHARACTER SPECIAL?
406 LIST1-1 /YES - COMPARE TO LIST
407 OPS1-LIST1 /AND BRANCH TO HANDLER
408 TAD CHAR /NO - SAVE COMMAND CHARACTER
410 JMS I CHI1 /INPUT ONE CHARACTER
411 JMS SORTB /IS IT CARRIAGE RETURN, ^C, OR ^U?
412 LIST1A-1 /YES - EXIT TO HANDLER
414 ERROR /NO - TRY AGAIN
416 /CHECK LEGALITY OF ARGUMENTS
417 /ARG0 CONTAINS FIRST ARGUMENT
418 /ARG2 CONTAINS SECOND ARGUMENT
422 TAD ARG2 /YES - ARG0=ARG2
427 SMA /IS ARG0 .LE. ARG2?
429 DCA ARG1 /YES - ARG1=ARG0-ARG2-1
431 SPA CLA /IS ARG0 .GE. 0?
433 TAD SAVE /YES - GET COMMAND CHARACTER
434 JMS SORTB /IS IT A LEGAL COMMAND?
435 LIST2-1 /YES - MATCH TO LIST
436 OPS2-LIST2 /AND BRANCH TO ITS HANDLER
437 ERROR /NO - TRY AGAIN
440 /COMMAND IDENTIFICATION LIST
441 LIST2=. /COMMAND LETTERS
462 SIGN, "# /V3 VERSION #
465 /SORT AND BRANCH ROUTINE
466 /LOOKS FOR MATCH BETWEEN CHAR
467 /AND ELEMENTS OF TABLE 1 SPECIFIED
473 /DISPATCHES TO CORRESPONDING ADDRESS IN TABLE 2
476 SZA /IS CHARACTER STORED YET?
477 DCA CHAR /NO - STORE IT
480 DCA AXTEM /STORE TABLE 1 ADDRESS
481 TAD I AXTEM /GET TABLE ENTRY
485 TAD CHAR /GET CHARACTER
486 SZA CLA /DO THEY MATCH?
487 JMP .-6 /NO - KEEP TRYING
488 TAD AXTEM /YES - THEY MATCH
489 TAD I SORTB /GET DISPATCH TABLE ADDRESS
492 DCA SORTB /SET RETURN ADDRESS
493 JMP I SORTB /--RETURN--VIA DISPATCH TABLE
494 SEX, ISZ SORTB /MATCH NOT FOUND
499 /DECIMAL ADDITION ROUTINE
500 /FOR NUMERIC ARGUMENTS OF COMMANDS
501 /ENTER WITH INPUT DIGIT IN SORTB
502 /EXIT WITH ACCUMULATED NUMBER IN AC
504 ISZ LSTCHK /GOT A DIGIT NOW
510 JMP DBCV2 /RETURN TO MAIN SEQUENCE
511 \f/-----------------------------------------------------------------
513 /DISPATCH LIST FOR COMMAND HANDLERS
535 \f/END OF INPUT TEXT LINE ROUTINE
537 EOL, JMS I ENDLNI /RESET LINK CELLS
538 ISZ LSTN /INCREMENT LINE POINTERS
543 SNL CLA /IS THE BUFFER FULL?
544 /------------------------------------------------------------
545 JMP MOR /NO - KEEP FILLING
546 TAD BELL /YES - RING WARNING BELL
548 JMP I TE1 /*RETURN TO COMMAND MODE*
551 /CONTINUATION OF HANDLERS FOR A, C, AND I COMMANDS
552 APP1, TAD LSTN /APPEND
553 DCA ARG0 /RESET ARG0 TO END OF TEXT
555 CNGE1, JMS I DELT /CHANGE - DELETE LINES AND
556 XNS1, TAD ARG0 /INSERT
557 SNA CLA /ANY ARGUMENTS?
558 INS, ISZ ARG0 /NO - INSERT AT BEGINNING OF TEXT
560 JMS I FIN1 /FIND THE POINTER
562 ISZ TABIND /SET TAB INDICATOR
564 TAD I THIS /GET LINK TO BUFFER
569 DCA THSN /SET LINE POINTER
570 AONE, TAD BUFR /BEGIN LINE
573 MOR, JMS I BUFRDI /GET A CHARACTER
574 JMS I SORTJ /IS IT SPECIAL? (SEE LIST)
576 INLIST-LIST5 /YES - GO TO ITS HANDLER
577 JMS PACBUF /NO - PACK IT
578 JMP MOR /FETCH ANOTHER
580 /CHARACTER PACKING ROUTINE
581 /CONVERTS CHARACTER IN CHAR TO INTERNAL CODE
582 /AND CALLS PCK1 TO PACK IT INTO BUFFER
583 /ENTER AND EXIT WITH AC CLEAR
587 TAD AXIN /DON'T ADD CHARACTERS
588 TAD K1210 /IF AXIN ABOVE 6570
589 SZL CLA /IS THERE ROOM FOR THIS ONE?
594 JMP ESCA /YES - ATTACH 77
596 SMA SZA /IS IT 337 OR LESS?
597 JMP ESCA /NO - ATTACH 77
598 TAD P40 /YES - IS IT 277?
600 JMP ESCA /YES - ATTACH 77
601 TR1, TAD CHAR /240-337 EXCEPT 277
602 AND C77 /MASK OUT LEFT 6 BITS
604 JMP I PACBUF /--RETURN--
605 ESCA, CLA /200-237, 277,340-377
608 JMP TR1 /PACK THE CHARACTER
610 /PACK CHARACTERS INTO TEXT BUFFER
611 /ENTER WITH 6-BIT CODE IN AC
614 ISZ XCTIN /LEFT HALF OR RIGHT HALF?
616 DCA UTRA /RIGHT HALF - STORE CHARACTER
617 TAD UTRA /GET CHARACTER
618 TAD ADD /GET PREVIOUS CHARACTER
620 DCA I AXIN /STORE IN FIELD 1 BUFFER
623 JMP I PCK1 /--RETURN--
624 ROT, CLL RTL /LEFT HALF
627 DCA ADD /RETAIN UNTIL NEXT CHARACTER
629 DCA XCTIN /RESET L OR R SWITCH
630 JMP I PCK1 /--RETURN--
632 UTEST=PACBUF /TEMPORARY
634 /CHARACTER UNPACKING ROUTINE
635 /CONVERTS ONE CHARACTER FROM
636 /BUFFER FORMAT TO 8-BIT ASCII
637 /EXIT WITH CHARACTER IN AC
640 CLA CMA /INITIALIZE TO -1
642 EXTR, ISZ XCT /LEFT HALF OR RIGHT HALF?
645 TAD I AXOUT /GET BUFFER WORD
652 JMP GET4 /SKIP TO GETA
653 GET3, CLA CMA /RESET L - R SWITCH
656 GET4, AND C77 /MASK OUT LEFT 6 BITS
660 ISZ UTEST /YES - WAS IT LEFT HALF?
661 JMP GET5 /NO - CONTINUE
662 JMP EXTR /YES - GET OTHER HALF
664 ISZ UTEST /RESTORE THE CHARACTER
669 TAD X203 /IS IT A ^C?
671 JMP UTRA+1 /YES - IGNORE IT
672 TAD M27 /NO - IS IT A ^Z?
674 JMP UTRA+1 /YES - IGNORE IT
675 TAD P232 /NO - RESTORE CHARACTER
676 JMP I UTRA /--RETURN--
678 /-------------------------------------------------------------
679 /INPUT LIST FOR SPECIAL CHARACTERS IN TEXT MODE
689 /HANDLER FOR FORM FEED OR ^G
692 SNA CLA /IN APPEND MODE?
693 JMP I TE1 /YES*RETURN TO COMMAND MODE*
694 TAD LSTN /NO - IS BUFFER EMPTY?
696 /--------------------------------------------------------------
697 JMP I MORI /YES - IGNORE FORM FEED
698 JMP I TE1 /NO*RETURN TO COMMAND MODE*
703 /SET UP TO READ FROM INPUT DEVICE
704 /USED BY C AND R COMMANDS
705 /CALLED WITH SEQUENCE
708 / CONTINUATION OF HANDLER
709 /EXITS TO CONTINUATION OF HANDLER
712 TAD I SETUP /GET READ AREA FROM ARGS
714 TAD I SETUP /LOCATION FOR IGNORED CHARACTERS
717 ISZ SETUP /SETUP PROPER RETURN POINT
722 SZL CLA /IS BUFFER FULL?
723 ERROR /YES - DON'T READ
724 JMP I SETUP /--RETURN--
725 0 /*** A FREE LOCATION!!!***
728 /SUPERVISOR FOR DELETION OF TEXT LINES
731 JMS I CHKARG /CHECK ARGUMENT VALIDITY
733 DCA THSN /SET CURRENT LINE #
734 TAD ARG1 /SAVE # DELETED
736 TAD ARG0 /GET POINTER TO LINE
737 JMS I FIN1 /TO BE DELETED
741 DCA MARK /CORE ADDRESS OF OBJECT LINE
743 DCA I THIS /CHAIN NEW POINTERS TO DELETE LINE
746 JMS I GRBAGE /PHYSICALLY DELETE THE LINE
747 ISZ ARG1 /ALL SPECIFIED LINES DELETED?
748 JMP DELP1 /NO - CONTINUE
749 TAD LSTN /IF 1,/D..MAKE CURRENT=0
752 TAD LISTER /BUMP TOTAL DOWN
755 JMP I DELP /YES--RETURN--
759 EXLAS, CLA CLL CMA RAL /PRINT LAST LINE - AC=7776=-2
760 /HANDLER FOR > OR LINE FEED
761 EXNEX, TAD THSN /PRINT NEXT LINE
763 SNA /IS IT AN EXISTING LINE?
765 DCA ARG0 /YES SAVE EFFECTIVE ARGUMENTS
768 /HANDLER FOR L COMMAND
769 LIST, TAD LOW /SET KEYBOARD AS OUTPUT
771 ISZ TABIND /SET TAB INDICATOR
772 JMS LISTER /OUTPUT LINE(S)
773 JMP I TE1 /*RETURN TO COMMAND MODE*
775 /LISTING OUTPUT ROUTINE
776 /OUTPUTS LINES INDICATED BY ARG0,ARG1
780 SZA CLA /ANY ARGUMENTS?
781 JMP L0 /YES - SET THEM UP
782 TAD LSTCHK /ALLOW 0L?
785 TAD LSTN /NO - SET TO LIST BUFFER
788 ISZ ARG0 /SET TO LINE 1
792 SPA CLA /ARGUMENTS IN RIGHT RANGE?
793 L1, ERROR /NO -( OR JMP I TE1)
795 JMS I FIN1 /GET POINTERS
796 DCA THIS /SAVE POINTER
799 TAD I THIS /GET START
801 TAD I AXOUT /SAVE POINTER FOR SEARCH
803 TAD AXOUT /SAVE OBJECT LINE FOR GARBAGE COLLECT
808 TAD ARG0 /SET POINTER
810 ISZ ARG0 /SET FOR NEXT LINE
811 /(HANDLER FOR FORM FEED DURING CHARACTER SEARCH)
812 L2, JMS I UTR1 /UNPACK A CHARACTER
813 JMS I OUT1 /PRINT A CHARACTER
814 JMS I CPTSTI /WAS IT ^O OR ^C FROM KEYBOARD?
815 JMP L3 /NO - CONTINUE
817 JMS I UPAROI /GENERATE ^O
818 JMP I TE1 /*RETURN TO COMMAND MODE*
819 L3, TAD CHAR /OR (JMP SLOOK)
821 SZA CLA /WAS IT END OF LINE?
822 JMP L2 /NO - KEEP UNPACKING
823 ISZ ARG1 /YES - DONE YET?
824 JMP L0 /NO - GET NEXT LINE
825 JMP I LISTER /YES --RETURN--
827 CPTSTI, CTRLP /TEST FOR ^O AND ^C
830 /------------------------------------------------------------
834 /HANDLER FOR CARRIAGE RETURN
835 SRETN, JMS I ENDLNI /TERMINATE THIS LINE
836 TAD MARK /AND NOW GARBAGE COLLECT
839 JMP I LIS1 /NO - GET NEXT LINE
840 JMP I TE1 /YES*RETURN TO COMMAND MODE*
842 SLOOK, JMS I SORTJ /SEARCH DONE?
843 LIST3-1 /(CARRIAGE RETURN OR SEARCH CHARACTER)
844 LISTGO-LIST3 /YES - GO TO ITS HANDLER
845 JMS I PACK1 /NO-PACK SEARCHED CHARACTERS
846 JMP I L2I /CONTINUE SEARCH
848 IFNZRO SLOOK&1000 <PGERR,XXX>
850 /HANDLER FOR ^G DURING CHARACTER SEARCH
851 /CHANGE SEARCH CHARACTER
852 SCONT, JMS I KEYBD /FETCH NEW SEARCH CHARACTER
853 DCA LIST3+1 /STORE IT IN LIST
854 JMP I L2I /CONTINUE SEARCH
856 /HANDLER FOR LINE FEED DURING SEARCH
861 ISZ THSN /BUMP CURRENT LINE COUNT
862 ISZ LSTN /ADD A LINE.
863 /HANDLER FOR _ DURING SEARCH
864 SBAR, TAD CCR /CTRL-U
865 JMS I OUT1 /OUTPUT CARRIAGE RETURN
866 TAD BUFR /RESTART PACK BUFFER
869 /-------------------------------------------------------------------
870 SFOUND, JMS I CHI1 /GET A CHARACTER
871 JMS I SORTJ /SPECIAL SEARCH COMMAND?
873 SRNLST-LIST6 /YES - GO TO HANDLER
874 /HANDLER FOR SEARCH CHARACTER FOUND
875 SGOT, JMS I PACK1 /NO-PACK INSERTS
876 JMP SFOUND /CONTINUE INPUT
880 /TELETYPE CHARACTER FETCH ROUTINE
882 /EXIT WITH CHARACTER IN CHAR AND AC
884 /BLANK TAPE & LEADER TRAILER IGNORED
887 DCA CHAR /CLEAR CHARACTER
889 AND P177 /MASK PARITY
890 SNA /IGNORE BLANK AND L/T
892 TAD C200 /RESTORE CHARACTER
893 JMS I OUT1 /ECHO INPUT
895 JMP I CHIN /--RETURN--
898 /SEARCH TEXT BUFFER FOR LINE
899 /WHOSE NUMBER IS ONE LESS THAN
900 /THE CONTENTS OF THE AC
901 /EXIT WITH ADDRESS OF LINK CELL IN AC
903 FIND, 0 /LOCATE LINE BUFFER
905 SMA /IS LINE NUMBER TOO SMALL?
907 DCA TEMP /NO - STORE NEGATIVE OF LINE #
911 SPA CLA /IS LINE NUMBER TOO LARGE?
916 TAD I SAVE /CHAIN THROUGH LIST
921 JMP FIND2 /NO - KEEP CHAINING
922 TAD SAVE /YES - GET LINE NUMBER
923 JMP I FIND /--RETURN--
926 CON, 6030 /CONVERSION CONSTANTS
935 /PRINTS REQUESTED LINE NUMBER
936 /WHICH IS FOUND IN ARG2 ON ENTRY
939 DCA VAL /SET NUMBER TO BE PRINTED
941 DCA CNT /SET CHARACTER COUNT
946 TAD VAL /IF VAL IS TOO LARGE, IT LOOKS
947 SMA CLA /LIKE A NEG NO. THE LINK
948 TAD K50 /DETERMINES THE END POINT IN THAT CASE
949 TAD K7430 /7430=SZL; 7500=SMA
956 NOP /TAD CON +() SOME DISPLACEMENT
957 SMA /OR, IF VAL TOO BIG,SZL
958 JMP XYZ-2 /KEEP ADDING THE SAME CONSTANT
960 TAD BOX /BOX HAS THE NUMBER COUNT
961 TAD C260 /MAKE ASCII DIGIT
962 JMS I OUTL1 /OUTPUT THE DIGIT
963 ISZ XYZ+2 /ADD IN NEXT CONVERSION CONSTANT LATER
964 ISZ CNT /DONE ALL FOUR?
965 JMP FLOOZ /NO - KEEP CONVERTING
966 JMP I TE1 /YES*RETURN TO COMMAND MODE*
973 /CHARACTER OUTPUT ROUTINE
977 /ESC PATCH 25-MAY-77 DS
979 / SNA CLA /ECHO SUPPRESSED?
982 JMP I OUT /YES--RETURN--
983 JMS I SORTJ /NO - IS IT A FORMAT CHARACTER?
984 LIST4-1 /YES - EXIT TO ITS HANDLER
986 ISZ TCNT /NO - COUNT ONE LETTER
988 OUTX, JMS I OUTDEV /OUTPUT THE CHARACTER
989 JMP I OUT /--RETURN--
992 /CARRIAGE RETURN HANDLER
995 JMS I OUTDEV /OUTPUT CARRIAGE RETURN
996 DCA TCNT /CLEAR TAB COUNTER
997 TAD CLF /OUTPUT LINE FEED
1001 /TAB HANDLER - TAB/RUBOUT
1004 JMS I OUTDEV /OUTPUT TAB
1006 JMS I POTYPE /TEST TYPE OF OUTPUT
1007 SPA CLA /IS IT DIRECTORY DEVICE?
1008 JMP I OUT /YES--RETURN--
1009 TAD CRO /NO - OUTPUT RUBOUT
1013 /TAB HANDLER - SPACES
1016 SNA CLA /OUTPUT TAB/RUBOUT INSTEAD?
1017 JMP OUTRT /YES - GO TO OTHER TAB HANDLER
1019 TAD MTABS /REDUCE SPACE COUNT TO 8 OR LESS
1023 TAD C240 /OUTPUT SPACES
1026 JMP .-3 /NO - CONTINUE
1027 JMP I OUT /YES--RETURN--
1030 /-----------------------------------------------------------------------
1034 /HANDLER FOR S COMMAND
1036 XCRET, JMS I KEYBD /GET THE SEARCH CHARACTER
1037 DCA LIST3+1 /SAVE IT IN LIST
1039 DCA I L3I /MAKE LISTER JUMP TO SLOOK
1041 DCA AXIN /BUILD NEW TEXT IMAGE HERE
1043 TAD CHI1 /READ POINT IS CHIN
1048 /LIST OF SPECIAL CHARACTERS FOR G COMMAND
1054 GTAG2 /CARRIAGE RETURN
1056 /-----------------------------------------------------------------------
1059 /LOW SPEED OUTPUT ROUTINE
1060 /ENTER WITH CHARACTER IN AC
1067 JMP I OUTL /--RETURN--
1069 /LOW SPEED INPUT ROUTINE
1071 /EXIT WITH CHARACTER IN AC
1080 JMP I I33 /NO--RETURN--
1082 /SET UP APPEND, CHANGE, INSERT TO WORK
1083 /EACH READS KEYBOARD, NOT DEVICE
1088 /HANDLER FOR C COMMAND
1091 /HANDLER FOR I COMMAND
1094 /HANDLER FOR A COMMAND
1096 DCA DEST /RETURN POINT
1099 CHIN /KEYBOARD INPUT
1103 /SPECIAL OUTPUT LIST
1105 ESCOUT /233 - ESC - V12
1107 OUTCRL /215 - CARRIAGE RETURN
1108 OUTX+1 /212 - LINE FEED
1109 OUTX+1 /214 - FORM FEED
1110 OUTX+1 /377 - RUBOUT
1111 CTRLN /216 - CNTRL N
1113 \f/CHECK TTY FOR ^C OR ^O INPUT
1114 /EXIT TO MONITOR ON ^C
1119 JMP I CTRLP /--RETURN--
1121 TAD M14 /NO - IS IT ^O?
1123 JMP I CTRLP /NO--RETURN--
1126 JMP I CTRLP /--RETURN--
1139 /HANDLER FOR P COMMAND
1142 TAD BUFWTI /SETUP TO WRITE INTO OUTPUT BUFFER
1144 PUNC, JMS I LIS /WRITE THE EDITOR BUFFER
1145 TAD C214 /OUTPUT FORM FEED
1147 /HANDLER FOR T COMMAND
1151 SNA CLA /IS THERE AN OUTPUT DEVICE?
1152 JMP I TE1 /NO*RETURN TO COMMAND MODE*
1153 TAD BUFWTI /YES - SET UP TO WRITE INTO
1154 DCA OUTDEV /OUTPUT BUFFER
1156 DCA CTRLP /SET TRAILER COUNTER
1159 SMA CLA /DIRECTORY DEVICE FOR OUTPUT?
1160 JMS I OUTDEV /NO - OUTPUT LEADER TRAILER
1161 ISZ CTRLP /DONE YET?
1162 JMP .-5 /NO - CONTINUE
1163 TSF /YES - RESET FLAG
1165 JMP I TE1 /*RETURN TO COMMAND MODE*
1166 \f/HANDLER FOR R COMMAND
1171 DCA ECHOSW /INHIBIT ECHO
1172 JMS I PSETUP /SETUP TO READ FROM
1174 APPL, APP1 /APPEND TEXT TO BUFFER
1176 /HANDLER FOR Y COMMAND
1178 YANK, TAD COM1 /YANK KILLS 'P' PART OF N
1181 /HANDLER FOR N COMMAND
1183 COMBO, TAD JMPCH /YANK WIPES COM1-1
1184 COMBOA, DCA I CCON+1
1189 DCA COUNTP /SET NUMBER OF PAGES TO YANK
1190 TAD CCON /(JMP I AXCOMB)
1191 DCA I TE1 /SET TE1 TO ALLOW LOOPING
1192 COMB, TAD CCON+1 /THROUGH PUNCH, KILL, READ
1194 DCA ARG0 /CLEAR ARGUMENTS
1196 DCA LSTCHK /DON'T INHIBIT LISTER!
1197 DCA TABIND /CLEAR IN CASE OF MULTIPLE N
1198 JMP PUNC /OUTPUT BUFFER
1199 COM1, JMP I KILL1 /KILL BUFFER
1200 JMP TELEN /READ NEW BUFFER FULL
1201 ISZ COUNTP /DONE YET?
1202 JMP COMB /NO - CONTINUE
1203 CLA CLL CML RAL /YES-AC=1 - RESET CURRENT LINE NUMBER
1204 DCA THSN /.=1 ON RETURN
1205 COM5, TAD CZ /RESTORE TE1
1207 JMP I TE1 /*RETURN TO COMMAND MODE*
1208 /IT IS VITAL TO KEEP DUMB1 AND COM5 ON THE SAME PAGE
1212 /-----------------------------------------------------------------------
1229 242 /DOUBLE QUOTE (")
1230 244 /DOLLAR SIGN ($)
1233 LIST1A, 215 /CARRIAGE RETURN
1238 /HANDLER FOR G COMMAND
1243 TAD THSN /NO - BEGIN WITH NEXT LINE (.+1)
1244 DCA ARG0 /YES - SET ARGUMENTS
1249 JMS I FIN1 /GET NEXT LINE
1253 JMS I UTR1 /UNPACK FIRST CHARACTER
1254 JMS I SORTJ /DOES IT BEGIN A TAG?
1255 LIST7-1 /NO - TAGLIST EXITS
1256 TAGLIST-LIST7 /TO GTAG2
1257 JMP I LIS1 /YES - PRINT LINE
1263 /HANDLER FOR M COMMAND
1264 /ENTER WITH FIRST LINE TO MOVE IN MOV1
1265 /LAST LINE TO MOVE IN MOV2
1267 /DESTINATION LINE IN ARG2
1271 CIA /ARG2 MAY NOT BE BETWEEN
1272 TAD ARG2 /MOV1 AND MOV2
1273 SPA CLA /IS MOV1 .GT. ARG2?
1274 /-----------------------------------------------------------------------
1279 SPA SNA CLA /IS MOV2 .LT. ARG2?
1280 ERROR /NO-FAULTY LOGIC IN COMMAND
1283 DCA MP1 /STORE FIRST LINE POINTER
1287 DCA MP2 /STORE LAST LINE POINTER
1290 DCA MP3 /STORE DESTINATION LINE POINTER
1292 TAD I MP1 /SWAP POINTERS-
1293 DCA TEMP /RESET THE LINK COORDS
1301 JMP I TE1 /*RETURN TO COMMAND MODE*
1304 SBAR /BACK ARROW (_)
1311 SRETN /CARRIAGE RETURN
1312 SGOT /SEARCH CHARACTER FOUND
1314 /HANDLER FOR RUBOUT IN TEXT OR SEARCH
1319 SZA CLA /IS THERE ANYTHING ON THIS LINE?
1320 TAD ECHOSW /OR ECHO INHIBITED?
1322 JMP I IGNORE /YES-IGNORE RUBOUT
1323 /SCOPE PATCH 25-MAY-77 DS
1325 / JMS I OUT1 /OUTPUT BACKSLASH
1328 /DELETE CHAR FROM BUFFER
1329 TAD AXIN /GET LAST WORD OF INPUT
1332 DCA I BUFR /PREVENTS INFINITE RUBOUTS
1334 ISZ XCTIN /WHICH HALF OF WORD?
1338 SZA CLA /TEST EXTENSION
1349 JMP I IGNORE /CHIN+1
1357 /HANDLER FOR SPACE IN TEXT MODE
1359 CLA /OR SZA CLA IF B OPTION
1360 JMP I SPCNO /PACK IT - (MOR+4)
1363 JMS I BUFRDI /GET LAST CHARACTER
1365 SNA CLA /WAS IT SPACE?
1366 JMP SP2 /YES-IGNORE EXTRA SPACES
1367 /-----------------------------------------------------------------------
1369 DCA SAVE /SAVE NON-SPACE
1370 ISZ CNT /WAS THERE MORE THAN 1 SPACE?
1371 TAD M27 /YES- STORE TAB
1372 TAD C240 /NO-STORE SPACES
1376 JMP I SPCGO /SORT - (MOR+1)
1378 /HANDLER FOR $ (PART OF M COMMAND)
1380 MOVE, TAD ARG0 /ARG2 .GE. ARG0
1383 SPA CLA /ARE LINES TO BE MOVED LEGITIMATE
1386 DCA MOV1 /SET POINTER TO FIRST LINE
1388 DCA MOV2 /SET POINTER TO LAST LINE
1389 JMP I ONUM /CONTINUE COMMAND INPUT
1391 OPS1, EXNEX /LINE FEED
1402 AMODE /ALTMODE ASR-33
1403 AMODE /ALTMODE ASR-35
1407 ELIM /COMMAND RUBOUT
1409 GTOP-2 /CARRIAGE RETURN
1411 MONIT /^C (MONITOR RESTART)
1412 OPS1A, RETRN /RETURN
1413 /-----------------------------------------------------------------------
1417 /HANDLER FOR E COMMAND
1419 ENDFIL, TAD EKILLL /IS E COMMAND ALLOWED?
1421 ERROR /NO-NO INPUT SPECIFIED
1422 CLA CMA /YES-RESET ARGUMENTS
1424 TAD JMPTE1 /SKIP LISTER IF EMPTY BUFFER
1426 TAD FLCLSI /CLOSE FILE SETUP
1427 DCA ELIM /CLOSES FILE ON READ FAILURE
1434 /HANDLER FOR ^U IN TEXT MODE
1435 CTRLU, JMS CTRLU1 /GENERATE A ^U
1436 JMP I AONEI /AND CONTINUE
1441 JMS I UPAROI /PRINT ^U
1442 TAD CCR /AND A CR/LF
1444 JMP I CTRLU1 /--RETURN--
1447 /CHECK VALIDITY OF ARGUMENTS
1455 SPA CLA /DO LINES EXIST?
1457 JMP I CHKARX /YES--RETURN--
1464 DCA TEMP /SAVE LINE NUMBER
1466 ISZ LSTCHK /GOT EITHE . OR / IN ARGS
1467 JMP I .+1 /FETCH REST OF ARGUMENT
1470 /END OF A NEW TEXT LINE
1471 /PACK CARRIAGE RETURN INTO BUFFER
1472 /SET LINK CELLS AROUND NEW LINE
1474 / CHAR CONTAINS CARRIAGE RETURN
1475 / THIS CONTAINS ADDRESS OF LINK
1476 / CELL OF PRECEDING TEXT LINE
1477 / XSAV CONTAINS ADDRESS OF LINK
1478 / CELL OF FOLLOWING TEXT LINE
1479 / BUFR CONTAINS ADDRESS OF LINK
1480 / CELL OF NEW TEXT LINE
1483 JMS I PACK1 /PACK CARRIAGE RETURN
1488 TAD BUFR /RESET LINK CELL
1489 DCA I THIS /OF PREVIOUS LINE
1491 DCA I BUFR /RESET LINK CELL OF NEW LINE
1493 DCA THIS /RESET POINTER TO LINK CELL
1496 DCA BUFR /RESET FOR NEXT LINE
1497 DCA XCTIN /CR CHARACTER SWITCH
1499 JMP I ENDLN /--RETURN--
1503 /AND OTHER EXITS TO MONITOR
1505 MONIT, JMS FXSTWD /SET JOB STATUS TO SAVE CORE
1506 TSF /MAKE SURE TTY FLAG IS SET
1508 JMP I K7600 /****EXIT TO MONITOR****
1510 /CLEAR BIT 11 OF JOB STATUS WORD
1514 JMS I JSWSET /IF NONZERO TEXT,SAVE BUFFER
1515 JMP I FXSTWD /--RETURN--
1519 /RESET POINTERS AND SAVE BUFFERS
1522 CIFTEN, CIF 10 /CLEAR BIT 11 OF JSW
1523 JMS I P7700 /CALL USER SERVICE ROUTINES
1524 10 /*LOCK USR IN CORE*
1525 TAD CIFTEN /RESET POINTERS
1541 ISZ FXSTWD /WASTE TIME FOR TTY FLAG
1544 JMP I .+1 /GO CALL COMMAND DECODER
1549 /-----------------------------------------------------------------------
1550 /-----------------------------------------------------------------------
1552 /READ,WRITE,AND RELATED ROUTINES
1554 OURECS=4 /SIZE OF OUTPUT BUFFER
1558 /HANDLER FOR Q COMMAND
1560 Q, JMS I FXSWDI /CLEAR BIT 11 OF JSW
1564 SNA CLA /WAS AN OUTPUT DEVICE SPECIFIED?
1567 SNA CLA /IS BUFFER EMPTY?
1568 JMP FLCLS1 /YES-CLOSE FILE
1570 DCA TE1 /SET UP RETURN FROM P COMMAND
1572 PUNCH /WRITE CURRENT BUFFER
1574 /CLOSE FILE ON E OR Q COMMAND
1576 FLCLS1, JMS I PTCH1 /GO TO PATCH TO HANDLE FILE FULL
1577 CLA CMA /TELL SYSTEM I/O MONITOR IS IN CORE
1581 JMP I K7600 /****EXIT TO MONITOR***
1586 /INPUT ROUTINE FROM DEVICE
1587 /VIA INPUT DEVICE HANDLER
1590 JMS I ICHARI /FETCH A CHARACTER
1591 JMP ERRD /ERROR IN READING FROM BUFFER
1592 DCA CHAR /INTERFACE LOCATION
1596 JMP BUFRD+1 /YES-GET NEXT CHARACTER
1597 TAD C200 /NO RESTORE CHARACTER
1598 JMP I BUFRD /--RETURN--
1600 ERRD, SPA CLA /FATAL OR EOF?
1601 JMP I SERR0I /FATAL-OUTPUT ERROR MESSAGE
1602 TAD ERSW /DISABLE FURTHER READS
1604 TAD I COMM5 /IF THIS IS NEGATIVE, DO ONE
1605 SMA CLA /MORE SEARCH (POSSIBLY) IN THE CASE
1606 JMP BUFRD+1 /THAT NO FINAL FORM FEED EXISTS
1607 CLA IAC /SET CURRENT LINE TO 1 AND SEARCH
1612 ICHARI, ICHAR /CHARACTER ROUTINES
1616 /OUTPUT ROUTINE TO DEVICE
1617 /VIA OUTPUT DEVICE HANDLER
1621 JMS I OCHARI /OUTPUT A CHARACTER
1622 JMP ERWT /OUTPUT FAILED
1623 BUFRTN, TAD BUFWTI /RESET OUTPUT DEVICE HANDLER POINTER
1625 JMP I BUFWT /--RETURN--
1627 ERWT, SPA CLA /FATAL, OR NO MORE ROOM?
1628 JMP I SERR1I /FATAL-OUTPUT ERROR MESSAGE
1629 JMS I FXSWDI /FIX JOB STATUS WORD-NO MORE ROOM
1630 TAD I TE1 /STORE POINTERS
1637 ISZ I PANICI /SET PANIC DUMP
1638 TAD MORECS /PREPARE TO CLOSE PRESENT OUT FILE
1639 TAD I OCNTI /THIS GIVES OPTIMUM CLOSE LENGTH
1643 TAD I OREC /WRITE A ^Z
1644 DCA CLSREC /DIRECTLY TO THE DEVICE
1645 TAD I OHNDL /HANDLER ENTRY POINT
1648 JMS I TEMPO /CALL OUTPUT DEVICE HANDLER
1649 4110 /THE BUFFER IS A PAGE OF THE EDITOR
1650 7000 /WITH A 232 IN THE FIRST LOCATION
1651 CLSREC, 0 /RECORD NUMBER HERE
1652 JMP I SERR1I /**WRITE FAILURE** 1*
1654 JMS I OCLSI /CLOSE THE FILE IN PANIC MODE
1655 JMP I SERR2I /**FILE CLOSE FAILED**2*
1657 JMS I C200 /CALL USER SERVICE ROUTINES
1658 11 /*DISMISS USR FROM CORE*
1661 TAD POINT /PRINT OUT"FULL" AND RETURN
1663 TAD I AXIN /FETCH CHARACTER
1665 JMP I RST3I /YES-RESET & CALL COMMAND DECODER
1666 JMS I OUTL1 /NO - OUTPUT CHARACTER
1667 JMP .-4 /GET NEXT CHARACTER
1673 MORECS, -OURECS+1 /THIS ALLOWS US TO 'MANUALLY' WRITE
1674 /A FORM FEED AND A ^Z.
1680 /RESET POINTERS STORED PREVIOUSLY
1692 OCLSI, OCLOSE /V3 FILE CLOSE ROUTINE
1694 /-----------------------------------------------------------------------
1696 /ERROR MESSAGE- FULL -
1701 215 /CARRIAGE RETURN
1705 SRCBUF, ZBLOCK 24 /SEARCH BUFFER
1708 /SPECIAL CHARACTER LIST FOR STRING SEARCH
1715 /-----------------------------------------------------------------------
1716 NEXBUF, DUMB1&177+5600 /JMP I DUMB1
1718 /DISPATCH LIST FOR STRING SEARCH
1724 RLEAS /^U IN STRING SEARCH
1727 /GENERATE ^ FOLLOWED BY THE CHARACTER
1728 /WHICH IS IN AC ON ENTRY
1731 DCA TEMPO /SAVE CHARACTER
1735 JMS I OUTL1 /PRINT ^
1737 JMS I OUTL1 /PRINT CHARACTER
1738 JMP I UPAROW /--RETURN--
1742 /HANDLER FOR ^U DURING STRING SEARCH
1743 RLEAS, JMS I (CTRLU1
1744 JMP I (START /^U GETS US BACK TO #
1746 /HANDLER FOR ALTMODE
1748 AMODE, DCA STRIND /NEED SETUP
1749 JMS I STRFIN /SEARCH FOR STRING
1751 TAD THSN /RESULT IS LINE NUMBER
1752 JMP I .+1 /LINK TO COMMAND STRUCTURE
1756 /HANDLER FOR J COMMAND
1758 JERK, DCA STRIND /SETUP FOR SEARCH
1759 JERK1, JMS I STRFIN /SEARCH FOR STRING
1760 JMP GMOR /GET NEXT BUFFER
1762 JMP .-1 /JUST TO BE SURE
1763 TAD CZ /RESTORE MONITOR EXIT
1765 JMP I TE1 /*POSSIBLE RETURN TO COMMAND MODE*
1767 /GET NEXT BUFFER FOR S SEARCH
1770 SNA CLA /IS BUFFER EMPTY?
1772 ISZ STRIND /YES-BYPASS SETUP
1774 DCA I COMM5 /SET UP READ OF ONE BUFFER
1778 SZA CLA /IS THERE AN OUTPUT DEVICE?
1782 COMBO /THERE IS OUTPUT
1785 /HANDLER FOR F COMMAND
1787 BARROW, ISZ STRIND /CONTINUES LOOKING FOR EXISTING STRING
1788 ISZ THSN /INCREMENT FOR NEXT LINE
1794 DBLQUO, ISZ THSN /USES STRING NOW IN BUFFER
1795 ISZ STRIND /NO SETUP REQUIRED
1798 /HANDLER FOR B COMMAND
1803 SZL CLA /IS ANY CORE LEFT?
1805 TAD BUFR /YES-SET UP NUMBER OF LOCATIONS
1814 /HANDLER FOR K COMMAND
1816 KILL, TAD ARG0 /IN CASE HE TYPED N,MK
1817 SZA CLA /INSTEAD OF N,ML. SAVE HIM!!
1819 TAD END /RESET BUFFER POINTERS
1820 DCA BUFR /TO REFLECT EMPTY BUFFER
1823 CDF 10 /ZERO FIELD 1 POINTER
1826 JMP I TE1 /*RETURN TO COMMAND MODE*
1828 /ROUTINE TO REASSIGN INPUT HANDLER
1829 /AFTER A PANIC DUMP AND RESTART
1833 SZA CLA /IS THERE A HANDLER TO RESTORE?
1834 JMP I PIRETN /NO - BACK TO FIELD 1
1836 DCA PIHND /GET HANDLER PAGE
1838 CDF 0 /I/O MONITOR IS IN CORE AT THIS POINT
1839 JMS I C200 /CALL USER SERVICE ROUTINES
1842 JMP I SERR4I /**DEVICE HANDLER ERROR**+**
1845 DCA I PIHNDL /PUT NEW HANDLER ADDRESS BACK
1846 JMP I PIRETN /AND RETURN
1848 PIRETN, PANOPN /GO OPEN OUTPUT FILES
1850 IHPAGE, I1 /I1 CONTAINS "INDEVH+1"
1854 /HANDLER FOR # COMMAND
1857 JMS I OUTL1 /V3 PRINT V
1858 TAD (VERSION&70%10+260 /V3
1859 JMS I OUTL1 /V3 PRINT VERSION #
1861 JMS I OUTL1 /V3C PRINT 2ND NUMBER OF VERSION #
1863 JMS I OUTL1 /V3 PRINT PATCH LEVEL
1864 JMP I TE1 /V3 RESTART
1866 /-----------------------------------------------------------------------
1867 /-----------------------------------------------------------------------
1868 /STRING SEARCH ROUTINE
1869 /CALLED BY $(ALTMODE) AND J COMMAND HANDLERS
1873 TAD STRIND /IS SETUP NECESSARY
1877 DCA BUFCNT /SET COUNTER
1879 DCA AXIN /BEGIN SEARCH BUFFER
1881 JMS I OUTL1 /OUTPUT $
1883 RLOOP, JMS I CHI1 /FETCH CHARACTER FROM TTY
1884 JMS I SORTJ /IS IT SPECIAL FOR SEARCH STRING?
1885 SLST-1 /YES-HANDLE IT
1887 ISZ BUFCNT /NO-SEARCH BUFFER FULL?
1888 JMP STORE /NO-STORE THIS CHARACTER
1890 DCA BUFCNT /YES-DON'T ALLOW ANY MORE
1891 JMP RLOOP-1 /BUT KEEP ECHOING HIS
1892 STORE, TAD CHAR /STORE CHARACTER IN SEARCH BUFFER
1897 QUO2, TAD THSN /START AT .+1
1899 QUO1, IAC /START AT .=1
1902 CIA /MAKE UP COUNT OF NO. CHARS NOW IN
1903 TAD SBUF /SEARCH BUFFER
1905 DCA I AXIN /END STRING WITH A 0
1907 SNA CLA /IS BUFFER EMPTY?
1908 JMP ER1 /YES-PREPARE TO EXIT
1909 JMS NUCHAR /NO GET FIRST STRING CHARACTER
1911 JMS I FIN1 /GET APPROPRIATE POINTER
1912 DCA THIS /THE TRICK IS TO GET THE NEXT
1914 CDF 10 /POINTER SO THAT WE NEVER HAVE TO GO
1915 TAD I THIS /BACK TO THE FIND ROUTINE
1925 JMP ER1 /YES-FINISHED WITH BUFFER
1927 DCA AXOUT /SET TO UNPACK CHARACTERS
1930 UPK1, JMS I UTR1 /UNPACK A CHARACTER
1934 SZA CLA /END OF LINE?
1936 ISZ THSN /YES-INCREMENT LINE COUNTER
1937 JMS NUCHAR /FORGET PREVIOUS MATCHES ON NEW LINE
1940 TAD NEXTPT /AND GET NEXT LINE
1943 NOCR, TAD TMP2 /CHARACTER OTHER THAN CARRIAGE RETURN
1944 TAD TMP1 /GET A CHARACTER FROM SEARCH BUFFER
1945 SZA CLA /DO THEY MATCH
1947 ISZ CHFND /YES-BUMP A RANDOM POINTER
1949 DCA FMATCH /SIGNIFY FIRST MATCH
1950 JMS NUCHA /GET NEXT SEARCH CHARACTERR
1951 JMP UPK1 /AND ANOTHER BUFFER CHARACTER
1953 UPK, ISZ FMATCH /WAS THIS FIRST MATCH?
1954 JMP NOTSO /NO-NO PROBLEM
1955 TAD XCT /YES-DON'T LET THE POINTERS BE
1963 NOTSO, JMS NUCHAR /GET FIRST CHARACTER OF SEARCH STRING
1967 STFIN, TAD CHFND /END OF STRING-DO COUNTS MATCH?
1970 JMP GOOD /YES-SEARCH SUCCESSFUL
1971 ER1, TAD LSTN /IF BUFFER EMPTY, SET .=0
1975 SKP /CAUSE ERROR RETURN (?)
1976 GOOD, ISZ SFIND1 /INCREMENT RETURN
1977 JMP I SFIND1 /--RETURN--
1979 /GET NEXT SEARCH CHARACTER
1981 TAD .-1 /SET TO RETURN FROM NUCHAR
1985 /GET FIRST CHARACTER OF SEARCH STRING
1992 CIA /NO - NEGATE SEARCH CHARACTER
1993 DCA TMP1 /AND STORE IT
1994 JMP I NUCHAR /--RETURN--
2004 CHFND, 1 /MUST BE NONZERO INITIALLY
2008 /HANDLER FOR RUBOUT IN SEARCH STRING
2011 JMS I OUT1 /OUTPUT CARRIAGE RETURN
2016 /-----------------------------------------------------------------------
2017 /-----------------------------------------------------------------------
2023 /GARBAGE COLLECTION ROUTINE
2024 /ENTER WITH NUMBER OF LINE TO BE DELETED
2028 DCA LINPTR /SAVE OBJECT LINE ADDRESS
2030 DCA AXCOMB /SCAN LINE LOOKING FOR 7715 OR 1500 (CR)
2032 DCA CNT /TOTAL # LOCS IN THIS LINE
2035 TAD I AXCOMB /GET A WORD
2038 JMP FINONE /YES-END OF LINE
2040 SZA CLA /NO-IS IT 1500?
2041 JMP COLECT /NO-TRY NEXT WORD
2042 FINONE, TAD CNT /YES MINUS CNT GIVES AMOUNT
2043 CIA /TO REDUCE CERTAIN POINTERS
2046 IAC /GO THROUGH LIST OF POINTERS
2047 JMS I FIN1 /& OFFSET POINTERS WHICH WILL BE MOVED
2048 CDF 10 /MOVED ALONG WITH TEXT
2049 GBG2, DCA THISX /SAVE POINTER
2050 TAD I THISX /GET ADDRESS OF THIS LINE
2051 SNA /DONE WITH STRING?
2053 JMS CGEPTR /DECREASE POINTER IF NECESSARY
2054 DCA I THISX /STORE NEW POINTER
2056 JMP GBG2 /DO NEXT LINE
2058 GBGEND, CDF 0 /ALL POINTERS ARE REDUCED. NOW,
2060 TAD BUFR /PHYSICALLY MOVE CORE TO
2061 CIA /CORRESPOND WITH POINTERS
2062 TAD AXCOMB /AXCOMB POINTS TO FIRST LOC. TO GO
2063 SMA SNL /POINTERS O.K.?
2065 DCA XCT /YES-SET UP OTHER POINTERS
2070 TAD I AXCOMB /MOVE TEXT
2072 ISZ XCT /ALL TEXT MOVED?
2073 JMP .-3 /NO-CONTINUE MOVING
2076 DCA BUFR /RESET TOP OF BUFFER
2077 TAD BUFR /REDUCE AXIN FOR CHARACTER SEARCH
2079 TAD THIS /NOW DECREASE THIS IF IT IS NECESSARY
2082 JMP I GARBAG /--RETURN--
2087 CGEPTR, 0 /THIS ROUTINE DETERMINES IF THE
2088 DCA THISX2 /OF THE AC MUST BE DECREASED BY RELCNT.
2089 CLL /IF THISX2 IS GREATER THAN LINPTR
2090 TAD THISX2 /DECREASE THISX2 BY RELCNT.
2092 TAD LINPTR /THIS EFFECTIVELY DECREASE ALL POINTERS
2093 SNL CLA /WHICH HAVE TO BE RELOCATED
2098 /HANDLER FOR V COMMAND
2100 VIEW, TAD (LPT /SET UP LISTER TO EXIT TO LPT
2103 JMS I LIS /LIST BUFFER
2104 TAD C214 /AND OUTPUT A FORM FEED
2106 JMP I TE1 /*RETURN TO COMMAND MODE*
2109 /LINE PRINTER OUTPUT ROUTINE
2110 /ENTER WITH CHARACTER IN AC
2118 JMP I LPT /--RETURN--
2127 /THE FOLLOWING GIVES ERROR MESSAGES FOR I/O RELATED ERRORS
2128 /EACH IS A FATAL ERROR AND WILL ALWAYS EXIT THROUGH
2129 /7600, SAVING THE TEXT BUFFER.
2130 /N IS THE ERROR IDENTIFICATION CODE
2131 /N=0=> FAILED IN READING DEVICE
2132 /N=1=> FATAL WRITE ERROR
2133 /N=2=> FILE CLOSE ERROR
2134 /N=3=> FILE OPEN ERROR
2135 /N=4=> DEVICE HANDLER ERROR
2146 JMS I OUTL1 /OUTPUT CARRIAGE RETURN
2148 JMS I OUTL1 /OUTPUT LINE FEED
2150 JMS I OUTL1 /OUTPUT?
2153 JMS I OUTL1 /SEND ERROR CODE
2155 JMS I UPAROI /SEND ^C
2156 JMP I MONITO /****EXIT TO MONITOR****
2161 DELE, JMS I DELT /DELETE THE LINES
2167 JMS I UPAROI /ECHO ^N
2174 JMS I OCLSE /CLOSE FILE
2176 JMP I PATCH1 /FILE CLOSED OK -RETURN
2178 JMP SERR2 /**FILE CLOSE FAILED**2*
2179 JMP I NOROOM /RAN OUT OF SPACE WHILE CLOSING
2183 \f/***********************************************************************
2185 /THE CODE AT 3000 IS ONCE ONLY CODE. IT TAKES THE FIELD 1
2186 /PART OF THE CODE WHICH IS INITIALLY IN FIELD 0 AND MOVES
2187 /IT UP TO THE PROPER LOCATIONS IN FIELD 1.
2189 /-----------------------------------------------------------------------
2190 /-----------------------------------------------------------------------
2192 INIT, TAD (3177 /COLD LOAD STARTS AT 3200
2194 TAD (6577 /CODE SHOULD BE IN 6600 OF FIELD 1
2196 TAD (7000 /MOVE 1000 LOCATIONS UP
2199 TAD I AXIN /MOVE CODE
2202 ISZ COUNTA /DONE YET?
2204 DCA AXIN /YES-RESET COUNTERS
2206 CDF 0 /PUT A NOP INTO LOC. 203
2209 TAD RST3I /CHANGE START ADDRESS TO SAVE BUFFER
2212 JMP I K6600 /STARTING ADDRESS IS 16600
2213 K6600, 6600 /FIELD 1 STARTING ADDRESS
2217 /ERR5, CDF 0 /SET NOT RESTARTABLE BIT IF CHAIN
2221 / JMP I (SERR5 /AND GIVE ?5^C
2222 \f/MISCELLANEOUS PATCHES (NOT ONCE-ONLY!)
2224 /ESCAPE PATCH 25-MAY-77 DS
2227 ISZ ESCPA /SKIP OVER PATCH ADDR
2228 TAD ECHOSW /IS ECHO SUPPRESSED?
2230 JMP I ESCPA /YES, RETURN
2231 TAD CHAR /NO, TEST FOR ESC
2235 ISZ ESCPA /PRINT UNLESS IT IS ESC
2237 TAD I CHI1 /V12 - TAD CHIN
2239 SZA CLA /COMMAND MODE?
2240 ISZ ESCPA /NO, OUTPUT IT
2241 JMP I ESCPA /YES, DON'T OUTPUT IT NOW
2244 /SCOPE PATCH 25-MAY-77 DS
2247 ISZ RUBPA /SKIP OVER PATCH ADDR
2248 CDF 10 /LOOK AT "SCOPE" BIT IN
2249 TAD I (7726) /RESIDENT MONITOR
2254 TAD SPLAT /NO SCOPE, PRINT BACKSLASH
2255 RP2, JMS I OUT1 /PRINT
2256 JMP I RUBPA /DONE, DELETE THE CHAR
2257 RP1, TAD (210) /SCOPE, PRINT BACK SPACE
2259 TAD (240) /THEN A SPACE
2261 TAD (210) /THEN ANOTHER BACK SPACE
2263 SPLAT, 334 /ACKNOWLEDGE RUBOUT
2265 \f/ROUTINE TO HANDLE ESCAPE OUTPUT
2272 SZA CLA /OUTPUT TO TERMINAL OR LINEPRINTER?
2273 TAD (233-"$ /NO, OUTPUT ESC
2274 TAD ("$ /YES, OUTPUT "$"
2277 /MORE STUFF MAY BE INSERTED HERE
2282 /********************************************************************
2283 /CODE MOVED TO 16600-16762
2291 /SETUP FOR USING GENERAL INPUT, OUTPUT ROUTINES
2292 INBUF=4200 /INPUT BUFFER AT 04200
2293 INCTL=0600 /INPUT CONTROL - 6 PAGES
2294 INRECS=3 /3 RECORDS INTO FIELD 0
2295 INDEVH=3200 /INPUT HANDLER AT 03200
2297 OUBUF=5600 /OUTPUT BUFFER AT 05600
2298 OUCTL=5000 /OUTPUT CONTROL - 8 PAGES
2299 OUDEVH=3600 /OUTPUT HANDLER AT 03600
2301 MPARAM=7643 /OPTION SWITCHES
2304 JMS I L7700 /CALL USER SERVICE ROUTINES
2305 10 /*LOCK USR IN CORE*
2307 ISZ I PTEMP /V3 WERE WE CHAINED TO?
2310 START1, JMS I L200 /CALL USER SERVICE ROUTINES
2311 5 /*COMMAND DECODER*
2314 TAD K7620 /RESET OUTDMP
2316 TAD I P7600A /OUTPUT LIST
2318 SZCL, SZA CLA /IS THERE AN OUTPUT DEVICE?
2320 CDF 0 /NO-DISALLOW E COMMAND
2325 DCA DVHAND /SAVE PARAM. SWITCH
2327 SMA CLA /WAS /B OPTION SPECIFIED?
2330 TAD SZCL /SET UP TO CONVERT SPACES TO TABS
2336 SMA CLA /WAS /D OPTION SPECIFIED?
2338 TAD I OHANDL /YES-HANDLER BROUGHT IN FOR D OPTION
2340 TAD I P7600A /DEVICE NUMBER
2341 JMS I L200 /CALL USER SERVICE ROUTINES
2344 JMP ISERR4 /**DEVICE HANDLER ERROR**4**
2345 TAD I P7600A /GET DEVICE NUMBER
2346 JMS I L200 /CALL USER SERVICE ROUTINES
2350 JLSTN, LSTN /PAGE ZERO. 'AND' SOME ADDRESS
2351 FILOP, TAD PANIC /PANIC CASE?
2353 JMS I IOPENI /SET BUFFER POINTERS OR RESTORE HANDLER
2355 JMP GINDVH /RESTORE INPUT DEVICE HANDLER IN PANIC MODE
2356 PANOPN, JMS I OOPENI /OPEN OUTPUT FILES
2357 SMA CLA /ERROR RETURN
2359 JMP ISERR3 /**FILE OPEN ERROR**3**
2360 TAD PANIC /PANIC CASE?
2363 TAD I P7600A /YES IF NO OUTPUT,DON'T ALLOW HIM
2364 SNA CLA /TO DESTROY HIS TEXT
2366 TAD K5000 /SET TO WRITE BUFFER
2368 JMP ISERR1 /**FATAL WRITE ERROR**1**
2371 DCA PANIC /CLEAR PANIC SWITCH
2372 JMS I L200 /CALL USER SERVICE ROUTINES
2373 11 /*DISMISS USR FROM CORE*
2374 JMS I OUSTPI /RE-INITIALIZE OUTPUT POINTERS
2377 CDF 0 /IF LSTN#0, CLEAR FRST
2378 TAD I JLSTN /BUT IN FIELD 1
2383 SNA CLA /PANIC MODE?
2384 JMP I STRTUP /NO-START THE EDITOR
2386 JMP I .+1 /YES - RESUME OUTPUT
2393 ISERR3, JMS I L200 /CALL USER SERVICE ROUTINES
2394 11 /*DISMISS USR FROM CORE*
2396 JMP I ASERR3 /**FILE OPEN ERROR**3**
2398 ISERR4, JMS I L200 /CALL USER SERVICE ROUTINES
2399 11 /*DISMISS USR FROM CORE*
2401 JMP I ASERR4 /**DEVICE HANDLER ERROR**4**
2403 ISERR1, JMS I L200 /CALL USER SERVICE ROUTINES
2404 11 /*DISMISS USR FROM CORE*
2407 JMP I ASERR1 /**FATAL WRITE ERROR**1**
2424 K5000, 5000 /OUTPUT BUFF CONTROL WORD
2430 /***********************************************************************
2432 /***********************************************************************
2433 /CODE MOVED TO 17000-17173
2439 232 /THIS PAGE IS ^Z BUFFER
2440 /SET UP ROUTINE FOR OUTPUT
2441 /INITIALIZES CHARACTERS POINTERS
2443 TAD I PANICJ /IS IT PANIC DUMP TIME?
2444 SZA CLA /IF YES, DONT RESET POINTERS
2445 JMP I OUSETP /--RETURN--
2446 TAD C1 /GET SIZE OF BUFFER IN DOUBLEWORDS
2450 DCA OUPTR /INITIALIZE WORD POINTER
2452 DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH
2453 JMP I OUSETP /--RETURN--
2456 /ENTER WITH CHARACTER IN 8-BIT ASCII
2459 AND C377 /MASK OUT EXTRA BITS
2471 TAD OUTINH /IS OUTPUT INHIBITED?
2474 CDF OUFLD /YES-SET DATA FIELD TO BUFFER'S FIELD
2475 ISZ OUJMP /BUMP THE CHARACTER SWITCH
2476 OUJMP, HLT /3 WAY CHARACTER SWITCH
2484 DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH
2485 /ORDER 4 BITS OF 3RD CHAR
2492 DCA I OUPTR /UPDATE SECOND WORD FROM LOW ORDER 4 BITS
2494 DCA OUJMP /RESET SWITCH
2496 ISZ OUDWCT /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS
2498 TAD OUCT /LOAD CONTROL WORD FOR A FULL WRITE
2499 JMS I DMPO /DUMP THE BUFFER
2500 JMP OUCRET /OUTPUT ERROR - GIVE ERROR RETURN
2501 JMS OUSETP /RE-INITIALIZE THE POINTERS
2504 DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO
2505 ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD
2509 OUCRET, HLT /RESTORE CALLING FIELDS
2510 JMP I OCHAR /--RETURN--
2518 \f/FETCH OUTPUT DEVICE CONTROL WORD
2525 TAD I C7600 /FETCH OUTPUT DEVICE NUMBER
2528 DCA OUTEMP /FETCH DEVICE CONTROL WORD
2530 OTRTN, HLT /RESTORE CALLING FIELDS
2531 JMP I OTYPE /--RETURN--
2532 PSTOP, CIF 0 /PRINTS ? WHEN NO OUTPUT DEV
2539 DCA INSTRT /SET RETURN FIELDS
2543 SNA CLA /IS THERE ANYTHING IN BUFFER?
2544 IAC /NO-NO NEED TO SAVE USR AREA
2546 TAD OTYPE /RESTORE AC
2547 INSTRT, CIF CDF 0 /RESTORE CALLING FIELDS
2548 JMP I INSET /--RETURN--
2549 \f/SET JOB STATUS BIT 11 TO SAVE OR NOT SAVE
2550 /ENTER WITH AC=0 OR 1, DEPENDING ON BUFFER
2556 AND I PJSBTS /CLEAR BIT 11 OF JSW
2557 TAD JSBTM /SET ACCORDING TO AC
2560 JMP I SETJSB /--RETURN--
2579 /***********************************************************************
2581 /***********************************************************************
2582 /CODE MOVED TO 17200-17376
2594 DCA OUHNDL /SET OUTPUT HANDLER ENTRY
2596 TAD I OU7600 /GET DEVICE NUMBER WORD OF OUTPUT FILE ENTRY
2597 SNA /IS THERE AN OUTPUT DEVICE?
2598 JMP ONOFIL /NO - INHIBIT OUTPUT
2599 JMS I O200 /CALL USER SERVICE ROUTINES
2600 1 /*ASSIGN,FETCH HANDLER*
2601 OUHNDL, 2600 /OUTPUT DEVICE HANDLER ENTRY
2602 JMP I SERR4A /**DEVICE HANDLER ERROR**4**
2603 OUENTR, TAD I OU7600
2604 JMS I O200 /CALL USER SERVICE ROUTINES
2605 3 /*ENTER OUTPUT FILE*
2606 OUBLK, 7601 /REPLACED WITH STARTING BLOCK
2607 OUELEN, 0 /REPLACED WITH LENGTH OF HOLE
2608 JMP OEFAIL /FAILED - MAYBE WE ASKED TOO MUCH
2610 DCA I O2 /ZERO OUTPUT INHIBIT FLAG
2612 DCA OUREC /INITIALIZE OUTPUT RECORD NUMBER
2616 OEFAIL, TAD I OU7600
2617 AND O7760 /GET REQUESTED LENGTH
2618 SNA CLA /WAS IT AN INDEFINITE REQUEST
2619 JMP ONTERR /YES - CANNOT ENTER THE FILE
2621 O200, AND O17 /MAKE THE REQUESTED LENGTH ZERO
2623 JMP OUENTR /TRY, TRY AGAIN
2624 ONTERR, CLA CLL CML RAR /AC=2
2625 JMP OORETN /TAKE THE ERROR RETURN WITH AC<0
2627 JMP OORETN /TAKE THE ERROR RETURN WITH AC=0
2629 DCA OUCTLW /STORE THE CONTROL WORD
2630 JMS OUNREC /COMPUTE NO. OF RECORDS
2636 TSTHOL, SNL CLA /IF ZERO OR POSITIVE,GIVE ERROR
2640 JMS I OUHNDL /CALL OUTPUT DEVICE HANDLER
2641 OUCTLW, 0 /CONTROL WORD
2642 OUBUF /BUFFER ADDRESS
2643 OUREC, 0 /RECORD NUMBER
2644 JMP OUERR /THERE ARE NO SOFT OUTPUT HANDLER ERRORS
2647 DCA OUREC /UPDATE OUTPUT RECORD NUMBER
2648 ISZ OUTDMP /BUMP OUTDMP TO NORMAL RETURN
2649 OUERR, JMP I OUTDMP /--RETURN--
2653 TAD K7660 /SET UP SNL SZA CLA FOR CLOSE
2660 SZA CLA /IS OUTPUT INHIBITED?
2661 JMP OCISZ /YES - CLOSE IS A NOP
2662 TAD O232 /OUTPUT A ^Z
2664 JMP OCRET /AND SOME 0'S
2669 JMS I O5 /GET TYPE OF OUTPUT DEVICE
2671 TAD O100 /IF ITS A DIRECTORY DEVICE FORCE A RECORD
2672 TAD O77 /BOUNDARY-OTHERWISE HALF RECORD
2674 SZA CLA /UP TO THE BOUNDARY YET?
2675 JMP FILLLP /NO - FILL WITH ZEROS
2676 TAD I O6 /GET DOUBLEWORD COUNT LEFT
2678 SNA /A FULL WRITE LEFT?
2679 JMP NODUMP /YES - DON'T DO IT - ^Z IS ALREADY OUT
2680 TAD O8 /PUT IN FIELD BITS AND WRITE BIT
2682 JMP OCRET /ERROR OCCURRED WHILE DUMPING THE BUFFER
2683 NODUMP, JMS I O7700 /CALL USER SERVICE ROUTINES
2684 10 /*LOCK USR IN CORE*
2685 TAD I OU7600 /DEVICE NUMBER
2686 JMS I O200 /CALL USER SERVICE ROUTINES
2687 4 /*CLOSE OUTPUT FILE*
2688 OU7601, 7601 /POINTER TO THE OUTPUT FILE NAME
2690 SKP /ERROR WHILE CLOSING THE FILE
2692 OCRET, CIF CDF 0 /RESTORE CALLING FIELDS
2693 JMP I OCLOSE /--RETURN--
2695 \f/CONVERT OUTPUT CONTROL WORD
2696 /TO NUMBER OF RECORDS
2703 JMP I OUNREC /--RETURN--
2721 /***********************************************************************
2722 \f INFLD=INCTL&70 /FIELD OF INPUT BUFFER
2723 OUFLD=OUCTL&70 /FIELD OF OUTPUT BUFFER
2724 /***********************************************************************
2725 /CODE MOVED TO 17400 -17574
2732 /PREPARE TO OPEN NEW INPUT FILE
2737 DCA INCHCT /SET INCHCT TO FORCE A READ
2738 ISZ INEOF /SET END-OF-FILE FLAG TO FORCE A NEW FILE
2740 DCA INFPTR /RESET FILE POINTER
2741 JMP I IOPEN /--RETURN--
2750 ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH
2754 SNA CLA /DID LAST READ YIELD END-OF-FILE?
2755 JMP INGBUF /NO-DO ANOTHER
2758 DCA INHNDL /INITIALIZE HANDLER ADDRESS
2759 TAD I INFPTR /GET NEXT CD INPUT FILE ENTRY
2760 DCA INDEV /SAVE IT FOR PANIC
2763 JMP EOFERR /NO - OUT OF INPUT
2764 JMS I PINSET /YES-SAVE BUFFER IF NECESSARY
2765 JMS I I7700 /CALL USER SERVICE ROUTINE
2766 1 /*ASSIGN, FETCH HANDLER*
2768 JMP I SERR4B /**DEVICE HANDLER ERROR**+**
2770 AND I7760 /GET LENGTH PART OF WORD
2771 SZA /LENGTH OF 0 MEANS LENGTH >=256
2772 \f TAD I17 /ADD HIGH ORDER BITS
2775 DCA INCTR /STORE LENGTH OF FILE
2778 DCA INREC /STORE STARTING RECORD NUMBER OF FILE
2780 DCA INEOF /ZERO END-OF-FILE FLAG
2785 DCA INCTR /RESTORE INCTR IF IT HASN'T OVERFLOWED
2786 SZL /IS THIS THE LAST READ?
2787 ISZ INEOF /YES - SET END-OF-FILE FLAG
2788 CLL CML CMA RTR /CONSTRUCT A CONTROL WORD FOR THE READ
2789 RTR /FROM THE AMOUNT OF THE OVERFLOW
2790 RTR /(IF ANY) AND THE STANDARD CONTROL WORD
2795 JMS I INHNDL /CALL INPUT DEVICE HANDLER
2796 INCTLW, 0 /CONTROL WORD
2797 INBUFP, INBUF /INPUT BUFFER
2798 INREC, 0 /NUMBER OF RECORDS
2799 JMP INERRX /SOME KIND OF HANDLER ERROR
2802 DCA INREC /UPDATE THE RECORD NUMBER
2809 DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT
2811 DCA INJMP /RESET THE CHARACTER SWITCH
2813 DCA INPTR /AND THE WORD POINTER
2814 JMP INCHAR /GO BACK AND MAKE BELIEVE THIS NEVER HAPPENED
2815 INERRX, ISZ INEOF /EITHER AN END-OF-FILE OR A ERROR
2816 SMA CLA /WHICH TYPE WAS IT?
2817 JMP INBREC /END OF FILE - RESUME PROCESSING
2818 INERR, CLA CLL CML RAR /BAD - GIVE ERROR RETURN WITH NEGATIVE AC
2820 \fINJMP, HLT /3 WAY CHARACTER SWITCH
2828 RTR /COMBINE THE HIGH-ORDER FOUR BITS OF
2830 RTR /THE TWO WORD TO FORM THE THIRD CHARACTER
2836 DCA INCTLW /SAVE THE HIGH-ORDER BITS FOR THE THIRD CHAR
2837 ISZ INPTR /BUMP THE WORD POINTER
2841 SNA /IS THE CHARACTER A ^Z?
2842 JMP INNEWF /YES - GET A NEW FILE
2843 TAD I232 /RESTORE THE CHARACTER
2844 ISZ ICHAR /BUMP RETURN TO NORMAL RETURN
2845 INRTRN, CDF CIF 0 /RESTORE CALLING FIELDS
2846 JMP I ICHAR /--RETURN--
2867 /***********************************************************************