/ PDP-8 COMMAND PROCESSOR / SPECIFICATION FOR PDP-8 KERMIT COMMAND PROCESSOR. / LAST EDIT: 27-OCT-1988 10:00:00 CJL / THIS IS THE SPECIFICATION FOR THE USER COMMAND INTERFACE FOR PDP-8 KERMIT-12, / ET AL. / THE FOLLOWING CHARACTER CONVENTIONS APPLY: / ALL CONTROL CHARACTERS OTHER THAN THOSE EXPLICITLY CALLED OUT ARE IGNORED. / ALL CHARACTERS FROM THROUGH TILDE ARE TO BE ECHOED LITERALLY AND / INSERTED INTO THE COMMAND BUFFER IN THEIR SEVEN-BIT FORM (040 THROUGH 176). / KEYWORD/COMMAND MATCHES REFER TO A CASE-LESS COMPARISON BETWEEN THE TOKEN IN / THE COMMAND BUFFER AND VARIOUS TABLE ENTRIES. AN EXACT MATCH EXISTS IF THE / TOKEN PERFECTLY COMPARES CHARACTER-FOR-CHARACTER WITH A CERTAIN TABLE ENTRY, / OR THE TOKEN MATCHES AND IS LONGER (EMBELLISHED BY THE USER FOR CLARITY). / SPECIAL CASES OF EXACT MATCH TO A SINGLE CHARACTER (WITHOUT EMBELLISHMENT) / WILL BE ALLOWED TO ACCOMMODATE COMMONLY USED COMMANDS ("S" FOR "SEND", "R" FOR / "RECEIVE", "C" FOR "CONNECT", ETC.). THESE MATCHES WILL ONLY BE ALLOWED IF / USER-DELIMITED; THE COMPLETION CHARACTER (DEFAULT IS ) WILL NOT ALLOW / THESE ABBREVIATIONS AS THEY GENERALLY ARE ANOMALOUS TO OTHER COMMANDS (SEE / DESCRIPTION BELOW). / SPECIAL CHARACTERS: / (015) / (AKA ENTER) CAUSES THE BUFFER TO BE DELIMITED WITH 000 FOR SCANNING / PURPOSES. THE COMMAND MUST BE COMPLETE AND ABLE TO BE FULLY PARSED ELSE AN / APPROPRIATE ERROR MESSAGE WILL BE ISSUED FOR THE FIRST OFFENDING COMMAND OR / KEYWORD IN ERROR. INCOMPLETE ITEMS MUST BE FREE OF ANOMALY WITH THE EXCEPTION / OF CERTAIN SPECIAL ABBREVIATIONS SUCH AS "S" FOR "SEND", "R" FOR "RECEIVE", / "C" FOR "CONNECT", ETC. THE COMMAND WILL BE EXECUTED IF ALL PARSING / REQUIREMENTS ARE MET AT THE END OF SCAN (WHEN THE DELIMITING 000 IS REACHED). / ECHOES AS , . / (012) / CAUSES , FOLLOWED BY REPRINTING THE PROMPT STRING AND CURRENT / BUFFER CONTENTS. THIS IS ESPECIALLY USEFUL IF HARD-COPY DELETE IS SET (SEE / BELOW). / (011) / CAUSES TO BE INSERTED INTO THE BUFFER AT THE CURRENT POSITION. TAB / SIMULATION WILL PRINT THE APPROPRIATE NUMBER OF SPACES TO ALIGN TO THE NEAREST / MULTIPLE OF EIGHT COLUMNS. FOR SCANNING PURPOSES, IS IDENTICAL TO / . N.B. FILESPEC-ORIENTED COMMANDS (SUCH AS "GET") WILL INTERPRET ALL / CHARACTERS TO THE RIGHT OF THE COMMAND AS THE FILESPEC; USE OF AND / MUST BE CAREFULLY OBSERVED, AS THESE CHARACTERS WILL BE PASSED LITERALLY / AS FILESPEC CHARACTERS. / (033 BY DEFAULT; COMPLETION CHARACTER CODE WHICH IS ADJUSTABLE BY USER) / CAUSES THE BUFFER TO BE DELIMITED WITH 000 FOR SCANNING PURPOSES. USE / OF INDICATES THE COMMAND IS "TENTATIVE" AND NOT TO BE EXECUTED EVEN IF / PARSED SUCCESSFULLY. ANY FURTHER ACTION TAKEN IS A FUNCTION OF THE EXACT / PARSING CONDITION AT THE END OF THE SCAN OR POINT OF ERROR. ASSUMING ALL / PRIOR ITEMS SCAN CORRECTLY, IF THE LATEST ITEM IS EITHER INCORRECT OR AN / ANOMALOUS ABBREVIATION, THE CHARACTER WILL BE ISSUED TO INDICATE AN / ERROR (ISSUING AT THIS TIME WOULD DEFINITELY CAUSE AN ERROR AND ATTENDANT / MESSAGE). THIS ASSUMES THE CURSOR IS STILL ON THE OFFENDING ITEM. IF A / DELIMITER CHARACTER HAD BEEN TYPED PAST AN INCORRECT OR ANOMALOUS ITEM PRIOR / TO THE CURRENT POSITION, AN APPROPRIATE ERROR MESSAGE ("" HAS NO / MEANING HERE) WILL BE ISSUED AS IF HAD BEEN USED TO DELIMIT THE BUFFER; / THE MESSAGE WILL BE ISSUED FOR THE FIRST COMMAND OR KEYWORD IN ERROR. / IF NO SCANNING ERRORS EXIST AND THE LATEST ITEM IS AN EXACT MATCH FOR A / KEYWORD OR COMMAND, A CHARACTER WILL BE PRINTED AND INSERTED INTO THE / BUFFER TO DELIMIT THE KEYWORD. THIS ALSO APPLIES TO KEYWORDS EMBELLISHED / BEYOND THE LIMITS OF EXACT MATCH IMPLIED BY THE COMMAND TABLES AND THE SPECIAL / ABBREVIATIONS MENTIONED ABOVE. INCOMPLETE (BUT NON-ANOMALOUS) ITEMS WILL BE / EMBELLISHED (PRINTED AND INSERTED INTO THE BUFFER) IN UPPER-CASE TO THE LIMIT / OF THE MATCHING TABLE ENTRY FOLLOWED BY A CHARACTER TO DELIMIT THE / KEYWORD AS ABOVE FOLLOWED BY A GUIDE-WORD PHRASE WHICH IS ALWAYS OF THE FORM / "(GUIDE-WORD PHRASE)" FOLLOWED BY A CHARACTER TO AID THE USER IN / UNDERSTANDING THE LATEST ITEM. THE INTERNAL CODING OF THE GUIDE-WORD / CHARACTERS (NOT INCLUDING THE LEADING AND TRAILING CHARACTERS) WILL / HAVE THE EIGHTH BIT ON TO IDENTIFY THE CHARACTERS AS GUIDE-WORD CHARACTERS TO / SIMPLIFY THE IMPLEMENTATION OF <^W> (SEE BELOW). / IN ALL CASES, USE OF WILL CAUSE NO FURTHER ECHOING OR OTHER ACTION. IT / IS INTENDED AS A MEANS OF ALLOWING THE USER A "TRIAL RUN" ON AN INCOMPLETE / COMMAND. THE BUFFER REMAINS INTACT AND THE CURSOR POSITIONED AT JUST PAST THE / LATEST CHARACTER TYPED IN PRIOR TO USE OF THE CHARACTER (OR AT THE / TRAILING OF ANY AUTOMATICALLY INSERTED TEXT IF APPLICABLE) TO ALLOW / SUBSEQUENT INPUT. IF ANY ERROR MESSAGES WERE ISSUED, , FOLLOWED BY / THE PROMPT STRING AND CURRENT BUFFER CONTENTS WILL BE PRINTED TO ALLOW FURTHER / EDITING (THE USER MUST DELETE ALL TEXT BACK TO THE POINT OF ERROR TO MAKE ANY / FORWARD PROGRESS). / ? (077) / ? (UNLESS DISABLED; SEE BELOW) PRINTS ? FOLLOWED BY AN ON-LINE MENU OF ALL / OPTIONS AVAILABLE TO THE USER AT THE POINT OF CURRENT SCAN. A PHRASE SUCH AS / "ONE OF THE FOLLOWING:" FOLLOWED BY , AND A TABULATED LIST OF OPTIONS / WILL BE PRINTED. IF TYPED AT THE PROMPT, A COMPLETE LIST OF ALL COMMANDS WILL / BE PRINTED. IF AN ERROR EXISTS PRIOR TO THE CURRENT POSITION, AN ERROR / MESSAGE WILL BE ISSUED FOLLOWED BY , AND THE PROMPT STRING AND / CURRENT BUFFER CONTENTS. THIS IS ESSENTIALLY IDENTICAL TO THE ACTION TAKEN IF / WERE TO BE USED AT THIS POINT. / (037) / TOGGLES OFF/ON THE SPECIAL FUNCTION OF ? (WHICH IS ON BY DEFAULT). WHEN / MENU MODE IS CANCELED, ? IS INSERTED INTO THE BUFFER AS AN ORDINARY / CHARACTER. THIS IS USEFUL WHEN ENTERING WILD-CARD FILESPECS. IS NOT / ECHOED AND CAUSES NO OTHER ACTION. / (177) / USE OF THE KEY CAUSES DELETION OF THE LATEST CHARACTER IN THE COMMAND / BUFFER ALONG WITH THE APPROPRIATE VISUALIZATION WHICH IS DEPENDENT ON WHETHER / HARD-COPY DELETE IS CURRENTLY IN EFFECT. SCREEN-ORIENTED SYSTEMS WILL ISSUE / TO VISUALLY DELETE THE PREVIOUS CHARACTER. IF THE PREVIOUS / CHARACTER IS , THIS WILL BE REPEATED AS NECESSARY UNTIL ALL / CHARACTERS USED TO SIMULATE TABS ARE REMOVED. HARD-COPY SYSTEMS WILL ISSUE / "\" FOLLOWED BY THE REMOVED CHARACTER WHEN FIRST USING THE KEY. / SUBSEQUENT KEY USAGE WILL MERELY ECHO THE REMOVED CHARACTER. IF THE / REMOVED CHARACTER IS , IT WILL USE THE APPROPRIATE TAB SIMULATION. TYPING / IN A CHARACTER TO BE INSERTED INTO THE BUFFER (OR ANY OTHER ACTION OTHER THAN / THE KEY) WILL PRINT A TRAILING "\" CHARACTER INDICATING THE CHARACTERS / DELETED AT THIS TIME ARE NOW DELIMITED BY "\" CHARACTERS. SUBSEQUENT ACTION / WILL BE THAT WHICH IS APPROPRIATE TO THE LATEST CHARACTER TYPED (SUCH AS / INSERTING THE LATEST PRINTING CHARACTER OR ACTING ON OR , ETC.) / WHICH ENDED THE DELETION MODE. / ATTEMPTS TO USE THE KEY WHEN THE BUFFER IS EMPTY WILL CAUSE A / CHARACTER TO BE ISSUED. IF HARD-COPY DELETE IS CURRENTLY IN EFFECT, THIS WILL / ALSO CAUSE PRINTING OF THE TRAILING "\" CHARACTER, AS IT ALSO ENDS THE / DELETION MODE. / DELETING THE GUIDE-WORD PHRASE CHARACTERS IS ALLOWED, BUT THE USER IS WARNED / THAT THE GUIDE-WORD PHRASE (IF PRESENT) MUST BE ACCURATE FOR THE CONTEXT IT / EXISTS IN. THUS THE GUIDE-WORD PHRASE MUST BE EITHER ENTIRELY REMOVED OR / RESTORED CORRECTLY IF DISTURBED. THE CHARACTERS OF THE GUIDE-WORD PHRASE / WHICH HAVE BECOME USER INPUT WILL LOSE SPECIAL CONSIDERATION TO <^W> IF THE / USER REPLACES AN EMBEDDED DELIMITER WITHIN THE GUIDE-WORD PHRASE (SEE BELOW). / (010) / THE KEY MAY BE USED AS AN ALTERNATE TO THE KEY AT ANY TIME. / <^U> (025) / THE <^U> KEY ECHOES "^U" , AND REPRINTS THE PROMPT STRING. ALL PRIOR / USER INPUT (IF ANY) IS CANCELED. / <^C> (003) / THE <^C> CHARACTER IS WIDELY USED TO ABORT PROGRAMS AND RETURN TO THE / OPERATING SYSTEM. TO PREVENT ACCIDENTAL USE OF THIS FUNCTION, <^C> FUNCTIONS / IDENTICALLY TO <^U> (OTHER THAN PRINTING "^C" , ). (THE EXIT (OR QUIT / OR LOGOUT) COMMAND MUST BE GIVEN EXPLICITLY TO RETURN TO THE OPERATING / SYSTEM.) <^C> IS USED IN OTHER KERMIT CONTEXTS TO CANCEL THE CURRENT FUNCTION / (SUCH AS TO ABORT SERVER MODE, ETC.). / <^P> (020) / <^P> IS USED IDENTICALLY TO <^U> (OTHER THAN PRINTING "^P" , ). / <^W> (027) / THE <^W> KEY DELETES ALL PRIOR PRINTING CHARACTERS BACK TO BUT NOT INCLUDING A / DELIMITER AFTER A PREVIOUS KEYWORD (IF ANY). IF THE CURRENT CURSOR POSITION / IS JUST AFTER A DELIMITER, THE DELIMITER IS DELETED FIRST. THUS IF THE LATEST / CURSOR POSITION IS PAST TWO ADJACENT DELIMITERS, ONLY THE LAST ONE WILL BE / DELETED. ALL DELETION RULES ARE EQUIVALENT TO MULTIPLE USAGE OF THE KEY / IN TERMS OF CHARACTER DISPOSITION OR ACTION. / UN-MODIFIED GUIDE-WORD PHRASES WILL BE DELETED COMPLETELY TO THE / CHARACTER WHICH WAS AUTOMATICALLY INSERTED IN FRONT OF THE GUIDE-WORD PHRASE / ORIGINALLY. N.B. USER-MODIFIED GUIDE-WORD PHRASES WILL DELETE ONLY TO THE / PREVIOUS USER-TYPED DELIMITER (USUALLY , BUT POSSIBLY IF THE USER / DISTORTED THE GUIDE-WORD PHRASE TEXT SUFFICIENTLY), AS THE REVERSE SCAN / TERMINATES ON A DELIMITER WITH THE EIGHTH BIT OFF. / <^R> (022) / THE <^R> KEY TRANSFERS ANY AND ALL OF CERTAIN CHARACTERS CREATED DURING THE / PREVIOUS COMMAND USAGE (WHICH WAS TERMINATED BY ) TO THE CURRENT TENTATIVE / COMMAND. THE CHARACTERS (IF ANY) THAT QUALIFY ARE THOSE IN THE PREVIOUS / COMMAND WHICH ARE TO THE RIGHT OF THE CURRENT CURSOR POSITION. THIS ALLOWS / THE CURRENT COMMAND TO BE "FLESHED-OUT" WITH THE RIGHT-MOST CHARACTERS OF THE / PREVIOUS COMMAND. IF A TYPING ERROR OCCURRED IN THE MIDDLE OF A COMMAND, THE / USER COULD USE <^R> TO REPEAT THE COMMAND, BACK-SPACE TO THE POINT OF ERROR, / CORRECT THE MISTAKE AND HIT <^R> TO REPEAT THE RIGHT-MOST CHARACTERS WHICH / WERE JUST DESTROYED BY THE BACK-SPACING OPERATION (IF APPLICABLE). THERE IS / NO RESTRICTION ON USING <^R> REPEATEDLY (AS NECESSARY). USING <^R> WHEN THE / COMMAND LINE IS EMPTY WILL REPEAT THE ENTIRE PREVIOUS COMMAND. THE COMMAND IS / NOT TERMINATED BY ANY USE OF <^R> (ALL COMMANDS ARE TENTATIVE UNTIL IS / USED); ALL CHARACTERS OBTAINED FROM THE PREVIOUS COMMAND WILL BE ECHOED. / USAGE OF <^R> WHICH CANNOT CHANGE THE CURRENT COMMAND (THE PREVIOUS COMMAND / WAS SHORTER THAN THE CURRENT CURSOR POSITION) WILL CAUSE THE CHARACTER / TO BE ISSUED. WHEN THE COMMAND IS TERMINATED WITH , THE CURRENT COMMAND / CONTENTS WILL BE TRANSFERRED TO A BUFFER FOR USE WITH <^R> ON SUBSEQUENT / COMMANDS. / <^O> (017) / <^O> TOGGLES THE ECHO FLIP-FLOP FOR ALL PRINTING CHARACTERS. ECHO IS USUALLY / ON AND WILL BE RESTORED AT THE START OF ANY COMMAND OR USE OF <^U> OR <^C> OR / <^P>. <^O> CAN BE USED AT ANY TIME TO STOP/START LONG PRINTOUT SUCH AS THE / COMPLETE MENU (USE OF ? AT THE PROMPT). / <^S> (023) AND <^Q> (021) / THESE CHARACTERS ARE RESERVED FOR THE / TERMINAL FLOW CONTROL WHICH / IS ALWAYS IN EFFECT FROM THE USER'S KEYBOARD IN COMMAND MODE. (THE VARIOUS / SET COMMANDS AFFECTING FLOW CONTROL FOR CONNECT MODE AND KERMIT FILE TRANSFER / DO NOT APPLY TO THE COMMAND PROCESSOR DISPOSITION OF FLOW CONTROL).