Disclaimer: This is very much alpha software ( is there a letter before alpha ?) Use at your own risk.
A command line application for generating DeBruijn strings by various algorithms. Should build on a unix platform, or as a console application under windows. (.tgz archive)
A very basic command processor designed to be incorporated into a larger application. Manages an environment, provides an assortment of built-in commands, and provides a basic scripting capability. This version has been completely rewritten in C and should be much more portable than the previous one. Includes a port for 16 bit MSDOS, and an operating system free version that could be used as a boot monitor.
Source code in C that implements various sorting routines together with a command line program named testsort that allows you to test and profile the algorithms on randomly generated and user provided integer data. With appropriate comparison routines the various algorithms can be used the same way as the C library qsort routine.
Ephemeris is a command line tool for generating ephemerides. (Its command line is provided by my monitor program, but all necessary source code is incoporated here.) Ephemeris maintains a library of orbital elements (sun, planets, ...) which can be expanded in interactive dialog with the user.
I have ported a number of popular Gnu and other software packages to the 32 bit version of Minix 2.0 running on Intel platforms.
This utility, originally written by Claudio Tantignone to allow the user to boot Minix from the DOS 6.xx config.sys menu, has been modified to allow the user to boot any harddrive partition (active or not) or floppy drive from the DOS command line. It uses some elements incorporated from the program Loadlin by Hans Lerman. The package, called mloader.zip, includes all source code and documentation.
Translates text files into morse code which can be played on the PC's speakers. Includes source code, makefiles, and a prebuilt executable for 16 bit DOS running on a 386 or better. Version 1.0. (54K)
Yes, folks, this is what the world has been waiting for. A program that behaves as much as possible like the (in)famous MS-DOS line editor, yet will compile and run on any Unix system. Think of this as my contribution to software preservation. (Version 0.04, 2017)
Set distances and target times on sliders and read out split times for various distances. Or set desired split times and read out total time. (Doesn't do the running for you, though. )
Allows students to explore set notation with venn diagrams by interactively shading a venn diagram with the mouse.
Includes executable, source code, and documentation. Both 16 and 32 bit DOS versions are provided, as well as a version for Win32. The latest version supports running shells in multiple console windows with IPC commands for parallel programming amongst shells, as well as history list, command completion, and command line editing. A demo program which solves the "Dining Philosophers problem" is included. Also includes a clone of the DOS dir command with source code. Many example shell scripts are included. Version 2.2 (1.5 Mbytes).
This is a DOS program which uses the PC's timer to set an alarm up to 234 hours in the future, and to specify a message which will be printed to the screen at alarm time. The bell is also sounded at alarm time. This can be useful as a reminder to clean up and disconnect from a limited time connection. Includes an uninstall option. Version 1.2. Includes C and assembly source code.
Copy scrdist into a directory of its own and then say scrdist at the DOS prompt. This will extract the scoring program called score.exe and all of its auxiliary files. If you run score as is, it will score the 1995 season. The program is menu driven, and should be self-explanatory. Use the /help or /? option for a brief usage message.
This is boiler plate code for a pretty standard document-view user interface with menuing, dialog boxes, and an editable main window. It runs under DOS and can be built with BORLAND C/C++ 4.5. It is basically a minimally featured full-screen editor with obvious places to put hooks to your own back-end code. The file menu is fully operational. Includes executable, source code, README, man page, and makefile. (54K zip file).
This shell script, written jointly with Vince Fatica, automates the process of creating a stand-alone bootable floppy disc for linux. Everybody should have a couple of these around for emergencies or risky experiments. (This is now quite dated, but may be useful as a guide for those interested in creating their own standalone floppies.)
UPDATE (2017)
I was rummaging around recently in a desk drawer filled with old 3.5 inch floppies and spotted one of my "standalone" linux boot floppies. I'm now down to a single tired old desktop tower with a floppy drive, so it was natural to wonder: would it boot one last time?
It tried gamely, but failed when the user is asked to strike the keyboard. This box has a usb keyboard, and usb was unheard of back in 1995 when the floppy was created.
Old operating systems and software have undergone something of a resurgence lately with the availability of free x86 emulators, such as Bochs, that allow you to create and boot virtual hard and floppy drive images. It seemed a simple matter to make an exact image of the linux boot floppy using a tool like winrawwrite (my one and only machine with a floppy drive is running XP), and then boot it under Bochs.
Unfortunately, our boot floppy was formatted with more than the standard number of sectors in order to have the necessary 1722K bytes. Linux has always included a driver for such "over-formatted" floppy media, but Windows never has (and probably never will.) Winrawwrite would copy 1.44Mb of the floppy and then quit. Back to the drawing board.
The only recourse was to create a completely new boot floopy by using mkbfd on a very old linux installation running under Bochs. We made our original floppies in 1995, and I quickly found on the web an old Mandrake distribution from 1998 (Mandrake 5.1, kernel 2.0.35). It seemed close enough, so I got it up and running under Bochs and ran mkbfd. Unfortunately, the Mandrake distribution included a version of the shared C-library (libc.so.6) that is already twice the size of a floppy. Since our approach to creating a standalone linux floppy absolutely requires a libc.so installed in /lib, it was hopeless to even think about proceeding further with the Mandrake distribution.
So I went back to the web and eventually found an even older (1994) Yggdrasil Linux distribution that uses libc.so.4 (about 600K), and that appears to be quite similar to the actual Slackware system we used back in 1995. With this system in place I was able to create a working boot floppy image that boots cleanly under Bochs.
My specs: I'm using Bochs 2.6.8 on a Dell Latitude 610 laptop running FreeBSD 11.0-RELEASE_p1 #7. My Bochs Build Log should give a complete record of hardware and build options for Bochs. Here is a 1 gigabyte virtual Bochs hard drive that includes the linux distribution I created and used to create the boot floppy, and here is the bochsrc file that sets up the virtual drive as master drive on controller 0. (You may need to edit some paths in the rc file depending on where you put the drive images.)
The hard drive image uses all 4 primary partitions. When you boot it under Bochs you will be presented with a lilo menu that gives you the following options (some of which may be of independent interest):
- boot into the Yggdrasil-based installation with either a generic or stripped down kernel. (It lives on partition 3 and uses partition 4 for swap.) The kernel is version 1.5.59 and the gcc version is 2.5.8.
- boot into a complete minix 2.0.3 installation. It lives on partition 2, which is actually a minix logical partition with root, usr, and swap sub-partitions. Nobody but minix understands this partitioning scheme, so these partitions are not directly accessible from linux or anywhere else. I do however mount partition 1 - formatted as an old minix V1 filesystem - as /usr/local on both the linux and minix installations. It can be used to exchange files. You can log in as either root or mcconnel with no password, and if you log in as me you will find a number of interesting ongoing projects in my home directory. Finish them, won't you?
- You can boot the boot block of partition 1, which contains a little boot program (361 bytes) I wrote to list off the jump vector table that is stored by the BIOS at POST time. Why you would want to do this is a whole other story I won't get into here.
- boot the standalone boot floppy created by mkbfd under the linux distribution. This is based on libc.so.4.5.26.
Moving files into these minix and linux installations from the outside world is a bit problematic. Bochs allows you to treat a host system folder as a vfat drive, but neither Linux 1.x.x nor minix 2.x.x supports vfat. Your best bet is to install a later model linux on some other virtual drive and write a second bochsrc that boots it on the master of controller 0 and includes the yggdrasil/minix drive as either the slave or as a drive on one of the other controllers. You could then access its partitions as hdb, hdc, or hdd.
BOCHS RULES!
UPDATE (2022)
OK, now I take it back. Probably nobody uses Bochs anymore. I'm running all my virtual machines under Hyper-V and VMware Player. I haven't tried booting the old linux floppy under Hyper-V but VMware handles it very nicely. Just attach a floppy to one of your VMs and set it to connect at boot. The boot process asks you twice to provide ram drive images (if you have them.) Just hit return and ignore these. You can login as root with no password. The root filesystem is 97% full, but there is a ramdrive mounted on /tmp so you have a bit of space to work with if you want to play around a bit.
This is a Bourne shell script c-compiler driver. Comes with man page. Recognizes all the usual options.
I wrote this back in the mid-1990s. At the time I had signed up with an ISP that offered a "shell account" on a Unixware server. Unfortunately, the shell account turned out to be crippled - they had set up the permissions so that you couldn't run the C-compiler, and therefore couldn't create any of your own programs.
HELLO!!!! What's the point of a "shell account" that doesn't allow you to do any programming?
That got me riled up, so I poked around their system and quickly discovered that, while the cc front end was not world executable, the assembler, pre-processor, and actual compiler passes all were world executable. I quickly copied these to my own bin against their discovering their mistake, and rolled my own cc front end. The result is what you have here.
It worked great, and I was happily able to build and install all of my favorite GNU packages on their server.
Perhaps not surprisingly, they went out of business a couple of years later.
C source code for a utility which reports the pathname at the end of a chain of symbolic links. Also cleans up ./ and ../ constructions in path. Includes makefile and man page.
Produces a sequence of random characters with the distribution of each character depending on the most recent 4 characters. The distribution is based upon an analysis of a sample text. (The default is /usr/dict/words, but any sample text can be used.) Inspired by the article, W.R. Bennett, Jr., "How Artificial is Intelligence?", Amer. Scientist, 65(1977), 694-702. Source code. Should build on any unix system.