From fab43de821221655d6480f4c6d1a494a4cfe04f9 Mon Sep 17 00:00:00 2001 From: Blake McBride Date: Sun, 31 May 2015 16:26:12 -0500 Subject: [PATCH] Documentation --- README.md | 68 ++++++++++++++ doc/BUILD.txt | 68 ++++++++++++++ doc/INTRO.txt | 145 ++++++++++++++++++++++++++++++ doc/Summary.pdf | Bin 0 -> 43618 bytes doc/blake-notes.txt | 48 ++++++++++ doc/{teco.doc => teco-manual.txt} | 0 lib2/bl.tec | 1 + lib2/bw.tec | 1 + lib2/cls.tec | 5 ++ lib2/commands | 101 +++++++++++++++++++++ lib2/dw.tec | 1 + lib2/el.tec | 1 + lib2/ew.tec | 1 + lib2/jmp.tec | 1 + lib2/np.tec | 1 + lib2/pp.tec | 1 + lib2/start.tec | 4 + src/video.txt | 70 --------------- 18 files changed, 447 insertions(+), 70 deletions(-) create mode 100644 README.md create mode 100644 doc/BUILD.txt create mode 100644 doc/INTRO.txt create mode 100644 doc/Summary.pdf create mode 100644 doc/blake-notes.txt rename doc/{teco.doc => teco-manual.txt} (100%) create mode 100644 lib2/bl.tec create mode 100644 lib2/bw.tec create mode 100644 lib2/cls.tec create mode 100644 lib2/commands create mode 100644 lib2/dw.tec create mode 100644 lib2/el.tec create mode 100644 lib2/ew.tec create mode 100644 lib2/jmp.tec create mode 100644 lib2/np.tec create mode 100644 lib2/pp.tec create mode 100644 lib2/start.tec delete mode 100644 src/video.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..e53bb93 --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ + +TECOC - TECO Editor +=================== + +Teco is a text editor written by Dan Murphy in 1962. It differs from +other editors in several ways as follows: + +1. Character oriented + +Vi and Emacs are screen oriented editors. You view the text on the whole +window or screen, and you edit the text right where you see it. Changes take +affect immediately. + +ed, ex, edlin are line oriented editors. Edited text is viewed, +referenced, and edited by line. + +Teco is character oriented. This means the unit of reference is a +single character. On one hand, this may make teco cumbersome to use, +but on the other hand, it gives teco very fine control over what is +happening. + +Teco does have a video mode, however text is still edited with +commands on a character basis. The screen is simply updated once a +command is completed to give the user a visual representation of where +they are. Text is not edited in the screen view area. + +2. Macros + +In general, vi, ed, and edlin are not programmable. This means you +have the functions the editor provides and that is all you can do. +However, teco is highly programmable. Programs that you write are +called macros. In fact, the original version of Emacs was written as +teco macros. Also, "emacs" actually means "Editing Macros". + + +The original versions of Teco were written in the machine languages of +the machines it operated on. As newer machines and editor arose, teco +fell into increasing disuse and obscurity. + +In the early '80's Pete Siemsen, a long-time teco user, created a +portable version of Teco in the C language called "tecoc". Rather +than create a new editor, Pete's goal was to duplicate the original teco +as closely as possible. + +As time wore on, Tom Almy, Blake McBride, and others increasingly +assisted in tecoc's maintenance (porting, bug fixes, etc.). +Eventually, tecoc found a new home and principal support at Tom +Almy's home page where Tom kept up with ports to Windows, Mac, and +Linux. + +Most recently, Blake McBride: + +1. Merged Tom Almy's various ports along with work done by Blake +2. renewed the Windows, Mac, and Linux ports +3. re-enabled video support (on Mac & Linux) +4. bug fixes and speed improvements +5. tested on 64 bit machines + +This latest work is available on github at: + +https://github.com/blakemcbride/Tecoc + +Other documents in the "doc" directory provide complete documentation. +See the following files in the "doc" directory: + +BUILD.txt Build and setup instructions +INTRO.txt Introduction to using the tecoc +teco-manual.txt Complete manual diff --git a/doc/BUILD.txt b/doc/BUILD.txt new file mode 100644 index 0000000..35b796b --- /dev/null +++ b/doc/BUILD.txt @@ -0,0 +1,68 @@ + +TECOC build & setup instructions + +Please note my use of "teco" and "tecoc". "teco" refers to the editor +in general, and "tecoc" refers to the particular "tecoc" +implementation of teco. + +TECOC has been tested on 64 bit Linux, 64 bit Mac, and 64 bit Windows +OSs that were current as of 2015. In the past, this system was build on +32 and even 16 bit machines, so I have every reason to believe that it +would build as-is on 32 bit environments. + +I used GCC on Linux and Mac, and I used the Microsoft 2013 C compiler +on Windows. On the Mac, GCC came automatically when I installed the +Apple development kit. I did no special setup. + +The Linux and Mac versions support video and non-video modes. The +Windows version only supports non-video mode. (Porting Windows to +video using ncurses would probably be pretty simple.) As-shipped, the +Linux and Mac versions are setup to build the video versions. This +can be controlled by editing their associated makefiles. Linux and +Mac machine would need to install the ncurses development library. + +To build, go to the "src" directory and type: + +Linux: make -f makefile.linux + +Mac: make -f makefile.osx + +Windows: nmake -f makefile.win + +You will end up with an executable names "tecoc". That is all you +need from this directory. + +Historically, the teco environment included a handful of utilities +including: + + teco + munge + inspect + Make + +Tecoc includes all of this functionality in the single tecoc +executable. Tecoc has two ways of determining which functionality you +desire as follows: + +1. On file systems that have links, one can create an entry with one +of the above names that links to the tecoc executable. + +2. Alternatively (especially on Windows), if you execute the tecoc +executable directly, then the first argument must be one of the +utility names above. "teco" is what you'd mainly use. + +As mentioned, teco supports the ability to create your own macros. +User added macros would exist in files named XX.tec +where XX is the name of the macro. It need not be two characters long. +These macro files must exist somewhere tecoc can find them. To this end, +tecoc supports an environment variable named TEC_LIBRARY +You should set that environment variable to the directory (full path) +where the macros are to exist. Note that TEC_LIBRARY must contain a +trailing slash. + +Lastly, the "tec" file extension means "teco macro". There is also a +file type "tes". That stands for "teco macro source". Generally, if you +have a small macro, you'd just put it in a .tec file. Larger macros +would be written in a .tes file allowing comments and space. Later +the squeeze function can be used to convery a .tes file into a .tec +file. diff --git a/doc/INTRO.txt b/doc/INTRO.txt new file mode 100644 index 0000000..afa2b2e --- /dev/null +++ b/doc/INTRO.txt @@ -0,0 +1,145 @@ + +Introduction to using tecoc + +Evocation +--------- +As stated in BUILD.txt, tecoc can either be executed directly, or a +file link can be created, or a batch file or shell script can be +created. For example, if you want to edit a file name MyFile.txt, +if you have a link setup like: + +teco -> tecoc + +then you could execute: + + teco MyFile.txt + +However, if you want to run tecoc directly, you'd have to do: + + tecoc teco MyFile.txt + +The extra, and first, argument, "teco", tells tecoc what mode to run +under. The remainder of this document will assume you have the link +setup. + +If you have video mode configured, tecoc nevertheless starts in non-video +mode by default. To start tecoc in video mode you could do: + + teco -scroll:5 MyFile.txt + +This would make the bottom 5 lines used for commands, and the remaining +lines above to be the video display area. + +Additionally, video mode can be turned on or off while editing a file, +regardless of the startup parameters. See "video.txt" + +Importantly, the command to save the file and exit is: + + EX followed by two escape key presses + +To exit the edit session without saving, do: + + -1EX followed by two escape key presses + +Commands +-------- + +Teco is a character based editor. This means that teco keeps track of +what character you are at, and not what line you are on. One normally +edits a file by positioning the point and editing there. + +The "$" character functions as the "escape key". A single $ is used +to separate multiple commands. Two consecutive escapes, $$, cause +teco to execute all of the commands up to that point. + +Other characters, besides $, each have a meaning to teco. Some +commands consist of more than one character. Teco commands are +case-insensitive. This means that "m" and "M" mean the same thing. +In this text I will show the commands in uppercase simply to avoid +confusion between such letters as ell and one. + +For example, the "L" command causes teco to move its pointer to the +following line. If you type "L", nothing happens until you tell teco +to execute is by following the "L" with "$$". So, + +L$$ + +will cause teco to go to the next line. + +You may have any number of commands specified before executing them, +for example: + +LLL$$ + +will go down three lines. + +Also, commands may take numeric arguments. For example, + +3L$$ + +will go down 3 lines. + +Commands may also be negative, so the following: + +-4L$$ + +will cause teco to go up 4 lines. Also, since the default argument is one, + +-L$$ + +is the same as -1L$$ + +In video mode, you will see the changes occur as soon as you execute $$. +In non-video mode, you see nothing unless you ask teco to display a +portion of the text. For example, if you type: + +V$$ + +you will see the line you are on. + +The current character position is always available vie the "." command. +There is also the "=" command that causes teco to display a value, thus: + +.=$$ + +causes teco to display the current character position. + +Teco has many, many powerful commands. It has loops, conditionals, +variables, etc.. Each letter has a different function. See the +included documentation. + + +Macros +------ + +A series of commands, since they are only letters, may be entered into +a text file. A user may tell teco to read and execute the commands in +one of those files. The name associated to that set of commands is the name of +the file they are located in (minus the .tec extension). The command +used to execute a macro file is "EI", thus, for example, if you have a +macro file named "ab.tec" located in the TEC_LIBRARY directory, +executing: + +EIab$$ + +will cause teco to execute the commands located in that file. + +In this example, the command is "EI". It takes a trailing string argument +"ab", and the "$$" means execute it. + + +Moving On +--------- + +To learn more, I suggest you read the following, included, documents in +the order shown: + + Summary.pdf + blake-notes.txt + teco-manual.txt + wchart.txt + +Many of the other documentation files are either historical or provide +greater, tecoc specific, information. + + diff --git a/doc/Summary.pdf b/doc/Summary.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1b7e0420228401f83418a1f46373c6f38a90e915 GIT binary patch literal 43618 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%0DshnveX*c`{3 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 literal 0 HcmV?d00001 diff --git a/doc/blake-notes.txt b/doc/blake-notes.txt new file mode 100644 index 0000000..35a79d0 --- /dev/null +++ b/doc/blake-notes.txt @@ -0,0 +1,48 @@ + +Blake's Tecoc notes + +.TES Teco source file +.TEC Teco macro file (compressed .TES file) + +The distribution has a lib directory that has some teco macros. The +SQU macro used to squeze / compress teco source files is included +there. + += display value + +Use /nomemory to avoid memory files + +mung is just a link to teco + +To compile / compress a teco macro file do (np.tes to np.tec): + +mung squ np.tec=np.tes/D:N/L:Y/B:Y/T:Y/C:Y/W:N/A:Y/E:N + +My macros + +bl beginning of line +bw beginning of word +cls clear screen +dw delete word +el end of line +ew end of word +jmp jump to line +np next page - display and move forward one screen +pp previous page - display and move back one screen + +0^X case insensitive search mode (default) +-1^X case sensitive search mode + +---------------------------------------------------------------------- + +Video mode of tecoc + +5,7:w to evoke video display (5 command lines at bottom) +0,7:w video mode off +-4:w to redraw screen +^w put current line at top of screen + + +A file can be started in video mode with: + + teco -scroll:5 myfile on linux or Mac diff --git a/doc/teco.doc b/doc/teco-manual.txt similarity index 100% rename from doc/teco.doc rename to doc/teco-manual.txt diff --git a/lib2/bl.tec b/lib2/bl.tec new file mode 100644 index 0000000..6a65cce --- /dev/null +++ b/lib2/bl.tec @@ -0,0 +1 @@ +-ll ! goto the beginning of a line ! diff --git a/lib2/bw.tec b/lib2/bw.tec new file mode 100644 index 0000000..7418d59 --- /dev/null +++ b/lib2/bw.tec @@ -0,0 +1 @@ +[0+0U0Q0"E1U0'Q0">Q0<<0A"R|0;'C><0A"R0;'C>>|-Q0<<-A"R0;'-C><-A"R|0;'-C>>']0 \ No newline at end of file diff --git a/lib2/cls.tec b/lib2/cls.tec new file mode 100644 index 0000000..120a6ff --- /dev/null +++ b/lib2/cls.tec @@ -0,0 +1,5 @@ + +! Clear Screen ! + +26< +> diff --git a/lib2/commands b/lib2/commands new file mode 100644 index 0000000..5f0e122 --- /dev/null +++ b/lib2/commands @@ -0,0 +1,101 @@ + + + TECO COMMANDS + ------------- + + +File Commands +------------------------------------ +EX save file - exit +EBfile open file for input/output with backup +ERfile open input file for reading +EWfile open output file for writing +EC save buffer - clear buffer - close input/output files +EF close output file +EK kill current output file (abort edit) +Y read the next page +P save page - read next page +nP perform n Ps + + +Positioning Commands +------------------------------------ +J jump to beginning of buffer +nJ jump to character position n +L beginning of next line +nL move n relative lines (0 means beginning of line) +C move forward one character +nC move n characters +R move reverse one character +nR move n relative characters +Stext$ search buffer for text (position after search string) + (if no text use previous search text) +Ntext$ search entire file from current position +nS search for the nth occurance (negative n means reverse) +nN search for the nth occurance (all pages) + + +Type Commands +------------------------------------- +T type current position to EOL +nT type n relative lines (0 means from BOL) +HT type whole buffer +V view whole current line +nV view n lines around current line + + +Text modification commands +----------------------------------------- +Itext$ insert text +@I/txt/ insert txt (may contain escapes) +K kill to EOL +nK kill n relative lines (0 meands BOL to current position) +HK kill whole buffer +D delete one character +nD delete n relative characters +FDtext$ find and delete text +FKtext$ find and kill from initial location to final location +FRtext$ replace last found text with text + + + + + + + + + + + + + + + +Constants & Misc. Commands +------------------------------------ +Z number of characters in the buffer +B 0 +H B,Z +. current position += display value +n execute command string cmd n times +n^Q convert line offset (from 0) to character offset + (only works when starting from beginning of buffer) + + +Command Line +-------------------------------------- +^U erase command line +*q put last command line into q register q + + +Q Register Commands +---------------------------------------- +nUq put n into q register q +Qq get value from q register q +^Uqstr put string str into q register q +nXq copy next n (default 1) lines into q register q +n:Xq append next n lines into q register q +Gq get text in q register q and insert into buffer +Mq execute macro commands in q register q + diff --git a/lib2/dw.tec b/lib2/dw.tec new file mode 100644 index 0000000..854d3e0 --- /dev/null +++ b/lib2/dw.tec @@ -0,0 +1 @@ +[0+0U0Q0"E1U0'Q0">Q0<<0A"R0;'D><0A"R|0;'D>>|-Q0<<-A"R0;'-D><-A"R|0;'-D>>']0 \ No newline at end of file diff --git a/lib2/el.tec b/lib2/el.tec new file mode 100644 index 0000000..aef4b28 --- /dev/null +++ b/lib2/el.tec @@ -0,0 +1 @@ +l-2c ! goto the end of a line ! \ No newline at end of file diff --git a/lib2/ew.tec b/lib2/ew.tec new file mode 100644 index 0000000..d4d9d5c --- /dev/null +++ b/lib2/ew.tec @@ -0,0 +1 @@ +[0+0U0Q0"E1U0'Q0">Q0<<0A"R0;'C><0A"R|0;'C>>|-Q0<<-A"R|0;'-C><-A"R0;'-C>>']0 \ No newline at end of file diff --git a/lib2/jmp.tec b/lib2/jmp.tec new file mode 100644 index 0000000..66b7c03 --- /dev/null +++ b/lib2/jmp.tec @@ -0,0 +1 @@ +[0-1U0JQ0J]0 \ No newline at end of file diff --git a/lib2/np.tec b/lib2/np.tec new file mode 100644 index 0000000..2ffbd1e --- /dev/null +++ b/lib2/np.tec @@ -0,0 +1 @@ +ei20l-20t ! macro to display the next screen full ! diff --git a/lib2/pp.tec b/lib2/pp.tec new file mode 100644 index 0000000..3257965 --- /dev/null +++ b/lib2/pp.tec @@ -0,0 +1 @@ +-20l20t ! display previous screen ! diff --git a/lib2/start.tec b/lib2/start.tec new file mode 100644 index 0000000..9f19ca8 --- /dev/null +++ b/lib2/start.tec @@ -0,0 +1,4 @@ +-1^x ! enable case sensitive searches ! +5*256+^^!ev ! display context before prompt ! +0,16ed ! retain dot after failed searches ! +$$ diff --git a/src/video.txt b/src/video.txt deleted file mode 100644 index 2d46eb6..0000000 --- a/src/video.txt +++ /dev/null @@ -1,70 +0,0 @@ -Command line -------- ---- --NOPAGE - Don't separate input into pages. Instead, treat form feeds - as normal characters. -+nnn - where nnn is any number of digits. Go to line number nnn and - set NOPAGE. Note this uses the UNIX end of line convention - for use with cc output &c. The non-unix line termination will - still be used for nL and other intrinsic TECO commands, this just - controls the starting line AT INVOCATION. --SCROLL:nnn - do nnn,7:w --SCROLL:nnn:SEEALL - do nnn,7:W and 1,3:W --INSPECT - Same as /INSPECT --NOMEMORY - Same as /NOMEMORY -Video ------ -^W Immediate mode command - try to place line containing dot in - centre of scope window --4W Complete redraw of screen --1W Stop refreshing scope before each prompt -1W Start refreshing scope before each prompt -0W refresh scope -3:w Seeall Mode (set to 1 if SeeAll is on, 0 otherwise) - seeall is more unix style then you might expect -5:w Hold mode is not properly implemented. I don't like it anyway. -7:W Number of lines in command window. The size of the scope window - will be (Rows - 7:W (- 1 if ET&256)) -8:w Attribute for special characters. This is highly implementation - dependent (curses implementation dependent). Under SUN OS 4.1 - 0 - no marking - 1 - underline - 2 - reverse - 4 - blink - 8 - dim - 16 - bold - 128 - ALT_CHARSET - currently controls marking of ` - END OF PAGE (BTEE/+) -9:W Bit 0 - keypad support on - Bit 1 - do not do timeout escape sequence detection -ET&1 image mode - doesn't really do much with curses version -ET&2 use scope for delete and control-U -ET&4 accept lowercase input -ET&32 read with no wait on control-T (unimplemented - easy though) -ET&2048 reverse roles of BS and DEL (good if you use stty erase ^H, - in particular the key placement of BS is sometimes much easier - to get at then DEL). Should I have it detect the kill character - and automatically set this? -ET&8192 accept ` as escape (for VT220 terminals) -ET&16384 special VT200 mode -ET&32768 trap control-C -EZ&1 if false VMS style versioning for backup files (multiple backups) - if true only one backup level (foo, foo.bak) -EZ&8 if TRUE use LARROW (<) for CR, if false use ` -EZ&16 if set then prefer audio beep else visual flash -EZ&32 winline divider for scope -EZ&128 if set DO NOT stop read on FF otherwise make pages as usual -EZ&256 UNIX NL-convert LF to on input and invert on output -ED&512 controls scope display. If set will use VT100 line drawing - characters for CR and LF (in non-scope mode). May degrade - performance. -EZ&2048 if set use BTEE for end of buffer, else use DIAMOND - (desirable for pathological terminal types) -EZ&8192 don't show CR in scope - closer to TECO-11, but really - not as good in my opinion (Mark Henderson)