/ SET COMMAND FOR P?S/8 / LAST EDIT: 05-JAN-1986 10:00:00 CJL / MUST BE ASSEMBLED WITH '/J' SWITCH SET. / THE SET COMMAND ALLOWS VARIOUS KEYBOARD MONITOR, ETC. PARAMETERS TO BE / CUSTOMIZED BY THE USER. / VARIOUS FUNCTIONS CAN BE VARIED TO SUIT INDIVIDUAL PREFERENCE OR HARDWARE / CONFIGURATION AS NECESSARY. / USAGE: / SET OPTION [NO] CONDITION SET THE SPECIFIED OPTION TO THE / STATED CONDITION. VARIOUS OPTIONS / ALLOW "NO" MODIFIERS. / SET OPTION PARAMETER=XXXX SET THE SPECIFIED OPTION PARAMETER / TO THE STATED NUMERICAL VALUE. / SET OPTION STRING=XXXXXXXXXX SET THE SPECIFIED OPTION STRING / TO THE STATED STRING ARGUMENT. / SET/A OBTAIN A LIST OF ALL AVAILABLE OPTIONS. / WHEN INVOKING ANY OPTION (/A NOT PRESENT), THE FOLLOWING SYNTACTIC RULES APPLY: / SET OPTION PARAMETER [,PARAMETER] [;OPTION PARAMETER] [,PARAMETER] / THIS ALLOWS MIXED MULTIPLE OPTION AND SUB-OPTION COMMANDS. / N. B. SOME OPTIONS MAY BE IN CONFLICT WITH EACH OTHER OR DEFAULT TO / OVERRIDING EACH OTHER! / COMPLETE OPTION LISTING. / INVOKING "SET/A" WILL LIST ALL SET OPTIONS AS FOLLOWS: / DOLLAR FETCH* WRITE* / ECHO FLIP* OFF ON / ESCAPE CHAR CODE RETURN TOPS10 / FLNAME ENTRY* / LNFEED ECHO IGNORE RETURN VIEW / NULL ERASE* / PASS WORD / PROMPT CHAR UNIT* / RADIX EIGHT TEN / RUBOUT BACKUP CHAR ECHO LIMIT NORMAL / TOPS10 TOSS* VT05 VT100 VT52 / SYSTEM HALT RETRY UNITS* / TAB CODE EXPAND FILL* SINGLE / ^U STRING / ^Z STRING / ITEMS MARKED WITH ASTERISK ALLOW A "NO" MODIFIER. / SOME ITEMS ARE PASS WORD PROTECTED DUE TO THE SERIOUS CONSEQUENCES OF / THEIR INVOCATION. / INDIVIDUAL SET OPTION DESCRIPTIONS. / SET DOLLAR [NO] FETCH / THIS FETCHS $:[BOOTSTRAP UNIT] INTO THE EDITOR EVERY TIME THE KEYBOARD / MONITOR IS RELOADED MAKING IT THE ACTIVE FILE. / SET DOLLAR [NO] WRITE / THIS WRITES THE ACTIVE FILE INTO $:[BOOTSTRAP UNIT] EVERY TIME THE / EXTENDED COMMAND PROCESSOR OR "R" OR "RU" COMMANDS ARE INVOKED. THESE TWO / COMMANDS USED TOGETHER ALLOW AN ENVIRONMENT SIMILAR TO "BASIC" TO EXIST. / SET ECHO [NO] FLIP:PASSWORD / THIS OPTION CONTROLS THE DISPOSITION OF <^O> CHARACTERS SENT BY THE USER / TO TOGGLE PRINTING WITHIN THE KEYBOARD MONITOR ENVIRONMENT. SETTING / NO FLIP CAUSES <^O> TO BE IGNORED. THE ONLY WAY TO CHANGE THE STATE OF / INPUT ECHO IS THEN THE "ECHO" COMMAND. / SET ECHO OFF:PASSWORD / THIS OPTION CAUSES THE KEYBOARD MONITOR TO BE RELOADED WITH ECHO TURNED / OFF INITIALLY. / SET ECHO ON:PASSWORD / THIS OPTION CAUSES THE KEYBOARD MONITOR TO BE RELOADED WITH ECHO TURNED / ON INITIALLY. / SET ESCAPE CHAR=XXXX / THIS OPTION CAUSES THE CHARACTER ECHOED BY PRESSING THE KEY TO / BE THE ASCII CODE XXXX. THIS OPTION IS DORMANT UNLESS SET ESCAPE TOPS10 / IS ALSO IN EFFECT. / SET ESCAPE CODE=XXXX / THIS OPTION CAUSES THE CHARACTER OF ASCII CODE XXXX TO BE THE LOGICAL / CHARACTER CODE FOR THE FUNCTION. VARIOUS CODES HAVE BEEN USED / ON VARIOUS TERMINALS; THE MOST POPULAR ARE 27 () AND 125 () / HOWEVER THE USER CAN INVOKE ANY NON-CONFLICTING VALUE. IF THE VALUE DOES / CONFLICT WITH ANOTHER FUNCTION CODE, EITHER THE FUNCTION OR THE / INTENDED FUNCTION WILL PREVAIL DEPENDING ON TABLE ORDER. / SET ESCAPE RETURN / THIS OPTION CAUSES THE DESIGNATED KEY TO FUNCTION IDENTICALLY TO / . THE FUNCTION WILL NOT BE AVAILABLE TO THOSE PROGRAMS DESIGNED / TO LOOK FOR AS OPPOSED TO TERMINATION. / SET ESCAPE TOPS10 / THIS OPTION CAUSES THE DESIGNATED CHARACTER TO BE PRINTED WITHOUT / , AND TERMINATE THE INPUT LINE. / SET FLNAME [NO] ENTRY:PASSWORD / THIS OPTION CONTROLS THE "ENTRY" OF THE CURRENT FILE NAME WHEN USING ANY OF / THE COMMANDS: "FETCH", "WRITE", "KILL", "ENTER." SHOULD ANY OF THESE COMMANDS / SUBSEQUENTLY BE USED WITHOUT A FILE NAME THOUGH POSSIBLY WITH A UNIT / SPECIFICATION (EX: "FETCH:7"), THE CURRENT FILE NAME WILL BE USED IMPLICITLY. / THIS ALLOWS SEQUENCES SUCH AS: / FETCH FOO THIS FETCHS THE FILE "FOO" FOR EDITING. / WRITE THIS WRITES THE FILE "FOO" BACK AS IF IT WERE / "WRITE FOO". / SET LNFEED ECHO / THIS OPTION CAUSES THE LINEFEED KEY TO ECHO THE CHARACTER ONLY. THERE / IS NO OTHER FUNCTION IF THIS OPTION IS INVOKED. / SET LNFEED IGNORE / THIS OPTION CAUSES THE LINEFEED KEY TO BE TOTALLY IGNORED. THIS IS / USEFUL WHEN READING IN PAPER TAPES WITH EXTRANEOUS CHARACTERS. / SET LNFEED RETURN / THIS OPTION CAUSES THE LINEFEED KEY TO BE TOTALLY EQUIVALENT TO THE / RETURN KEY. / SET LNFEED VIEW / THIS OPTION CAUSES THE LINEFEED KEY TO CONTROL THE ABILITY TO / VIEW THE ENTIRE INPUT LINE AS IT CURRENTLY IS BEFORE COMMITTING TO / IT WITH OR . THIS IS ESPECIALLY USEFUL WITH HARD-COPY TERMINALS / AFTER MULTIPLE RUBOUTS HAVE OCCURRED. / SET NULL [NO] ERASE / THIS OPTIONS CONTROLS THE ABILITY TO ENTER NULL LINES INTO THE LINE EDITOR / MERELY BY SUPPLYING A LINE NUMBER WITHOUT TEXT. IF THE OPTION IS SET TO / ERASE NULL LINES, THEN SUPPLYING THE LINE NUMBER ALONE WILL ERASE THE LINE / FROM THE ACTIVE FILE; THE MONITOR WILL RING THE CHARACTER TO INDICATE / POSSIBLE ERASURE OF PART OF THE FILE. NULL LINES HAVE ONLY A LINE / TERMINATOR AND LINE NUMBER AND WILL BE PROCESSED AS A , BY / VARIOUS SYSTEM PROGRAMS. / SET PASS WORD:: / THIS OPTION CONTROLS THE STRING USED AS THE PASSWORD ON THE VARIOUS / PASSWORD-PROTECTED OPTIONS. IT IS ITSELF PASSWORD PROTECTED FOR SAFETY. / THE NEW PASSWORD MUST BE PRESENT; ALL PASSWORDS ARE FROM ONE TO SIX / PRINTING UPPER-CASE CHARACTERS LONG. THERE EXISTS A SPECIAL INTERNAL / IMPLEMENTOR'S PASSWORD WHICH IS NOT ACCESSIBLE BY THIS COMMAND. THIS / ALLOWS THE RESETTING OF THE PASSWORD ON MISMANAGED SYSTEMS! / SET PROMPT CHAR=XXXX / THIS OPTION ALLOWS THE USER TO SET ANY ASCII CHARACTER AS THE PROMPT / CHARACTER TO CUSTOMIZE THE KEYBOARD MONITOR TO ANY REQUIREMENT. ON / LARGE SHARED DISK SYSTEMS, EACH USER COULD HAVE THEIR OWN PROMPT CHARACTER / TO CONFIRM THEIR BOOTSTRAP UNIT. THIS OPTION CAN ALSO BE USED WITH THE / "SET PROMPT UNIT" OPTION (SEE BELOW). / WARNING: / VARIOUS "RUBOUT" OPTIONS DEMAND THAT THE PROMPT CHARACTER BE / PRINTABLE FOR THEIR PROPER OPERATION! / SET PROMPT [NO] UNIT / THIS OPTION ALLOWS THE INCLUSION OF A LEADING DIGIT INTO THE PROMPT WHICH / IS THE CURRENT LOGICAL UNIT OF THE KEYBOARD MONITOR. / SET RADIX EIGHT / THIS OPTION SELECTS OCTAL NUMERICAL VALUES BY DEFAULT WITHIN THE KEYBOARD / MONITOR. THE "RADIX" COMMAND CAN OVERRIDE THIS AT ANY TIME. / SET RADIX TEN / THIS OPTION SELECTS DECIMAL NUMERICAL VALUES BY DEFAULT WITHIN THE / KEYBOARD MONITOR. THE "RADIX" COMMAND CAN OVERRIDE THIS AT ANY TIME. / SET RUBOUT BACKUP / THIS OPTION INVOKES A VISUAL BACKUP ALGORITHM FOR RUBOUT HANDLING / WITHIN THE KEYBOARD MONITOR. THIS IS THE METHOD WHICH GENERALLY WORKS / BEST ON VIDEO TERMINALS FROM THE LEFT MARGIN UP TO SOME POSITION ON THE / RIGHT SIDE OF THE LINE, WHERE THE METHOD BREAKS DOWN DUE TO SOME / HARDWARE ANOMALY OF THE PARTICULAR TERMINAL, USUALLY REGARDING THE / DISPOSITION OF CHARACTERS OR REACHING THE RIGHT-MOST POSITION. / THERE EXISTS A PARTIAL REMEDY FOR THESE PROBLEMS INVOLVING A "LIMIT" / COLUMN. REACHING OR PASSING THIS "LIMIT" COLUMN CAUSES THE RUBOUT / HANDLING TO CHANGE TO INCLUDE "REPAINTING" THE ENTIRE LINE TO ALLOW FOR / MORE ACCURATE REPRESENTATION OF THE ACTUAL CONTENTS OF THE LINE AFTER / A RUBOUT OPERATION. THE DEFAULT VALUE OF THE "LIMIT" IS SET TO A / NUMBER BEYOND THE SCOPE OF THE KEYBOARD MONITOR. SEE "SET RUBOUT / LIMIT=XXXX" BELOW. FOR SEVERAL POPULAR TERMINALS, THERE ARE MORE / COMPREHENSIVE RUBOUT SCHEMES. SEE "SET RUBOUT VT05", ETC. / SET RUBOUT CHAR=XXXX / THIS OPTIONS SETS THE ASCII VALUE OF THE CHARACTER USED TO FLAG / RUBBED-OUT CHARACTERS IN EITHER THE "NORMAL" OR "TOPS10" MODE. THE DEFAULT / VALUE IS 92 ("\"). WHEN CHANGING THE CHARACTER, THIS OPTION MUST BE USED / AFTER INVOKING THE "NORMAL" OR "TOPS10" RUBOUT MODE AS THEY BOTH DEFAULT / THE CHARACTER TO "\". / SET RUBOUT ECHO / THIS OPTION CAUSES THE DISPOSITION OF RUBBED-OUT CHARACTERS TO BE THE / ECHOING OF THE CHARACTERS IN REVERSE ORDER, I. E. AS THEY ARE RUBBED-OUT. / THIS IS THE SAME METHOD AS IS USED IN VARIOUS IMPLEMENTATIONS OF "TECO". / SET RUBOUT LIMIT=XXXX / THIS OPTION SETS THE "LIMIT" COLUMN USED BY THE VARIOUS VISUALLY-ORIENTED / RUBOUT HANDLING METHODS. THIS OPTION MUST BE USED AFTER INVOKING ANY NEW / RUBOUT HANDLING OPTION, AS ALL RUBOUT HANDLING OPTIONS DEFAULT THIS / PARAMETER TO A PARTICULAR VALUE. THIS COMMAND CAN BE USEFUL TO DISABLE / OR MODIFY ANY DEFAULT SETTING WHEN A PARTICULAR TERMINAL DOES NOT QUITE / MATCH THE DEFAULT REQUIREMENTS OF ANY RUBOUT HANDLING. (EX: "SET RUBOUT / VT100" ASSUMES AN EIGHTY COLUMN WIDE VT100 WITH A "LIMIT" OF 72. IF THE / VT100 IS IN 132-COLUMN MODE, THE "LIMIT" CAN BE EXTENDED TO A MORE USEFUL / VALUE WITH: "SET RUBOUT LIMIT=128") / SET RUBOUT NORMAL / THIS OPTION CAUSES THE PRINTING OF THE SPECIAL RUBOUT CHARACTER EACH TIME / THE RUBOUT KEY IS PRESSED AND A CHARACTER IS ACTUALLY DELETED FROM THE / INPUT LINE. THE "SET RUBOUT CHAR=XXXX" OPTION CAN BE USED TO CHANGE THE / CHARACTER FROM ITS DEFAULT OF "\". / SET RUBOUT TOPS10 / THIS OPTION CAUSES THE SURROUNDING OF ALL RUBBED-OUT CHARACTERS WITH / THE SPECIAL RUBOUT CHARACTER EACH TIME THE RUBOUT KEY IS PRESSED AND A / CHARACTER IS ACTUALLY DELETED FROM THE INPUT LINE. IF A CHARACTER / OTHER THAN A RUBOUT IS PRESSED, A TRAILING SPECIAL CHARACTER IS PRINTED / AFTER THE LAST RUBBED-OUT CHARACTER LEAVING THE STRING OF RUBBED-OUT / CHARACTERS PRINTED IN BACKWARDS ORDER AND FRAMED BY THE SPECIAL / CHARACTERS. THE "SET RUBOUT CHAR=XXXX" OPTION CAN BE USED TO CHANGE / THE CHARACTER FROM ITS DEFAULT OF "\". / SET RUBOUT [NO] TOSS / THIS OPTION CAUSES THE CHARACTER TO BE TOTALLY IGNORED ON INPUT, / OR DO THE CURRENT RUBOUT FUNCTION. IGNORING RUBOUTS IS NECESSARY WHEN / READING IN PAPER TAPES ON A TELETYPE READER WHICH WERE PUNCHED WITH / RUBOUT CHARACTERS IMBEDDED WITHIN THEM TO EDIT OUT BAD CHARACTERS ON THE / TAPE, OR TO "PAD" THE OUTPUT FOR SOME REASON, ETC. EVEN IF THIS OPTION IS / INVOKED TO IGNORE CHARACTERS, THE OTHER RUBOUT CHARACTERS WILL STILL / FUNCTION: UNDERSCORE AND BACKSPACE ALSO ACCOMPLISH THE RUBOUT FUNCTION AT / ALL TIMES. / SET RUBOUT VT05 / THIS OPTION INVOKES CUSTOM RUBOUT HANDLING FOR A VT05 TERMINAL. THE "LIMIT" / COLUMN IS DEFAULTED TO 64. THIS OPTION SOLVES ALL KNOWN RUBOUT ANOMALIES / ON AN ACTUAL VT05 BY USING THE FEATURE OF THE VT05 AND THEN / "REPAINTING" THE LINE. / SET RUBOUT VT100 / THIS OPTION INVOKES CUSTOM RUBOUT HANDLING FOR THE VT100 FAMILY OF / TERMINALS. THE "LIMIT" COLUMN VALUE IS DEFAULTED TO 72, BUT CAN BE CHANGED / AS REQUIRED FOR THE BENEFIT OF VARIOUS "COMPATIBLE" TERMINALS WHICH ACTUALLY / OUT-PERFORM THE REAL VT100. IF THE TERMINAL IS PUT INTO 132 COLUMN MODE, / THE "LIMIT" COLUMN SHOULD BE INCREASED TO APPROXIMATELY 128. THIS OPTION / USES THE [ K SEQUENCE TO ERASE THE CURRENT LINE. / SET RUBOUT VT52 / THIS OPTION INVOKES CUSTOM RUBOUT HANDLING FOR THE VT5X FAMILY OF / TERMINALS. THE "LIMIT" COLUMN IS DEFAULTED TO 72. VARIOUS VT52 / "COMPATIBLE" TERMINALS EXIST WHICH DON'T REQUIRE THIS LIMIT COLUMN / VALUE, OR CAN BE CHANGED TO 79 TO JUST HANDLE THE RIGHT-HAND MARGIN / PROBLEM. ABOVE THE LIMIT COLUMN, THIS OPTION USES THE K SEQUENCE / OF THE VT5X TERMINAL TO ERASE THE LINE AND THEN "REPAINT" IT. / SET SYSTEM HALT / THIS OPTION CAUSES THE SYSTEM HANDLER TO HALT ON ALL ERROR CONDITIONS. / THE SYSTEM CAN ONLY BE RESTARTED BY PRESSING "CONTINUE" ON THE FRONT PANEL. / IF THE COMPUTER LACKS A FRONT PANEL, THIS OPTION MUST NOT BE USED. IF A / CONSOLE OVERLAY IS PRESENT, THIS OPTION WILL BE DORMANT. / SET SYSTEM RETRY / THIS OPTION CAUSES THE SYSTEM HANDLER TO INFINITELY RETRY ALL ERROR CONDITIONS / UNTIL THE ERROR CLEARS. THIS IS THE ONLY VIABLE OPTION FOR MACHINES WITHOUT / FRONT PANELS UNLESS A CONSOLE OVERLAY IS USED, IN WHICH CASE THIS OPTION / WILL BE DORMANT. / SET SYSTEM [NO] UNITS:PASSWORD / THIS OPTION ENABLES/DISABLES THE ABILITY TO ACCESS FILES OR SYSTEM PROGRAMS / ON (OTHER) LOGICAL UNITS BEYOND THE CURRENT UNIT. THIS OPTION IS USEFUL / WHEN RESTRICTING ACCESS TO A SHARED DISK FOR FILE PROTECTION PURPOSES. EX: / A NOVICE USER COULD BE GIVEN HIS OWN BOOTSTRAP UNIT ON A LARGE SHARED DISK / IN A COOPERATIVE ENVIRONMENT AND THIS FEATURE COULD BE DISABLED TO PROTECT / (EVERYONE ELSE) FROM (ACCIDENTAL) FILE DESTRUCTION. / SET TAB CODE=XXXX / THIS OPTION SETS THE CHARACTER CODE USED TO ACCEPT AN INPUT CHARACTER / AS A . THIS ALLOWS OTHER CHARACTERS TO BE USED TO ENTER TABS INTO A / FILE BESIDES <^I> IF MORE CONVENIENT. EX: A TELETYPE LACKS A KEY, / BUT OFTEN HAS A KEY LABLED "ALT MODE" WITH THE CODE 125. IF THE COMMAND: / "SET TAB CODE=125" IS INVOKED, THEN THE "ALT MODE" KEY IS MAPPED TO A / LOGICAL KEY. / SET TAB EXPAND / THIS OPTION CAUSES THE DEFAULT MODE OF TAB HANDLING TO BE EXPANSION WITH / SPACE CHARACTERS TO SIMULATE TABS ON TERMINALS LACKING COMPATIBLE HARDWARE / TAB STOPS. THIS IS EQUIVALENT TO THE KEYBOARD MONITOR COMMAND "TAB 3". / SET TAB [NO] FILL / THIS OPTION CAUSES THE DEFAULT MODE OF TAB HANDLING TO BE SENDING OF / CHARACTERS WITH/WITHOUT CHARACTERS AS FILL CHARACTERS AS IS / REQUIRED BY VARIOUS TERMINALS. "SET TAB NO FILL" IS EQUIVALENT TO THE / KEYBOARD MONITOR COMMAND "TAB". "SET TAB FILL" IS EQUIVALENT TO THE / KEYBOARD MONITOR COMMAND "TAB 5". / SET TAB SINGLE / THIS OPTION CAUSES THE DEFAULT MODE OF TAB HANDLING TO BE SENDING OF / A SINGLE SPACE CHARACTER IN LIEU OF A TAB. THIS HAS THE EFFECT OF / SIGNIFICENTLY SPEEDING UP HARD-COPY LISTING OF FILES, BUT AT THE EXPENSE OF / REMOVING THE ORDERLINESS OF THE TAB SPACING. THIS OPTION IS EQUIVALENT TO / THE KEYBOARD MONITOR COMMAND "TAB 0". / SET ^U STRING=XXXXXXXXXX / THIS OPTION ALLOWS THE CUSTOMIZING OF THE MESSAGE ASSOCIATED WITH THE / DELETE CHARACTER <^U> AND CAN BE NULL OR UP TO TEN CHARACTERS LONG. IF A / SPACE IS DESIRED IN THE MESSAGE, THEN USE THE " CHARACTER WHICH WILL BE / SUBSTITUTED FOR A SPACE IN THE MESSAGE. THE CHARACTERS: " , ; CANNOT BE / INSERTED INTO THE MESSAGE. / SET ^Z STRING=XXXXXXXX / THIS OPTION ALLOWS THE CUSTOMIZING OF THE MESSAGE ASSOCIATED WITH THE / END-FILE CHARACTER <^Z> AND CAN BE NULL OR UP TO EIGHT CHARACTERS LONG. IF / A SPACE IS DESIRED IN THE MESSAGE, THEN USE THE " CHARACTER WHICH WILL BE / SUBSTITUTED FOR A SPACE IN THE MESSAGE. THE CHARACTERS " , ; CANNOT BE / INSERTED INTO THE MESSAGE. / DEFAULT SETTINGS. / THE MONITOR IS GENERALLY SUPPLIED WITH THE EQUIVALENT OF THE FOLLOWING / SET COMMANDS HAVING BEEN INVOKED: / SET PASS WORD:MARIO:MARIO DEFAULT PASS WORD IS MARIO / SET DOLLAR NO FETCH,NO WRITE NO $ ACTIONS / SET ECHO FLIP:MARIO,ON:MARIO <^O> ACTIVE, ECHO ON / SET ESCAPE TOPS10,CHAR=36,CODE=27 $ / SET FLNAME ENTRY:MARIO ENTER FILE NAMES IMPLICITLY / SET LNFEED VIEW VIEW LINE WITH / SET NULL ERASE ERASE LINES WHEN JUST NUMBERS / SET PROMPT NO UNIT,CHAR=46 PROMPT IS . / SET RADIX TEN DECIMAL NUMBERS / SET RUBOUT TOPS10,NO TOSS FRAMED RUBOUTS / SET SYSTEM HALT,UNITS:MARIO I/O ERROR HALT, :UNITS / SET TAB CODE=9,EXPAND ^I, SPACES / SET ^U STRING ZAP! ZAP! / SET ^Z STRING ZAP! ZAP! // P?S/8 MONITOR CROSS-EQUATES. BACKSP= 7421 / BEGLIN= 0052 /LINE START CHAR= 0020 /INPUT CHLOOP= 1221 /STUFF CHTBL= 1246 /SPECIALS COLUMN= 0123 /COLUMN COUNT CTCPZAP=2363 /<^C> PRINT ZAP CTCZAP= 2365 /<^C> ZAP DOLLSW= 0151 /"$" SWITCH ECHOSW= 0024 /ECHO SWITCH EDLIN= 0053 /EDIT EEXIT= 2715 /EDIT EXIT GETBAS= 0031 /\ GETHAF= 0104 / >GET HALF-WORD GETNDX= 0026 // GOTCR= 1241 / ROUTINE GOTESC= 7407 / INPUT= 0033 /INPUT LFVIEW= 2674 / ADDRESS LINENO= 0062 /GET NUMERIC LNFEED= 2153 / LOAD= 1634 /LOAD LOOKUP= 0154 /LOOKUP L10= 0174 /0010 L15= 0041 /0015 L3= 0005 /0003 L37= 0064 /0037 L40= 0046 /0040 L7= 0177 /0007 L7600= 0113 /7600 L7741= 0011 /7741 L7770= 0040 /7770 MESSAGE=0112 /MESSAGE NAME= 0054 /NAME CODE NAMPRT= 0066 /PRINT NAME NEWBUF= 0400 /SCRATCH NEWLINE=2017 /NEW LINE NOEPUNI=2702 /EDIT UNIT PROMPT NOUNPRM=1211 /GLINE UNIT PROMPT NXTADR= 2574 /NEXT ADDRESS OFLIP= 2332 /^O ROUTINE PBEGIN= 0071 /BEGIN PBUTIO= 0161 /BOOT I/O PCTRLPR=0163 /^O PRINT ROUTINE PMOVE= 0127 /MOVE POINTER PRELIO= 0130 /I/O POINTER PRINT= 0107 /PRINT PRMPCNT=7444 /PROMPT COUNT PROMPT= 0166 /PROMPT PR6BIT= 0047 /6-BIT PRINT PSCRSIZ=0170 /SCRSIZE PUTBAS= 0131 /\ PUTHAF= 0132 / >PUT-HALF PUTNDX= 0060 // R= 1446 /"R" COMMAND RADXSW= 0015 /SWITCH RAGN= 7437 / ADDRESS RALTCH= 7417 / ECHO RCHLP2= 7457 / POINTER RDELIM= 7420 / END ROVFLO= 7404 / OVERFLOW RTEMP1= 7401 /\ RTEMP2= 7402 / > RTEMP3= 7403 // RUBFLG= 7400 / FLAG SBLOCK= 7635 /BLOCK ARGUMENT SBOOT= 7600 /MONITOR SEQSW= 0120 /SWITCH SFUN= 7634 /SYSTEM FUNCTION SWAL= 7604 /A-/L TABSW= 0074 / MODE TAPREC= 0075 /OFFSET TCNT1= 0122 /BUMP FACTOR TEMP1= 0100 /TEMPORARY TEMP2= 0101 /TEMPORARY TRYOLD= 0642 /OLD NAME UPU2MSG=2164 /<^U> MESSAGE WHATMOR=0057 /WHAT? END XR1= 0016 /AVAILABLE XR2= 0017 /AUTO-INDICES XTUNIT= 1056 /UNIT TEST ZP2MSG= 2173 /<^Z> MESSAGE // ADDITIONAL DEFINITIONS. JMPC= JMP . /CURRENT PAGE JUMP INSTRUCTION NL0001= CLA IAC /LOAD AC WITH 0001 NL0002= CLA CLL CML RTL /LOAD AC WITH 0002 NL2000= CLA CLL CML RTR /LOAD AC WITH 2000 NL3777= CLA CLL CMA RAR /LOAD AC WITH 3777 NL4000= CLA CLL CML RAR /LOAD AC WITH 4000 NL7775= CLA CLL CMA RTL /LOAD AC WITH 7775 NL7776= CLA CLL CMA RAL /LOAD AC WITH 7776 NL7777= CLA CMA /LOAD AC WITH 7777 SRINST= JMP I PBEGIN/[BEGIN] /INSTRUCTION DEFINITION WRITE= 4000 /SYSIO WRITE BIT PAGE 14 /OVER FILE AREA SET= . /"SET" SYSTEM STARTS HERE IFNZRO .&177 SET, 5/NOP /IN CASE WE ARE CHAINED TO ANYSW, TAD I (CTCZAP) /GET <^C> INSTRUCTION SETEM1, TAD (-SRINST) /COMPARE TO POSSIBLE VALUE SETEM2, SZA CLA /SKIP IF IT MATCHES SUBOSW, JMP SETOK /JUMP IF NOT TAD JMPIL7600/(JMP I L7600/[SBOOT])/GET BOOTSTRAPPING INSTRUCTION DCA I (CTCZAP) /ZAP IT IN NL0002 /SET "C" BIT MASK AND I PSCRSIZE/[SCRSIZE] /GET THE "C" BIT SZA CLA /SKIP IF NOT SET DCA I (CTCPZAP) /ELSE PREVENT EXTRA <^C> SETOK, DCA I WHATMORE/[XWHATMORE] /BOOTSTRAP ON ALL PROBLEMS TAD I (SWAL) /GET SWITCHES /A-/L SPA CLA /SKIP IF /A OFF JMP I (PRTOPT) /ELSE GO PRINT THE OPTIONS SETAGN, DCA SUBOSW /HAVEN'T SEEN ANY SUB-OPTIONS YET JMS I NAME/[XNAME] /TRY TO SCAN OFF AN OPTION JMP BADTST /COULDN'T DO IT TAD SET/(5) /SETUP THE DCA TCNT1 /LOOKUP FACTOR DCA TAPREC /CLEAR INITIAL "RECORD" TAD (TABLE) /POINT AT OUR MAIN TABLE JMS I LOOKUP/[XLOOKUP] /TRY TO LOCATE THE ITEM CLL RTR /MAKE IT *4 INSTEAD OF *20 DCA SETEM1 /SAVE THE RELATIVE VALUE TAD SETEM1 /GET IT BACK RTR /MAKE IT *1 TAD SETEM1 /*5 TAD (TABLE+3) /MAKE IT POINT TO PARTICULAR TABLE DCA SETEM1 /STASH THE POINTER TAD I SETEM1 /GET THE TABLE ADDRESS DCA SETEM2 /SAVE IT ISZ SETEM1 /POINT TO DISPATCH TABLE SETNXT, DCA MESSAGE /CLEAR "NO" INDICATOR NOW SETNX2, JMS I NAME/[XNAME] /GET SUB-ITEM JMP BADTST /WASN'T ANY ISZ SUBOSW /NOW WE HAVE AT LEAST ONE SUB-OPTION TAD MESSAGE /GET "NO" INDICATOR SPA CLA /SKIP IF OFF JMP GOTNO /JUMP IF WE SCANNED A "NO" BEFORE TAD TEMP2 /GET SECOND NAME WORD SZA CLA /SKIP IF SHORT NAME JMP NOTNO /LONGER NAMES CAN'T BE "NO" TAD TEMP1 /GET FIRST NAME WORD TAD (-"N^100-"O+300) /COMPARE TO 'NO SNA CLA /SKIP IF NOT "NO" NL4000 /ELSE SET "NO" INDICATOR VALUE NOTNO, DCA MESSAGE /SAVE THE NEW "NO" INDICATOR VALUE TAD MESSAGE /GET THE "NO" INDICATOR SPA CLA /SKIP IF NOT "NO" JMP SETNX2 /GO BACK TO GET THE REST OF THE OPTION GOTNO, DCA ANYSW /INDICATE WE GOT SOMETHING TAD L3/(3) /SETUP THE DCA TCNT1 /LOOKUP FACTOR DCA TAPREC /CLEAR "RECORD" TAD SETEM2 /GET SUB-OPTION TABLE POINTER JMS I LOOKUP/[XLOOKUP] /LOOKUP THE SUB-OPTION CLL RTR;RTR /MAKE IT *1 TAD I SETEM1 /POINT TO DISPATCH ADDRESS DCA TEMP1 /STASH THE POINTER TAD I TEMP1 /GET THE BRANCH ADDRESS /(&3777 IF "NO" ALLOWED) TAD MESSAGE /ADD ON "NO" INDICATOR SMA /SKIP IF "NO" WAS NOT USED OR /IT WAS AND IT IS ALLOWED JMP BADNO /JUMP IF NOT QUITE RIGHT NOOK, DCA TEMP1 /STASH CORRECTED ADDRESS JMP I TEMP1 /GO TO THE ROUTINE TO DO IT BADNO, NL4000 /SET "NO" VALUE TAD I TEMP1 /ADD ON (TRUNCATED) BRANCH ADDRESS SPA /SKIP IF "NO" WAS NOT ALLOWED JMP NOOK /JUMP IF "NO" WAS NOT USED (BUT ALLOWED) JMS MESSAGE /TELL THEM NONOMSG /THEY CAN'T SAY NO JMPIL76,JMP I L7600/[SBOOT] /GOODBYE! BADTST, TAD ANYSW /DID WE GET ANYTHING? SZA CLA /SKIP IF SO JMP BADCOMMAND /ELSE FORGET IT TAD SUBOSW /GET SUB-OPTION SWITCH SNA /SKIP IF ANY SUB-OPTIONS RECENTLY JMS I GETHAF/[XGETHAF] /ELSE GET THE LATEST CHARACTER SNA CLA /SKIP IF NOT OR SUB-OPTIONS SEEN JMP I L7600/[SBOOT] /ELSE JUST EXIT JMP BADCOMMAND /COMPLAIN THERE / COMES HERE TO POTENTIALLY SCAN OFF ANOTHER OPTION OR SUB-OPTION. SETMORE,JMS I GETHAF/[XGETHAF] /GET THE CURRENT CHARACTER SNA /? JMP I L7600/[SBOOT] /YES, EXIT ISZ GETNDX /NO, BUMP TO NEXT TAD (-";!200) /COMPARE TO ";" SNA /SKIP IF OTHER JMP SETAGN /ELSE GO SCAN OFF ANOTHER OPTION TAD (-",+";) /COMPARE TO "," SNA /SKIP IF OTHER JMP SETNXT /GO SCAN OFF ANOTHER SUB-OPTION TAD (-" +";) /COMPARE TO SZA /SKIP IF IT MATCHES IAC /TAD (-37+" -200) /ELSE COMPARE TO SNA CLA /SKIP IF NEITHER JMP SETMORE /ELSE IGNORE AND KEEP GOING BADCOMM,JMS MESSAGE /TELL THEM BADMSG /THEY GOOFED JMP I L7600/[SBOOT] /GOODBYE! NONOMSG,TEXT '"NO" INVALID HERE!';0 PAGE / OPTION PRINT ROUTINE; COMES HERE IF /A SWITCH SET. PRTOPT, JMS I PR6BIT/[XPR6BIT]/START ON A NEW LINE TAD I PRTPTR /GET A PAIR SNA CLA /END OF OPTIONS? JMP I L7600/[SBOOT] /YES, WE'RE DONE JMS I NAMPRT/[XPRTNAM]/NO, PRINT OUT PRTPTR, TABLE /THIS OPTION ISZ PRTPTR /BUMP TO ISZ PRTPTR /SUB-OPTION ISZ PRTPTR /POINTER TAD I PRTPTR /GET SUB-OPTION POINTER DCA PRNPTR /SAVE IT ISZ PRTPTR /BUMP POINTER TAD I PRTPTR /GET THE DISPATCH ADDRESS DCA DSPCHPTR /STASH IT ISZ PRTPTR /BUMP TO NEXT ENTRY JMP PRNSET /CONTINUE THERE PRLOOP, JMS I NAMPRT/[XPRTNAM]/PRINT OUT PRNPTR, .-. /THIS SUB-OPTION TAD I DSPCHPTR /GET DISPATCH ADDRESS SPA CLA /SKIP IF NO ALLOWED JMP PRNOSTAR /JUMP IF NOT TAD ("*&77) /GET AN "*" JMS I PR6BIT/[XPR6BIT]/PRINT IT DSPCHPT,.-. /THIS NEVER EXECUTES! PRNOSTA,ISZ PRNPTR /BUMP POINTER ISZ PRNPTR /TO NEXT ISZ PRNPTR /SUB-OPTION ISZ DSPCHPTR /BUMP DISPATCH ADDRESS POINTER TAD I PRNPTR /GET NEXT PAIR SNA CLA /END OF SUB-OPTION LIST? JMP PRTOPT /YES, GO ON TO NEXT OPTION ISZ PRTMP /DONE ENOUGH? JMP PRNTOK /JUMP IF NOT JMS I PR6BIT/[XPR6BIT]/DO PRNSET, TAD (-5) /RESET DCA PRTMP /COUNT JMS PRTAB /PRINT A PRNTOK, JMS PRTAB /THIS MAY INDENT JMP PRLOOP /CONTINUE PRTAB, .-. /PRINT A ROUTINE TAD L37/[37] /GET A JMS I PR6BIT/[XPR6BIT]/PRINT IT PRTMP, -6 /SUB-OPTION COUNTER; THIS IS ALWAYS SKIPPED JMP I PRTAB /RETURN BLKZAP, .-. /ZAP A BLOCK ROUTINE TAD I BLKZAP /GET COUNT FOR THIS BLOCK SNA /DONE? JMP I (SETMORE) /YEP, THEN ON WITH IT DCA ZAPCNT /ELSE SAVE FOR COUNTING ISZ BLKZAP /BUMP ARGUMENT POINTER TAD I BLKZAP /GET STARTING ADDRESS JMS ADJUST /ADJUST TO BLOCK NUMBER DCA INBLK /AND STORE INTO CALL JMS I PBUTIO/[BUTIO] /\ ZAPBUFFER / \READ IN BLOCK 1^100 / /TO BE ZAPPED INBLK, .-. // TAD I BLKZAP /GET THE LOCATION ISZ BLKZAP /BUMP TO REPLACEMENT POINTER AND (177) /MASK TO RELATIVE LOCATION TAD (ZAPBUFFER-1) /ADD ON BASE POINTER DCA XR2 /STORE INTO AUTO-INDEX NL7777 /BACKUP TAD I BLKZAP /NOW HAVE AUTO-INDEXED REPLACEMENT POINTER DCA XR1 /STORE INTO AUTO-INDEX ZAPMORE,TAD I XR1 /GET A REPLACEMENT VALUE DCA I XR2 /ZAP IT IN ISZ ZAPCNT /DONE ALL YET? JMP ZAPMORE /NO, KEEP GOING TAD INBLK /GET THE BLOCK WE READ FROM DCA OUTBLK /AND WRITE ONTO IT JMSIPBU,JMS I PBUTIO/[BUTIO] /CALL I/O ROUTINES ZAPBUFFER /SAME BUFFER 1^100+WRITE /ONE AT A TIME OUTBLK, .-. /FILLED IN ISZ BLKZAP /POINT TO NEXT GROUP JMP BLKZAP+1 /AND RESUME PROCESSING ZAPONE, .-. /ZAP A SINGLE LOCATION ROUTINE TAD I ZAPONE /GET THE LOCATION DCA ZAPLOC /AND SAVE IN CALL ISZ ZAPONE /BUMP POINTER TAD I ZAPONE /GET THE VALUE DCA GETOCT /AND STORE INTO CALL JMS BLKZAP /ZAP THE BLOCK -1 /ONE LOCATION ZAPLOC, .-. /HERE GETOCT /POINTS TO REPLACEMENT 0 /TERMINATOR ADJUST, .-. /ADDRESS ADJUST TO BLOCK NUMBER CLL RTL;RTL;RTL /DIVIDE BY 200 IAC /+1 FOR BLOCK NUMBER AND (17) /REDUCE TO BLOCK NUMBER JMP I ADJUST /RETURN ZAPCNT, .-. /COUNT OF ZAPS IN THIS BLOCK GETOCT, .-. /SCAN OCTAL ARGUMENT ROUTINE JMS I GETHAF/[XGETHAF]/GET DELIMITER TAD (-"=!200) /IS IT EQUALS? SZA CLA /SKIP IF YES JMP I (BADCOMMAND) /BARF IF NOT ISZ GETNDX /BUMP TO NEXT JMS I LINENO/[XLINENO]/GET ARGUMENT JMP I (BADCOMMAND) /BARF IF BAD JMP I GETOCT /RETURN BDPSMSG,TEXT "INVALID PASS WORD!";0 PAGE STRNZAP,.-. /STRING ZAP ROUTINE TAD I STRNZAP /GET STRING LENGTH DCA STRNCNT /STASH IT ISZ STRNZAP /BUMP TO POINTER TAD I STRNZAP /GET THE STRING POINTER DCA SBZPTR /STASH IT TAD PNEWSTR/(NEWSTRING) /GET REPLACEMENT STRING POINTER DCA PUTBASE /SETUP OUTPUT BASE DCA PUTNDX /CLEAR INDEX NL7777 /ADD ONE EXTRA TAD STRNCNT /NO HAVE CORRECTED COUNT STL RAR /TURN INTO WORD COUNT DCA SBZCNT /STORE IN ZAP CALL TAD L40/[" &77] /GET AN INITIAL STRLUP, JMS I PUTHAF/[XPUTHAF] /OUTPUT THE CHARACTER INTO THE STRING ISZ PUTNDX /BUMP TO NEXT JMS I GETHAF/[XGETHAF] /GET NEXT CHARACTER SZA /SKIP IF TAD (-";!200) /ELSE COMPARE TO ";" SZA /SKIP IF EITHER TAD (-",+";) /ELSE COMPARE TO "," SNA CLA /SKIP IF NONE OF THEM JMP STREND /JUMP IF ANY DELIMITER JMS I GETHAF/[XGETHAF] /GET THE CHARACTER ISZ GETNDX /BUMP TO NEXT TAD (-""!200) /COMPARE TO '"' SNA /SKIP IF OTHER NL7776/TAD (" -"") /CONVERT TO TAD (""&77) /RESTORE THE CHARACTER ISZ STRNCNT /TOO MANY? JMP STRLUP /NO, KEEP GOING JMP I (BADCOMMAND) /COMPLAIN IF TOO MANY CHARACTERS STREND, JMS I PUTHAF/[XPUTHAF] /DELIMIT THE STRING JMS I (BLKZAP) /CALL MULTIPLE ZAP ROUTINE SBZCNT, .-. /WILL BE -(STRING COUNT IN WORDS) SBZPTR, .-. /WILL POINT TO STRING IN THE MONITOR PNEWSTR,NEWSTRING /WHERE REPLACEMENT STRING IS 0 /THIS ENDS THE LIST STRNCNT,.-. /STRING COUNTER NEWSTRI,ZBLOCK 6 /REPLACEMENT STRING STORAGE PASONE, .-. /PASS WORD-ORIENTED SINGLE ZAP ROUTINE JMS PASCHK /CHECK FOR VALID PASS WORD TAD PASONE /GET OUR CALLER DCA I (ZAPONE) /MAKE IT THEIRS JMP I (ZAPONE+1) /CONTINUE THERE PASCHK, .-. /PASS WORD CHECK ROUTINE JMS I GETHAF/[XGETHAF] /GET LATEST CHARACTER TAD (-":!200) /COMPARE TO ":" SZA CLA /SKIP IF IT MATCHES JMP PASSBAD /ELSE FORGET IT ISZ GETNDX /BUMP TO NEXT JMS I NAME/[XNAME] /TRY TO FIND A NAME JMP PASSBAD /FORGET IT TAD L3/[3] /GET SUITABLE BUMP FACTOR DCA TCNT1 /STASH IT TAD (PASSWD) /POINT TO MASTER PASS WORD JMS I LOOKUP/[XLOOKUP] /TRY TO LOOKUP THE PASS WORD CLA /THROW OFFSET AWAY JMP I PASCHK /RETURN SINCE IT'S OK PASSBAD,JMS MESSAGE /TELL THEM BDPSMSG /THEY BLEW IT JMP I L7600/[SBOOT] /GOODBYE! RUBTCHK,.-. /RUBOUT TOSS CHECK ROUTINE TAD I RUBTCHK /GET REPLACEMENT POINTER DCA XR1 /STASH IT ISZ RUBTCHK /BUMP PAST ARGUMENT TAD (RCHLP2+10&177+ZAPBUF-1)/POINT AT DCA XR2 /REPLACEMENT ADDRESS JMS I PBUTIO/[BUTIO] /CALL I/O ROUTINES ZAPBUF /READ IN RUBOUT BLOCK 1^100 /INTO BUFFER BACKSP%200&17+1 /FOR EXAMINATION TAD I (RCHLP2+4&177+ZAPBUF) /GET SPECIFIC LOCATION CIA /INVERT FOR TEST TAD (JMS I INPUT) /COMPARE TO POSSIBLE VALUE SZA CLA /SKIP IF IT MATCHES JMP I RUBTCHK /ELSE JUST RETURN TAD (-4) /SETUP THE DCA PASCHK /REPLACEMENT COUNTER TAD I XR1 /GET A REPLACEMENT VALUE DCA I XR2 /ZAP IT IN ISZ PASCHK /DONE ALL YET? JMP .-3 /NO, KEEP GOING JMS I PBUTIO/[BUTIO] /CALL I/O ROUTINES ZAPBUF /WRITE THE UPDATED BLOCK BACK 1^100+WRITE /TO EFFECT CHANGE BACKSP%200&17+1 /BLOCK NUMBER JMP I RUBTCHK /RETURN BADMSG, TEXT "INVALID COMMAND!";0 NOHMSG, TEXT "CAN'T ALTER SYSTEM!" PAGE / MASTER "SET" TABLE. TABLE, TEXT "DOLLAR";DOLLST;DOLSET /SET DOLLAR LIST TEXT "ECHO";0;ECHLST;ECHSET /SET ECHO LIST TEXT "ESCAPE";ESCLST;ESCSET /SET ESCAPE LIST TEXT "FLNAME";FLNLST;FLNSET /SET FLNAME LIST TEXT "LNFEED";LNFLST;LNFSET /SET LNFEED LIST TEXT "NULL";0;NULLST;NULSET /SET NULL LIST TEXT "PASS";0;PASLST;PASSET /SET PASS LIST TEXT "PROMPT";PROLST;PROSET /SET PROMPT LIST TEXT "RADIX"; RADLST;RADSET /SET RADIX LIST TEXT "RUBOUT";RUBLST;RUBSET /SET RUBOUT LIST TEXT "SYSTEM";SYSLST;SYSSET /SET SYSTEM LIST TEXT "TAB";0; TABLST;TABSET /SET TAB LIST TEXT "^U";0;0;CTULST;CTUSET /SET ^U LIST TEXT "^Z";0;0;CTZLST;CTZSET /SET ^Z LIST 0 /THIS ENDS THE LIST / PASS WORD. PASSWD, TEXT "MARIO" /PASS WORD STORED HERE TEXT "CJL";0 /AUTHOR'S RESERVED PASS WORD 0 /THIS ENDS THE LIST / SET DOLLAR LIST. DOLLST, TEXT "FETCH" /SET DOLLAR [NO] FETCH TEXT "WRITE" /SET DOLLAR [NO] WRITE 0 /THIS ENDS THE LIST / SET ECHO LIST. ECHLST, TEXT "FLIP";0 /SET ECHO [NO] FLIP TEXT "OFF";0 /SET ECHO OFF TEXT "ON";0;0 /SET ECHO ON 0 /THIS ENDS THE LIST / SET ESCAPE LIST. ESCLST, TEXT "CHAR";0 /SET ESCAPE CHAR=XXXX TEXT "CODE";0 /SET ESCAPE CODE=XXXX TEXT "RETURN" /SET ESCAPE RETURN TEXT "TOPS10" /SET ESCAPE TOPS10 0 /THIS ENDS THE LIST / SET FLNAME LIST. FLNLST, TEXT "ENTRY" /SET FLNAME [NO] ENTRY 0 /THIS ENDS THE LIST / SET LNFEED LIST. LNFLST, TEXT "ECHO";0 /SET LNFEED ECHO TEXT "IGNORE" /SET LNFEED IGNORE TEXT "RETURN" /SET LNFEED RETURN TEXT "VIEW";0 /SET LNFEED VIEW 0 /THIS ENDS THE LIST / SET NULL LIST. NULLST, TEXT "ERASE" /SET NULL [NO] ERASE 0 /THIS ENDS THE LIST / SET PASS LIST. PASLST, TEXT "WORD";0 /SET PASS WORD:XXXXXX:YYYYYY 0 /THIS ENDS THE LIST / SET PROMPT LIST. PROLST, TEXT "CHAR";0 /SET PROMPT CHAR=XXXX TEXT "UNIT";0 /SET PROMPT [NO] UNIT 0 /THIS ENDS THE LIST / SET RADIX LIST. RADLST, TEXT "EIGHT" /SET RADIX EIGHT TEXT "TEN";0 /SET RADIX TEN 0 /THIS ENDS THE LIST / SET RUBOUT LIST. RUBLST, TEXT "BACKUP" /SET RUBOUT BACKUP TEXT "CHAR";0 /SET RUBOUT CHAR=XXXX TEXT "ECHO";0 /SET RUBOUT ECHO TEXT "LIMIT" /SET RUBOUT LIMIT=XXXX TEXT "NORMAL" /SET RUBOUT NORMAL TEXT "TOPS10" /SET RUBOUT TOPS10 TEXT "TOSS";0 /SET RUBOUT [NO] TOSS TEXT "VT05";0 /SET RUBOUT VT05 TEXT "VT100" /SET RUBOUT VT100 TEXT "VT52";0 /SET RUBOUT VT52 0 /THIS ENDS THE LIST / SET SYSTEM LIST. SYSLST, TEXT "HALT";0 /SET SYSTEM HALT TEXT "RETRY" /SET SYSTEM RETRY TEXT "UNITS" /SET SYSTEM [NO] UNITS 0 /THIS ENDS THE LIST / SET TAB LIST. TABLST, TEXT "CODE";0 /SET TAB CODE=XXXX TEXT "EXPAND" /SET TAB EXPAND TEXT "FILL";0 /SET TAB [NO] FILL TEXT "SINGLE" /SET TAB SINGLE 0 /THIS ENDS THE LIST / SET ^U LIST. CTULST, TEXT "STRING" /SET ^U STRING XXXXXXXXXX 0 /THIS ENDS THE LIST / SET ^Z LIST. CTZLST, TEXT "STRING" /SET ^Z STRING XXXXXXXX 0 /THIS ENDS THE LIST / DISPATCH LISTS. / SET DOLLAR LIST. DOLSET, RALFETCH&3777 /SET DOLLAR [NO] FETCH RALWRT&3777 /SET DOLLAR [NO] WRITE / SET ECHO LIST. ECHSET, ECHFLP&3777 /SET ECHO [NO] FLIP ECHOFF /SET ECHO OFF ECHON /SET ECHO ON / SET ESCAPE LIST. ESCSET, ESCHAR /SET ESCAPE CHAR=XXXX ESCODE /SET ESCAPE CODE=XXXX ESCRETURN /SET ESCAPE RETURN ESCTOPS10 /SET ESCAPE TOPS10 / SET FLNAME LIST. FLNSET, FLNENTRY&3777 /SET FLNAME [NO] ENTRY / SET LNFEED LIST. LNFSET, LNFECHO /SET LNFEED ECHO LNFIGNORE /SET LNFEED IGNORE LNFRETURN /SET LNFEED RETURN LNFVIEW /SET LNFEED VIEW / SET NULL LIST. NULSET, NULERASE&3777 /SET NULL [NO] ERASE / SET PASS LIST. PASSET, PASWRD /SET PASS WORD:XXXXXX:YYYYYY / SET PROMPT LIST. PROSET, PROCHAR /SET PROMPT CHAR=XXXX PROUNIT&3777 /SET PROMPT [NO] UNIT / SET RADIX LIST. RADSET, RADST8 /SET RADIX EIGHT RADST10 /SET RADIX TEN / SET RUBOUT LIST. RUBSET, RUBBACKUP /SET RUBOUT BACKUP RUBCHAR /SET RUBOUT CHAR=XXXX RUBECHO /SET RUBOUT ECHO RUBLIMIT /SET RUBOUT LIMIT=XXXX RUBNORMAL /SET RUBOUT NORMAL RUBTOPS10 /SET RUBOUT TOPS10 RUBTOSS&3777 /SET RUBOUT [NO] TOSS RBVT05 /SET RUBOUT VT05 RBVT100 /SET RUBOUT VT100 RBVT52 /SET RUBOUT VT52 / SET SYSTEM LIST. SYSSET, SYSHLT /SET SYSTEM HALT SYSRETRY /SET SYSTEM RETRY SYSUNITS&3777 /SET SYSTEM [NO] UNITS / SET TAB LIST. TABSET, TABCODE /SET TAB CODE=XXXX TABEXPAND /SET TAB EXPAND TABFILL&3777 /SET TAB [NO] FILL TABSINGLE /SET TAB SINGLE / SET ^U LIST. CTUSET, CTUSTRING /SET ^U STRING XXXXXXXXXX / SET ^Z LIST. CTZSET, CTZSTRING /SET ^Z STRING XXXXXXXX PAGE / SET DOLLAR CONTROLLERS. RALFET, TAD MESSAGE /GET "NO" INDICATOR SPA CLA /SKIP IF OFF JMP DNOFETCH /JUMP IF ON JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE NXTADR /CHANGE THIS LOAD+2 /TO THIS DNOFETC,JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE NXTADR /CHANGE THIS NEWBUF /TO THIS RALWRT, TAD MESSAGE /GET "NO" INDICATOR SPA CLA /SKIP IF OFF JMP DNOWRITE /JUMP IF ON JMS I (BLKZAP) /CALL ZAP ROUTINE -1 /FIRST COUNT R /MAKE IT JMSIPBUTIO /WRITE FIRST -1 /SECOND COUNT DOLLSW /SET THIS L1/(1) /WITH THIS 0 /THIS ENDS THE LISTS DNOWRIT,JMS I (BLKZAP) /CALL ZAP ROUTINE -1 /FIRST COUNT R /MAKE IT (R+4&177+JMPC) /JUMP AROUND CALL -1 /SECOND COUNT DOLLSW /CLEAR THIS L0/(0) /WITH THIS L0, 0 /THIS ENDS THE LISTS / SET ECHO CONTROLLERS. ECHFLP, TAD MESSAGE /GET "NO" INDICATOR SPA CLA /SKIP IF OFF JMP DNOFLIP /JUMP IF ON JMS I (PASONE) /CALL PASS WORD PROTECTED ZAP ROUTINE OFLIP /CHANGE THIS JMS I PCTRLPR/[CTRLPR]/TO THIS DNOFLIP,JMS I (PASONE) /CALL PASS WORD PROTECTED ZAP ROUTINE OFLIP /CHANGE THIS SKP /TO THIS ECHOFF, NL4000 /SET OFF VALUE ECHON, DCA ECHTMP /STORE EITHER WAY JMS I (PASONE) /CALL PASS WORD PROTECTED ZAP ROUTINE ECHOSW /CHANGE THIS ECHTMP, .-. /TO PASSED VALUE / SET ESCAPE CONTROLLERS. ESCHAR, JMS I (GETOCT) /GET OCTAL VALUE AND (177) /JUST ASCII BITS DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE RALTCH /CHANGE ESCAPE CHARACTER .-. /TO PASSED VALUE ESCODE, JMS I (GETOCT) /GET THE CHARACTER CODE CIA /INVERT IT FOR TABLE DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+4 /SET ENTRY .-. /TO PASSED VALUE ESCRET, JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+5 /CHANGE DISPATCH ADDRESS GOTCR /TO DISPATCH ADDRESS ESCTOPS,JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+5 /CHANGE DISPATCH ADDRESS GOTESC /TO TOPS10, ETC. ROUTINE ADDRESS / SET FLNAME CONTROLLER. FLNENTR,TAD MESSAGE /GET "NO" INDICATOR SMA CLA /SKIP IF "NO" TAD L40/[SZA-NOP-400] /ELSE MAKE IT SZA CLA TAD L7600/[CLA!400] /GET "CLA" PART EITHER WAY DCA .+3 /STORE IN-LINE JMS I (PASONE) /CALL PASS WORD PROTECTED ZAP ROUTINE TRYOLD+3 /CHANGE THIS .-. /TO PASSED VALUE / SET LNFEED CONTROLLERS. LNFECHO,JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+23 /CHANGE ENTRY LNFEED /TO ECHO AN CHARACTER LNFIGNO,JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+23 /CHANGE ENTRY CHLOOP /TO JUST THROW IT AWAY LNFRETU,JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+23 /CHANGE ENTRY GOTCR /TO ENTRY LNFVIEW,JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+23 /CHANGE ENTRY LFVIEW /TO NORMAL ADDRESS / SET NULL CONTROLLER. NULERAS,TAD MESSAGE /GET "NO" INDICATOR SMA CLA /SKIP IF SET TAD L40/[SNA-SKP] /ELSE ADD OFFSET FOR "SN" INSTRUCTION TAD (SKP) /GET BASIC SKIP VALUE DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE NEWLINE+4 /CHANGE THIS .-. /TO PASSED VALUE / SET PASS CONTROLLER. PASWRD, JMS I (PASCHK) /CHECK FOR CURRENT PASS WORD JMS I GETHAF/[XGETHAF]/GET DELIMITER TAD (-":!200) /COMPARE TO ":" PSYSIO, SZA CLA /BETTER MATCH JMP I (PASSBAD) /ELSE COMPLAIN ISZ GETNDX /BUMP PAST ":" JMS I NAME/[XNAME] /TRY TO FIND NEW PASS WORD JMP I (BADCOMMAND) /FORGET IT TAD I (SFUN) /GET OUR LOAD FUNCTION AND L7/[7] /JUST UNIT BITS TAD (1^100+WRITE) /FORM WRITE FUNCTION DCA PASFUN /STORE IN-LINE TAD I (SBLOCK) /GET OUR LOAD BLOCK TAD (PASSWD-SET%200)/ADD ON PAGE OFFSET TO PASS WORD STORAGE DCA PASBLK /STORE IN-LINE NL7775 /FORM MOVE COUNT JMS I PMOVE/[MOVE] /CALL MOVE ROUTINE TEMP1 /MOVE NEW NAME PASSWD /TO PASS WORD AREA JMS I PSYSIO/(SYSIO) /CALL I/O ROUTINES PASSWD&7600 /WRITE OUT PAGE WHERE PASS WORD IS PASFUN, 1^100+WRITE+.-. /UNIT BITS WILL BE FILLED IN PASBLK, .-. /BLOCK NUMBER WILL BE FILLED IN JMP I (SETMORE) /KEEP GOING PAGE / SET PROMPT CONTROLLERS. PROCHAR,JMS I (GETOCT) /GET THE VALUE AND (177) /JUST ASCII BITS DCA PROCARG /SAVE IT NL4000 /SET MASK AND PROMPT /GET CURRENT PROMPT FLAG TAD PROCARG /ADD ON NEW PROMPT VALUE DCA PROMPT /STORE IN MEMORY TAD PROMPT /GET IT BACK DCA PROCARG /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE PROMPT /CHANGE THIS PROCARG,.-. /TO PASSED VALUE PROUNIT,TAD MESSAGE /GET "NO" INDICATOR SPA CLA /SKIP IF OFF JMP DNOPRUNIT /JUMP IF ON TAD PROMPT /GET PROMPT CHARACTER CLL RAL /MOVE UP STL RAR /MOVE DOWN WITH FLAG SET DCA PROMPT /STORE BACK JMS I (BLKZAP) /CALL MULTIPLE ZAP ROUTINE -1 /FIRST COUNT NOUNPRM /CHANGE THIS (JMS I PRINT/[XPRINT]) /TO THIS -1 /SECOND COUNT NOEPUNIT /CHANGE THIS (JMS I PRINT/[XPRINT]) /TO THIS -1 /THIRD COUNT PROMPT /CHANGE THIS PROMPT /TO THIS -1 /FOURTH COUNT PRMPCNT /CHANGE THIS (NL0002) /TO THIS 0 /THIS ENDS THE LIST DNOPRUN,NL3777 /SET MASK AND PROMPT /REMOVE FLAG BIT DCA PROMPT /STORE BACK JMS I (BLKZAP) /CALL MULTIPLE ZAP ROUTINE -1 /FIRST COUNT NOUNPRM /CHANGE THIS (CLA) /TO THIS -1 /SECOND COUNT NOEPUNIT /CHANGE THIS (CLA) /TO THIS -1 /THIRD COUNT PROMPT /CHANGE THIS PROMPT /TO THIS -1 /FOURTH COUNT PRMPCNT /CHANGE THIS (NL0001) /TO THIS 0 /THIS ENDS THE LIST / SET RADIX CONTROLLERS. RADST10,NL7776 /SETUP DECIMAL OFFSET RADST8, TAD L7770/[-10] /NOW HAVE -RADIX DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE RADXSW /ZAP THIS .-. /TO PASSED VALUE / SET RUBOUT CONTROLLERS. RUBBACK,TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION DCA I (PZAP1+RBAK-BACKSP) /PREVENT PRINTING THE FIRST CHARACTER TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION DCA I (PZAP2+RBAK-BACKSP) /PREVENT PRINTING THE SECOND CHARACTER TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION DCA I (PZAP3+RBAK-BACKSP) /PREVENT PRINTING THE THIRD CHARACTER NL4000 /SETUP LARGE LIMIT RUBCOMM,DCA I (CLIMIT+RBAK-BACKSP) /PREVENT SPECIAL LIMIT HANDLING TAD PROMPT /GET CURRENT PROMPT CHARACTER VALUE SPA CLA /SKIP IF SINGLE PROMPT TAD (NL0002-NL0001) /ELSE USE TWO TAD (NL0001) /USE AT LEAST ONE DCA I (PRMPCNT+RBAK-BACKSP) /STORE CURRENT VALUE JMS I (BLKZAP) /CALL MULTIPLE ZAP ROUTINE BACKSP-RBAKEND /FIRST COUNT BACKSP /ZAP INTO HERE RBAK /FROM HERE -1 /SECOND COUNT CHTBL+1 /ZAP INTO HERE (BACKSP) /THIS VALUE 0 /THIS ENDS THE LIST RUBCHAR,JMS I (GETOCT) /GET THE VALUE AND (177) /MAKE IT ASCII DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE RDELIM /CHANGE DELIMITER .-. /TO THIS RUBECHO,TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION DCA I (RZP1+RTPS-RDELIM) /STORE IN THE CODE TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION JMP I (RUBECENTRY) /CONTINUE THERE RUBLIMI,JMS I (GETOCT) /GET THE VALUE CIA /INVERT IT DCA I (CLIMIT+RBAK-BACKSP) /STORE IN CODE TAD I (CLIMIT+RBAK-BACKSP) /GET IT BACK DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CLIMIT /SET THIS .-. /TO THIS RUBNORM,JMS I (BLKZAP) /CALL MULTIPLE ZAP ROUTINE RDELIM-RNRMEND /FIRST COUNT RDELIM /ZAP INTO HERE RNRM /FROM HERE -1 /SECOND COUNT CHTBL+1 /ZAP INTO HERE (BACKSP) /THIS VALUE 0 /THIS ENDS THE LIST PAGE / ADDITIONAL SET RUBOUT CONTROLLERS. RUBTOPS,TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION DCA I (RZP1+RTPS-RDELIM) /STORE IN THE CODE TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION RUBECEN,DCA I (RZP2+RTPS-RDELIM) /STORE IN THE CODE JMS I (BLKZAP) /CALL MULTIPLE ZAP ROUTINE RDELIM-RTPSEND /FIRST COUNT RDELIM /ZAP INTO HERE RTPS /FROM HERE -1 /SECOND COUNT CHTBL+1 /ZAP INTO HERE (BACKSP) /THIS VALUE 0 /THIS ENDS THE LIST RUBTOSS,TAD MESSAGE /GET "NO" INDICATOR SPA CLA /SKIP IF OFF JMP DRNIGNORE /JUMP IF ON JMS I (RUBTCHK) /CHECK IF SPECIAL HANDLING RIGCODE-1 /POINTER TO REPLACEMENT CODE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+1 /CHANGE ENTRY FOR CHARACTER CHLOOP /TO THIS DRNIGNO,JMS I (RUBTCHK) /CHECK IF SPECIAL HANDLING RNIGCODE+RTPS-RDELIM-1 /POINTER TO REPLACEMENT CODE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+1 /CHANGE ENTRY FOR CHARACTER BACKSP /TO THIS RBVT05, TAD (36) /GET CHARACTER DCA I (RCHAR1+RBAK-BACKSP) /USE AS FIRST PRINTING CHARACTER TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION DCA I (PZAP1+RBAK-BACKSP) /ENABLE FIRST CHARACTER PRINTING TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION DCA I (PZAP2+RBAK-BACKSP) /PREVENT PRINTING SECOND CHARACTER TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION DCA I (PZAP3+RBAK-BACKSP) /PREVENT PRINTING THIRD CHARACTER TAD (-100) /GET VT05 COLUMN LIMIT JMP I (RUBCOMMON) /CONTINUE THERE RBVT100,TAD (33) /GET CODE DCA I (RCHAR1+RBAK-BACKSP) /USE AS FIRST CHARACTER TAD ("[&177) /GET "[" DCA I (RCHAR2+RBAK-BACKSP) /USE AS SECOND CHARACTER TAD ("K&177) /GET "K" DCA I (RCHAR3+RBAK-BACKSP) /USE AS THIRD CHARACTER TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION DCA I (PZAP1+RBAK-BACKSP) /ENABLE PRINTING OF FIRST CHARACTER TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION DCA I (PZAP2+RBAK-BACKSP) /ENABLE PRINTING OF SECOND CHARACTER TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION DCA I (PZAP3+RBAK-BACKSP) /ENABLE PRINTING OF THIRD CHARACTER TAD (-110) /GET COLUMN LIMIT JMP I (RUBCOMMON) /CONTINUE THERE RBVT52, TAD (33) /GET CODE DCA I (RCHAR1+RBAK-BACKSP) /USE AS FIRST CHARACTER TAD ("K&177) /GET "K" DCA I (RCHAR2+RBAK-BACKSP) /USE AS SECOND CHARACTER TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION DCA I (PZAP1+RBAK-BACKSP) /ENABLE PRINTING OF FIRST CHARACTER TAD (JMS I PRINT/[XPRINT]) /GET PRINTING INSTRUCTION DCA I (PZAP2+RBAK-BACKSP) /ENABLE PRINTING OF SECOND INSTRUCTION TAD L7600/[CLA!400] /GET CLEARING INSTRUCTION DCA I (PZAP3+RBAK-BACKSP) /PREVENT PRINTING THIRD CHARACTER TAD (-110) /GET COLUMN LIMIT JMP I (RUBCOMMON) /CONTINUE THERE / SET SYSTEM CONTROLLERS. SYSRET, NL7777 /INDICATE RETRY SYSHLT, TAD (HLT) /NOW HAVE ZAP VALUE DCA SZAPVALUE /SAVE IT TAD (7612-7747) /SETUP THE DCA SRCHCNT /SEARCH COUNT TAD (7746-SBOOT+ZAPBUFFER) /SETUP THE DCA SYSPTR /SEARCH POINTER JMS I PBUTIO/[BUTIO] /CALL I/O ROUTINES ZAPBUFFER /READ IN BLOCK 0000 1^100 /INTO THE BUFFER 0000 /TO SEARCH FOR ADDRESS SRCHLUP,TAD I SYSPTR /GET A TEST WORD TAD (-HLT) /COMPARE TO HALT INSTRUCTION SZA /SKIP IF IT MATCHES ALREADY IAC /TAD (-7401+HLT) /ELSE COMPARE TO OTHER POSSIBLE VALUE SNA CLA /SKIP IF NEITHER VALUE JMP SYSFND /JUMP IF IT MATCHES NL7777 /BACKUP TAD SYSPTR /SEARCH DCA SYSPTR /POINTER ISZ SRCHCNT /LOOKED AT ALL? JMP SRCHLUP /NO, KEEP GOING JMS MESSAGE /YES, TELL THEM NOHMSG /SOMETHING IS STRANGE JMP I L7600/[SBOOT] /EXIT QUICKLY SYSFND, TAD SYSPTR /GET THE POINTER TAD (SBOOT-ZAPBUFFER) /CHANGE TO ABSOLUTE ADDRESS DCA SYSPTR /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE SYSPTR, .-. /CHANGE THIS SZAPVAL,.-. /TO THIS SYSUNIT,TAD MESSAGE /GET "NO" INDICATOR SPA CLA /SKIP IF OFF JMP DSUNIOFF /JUMP IF SET JMS I (PASONE) /CALL PASS WORD PROTECTED ZAP ROUTINE XTUNIT+10 /CHANGE THIS STL /TO THIS DSUNIOF,JMS I (PASONE) /CALL PASS WORD PROTECTED ZAP ROUTINE XTUNIT+10 /CHANGE THIS CLA CLL /TO THIS SRCHCNT,.-. /SEARCH COUNTER PAGE / SET TAB CONTROLLERS. TABCODE,JMS I (GETOCT) /GET THE VALUE CIA /INVERT FOR TABLE DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE CHTBL+24 /CHANGE ENTRY .-. /TO PASSED VALUE TABFILL,NL4000 /SET MASK AND MESSAGE /NOW HAVE ESSENCE OF "NO" INDICATOR STL RAR /MOVE OVER WITH HIGH-ORDER BIT SET SKP /DON'T USE SINGLE SPACE VALUE TABSING,NL2000 /SET SINGLE SPACE VALUE TABEXPA,DCA .+3 /STORE IN-LINE JMS I (ZAPONE) /CALL SINGLE ZAP ROUTINE TABSW /CHANGE THIS .-. /TO PASSED VALUE / SET ^U CONTROLLER. CTUSTRI,JMS I (STRNZAP) /CALL STRING ZAP ROUTINE -12-1 /LENGTH UPU2MSG /POINTER / SET ^Z CONTROLLER. CTZSTRI,JMS I (STRNZAP) /CALL STRING ZAP ROUTINE -10-1 /LENGTH ZP2MSG /POINTER L1, 1 /CONSTANT 0001 PAGE / IMAGE OF RUBOUT HANDLING CODE FOR SET RUBOUT TOPS10, SET RUBOUT ECHO. RTPS, RELOC RDELIM /WHERE THIS LOADS RDELIM, "\&177 /DEFAULT DELIMITER IFNZRO .-RDELIM-1 BACKSP, TAD GETNDX /\ DCA RTEMP2 / \SAVE GETHAF POINTERS TAD GETBASE / /FOR EDIT COMMAND DCA RTEMP3 // NL7777 /GET A MINUS 1 TAD PUTNDX /ADD PUT OFFSET VALUE SPA /AT ? JMP ROVFLO /YES, JUST RESTART LINE DCA GETNDX /ELSE SAVE COPY TAD BEGLINE/[INPBUF]/SET GETHAF BASE POINTER DCA GETBASE /TO BEGINNING OF LINE DCA RUBFLG /INDICATE NO LINE OVERFLOW YET TAD RDELIM /GET DELIMITER RZP1, JMS I PRINT/[XPRINT] /AND PRINT IT RAGN, NL7777 /GET A -1 TAD PUTNDX /OFF OF PUT OFFSET SPA /OVERFLOW? JMP RNOMOR /YES, CLOSE LINE AND START NEW ONE DCA PUTNDX /ELSE SAVE THE NEW VALUE PRMPCNT,NL0001/OR NL0002 /PROMPT COUNT INSTRUCTION FOR BACKUP MODES CLA /CLEAN UP TAD EDLIN /\ CIA / \ TAD PUTNDX / \ SMA CLA / >IF EDLIN>PUTNDX, EDLIN=PUTNDX JMP .+3 / / TAD PUTNDX / / DCA EDLIN // JMS I GETHAF/[XGETHAF]/GET RUBBED-OUT CHARACTER JMS I PR6BIT/[XPR6BIT]/ECHO IT ON TTY: RCHLP2, CHLOOP+2 /POINTER TO REJOINED CODE; THIS WILL BE SKIPPED NL7777 /LOAD AC WITH -1 TAD PUTNDX /ADD ON PUT OFFSET DCA GETNDX /AND SAVE IT FOR NEXT TIME JMS I INPUT /CAPTIVATE INPUT DCA TEMP1 /SAVE IT IN GOOD LOCATION TAD TEMP1 /GET WHAT HE TYPED TAD L7770/[-"H!300] /IS IT ? RNIGCOD,SZA /SKIP IF SO TAD PSCRSIZE/[-177+"H-300] /OR IS IT ? SZA /SKIP IF EITHER TAD L40/[-137+177] /OR IS IT UNDERSCORE? SNA CLA /SKIP IF NONE OF THEM JMP RAGN /JUMP IF ANY OF THEM REXIT, TAD RDELIM /GET DELIMITER RZP2, JMS I PRINT/[XPRINT] /AND PRINT IT TO ENCLOSE TAD RTEMP2 /\ DCA GETNDX / \RESTORE POINTERS TAD RTEMP3 / /FOR EDIT COMMAND DCA GETBASE // ISZ RUBFLG /ARE WE HERE DUE TO OVERFLOW? JMP I RCHLP2/(CHLOOP+2) /NO, RESUME CLEANLY JMP ROVFLO /YES, RESTART LINE RNOMOR, NL7777 /SET LINE OVERFLOW DCA RUBFLG /FOR ALL TO SEE JMP REXIT /AND LEAVE RTPSEND,RELOC /RESTORE ORIGIN / REPLACEMENT CODE FOR RUBOUT [NO] TOSS. RIGCODE,RELOC RCHLP2+10 /WHERE THIS EXECUTES SNA CLA /SKIP IF NOT JMP RAGN /JUMP IF TAD TEMP1 /GET THE CHARACTER AGAIN TAD PRELIO/[-137] /COMPARE TO UNDERSCORE RELOC /RESTORE ORIGIN / RUBOUT CODE FOR SET RUBOUT NORMAL. RNRM, RELOC RDELIM /WHERE THIS EXECUTES RDELIM, "\&177 /DEFAULT DELIMITER IFNZRO .-RDELIM-1 BACKSP, NL7777 /GET A MINUS 1 TAD PUTNDX /ADD PUT OFFSET VALUE SPA /AT ? JMP ROVFLO /YES, JUST RESTART LINE DCA PUTNDX /ELSE SAVE THE NEW VALUE TAD EDLIN /\ CIA / \ TAD PUTNDX / \ SMA CLA / >IF EDLIN>PUTNDX, EDLIN=PUTNDX JMP .+3 / / TAD PUTNDX / / DCA EDLIN // TAD RDELIM /GET THE FLAGGING CHARACTER JMS I PRINT /PRINT IT JMP I .+1/(CHLOOP) /GO BACK FOR MORE CHLOOP /THROUGH HERE ZBLOCK PRMPCNT-. /EMPTY SPACE PRMPCNT,NL0001/OR NL0002 /PROMPT COUNT INSTRUCTION FOR BACKUP MODES RNRMEND,RELOC /RESTORE ORIGIN / IMAGE OF CODE FOR SET RUBOUT BACKUP. RBAK, RELOC BACKSP /WHERE IT LOADS IFNZRO .-RDELIM-1 BACKSP, TAD GETNDX /GET INPUT INDEX DCA CHAR /SAVE FOR EDIT COMMAND TAD BEGLINE/[INPBUF]/SETUP POINTER DCA GETBASE /TO INPUT BUFFER NL7777 /BACKUP TAD PUTNDX /DO WE HAVE ANY TO TAKE BACK? SPA /SKIP IF SO JMP ROVFLO /ELSE FORGET IT DCA PUTNDX /STORE UPDATED VALUE TAD EDLIN /\ CIA / \ TAD PUTNDX / \ SMA CLA / >IF EDLIN>PUTNDX, EDLIN=PUTNDX JMP .+3 / / TAD PUTNDX / / DCA EDLIN // DCA GETNDX /CLEAR READ INDEX TAD SEQSW /GET SEQUENCE MODE SWITCH SNA CLA /SKIP IF SET PRMPCNT,NL0001/OR NL0002 /SET PROMPT COUNT DCA RTEMP1 /STORE INITIAL COLUMN COUNT TAD PUTNDX /GET NEW INDEX CMA /INVERT FOR COUNTING DCA RTEMP2 /STORE THE COUNTER JMP RBTEST /TEST FIRST IN CASE NONE TO DO RBTSTLP,JMS I GETHAF/[XGETHAF]/GET A CHARACTER TAD L7741/[-37] /COMPARE TO SNA CLA /SKIP IF OTHER JMP RUBTAB /JUMP IF RTABACK,ISZ RTEMP1 /COUNT THIS CHARACTER RBTST2, ISZ GETNDX /BUMP TO NEXT RBTEST, ISZ RTEMP2 /DONE YET? JMP RBTSTLP /NO, KEEP GOING TAD COLUMN /GET MONITOR'S COLUMN COUNT CIA /INVERT IT TAD RTEMP1 /ADD ON OURS DCA RTEMP2 /STORE DIFFERENCE FOR COUNTING RBAKLP, TAD L10/[10] /GET A JMS I PRINT/[XPRINT] /PRINT IT TAD L40/[" &177] /GET A JMS I PRINT/[XPRINT] /PRINT IT TAD L10/[10] /GET A JMS I PRINT/[XPRINT] /PRINT IT ISZ RTEMP2 /DONE? JMP RBAKLP /NO, KEEP GOING TAD RTEMP1 /GET CORRECTED COLUMN DCA COLUMN /RESTORE IT TAD COLUMN /GET CURRENT COLUMN TAD CLIMIT /COMPARE TO LIMIT SPA CLA /SKIP IF ABOVE LIMIT JMP I REEXIT/(EEXIT) /GO FIXUP AND RESTART TAD L15/[15] /GET A JMS I PRINT/[XPRINT] /PRINT IT TAD RCHAR1 /GET SECOND CHARACTER PZAP1, JMS I PRINT/[XPRINT] /PRINT IT TAD RCHAR2 /GET THIRD CHARACTER PZAP2, JMS I PRINT/[XPRINT] /PRINT IT TAD RCHAR3 /GET FOURTH CHARACTER PZAP3, JMS I PRINT/[XPRINT] /PRINT IT DCA COLUMN /CLEAR COLUMN JMP I .+1/(LFVIEW+1) /GO REPAINT IT THERE LFVIEW+1 /THROUGH HERE RUBTAB, TAD TABSW /GET SWITCH TAD RB6000/(-2000) /COMPARE TO SINGLE SPACE VALUE SNA CLA /SKIP IF IT IS DIFFERENT JMP RTABACK /JUMP IF SINGLE SPACE VALUE TAD RTEMP1 /GET THE COUNT TAD L10/[10] /GOTO NEXT STOP AND L7770/[7770] /JUST STOP BITS DCA RTEMP1 /STORE BACK JMP RBTST2 /KEEP GOING RB6000, 6000 /CONSTANT 6000 RCHAR1, 33 /THIS CHARACTER MAY BE PRINTED RCHAR2, "[&177 /THIS CHARACTER MAY BE PRINTED RCHAR3, "K&177 /THIS CHARACTER MAY BE PRINTED REEXIT, EEXIT /POINTER TO EEXIT / THE FOLLOWING LOCATIONS MUST BE PLACED AFTER ALL OTHER CODE. IFZERO RNOMOR+3-.&4000 CLIMIT, 4000 /COLUMN LIMIT RBAKEND,RELOC /RESTORE ORIGIN PAGE ZAPBUF= . /READ STUFF INTO HERE TO ZAP IT $ /THAT'S ALL FOLK!