470 lines
18 KiB
Plaintext
470 lines
18 KiB
Plaintext
AAREADME.TXT
|
|
|
|
This directory contains TECO-C, a version of TECO written in C.
|
|
It was written in C so the author could move comfortably from VAX/VMS
|
|
to various other machines, including MicroVaxes, which couldn't execute
|
|
TECO-11 prior to VMS 5.0 because they don't support PDP-11 compatibility
|
|
mode. TECO32, distributed with v5.0, solved this problem.
|
|
|
|
TECO-C is meant to be a complete implementation of TECO as defined
|
|
by the Standard TECO User's Guide, which is in file TECO.DOC. There is no
|
|
manual for TECO-C itself, but the Standard TECO manual was the specification
|
|
for TECO-C, so it serves as an excellent manual. TECO-C departs from the
|
|
Standard manual in only a few places (like no video mode), listed in file
|
|
PROBLEMS.TXT. There is quick-and-dirty "wall chart" of all TECO commands
|
|
in file WCHART.TXT.
|
|
|
|
This version of TECO-C runs under VMX/VMS, MS-DOS, AmigaDOS and Unix
|
|
(SunOS, Ultrix and System V on a Data General Aviion). If you find bugs or
|
|
have any comments about TECO-C, please contact
|
|
|
|
Pete Siemsen Pete Siemsen
|
|
645 Ohio Avenue #302 University of Southern California
|
|
Long Beach, Ca. 90814 1020 West Jefferson Blvd.
|
|
Los Angeles, CA 90089-0251
|
|
|
|
(213) 433-3059 (home) (213) 740-7391 (work)
|
|
|
|
Internet: siemsen@usc.edu
|
|
|
|
The following sections describe how to use or build TECO-C for
|
|
different environments. The command line syntax is the same as the syntax
|
|
for TECO-11 command lines.
|
|
|
|
|
|
###########################################################################
|
|
U N D E R V A X / V M S
|
|
|
|
TECO-C was mostly developed under VAX/VMS. It compiles and links
|
|
using VAX C 3.1 under VMS version 5.3.
|
|
|
|
To set up: inspect and modify ZVLOGIN.COM and then add it to your
|
|
LOGIN.COM
|
|
|
|
To compile: inspect/edit ZVBLD.COM, then SUBMIT it
|
|
|
|
To link: use the "LT" command (defined in ZVLOGIN.COM)
|
|
|
|
To run: inspect/edit the symbol definitions in ZVLOGIN.COM
|
|
Note: TECO-C uses the same command line syntax as TECO32
|
|
|
|
|
|
###########################################################################
|
|
U N D E R M S - D O S
|
|
|
|
TECO-C compiles/links under Turbo C v2.00 under MS-DOS 4.01 and
|
|
Concurrent DOS 386 v3.0.
|
|
|
|
To build: run MAKE on MAKEFILE.TC. to build TECO from scratch say:
|
|
"make -fmakefile.tc -DALL". see MAKEFILE.TC for other make
|
|
-D options. also see MAKETECO.BAT.
|
|
|
|
To run: use TECO.BAT to edit a file or MUNG.BAT to run a macro,
|
|
for example: TECO filename.
|
|
|
|
|
|
###########################################################################
|
|
U N D E R U N I X
|
|
|
|
To compile and link: use the make utility on "makefile.sun" (for SunOS) or
|
|
"makefile.ulx" (for Ultrix) or "makefile.dg" (for System V Unix
|
|
on a Data General Aviion).
|
|
|
|
To run: define aliases and environment variables in your .cshrc file.
|
|
Here's an example, assuming my initialization file is named
|
|
.tecorc and it's in my home directory, and my macros are in a
|
|
directory named tecoc under my main directory. You'll have to
|
|
change the directory names, of course.
|
|
|
|
setenv TEC_INIT \$/home/sol/siemsen/.tecorc
|
|
setenv TEC_LIBRARY /home/sol/siemsen/tecoc/
|
|
alias te '/home/sol/siemsen/tecoc/tecoc teco -nocreate'
|
|
alias mung '/home/sol/siemsen/tecoc/tecoc mung'
|
|
alias tma '/home/sol/siemsen/tecoc/tecoc make'
|
|
|
|
After doing this, "te" runs tecoc.
|
|
|
|
|
|
Unix Command line
|
|
---- ------- ----
|
|
|
|
To make Unix users more comfortable, TECO-C uses Unix-like options syntax
|
|
instead of the familiar "/" style used under VAX/VMS. The options can be
|
|
abbreviated. They are (optional characters in square brackets):
|
|
|
|
-in[spect]
|
|
-noc[reate]
|
|
-noi[ni]
|
|
-nom[emory]
|
|
-sc[roll]
|
|
-scroll:nnn:SEEALL
|
|
do nnn,7:W and 1,3:W
|
|
|
|
|
|
-nop[age]
|
|
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.
|
|
|
|
|
|
EZ Mode Control Flag
|
|
-- ---- ------- ----
|
|
|
|
To add functionality, TECO-C is sensitive to bits in an extra mode control
|
|
flag in addition to the standard ones. Bits in the EZ mode control flag are
|
|
used in different ways by different operating systems. Under Unix, bits in
|
|
the flag have the following meanings:
|
|
|
|
1 Mark Henderson, who did much of the Unix port, likes the way
|
|
VAX/VMS keeps versions of files. VMS appends a semicolon followed
|
|
by a version number to files, and has the PURGE command to clean
|
|
out old versions of files. If this bit is off, TECO-C will handle
|
|
file version numbers, appending the appropriate version number to
|
|
file names. Mark supplied a "purge" program (distributed with TECO-C)
|
|
for users of this feature. Setting this flag turns off the feature,
|
|
to make TECO-C function as expected by the average Unix user. This
|
|
flag is set by default.
|
|
|
|
8 I don't know what this flag does. It only makes sense when TECO-C
|
|
is compiled with CURSES support.
|
|
|
|
16 If set, when it's time to beep, use an audio beep, and if it fails,
|
|
then try a video flash. If clear, try a video flash, and if it
|
|
fails, use an audio beep. This bit works only if TECO-C was compiled
|
|
with CURSES support. This bit is off by default.
|
|
|
|
32 If set, and split screen scrolling mode is on (see the 7:W command),
|
|
TECO-C puts a line between the upper and lower scrolling regions.
|
|
If off, don't display a line. This bit works only if TECO-C was
|
|
compiled with CURSES support. This bit is off by default.
|
|
|
|
128 If set, don't stop on form feeds when reading. If clear, a form
|
|
fed in the input stream stops the read (the standard TECO style).
|
|
This bit is off by default.
|
|
|
|
256 If set, use Unix-style newline terminators. This means when files
|
|
are read in, carriage-returns are not added to the end of lines,
|
|
and when the user types the RETURN key, only a newline is entered
|
|
into the command line (usually a carriage-return/line-feed pair is
|
|
entered). Old macros (and old TECO users) may get confused if this
|
|
bit is set, but it's required if CURSES support is compiled into
|
|
TECO-C.
|
|
|
|
2048 If set, use a bottom-tee symbol instead of a diamond to indicate
|
|
the end-of-buffer. This bit works only if TECO-C was compiled with
|
|
CURSES support. This bit is off by default.
|
|
|
|
8192 If set, don't show CR in SCROLL mode (like standard TECO). If clear,
|
|
show CR (a graphics character indicating a carriage return) when in
|
|
SCROLL mode. This bit works only if TECO-C was compiled with CURSES
|
|
support. This bit is on by default.
|
|
|
|
|
|
Filename Memory
|
|
-------- ------
|
|
|
|
TECO tries to remember the last file edited by TECO, so that after you've
|
|
edited a file once, you can re-edit without having to type the file name
|
|
on the command line. TECO-C implements this under Unix by writing and reading
|
|
files named /tmp/tecoxxx.tmp, where "xxx" is the process id of the parent
|
|
process.
|
|
|
|
|
|
NOTE: There is another TECO in C, written by Matt Fichtenbaum, which
|
|
runs under Unix. It is part of the DECUS TECO Collection. Contact Pete
|
|
Siemsen at the above address for a copy.
|
|
|
|
###########################################################################
|
|
U N D E R A M I G A D O S
|
|
|
|
To compile and link: see makefile.ami, (note: it needs tecoc.lnk)
|
|
|
|
Comments from the author of the Amiga code:
|
|
|
|
I've completed my TECOC port to the Amiga. It has been tested on an
|
|
Amiga 1000 under AmigaDOS 1.3.2. My system configuration is:
|
|
|
|
68000 microprocessor
|
|
2.5 megs memory
|
|
80 meg hard drive
|
|
Old Amiga chip set
|
|
SAS Institute C for the Amiga version 5.10
|
|
|
|
TECO-C runs in the CLI window it was started from, and it should run
|
|
over a terminal hooked to an Amiga serial port as well.
|
|
|
|
Adding 'W' command stuff would probably best be done by one of the
|
|
termcap ports to the Amiga, however, TECO would have to handle
|
|
SIGWINCH-like events, unless it is modified to open it's own window of
|
|
a particular size without a resizing gadget. It wouldn't be to hard to
|
|
write a terminal driver for Amiga windows using hard-coded escape
|
|
sequences either, but then that would lose over a serial port.
|
|
|
|
EzFlag
|
|
------
|
|
|
|
The EZ flag is system-dependent. Under AmigaDOS, bits in the flag have the
|
|
following meanings:
|
|
|
|
128 If set, don't stop on form feeds when reading. If clear, a form
|
|
fed in the input stream stops the read (the standard TECO style).
|
|
This bit os off by default.
|
|
|
|
256 If set, use Unix-style newline terminators. This means when files
|
|
are read in, carriage-returns are not added to the end of lines,
|
|
and when the user types the RETURN key, only a newline is entered
|
|
into the command line (usually a carriage-return/line-feed pair is
|
|
entered). Old macros (and old TECO users) may get confused if this
|
|
bit is set, but it's required if CURSES support is compiled into
|
|
TECO-C.
|
|
|
|
|
|
|
|
|
|
###########################################################################
|
|
F I L E S
|
|
|
|
|
|
aareadme.txt this readme file
|
|
baksrc.c backwards search
|
|
bldstr.c build a string with string build constructs
|
|
change.tec change macro squished
|
|
change.tes change macro source. this macro allows you to
|
|
replace one string with another in a group of
|
|
files using match constructs.
|
|
changes.txt contains teco-c release notes starting from
|
|
version 1.00 (TVERSION = 100)
|
|
chmacs.h ctype.h for teco-c
|
|
clenup.c clean up before exiting teco-c
|
|
clpars.h command line parsing macro, created by genclp.c
|
|
clpars.tec command line parsing macro squished
|
|
clpars.tes command line parsing macro source
|
|
cmatch.c match character with match construct
|
|
date.tec date macro squished
|
|
date.tes date macro source. this macro displays the
|
|
date and time.
|
|
dchars.h define identifiers for control characters
|
|
deferr.h define identifiers for error messages
|
|
defext.h EXTERN decarations for global variables
|
|
detab.tec de-tabify macro squished
|
|
detab.tes de-tabify macro source. this macro converts
|
|
tabs to spaces
|
|
dir.tec "display directory" macro, in squished form
|
|
dir.tes "display directory" macro source. This macro simply
|
|
displays the directory. a wildcarded filename
|
|
in the edit buffer can control what is displayed.
|
|
docjr.c code common to ExeC, ExeJ, and ExeR
|
|
doeves.c work code for EV and ES
|
|
doflag.c changes a mode control flag (ED,EH,ES,ET,EU,EV,^X)
|
|
dscren.h terminal types for 0:W command
|
|
echoit.c display character in its printable form
|
|
err.c display teco-c's error messages
|
|
exea.c execute A
|
|
exeats.c execute at-sign @
|
|
exeb.c execute B
|
|
exebar.c execute |
|
|
exebsl.c execute backslash \
|
|
exec.c execute C
|
|
execcc.c execute control-caret ^^
|
|
execln.c execute colon modifiers : and ::
|
|
execom.c execute comma ,
|
|
execrt.c execute caret ^
|
|
execst.c execute a TECO command string
|
|
execta.c execute ^A
|
|
exectc.c execute ^C
|
|
exectd.c execute ^D
|
|
execte.c execute ^E
|
|
execti.c execute ^I
|
|
exectl.c execute ^L
|
|
exectn.c execute ^N
|
|
execto.c execute ^O
|
|
exectp.c execute ^P
|
|
exectq.c execute ^Q
|
|
exectr.c execute ^R
|
|
exects.c execute ^S
|
|
exectt.c execute ^T
|
|
exectu.c execute ^U
|
|
exectv.c execute ^V
|
|
exectw.c execute ^W
|
|
exectx.c execute ^X
|
|
execty.c execute ^Y
|
|
exectz.c execute ^Z
|
|
exed.c execute D
|
|
exedgt.c execute digit (0-9)
|
|
exedot.c execute dot .
|
|
exedqu.c execute double quote "
|
|
exee.c execute E
|
|
exeequ.c execute equals =, ==, and ===
|
|
exeesc.c execute escape
|
|
exeexc.c execute exclamation point !
|
|
exeey.c execute EY
|
|
exef.c execute F
|
|
exefb.c execute FB
|
|
exeg.c execute G
|
|
exegtr.c execute greater than sign >
|
|
exeh.c execute H
|
|
exei.c execute I
|
|
exeill.c "execute" illegal command
|
|
exej.c execute J
|
|
exek.c execute K
|
|
exel.c execute L
|
|
exelbr.c execute left-bracket [
|
|
exelst.c execute less than sign <
|
|
exem.c execute M
|
|
exen.c execute N
|
|
exenul.c execute null ^@
|
|
exenyi.c "execute" not-yet-implemented command
|
|
exeo.c execute O
|
|
exeopr.c execute operator (+,-,(,#,/,&,^_,*)
|
|
exep.c execute P (see singlp.c)
|
|
exeprc.c execute percent sign %
|
|
exepw.c execute PW
|
|
exeq.c execute Q
|
|
exeqes.c execute question mark ?
|
|
exer.c execute R
|
|
exerbr.c execute right bracket ]
|
|
exertp.c execute right paren )
|
|
exes.c execute S
|
|
exescl.c execute semicolon ;
|
|
exet.c execute T
|
|
exeu.c execute U
|
|
exeund.c execute underscore _
|
|
exeusc.c execute unit separator character ^_
|
|
exev.c execute V
|
|
exew.c execute W
|
|
exex.c execute X
|
|
exey.c execute Y
|
|
exez.c execute Z
|
|
findes.c find end of string
|
|
findqr.c find q-register name
|
|
flowec.c flow to end of conditional
|
|
flowee.c flow to else part of conditional
|
|
flowel.c flow to end of loop
|
|
fmtmac.tec PDP-11 .MAC formatter squished
|
|
fmtmac.tes PDP-11 .MAC formatter source. this macro does
|
|
case formatting for PDP-11 macro (.MAC) source files
|
|
format.tec FORTRAN formatter squished
|
|
format.tes FORTRAN formatter source. formats the first part of
|
|
a FORTRAN source line.
|
|
genclp.c generates the command line parsing macro in clpars.h
|
|
getara.c get area in edit buffer an "m,n" argument defines
|
|
getnma.c get numeric argument off expression stack
|
|
inccbp.c increments command buffer pointer
|
|
init.c teco-c initializatin routines
|
|
insstr.c insert string into edit buffer
|
|
isradx.c is digit within current radix?
|
|
ln2chr.c convert line-number to character-number (^Q)
|
|
lowcase.tec convert edit buffer to lowercase macro, see upcase.tec
|
|
makdbf.c make digit buffer, binary to ascii in current radix
|
|
makefile.ami AmigaDOS make file
|
|
makefile.cct CodeCenter under SunOS
|
|
makefile.dg System V Unix make file (works on Data General Aviion)
|
|
makefile.sun SunOS make file
|
|
makefile.tc Turbo C make file (MS-DOS)
|
|
makefile.ulx Ultrix make file
|
|
maketeco.bat MS-DOS batch file to make teco. this is probably how
|
|
the temdos.exe executable file was made.
|
|
makprnt.tec make printable macro squished
|
|
makprnt.tes make printable macro squished. this macro makes a
|
|
string with embedded control characters printable
|
|
makrom.c make room in Q-register for new text
|
|
mung.bat MS-DOS batch to execute a teco macro from command line
|
|
pg.mem a programmer's guide. it may be useful to anyone
|
|
fixing bugs, adding features, or porting teco-c to
|
|
a new environment.
|
|
pkzip.rsp a PKZIP response file used to build TECOC.ZIP archive
|
|
popmac.c pop macro environment off macro stack
|
|
problems.txt contains notes about bugs and ideas
|
|
pshmac.c push current macro environment on macro stack
|
|
pushex.c push expression onto stack, try to reduce it
|
|
rdline.c read a line
|
|
rdpage.c read a page
|
|
readcs.c read command string
|
|
replac.c code for search and replace commands
|
|
search.c code for most of the search comamnds
|
|
search.tec search macro squished
|
|
search.tes search macro source. this macro finds a string in
|
|
a group of files using teco match constructs
|
|
singlp.c does a single P command
|
|
skpcmd.c skip over current command in command bufer
|
|
squ.bat MS-DOS batch file to run squ.tec w/standard options
|
|
squ.tec squish macro squished
|
|
squ.tes squish macro source. this macro takes a teco macro
|
|
source file and makes it as small and as fast (and
|
|
as unreadable) as possible
|
|
srclop.c search loop, handles loop arguments for search
|
|
sserch.c do a simple search
|
|
sub.tec ?
|
|
tabort.c terminate teco-c
|
|
tctlib.rsp a Turbo C TLIB response file used by makefile.tc
|
|
teco.bat MS-DOS batch file to run teco-c
|
|
teco.doc Standard TECO documentation from DECUS
|
|
teco.tes teco initialization file
|
|
tecoc.c the main source module, contains all the definitions
|
|
of system-independent global variables, as well as
|
|
comments explaining what they are.
|
|
tecoc.exe the teco-c executable for VMS
|
|
tecoc.h defines structures, general identifiers, and
|
|
the in-line debugging scheme.
|
|
tecoc.lnk link file needed under AmigaDOS (see makefile.ami)
|
|
tecoin.tes teco initialization file
|
|
temsdos.exe the teco-c executable for MS-DOS
|
|
tst.bat MS-DOS batch file to run the test macros
|
|
tst.com VMS command procedure to run the test macros
|
|
tstbsl.tec --
|
|
tstcss.tec |
|
|
tstequ.tec | these macros contain code which tests some
|
|
tsto.tec | aspects of teco-c
|
|
tstpw.tec |
|
|
tstqr.tec |
|
|
tstsrc.tec --
|
|
typbuf.c types a buffer on the screen, converting unprintable
|
|
characters to printable as nescessary.
|
|
type.tec type a file macro squished
|
|
type.tes type a file macro source. this macro apparently
|
|
types a file on the console with all kinds of
|
|
wonderful options.
|
|
typest.c types the erroneous command string for errors
|
|
uminus.c unary minus (converts -C to -1C)
|
|
unsqu.tec unsquish macro squished
|
|
unsqu.tes unsquish macro source. this macro does some simple
|
|
formatting of a squished teco macro to make it more
|
|
readable (like indenting)
|
|
upcase.tec convert edit buffer to uppercase macro, see lowcase.tec
|
|
vrbmsg.h verbose forms of teco error messages
|
|
vtedit.tec vtedit macro squished
|
|
vtedit.tes vtedit macro source. humongous screen editor macro.
|
|
note: this macro does NOT run under teco-c.
|
|
wchart.txt contains a wall chart of TECO commands
|
|
wrpage.c write a page
|
|
zamiga.c AmigaDOS system dependent code.
|
|
zfirst.c dummy module used if CHECKSUM_CODE is TRUE in zport.h
|
|
zfrsrc.c do a forward search using VAX SCANC instruction
|
|
zmsdos.c MS-DOS system dependant code
|
|
zport.h portability header file.
|
|
zunix.c SunOS (Unix) system dependant code
|
|
zunkn.c UNKNOWN system dependant code (function stubs)
|
|
zvms.c VAX/VMS system dependant code
|
|
|
|
|
|
The W command does not work, but the EXEW.C file contains code
|
|
to tell you what the command would have done if it had been executed. I used
|
|
this to play with executing VTEDIT.TEC under TECOC in order to find bugs.
|
|
|
|
I maintain the DECUS TECO Collection, a bunch of stuff relating to
|
|
TECO. It includes sources for DEC's TECO-11 v39, three TECOs written in C,
|
|
including ones for VAX/VMS, MS-DOS, SunOS (Unix) and Ultrix, the current
|
|
Standard TECO manual, two EMACs-like macro packages and LOTS of macros.
|
|
|
|
I you have something that you feel should be included in this
|
|
collection, or if you would like to improve the software, please contact
|
|
me at the above address.
|
|
|
|
|
|
Pete Siemsen
|