.SPACING 1 .PAPER SIZE 58,75 .LEFT MARGIN 5 .RIGHT MARGIN 70 .TITLE ^^#####RSTS/E TECO\\ ** .BREAK ** .BLANK 15 .CENTER 80 ^^TECO\\ .SKIP 2 .CENTER 80 ^^TEXT EDITOR AND CORRECTOR FOR RSTS/E\\ .SKIP 2 .CENTER 80 ^^USER'S MANUAL\\ .BLANK 25 2 ^MAY 1975 .PAGE ^THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ^DIGITAL ^EQUIPMENT ^CORPORATION. ^DIGITAL ^EQUIPMENT ^CORPORATION ASSUMES NO RESPONSIBILITY FOR ERRORS THAT MAY APPEAR IN THIS MANUAL. .BLANK 1 ^THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION OF ^^DIGITAL\\'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY ^^DIGITAL\\. .BLANK 1 ^DIGITAL ^EQUIPMENT ^CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY ^^DIGITAL\\. .BLANK 3 .CENTER 80 ^COPYRIGHT (^C) 1975, ^DIGITAL ^EQUIPMENT ^CORPORATION .PAGE .TAB STOPS 60 .NOFILL .CENTER 80 ^^TABLE OF CONTENTS\\ .SKIP 2 ^INTRODUCTION 4 .SKIP 1 ^CHAPTER 1: ^INTRODUCTORY ^COMMANDS 5 .SKIP 1 .LEFT MARGIN 10 1.0 ^FUNDAMENTALS 5 1.1 ^FILE ^SELECTION ^COMMANDS 7 1.2 ^INPUT AND ^OUTPUT ^COMMANDS 10 1.3 ^POINTER ^POSITIONING ^COMMANDS 11 1.4 ^TYPE ^OUT ^COMMANDS 12 1.5 ^TEXT ^MODIFICATION ^COMMANDS 12 1.6 ^SEARCH ^COMMANDS 13 1.7 ^SUMMARY 14 1.8 ^SAMPLE ^EDITING ^JOB 15 .LEFT MARGIN 5 .SKIP 1 ^CHAPTER 2: ^COMPLETE ^COMMAND ^SUMMARY 19 .SKIP 1 .LEFT MARGIN 10 2.0 ^TECO ^CHARACTER ^SET 19 2.1 ^FILE ^SPECIFICATION ^COMMANDS 22 2.2 ^PAGE ^MANIPULATION ^COMMANDS 24 2.3 ^BUFFER ^POINTER ^MANIPULATION ^COMMANDS 26 2.4 ^TEXT ^TYPE-OUT ^COMMANDS 27 2.5 ^DELETION ^COMMANDS 28 2.6 ^INSERTION ^COMMANDS 29 2.7 ^SEARCH ^COMMANDS 30 2.8 ^MATCH ^CONTROL ^CHARACTERS 34 2.9 ^COMMAND ^LOOPS 35 2.10 ^Q-REGISTERS 36 2.11 ^BRANCHING ^COMMANDS 38 2.12 ^CONDITIONAL ^EXECUTION ^COMMANDS 39 2.13 ^NUMERIC ^ARGUMENTS 41 2.14 ^MODE ^CONTROL ^FLAGS 46 2.15 ^PROGRAMMING ^AIDS 47 2.16 ^ERROR ^MESSAGES 49 2.17 ^MANIPULATING ^LARGE ^PAGES 50 2.18 ^TECHNIQUES AND ^EXAMPLES 50 .LEFT MARGIN 5 .SKIP 1 ^APPENDIX ^A: ^^ASCII\\ ^CHARACTER ^SET 55 ^APPENDIX ^B: ^INDEX TO ^^TECO\\ ^COMMANDS 56 .FILL .PAGE .CENTER 80 ^^INTRODUCTION\\ .PARAGRAPH 5 ^^TECO\\ IS A POWERFUL TEXT EDITING PROGRAM THAT RUNS UNDER THE ^R^S^T^S/^E OPERATING SYSTEM. ^^TECO\\ MAY BE USED TO EDIT ANY FORM OF ^^ASCII\\ TEXT SUCH AS PROGRAM LISTINGS, MANUSCRIPTS, CORRESPONDENCE AND THE LIKE. ^SINCE ^^TECO\\ IS A CHARACTER-ORIENTED EDITOR RATHER THAN A LINE EDITOR, TEXT EDITED WITH ^^TECO\\ DOES NOT HAVE LINE NUMBERS ASSOCIATED WITH IT, NOR IS IT NECESSARY TO REPLACE AN ENTIRE LINE OF TEXT IN ORDER TO CHANGE ONE CHARACTER. .PARAGRAPH ^BECAUSE ^^TECO\\ IS VERY VERSATILE, IT IS NECESSARILY COMPLEX. ^THIS MANUAL IS, THEREFORE, DIVIDED INTO TWO PARTS. ^CHAPTER ^I CONTAINS BASIC INFORMATION AND INTRODUCES ENOUGH ^^TECO\\ COMMANDS TO ALLOW THE NOVICE ^^TECO\\ USER TO BEGIN CREATING AND EDITING TEXT FILES AFTER ONLY A FEW HOURS OF INSTRUCTION. ^THE INTRODUCTORY COMMANDS ARE SUFFICIENT FOR ANY EDITING APPLICATION; HOWEVER, THEY ARE LESS CONVENIENT, IN MOST CASES, THAN THE ADVANCED COMMANDS PRESENTED LATER. .PARAGRAPH ^CHAPTER ^I^I INTRODUCES THE FULL ^^TECO\\ COMMAND SET, INCLUDING A REVIEW OF THE INTRODUCTORY COMMANDS PRESENTED EARLIER. ^THIS CHAPTER ALSO INTRODUCES THE CONCEPT OF ^^TECO\\ AS A PROGRAMMING LANGUAGE AND EXPLAINS HOW BASIC EDITING COMMANDS MAY BE COMBINED INTO "PROGRAMS" WHICH ARE SOPHISTICATED ENOUGH TO HANDLE THE MOST COMPLICATED EDITING TASKS. .PARAGRAPH ^SPECIFIC EXAMPLES OF THE USE OF ^^TECO\\ COMMANDS HAVE BEEN DE-EMPHASIZED THROUGHOUT THIS MANUAL. ^THIS WAS DONE BECAUSE ALL OF THE ^^TECO\\ COMMANDS HAVE A CONSISTENT, LOGICAL FORMAT WHICH WILL QUICKLY BECOME APPARENT TO THE NOVICE USER. ^HOWEVER, EACH CHAPTER OF THE MANUAL IS CONCLUDED WITH ONE OR MORE ELABORATE EXAMPLES WHICH EMPLOY MOST OF THE COMMANDS INTRODUCED UP TO THAT POINT. ^USERS WHO ARE LEARNING ^^TECO\\ COMMANDS SHOULD EXPERIMENT WITH EACH COMMAND AS IT IS INTRODUCED, THEN DUPLICATE THE EXAMPLES ON THEIR COMPUTER. .PAGE .CENTER 80 ^^CHAPTER I\\ .SKIP 1 .CENTER 80 ^^INTRODUCTORY COMMANDS\\ .BLANK 2 .TEST PAGE 10 1.0 ^^FUNDAMENTALS\\ .PARAGRAPH ^^TECO\\ CONSIDERS TEXT TO BE ANY STRING OF ^^ASCII\\ CODES. ^TEXT IS BROKEN DOWN INTO UNITS OF PAGES, LINES, AND CHARACTERS. ^A PAGE OF TEXT CONSISTS OF ALL THE ^^ASCII\\ CODES BETWEEN TWO FORM FEED CHARACTERS, INCLUDING THE SECOND FORM FEED. ^A CHARACTER IS ONE ^^ASCII\\ CODE. ^THUS, EVERY PAGE OF TEXT CONTAINS ONE FORM FEED CHARACTER, WHICH IS THE LAST CHARACTER ON THE PAGE. ^EVERY LINE OF TEXT CONTAINS ONE LINE FEED, WHICH IS THE LAST CHARACTER ON THE LINE. .PARAGRAPH ^^TECO\\ MAINTAINS A TEXT BUFFER IN WHICH TEXT IS STORED. ^THE BUFFER USUALLY CONTAINS ONE PAGE OF TEXT CONSISTING OF UP TO SEVERAL THOUSAND CHARACTERS, BUT THE TERMINATING FORM FEED CHARACTER NEVER APPEARS IN THE BUFFER. ^^TECO\\ ALSO MAINTAINS A BUFFER POINTER. ^THE POINTER IS SIMPLY A MOVABLE POSITION INDICATOR WHICH IS ALWAYS LOCATED BETWEEN TWO CHARACTERS IN THE BUFFER, OR BEFORE THE FIRST CHARACTER IN THE BUFFER, OR AFTER THE LAST CHARACTER IN THE BUFFER. ^THE POINTER IS NEVER LOCATED ON A CHARACTER. .PARAGRAPH ^LINE FEED AND FORM FEED CHARACTERS ARE INSERTED AUTOMATICALLY BY ^^TECO\\. ^A LINE FEED IS AUTOMATICALLY APPENDED TO EVERY CARRIAGE RETURN ENTERED INTO THE BUFFER, AND A FORM FEED IS APPENDED TO THE CONTENT OF THE BUFFER BY CERTAIN OUTPUT COMMANDS. ^ADDITIONAL LINE FEED AND FORM FEED CHARACTERS MAY BE ENTERED INTO THE BUFFER AS TEXT. ^IF A FORM FEED CHARACTER IS ENTERED INTO THE BUFFER, IT WILL CAUSE A PAGE BREAK UPON OUTPUT. ^THAT IS, ALL TEXT PRECEDING THE FORM FEED WILL APPEAR ON ONE PAGE, AND THE TEXT FOLLOWING THE FORM FEED WILL APPEAR ON THE NEXT PAGE. .PARAGRAPH ^FINALLY, ^^TECO\\ ALSO MAINTAINS AN INPUT FILE AND AN OUTPUT FILE, BOTH OF WHICH ARE SELECTED BY THE USER THROUGH THE USE OF FILE SPECIFICATION COMMANDS. ^THE INPUT FILE IS ANY DEVICE FROM WHICH TEXT MAY BE ACCEPTED. ^FOR EXAMPLE, IF A BLOCK OF TEXT IS STORED ON PAPER TAPE, THE PAPER TAPE READER WOULD BE SPECIFIED AS AN INPUT FILE WHEN THE TAPE IS EDITED. .PARAGRAPH ^THE OUTPUT FILE IS ANY DEVICE ON WHICH EDITED TEXT MAY BE WRITTEN. ^IF THE PAPER TAPE FILE MENTIONED ABOVE WERE TO BE EDITED AND WRITTEN ONTO A DISK, FOR EXAMPLE, THE OUTPUT FILE WOULD BE A USER-NAMED DISK FILE. .PARAGRAPH ^^TECO\\ FUNCTIONS AS A "PIPELINE" EDITOR. ^TEXT IS READ FROM THE INPUT FILE INTO THE TEXT BUFFER, AND IS WRITTEN FROM THE BUFFER ONTO THE OUTPUT FILE. ^ONCE A PARTICULAR PORTION OF THE INPUT FILE HAS BEEN READ, IT CANNOT BE READ AGAIN WITHOUT CLOSING AND RE-OPENING THE INPUT FILE. ^LIKEWISE, ONCE A PORTION OF TEXT HAS BEEN WRITTEN TO THE OUTPUT FILE, IT CANNOT BE ACCESSED AGAIN WITHOUT CLOSING THE OUTPUT FILE AND RE-OPENING IT AS AN INPUT FILE. .PARAGRAPH ^^TECO\\ MAY BE CALLED FROM THE MONITOR BY TYPING: .SKIP 1 #####^^RUN\\ $^T^E^C^O .SKIP 1 (TERMINATED WITH A CARRIAGE RETURN). ^^TECO\\ WILL RESPOND BY PRINTING AN ASTERISK AT THE LEFT MARGIN TO INDICATE THAT IT IS READY TO ACCEPT USER COMMANDS. ^AT THIS POINT, ONE OR MORE COMMANDS MAY BE TYPED AT THE TERMINAL, AND ^^TECO\\ WILL EXECUTE THE COMMANDS UPON RECEIPT OF TWO CONSECUTIVE ^^ALT MODE\\ CHARACTERS. ^THE ^^ALT MODE\\ IS A NON-PRINTING CHARACTER WHICH MAY BE LABELLED ^^ESCAPE\\ OR ^^PREFIX\\ ON SOME KEYBOARDS. ^^TECO\\ ECHOES A DOLLAR SIGN ($) WHENEVER AN ^^ALT MODE\\ IS RECEIVED. ^THE DOLLAR SIGN CHARACTER IS USED IN EXAMPLES THROUGHOUT THIS MANUAL TO REPRESENT ^^ALT MODE\\. .PARAGRAPH ^^A TECO\\ COMMAND CONSISTS OF ONE OR TWO CHARACTERS WHICH CAUSE A SPECIFIC OPERATION TO BE PERFORMED. ^SOME ^^TECO\\ COMMANDS MAY BE PRECEDED OR FOLLOWED BY ARGUMENTS. ^ARGUMENTS MAY BE EITHER NUMERIC OR TEXTUAL. ^A NUMERIC ARGUMENT IS SIMPLY AN INTEGER VALUE WHICH MIGHT BE USED TO INDICATE SUCH THINGS AS THE NUMBER OF TIMES A COMMAND SHOULD BE EXECUTED. ^A TEXT ARGUMENT IS A STRING OF ^^ASCII\\ CHARACTERS WHICH MIGHT BE WORDS OF TEXT, FOR EXAMPLE, OR AN ^R^S^T^S/^E FILE SPECIFICATION. .PARAGRAPH ^IF A COMMAND REQUIRES A NUMERIC ARGUMENT, THE NUMERIC ARGUMENT ALWAYS PRECEDES THE COMMAND. ^IF A COMMAND REQUIRES A TEXT ARGUMENT, THE TEXT ARGUMENT ALWAYS FOLLOWS THE COMMAND. ^ALL TEXT ARGUMENTS ARE TERMINATED BY A SPECIAL CHARACTER (USUALLY AN ^^ALT MODE\\) WHICH INDICATES TO ^^TECO\\ THAT THE NEXT CHARACTER TYPED WILL BE THE FIRST CHARACTER OF A NEW COMMAND. .PARAGRAPH ^IF MORE THAN ONE COMMAND IS TYPED IN RESPONSE TO THE ASTERISK GENERATED BY ^^TECO\\, THE COMMAND STRING WILL BE EXECUTED FROM LEFT TO RIGHT UNTIL EITHER ALL COMMANDS HAVE BEEN EXECUTED OR A COMMAND ERROR IS RECOGNIZED. ^IF AN ERROR IS ENCOUNTERED, A MESSAGE IS PRINTED AND THE REST OF THE COMMAND STRING IS IGNORED. ^IN ANY CASE, ^^TECO\\ PRINTS ANOTHER ASTERISK AT THE LEFT MARGIN AS SOON AS IT FINISHES EXECUTION OF A COMMAND STRING, SO THAT ADDITIONAL COMMANDS MAY BE ENTERED. .PARAGRAPH ^THE EXTENSIVE TEXT EDITING CAPABILITY OF ^^TECO\\ IMPLIES A LARGE AND VERSATILE COMMAND SET. ^HOWEVER, THE NOVICE ^^TECO\\ USER WILL FIND THAT LITTLE MORE THAN A DOZEN BASIC COMMANDS SUFFICE FOR MOST EDITING REQUIREMENTS. ^THE FOLLOWING SECTION INTRODUCES THE BASIC ^^TECO\\ COMMANDS. ^THE FULL COMMAND SET WILL BE DESCRIBED LATER IN THIS MANUAL. .BLANK 2 .TEST PAGE 10 1.1 ^^FILE SELECTION COMMANDS\\ .PARAGRAPH ^INPUT AND OUTPUT FILES MAY BE SPECIFIED TO ^^TECO\\ IN SEVERAL WAYS. ^FOR MOST EDITING JOBS, IT IS CONVENIENT TO SUPPLY THE FILE NAMES IN THE ^^CCL\\ COMMAND WHICH INVOKES ^^TECO\\, I.E., .BLANK 1 #####^^TECO\\ FILESPECIFIER .BLANK 1 ^THIS COMMAND CAUSES ^^TECO\\ TO OPEN THE DESIGNATED FILE FOR INPUT, AND TO CREATE A NEW VERSION OF THE SAME FILE FOR OUTPUT. ^THE FIRST PAGE OF TEXT IS READ INTO THE BUFFER. ^THE FILE SPECIFIER IS OF THE GENERAL FORM "DEV:[X,X]NAME.EXT", AND IS INTERPRETED IN THE SAME MANNER AS IT IS BY ALL OTHER ^^RSTS/E\\ SYSTEM PROGRAMS. ^ELEMENTS THAT ARE OMITTED FROM A FILE SPECIFIER ARE DEFAULTED AS FOLLOWS: .LEFT MARGIN 20 .BLANK 1 .INDENT -15 ^ELEMENT##################^DEFAULT ^VALUE .BLANK 1 .INDENT -15 DEV:###########^^SY0:\\ - THE SYSTEM DEVICE. .BLANK 1 .INDENT -15 [X,X]##########^THE DIRECTORY CORRESPONDING TO THE ^^PPN\\ UNDER WHICH THE USER IS LOGGED IN. .BLANK 1 .INDENT -15 NAME###########^NO DEFAULT. .BLANK 1 .INDENT -15 _.EXT##########^NO DEFAULT. .LEFT MARGIN 5 .PARAGRAPH ^IF THE USER IS CREATING A NEW FILE, HE MAY TYPE THE COMMAND .BLANK 1 #####^^MAKE\\ FILESPECIFIER .BLANK 1 ^THIS COMMAND CAUSES ^^TECO\\ TO CREATE THE DESIGNATED OUTPUT FILE. ^TEXT MAY THEN BE TYPED INTO THE BUFFER AND WRITTEN TO THE FILE. ^IF A FILE OF THE SAME NAME, EXT, AND VERSION ALREADY EXISTS, IT WILL BE DELETED AND SUPERSEDED BY THE NEW FILE WITHOUT WARNING. .PARAGRAPH ^WHEN THE USER IS FINISHED EDITING A FILE, HE MAY USE THE ^^EX\\ COMMAND TO CLOSE OUT THE FILE AND EXIT FROM ^^TECO\\. ^THE CURRENT CONTENTS OF THE TEXT BUFFER, AND ANY PORTION OF THE INPUT FILE THAT HAS NOT BEEN READ YET, ARE COPIED TO THE OUTPUT FILE BEFORE ^^TECO\\ EXITS. .PARAGRAPH ^THE FOLLOWING COMMANDS PERMIT MORE FLEXIBLE FILE SELECTION WITH ^^TECO\\; THEY ARE NOT ESSENTIAL TO BASIC EDITING AND THE READER MAY SKIP OVER THE REST OF THIS SECTION IF HE WISHES. .PARAGRAPH ^^TECO\\ WILL ACCEPT INPUT TEXT FROM ANY INPUT DEVICE IN THE ^R^S^T^S/^E SYSTEM. ^THE INPUT DEVICE MAY BE SPECIFIED BY MEANS OF AN ^E^R COMMAND TERMINATED BY AN ^^ALT MODE\\. ^THE ^E^R COMMAND CAUSES ^^TECO\\ TO OPEN THE SPECIFIED FILE AND PRINT AN ERROR MESSAGE IF THE FILE IS NOT FOUND. ^THIS COMMAND DOES NOT CAUSE ANY PORTION OF THE FILE TO BE READ INTO THE TEXT BUFFER, HOWEVER. ^THE FOLLOWING EXAMPLES ILLUSTRATE USE OF THE ^E^R COMMAND: .LEFT MARGIN 35 .SKIP 2 .TEST PAGE 6 .INDENT -30 ^^COMMAND############################FUNCTION\\ .SKIP 1 .INDENT -30 ^E^RDEV:[X,X]FILENAME.EXT$###^GENERAL FORM OF THE ^E^R COMMAND WHERE "DEV:[X,X]FILENAME.EXT" IS THE DESIGNATION OF THE INPUT FILE. ^THE COMMAND IS TERMINATED BY AN ^^ALT MODE\\, WHICH ECHOES AS A DOLLAR SIGN. .SKIP 1 .INDENT -30 ^^ERPR:\\$########################^PREPARE TO READ AN INPUT FILE FROM THE PAPER TAPE READER. .SKIP 1 .INDENT -30 ^^ERPROG.MAC\\$###################^PREPARE TO READ INPUT FILE ^^PROG.MAC\\ FROM THE DEFAULT DEVICE. .SKIP 1 .INDENT -30 ^^ERDK1:[27,123]PROG$\\###########^PREPARE TO READ INPUT FILE ^^PROG\\ FROM ^^DK1\\, DIRECTORY [27,123]. .LEFT MARGIN 5 .PARAGRAPH ^^TECO\\ WILL WRITE OUTPUT TEXT ONTO ANY DEVICE IN THE SYSTEM. ^THE OUTPUT FILE MAY BE SPECIFIED BY MEANS OF AN ^E^W COMMAND TERMINATED BY AN ^^ALT MODE\\. ^IF A FILE NAME IS SPECIFIED BUT NO DEVICE IS EXPLICITLY DEFINED, THE DEFAUT DEVICE ^S^Y IS ASSUMED. ^IF NO VERSION NUMBER IS SPECIFIED, THE USUAL ^^RSTS/E\\ DEFAULT APPLIES: A FILE IS CREATED WITH A VERSION NUMBER ONE HIGHER THAN THE CURRENT HIGHEST VERSION OF THAT FILE, OR 1 IF THE FILE DOES NOT EXIST. ^IF THE VERSION NUMBER IS SPECIFIED AND AN OLD FILE OF THE SAME NAME, EXT, AND VERSION EXISTS, IT WILL BE DELETED WITHOUT WARNING. ^THE FOLLOWING EXAMPLES ILLUSTRATE USE OF THE ^E^W COMMAND, WHICH HAS THE SAME FORMAT AS THE ^E^R\\ COMMAND: .SKIP 2 .LEFT MARGIN 35 .TEST PAGE 6 .INDENT -30 ^^COMMAND############################FUNCTION\\ .SKIP 1 .INDENT -30 ^E^WDEV:[X,X]FILENAME.EXT$###^GENERAL FORM OF THE ^E^W COMMAND WHERE "DEV:[X,X]FILENAME.EXT" IS THE DESIGNATION OF THE OUTPUT FILE. ^THE COMMAND IS TERMINATED BY AN ^^ALT MODE\\, WHICH ECHOES AS A DOLLAR SIGN. .SKIP 1 .INDENT -30 ^^EWSY:TEXT.LST\\$################^PREPARE TO WRITE OUTPUT FILE ^^TEXT.LST\\ ON THE SYSTEM DEVICE. .SKIP 1 .INDENT -30 ^^EWPROG$\\#######################^PREPARE TO WRITE OUTPUT FILE ^^PROG\\ ON THE SYSTEM DEFAULT DEVICE. .SKIP 1 .INDENT -30 ^^EWDK1:[20,20]TEXT.LST$\\########^PREPARE TO WRITE OUTPUT FILE ^^TEXT.LST\\ ON ^^DK1\\, DIRECTORY [20,20]. .LEFT MARGIN 5 .PARAGRAPH ^IT IS NOT ALWAYS NECESSARY TO SPECIFY AN INPUT FILE. ^IF THE USER DESIRES TO CREATE A FILE WITHOUT USING ANY PREVIOUSLY EDITED TEXT AS INPUT, HE MAY TYPE COMMANDS TO INSERT THE NECESSARY TEXT DIRECTLY INTO THE TEXT BUFFER FROM THE KEYBOARD AND, AT THE END OF EACH PAGE, WRITE THE CONTENT OF THE BUFFER ONTO AN OUTPUT FILE. ^SINCE ALL INPUT IS SUPPLIED FROM THE KEYBOARD, NO INPUT FILE IS NECESSARY. .PARAGRAPH ^AN OUTPUT FILE IS UNNECESSARY IF THE USER DESIRES ONLY TO EXAMINE AN INPUT FILE, WITHOUT MAKING PERMANENT CHANGES OR CORRECTIONS. ^IN THIS CASE, THE CONTENT OF THE INPUT FILE MAY BE READ INTO THE TEXT BUFFER PAGE BY PAGE AND EXAMINED AT THE TERMINAL. ^SINCE ALL OUTPUT IS PRINTED ON THE USER TERMINAL, NO OUTPUT FILE IS NEEDED. .PARAGRAPH ^^TECO\\ WILL ONLY KEEP ONE INPUT AND ONE OUTPUT FILE OPEN AT A TIME. ^THE CURRENT INPUT FILE MAY BE CHANGED BY SIMPLY USING THE ^E^R COMMAND TO SPECIFY A NEW FILE. ^THE ^^EF\\ COMMAND IS USED TO TERMINATE THE CURRENT OUTPUT FILE. ^ANY PENDING ^^I/O\\ IS COMPLETED AND THE OUTPUT FILE IS CLOSED. ^THE ^^EF\\ COMMAND DOES NOT WRITE THE CURRENT CONTENTS OF THE BUFFER TO THE FILE BEFORE CLOSING IT. ^IF ^^TECO\\ IS GIVEN AN ^^EW\\ COMMAND WHEN THERE IS AN OUTPUT FILE OPEN, IT PERFORMS AN AUTOMATIC ^^EF\\ BEFORE PROCESSING THE ^^EW\\. ^THE ^E^F COMMAND IS PRESENTED BELOW ALONG WITH SEVERAL EXAMPLES OF FILE SPECIFICATION COMMAND STRINGS. ^NOTE THAT THE ^^EF\\ COMMAND TAKES NO ARGUMENTS, AND IS NOT TERMINATED BY AN ^^ALT MODE\\. .SKIP 2 .LEFT MARGIN 15 .TEST PAGE 6 .INDENT -10 ^^COMMAND:##EF\\ .SKIP 1 .INDENT -10 ^^FUNCTION:#C\\LOSE THE CURRENT OUTPUT FILE. .SKIP 1 .INDENT -10 ^^COMMAND STRING:##ERDK1:INPUT.MAC$EWOUTPUT.MAC$$\\ .SKIP 1 .INDENT -10 ^^FUNCTION:#O\\PEN AN INPUT FILE "^^INPUT.MAC\\" TO BE FOUND ON ^D^K1 AND OPEN AN OUTPUT FILE NAMED "^^OUTPUT.MAC\\" ON ^S^Y. ^THE DOUBLE ^^ALT MODE\\ ($$) TERMINATES THE COMMAND STRING AND CAUSES THE STRING TO BE EXECUTED. .SKIP 1 .INDENT -10 ^^COMMAND STRING:#####EFEWTEST.LST$$ .SKIP 1 .INDENT -10 ^^FUNCTION:#C\\LOSE THE CURRENT OUTPUT FILE AND OPEN AN OUTPUT FILE "^^TEST.LST\\" ON THE DEFAULT DEVICE. ^NOTE THAT THE ^^ALT MODE\\ WHICH TERMINATES THE ^E^W COMMAND MAY BE ONE OF THE TWO ^^ALT MODE\\S WHICH TERMINATES THE COMMAND STRING. .SKIP 1 .INDENT -10 ^^COMMAND STRING:#####ERPR:$EFEWSY:FILE$$ .SKIP 1 .INDENT -10 FUNCTION:#O\\PEN THE PAPER TAPE READER AS AN INPUT FILE, THEN CLOSE THE CURRENT OUTPUT FILE AND OPEN "^^FILE\\" ON THE DEFAULT DEVICE AS AN OUTPUT FILE. .LEFT MARGIN 5 .BLANK 2 .TEST PAGE 10 1.2 ^^INPUT AND OUTPUT COMMANDS\\ .PARAGRAPH ^THE FOLLOWING COMMANDS PERMIT PAGES OF TEXT TO BE READ INTO THE ^^TECO\\ TEXT BUFFER FROM AN INPUT DEVICE OR WRITTEN FROM THE BUFFER ONTO AN OUTPUT DEVICE. ^ONCE A PAGE OF TEXT HAS BEEN WRITTEN ONTO THE OUTPUT FILE, IT CANNOT BE RECALLED INTO THE TEXT BUFFER UNLESS THE OUTPUT FILE IS CLOSED AND REOPENED AS AN INPUT FILE. .SKIP 2 .LEFT MARGIN 13 .TEST PAGE 4 .INDENT -8 ^^COMMAND###########FUNCTION\\ .SKIP 1 .INDENT -8 ^Y#######^CLEAR THE TEXT BUFFER, THEN READ THE NEXT PAGE OF THE INPUT FILE INTO THE BUFFER. .SKIP 1 .INDENT -8 ^P#######^WRITE THE CONTENT OF THE TEXT BUFFER ONTO THE NEXT PAGE OF THE OUTPUT FILE, THEN CLEAR THE BUFFER AND READ THE NEXT PAGE OF THE INPUT FILE INTO THE BUFFER. .SKIP 1 .INDENT -8 N^P######^EXECUTE THE ^P COMMAND N TIMES, WHERE N MUST BE AN INTEGER IN THE RANGE 0=TECO ! *EWDK1:FILE1.TXT$$ 2< *HKIMR. JOHN P. JONES ! COMPUTER ELECTRONICS CORPORATION ! BOSTON, MASAASACHUSETTS ! ! DEAR MR. JONES: ! ! I WAS PLEASED TO RECEIVE YOUR REQUEST FOR INFORMATION ! PERTAINING TO THE NEW TECO-11 TEXT EDITING AND CORRECTING ! PROGRAM. ! ! ENCLOSED IS A COPY OF THE TECO-11 USERS'S GUIDE, WHICH ! SHOULD ANSWER ALL OF YOUR QUESTIONS. ! ! SINCERELY, ! ! ! ! ! $$ 3< *-20LSETTS$I 02150$$ ! *STION$2C13DIREGARDING$$ 4< *SGUIDE$-5DIMANUAL$$ ! *SELY$0T$$ ! SINCERELY*0KIVERY TRULY YOURS$$ ! *HT$$ ! MR. JOHN P. JONES ! COMPUTER ELECTRONICS CORPORATION ! BOSTON, MASSACHUSETTS 02150 ! ! DEAR MR. JONES: ! ! I WAS PLEASED TO RECEIVE YOUR REQUEST FOR INFORMATION ! REGARDING THE NEW TECO-11 TEXT EDITING AND CORRECTING ! PROGRAM. ! ! ENCLOSED IS A COPY OF THE TECO-11 USER'S MANUAL, WHICH ! SHOULD ANSWER ALL OF YOUR QUESTIONS. ! ! VERY TRULY YOURS, ! ! ! ! ! 5< *PEF ! *ERDK1:FILE1.TXT$EWPP:$$ 6< *Y5KIMR. JAMES B. SMITH ! DATEK ASSOCIATES, INC. ! 122 MAIN STREET WEST ! AUSTIN, TEXAS ! ! DEAR MR. SMITH: ! $$ ! *HT$$ ! MR. JAMES B. SMITH ! DATEK ASSOCIATES, INC. ! 122 MAIN STREET WEST ! AUSTIN, TEXAS ! ! DEAR MR. SMITH: ! ! I WAS PLEASED TO RECEIVE YOUR REQUEST FOR INFORMATION ! REGARDING THE NEW TECO-11 TEXT EDITING AND CORRECTING ! PROGRAM. ! ! ENCLOSED IS A COPY OF THE TECO-11 USER'S MANUAL, WHICH ! SHOULD ANSWER ALL OF YOUR QUESTIONS. ! ! VERY TRULY YOURS, ! ! ! ! ! *PEF$$ ! *EX$$ ! MCR>\\ .FILL .PAGE .CENTER 80 ^^CHAPTER II\\ .SKIP 2 .CENTER 80 ^^COMMAND SUMMARY\\ .SKIP 1 .PARAGRAPH ^THE REMAINDER OF THIS MANUAL IS DEVOTED TO A DETAILED DESCRIPTION OF THE FULL ^^TECO\\ COMMAND SET. ^IT IS ASSUMED THAT THE READER IS FAMILIAR WITH THE ELEMENTARY ^^TECO\\ COMMANDS PRESENTED EARLIER. .SKIP 2 2.0 ^^TECO CHARACTER SET\\ .PARAGRAPH ^^TECO\\ ACCEPTS THE FULL ^^ASCII\\ CHARACTER SET, WHICH IS PRESENTED IN ^APPENDIX ^A. ^MOST TERMINALS WILL NOT TRANSMIT AND RECEIVE ALL OF THE ^^ASCII\\ CODES; HOWEVER, CHARACTERS THAT ARE NOT AVAILABLE ON THE USER'S TERMINAL MAY BE INSERTED INTO THE ^^TECO\\ TEXT BUFFER BY MEANS OF SPECIAL COMMANDS WHICH WILL BE PRESENTED LATER IN THIS CHAPTER. .PARAGRAPH ^^TECO\\ COMMAND STRINGS MAY BE ENTERED USING UPPER CASE CHARACTERS, AS INDICATED THROUGHOUT THIS MANUAL, OR BY USING THE CORRESPONDING LOWER CASE CHARACTERS. ^A FILE WHICH CONTAINS UPPER AND LOWER CASE TEXT MAY BE EDITED IN THE SAME MANNER AS A FILE WHICH CONTAINS ONLY UPPER CASE TEXT, ALTHOUGH DEALING WITH LOWER CASE TEXT FROM AN UPPER CASE ONLY TERMINAL IS NOT VERY CONVENIENT. ^SEARCH STRINGS MUST BE OF THE CORRECT CASE TO MATCH THE DESIRED TEXT. ^^TECO\\ NORMALLY CONVERTS LOWER CASE ALPHABETICS TO UPPER CASE AS THEY ARE TYPED IN. ^COMMANDS TO ENABLE LOWER CASE TYPE-IN ARE PRESENTED LATER IN THIS CHAPTER. .PARAGRAPH ^^TECO\\ RECOGNIZES THE PRESENCE OF RECORD CONTROL ATTRIBUTES IN FILES. ^STANDARD ^R^S^X-11^D SOURCE FILES USE IMPLIED CARRIAGE CONTROL. ^THESE INCLUDE FILES PRODUCED BY OTHER EDITORS AND ^FILEX, FILES THAT ARE ACCEPTABLE TO THE ^FORTRAN COMPILER AND THE ASSEMBLER, AND FILES TO BE USED AS COMMAND FILES. ^FILES WRITTEN BY ^FORTRAN PROGRAMS HAVE ^FORTRAN CARRIAGE CONTROL. ^IF AN INPUT FILE HAS IMPLIED CARRIAGE CONTROL OR ^FORTRAN CARRIAGE CONTROL, ^^TECO\\ WILL APPEND ^C^R-^L^F TO EACH RECORD AS IT IS READ. ^FORTRAN CARRIAGE CONTROL CHARACTERS ARE NOT INTERPRETED BUT ARE LEFT AT THE BEGINNING OF EACH RECORD. ^IF THE FILE HAS NO CARRIAGE CONTROL ATTRIBUTES (I.E., INTERNAL CARRIAGE CONTROL), RECORDS ARE ACCUMULATED IN THE BUFFER AS READ. ^UPON OUTPUT, ^^TECO\\ TREATS OCCURRENCES OF ^C^R-^L^F IN THE BUFFER AS RECORD SEPARATORS. ^IF THE OUTPUT FILE HAS IMPLIED OR ^FORTRAN CARRIAGE CONTROL, THE ^C^R-^L^F PAIRS ARE STRIPPED OFF AS THE FILE IS WRITTEN. ^THE OUTPUT FILE ATTRIBUTES ARE DETERMINED BY THE ATTRIBUTES OF THE INPUT FILE AS FOLLOWS: .SKIP 1 .TAB STOPS 25, 50 .NOFILL ^^INPUT FILE OUTPUT FILE\\ .SKIP 1 ^IMPLIED ^C.^C. ^IMPLIED ^C.^C. ^FORTRAN ^C.^C. ^FORTRAN ^C.^C. ^INTERNAL ^C.^C. ^IMPLIED ^C.^C. .FILL .SKIP 1 .TEST PAGE 9 ^THE FOLLOWING SWITCHES MAY BE USED TO FORCE CARRIAGE CONTROL ATTRIBUTES ON BOTH INPUT AND/OR OUTPUT FILES: .TAB STOPS 25, 40 .SKIP 1 .NOFILL /^C^R ^FORCE ^^IMPLIED C.C.\\ /^F^T ^FORCE ^^FORTRAN C.C.\\ /-^C^R ^FORCE ^^INTERNAL C.C.\\ .FILL .SKIP 1 ^EXAMPLE:^^ ERFOO.BAR$EWFOO.BAR/FT$Y$$\\ .BLANK 1 ^THIS EXAMPLE OPENS FILE ^^FOO.BAR\\ AND READS IT WITH ITS CARRIAGE CONTROL ATTRIBUTES, AND CREATES A NEW VERSION OF ^^FOO.BAR\\ FOR OUTPUT WITH THE ^FORTRAN CARRIAGE CONTROL ATTRIBUTE. .PARAGRAPH ^^TECO\\ CONSIDERS CERTAIN ^^ASCII\\ CHARACTERS TO BE SPECIAL CHARACTERS. ^MOST OF THE SPECIAL CHARACTERS ARE IMMEDIATE ACTION COMMANDS. ^TYPING THESE CHARACTERS IN A COMMAND STRING CAUSES ^^TECO\\ TO PERFORM A SPECIFIED FUNCTION IMMEDIATELY, WITHOUT WAITING FOR THE DOUBLE ^^ALT MODE\\ WHICH TERMINATES THE COMMAND STRING. ^IMMEDIATE ACTION COMMANDS MAY BE ENTERED AT ANY POINT IN A COMMAND STRING - EVEN IN THE MIDDLE OF A COMMAND OR TEXT ARGUMENT. ^FOR THIS REASON, THE SPECIAL CHARACTERS SHOULD NOT BE USED IN TEXT ARGUMENTS, EXCEPT WHERE SPECIFICALLY INDICATED THROUGHOUT THIS MANUAL. .PARAGRAPH ^TABLE 2-0 LISTS THE SPECIAL CHARACTERS, THEIR FUNCTIONS AND THE RESTRICTIONS ASSOCIATED WITH EACH CHARACTER. .SKIP 2 .TEST PAGE 8 .CENTER 80 ^^TABLE 2-0: RESTRICTIONS ON SPECIAL CHARACTERS\\ .LEFT MARGIN 25 .SKIP 1 .INDENT -20 ^^CHARACTER#####################RESTRICTION\\ .SKIP 1 .INDENT -20 ^^ALT MODE\\############^THE ^^ALT MODE\\ CHARACTER IS A COMMAND TERMINATOR. ^IT MAY NOT BE USED IN THE ARGUMENT OF ANY COMMAND EXCEPT WHERE NOTED SPECIFICALLY THROUGHOUT THIS MANUAL. ^^TECO\\ ECHOES A DOLLAR SIGN WHEN AN ^^ALT MODE\\ IS RECEIVED. ^^ALT MODE\\ MAY BE LABELLED ^^ESCAPE\\ OR ^^PREFIX\\ ON SOME TERMINALS. ^^A DOUBLE ^^ALT MODE\\ INITIATES EXECUTION OF THE COMMAND STRING. .SKIP 1 .INDENT -20 ^^RUBOUT\\##############^TYPING A ^^RUBOUT\\ CHARACTER DELETES THE LAST CHARACTER TYPED. ^TYPING SEVERAL CONSECUTIVE ^^RUBOUT\\S DELETES ONE CHARACTER FOR EACH ^^RUBOUT\\ TYPED BEGINNING WITH THE LAST CHARACTER TYPED. ^^TECO\\ ECHOES THE DELETED CHARACTER WHENEVER A ^^RUBOUT\\ IS TYPED. .SKIP 1 .INDENT -20 ^CONTROL-^C###########^CONTROL-^C, PRODUCED BY STRIKING THE ^^CONTROL\\ KEY AND THE ^C KEY SIMULTANEOUSLY, CAUSES THE ^M^C^R TO BECOME ACTIVE. ^SINCE ^^TECO\\ REMAINS ACTIVE WITH FILES OPEN, THIS PROCEDURE IS NOT RECOMMENDED. .SKIP 1 .INDENT -20 ^CONTROL-^G###########^TYPING TWO CONSECUTIVE ^CONTROL-^G CHARACTERS, PRODUCED BY HOLDING THE ^^CONTROL\\ KEY DEPRESSED WHILE STRIKING THE ^G KEY TWICE, CAUSES ALL COMMANDS WHICH HAVE BEEN ENTERED BUT NOT EXECUTED TO BE ERASED. (^IF THE TERMINAL HAS A BELL, IT WILL RING.) ^THIS COMMAND IS USED TO ERASE AN ENTIRE COMMAND STRING. ^A SINGLE ^CONTROL-^G CHARACTER IS INTERPRETED AS A DIFFERENT COMMAND AND THE SINGLE ^CONTROL-^G IS NOT A SPECIAL CHARACTER. .SKIP 1 .INDENT -20 ^CONTROL-^U###########^CONTROL-^U, PRODUCED BY STRIKING THE ^^CONTROL\\ KEY AND THE ^U KEY SIMULTANEOUSLY, CAUSES THE CURRENT LINE OF THE CURRENT COMMAND LINE TO BE DELETED. ^^TECO\\ ECHOES THE CHARACTER AS _^^U FOLLOWED BY CARRIAGE RETURN AND LINE FEED. .SKIP 1 .INDENT -20 ^CONTROL-^G####^CONTROL-^G, PRODUCED BY STRIKING THE THE ^CONTROL KEY AND THE ^G KEY SIMULTANEOUSLY, FOLLOWED BY A SPACE, CAUSES THE LINE CURRENTLY BEING INPUT TO BE RETYPED. ^THIS COMMAND IS FUNCTIONALLY IDENTICAL TO THE ^CONTROL-^R COMMAND OF THE ^R^S^X-11^D MULTI-^T^T^Y HANDLER. .LEFT MARGIN 5 .PARAGRAPH ^THE ^CONTROL-^Z CHARACTER IS USED AS AN END-OF-FILE TERMINATOR IN SOME CONTEXTS. ^WHILE ITS PRESENCE IS HARMLESS IN ^^RSTS/E\\ FILES, IT MAY CAUSE PREMATURE END OF FILE IF THE FILE IS COPIED TO OTHER MEDIA. .PARAGRAPH ^^TECO\\ ALSO ATTACHES SPECIAL SIGNIFICANCE TO THE CARRIAGE RETURN, LINE FEED, SPACE, AND NULL CHARACTERS. ^A LINE FEED IS APPENDED TO EVERY CARRIAGE RETURN ENTERED INTO THE TEXT BUFFER. ^THUS, IT IS NECESSARY TO TYPE A CARRIAGE RETURN AND THEN A ^^RUBOUT\\ IN ORDER TO ENTER A CARRIAGE RETURN WHICH IS NOT FOLLOWED BY A LINE FEED. .PARAGRAPH ^CARRIAGE RETURN, LINE FEED, AND SPACE CHARACTERS ARE IGNORED BETWEEN COMMANDS IN A COMMAND STRING; THEY MAY BE INSERTED FOR CLARITY OR CONVENIENCE WHENEVER NECESSARY. ^THE NULL CHARACTER (CONTROL-SHIFT-^P OR CONTROL-@) IS IGNORED BY ALL ^^TECO\\ INPUT COMMANDS. .PARAGRAPH ^CONTROL CHARACTERS WHICH ARE NOT SPECIAL CHARACTERS (I.E. IMMEDIATE ACTION COMMANDS) MAY BE INCLUDED IN THE TEXT ARGUMENT OF ANY ^^TECO\\ COMMAND. ^WHEN USED IN THIS MANNER, THE CONTROL CHARACTER MUST BE PRODUCED BY STRIKING THE ^^CONTROL\\ KEY AND A CHARACTER KEY SIMULTANEOUSLY. ^^TECO\\ WILL ECHO A CARET (OR UPARROW) FOLLOWED BY THE CHARACTER WHICH WAS TYPED WHENEVER MOST CONTROL CHARACTERS ARE ENTERED; THE OTHERS, SUCH AS CONTROL-^L (FORM FEED) OR CONTROL-^G (BELL) ECHO AS THE FUNCTION THEY PERFORM. .PARAGRAPH ^MANY CONTROL CHARACTERS ARE ALSO ^^TECO\\ COMMANDS. ^WHEN A CONTROL CHARACTER IS ENTERED AS A COMMAND, IT MAY BE PRODUCED BY STRIKING THE ^^CONTROL\\ KEY AND THE CHARACTER KEY SIMULTANEOUSLY OR ELSE BY TYPING A CARET (UPARROW) FOLLOWED BY THE DESIRED CHARACTER. ^THIS IS ADVANTAGEOUS BECAUSE ALL CONTROL CHARACTERS ECHO NORMALLY WHEN TYPED IN THE CARET/CHARACTER FORMAT. .SKIP 2 .TEST PAGE 10 2.1 ^^FILE SPECIFICATION COMMANDS\\ .PARAGRAPH ^AN INPUT FILE MUST BE SPECIFIED WHENEVER ^^TECO\\ IS REQUESTED TO ACCEPT TEXT FROM ANY SOURCE EXCEPT THE TERMINAL. ^AN OUTPUT FILE MUST BE SPECIFIED WHENEVER A PERMANENT CHANGE IS MADE TO THE INPUT FILE. ^INPUT AND OUTPUT FILES ARE SELECTED BY MEANS OF FILE SPECIFICATION COMMANDS. ^FILE SPECIFICATIONS INCLUDE DEVICE, DIRECTORY, FILE NAME, EXT, AND VERSION. ^IF THE DEVICE IS FILE-STRUCTURED, THE FILE NAME AND EXT ARE REQUIRED. ^IF A FILE EXT IS NOT EXPLICITLY DEFINED, THE NULL EXT IS ASSUMED. ^IF NO DIRECTORY IS SPECIFIED, THE ^^UFD\\ CORRESPONDING TO THE ^^PPN\\ UNDER WHICH ^^TECO\\ IS RUNNING IS ASSUMED. ^IF A FILE NAME IS SPECIFIED BUT NO DEVICE IS EXPLICITLY DEFINED, THE SYSTEM DEFAULT DEVICE (^S^Y) IS ASSUMED. ^IF A VERSION NUMBER IS NOT SPECIFIED, ^^TECO\\ USES THE LATEST VERSION NUMBER FOR INPUT FILES AND VERSION NUMBER ONE FOR FOR OUTPUT IN CASES WHERE THE OUTPUT FILE DOES NOT ALREADY EXIST; WHERE THE OUTPUT FILE EXISTS, ^^TECO\\ CREATES A NEW FILE WITH THE NEXT HIGHER VERSION NUMBER. .PARAGRAPH ^ALMOST EVERY EDITING JOB BEGINS WITH AT LEAST ONE FILE SPECIFICATION COMMAND. ^ADDITIONAL FILE SPECIFICATION COMMANDS MAY BE EXECUTED DURING AN EDITING JOB WHENEVER REQUIRED; HOWEVER, ^^TECO\\ WILL ONLY KEEP ONE INPUT FILE AND ONE OUTPUT FILE ACTIVE AT A TIME, AND THE SAME FILE MAY NOT BE USED FOR BOTH INPUT AND OUTPUT. .PARAGRAPH ^TABLE 2-1 LISTS THE FULL FILE SPECIFICATION COMMAND SET. .SKIP 2 .TEST PAGE 8 .CENTER 80 ^^TABLE 2-1:##FILE SPECIFICATION COMMANDS\\ .SKIP 1 .LEFT MARGIN 29 .INDENT -24 ^^COMMAND######################FUNCTION\\ .SKIP 1 .INDENT -24 ^E^RDEV:[X,X]FILE.EXT$#^OPENS A FILE FOR OUTPUT WHERE "DEV:[X,X]FILE.EXT" IS THE FILE SPECIFICATION AND "$" SIGNIFIES AN ^^ALT MODE\\. .SKIP 1 .INDENT -24 ^E^WDEV:[X,X]FILE.EXT$#^OPENS A FILE FOR OUTPUT WHERE "DEV:[X,X]FILE.EXT" IS THE FILE SPECIFICATION AND "$" SIGNIFIES AN ^^ALT MODE\\. .SKIP 1 .INDENT -24 ^E^BDEV:[X,X]FILE.EXT$#^THE ^E^B COMMAND MAY BE USED FOR FILES ON FILE-STRUCTURED DEVICES ONLY. ^IT OPENS FILE "DEV:[X,X]FILE.EXT" FOR INPUT AND FILE "DEV:[X,X]FILE.EXT" FOR OUTPUT. ^IN THE ^^EB\\ COMMAND, THE OUTPUT FILE VERSION IS ALWAYS DEFAULTED. .SKIP 1 .INDENT -24 ^E^F######################^CLOSES THE CURRENT OUTPUT FILE. .SKIP 1 .INDENT -24 ^E^C######################^MOVES THE REMAINDER OF THE CURRENT INPUT FILE TO THE CURRENT OUTPUT FILE, THEN CLOSES THE OUTPUT FILE. .SKIP 1 .INDENT -24 ^E^X######################^PERFORMS THE SAME FUNCTION AS THE ^E^C COMMAND, BUT THEN EXITS FROM ^^TECO\\. .SKIP 1 .INDENT -24 ^E^A######################^CLOSES THE CURRENT OUTPUT FILE, BUT "REMEMBERS" THE FILE. ^SUBSEQUENT TYPING OF '^E^W$' (WITHOUT A FILE STRING) RE-OPENS THE OUTPUT FILE FOR APPENDING. ^THE USE OF ^^EA\\ COMMANDS MAY NOT BE NESTED. .SKIP 1 .INDENT -24 ^E^P######################^CLOSES THE CURRENT INPUT FILE, BUT "REMEMBERS" THE FILE AND CURRENT RECORD. ^SUBSEQUENT TYPING OF '^E^R$' (WITHOUT A FILE STRING) RE-OPENS THE FILE FOR INPUT AT THE CURRENT RECORD. ^THE USE OF ^^EP\\ COMMANDS MAY NOT BE NESTED. .SKIP 1 .INDENT -24 ^E^K######################^KILL THE CURRENT EDIT. ^THIS COMMAND CLOSES AND DELETES THE CURRENT OUTPUT FILE. ^WARNING: ^EXECUTING THE ^^EK\\ COMMAND AFTER AN ^^EW\\ WHICH IS SUPERSEDING AN EXISTING VERSION DELETES BOTH THE OLD FILE AND THE NEW OUTPUT FILE. .SKIP 1 .INDENT -24 ^E^G######################^EQUIVALENT TO ^E^X. .LEFT MARGIN 5 .PARAGRAPH ^MANY EDITING JOBS ARE MOST CONVENIENTLY ACCOMPLISHED BY USING THE ^E^B COMMAND TO OPEN THE DESIGNATED INPUT AND OUTPUT FILE, THEN TERMINATING THE JOB WITH EITHER AN ^E^C COMMAND, WHICH RETURNS CONTROL TO ^^TECO\\, OR AN ^E^X COMMAND, WHICH EXITS FROM ^^TECO\\. .PARAGRAPH ^THE PRESENCE OF VERSION NUMBERS IN ^^FILES-11\\ CAUSES SOME OUTPUT FILE EFFECTS THAT HAVE NOT APPEARED WITH ^^TECO\\ UNDER OTHER OPERATING SYSTEMS. ^AN ^E^B WITH VERSION NUMBER DEFAULTED (I.E., ";0" OR UNSPECIFIED) WILL GENERATE A NEW FILE WITH THE NEXT HIGHEST VERSION NUMBER. ^THE PREVIOUS VERSION IS NOT REMOVED. ^SIMILARLY, AN ^E^W WITH DEFAULT VERSION PRODUCES THE NEXT HIGHER VERSION (OR VERSION 1 FOR A NEW FILE). ^HOWEVER, AN ^E^W WITH AN EXPLICIT VERSION NUMBER WILL SUPERSEDE AN EXISTING FILE OF THE SAME NAME-EXT-VERSION. ^NO WARNING IS GENERATED WHEN THIS OCCURS. .PARAGRAPH ^AN ^E^B WITH AN EXPLICIT VERSION WILL INPUT FROM THE SPECIFIED VERSION, BUT THE OUTPUT FILL BE FORCED TO THE DEFAULT VALUE. ^DURING AN ^E^B, IT IS NOT POSSIBLE TO RE-READ THE INPUT FILE WITH AN ^E^R ON THE (DEFAULT) LATEST VERSION, SINCE THE OUTPUT FILE ALREADY APPEARS IN THE DIRECTORY. ^TO RE-READ THE INPUT FILE, THE VERSION NUMBER MUST BE SPECIFIED. .PARAGRAPH ^^TECO\\ IS AN ^M^C^R FUNCTION, AND MAY BE STARTED IN EITHER OF THE THREE FOLLOWING WAYS: .TAB STOPS 30 .TEST PAGE 10 .SKIP 1 .NOFILL ^^MCR>TECO\\ .FILL .CENTER 80 OR .NOFILL ^^MCR>TECO\\ FILENAME<^C^R> .FILL .CENTER 80 OR .NOFILL ^^MCR>MAKE\\ FILENAME<^C^R> .FILL .SKIP 1 "^^TECO\\" JUST STARTS THE EDITOR. .BREAK "^^TECO\\ FILENAME<^C^R>" STARTS THE EDITOR AND EFFECTS AN "^^EB\\FILENAME$^Y". .BREAK "^^MAKE\\ FILENAME<^C^R>" STARTS THE EDITOR AND EFFECTS AN "^E^WFILENAME$". .SKIP 2 .TEST PAGE 10 2.2 ^^PAGE MANIPULATION COMMANDS\\ .PARAGRAPH ^IN THE SECTIONS FOLLOWING, THE LETTERS "M" AND "N" ARE USED IN COMMAND FORMATS TO INDICATE NUMERICAL ARGUMENTS. ^THESE MAY BE EITHER SIMPLE INTEGERS OR EXPRESSIONS OF ARBITRARY COMPLEXITY (EXPLAINED LATER). .PARAGRAPH ^THE FOLLOWING COMMANDS PERMIT WHOLE PAGES OF TEXT TO BE READ INTO THE TEXT BUFFER FROM AN INPUT FILE OR WRITTEN FROM THE BUFFER ONTO AN OUTPUT FILE. .SKIP 2 .TEST PAGE 6 .CENTER 80 ^^TABLE 2-2:##PAGE MANIPULATION COMMANDS\\ .SKIP 1 .LEFT MARGIN 15 .INDENT -10 ^^COMMAND\\########^^FUNCTION\\ .SKIP 1 .INDENT -10 ^A#########^APPENDS THE NEXT PAGE OF THE INPUT FILE TO THE CONTENT OF THE TEXT BUFFER, THUS COMBINING THE TWO PAGES OF TEXT ON A SINGLE PAGE WITH NO INTERVENING FORM FEED CHARACTER. .SKIP 1 .INDENT -10 ^Y#########^CLEARS THE TEXT BUFFER AND THEN READS THE NEXT PAGE OF THE INPUT FILE INTO THE BUFFER. .SKIP 1 .INDENT -10 ^P^W########^WRITE THE CONTENT OF THE BUFFER ONTO THE OUTPUT FILE AND APPEND A FORM FEED CHARACTER. ^THE BUFFER IS NOT CLEARED AND THE POINTER POSITION REMAINS UNCHANGED. .SKIP 1 .INDENT -10 N^P^W#######^EXECUTES THE ^P^W COMMAND N TIMES, WHERE N MUST BE AN INTEGER IN THE RANGE 0<=N<=65535. .SKIP 1 .INDENT -10 M,N^P^W#####^WRITES THE CONTENT OF THE BUFFER FROM THE M+1TH CHARACTER THROUGH AND INCLUDING THE NTH CHARACTER ONTO THE OUTPUT FILE. ^M AND N MUST BE INTEGERS IN THE RANGE 0<=N<=65535 AND M SHOULD BE LESS THEN N. ^A FORM FEED IS NOT APPENDED TO THIS OUTPUT, NOR IS THE BUFFER CLEARED. ^THE POINTER POSITION REMAINS UNCHANGED. .SKIP 1 .INDENT -10 ^H^P^W#######^EQUIVALENT TO THE ^P^W COMMAND EXCEPT THAT A FORM FEED CHARACTER IS NOT APPENDED TO THE OUTPUT. .SKIP 1 .INDENT -10 ^P#########^WRITES THE CONTENT OF THE BUFFER ONTO THE OUTPUT FILE, THEN CLEARS THE BUFFER AND READS THE NEXT PAGE OF THE INPUT FILE INTO THE BUFFER. ^A FORM FEED IS APPENDED TO THE OUTPUT FILE IF THE LAST PAGE READ IN WAS TERMINATED WITH A FORM FEED. .SKIP 1 .INDENT -10 N^P########^EXECUTES THE ^P COMMAND N TIMES, WHERE N MUST BE AN INTEGER IN THE RANGE 0<=N<=65535. .SKIP 1 .INDENT -10 M,N^P######^EQUIVALENT TO M,N^P^W. .SKIP 1 .INDENT -10 ^H^P########^EQUIVALENT TO ^H^P^W. .LEFT MARGIN 5 .PARAGRAPH ^ALL OF THE INPUT COMMANDS LISTED IN ^TABLE 2-2 ASSUME THAT THE INPUT FILE IS ORGANIZED INTO PAGES SMALL ENOUGH TO FIT INTO AVAILABLE MEMORY. ^IF ANY PAGE OF THE INPUT FILE CONTAINS MORE CHARACTERS THAN WILL FIT INTO AVAILABLE MEMORY, THE INPUT COMMAND WILL CONTINUE READING CHARACTERS INTO THE BUFFER UNTIL A LINE FEED IS ENCOUNTERED WHEN THE BUFFER IS ALMOST FULL. ^SPECIAL TECHNIQUES FOR HANDLING PAGES IN EXCESS OF THE BUFFER CAPACITY WILL BE DEVELOPED LATER IN THIS CHAPTER. .SKIP 2 .TEST PAGE 10 2.3 ^^BUFFER POINTER MANIPULATION COMMANDS\\ .PARAGRAPH ^TABLE 2-3 SUMMARIZES THE COMPLETE BUFFER POINTER MANIPULATION COMMAND SET. ^THESE COMMANDS MAY BE USED TO MOVE THE POINTER TO A POSITION BETWEEN ANY TWO CHARACTERS IN THE BUFFER, BUT THEY WILL NOT MOVE THE POINTER ACROSS EITHER BUFFER BOUNDARY. ^IF ANY ^R OR ^C COMMAND ATTEMPTS TO MOVE THE POINTER BACKWARD BEYOND THE BEGINNING OF THE BUFFER OR FORWARD PAST THE END OF THE BUFFER, THE COMMAND IS IGNORED AND AN ERROR MESSAGE IS PRINTED. ^IF ANY ^L COMMAND ATTEMPTS TO EXCEED THE BUFFER BOUNDARIES IN THIS MANNER, THE POINTER IS POSITIONED AT THE BOUNDARY WHICH WOULD HAVE BEEN EXCEEDED AND NO ERROR MESSAGE IS PRINTED. .SKIP 2 .TEST PAGE 7 .CENTER 80 ^^TABLE 2-3:##BUFFER POINTER MANIPULATION COMMANDS\\ .LEFT MARGIN 15 .SKIP 1 .INDENT -10 ^^COMMAND########FUNCTION\\ .SKIP 1 .INDENT -10 ^J#########^MOVES THE POINTER TO A POSITION IMMEDIATELY PRECEDING THE FIRST CHARACTER IN THE BUFFER. .SKIP 1 .INDENT -10 N^J########^MOVES THE POINTER TO A POSITION IMMEDIATELY FOLLOWING THE NTH CHARACTER IN THE BUFFER. .SKIP 1 .INDENT -10 ^Z^J########^MOVES THE POINTER TO A POSITION IMMEDIATELY FOLLOWING THE LAST CHARACTER IN THE BUFFER. .SKIP 1 .INDENT -10 ^C#########^ADVANCES THE POINTER FORWARD ACROSS ONE CHARACTER. .SKIP 1 .INDENT -10 N^C########^EXECUTES THE ^C COMMAND N TIMES. ^IF N IS POSITIVE, THE POINTER IS MOVED FORWARD ACROSS N CHARACTERS. ^IF N IS NEGATIVE, THE POINTER IS MOVED BACKWARD ACROSS N CHARACTERS. ^IF N IS ZERO, THE POINTER POSITION IS NOT CHANGED. .SKIP 1 .INDENT -10 -^C########^EQUIVALENT TO -1^C. .SKIP 1 .INDENT -10 ^R#########^MOVES THE POINTER BACKWARD ACROSS ONE CHARACTER. .SKIP 1 .INDENT -10 N^R########^EXECUTES THE ^R COMMAND N TIMES. ^IF N IS POSITIVE, THE POINTER IS MOVED BACKWARD ACROSS N CHARACTERS. ^IF N IS NEGATIVE, THE POINTER IS MOVED FORWARD ACROSS N CHARACTERS. ^IF N IS ZERO, THE POSITION OF THE POINTER IS NOT CHANGED. .SKIP 1 .INDENT -10 -^R########^EQUIVALENT TO -1^R. .SKIP 1 .INDENT -10 ^L#########^ADVANCES THE POINTER FORWARD ACROSS THE NEXT LINE FEED AND POSITIONS IT AT THE BEGINNING OF THE NEXT LINE. .SKIP 1 .INDENT -10 N^L########^EXECUTES THE ^L COMMAND N TIMES. ^A POSITIVE VALUE OF N ADVANCES THE POINTER TO THE BEGINNING OF THE NTH LINE FOLLOWING ITS CURRENT POSITION. ^A NEGATIVE VALUE OF N MOVES THE POINTER BACKWARDS TO THE BEGINNING OF THE NTH LINE PRECEDING ITS CURRENT POSITION. ^IF N IS ZERO, THE POINTER IS MOVED TO THE BEGINNING OF THE LINE ON WHICH IT IS CURRENTLY POSITIONED. .SKIP 1 .INDENT -10 -^L########^EQUIVALENT TO -1^L. .LEFT MARGIN 5 .SKIP 2 .TEST PAGE 10 2.4 ^^TEXT TYPE-OUT COMMANDS\\ .PARAGRAPH ^TABLE 2-4 SUMMARIZES THE COMMANDS WHICH MAY BE USED TO TYPE OUT PART OR ALL OF THE CONTENT OF THE BUFFER FOR EXAMINATION. ^THESE COMMANDS DO NOT MOVE THE BUFFER POINTER. .SKIP 2 .TEST PAGE 7 .CENTER 80 ^^TABLE 2-4:##TEXT TYPE-OUT COMMANDS\\ .LEFT MARGIN 15 .SKIP 1 .INDENT -10 ^^COMMAND########FUNCTION\\ .SKIP 1 .INDENT -10 ^T#########^TYPES OUT THE CONTENT OF THE BUFFER FROM THE CURRENT POSITION OF THE BUFFER POINTER THROUGH AND INCLUDING THE NEXT LINE FEED CHARACTER. .SKIP 1 .INDENT -10 N^T########^TYPES N LINES. ^IF N IS POSITIVE, THE N LINES FOLLOWING THE CURRENT POSITION OF THE POINTER ARE TYPED. ^IF N IS NEGATIVE, THE N LINES PRECEDING THE POINTER ARE TYPED. ^IF N IS ZERO, THE CONTENT OF THE BUFFER FROM THE BEGINNING OF THE LINE ON WHICH THE POINTER IS LOCATED UP TO THE POINTER IS TYPED. .SKIP 1 .INDENT -10 -^T########^EQUIVALENT TO -1^T. .SKIP 1 .INDENT -10 M,N^T######^TYPES OUT THE CONTENT OF THE BUFFER FROM THE M+1TH CHARACTER THROUGH AND INCLUDING THE NTH CHARACTER IN THE BUFFER. ^M SHOULD BE LESS THAN N. .SKIP 1 .INDENT -10 .,.+N^T####^TYPES OUT THE N CHARACTERS IMMEDIATELY FOLLOWING THE BUFFER POINTER. ^N SHOULD BE GREATER THAN ZERO. .SKIP 1 .INDENT -10 .-N,.^T####^TYPES THE N CHARACTERS IMMEDIATELY PRECEDING THE BUFFER POINTER. ^N SHOULD BE GREATER THAN ZERO (I. E., -N SHOULD BE LESS THAN ZERO). .SKIP 1 .INDENT -10 ^H^T########^TYPES OUT THE ENTIRE CONTENT OF THE BUFFER. .SKIP 1 .INDENT -10 ^V#########^TYPES OUT THE CURRENT LINE. ^EQUIVALENT TO 0^T^T. .LEFT MARGIN 5 .PARAGRAPH ^USERS MAY STOP THE EXECUTION OF ANY ^T COMMAND BY TYPING CONTROL-^O AT THE KEYBOARD. ^TYPING CONTROL-^O TERMINATES EXECUTION OF THE CURRENT ^T COMMAND. ^WHEN USED IN THIS MANNER, THE CONTROL-^O MUST BE ENTERED WHILE ^^TECO\\ IS ACTUALLY IN THE PROCESS OF TYPING OUT AT THE TERMINAL. .SKIP 2 .TEST PAGE 10 2.5 ^^DELETION COMMANDS\\ .PARAGRAPH ^TABLE 2-5 SUMMARIZES THE TEXT DELETION COMMANDS, WHICH PERMIT DELETION OF SINGLE CHARACTERS, GROUPS OF ADJACENT CHARACTERS, SINGLE LINES, OR GROUPS OF ADJACENT LINES. .SKIP 2 .TEST PAGE 10 .CENTER 80 ^^TABLE 2-5:##TEXT DELETION COMMANDS\\ .LEFT MARGIN 15 .SKIP 1 .INDENT -10 ^^COMMAND########FUNCTION\\ .SKIP 1 .INDENT -10 ^D#########^DELETE THE FIRST CHARACTER FOLLOWING THE CURRENT POSITION OF THE BUFFER POINTER. .SKIP 1 .INDENT -10 N^D########^EXECUTE THE ^D COMMAND N TIMES. ^IF N IS POSITIVE, THE N CHARACTERS FOLLOWING THE CURRENT POINTER POSITION ARE DELETED. ^IF N IS NEGATIVE, THE N CHARACTERS PRECEDING THE CURRENT POINTER POSITION ARE DELETED. ^IF N IS ZERO, THE COMMAND IS IGNORED. .SKIP 1 .INDENT -10 -^D########^EQUIVALENT TO -1^D. .SKIP 1 .INDENT -10 ^K#########^DELETES THE CONTENT OF THE BUFFER FROM THE CURRENT POSITION OF THE BUFFER POINTER THROUGH AND INCLUDING THE NEXT LINE FEED CHARACTER. .SKIP 1 .INDENT -10 N^K########^EXECUTES THE ^K COMMAND N TIMES. ^IF N IS POSITIVE, THE N LINES FOLLOWING THE CURRENT POINTER POSITION ARE DELETED. ^IF N IS NEGATIVE, THE N LINES PRECEDING THE CURRENT POINTER POSITION ARE DELETED. ^IF N IS ZERO, THE CONTENT OF THE BUFFER FROM THE BEGINNING OF THE LINE ON WHICH THE POINTER IS LOCATED UP TO THE POINTER IS DELETED. .SKIP 1 .INDENT -10 -^K########^EQUIVALENT TO -1^K. .SKIP 1 .INDENT -10 M,N^K######^DELETES THE CONTENT OF THE BUFFER FROM THE M+1TH CHARACTER THROUGH AND INCLUDING THE NTH CHARACTER. ^M SHOULD BE LESS THAN N. .SKIP 1 .INDENT -10 ^H^K########^DELETES THE ENTIRE CONTENTS OF THE BUFFER. .LEFT MARGIN 5 .SKIP 2 .TEST PAGE 10 2.6 ^^INSERTION COMMANDS\\ .PARAGRAPH ^TABLE 2-6 LISTS THE FULL TEXT INSERTION COMMAND SET. ^ALL TEXT INSERTION COMMANDS CAUSE THE STRING OF CHARACTERS SPECIFIED IN THE COMMAND TO BE INSERTED INTO THE TEXT BUFFER AT THE CURRENT POSITION OF THE BUFFER POINTER. ^FOLLOWING EXECUTION OF AN INSERTION COMMAND, THE POINTER WILL BE POSITIONED IMMEDIATELY AFTER THE LAST CHARACTER OF THE INSERTION. .PARAGRAPH ^THE LENGTH OF AN INSERTION COMMAND IS LIMITED PRIMARILY BY THE AMOUNT OF MEMORY AVAILABLE FOR COMMAND STRING STORAGE. ^DURING NORMAL EDITING JOBS, IT IS MOST CONVENIENT TO LIMIT INSERTIONS TO ABOUT 10 OR 15 LINES EACH. ^WHEN COMMAND STRING SPACE IS ABOUT TO RUN OUT, ^^TECO\\ WILL ECHO _^^G (^BELL) AFTER EACH CHARACTER THAT IS TYPED. ^ATTEMPTING TO ENTER TOO MANY CHARACTERS INTO THE CURRENT COMMAND STRING CAUSES ^^TECO\\ TO DELETE THEM AS THEY ARE ENTERED. ^USE OF THE ^^RUBOUT\\ KEY SHOULD BE ATTEMPTED TO SHORTEN THE COMMAND TO PERMIT ITS TERMINATION. .PARAGRAPH ^WITH THE EXCEPTION OF THE N^I$ COMMAND, INSERTION COMMAND ARGUMENTS MAY CONTAIN ANY ^^ASCII\\ CHARACTERS THAT ARE NOT SPECIAL CHARACTERS. (^SEE ^TABLE 2-0.) ^THE N^I$ COMMAND WILL INSERT ANY CHARACTER INTO THE BUFFER, INCLUDING THE SPECIAL CHARACTERS. .SKIP 2 .TEST PAGE 7 .CENTER 80 ^^TABLE 2-6:##TEXT INSERTION COMMANDS\\ .LEFT MARGIN 15 .SKIP 1 .INDENT -10 ^^COMMAND########FUNCTION\\ .SKIP 1 .INDENT -10 ^ITEXT$####^WHERE "TEXT" IS A STRING OF ^^ASCII\\ CHARACTERS TERMINATED BY AN ^^ALT MODE\\, WHICH ECHOES AS A DOLLAR SIGN. ^THE SPECIFIED TEXT STRING IS ENTERED INTO THE BUFFER AT THE CURRENT POSITION OF THE POINTER, WITH THE POINTER POSITIONED IMMEDIATELY AFTER THE LAST CHARACTER OF THE INSERTION. .SKIP 1 .INDENT -10 N^I$#######^THIS FORM OF THE ^I COMMAND INSERTS THE SINGLE CHARACTER WHOSE ^^ASCII\\ CODE IS N INTO THE BUFFER AT THE CURRENT POSITION OF THE BUFFER POINTER. ^IT MAY BE USED TO INSERT CHARACTERS THAT ARE NOT AVAILABLE ON THE USER'S TERMINAL OR SPECIAL CHARACTERS SUCH AS ^^RUBOUT\\ WHICH MAY NOT BE INSERTED WITH THE STANDARD ^I COMMAND. .SKIP 1 .INDENT -10 TEXT$#^WHERE IS A TABULATION, PRODUCED BY STRIKING THE ^^TAB\\ KEY OR BY PRESSING THE ^^CONTROL\\ KEY AND THE ^I KEY SIMULTANEOUSLY. ^THE ^^TAB\\ CHARACTER ECHOES AS FROM ONE TO EIGHT SPACES ON MOST TERMINALS. ^THIS COMMAND IS EQUIVALENT TO THE ^I COMMAND EXCEPT THAT THE TABULATION IS ALSO INSERTED INTO THE BUFFER IMMEDIATELY PRECEDING THE SPECIFIED TEXT STRING. .SKIP 1 .INDENT -10 @^I/TEXT/##^EQUIVALENT TO THE ^I COMMAND EXCEPT THAT THE TEXT TO BE INSERTED MAY CONTAIN ^^ALT MODE\\ CHARACTERS. ^A DELIMITING CHARACTER (SHOWN AS A SLASH HERE) MUST PRECEDE AND FOLLOW THE TEXT TO BE INSERTED. ^THIS DELIMITER MAY BE ANY CHARACTER WHICH DOES NOT APPEAR IN THE INSERTION EXCEPT FOR THE SPECIAL CHARACTERS. ^THIS @ AND ALTERNATE DELIMITER CONSTRUCT MAY BE USED IN ALL COMMANDS WHICH TAKE A STRING ARGUMENT. .SKIP 1 .INDENT -10 ^F^RTEXT$###^EQUIVALENT TO "-N^D^ITEXT$", WHERE "N" IS OBTAINED FROM THE MOST RECENT OCCURRENCE OF THE FOLLOWING: (A) THE LENGTH OF THE MOST RECENT SEARCH STRING, (B) THE LENGTH OF THE LAST INSERT, OR (C) THE LENGTH OF THE STRING RETRIEVED BY THE MOST RECENT "^G" COMMAND. .SKIP 1 .INDENT -10 @^F^R/TEXT/#^EQUIVALENT TO "^F^RTEXT$", EXCEPT THAT "TEXT" MAY CONTAIN ^^ALT MODE\\ CHARACTERS. ^THE DELIMITER (SHOWN AS A SLASH HERE) MUST NOT BE PRESENT IN "TEXT". .LEFT MARGIN 5 .SKIP 2 .TEST PAGE 10 2.7 ^^SEARCH COMMANDS\\ .PARAGRAPH ^IN MANY CASES, THE EASIEST WAY TO POSITION THE BUFFER POINTER IS BY MEANS OF A CHARACTER STRING SEARCH. ^THE SEARCH COMMANDS CAUSE ^^TECO\\ TO SCAN THROUGH TEXT UNTIL A SPECIFIED STRING OF CHARACTERS IS FOUND, AND THEN POSITION THE BUFFER POINTER AT THE END OF THE STRING. ^A CHARACTER STRING SEARCH ALWAYS BEGINS AT THE CURRENT POSITION OF THE POINTER AND PROCEEDS IN A FORWARD DIRECTION, OR IN A REVERSE DIRECTION WITHIN THE CURRENT BUFFER ONLY. .SKIP 2 .TEST PAGE 6 .CENTER 80 ^^TABLE 2-7: SEARCH COMMANDS\\ .LEFT MARGIN 25 .SKIP 1 .INDENT -20 ^STEXT$##############^WHERE "TEXT" IS A STRING OF CHARACTERS TERMINATED BY AN ^^ALT MODE\\. ^THIS COMMAND SEARCHES THE TEXT BUFFER FOR THE NEXT OCCURRENCE OF THE SPECIFIED CHARACTER STRING FOLLOWING THE CURRENT POSITION OF THE BUFFER POINTER. ^IF THE STRING IS FOUND, THE POINTER IS POSITIONED AFTER THE LAST CHARACTER IN THE STRING. ^IF IT IS NOT FOUND, THE POINTER IS POSITIONED IMMEDIATELY BEFORE THE FIRST CHARACTER IN THE BUFFER AND AN ERROR MESSAGE IS PRINTED. .SKIP 1 .INDENT -20 N^STEXT$#############^THIS COMMAND SEARCHES FOR THE NTH OCCURRENCE OF THE SPECIFIED CHARACTER STRING, WHERE N MUST BE GREATER THAN ZERO. ^IT IS IDENTICAL TO THE ^S COMMAND IN OTHER RESPECTS. .SKIP 1 .INDENT -20 .SKIP 1 .INDENT -20 -N^STEXT$############^IDENTICAL TO "N^STEXT$" EXCEPT THAT THE SEARCH PROCEEDS IN THE REVERSE DIRECTION. ^IF THE STRING IS NOT FOUND, THE POINTER IS POSITIONED IMMEDIATELY BEFORE THE FIRST CHARACTER IN THE BUFFER AND AN ERROR MESSAGE IS PRINTED. ^IF THE POINTER IS POSITIONED AT THE BEGINNING OF AN OCCURRENCE OF THE DESIRED STRING, THAT OCCURRENCE IS CONSIDERED TO BE THE FIRST ONE FOUND. .SKIP 1 .INDENT -20 -^STEXT$#############^EQUIVALENT TO -1^STEXT$. .SKIP 1 .INDENT -20 ^NTEXT$##############^PERFORMS THE SAME FUNCTION AS THE ^S COMMAND EXCEPT THAT THE SEARCH IS CONTINUED ACROSS PAGE BOUNDARIES, IF NECESSARY, UNTIL THE CHARACTER STRING IS FOUND OR THE END OF THE INPUT FILE IS REACHED. ^THIS IS ACCOMPLISHED BY EXECUTING AN EFFECTIVE ^P COMMAND AFTER EACH PAGE IS SEARCHED. ^IF THE END OF THE INPUT FILE IS REACHED, AN ERROR MESSAGE IS PRINTED AND IT IS NECESSARY TO CLOSE THE OUTPUT FILE AND RE-OPEN IT AS AN INPUT FILE BEFORE ANY FURTHER EDITING MAY BE DONE ON THAT FILE. ^THE ^N COMMAND WILL NOT LOCATE A CHARACTER STRING WHICH SPANS A PAGE BOUNDARY. .SKIP 1 .INDENT -20 N^NTEXT$#############^THIS COMMAND SEARCHES FOR THE NTH OCCURRANCE OF THE SPECIFIED CHARACTER STRING, WHERE N MUST BE GREATER THAN ZERO. ^IT IS IDENTICAL TO THE ^N COMMAND IN OTHER RESPECTS. .SKIP 1 .INDENT -20 __TEXT$##############^THE UNDERSCORE (BACKARROW) COMMAND IS IDENTICAL TO THE ^N COMMAND EXCEPT THAT THE SEARCH IS CONTINUED ACROSS PAGE BOUNDARIES BY EXECUTING EFFECTIVE ^Y COMMANDS INSTEAD OF ^P COMMANDS, SO THAT NO OUTPUT IS GENERATED. .SKIP 1 .INDENT -20 N__TEXT$#############^THIS COMMAND SEARCHES FOR THE NTH OCCURRENCE OF THE SPECIFIED CHARACTER STRING, WHERE N MUST BE GREATER THAN ZERO. ^IT IS IDENTICAL TO THE __ COMMAND IN OTHER RESPECTS. .SKIP 1 .INDENT -20 ^F^STEXT1$TEXT2$######^EXECUTES AN ^STEXT1$ COMMAND, THEN DELETES "TEXT1" AND REPLACES IT WITH "TEXT2". .SKIP 1 .INDENT -20 _^^RTEXT1$TEXT2$######^EQUIVALENT TO ^F^STEXT1$TEXT2$. _^^R MUST BE TYPED AS CARET-^R. .SKIP 1 .INDENT -20 N^F^STEXT1$TEXT2$#####^EXECUTES AN N^STEXT1$ COMMAND, THEN DELETES "TEXT1" AND REPLACES IT WITH "TEXT2". .SKIP 1 .INDENT -20 ^F^NTEXT1$TEXT2$######^EXECUTES AN ^NTEXT1$ COMMAND, THEN DELETES "TEXT1" AND REPLACES IT WITH "TEXT2". .SKIP 1 .INDENT -20 N^F^NTEXT1$TEXT2$#####^EXECUTES AN N^NTEXT1$ COMMAND, THEN DELETES "TEXT1" AND REPLACES IT WITH "TEXT2". .LEFT MARGIN 5 .PARAGRAPH ^IF A SEARCH COMMAND IS ENTERED WITHOUT A TEXT ARGUMENT, ^^TECO\\ WILL EXECUTE THE SEARCH COMMAND AS THOUGH IT HAD BEEN ENTERED WITH THE SAME CHARACTER STRING ARGUMENT AS THE LAST SEARCH COMMAND ENTERED. ^FOR EXAMPLE, SUPPOSE THE COMMAND "^^STHE#END\\$" RESULTS IN AN ERROR MESSAGE, INDICATING THAT CHARACTER STRING "^^THE#END\\" WAS NOT FOUND ON THE CURRENT PAGE. ^ENTERING THE COMMAND "^N$" CAUSES ^^TECO\\ TO EXECUTE AN ^N SEARCH FOR THE SAME CHARACTER STRING. ^ALTHOUGH THE TEXT ARGUMENT MAY BE OMITTED, THE COMMAND TERMINATOR (^^ALT MODE\\) MUST ALWAYS BE ENTERED. .PARAGRAPH ^ANY OF THE SEARCH COMMANDS LISTED ABOVE MAY BE PRECEDED BY A COLON (:). ^THE COLON IS A SEARCH COMMAND MODIFIER WHICH SUPRESSES ERROR MESSAGE GENERATION AND CAUSES THE SEARCH COMMAND TO "RETURN A VALUE" INSTEAD. ^THAT IS, THE NEXT SEQUENTIAL COMMAND IS EXECUTED WITH AN ARGUMENT OF ZERO IF THE SEARCH FAILS. ^IF THE SEARCH SUCCEEDS, THE NEXT SEQUENTIAL COMMAND IS EXECUTED WITH AN ARGUMENT OF -1. ^IF THE NEXT SEQUENTIAL COMMAND BELONGS TO THE CLASS OF COMMANDS WHICH REQUIRE A POSITIVE ARGUMENT, THE -1 IS INTERPRETED AS A POSITIVE 65535. ^IF THE NEXT SEQUENTIAL COMMAND DOES NOT REQUIRE AN ARGUMENT, IT IS EXECUTED AS IT STANDS. ^THE FOLLOWING EXAMPLES ILLUSTRATE USE OF THE COLON MODIFIER. .LEFT MARGIN 20 .SKIP 1 .INDENT -15 ^^COMMANDS:\\######N:^STEXT$ .NOFILL :^NTEXT$ N:^NTEXT$ :__TEXT$ N:__TEXT$ :^F^STEXT1$TEXT2$ N:^F^STEXT1$TEXT2$ :^F^NTEXT1$TEXT2$ N:^F^NTEXT1$TEXT2$ .FILL .SKIP 1 .INDENT -15 ^^FUNCTION:######I\\N EACH CASE, EXECUTE THE SEARCH COMMAND. ^IF THE SEARCH IS SUCCESSFUL, EXECUTE THE NEXT SEQUENTIAL COMMAND WITH AN ARGUMENT OF -1 (OR 65535, IF IT IS A COMMAND WHICH MUST HAVE A POSITIVE ARGUMENT). ^IF THE SEARCH FAILS, EXECUTE THE NEXT COMMAND WITH AN ARGUMENT OF ZERO. ^IF THE NEXT COMMAND DOES NOT REQUIRE A NUMERIC ARGUMENT, EXECUTE IT AS IT STANDS. .SKIP 2 .INDENT -15 ::^STEXT$#######^COMPARE COMMAND. ^THE ::^S COMMAND IS NOT A TRUE SEARCH. ^IF THE CHARACTERS IN THE BUFFER IMMEDIATELY FOLLOWING THE CURRENT POINTER POSITION MATCH THE SEARCH STRING, THE POINTER IS MOVED TO THE END OF THE STRING AND THE COMMAND RETURNS A VALUE OF -1; I.E., THE NEXT COMMAND IS EXECUTED WITH AN ARGUMENT OF -1. ^IF THE CHARACTERS IN THE BUFFER DO NOT MATCH THE STRING, THE POINTER IS NOT MOVED AND THE COMMAND RETURNS A VALUE OF 0. .LEFT MARGIN 5 .PARAGRAPH ^THE @ CHARACTER IS ANOTHER SEARCH COMMAND MODIFIER. ^INSERTING AN @ CHARACTER BETWEEN THE NUMERIC ARGUMENT OF ANY SEARCH COMMAND AND THE COMMAND ITSELF CAUSES ^^TECO\\ TO ACCEPT THE FIRST CHARACTER FOLLOWING THE COMMAND AS A DELIMITING CHARACTER WHICH WILL ALSO BE THE COMMAND TERMINATOR. ^THIS CHARACTER MAY BE ANY CHARACTER WHICH DOES NOT APPEAR IN THE SEARCH COMMAND ARGUMENT, EXCEPT FOR SPECIAL CHARACTERS. ^WHEN THE @ COMMAND IS USED, SEARCH COMMAND ARGUMENTS MAY CONTAIN ^^ALT MODE\\ CHARACTERS. ^THE FOLLOWING EXAMPLES ILLUSTRATE USE OF THE @ COMMAND MODIFIER. .SKIP 1 .LEFT MARGIN 20 .INDENT -15 ^^COMMANDS:\\######@^S/TEXT/ .NOFILL N@^S/TEXT/ @^N/TEXT/ N@^N/TEXT/ @__/TEXT/ N@__/TEXT/ @^F^S/TEXT/TEXT2/ N@^F^S/TEXT/TEXT2/ @^F^N/TEXT/TEXT2/ N@^F^N/TEXT/TEXT2/ .FILL .SKIP 1 .INDENT -15 ^^FUNCTION:\\######^IN EACH CASE, EXECUTE THE SEARCH COMMAND WITH TEXT STRING "TEXT" AS AN ARGUMENT. ^THIS ARGUMENT MUST BE PRECEDED AND FOLLOWED BY A DELIMITING CHARACTER WHICH DOES NOT APPEAR IN THE ARGUMENT (A SLASH IS SHOWN HERE). ^THE SEARCH COMMAND ARGUMENT (AND THE REPLACEMENT STRING IN ^F^S AND ^F^N) MAY CONTAIN ^^ALT MODE\\ CHARACTERS. .LEFT MARGIN 5 .PARAGRAPH ^NEEDLESS TO SAY, THESE CONSTRUCTS MAY BE COMBINED. .SKIP 1 .LEFT MARGIN 20 .INDENT -15 ^^COMMANDS:\\######:@^S/TEXT/ .NOFILL :@^N/TEXT/ N:@^N/TEXT/ :@__/TEXT/ N:@__/TEXT/ :@^F^S/TEXT1/TEXT2/ N:@^F^S/TEXT1/TEXT2/ :@^F^N/TEXT1/TEXT2/ N:@^F^N/TEXT1/TEXT2/ .FILL .LEFT MARGIN 5 .SKIP 2 .TEST PAGE 10 2.8 ^^MATCH CONTROL CHARACTERS\\ .PARAGRAPH ^^TECO\\ EXECUTES A SEARCH COMMAND BY ATTEMPTING TO MATCH THE SEARCH COMMAND ARGUMENT CHARACTER-BY-CHARACTER WITH SOME PORTION OF THE INPUT FILE. ^THERE ARE SEVERAL SPECIAL CONTROL CHARACTERS THAT MAY BE USED IN SEARCH COMMAND ARGUMENTS. ^THESE CHARACTERS ALTER THE USUAL MATCHING PROCESS THAT OCCURS WHEN A SEARCH IS EXECUTED. ^TABLE 2-8 LISTS THE MATCH CONTROL CHARACTERS AND THEIR FUNCTIONS. .SKIP 2 .TEST PAGE 6 .CENTER 80 ^^TABLE 2-8: MATCH CONTROL CHARACTERS\\ .LEFT MARGIN 20 .SKIP 1 .INDENT -15 ^^CHARACTER######FUNCTION\\ .SKIP 1 .INDENT -15 ^CONTROL-^X######^A CONTROL-^X CHARACTER INDICATES THAT THIS POSITION IN THE CHARACTER STRING IS UNIMPORTANT. ^^TECO\\ ACCEPTS ANY CHARACTER AS A MATCH FOR CONTROL-^X. ^CONTROL-^X CANNOT BE TYPED IN UNDER ^^RSTS/E\\. ^HOWEVER, A SEARCH STRING CAN BE BUILT IN THE BUFFER WITH N^I$ AND EXECUTED. .SKIP 1 .INDENT -15 ^CONTROL-^S######^A CONTROL-^S CHARACTER INDICATES THAT ANY SEPARATOR CHARACTER IS ACCEPTABLE IN THIS POSITION. ^^TECO\\ ACCEPTS ANY CHARACTER THAT IS NOT A LETTER (UPPER OR LOWER CASE ^A TO ^Z) OR A DIGIT (0 TO 9) AS A MATCH FOR CONTROL-^S. .SKIP 1 .INDENT -15 ^CONTROL-^N######^^TECO\\ ACCEPTS ANY CHARACTER AS A MATCH FOR THE CONTROL-^N/CHARACTER COMBINATION ^^EXCEPT\\ THE CHARACTER WHICH FOLLOWS THE CONTROL-^N. ^THE COMBINATION CONTROL-^N/CONTROL-^S IS LEGAL; ^^TECO\\ ACCEPTS ANY CHARACTER WHICH IS NOT A SEPARATOR AS A MATCH FOR _^^N/_^^S. .SKIP 1 .INDENT -15 ^CONTROL-^Q######^A CONTROL-^Q CHARACTER IN A SEARCH COMMAND ARGUMENT INDICATES THAT THE CHARACTER FOLLOWING THE CONTROL-^Q IS TO BE INTERPRETED LITERALLY RATHER THAN AS A MATCH CONTROL CHARACTER. ^THIS CHARACTER MAY BE USED TO SEARCH FOR OTHER MATCH CONTROL CHARACTERS. .SKIP 1 .INDENT -15 ^CONTROL-^E^A#####^CONTROL-^E^A INDICATES THAT ANY ALPHABETIC CHARACTER IS ACCEPTABLE IN THIS POSITION. ^^TECO\\ ACCEPTS ANY LETTER (UPPER OR LOWER CASE ^A TO ^Z) AS A MATCH FOR _^^E^A. .SKIP 1 .INDENT -15 ^CONTROL-^E^D#####^CONTROL-^E^D INDICATES THAT ANY DIGIT IS ACCEPTABLE IN THIS POSITON. ^^TECO\\ ACCEPTS ANY DIGIT (0 TO 9) AS A MATCH FOR _^^E^D. .SKIP 1 .INDENT -15 ^CONTROL-^E^L#####^CONTROL-^E^L INDICATES THAT ANY LINE TERMINATOR IS ACCEPTABLE IN THE POSITION OCCUPIED BY _^^E^L IN THE SEARCH STRING. ^LINE TERMINATORS ARE LINE FEED, VERTICAL TAB, AND FORM FEED. .SKIP 1 .INDENT -15 ^CONTROL-^E^X#####^EQUIVALENT TO _^^X. .SKIP 1 .INDENT -15 ^CONTROL-^E^S#####^CONTROL-^E^S INDICATES THAN A STRING OF SPACES AND/OR TABS IS ACCEPTABLE IN THE POSITION OCCUPIED BY _^^E^S. .SKIP 1 .INDENT -15 ^CONTROL-^E^QQ####^CONTROL-^E^QQ INDICATES THAT THE STRING STORED IN ^Q-REGISTER Q IS TO BE USED IN THE POSITION OCCUPIED BY THE _^^E^QQ IN THE SEARCH STRING. ^Q REGISTERS ARE DISCUSSED IN SECTION 2.10 BELOW. .LEFT MARGIN 5 .PARAGRAPH ^AS WITH ALL OTHER CONTROL CHARACTERS ENTERED INTO TEXT ARGUMENTS, MATCH CONTROL CHARACTERS MUST BE TYPED BY HOLDING THE ^^CONTROL\\ KEY DEPRESSED WHILE STRIKING THE CHARACTER KEY. ^THE CARET (UPARROW) CONSTRUCTION MAY NOT BE USED. .PARAGRAPH .SKIP 2 .TEST PAGE 10 2.9 ^^COMMAND LOOPS\\ .PARAGRAPH ^THE USER MAY CAUSE A COMMAND STRING TO BE EXECUTED ANY NUMBER OF TIMES BY PLACING THE COMMAND STRING WITHIN ANGLE BRACKETS AND PRECEDING THE BRACKETS WITH A NUMERIC ARGUMENT WHICH DESIGNATES THE NUMBER OF ITERATIONS. ^ITERATED COMMAND STRINGS ARE CALLED COMMAND LOOPS. ^LOOPS MAY BE NESTED IN SUCH A WAY THAT ONE COMMAND LOOP CONTAINS ANOTHER COMMAND LOOP, WHICH, IN TURN, CONTAINS OTHER COMMAND LOOPS, AND SO ON. ^THE MAXIMUM DEPTH TO WHICH COMMAND LOOPS MAY BE NESTED IS DETERMINED BY THE SIZE OF ^^TECO\\'S PUSH-DOWN LIST, WHICH MAY BE ALTERED BY RE-BUILDING ^^TECO\\. .PARAGRAPH ^THE GENERAL FORM OF THE COMMAND LOOP IS: .SKIP 1 .LEFT MARGIN 15 N .LEFT MARGIN 5 .SKIP 1 WHERE "COMMAND STRING" IS THE SEQUENCE OF COMMANDS TO BE ITERATED AND N IS THE NUMBER OF ITERATIONS. ^N MUST BE A POSITIVE INTEGER. ^IF N IS NOT SUPPLIED, A VALUE OF 65536 IS ASSUMED. .PARAGRAPH ^IF A SEARCH COMMAND WHICH IS NOT PRECEDED BY A COLON MODIFIER IS EXECUTED WITHIN A COMMAND LOOP AND THE SEARCH FAILS, AN ERROR MESSAGE IS PRINTED, THE COMMAND LOOP IS EXITED IMMEDIATELY AND THE COMMAND FOLLOWING THE RIGHT ANGLE BRACKETS OF THE LOOP IS THE NEXT COMMAND TO BE EXECUTED. .SKIP 2 .TEST PAGE 10 2.10 ^^Q-REGISTERS\\ .PARAGRAPH ^^TECO\\ PROVIDES 36 DATA STORAGE REGISTERS, CALLED ^Q-REGISTERS, WHICH MAY BE USED TO STORE SINGLE INTEGERS AND/OR ^^ASCII\\ CHARACTER STRINGS. ^EACH ^Q-REGISTER IS DIVIDED INTO TWO STORAGE AREAS. ^IN THE NUMBER STORAGE AREA, EACH ^Q-REGISTER CAN STORE ONE INTEGER IN THE RANGE -32768<=N<=32767. ^IN THE TEXT STORAGE AREA, EACH ^Q-REGISTER CAN STORE AN ^^ASCII\\ CHARACTER STRING WHICH MAY BE EITHER TEXT OR A ^^TECO\\ COMMAND STRING. ^EACH ^Q-REGISTER HAS A SINGLE CHARACTER NAME WHICH IS ONE OF THE LETTERS ^A TO ^Z OR ONE OF THE DIGITS 0 TO 9. ^UPPER AND LOWER CASE LETTERS MAY BE USED INTERCHANGEABLY. ^IN THIS MANUAL, A ^Q-REGISTER NAME IS INDICATED BY A LOWER CASE "Q", WHICH STANDS FOR ANY ONE OF THE 36 ^Q-REGISTERS. .PARAGRAPH ^TABLE 2-10^A LISTS THE COMMANDS WHICH PERMIT CHARACTERS TO BE LOADED INTO THE ^Q-REGISTERS. .SKIP 2 .TEST PAGE 7 .CENTER 80 ^^TABLE 2-10A: Q-REGISTER LOADING COMMANDS\\ .LEFT MARGIN 20 .SKIP 1 .INDENT -15 ^^COMMAND########FUNCTION\\ .SKIP 1 .INDENT -15 _^^UQSTRING$#####^THIS COMMAND INSERTS CHARACTER STRING "STRING" INTO THE TEXT STORAGE AREA OF ^Q-REGISTER "Q". _^^U MUST BE SPECIFIED IN THE CARET (UPARROW)/^U FORMAT, SINCE THE CONTROL-^U CHARACTER IS THE LINE KILL CHARACTER. .SKIP 1 .INDENT -15 @_^^UQ/STRING/###^EQUIVALENT TO THE _^^U COMMAND EXCEPT THAT THE CHARACTER STRING TO BE INSERTED INTO ^Q-REGISTER Q MAY CONTAIN ^^ALT MODE\\ CHARACTERS. ^THE INSERTION MUST BE DELIMITED BEFORE AND AFTER BY ANY CHARACTER (A SLASH IS SHOWN HERE) WHICH DOES NOT APPEAR IN THE INSERTION. .SKIP 1 .INDENT -15 N^UQ############^LOAD N INTO THE NUMBER STORAGE AREA OF ^Q-REGISTER Q. .SKIP 1 .INDENT -15 N%Q############^ADD N TO THE CONTENT OF THE NUMBER STORAGE AREA OF ^Q-REGISTER Q. ^THE RESULTING VALUE CONTAINED IN ^Q-REGISTER Q IS USED AS A NUMERIC ARGUMENT FOR THE NEXT COMMAND. ^IF THE NEXT COMMAND DOES NOT REQUIRE A NUMERIC ARGUMENT, THIS VALUE IS DISCARDED. .SKIP 1 .INDENT -15 %Q#############^EQUIVALENT TO 1%Q. .SKIP 1 .INDENT -15 ^XQ#############^COPY THE CONTENT OF THE BUFFER FROM THE CURRENT POSITION OF THE POINTER THROUGH AND INCLUDING THE NEXT LINE FEED CHARACTER INTO THE TEXT STORAGE AREA OF ^Q-REGISTER Q. ^THE POINTER IS NOT MOVED. .SKIP 1 .INDENT -15 N^XQ############^MOVE N LINES INTO ^Q-REGISTER Q, WHERE N IS AN INTEGER IN THE RANGE -32768<=N<=32767. ^IF N IS POSITIVE, THE N LINES FOLLOWING THE CURRENT POINTER POSITION ARE COPIED INTO THE TEXT STORAGE AREA OF ^Q-REGISTER Q. ^IF N IS NEGATIVE, THE N LINES PRECEDING THE POINTER ARE COPIED. ^IF N IS ZERO, THE CONTENT OF THE BUFFER FROM THE BEGINNING OF THE LINE ON WHICH THE POINTER IS LOCATED UP TO THE POINTER IS COPIED. .SKIP 1 .INDENT -15 M,N^XQ##########^COPY THE CONTENT OF THE BUFFER FROM THE M+1TH CHARACTER THROUGH AND INCLUDING THE NTH CHARACTER INTO THE TEXT STORAGE AREA OF ^Q-REGISTER Q. ^M AND N MUST BE POSITIVE, AND M SHOULD BE LESS THAN N. .LEFT MARGIN 5 .PARAGRAPH ^TABLE 2-10^B LISTS THE COMMANDS WHICH PERMIT CHARACTERS TO BE RETRIEVED FROM THE ^Q-REGISTERS. .SKIP 2 .TEST PAGE 6 .CENTER 80 ^^TABLE 2-10B: Q-REGISTER EXECUTION COMMANDS\\ .LEFT MARGIN 20 .SKIP 1 .INDENT -15 ^^COMMAND#############FUNCTION\\ .SKIP 1 .INDENT -15 ^GQ#############^COPY THE CONTENT OF THE TEXT STORAGE AREA OF ^Q-REGISTER Q INTO THE BUFFER AT THE CURRENT POSITION OF THE BUFFER POINTER, LEAVING THE POINTER POSITIONED AFTER THE LAST CHARACTER COPIED. .SKIP 1 .INDENT -15 ^QQ#############^USE THE INTEGER STORED IN THE NUMBER STORAGE AREA OF ^Q-REGISTER Q AS THE ARGUMENT OF THE NEXT COMMAND. ^THE CHARACTERS "^QQ" MAY BE CONSIDERED AS EQUIVALENT TO "THE VALUE CONTAINED IN THE NUMBER STORAGE AREA OF ^Q-REGISTER Q". .SKIP 1 .INDENT -15 ^MQ#############^EXECUTE THE CONTENT OF THE TEXT STORAGE AREA OF ^Q-REGISTER Q AS A COMMAND STRING. ^MQ COMMANDS MAY BE NESTED RECURSIVELY AS FAR AS ^^TECO\\'S PUSH DOWN STORAGE WILL PERMIT. .SKIP 1 .INDENT -15 N^MQ############^EXECUTE THE CONTENT OF THE TEXT STORAGE AREA OF ^Q-REGISTER Q AS A COMMAND STRING AND USE N AS A NUMERIC ARGUMENT FOR THE FIRST COMMAND IN THIS STRING. .LEFT MARGIN 5 .SKIP 2 .TEST PAGE 10 2.11 ^^BRANCHING COMMANDS\\ .PARAGRAPH ^^TECO\\ COMMANDS MAY BE COMBINED IN SOPHISTICATED COMMAND STRINGS WHICH ARE CAPABLE OF SOLVING EVEN THE MOST COMPLEX EDITING PROBLEMS. ^IN FACT, ^^TECO\\ MIGHT BE CONSIDERED A PROGRAMMING LANGUAGE WHICH ACCEPTS AN INPUT FILE AS DATA AND PROCESSES THIS INPUT TO PRODUCE AN OUTPUT FILE. ^AS WITH MOST PROGRAMMING LANGUAGES, ^^TECO\\ PROVIDES AN UNCONDITIONAL BRANCH COMMAND AND A SET OF CONDITIONAL EXECUTION COMMANDS. .PARAGRAPH ^TO PROVIDE FOR BRANCHING WITHIN A COMMAND STRING, THERE MUST BE SOME MEANS OF NAMING LOCATIONS INSIDE THE STRING. ^^TECO\\ PERMITS LOCATION TAGS WHICH HAVE THE FORM: .SKIP 1 .CENTER 80 !TAG! .SKIP 1 TO BE PLACED BETWEEN ANY TWO COMMANDS IN A COMMAND STRING. ^THE NAME "TAG" WILL BE ASSOCIATED WITH THIS LOCATION WHEN THE COMMAND STRING IS EXECUTED. ^TAGS MAY CONTAIN ANY NUMBER OF ^^ASCII\\ CHARACTERS AND ANY CHARACTER EXCEPT FOR SPECIAL CHARACTERS AND EXCLAMATION POINTS. ^SINCE TAGS ARE IGNORED BY ^^TECO\\ EXCEPT WHEN A BRANCH COMMAND REFERENCES THE TAGGED LOCATION, THEY MAY ALSO BE USED AS COMMENTS WITHIN COMPLICATED COMMAND STRINGS. .PARAGRAPH ^THE UNCONDITIONAL BRANCH COMMAND IS THE ^O COMMAND WHICH HAS THE FORM: .SKIP 1 .CENTER 80 ^OTAG$ .SKIP 1 WHERE "TAG" IS A NAMED LOCATION ELSEWHERE WITHIN THE COMMAND STRING AND "$" SIGNIFIES AN ^^ALT MODE\\. ^WHEN AN ^O COMMAND IS EXECUTED, THE NEXT COMMAND TO BE EXECUTED WILL BE THE COMMAND FOLLOWING THE TAG REFERENCED BY THE ^O COMMAND, AND COMMAND EXECUTION CONTINUES NORMALLY FROM THIS POINT. .PARAGRAPH ^IF AN ^O COMMAND IS STORED IN A ^Q-REGISTER AS PART OF A COMMAND STRING WHICH IS TO BE EXECUTED BY AN ^M COMMAND, THE TAG REFERENCED BY THE ^O COMMAND MUST ALSO RESIDE IN THE SAME ^Q-REGISTER. .PARAGRAPH ^AN IMPORTANT RESTRICTION ON THE ^O COMMAND PREVENTS ANY ^O COMMAND WHICH IS INSIDE A COMMAND LOOP FROM BRANCHING TO A TAGGED LOCATION PRECEDING THE COMMAND LOOP. ^HOWEVER, IT IS ALWAYS POSSIBLE TO BRANCH OUT OF A COMMAND LOOP TO A LOCATION WHICH FOLLOWS THE COMMAND LOOP. .SKIP 2 .TEST PAGE 10 2.12 ^^CONDITIONAL EXECUTION COMMANDS\\ .PARAGRAPH ^ALL CONDITONAL EXECUTION COMMANDS ARE OF THE FORM: .SKIP 1 .CENTER 80 N"^GCOMMAND STRING' .SKIP 1 WHERE "N" IS A NUMERIC ARGUMENT ON WHICH THE DECISION IS BASED, "^G" MAY BE ANY OF THE CONDITIONAL EXECUTION COMMANDS LISTED IN TABLE 2-12, AND "COMMAND STRING" IS THE COMMAND STRING WHICH WILL BE EXECUTED IF THE CONDITION IS SATISFIED. ^IF THE CONDITION ON N IS NOT SATISFIED, THE COMMAND STRING WILL NOT BE EXECUTED. ^NOTE THAT THE NUMERIC ARGUMENT IS SEPARATED FROM THE CONDITIONAL EXECUTION COMMAND BY A DOUBLE QUOTE (") AND THE COMMAND STRING IS TERMINATED WITH AN APOSTROPHE ('). .PARAGRAPH ^CONDITIONAL EXECUTION COMMANDS MAY BE NESTED IN THE SAME MANNER AS ITERATION COMMANDS. ^THAT IS, THE COMMAND STRING WHICH IS TO BE EXECUTED IF THE CONDITION ON N IS MET MAY CONTAIN CONDITIONAL EXECUTION COMMANDS, WHICH MAY, IN TURN, CONTAIN FURTHER CONDITIONAL EXECUTION COMMANDS. .PARAGRAPH ^TABLE 2-12 LISTS THE CONDITIONAL EXECUTION COMMANDS. ^EACH CONDITIONAL EXECUTION COMMAND MUST BE FOLLOWED BY A COMMAND STRING (NOT SHOWN IN ^TABLE 2-12) WHICH WILL BE EXECUTED ONLY IF THE CONDITION IS SATISFIED. ^THIS COMMAND STRING MUST BE TERMINATED BY AN APOSTOPHE. ^IF THE CONDITION IS NOT SATISFIED, THE FIRST COMMAND FOLLOWING THE APOSTROPHE WILL BE THE NEXT COMMAND EXECUTED. .SKIP 2 .TEST PAGE 8 .CENTER 80 ^^TABLE 2-12: CONDITIONAL EXECUTION COMMANDS\\ .LEFT MARGIN 15 .SKIP 1 .INDENT -10 ^^COMMAND########FUNCTION\\ .SKIP 1 .INDENT -10 N"^G#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS GREATER THAN ZERO. ^OTHERWISE SKIP THE FOLLOWING COMMAND STRING. .SKIP 1 .INDENT -10 N"^L#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS LESS THAN ZERO. ^OTHERWISE SKIP THE FOLLOWING COMMAND STRING. .SKIP 1 .INDENT -10 N"^E#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS EQUAL TO ZERO. ^OTHERWISE SKIP THE FOLLOWING COMMAND STRING. .SKIP 1 .INDENT -10 N"^C#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS THE ^^ASCII\\ CODE OF ANY CHARACTER WHICH IS ONE OF THE UPPER OR LOWER CASE LETTERS ^A TO ^Z, ONE OF THE DIGITS 0 TO 9, OR PERIOD, OR DOLLAR SIGN. ^OTHERWISE SKIP THE FOLLOWING COMMAND STRING. .SKIP 1 .INDENT -10 N"^N#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS NOT EQUAL TO ZERO. ^OTHERWISE SKIP THE FOLLOWING COMMAND STRING. .SKIP 1 .INDENT -10 N"^T#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS ^^TRUE\\. ^EQUVALENT TO N"^L. .SKIP 1 .INDENT -10 N"^S#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS ^^SUCCESSFUL\\. ^EQUIVALENT TO N"^L. .SKIP 1 .INDENT -10 N"^F#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS ^^FALSE\\. ^EQUIVALENT TO N"^E. .SKIP 1 .INDENT -10 N"^U#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N IS ^^UNSUCCESSFUL\\. ^EQUIVALENT TO N"^E. .SKIP 1 .INDENT -10 N"^A#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N EQUALS AN ^^ASCII\\ ALPABETIC CHARACTER (UPPER OR LOWER CASE ^A TO ^Z). .SKIP 1 .INDENT -10 N"^D#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N EQUALS THE ^^ASCII\\ CODE FOR A DIGIT (0 TO 9). .SKIP 1 .INDENT -10 N"^R#######^EXECUTE THE FOLLOWING COMMAND STRING (TERMINATED BY AN APOSTROPHE) IF N EQUALS THE ^^ASCII\\ CODE FOR AN ALPHANUMERIC (UPPER OR LOWER CASE ^A TO ^Z OR 0 TO 9). .LEFT MARGIN 5 .PARAGRAPH ^THERE IS ONE FURTHER CONDITIONAL EXECUTION COMMAND WHICH IS NOT RELATED TO THE COMMANDS LISTED IN ^TABLE 2-12. ^THE N; COMMAND, WHERE N IS ANY INTEGER OR NUMERIC EXPRESSION, MAY BE USED IN AN ITERATED COMMAND LOOP. ^IT HAS THE GENERAL FORM: .SKIP 1 .CENTER 80 MSTRING3 .SKIP 1 WHERE "M" IS THE ITERATION COUNT, "STRING1", "STRING2", AND "STRING3" ARE COMMAND STRINGS AND "N;" IS THE CONDITIONAL EXIT COMMAND. ^WHEN THE N; COMMAND IS EXECUTED, IT WILL CAUSE ^^TECO\\ TO EXIT THE COMMAND LOOP SO THAT "STRING3" WILL BE EXECUTED NEXT IF N IS GREATER THAN OR EQUAL TO ZERO. ^IF N IS LESS THAN ZERO, THE N; COMMAND IS IGNORED AND "STRING2" IS EXECUTED NEXT. ^N MAY BE ANY ARGUMENT SUCH AS ^QQ (THE VALUE OF THE NUMERIC PART OF ^Q-REGISTER Q), A COLON-MODIFIED SEARCH, OR ANY OTHER COMMAND THAT RETURNS A VALUE. .PARAGRAPH ^IF AN UNMODIFIED SEARCH COMMAND IN A COMMAND LOOP IS IMMEDIATELY FOLLOWED BY A SEMICOLON, IT IS TREATED AS IF IT WERE A COLON-MODIFIED SEARCH. .SKIP 2 .TEST PAGE 10 2.13 ^^NUMERIC ARGUMENTS\\ .PARAGRAPH ^ALMOST ALL ^^TECO\\ COMMANDS MAY BE PRECEDED BY A NUMERIC ARGUMENT WHICH GENERALLY INDICATES THE NUMBER OF ITERATIONS, OR HOW MANY TIMES THE COMMAND SHOULD BE EXECUTED. ^SOME NUMERIC ARGUMENTS MUST BE POSITIVE, WHILE OTHERS MAY BE NEGATIVE OR ZERO. ^IN ANY CASE, EVERY NUMERIC ARGUMENT IS STORED AS A SINGLE 16-BIT WORD. .PARAGRAPH ^THIS LEADS TO AN IMPORTANT RESTRICTION ON THE MAXIMUM SIZE OF ANY NUMERIC ARGUMENT. ^COMMANDS WHICH REQUIRE POSITIVE ARGUMENTS MUST HAVE AN ARGUMENT IN THE RANGE 0<=N<=65535, SINCE 65535 IS THE LARGEST NUMBER WHICH MAY BE STORED IN ONE 16-BIT WORD. ^COMMANDS WHICH HAVE POSITIVE OR NEGATIVE ARGUMENTS REQUIRE AN ARGUMENT IN THE RANGE -32768<=N<=32767, BECAUSE -32768 IS THE SMALLEST NUMBER WHICH MAY BE STORED IN 16 BITS USING 2'S COMPLEMENT NOTATION, WHILE 32767 IS THE LARGEST NUMBER WHICH MAY BE STORED IN THIS MANNER. .PARAGRAPH ^^TECO\\ MAINTAINS SEVERAL INTERNAL VARIABLES WHICH RECORD CONDITIONS WITHIN ^^TECO\\. ^EACH OF THE VARIABLES HAS A NAME WHICH IS EQUIVALENT TO THE CURRENT CONTENTS OF THE VARIABLE. ^THESE CHARACTERS MAY BE ENTERED AS NUMERIC ARGUMENTS TO ^^TECO\\ COMMANDS. ^WHEN THE COMMAND IS EXECUTED, THE CURRENT VALUE OF THE DESIGNATED VARIABLE IS SUBSTITUTED FOR THE CHARACTER AND USED IN THE NUMERIC ARGUMENT OF THE COMMAND. .PARAGRAPH ^SOME OF THE CHARACTERS WHICH STAND FOR SPECIFIC VALUES ASSOCIATED WITH THE TEXT BUFFER HAVE BEEN INTRODUCED EARLIER IN THIS MANUAL. ^FOR EXAMPLE, THE DOT CHARACTER (.), WHICH REPRESENTS THE CURRENT POINTER POSITION, MAY BE USED IN THE ARGUMENT OF A ^T COMMAND. ^THE COMMAND ".,.+5^T" CAUSES THE 5 CHARACTERS FOLLOWING THE BUFFER POINTER TO BE TYPED OUT. ^WHEN THIS COMMAND IS EXECUTED, THE NUMBER OF CHARACTERS PRECEDING THE BUFFER POINTER IS SUBSTITUTED (TWICE) FOR THE "DOT". ^THE ADDITION IS THEN CARRIED OUT, AND THE COMMAND IS EXECUTED AS THOUGH IT WERE OF THE FORM "M,N^T". .PARAGRAPH ^TABLE 2-13^A LISTS ALL OF THE CHARACTERS WHICH HAVE SPECIAL NUMERIC VALUES. ^ANY OF THESE CHARACTERS MAY BE USED AS NUMERIC ARGUMENTS IN PLACE OF THE VALUES THEY REPRESENT. .SKIP 2 .TEST PAGE 7 .CENTER 80 ^^TABLE 2-13^A: CHARACTERS ASSOCIATED WITH NUMERIC QUANTITIES\\ .LEFT MARGIN 15 .SKIP 1 .INDENT -10 ^^CHARACTER######FUNCTION\\ .SKIP 1 .INDENT -10 ^B#########^ALWAYS EQUIVALENT TO ZERO. ^THUS, ^B REPRESENTS THE POSITION AT THE BEGINNING OF THE BUFFER, PRECEDING THE FIRST CHARACTER IN THE BUFFER. .SKIP 1 .INDENT -10 ^Z#########^EQUIVALENT TO THE NUMBER OF CHARACTERS CURRENTLY CONTAINED IN THE BUFFER. ^THUS, ^Z REPRESENTS THE POSITION AT THE END OF THE BUFFER, FOLLOWING THE LAST CHARACTER IN THE BUFFER. .SKIP 1 .INDENT -10 .#########^EQUIVALENT TO THE NUMBER OF CHARACTERS BETWEEN THE BEGINNING OF THE BUFFER AND THE CURRENT POSITION OF THE POINTER. ^THUS "." REPRESENTS THE CURRENT POSITION OF THE POINTER. .SKIP 1 .INDENT -10 ^H#########^EQUIVALENT TO THE NUMERIC PAIR "^B,^Z", OR "FROM THE BEGINNING OF THE BUFFER UP TO THE END OF THE BUFFER." ^THUS, ^H REPRESENTS THE WHOLE BUFFER. .SKIP 1 .INDENT -10 N^A########^EQUIVALENT TO THE ^^ASCII\\ CODE FOR THE .+N+1TH CHARACTER IN THE BUFFER. ^FOR EXAMPLE, THE EXPRESSION -1^A IS EQUIVALENT TO THE ^^ASCII\\ CODE OF THE CHARACTER IMMEDIATELY PRECEDING THE POINTER. .SKIP 1 .INDENT -10 ^MQ########^THE ^MQ COMMAND (EXECUTE THE CONTENT OF THE TEXT STORAGE AREA OF ^Q-REGISTER "Q" AS A COMMAND STRING) MAY RETURN A NUMERIC VALUE IF THE LAST COMMAND IN THE STRING RETURNS A NUMERIC VALUE AND IS NOT FOLLOWED BY AN ^^ALT MODE\\. .SKIP 1 .INDENT -10 _\#########^A BACKSLASH CHARACTER WHICH IS NOT PRECEDED BY A NUMERIC ARGUMENT IS EQUIVALENT TO THE VALUE OF THE DIGIT STRING (IF ANY) THAT BEGINS WITH THE CHARACTER IMMEDIATELY FOLLOWING THE BUFFER POINTER AND IS TERMINATED BY THE NEXT CHARACTER THAT IS NOT A DIGIT. ^THE FIRST CHARACTER MAY BE A DIGIT OR ONE OF THE CHARACTERS + OR -. ^AS EACH BACKSLASH IS EVALUATED, ^^TECO\\ MOVES THE BUFFER POINTER TO A POSITION IMMEDIATELY FOLLOWING THE DIGIT STRING. ^IF THERE IS NO DIGIT STRING FOLLOWING THE POINTER, THE BACKSLASH IS EQUIVALENT TO ZERO AND THE POINTER POSITION REMAINS UNCHANGED. .SKIP 1 .INDENT -10 ^E^H########^E^H IS EQUIVALENT TO THE CURRENT VALUE OF THE HELP LEVEL FLAG. .SKIP 1 .INDENT -10 ^E^S########^E^S IS EQUIVALENT TO THE CURRENT VALUE OF THE SEARCH VERIFICATION FLAG. .SKIP 1 .INDENT -10 ^E^T########^E^T IS EQUIVALENT TO THE CURRENT VALUE OF THE TYPE-OUT CONTROL FLAG. ^THE USE OF THE ^E^H, ^E^S, AND ^E^T FLAGS IS DESCRIBED IN SECTION 2.14. .SKIP 1 .INDENT -10 _^^B########^CONTROL-^B (CARET/^B) IS EQUIVALENT TO THE CURRENT DATE VIA THE FOLLOWING EQUATION: .SKIP 1 .CENTER 80 _^^B = DAY + (MONTH*32) + ((YEAR-1900)*512) .SKIP 1 .INDENT -10 _^^E########^CONTROL-^E (CARET/^E) IS EQUIVALENT TO -1 IF THE BUFFER CURRENTLY CONTAINS A FULL PAGE OF TEXT (WHICH WAS TERMINATED BY A FORM FEED IN THE INPUT FILE) OR 0 IF THE BUFFER CONTAINS ONLY PART OF A PAGE OF TEXT (WHICH EITHER FILLED THE BUFFER TO CAPACITY BEFORE THE TERMINATING FORM FEED WAS READ OR WHICH WAS NOT TERMINATED BY A FORM FEED.) ^THE _^^E FLAG IS TESTED BY THE ^P COMMAND AND RELATED OPERATIONS TO DETERMINE WHETHER A FORM FEED SHOULD BE APPENDED TO THE CONTENT OF THE BUFFER ON OUTPUT. .SKIP 1 .INDENT -10 _^^F########^CONTROL-^F (^CARET/^F) IS EQUIVALENT TO THE CURRENT VALUE OF THE CONSOLE SWITCH REGISTER. .SKIP 1 .INDENT -10 _^^H########^CONTROL-^H (CARET/^H) IS EQUIVALENT TO THE ELAPSED TIME IN SECONDS SINCE MIDNIGHT DIVIDED BY TWO. .SKIP 1 .INDENT -10 _^^N########^CONTROL-^N (CARET/^N) IS THE END OF FILE FLAG. ^IT IS EQUIVALENT TO -1 IF THE CURRENT INPUT FILE IS AT END OF FILE, AND ZERO OTHERWISE. .SKIP 1 .INDENT -10 _^^S########^CONTROL-^S (CARET/^S) IS EQUIVALENT TO THE NEGATIVE OF THE LENGTH OF THE LAST INSERT, STRING FOUND, OR STRING INSERTED WITH A "^GQ" COMMAND, WHICHEVER OCCURRED LAST. ^FOR EXAMPLE, THIS VALUE MAY BE USED TO RECOVER FROM INSERTING A STRING IN THE WRONG PLACE. ^ONE TYPES ".+_^^S,.^X^A^F^R$" TO STORE THE STRING IN ^Q-REGISTER ^A AND REMOVE IT FROM THE BUFFER. ^ONE MAY THEN POSITION THE POINTER TO THE RIGHT PLACE AND TYPE "^G^A" TO INSERT THE STRING. .SKIP 1 .INDENT -10 _^^T########^CONTROL-^T (CARET/^T) IS EQUIVALENT TO THE ^^ASCII\\ CODE FOR THE NEXT CHARACTER TYPED AT THE TERMINAL. ^WHEN ^^TECO\\ EXECUTES A COMMAND STRING, EVERY _^^T CHARACTER ENCOUNTERED CAUSES IT TO PAUSE AND ACCEPT ONE CHARACTER TYPED AT THE TERMINAL. ^THE ^^ASCII\\ CODE FOR THIS CHARACTER IS THEN SUBSTITUTED FOR THE _^^T. .SKIP 1 .INDENT -10 _^^V########^CONTROL-^V (CARET/^V) IS EQUIVALENT TO THE VERSION NUMBER OF THE VERSION OF ^^TECO\\ WHICH IS CURRENTLY BEING RUN. ^THIS MANUAL DESCRIBES ^^RSTS/E TECO\\ VERSION 14. .SKIP 1 .INDENT -10 _^^Z########^CONTROL-^Z (OR CARET/^Z) IS EQUIVALENT TO THE NUMBER OF CHARACTERS PRESENTLY STORED IN THE ^Q-REGISTER STORAGE AREA, INCLUDING REQUIREMENTS FOR THE COMMAND STRING CONTAINING THE _^^Z CHARACTER. .SKIP 1 .INDENT -10 _^_^^X#######^THE COMBINATION OF THE ^CONTROL-^CARET (DOUBLE CARET OR DOUBLE UPARROW) FOLLOWED BY ANY CHARACTER IS EQUIVALENT TO THE VALUE OF THE ^^ASCII\\ CODE FOR THE CHARACTER. ^THE "^X" IN THIS EXAMPLE MAY BE ANY CHARACTER THAT CAN BE TYPED IN TO ^^TECO\\. .SKIP 1 .INDENT -10 .LEFT MARGIN 5 .PARAGRAPH ^THE NUMERIC ARGUMENT OF A ^^TECO\\ COMMAND MAY CONSIST OF A SINGLE INTEGER, ANY OF THE CHARACTERS LISTED IN ^TABLE 2-13^A, THE NUMERIC CONTENTS OF ANY ^Q-REGISTER, OR AN ARITHMETIC COMBINATION OF INTEGERS, ^Q-REGISTERS, AND THE CHARACTERS LISTED IN ^TABLE 2-13^A. ^IF AN ARITHMETIC EXPRESSION IS SUPPLIED AS A NUMERIC ARGUMENT, ^^TECO\\ WILL EVALUATE THE EXPRESSION. ^ALL ARITHMETIC EXPRESSIONS ARE EVALUATED FROM LEFT TO RIGHT. ^PARENTHESES MAY BE USED TO OVERRIDE THE NORMAL ORDER OF EVALUATION OF AN EXPRESSION. ^IF PARENTHESES ARE USED, ALL OPERATIONS WITHIN THE PARENTHESES ARE PERFORMED, LEFT TO RIGHT, BEFORE PERFORMING OPERATIONS OUTSIDE THE PARENTHESES. ^PARENTHESES MAY BE NESTED, IN WHICH CASE THE INNERMOST EXPRESSION CONTAINED BY PARENTHESES WILL BE EVALUATED FIRST. ^TABLE 2-13^B LISTS ALL OF THE ARITHMETIC OPERATORS THAT MAY BE USED IN ARITHMETIC EXPRESSIONS. .SKIP 2 .TEST PAGE 7 .CENTER 80 ^^TABLE 2-13^B: ARITHMETIC OPERATORS\\ .LEFT MARGIN 25 .SKIP 1 .INDENT -20 ^^OPERATOR##EXAMPLE########FUNCTION\\ .SKIP 1 .INDENT -20 +#########+2=2######^IGNORED IF USED BEFORE THE FIRST TERM IN AN EXPRESSION. .SKIP 1 .INDENT -20 +#########5+6=11####^ADDITION, IF USED BETWEEN TERMS. .SKIP 1 .INDENT -20 -#########-2=-2#####^NEGATION, IF USED BEFORE THE FIRST TERM IN AN EXPRESSION. .SKIP 1 .INDENT -20 -#########8-2=6#####^SUBTRACTION, IF USED BETWEEN TERMS .SKIP 1 .INDENT -20 *#########8*2=16####^MULTIPLICATION. ^USED BETWEEN TERMS. .SKIP 1 .INDENT -20 /#########8/3=2#####^INTEGER DIVISION WITH LOSS OF THE REMAINDER. ^USED BETWEEN TERMS. .SKIP 1 .INDENT -20 _&#########12_&10=8###^BITWISE LOGICAL ^^AND\\ OF THE BINARY REPRESENTATION OF THE TWO TERMS. ^USED BETWEEN TERMS. .SKIP 1 .INDENT -20 _##########12_#10=14##^BITWISE LOGICAL ^O^R OF THE BINARY REPRESENTATION OF TWO TERMS. ^USED BETWEEN TERMS. .SKIP 1 .INDENT -20 _^__########5_^__=-6####^UNARY ONE'S COMPLEMENT. ^USED AFTER EXPRESSIONS. .LEFT MARGIN 5 .PARAGRAPH ^THE FOLLOWING COMMANDS AFFECT THE RADIX IN WHICH ^^TECO\\ PROCESSES NUMBERS, WHICH MAY BE EITHER OCTAL OR DECIMAL. ^ALL NUMBERS TYPED IN, TYPED OUT, OR HANDLED BY THE _\ AND N_\ COMMANDS ARE INTERPRETED IN THE CURRENT RADIX. .SKIP 2 .TEST PAGE 9 .CENTER 80 ^^TABLE 2-13C: RADIX CONTROL COMMANDS\\ .LEFT MARGIN 15 .SKIP 1 .INDENT -10 ^^COMMAND########FUNCTION\\ .SKIP 1 .INDENT -10 N=########^THIS COMMAND CAUSES THE VALUE OF N TO BE TYPED OUT AT THE TERMINAL IN DECIMAL, AND LEAVES ^^TECO\\'S RADIX SET TO DECIMAL. .SKIP 1 .INDENT -10 N==#######^THIS COMMAND CAUSES THE VALUE OF N TO BE TYPED OUT AT THE TERMINAL IN OCTAL, AND LEAVES ^^TECO\\'S RADIX SET TO OCTAL. .SKIP 1 .INDENT -10 _^^O########^CONTROL-^O (CARET/^O) CAUSES ALL SUBSEQUENT NUMERIC INPUT TO BE ACCEPTED AS OCTAL NUMBERS. ^THE OCTAL RADIX WILL CONTINUE TO BE USED UNTIL THE NEXT _^^D OR = COMMAND IS EXECUTED. .SKIP 1 .INDENT -10 _^^D########^CONTROL-^D (CARET/^D) CAUSES ALL SUBSEQUENT NUMERIC INPUT TO BE ACCEPTED AS DECIMAL NUMBERS. ^THIS IS THE INITIAL SETTING. .SKIP 1 .INDENT -10 N_\########^THE BACKSLASH COMMAND PRECEDED BY AN ARGUMENT INSERTS THE VALUE OF N INTO THE TEXT BUFFER AT THE CURRENT POSITION OF THE POINTER, LEAVING THE POINTER POSITIONED AFTER THE LAST DIGIT OF THE INSERTION. .LEFT MARGIN 5 .PARAGRAPH ^SOME ^^TECO\\ COMMANDS GENERATE NUMERIC VALUES WHICH THEY PASS ON TO SUBSEQUENT COMMANDS. ^AN EXAMPLE IS ANY COLON-MODIFIED SEARCH COMMAND, WHICH CAUSES THE NEXT SEQUENTIAL COMMAND TO BE EXECUTED WITH AN ARGUMENT OF -1 OR 0, DEPENDING UPON THE OUTCOME OF THE SEARCH. ^COMMANDS OF THIS SORT ARE VERY USEFUL, BUT OCCASIONALLY IT MAY BE UNDESIRABLE TO HAVE ARGUMENTS PASSED IN THIS MANNER. ^NOTE THAT MANY ^^TECO\\ COMMANDS PERFORM SIGNIFICANTLY DIFFERENT FUNCTIONS, DEPENDING ON WHETHER NO, ONE, OR TWO ARGUMENTS ARE PRESENT. ^A SINGLE ^^ALT MODE\\ CHARACTER MAY BE INSERTED BETWEEN ANY TWO COMMANDS IN A COMMAND STRING TO ABSORB UNWANTED VALUES. ^THIS ^^ALT MODE\\ HAS NO EFFECT ON THE INDIVIDUAL COMMANDS, HOWEVER A NUMERIC ARGUMENT WILL NEVER BE PASSED ACROSS THE EXTRANEOUS ^^ALT MODE\\. .SKIP 2 .TEST PAGE 10 2.14 ^^MODE CONTROL FLAGS\\ .PARAGRAPH ^^TECO\\ HAS THREE FLAGS WHICH CONTROL VARIOUS ASPECTS OF ITS OPERATION. ^THESE FLAGS ARE REFERENCED WITH THE COMMANDS "^E^H", "^E^S", AND "^E^T", AND ARE CALLED THE ^E^H, ^E^S, AND ^E^T FLAGS. ^A FLAG'S CURRENT SETTING MAY BE INTERROGATED BY EXECUTING ITS COMMAND NAME WITHOUT AN ARGUMENT; THE CURRENT SETTING OF THE FLAG IS RETURNED AS A VALUE. ^A FLAG MAY BE SET TO A SPECIFIC VALUE BY EXECUTING ITS COMMAND NAME WITH A PRECEDING NUMERICAL ARGUMENT; THE FLAG IS SET TO THE VALUE OF THE ARGUMENT. ^THE FLAGS HAVE THE FOLLOWING FUNCTIONS: .SKIP 2 .CENTER 80 ^^TABLE 2-14: MODE CONTROL FLAGS\\ .SKIP 1 ^^COMMAND########FUNCTION\\ .SKIP 1 .LEFT MARGIN 15 .INDENT -10 N^E^H#######^SETS THE VALUE OF THE HELP LEVEL FLAG TO N. ^IF N IS EQUAL TO 1, ERROR MESSAGES ARE OUTPUT IN ABBREVIATED FORM ("?^^XXX\\"). ^ALL OTHER VALUES CAUSE ERROR MESSAGES TO BE OUTPUT IN NORMAL FORM. ^THE INITIAL VALUE IS 0. .SKIP 1 .INDENT -10 N^E^S#######^SETS THE VALUE OF THE SEARCH VERIFICATION FLAG TO N. ^IF N IS EQUAL TO 0, NOTHING IS TYPED OUT AFTER SEARCHES. ^IF N IS NEGATIVE, THE CURRENT LINE IS TYPED OUT WHEN A SEARCH IS COMPLETED. ^IF N IS POSITIVE, THE CURRENT LINE IS TYPED OUT WITH A LINE FEED IMMEDIATELY FOLLOWING THE POSITION OF THE POINTER TO IDENTIFY ITS POSITION. ^THE ^E^S FLAG DOES NOT APPLY TO SEARCHES EXECUTED INSIDE ITERATIONS OR MACROS; LINES FOUND INSIDE ITERATIONS OR MACROS ARE NEVER TYPED OUT. ^THE INITIAL VALUE OF ^E^S IS 0. .SKIP 1 .INDENT -10 N^E^T#######^SETS THE TYPE OUT CONTROL FLAG TO N. ^THE ^E^T FLAG IS A BIT-ENCODED WORD THAT CONTROLS ^^TECO\\'S TREATMENT OF THE CONSOLE TERMINAL. ^ANY COMBINATION OF THE INDIVIDUAL BITS MAY BE SET AS THE USER SEES FIT. ^THE BITS HAVE THE FOLLOWING FUNCTIONS: .LEFT MARGIN 30 .SKIP 1 .INDENT -20 ^BIT#0##(^OCTAL#1)####^TYPE OUT IN IMAGE MODE. ^SETTING THIS BIT INHIBITS ALL OF ^^TECO\\'S TYPE OUT FILTERING. ^ALL CHARACTERS ARE OUTPUT TO THE TERMINAL EXACTLY AS THEY APPEAR IN THE BUFFER (OR _^^A COMMAND), INSTEAD OF SPACING OUT TABS, CHANGING CONTROL CHARACTERS INTO THE "CARET/CHARACTER" FORM, ETC. ^THIS MODE IS USEFUL FOR DRIVING DISPLAYS, ETC. ^IT SHOULD BE USED WITH CAUTION, ESPECIALLY IF THE USER IS TALKING TO ^^TECO\\ OVER A DIAL-UP LINE. .SKIP 1 .INDENT -20 ^BIT#1##(^OCTAL#2)####^TYPE OUT USING WRITE PASS ALL MODE. ^SETTING THIS BIT CIRCUMVENTS THE ADDITIONAL FILTERING IMPOSED BY THE ^^RSTS/E TTY\\ HANDLER. ^NOTE THAT BOTH THIS BIT AND BIT 0 INHIBIT THE GENERATION OF FILL CHARACTERS FOR THE ^^LA-30S\\ AFTER CARRIAGE RETURNS. .SKIP 1 .INDENT -20 ^BIT#2##(^OCTAL#4)####^READ LOWER CASE. ^^TECO\\ NORMALLY CONVERTS ALL LOWER CASE ALPHABETICS TO UPPER CASE ON INPUT. ^SETTING THIS BIT CAUSES LOWER CASE ALPHABETICS TO BE INPUT AS LOWER CASE. ^^TECO\\ COMMANDS AND FILE SPECIFIERS MAY BE TYPED IN EITHER IN UPPER OR LOWER CASE. ^FOR THE PURPOSE OF SEARCHES, HOWEVER, UPPER AND LOWER CASE ARE TREATED AS DIFFERENT CHARACTERS. .SKIP 1 .LEFT MARGIN 15 ^THE INITIAL VALUE OF THE ^E^T FLAG IS 0. .LEFT MARGIN 5 .SKIP 2 .TEST PAGE 10 2.15 ^^PROGRAMMING AIDS\\ .PARAGRAPH ^THE CHARACTERS CARRIAGE RETURN, LINE FEED, VERTICAL TAB, AND SPACE ARE IGNORED IN COMMAND STRINGS, EXCEPT WHEN THEY APPEAR AS PART OF A TEXT ARGUMENT. ^THESE CHARACTERS MAY BE INSERTED BETWEEN ANY TWO ^^TECO\\ COMMANDS TO LEND CLARITY TO A LONG COMMAND STRING. ^THE CARRIAGE RETURN/LINE FEED COMBINATION IS PARTICULARLY USEFUL FOR TYPING COMMAND STRINGS WHICH ARE TOO LONG TO FIT ON A SINGLE LINE. .PARAGRAPH ^ONE OF THE MOST POWERFUL FEATURES OF ^^TECO\\ IS THE ABILITY TO STORE VERY LONG COMMAND STRINGS SO THAT A GIVEN SEQUENCE OF COMMANDS MAY BE EXECUTED WHENEVER NEEDED. ^LONG COMMAND STRINGS MAY BE THOUGHT OF AS EDITING PROGRAMS AND, LIKE ANY OTHER TYPE OF PROGRAM, THEY SHOULD BE DOCUMENTED BY MEANS OF COMMENTS. .PARAGRAPH ^COMMENTS MAY BE INSERTED BETWEEN ANY TWO COMMANDS BY USING A TAG CONSTRUCTION OF THE FORM: .SKIP 1 .CENTER 80 ^^!THIS IS A COMMENT!\\ .SKIP 1 ^COMMENTS MAY CONTAIN ANY NUMBER OF CHARACTERS AND ANY CHARACTERS EXCEPT THE SPECIAL CHARACTERS. ^IT IS OFTEN CONVENIENT TO INCLUDE CARRIAGE RETURN AND LINE FEED CHARACTERS WITHIN THE COMMENTS SO THAT THE COMMAND STRING LOOKS LIKE: .SKIP 1 .LEFT MARGIN 15 .NOFILL ^^TECO\\ COMMANDS!######^THIS COMMENT DESCRIBES LINE 1 !^^TECO\\ COMMANDS!#####^THIS COMMENT DESCRIBES LINE 2 !MORE COMMANDS! !MORE COMMANDS!#####END OF COMMENT STRING! .FILL .LEFT MARGIN 5 .PARAGRAPH ^THE CONTROL-^A COMMAND MAY BE USED TO PRINT OUT A STATEMENT AT ANY POINT DURING THE EXECUTION OF A COMMAND STRING. ^THE CONTROL-^A COMMAND HAS THE GENERAL FORM: .SKIP 1 .INDENT -5 #########################################_^^ATEXT_^^A .SKIP 1 WHERE THE FIRST _^^A IS THE ACTUAL COMMAND, WHICH MAY BE ENTERED BY STRIKING THE CONTROL KEY AND THE ^A KEY SIMULTANEOUSLY OR BY TYPING A CARET (UPARROW) FOLLOWED BY AN ^A CHARACTER. ^THE SECOND CONTROL-^A CHARACTER IS THE COMMAND TERMINATOR, WHICH MUST BE ENTERED BY TYPING THE CONTROL KEY AND THE ^A KEY SIMULTANEOUSLY. ^THE MESSAGE WHICH APPEARS BETWEEN THE CONTROL-^A CHARACTERS MAY CONTAIN ANY CHARACTERS EXCEPT THE SPECIAL CHARACTERS AND THE _^^A CHARACTER. ^UPON EXECUTION, THIS COMMAND CAUSES ^^TECO\\ TO PRINT THE SPECIFIED MESSAGE AT THE TERMINAL. .PARAGRAPH ^THE _^^AMESSAGE_^^A COMMAND IS PARTICULARLY USEFUL WHEN IT PRECEDES A COMMAND WHOSE NUMERIC ARGUMENT CONTAINS _^^T OR _^^F CHARACTERS. ^THE MESSAGE MAY CONTAIN INSTRUCTIONS NOTIFYING THE COMPUTER OPERATOR WHAT SORT OF INPUT IS REQUIRED. .PARAGRAPH ^A QUESTION MARK ENTERED BETWEEEN ANY TWO COMMANDS IN A COMMAND STRING CAUSES ^^TECO\\ TO PRINT ALL SUBSEQUENT COMMANDS AT THE TERMINAL AS THEY ARE EXECUTED. ^COMMANDS WILL BE PRINTED AS THEY ARE EXECUTED UNTIL ANOTHER QUESTION MARK CHARACTER IS ENCOUNTERED. ^THE SECOND QUESTION MARK CHARACTER MAY BE IN THE SAME COMMAND STRING AS THE FIRST QUESTION MARK, OR IT MAY APPEAR IN A LATER COMMAND STRING. ^IT MAY NOT BE THE FIRST CHARACTER TYPED AFTER A ^^TECO\\-GENERATED ERROR MESSAGE, HOWEVER. .PARAGRAPH ^IF AN ERROR IS TYPED WHILE ENTERING A COMMAND STRING, THE ERROR MAY BE CORRECTED AT ANY TIME BEFORE THE DOUBLE ^^ALT MODE\\ WHICH TERMINATES THE COMMAND STRING IS TYPED. ^CHARACTERS MAY BE DELETED INDIVIDUALLY BY STRIKING THE ^^RUBOUT\\ KEY. ^EACH DEPRESSION OF THE ^^RUBOUT\\ KEY DELETES ONE CHARACTER, BEGINNING WITH THE LAST CHARACTER TYPED, AND CAUSES THE DELETED CHARACTER TO BE PRINTED AT THE TERMINAL. ^AN ENTIRE LINE OF A COMMAND STRING MAY BE DELETED BY TYPING CONTROL-^U. ^IF AN ENTIRE COMMAND STRING IS DELETED IN ONE OF THESE MANNERS, ^^TECO\\ RESPONDS BY PRINTING A NEW ASTERISK AT THE LEFT MARGIN. .PARAGRAPH ^TYPING ^CONTROL-^G CAUSES ^^TECO\\ TO RETYPE THE LINE CURRENTLY BEING INPUT. _^^G IS FUNCTIONALLY EQUIVALENT TO THE ^R^S^X-11^D MULTI-^T^T^Y _^^R COMMAND. ^THE CARET FORM OF THE CONTROL-^G MAY NOT BE USED FOR THIS COMMAND. .PARAGRAPH ^TYPING TWO SUCCESSIVE CONTROL-^G CHARACTERS CAUSES THE CURRENT COMMAND STRING TO BE ERASED COMPLETELY. ^THE DOUBLE CONTROL-^G COMMAND MUST BE PRODUCED BY HOLDING THE CONTROL KEY DEPRESSED WHILE STRIKING THE ^G KEY TWICE (IF THE TERMINAL HAS A BELL, IT WILL RING). ^THE CARET FORM OF THE CONTROL-^G MAY NOT BE USED FOR THIS COMMAND. .PARAGRAPH ^AFTER AN ERROR (OR AFTER _^^G_^^G TO CANCEL A COMMAND), THE PREVIOUS COMMAND BUFFER CONTENTS MAY BE RECOVERED BY IMMEDIATELY TYPING "*Q", WHERE "Q" IS ANY ^Q-REGISTER NAME. ^THIS PLACES THE COMMAND BUFFER CONTENTS INTO THE NAMED ^Q-REGISTER. .SKIP 2 .TEST PAGE 10 2.16 ^^ERROR MESSAGES\\ .PARAGRAPH ^WHEN ^^TECO\\ ENCOUNTERS AN ILLEGAL COMMAND OR A COMMAND THAT CANNOT BE EXECUTED, AN ERROR MESSAGE IS PRINTED AT THE TERMINAL. ^ERROR MESSAGES ARE OF THE FORM: .SKIP 1 ^^?XXX MESSAGE\\ .SKIP 1 WHERE "^^XXX\\" IS AN ERROR CODE AND "^^MESSAGE\\" IS AN EXPLANATORY MESSAGE. ^WHEN AN ERROR MESSAGE IS GENERATED, THE COMMAND TO WHICH IT REFERS IS NOT EXECUTED, THE REST OF THE CURRENT COMMAND STRING IS IGNORED, AND ^^TECO\\ PRINTS AN ASTERISK AT THE LEFT MARGIN TO INDICATE THAT IT IS READY TO ACCEPT FURTHER COMMANDS. .PARAGRAPH ^THE SAME MESSAGE FORMAT IS USED TO REPORT FILE SYSTEM AND ^I/^O ERRORS. ^FOR THESE ERRORS, "^^XXX\\" IS THREE DECIMAL DIGITS REPRESENTING THE DIRECTIVE OR ^I/^O ERROR STATUS, AND THE MESSAGE IS THE CORRESPONDING MESSAGE FROM THE ^^QIO\\ MESSAGE FILE. ^IF THE MESSAGE FILE IS NOT AVAILABLE, BECAUSE ^^MO\\ IS NOT LOADED OR ^^SY\\ IS REDIRECTED, ONLY THE DIGITS WILL BE OUTPUT. .PARAGRAPH ^IN SOME CASES IT MAY BE DIFFICULT TO DETERMINE WHICH COMMAND IN A LONG COMMAND STRING RESULTED IN AN ERROR MESSAGE. ^TYPING A QUESTION MARK IMMEDIATELY AFTER THE ^^TECO\\-GENERATED ERROR MESSAGE CAUSES ^^TECO\\ TO PRINT THE CURRENT COMMAND STRING UP TO AND INCLUDING THE ERRONEOUS CHARACTER. ^WHEN USED IN THIS MANNER, THE QUESTION MARK MUST BE THE FIRST CHARACTER TYPED AFTER THE ERROR MESSAGE IS PRINTED. ^IT IS NOT NECESSARY TO FOLLOW THE QUESTION MARK WITH AN ^^ALT MODE\\. .SKIP 2 .TEST PAGE 10 2.17 ^^MANIPULATING LARGE PAGES\\ .PARAGRAPH ^^TECO\\ IS DESIGNED TO OPERATE MOST EFFICIENTLY WHEN EDITING FILES THAT CONTAIN NO MORE THAN SEVERAL THOUSAND CHARACTERS PER PAGE.[1] .FOOTNOTE 7 .LEFT MARGIN 5 -------------------- .SKIP 1 [1]. ^^TECO\\ STORAGE INCLUDES Q-REGISTER STORAGE AND BUFFER SPACE. ^THE VERSION OF ^^TECO\\ NORMALLY SUPPLIED WITH ^^RSTS/E\\ HAS BUFFER SPACE FOR ROUGHLY 6000 CHARACTERS. ^THE SIZE OF THE TEXT STORAGE AREA MAY BE ALTERED BY RE-BUILDING ^^TECO\\ WITH A DIFFERENT STACK SIZE. ! ^IF ANY PAGE OF AN INPUT FILE CONTAINS MORE THAN SEVERAL THOUSAND CHARACTERS, THE VARIOUS ^^TECO\\ INPUT COMMANDS MAY TERMINATE READING THAT PAGE INTO MEMORY WHEN THE FIRST LINE FEED IS ENCOUNTERED AFTER A POINT 128 CHARACTERS FROM THE END OF THE BUFFER IS REACHED. ^WHEN A PAGE READ HAS TERMINATED BECAUSE THE BUFFER IS ALMOST FULL, THERE MAY NOT BE ROOM FOR MUCH INSERTED TEXT. ^ONE MAY MAKE ROOM BY POSITIONING THE POINTER PAST A PORTION OF TEXT AT THE BEGINNING OF THE BUFFER AND MOVING IT OUT WITH THE COMMANDS .SKIP 1 #######################0,.^P^W0,.^K .SKIP 2 .TEST PAGE 10 2.18 ^^TECHNIQUES AND EXAMPLES\\ .PARAGRAPH ^^TECO\\ MAY BE USED IN THREE WAYS. ^THE MOST ELEMENTARY APPLICATION, DESCRIBED IN ^SECTION ^I OF THIS MANUAL, INVOLVES USING ^^TECO\\ TO CREATE AND EDIT ^^ASCII\\ FILES ON-LINE. ^THE USER ENTERS SHORT COMMAND STRINGS, OFTEN CONSISTING OF A SINGLE COMMAND, AND PROCEEDS FROM TASK TO TASK UNTIL THE FILE IS COMPLETELY EDITED. .PARAGRAPH ^SINCE EVERY EDITING JOB IS SIMPLY A LONG SEQUENCE OF ^^TECO\\ COMMANDS, AN ENTIRE JOB MAY BE ACCOMPLISHED WITH ONE LONG COMMAND STRING CONSISTING OF ALL OF THE SHORT COMMAND STRINGS PLACED END TO END WITH THE INTERVENING DOUBLE ^^ALT MODE\\ CHARACTERS REMOVED. ^THIS LEADS TO THE CONCEPT OF A ^^TECO\\ EDITING PROGRAM, WHICH IS SIMPLY A LONG COMMAND STRING THAT PERFORMS A CERTAIN EDITING TASK. ^EDITING PROGRAMS MAY BE WRITTEN (USING ^^TECO\\) AND STORED IN THE SAME MANNER AS ANY OTHER ^^ASCII\\ FILE. ^WHENEVER THE PROGRAM IS NEEDED, IT MAY BE READ INTO THE BUFFER AS TEXT, STORED IN A ^Q-REGISTER, AND EXECUTED BY AN ^MQ COMMAND (WHERE "Q" IS THE ^Q-REGISTER NAME). .PARAGRAPH ^THIS IS FINE FOR CLEAR-CUT EDITING ASSIGNMENTS, SUCH AS CONVERTING FROM ONE FORMAT TO ANOTHER OR EDITING CERTAIN CHARACTERS OUT OF A FILE, BUT MANY EDITING JOBS ARE SO COMPLEX THAT A GIVEN EDITING PROGRAM WILL ONLY SOLVE A SMALL CLASS OF PROBLEMS. ^THE SOLUTION, IN THIS CASE, IS TO WRITE VERY SPECIALIZED "EDITING SUBROUTINES." ^^TECO\\ SUBROUTINES MIGHT PERFORM SUCH ELEMENTARY FUNCTIONS AS REPLACING EVERY OCCURRENCE OF TWO OR MORE CONSECUTIVE SPACES WITH A TABULATION CHARACTER, FOR EXAMPLE, OR ENSURING THAT WORDS ARE NOT HYPHENATED ACROSS A PAGE BOUNDARY. ^WHEN AN EDITING PROBLEM ARISES, THE RIGHT COMBINATION OF SUBROUTINES MAY BE LOADED INTO VARIOUS ^Q-REGISTERS, AUGMENTED WITH ADDITIONAL COMMANDS IF NECESSARY, AND CALLED BY A "MAINLINE" COMMAND STRING. .PARAGRAPH ^EDITING SUBROUTINES ARE ESSENTIALLY MACROS; THAT IS, SEQUENCES OF COMMANDS WHICH PERFORM COMMONLY REQUIRED EDITING FUNCTIONS. ^THUS THE THIRD AND MOST POWERFUL APPLICATION OF ^^TECO\\ IS THE CREATION AND USE OF A MACRO LIBRARY. ^AS EACH EDITING JOB IS UNDERTAKEN, THE USER MAY LOOK FOR SEQUENCES OF OPERATIONS WHICH MIGHT BE REQUIRED IN FUTURE EDITING ASSIGNMENTS. ^ALL OF THE ^^TECO\\ COMMANDS REQUIRED TO PERFORM SUCH AN OPERATION MAY BE LOADED INTO A ^Q-REGISTER AND EXECUTED BY MEANS OF AN ^MQ OR N^MQ COMMAND. ^WHEN THE JOB IS FINISHED, THE CONTENT OF ANY ^Q-REGISTER WHICH CONTAINS A USEFUL MACRO MAY BE WRITTEN ONTO AN OUTPUT FILE (VIA THE BUFFER) AND SAVED IN THE MACRO LIBRARY. ^THE N^MQ COMMAND, WHICH WAS DESIGNED TO FACILITATE USE OF MACROS, PERMITS ONE RUN-TIME NUMERIC ARGUMENT TO BE PASSED TO THE MACRO. .PARAGRAPH ^THE FOLLOWING EXAMPLES ARE INTENDED TO ILLUSTRATE SOME OF THE TECHNIQUES DISCUSSED EARLIER. ^IT WOULD NOT BE PRACTICAL TO INCLUDE EXAMPLES OF THE USE OF EVERY ^^TECO\\ COMMAND, SINCE MOST OF THE COMMANDS ADMIT TO MANY DIVERSE APPLICATIONS. ^INSTEAD, USERS ARE ENCOURAGED TO EXPERIMENT WITH THE INDIVIDUAL COMMANDS. .SKIP 2 .TEST PAGE 4 ^^EXAMPLE 1: SPLITTING, MERGING, AND REARRANGING FILES\\ .PARAGRAPH ^ASSUME THAT THE USER HAS A FILE NAMED ^^PROGRAM.DAT\\ ON THE SYSTEM DISK AND THAT THIS FILE CONTAINS DATA IN THE FOLLOWING FORM: .SKIP 1 ^^AB##CD##EF##GH##IJ##KL##MN##OP\\ .SKIP 1 WHERE EACH OF THE LETTERS ^A, ^B, ^C ETC., REPRESENTS 20 LINES OF TEXT AND ^^\\ REPRESENTS A FORM FEED CHARACTER. ^THE USER INTENDS TO REARRANGE THE FILE SO THAT IT APPEARS IN THE FOLLOWING FORMAT: .SKIP 1 ^^AOB##D##MN##EF##ICJ##KL##P##GH\\ .SKIP 1 ^THE FOLLOWING SEQUENCE OF COMMANDS WILL ACHIEVE THIS REARRANGEMENT. (^SEARCH COMMAND ARGUMENTS ARE NOT LISTED EXPLICITLY.) .LEFT MARGIN 25 .SKIP 1 .INDENT -20 ^^MCR>TEC\\#############^CALL ^^TECO.\\ .INDENT -20 *^^EBPROGRAM.DAT$Y$$##S\\PECIFY INPUT FILE AND GET FIRST PAGE. .INDENT -20 *^N^C$$###############^SEARCH FOR A CHARACTER STRING IN ^C, WRITING ^A AND ^B ON THE OUTPUT FILE. .INDENT -20 *^J20^X1$$############^SAVE ALL OF ^C IN ^Q-REGISTER 1. .INDENT -20 *20^K$$##############^DELETE ^C FROM THE BUFFER. .INDENT -20 *^N^G$$###############^SEARCH FOR A CHARACTER STRING IN ^G, WRITING ^D, ^E, AND ^F ON THE OUTPUT FILE. .INDENT -20 *^H^X2$$##############^SAVE ^G AND ^H IN ^Q-REGISTER 2. .INDENT -20 *^Y$$################^DELETE ^G^H FROM THE BUFFER AND READ ^I^J. .INDENT -20 *20^L$$##############^MOVE THE POINTER TO THE BEGINNING OF ^J. .INDENT -20 *^G1$$###############^INSERT ^C, WHICH WAS STORED IN ^Q-REGISTER 1. .INDENT -20 *^N^M$$###############^SEARCH FOR A CHARACTER STRING IN ^M, WRITING ^I^C^J AND ^K^L ON THE OUTPUT FILE. .INDENT -20 *^H^X1$$##############^SAVE ^M^N IN ^Q-REGISTER 1 (THE PREVIOUS CONTENT IS OVERWRITTEN). .INDENT -20 *^Y$$################^DELETE ^M^N AND READ ^O^P .INDENT -20 *^J20^X3$$############^SAVE ALL OF ^O IN ^Q-REGISTER 3. .INDENT -20 *20^K$$##############^DELETE ^O FROM THE BUFFER. .INDENT -20 *^P$$################^WRITE ^P ONTO THE OUTPUT FILE, LEAVING THE BUFFER CLEARED (THE INPUT FILE IS EXHAUSTED). .INDENT -20 *^G2$$###############^BRING ^G^H INTO THE BUFFER FROM ^Q-REGISTER 2. .INDENT -20 *^H^P^E^F$$#############^WRITE ^G^H ON THE OUTPUT FILE AND CLOSE IT. .INDENT -20 *^^EBPROGRAM.DAT$Y\\$$##^OPEN THE PARTIALLY REVISED FILE. .INDENT -20 *20^L$$##############^MOVE THE POINTER TO THE BEGINNING OF ^B. .INDENT -20 *^G3$$###############^INSERT ALL OF ^O FROM ^Q-REGISTER 3. .INDENT -20 *^N^D$$###############^SEARCH FOR A CHARACTER STRING IN ^D WRITING ^A^O^B ON THE OUTPUT FILE. .INDENT -20 *^P^W^H^K$$#############^WRITE ^D ON THE OUTPUT FILE AND CLEAR BUFFER. .INDENT -20 *^G1$$###############^BRING ALL OF ^M^N FROM ^Q-REGISTER 1 INTO THE BUFFER. .INDENT -20 *^E^X$$###############^WRITE ^M^N ONTO THE OUTPUT FILE, THEN CLOSE THE FILE AND EXIT TO THE ^M^C^R. .LEFT MARGIN 5 .PARAGRAPH ^AT THIS POINT THE FILE HAS BEEN REARRANGED IN THE DESIRED FORMAT. ^OF COURSE, THIS REARRANGEMENT COULD HAVE BEEN ACCOMPLISHED IN FEWER STEPS IF THE COMMANDS LISTED ABOVE HAD BEEN COMBINED INTO LONGER COMMAND STRINGS. ^NOTE THAT THE ASTERISKS SHOWN AT THE LEFT MARGIN IN THIS EXAMPLE ARE GENERATED BY ^^TECO\\, AND NOT TYPED BY THE USER. .PARAGRAPH ^ASSUME, NOW, THAT THE SAME INPUT FILE MENTIONED EARLIER, CONTAINING DATA IN THE FORM: .SKIP 1 ^^AB##CD##EF##...##OP\\ .SKIP 1 IS TO BE SPLIT INTO TWO SEPARATE FILES, WITH THE FIRST FILE CONTAINING ^^AB##CD\\ AND THE SECOND FILE CONTAINING ^^KL##M\\, WHILE THE REST OF THE DATA IS TO BE DISCARDED. ^THE FOLLOWING COMMANDS COULD BE USED TO ACHIEVE THIS REARRANGEMENT: .SKIP 2 .LEFT MARGIN 25 .INDENT -20 ^M^C^R>^T^E^C#############^CALL ^^TECO\\. .INDENT -20 *^^ERFILE$EWFILE1$$\\###^OPEN THE INPUT FILE AND THE FIRST OUTPUT FILE. .INDENT -20 *^Y$$################^READ ^A^B INTO THE BUFFER. .INDENT -20 *^P$$################^WRITE ^^AB \\ ONTO THE OUTPUT FILE AND READ ^C^D INTO THE BUFFER. .INDENT -20 *^^HPEF\\$$#############^WRITE ^C^D ONTO THE OUTPUT FILE (WITHOUT APPENDING A FORM FEED), AND CLOSE THE FIRST OUTPUT FILE. .INDENT -20 *__^K$$###############^SEARCH FOR A CHARACTER STRING IN ^K. ^AFTER THIS COMMAND HAS BEEN EXECUTED, THE BUFFER WILL CONTAIN ^K^L. ^NO OUTPUT IS GENERATED. .INDENT -20 *^^EWFILE2$P$$\\########^OPEN THE SECOND OUTPUT FILE AND WRITE ^K^L ONTO IT. ^READ ^M^N INTO THE BUFFER. .INDENT -20 *20^L0,.^P$$##########^MOVE THE POINTER TO THE END OF ^M, THEN WRITE ^M ONTO THE OUTPUT FILE. .INDENT -20 *^E^X$$###############^CLOSE THE OUTPUT FILE AND EXIT TO ^M^C^R. .LEFT MARGIN 5 .PARAGRAPH ^AS A FINAL EXAMPLE OF FILE MANIPULATION TECHNIQUES, ASSUME THAT THE USER HAS TWO FILES. ^ONE FILE IS ^^MATH.ONE\\, WHICH CONTAINS INFORMATION IN THE FORM: .SKIP 1 ^^AB##CD##EF##GH##IJ##KL\\ .SKIP 1 AND THE OTHER IS ^^MATH.TWO\\, WHICH CONTAINS: .SKIP 1 ^^MN##OP##QR\\ .SKIP 1 ^IF BOTH OF THESE FILES ARE STORED ON ^D^K1, THE FOLLOWING SEQUENCE OF COMMANDS MAY BE USED TO MERGE THE TWO FILES INTO A SINGLE FILE, ^^MATH.NEW\\, WHICH CONTAINS ALL OF ^^MATH.TWO\\ FOLLOWED BY THE LATTER HALF OF FILE ^^MATH.ONE\\ IN THE FOLLOWING FORMAT: .SKIP 1 ^^MN##OP##QR##GH##IJ##KL\\ .SKIP 2 .LEFT MARGIN 25 .INDENT -20 ^M^C^R>^T^E^C#############^CALL ^^TECO\\. .INDENT -20 *^^ERDK1:MATH.TWO$$###O\\PEN THE FIRST INPUT FILE. .INDENT -20 *^^EWMATH.NEW$$#######O\\PEN THE OUTPUT FILE ON THE DEFAULT DEVICE. .INDENT -20 *^Y$$################^READ ^M^N INTO THE TEXT BUFFER. .INDENT -20 *^N^R$$###############^SEARCH FOR A CHARACTER STRING IN ^R, WRITING ^M^N AND ^O^P ONTO THE OUTPUT FILE. .INDENT -20 *^P^W$$###############^WRITE ^Q^R ONTO THE OUTPUT FILE, APPENDING A FORM FEED. .INDENT -20 *^^ERDK1:MATH.ONE$$\\###^OPEN THE SECOND INPUT FILE. .INDENT -20 *^Y$$################^READ ^A^B INTO THE BUFFER. ^Q^R IS OVER-WRITTEN. .INDENT -20 *__^G$$###############^SEARCH FOR A CHARACTER STRING IN ^G, DELETING ^A^B, ^C^D, AND ^E^F, LEAVING ^G^H IN THE BUFFER. .INDENT -20 *^N^K$$###############^SEARCH FOR A CHARACTER STRING IN ^K, WRITING ^G^H AND ^I^J ON THE OUTPUT FILE, LEAVING ^K^L IN THE BUFFER. .INDENT -20 *^H^P^E^X$$#############^WRITE ^K^L ONTO THE OUTPUT FILE (WITHOUT APPENDING A FORM FEED) AND CLOSE THE FILE, THEN EXIT TO ^M^C^R. .LEFT MARGIN 5 .SKIP 2 .TEST PAGE 6 ^^EXAMPLE 2: ALPHABETIZING BY BINARY SEARCH\\ .PARAGRAPH ^ASSUME THAT ^^TECO\\ IS RUNNING AND THAT THE BUFFER CONTAINS MANY SHORT LINES OF TEXT BEGINNING WITH AN ALPHABETIC CHARACTER AT THE LEFT MARGIN (I.E. IMMEDIATELY FOLLOWING A LINE FEED). ^THE LINES MIGHT CONSIST OF NAMES IN A ROSTER, FOR EXAMPLE, OR ENTRIES IN AN INDEX. ^THE FOLLOWING COMMAND STRING WILL REARRANGE THE LINES INTO ROUGH ALPHABETICAL ORDER. ^THIS COMMAND STRING GROUPS ALL LINES WHICH BEGIN WITH THE CHARACTER "^A" AT THE BEGINNING OF THE PAGE, FOLLOWED BY ALL LINES WITH "^B", AND SO ON. ^NOTE THAT THE ALGORITHM COULD BE EXTENDED TO PLACE THE ENTRIES IN STRICT ALPHABETICAL ORDER BY HAVING IT LOOP BACK TO PERFORM THE SAME BINARY SORTING OPERATION ON SUCCESSIVE CHARACTERS IN EACH LINE. .SKIP 2 .LEFT MARGIN 35 .INDENT -30 ^^!START!#J#0AUA!###############\\^LOAD FIRST CHARACTER OF FIRST LINE INTO Q-REGISTER A .SKIP 1 .INDENT -30 ^^ !!CONT!#L#0AUB!###############\\^LOAD FIRST CHARACTER OF NEXT LINE INTO Q-REGISTER B .SKIP 1 .INDENT -30 ^^ !QA-QB"G#XA#K#-L#GA#1UZ'!#####\\^IF A>B, SWITCH THE LINES AND SET A FLAG (Q-REGISTER Z) .SKIP 1 .INDENT -30 ^^ !QBUA!########################\\^LOAD B INTO A .SKIP 1 .INDENT -30 ^^ !L#Z-."G#-L#OCONT$'!##########\\^LOOP BACK IF THERE IS ANOTHER LINE IN THE BUFFER .SKIP 1 .INDENT -30 ^^ !QZ"G#0UZ#OSTART$'!###########\\^REPEAT IF A SWITCH WAS MADE ON THE LAST PASS .SKIP 1 .INDENT -30 !$$\\ .LEFT MARGIN 5 .PAGE .CENTER 80 ^^APPENDIX A\\ .SKIP 2 .CENTER 80 ^^OCTAL _& DECIMAL ASCII CHARACTER SET .SKIP 4 .TAB STOPS 11 15 21 26 31 36 41 46 51 56 61 .NOFILL CHAR OCT DEC CHAR OCT DEC CHAR OCT DEC CHAR OCT DEC NULL 000 000 SP 040 032 @ 100 064 ` 140 096 _^A 001 001 ! 041 033 A 101 065 \A 141 097 _^B 002 002 " 042 034 B 102 066 \B 142 098 _^C 003 003 _# 043 035 C 103 067 \C 144 099 _^D 004 004 $ 044 036 D 104 068 \D 144 100 _^E 005 005 % 045 037 E 105 069 \E 145 101 _^F 006 006 _& 046 038 F 106 070 \F 146 102 _^G 007 007 ' 047 039 G 107 071 \G 147 103 _^H 010 008 ( 050 040 H 110 072 \H 150 104 TAB 011 009 ) 051 041 I 111 073 \I 151 105 LF 012 010 * 052 042 J 112 074 \J 152 106 VT 013 011 + 053 043 K 113 075 \K 153 107 FF 014 012 , 054 044 L 114 076 \L 154 108 CR 015 013 - 055 045 M 115 077 \M 155 109 _^N 016 014 . 056 046 N 116 078 \N 156 110 _^O 017 015 / 057 047 O 117 079 \O 157 111 _^P 020 016 0 060 048 P 120 080 \P 160 112 _^Q 021 017 1 061 049 Q 121 081 \Q 161 113 _^R 022 018 2 062 050 R 122 082 \R 162 114 _^S 023 019 3 063 051 S 123 083 \S 163 115 _^T 024 020 4 064 052 T 124 084 \T 164 116 _^U 025 021 5 065 053 U 125 085 \U 165 117 _^V 026 022 6 066 054 V 126 086 \V 166 118 _^W 027 023 7 067 055 W 127 087 \W 167 119 _^X 030 024 8 070 056 X 130 088 \X 170 120 _^Y 031 025 9 071 057 Y 131 089 \Y 171 121 _^Z 032 026 : 072 058 Z 132 090 \Z 172 122 ALT 033 027 ; 073 059 [ 133 091 { 173 123 FS 034 028 < 074 060 _\ 134 092 | 174 124 GS 035 029 = 075 061 ] 135 093 } 175 125 RS 036 030 > 076 062 _^ 136 094 ~ 176 126 US 037 031 ? 077 063 __ 137 095 DEL 177 127\\ .FILL .TAB STOPS 15,22 .NOFILL .PAGE .CENTER 80 ^^APPENDIX B\\ .SKIP 2 .CENTER 80 ^^INDEX TO TECO COMMANDS\\ .CENTER 80 ^^AND SPECIAL CHARACTERS\\ .SKIP 2 ^COMMAND ^CHAR ^PAGE ^FUNCTION .SKIP 2 ^^NULL\\ 21 ^DISCARDED ON INPUT. _^^A 48 ^OUTPUT MESSAGE TO TERMINAL. _^^B 43 ^CURRENT DATE. _^^C 21 ^ACTIVATE ^^MCR\\. _^^D 45 ^SET RADIX TO DECIMAL. _^^E 43 ^FORM FEED FLAG. _^^E^A 34 (^MATCH CONTROL CHAR) ^MATCH ALPHA. _^^E^D 34 (^MATCH CONTROL CHAR) ^MATCH DIGIT. _^^E^L 35 (^MATCH CONTROL CHAR) ^MATCH LINE TERMINATOR. _^^E^QQ 35 (^MATCH CONTROL CHAR) ^MATCH CONTENTS OF ^Q-REGISTER Q. _^^E^S 35 (^MATCH CONTROL CHAR) ^MATCH SPACES OR TABS. _^^E^X 35 (^MATCH CONTROL CHAR) ^MATCH ANY CHARACTER. _^^F 43 ^CONTENTS OF CONSOLE SWITCH REGISTER. _^^G_^^G 21 ^KILL COMMAND STRING. _^^G ^S^P 21 ^RETYPE CURRENT COMMAND LINE. _^^H 43 ^TIME OF DAY IN SECONDS/2. ^^TAB\\ 29 ^INSERT TAB AND TEXT. ^^LF\\ 5 ^LINE TERMINATOR, IGNORED IN COMMANDS. ^^VT\\ - ^IGNORED IN COMMANDS. ^^FF\\ 5 ^PAGE TERMINATOR, IGNORED IN COMMANDS. ^^CR\\ 5 ^IGNORED IN COMMANDS. _^^N 43 ^END OF FILE FLAG. _^^NX 34 (^MATCH CONTROL CHAR) ^MATCH ALL BUT X. _^^P - ^NOT A ^^TECO\\ COMMAND. _^^Q 34 (^MATCH CONTROL CHAR) ^TAKE NEXT CHAR LITERALLY. N_^^R 31 ^STRING REPLACEMENT. _^^S 43 ^LENGTH OF LAST STRING INSERTED OR FOUND. _^^S 34 (^MATCH CONTROL CHAR) ^MATCH SEPARATOR CHAR. _^^T 43 ^^ASCII\\ CODE OF NEXT CHAR TYPED. _^^U 21 ^KILL COMMAND LINE. _^^UQ 36 ^PUT STRING INTO ^Q-REGISTER Q. _^^V 43 ^VERSION OF ^^TECO\\ _^^W - ^NOT A ^^TECO\\ COMMAND. _^^X 34 (^MATCH CONTROL CHAR) ^MATCH ANY CHARACTER. _^^Y - ^NOT A ^^TECO\\ COMMAND. _^^Z 43 ^NUMBER OF CHARACTERS IN ^Q-REGISTER AREA. ^^ALT\\ 20 ^STRING AND COMMAND TERMINATOR. _^_\ (^F^S) - ^NOT A ^^TECO\\ COMMAND. _^] (^G^S) - ^NOT A ^^TECO\\ COMMAND. .PAGE ^COMMAND ^CHAR ^PAGE ^FUNCTION .SKIP 2 _^_^ (^R^S) 44 ^^ASCII\\ VALUE OF NEXT CHAR IN COMMAND STRING. _^__ (^U^S) 44 ^ONES COMPLEMENT. ^S^P 21 ^IGNORED IN COMMANDS. _! 38 ^DEFINE LABEL. " 39 ^START CONDITIONAL. _# 44 ^LOGICAL ^O^R. $ - ^NOT A ^^TECO\\ COMMAND. (^DO NOT CONFUSE WITH ^^ALT MODE\\.) N%Q 36 ^ADD N TO ^Q-REGISTER Q. _& 44 ^LOGICAL ^^AND\\. ' 39 ^END CONDITIONAL. ( 44 ^EXPRESSION GROUPING. ) 44 ^EXPRESSION GROUPING. * 44 ^MULTIPLICATION. *Q 49 ^PUT LAST COMMAND IN ^Q-REGISTER Q. + 44 ^ADDITION. , 25 ^ARGUMENT SEPARATOR. - 44 ^SUBTRACTION OR NEGATION. _. 42 ^CURRENT POINTER POSITION. / 44 ^DIVISION. 0-9 - ^DIGIT. : 32 ^MAKE NEXT SEARCH RETURN A VALUE. :: 32 ^MAKE NEXT SEARCH A COMPARE. N; 40 ^EXIT ITERATION IF N>=0. N< 35 ^ITERATE N TIMES. = 45 ^TYPE IN DECIMAL. == 45 ^TYPE IN OCTAL. > 35 ^END ITERATION. ? 48 ^TOGGLE TRACE MODE. ? 49 ^TYPE COMMAND STRING UP TO ERROR. @ 30,33 ^USE ALTERNATE STRING DELIMITERS. ^A 25 ^APPEND TO BUFFER. N^A 42 ^^^ASCII\\ VALUE OF CHAR IN BUFFER. ^B 42 ^0 - BEGINNING OF BUFFER. N^C 26 ^ADVANCE N CHARACTERS. N^D 28 ^DELETE N CHARACTERS. ^E^A 23 ^CLOSE AND SAVE OUTPUT FILE. ^E^B 23 ^OPEN INPUT AND OUTPUT. ^E^C 23 ^CLOSE OUT (COPY INPUT TO OUTPUT AND CLOSE). ^E^F 23 ^CLOSE OUTPUT FILE. ^E^G 23 ^CLOSE OUT AND EXIT. ^E^H 42,46 ^EDIT HELP LEVEL. ^E^K 23 ^KILL OUTPUT FILE. ^E^P 23 ^CLOSE AND SAVE INPUT FILE. ^E^R 23 ^OPEN INPUT FILE. ^E^S 42,46 ^SEARCH VERIFICATION. .PAGE ^COMMAND ^CHAR ^PAGE ^FUNCTION .SKIP 2 ^E^T 42,46 ^TYPE OUT CONTROL. ^E^W 23 ^OPEN OUTPUT FILE. ^E^X 23 ^CLOSE OUT AND EXIT. N^F^N 31 ^GLOBAL STRING REPLACE. ^F^R 30 ^REPLACE LAST STRING. N^F^S 31 ^LOCAL STRING REPLACE. ^GQ 37 ^GET STRING IN ^Q-REGISTER Q INTO BUFFER. ^H 42 ^EQUIVALENT TO "^B,^Z". ^I 29 ^INSERT TEXT. N^I 29 ^INSERT ^^ASCII\\ CHARACTER "N". N^J 26 ^MOVE POINTER TO "N". N^K 28 ^KILL N LINES. M,N^K 28 ^DELETE BETWEEN M AND N. N^L 26 ^ADVANCE N LINES. ^MQ 37 ^EXECUTE STRING IN ^Q-REGISTER Q. N^N 31 ^GLOBAL SEARCH. ^O 38 ^GO TO LABEL. N^P 25 ^ADVANCE N PAGES. M,N^P 25 ^WRITE OUT CHARS M TO N. N^P^W 25 ^WRITE BUFFER N TIMES. M,N^P^W 25 ^WRITE OUT CHARS M TO N. ^QQ 37 ^NUMBER IN ^Q-REGISTER Q. N^R 26 ^BACK UP N CHARACTERS. N^S 30 ^LOCAL SEARCH. N^T 27 ^TYPE N LINES. M,N^T 27 ^TYPE FROM M TO N. N^UQ 36 ^PUT NUMBER N IN ^Q-REGISTER Q. ^V 27 ^TYPE THE CURRENT LINE. ^W - ^NOT A ^^TECO\\ COMMAND. N^XQ 37 ^PUT N LINES INTO ^Q-REGISTER Q. M,N^XQ 37 ^PUT CHARACTERS M TO N INTO ^Q-REGISTER Q. ^Y 25 ^READ INTO BUFFER. ^Z 42 ^END OF BUFFER [ - ^NOT A ^^TECO\\ COMMAND. _\ 42 ^VALUE OF DIGIT STRING IN BUFFER. N_\ 45 ^CONVERT N TO DIGITS IN BUFFER. ] - ^NOT A ^^TECO\\ COMMAND. _^ 22 ^INTERPRET NEXT COMMAND CHAR AS A CONTROL CHARACTER. N__ 31 ^GLOBAL SEARCH WITHOUT OUTPUT. ` - ^NOT A ^^TECO\\ COMMAND. A-Z ^TREATED THE SAME AS UPPER CASE ^A-^Z. { - ^NOT A ^^TECO\\ COMMAND. | - ^NOT A ^^TECO\\ COMMAND. } - ^NOT A ^^TECO\\ COMMAND. ~ - ^NOT A ^^TECO\\ COMMAND. ^^DEL\\ 20 ^DELETE LAST CHARACTER TYPED IN.