#Execution begins This directory contains a bunch of random projects I wrote for the IBM 370 (actually a 3081D, followed by a 3090, and now an ES/9000, which is no longer available for general use at any price because RPI is run by idiots) running MTS (the Michigan Terminal System). They're probably of no practical use to anyone but they might be fun reading. MTS is nothing like the kind of hell to program under that the IBM OSes are, so you can concentrate on the joys of the 370 architecture itself when you're programming. Well it gets to be a *little* fun if you do it enough! John Wilson ID=HA8G Feb17/1995 #Execution terminated RC=4 bb.s Big Brother. This program reads a database maintained by WHO which keeps track of every name that each userID has ever been seen using, and every userID that each name has ever been seen using. Under MTS you can have arbitrarily many e-mail addresses per account, and you can use other mailboxes if they're permitted properly (MTS has a very well-developed concept of permissions, sadly it hasn't caught on in other OSes). Once RPI's MTS machine got its Internet hookup I decided that since BB is already watching YOU, it should watch THEM too so I added RPI's only MTS Finger client as part of BB rather than as a separate program. Why not. This got kind of hairy once we stopped using the host table (I used to have a program which would build two cross-referenced files of host names and IP addresses so you could look up either way based on the 32-bit IP address or on a 32-bit hash of the name, which was far faster than the linear search used by MTS's BSD-derived FTP client) since MTS has no built-in DNS resolver, so I wrote my own simple one (requires a recursive server). There's also a HOST command which is supposed to look a little like the old HOST program on MIT-OZ, it would look up a host's IP addresses, CNAME and HINFO records, and MX records too if the host has no IP address of its own. More stuff for BB to watch. Also a LIST command which looks up mailing lists (by sending EXPN commands to SMTP servers). See, this way BB can watch whole groups too. dos11.s Program to read DOS-11 magtapes on MTS. I had no tape drive on my PDP-11/34a so I wrote this program to help me hand-build a bootable RSTS/E V9.0 RK07 pack from a V8.0 pack and the V9.0 tapes. It wasn't easy! fmt.s Program to reformat files for printing. MTS uses EBCDIC and doesn't know about tabs or backspaces or anything. Yet the MTS machine is the one with the nicest printer on campus (double sided output, very fast). So I FTP stuff to MTS and use this program to turn the (translated) control characters into the appropriate FORTRAN carriage control codes (MTS really likes FORTRAN, so you have to use carriage control codes in column 1 in all output even if you're not using FORTRAN). ftp.s My unfinished from-scratch FTP client. The "stock" one is based on the one from 4BSD and thus, sucks. This one would not have sucked if I had ever finished it. tapesrv.s Ultra-simple write-only tape drive server program. Makes it possible to access MTS's (three) tape drives via TCP from a UNIX box. I used this to write ITS tapes for a PDP-10. FTPing files and dumping them to tape works too, except that MTS's TCP/IP code has the misfeature that closing a TCP connection blocks your job for about 10 seconds, so you lose big when you transfer a lot of little files. So I saved many hours by batching things up on the UNIX side and squirting them through a single TCP connection to this server. uname.s A little subroutine which can be loaded by *TEXTFORM files to retrieve the name that the user has currently $SET. It just tickles me that you can call assembly language from the text formatter input language. Anyway I used this to put little blurbs in documents like "last updated by ___ on ___". who.s Program to skip through the (undocumented) MTS task table and print the names of everyone it finds who's also listed in a file you supply attached to unit 1. This was a bit risque at the time I wrote it because RPI had a very strict policy about punishing people who attempted to reverse- engineer MTS. Like what's the big deal. I also took some shit from people who didn't want it to be generally known that they spend all their time running *FORUM or ACM:CB (the program has an option to list what files each user has locks on), but like tough. It can be accomplished from the command line anyway, this just makes it a lot easier. So you're fooling yourself if you think getting rid of WHO gives you privacy. There's another command line option which makes the program update Big Brother's data files (this added an extra nickel or so onto the cost of running the program so I made it optional, some people objected to Big Brother on moral grounds and didn't want to be forced to help update it when they ran WHO). whonames.s Program to add/remove/modify a user's own entry/ies in the default names file for WHO, which is used by people who want to see as many people as possible listed by name. yow.s Program to print a random Zippy quote. Used to be part of a program I wrote to stick an email message in a wrapper and send it to the ARPAnet gateway at WISCVM, back when MTS first got its Bitnet connection (but no ARPAnet) and it took the sys progs *months* to get it working with the "SEND" command in the real MTS mailer.