This describes an SCM tool called 9K, that was available for PCs in the early 1990s. Readership is public.


It is 1992. I am leaving BPX to work independently on software for hand-held computer systems. In particular, things like Psion and prototype PenPoint machines. I had decided that it should be possible to apply the techniques of large-scale computer software to the rapidly advancing small scale systems that I felt would become ubiquitous.

This change carried a penalty: The software for these systems wasn't developed under VMS but on IBM PC style machines running MS-DOS. I needed an SCM system to use in this environment and I discovered a commercial product called 9K that seemed to fit the bill.

9K was, I think, named after ISO9000, which was prominent at the time. It was made by a company called Forté Software Tools, based near Ross-on-Wye. I didn't get very far when I tried to track down what may have become of them.


Image of 9K kit container
9K seems to be aimed at individual developers. It maintains a database of "Projects" and each one has an associated directory containing version data of source files and other metadata about snapshots, branches and versions. The essential workflow is that a project is created and a first snapshot is taken of a source directory tree. The contents of that tree are then freely edited with whatever tools are appropriate and further snapshots are taken as required.

Specific snapshots can be labelled as "Versions" and it is possible to branch a project to make variations or to have codelines for (say) managing defect fixes to a released version of the software.

9K comes with a little manual that neatly explains that, with a slightly tutorial style which was appropriate for the times - when SCM would have been a new concept to many people embarking on software development.

I would say that, for its time, 9K was a commendable effort and its functionality is instantly recognisable as basically similar to today's SCM as practised for personal software development.

9K has a console-graphics user interface and also a command interface, though not all of its functionality can be accessed through the command interface.


9K is written for MS-DOS with a filing system supporting 8.3 style files. However, it can be installed under modern versions of Microsoft Windows below 8. One just has to prepare an environment that conforms to the filename restrictions. However, installation now is not so straightforward. The installation program will refuse to install to the same drive as that which contains the kit and is not fooled by SUBSTed drives. I resurrected an old Windows 2000 system called FESTER (more than 10 years old) to overcome these restrictions and create a kit which I could put in place on a more modern system. Why a more modern system? Essentially because I'd rather not have the fan noise from my older PCs all the time. I had originally planned to create a virtual machine to run 9K and associated software of the time, but I was running out of time. I may come back to that in a 2015 Retrochallenge.

Having got the 9K executables in a local directory one needs to run a command box of 80x25 characters for its graphical interface to work legibly. It is salutary to be reminded of what it's like to work in something that small.

There is a "New Project" interface to specify a source tree and a 9K Storage location. Each project has an 8-character name and a longer description. Having created the project, one must remember to press F10 to save it. Then one is prompted for the first Snapshot description and 9K scans the source tree and adds each file to the project storage location.


Image of a DC2120 Resurrecting my old 9K projects for inspection turned out to be more difficult than I'd hoped. The first problem was my backups from that era. I had saved all of the 9K repositories and their associated source trees of course, but I wasn't used to the mentality that goes with early PC software. 9K maintains its database of projects in its installation directory. That was backed up, but the backups are on DC2120 tape cartridges, whereas my other data has propagated to normal mass storage.

Fortunately, 9K's documentation contains quite a few hints about its database structure and, after various distractions, I was able to create dummy 9K projects named after the originals. Then it is a matter of doing binary edits of the 9K database to point the project entries at the original 9K Storage data.

9K itself has an interface which pretends to relocate projects in this way, but I failed to get it to work. I suspect that the hints in the 9K documentation are because they already knew that interface would be unreliable. As well as editing the projects database, one has to edit one of the database files in the 9K storage, which refers to an absolute path as well.

Anyway, it worked. Here, for example is the version report for a little utility I wrote for the MC400:

   9k Snapshot/Version Report                    Sun Aug 03 17:30:29 2014

Project Name   : SIBO TODO
Project Code   : TODO
Project Source : U:\SIBO\DEV\TODO\
Project Archive: U:\SIBO\9K_PLS\TODO\

3 Snapshots

Snapshot as of Wed Jan 20 22:14:33 1993 -> TODO V1.05A -(demo)
Snapshot as of Sun Jan 24 17:56:44 1993 -> Mods for V1.06B
Snapshot as of Mon Jun 28 15:33:17 1993 -> V2.00A supports both MC and S3

3 Versions

1.05A               @ Wed Jan 20 22:14:33 1993 by Pute
                -> Demo release for comment

1.06B               @ Sun Jan 24 17:56:44 1993 by Pute
                -> Demonstration version released on CIX

V2.00A              @ Mon Jun 28 15:33:17 1993 by Pute
                -> Code organised to allow MC and S3 versions

1 Branch

Branch Name:Original Development

One thing that strikes me about this now is how few snapshots I tended to take at the time. Nowadays, I tend to commit changes whenever I have achieved some logical milestone.


This document is maintained by Pute. Comments should be addressed to PNJ at XQWV dot ORG dot UK.
  1. PNJ, 2014-08-03. Original version.

Any text you see at this point onwards is the result of the style sheet used by this document being inaccessible or corrupt. The document content above is usable but probably renders less elegantly than the author intended.