MSU Source Code

Here is some source code written at Michigan State University for SCOPE/Hustler.  All files are .zips containing ASCII source code.  I have more--this is just a modest subset for starters.  I am attempting to avoid infringing upon Syntegra (CDC) copyrights, which rules out much of SCOPE/Hustler.


Here are listings related to FREND, the interactive front-end to SCOPE/Hustler.  It was written entirely by MSU.  These are actual COMPASS listings, provided in this form so you can make use of the cross reference maps and the generated code (hex or octal).  Let me know if you need the original source. is a COMPASS listing of FREND.  FREND was written in Interdata 7/32 assembly language and requires a special MSU-only version of COMPASS. is a COMPASS systems text required by FREND. is a listing of the PP program 1FP, which talks to FREND over a custom channel interface designed by Lewis Greenberg.

Other operating system contains the source (in UPDATE COMPILE format) of the infamous version of IRCP that contains the message "TELL GHK IT HAPPENED.".  Rumor has it that this is what caused code review to be instituted.  Note the complete lack of correction history in this early 1970s-vintage source. contains the source (in UPDATE COMPILE format and COMPASS listing) of 1SJ, a PP program written by Dave Katz in 1980 to use the 885 disk drive as a swap device.  Here's what he said after being reunited with 1SJ in November 2008: 

Ah, cool. From looking at it, it appears that BTK updated RMSCOM and RMSY (which were common driver code for the 844/885 family) and I wrote the driver around that. Forensic evidence is that we initially just brought up one spindle as a swap device, and a little later BTK added whatever support was necessary for the file system to use the other spindle (and we presumably used the second spindle for PFs, and thus the AJ device was born.)

It appears that I put most of the hooks in for having multiple swap devices, though not all, but we never went beyond one.

I believe 1SJ was for "swap job" and the AJ designator [for the 885 as a filesystem device] came later. 1SS was the Super Swapper (the 808, I think). ECS swapping was a CPUMTR function, I suspect.

The driver was capable of using the entire spindle for swapping; it allocated blocks of 4096 CM words, or two tracks, or 64 sectors, so the allocation table (one bit per block) for the full drive wasn't that big. Each cylinder had 40 tracks, or 20 blocks. The allocation table used 10 bits out of each 12 bit byte so that a cylinder corresponded to to bytes of allocation table (no funny math, since there was no divide instruction.)

The algorithm was to try to find a contiguous set of blocks big enough to hold the FL. This was done by looking first at the cylinder where the heads were already positioned (it remembered the seek position in a CM table) and then looking to either side of that cylinder up to the limits of how many cylinders had been used up to that time (to keep things together), and then would push the cylinder limit out if it couldn't find space within that band. Presumably the initial cylinder number was set to be in the middle of the drive. Reasonably clever.

It was only patched four times, for feature enhancements only, and appears to never have had any bugs fixed. I used to be better, or at least the code review was. ;-)

Written 28 years ago this month, more than half my life ago. I was 22 (with four years in Systems under my belt) at the time.


All games were written in FORTRAN, sometimes with COMPASS utility routines.  Most were written in the late 1960's, with a few being written in the very early 1970's.

Checkers plays checkers.  

Fortune is an oracle you ask for advice.  

Monopoly, by Steve Huyser and Bob Lindemann, implements the well-known board game.

Personal is a PFDUMP tape primarily containing programs I wrote, but there's some other stuff there, too.

Back to main

Mark Riordan  Written 7 November 2004  last updated 23 Nov 2008 12:18:19 PM