Moving Teco to other Unix's There are two problems with moving teco to other unix's. First there is the problem of the environment in which teco runs, and second, there is the problem of creating new versions of teco for maintenence etc. Teco environment A normal unix is not suitable for running teco for a variety of reasons. The first problem is a fundamental one with the unix tty io package. Teco is a character at a time processor rather than a line input processor like most unix commands and hence requires modifying the teletype modes. Unix has a mode, known as "raw mode", which is capable of supplying characters one at time and teco uses this mode. However, one of the useful features in teco is the ability to "break" from a command loop and return to the top level of teco. If teco is stuck in a loop it will not do a read to check for "break" characters, so what is required is an interrupt mechanism known on unix as "signals". Unfortunately in unix raw mode, signals are disabled, so there is a fundamental problem. In our system, we have addressed this problem by re-writting the tty package to support a new trap, ttymod, which implements several non-standard teletype modes including one which leaves signals enabled while in raw mode. Teco depends on this trap and hence systems not supporting ttymod must modify teco in some way to approximate the desired effects. We have not done this and have no great suggestions on how to procede. Probably the simplest would be to do without "break" and just use normal raw mode. There are several other system dependent features in teco but they are less critical to the function of teco and can probably almost commented out. There is another change in the realm of breaks, which is a signal which suspends teco in a way that is can be restarted rapidly and returns you to the shell. The feature depended on here is a slight addition to the "ptrace" which will allow a process to put itself in a "stopped" mode and then inform its superior process of this fact. The system modifications involved are a slight change to the kernel module implementing ptrace, and a slight modification to the shell to support and restart "stopped" processes. The only other system dependent feature has to do with teco init files. Our system maintains a file called "/usr/info" which contains information on users similar to "/etc/passwd" but the information maintained is more complete including addresses etc. The significance to teco is that this file consists of fixed length records, ordered by user id's, and hence it can be accessed by a simple seek. One of the fields in this file is the user's login directory, and teco wants to look in this directory for its init file so that the user can "cd" and still have the same teco macros. Anyway, teco will try to look in this file for the homedir, and some of the subroutines which do this must be bound in when creating a new version of teco. A note on terminals: our system uses vt52's almost exclusively and hence the escape codes for screen formatting which teco outputs will be those of a vt52. The escape codes could be changed for other terminals in a trivial way, but our teco makes no attempt to do this. Creating New Versions of Teco Creating a new version of teco is a moderately complicated process because it depends on several language processors not normally included in unix. First, teco is written in a varient of dec's pal assembler, which differs drastically from the unix assembler. We have a program called ass, which does the assembly. Next, the ass assembler does not produce "ld" format files but another format called for historical reasons ".rel" format. We have a program written in c which converts .rel files to ld files, call "relld". The other part to creating a teco involves simply binding in via ld, some subroutines which are written in c and used to access the "/usr/info" files. People who want to use teco should get a copy of ass, so they can assemble it, and a copy of relld, so they can create an ld file. What You Get With Teco We have created a standard export tape which includes the teco source and everything else neccessary to make teco run on another unix including the system changes. To actually make teco run, without modification you more or less have to run our system; otherwise you must start modifying teco which is a process frought with hazards. A note on support: I am interested in hearing about bugs in teco and will try to fix the significant ones, but I will make no promises whatever. James Gula 9/22/77