Small LS logo

The Flex-09 system


I built my first personal computer in 1980 from a collection of boards and chips bought from Brian Hewart. It was pretty much state of the art for the time, being based on the SS-50 bus, which was the de facto standard for Motorola-based systems at the time. The computer was equipped with twin full height single sided, single density 5.25" floppy disks, a Motorola 6809 CPU, 32 KB of RAM, a 64 x 16 character display and a PROM burner. It ran the Flex-09 operating system. After assembling it I debugged the hardware with the aid of a logic probe, a multi-meter and considerable thought. It's sole external peripheral was an Epson MX-80 8 pin dot matrix printer.

Soon the limitations of this system became apparent. I replaced the original display card with a kit set 80 x 25 character display based on a MC6845 CRTC chip. I used my PROM burner and some assembly code to build the character generator for this display, putting block patterns in the character codes above 0x7f to provide a fairly crude two colour graphical capability with 160 x 150 pixel resolution and later writing a PL/9 graphics library to allow graphics to be displayed and printed. The new display hardware required a complete rewrite of the display code in the ROM monitor. I took the opportunity to completely restructure the monitor into a more modular form and to add a number of debugging functions, including RAM and register display and change, a hexadecimal Reverse Polish calculator and a screen print capability. This extended the monitor into a second 2K 2716 EPROM chip so it now occupied 4 KB of address space. This firmware is equivalent to the BIOS in a PC. Flex-09 relies entirely on low level code in the ROM monitor for access to the display, keyboard and printer.

The system memory was extended to the maximum of 56K RAM, with the ROM monitor and peripheral addresses occupying the rest of the 64K address space. The MC6809 has no i/o instructions, so the peripheral control registers are mapped into the address space where they can be accessed by normal memory read/write operations.

Later I replaced the disk controller in order to install four half height 5.25" floppy disks (three double sided, double density 80 track 300 rpm drives and one single sided, single density 40 track 300 rpm drive). The original disk controller could only support two drives, so I bought a controller card from Windrush Microsystems. This was a 3U card intended for use with the proprietary Windrush bus, so I had to design and build an SS-50 adapter for it. The adapter was built on an SS-50 prototyping board and provided the controller with a regulated 5v power supply, some additional address decoding and physical support. Needless to say, this hardware enhancement required further ROM monitor changes, but the revised monitor still fitted into the available 4 KB address space despite its incorporation of smart format-sensing disk drivers and completely revised boot code.

Normally the disk drivers are appended to the Flex-09 kernel. The system I'd bought from Brian Hewart was built this way. However, I'd now rewritten the drivers and built them into the ROM so they could be used by the bootstrap code, so the next step was to rebuild Flex-09 to use the new drivers. I got hold of an OEM issue disk containing the Flex-09 kernel without any disk drivers, wrote an interface module for the ROM disk drivers and built a new Flex-09 kernel incorporating this module. The development process for the disk drivers could have been quite time-consuming with much hardware swapping back and forth. However, I was able to install both controllers on the bus and build a test harness for the new drivers. This could be compiled and run in RAM, so I didn't have to burn the drivers into ROM until they were fully debugged: in consequence the final swap to the new ROM monitor and Flex-09 kernel didn't have any nasty surprises.

The original chassis couldn't hold four half height floppy drives. In consequence the final step was to move everything to a new chassis given to me by Graham Trott and to extend its power supply to handle all four floppies.

The complete system

The complete system in its final form. The cover has been removed from the system chassis.
The power supply and fan are on the left with the SS-50 bus and subsystem cards behind the four floppy drives.
The PROM burner socket is on top of the video monitor.

Boot display

The display after Flex-09 has booted into the PL/9 compiler.
The top line is my ROM monitor version display.
The next line shows the command to boot Flex-09 from disk.

I used this system as a programming engine for assembler, PL/9, COBOL and C. It was mostly paid for by translating the code in Software Tools in Pascal into PL/9 and selling the result to the Flex-09 community. This system was taken out of service in 1986 and stored in my loft, where it remained undisturbed until 2004 apart from a few occasions when I needed to borrow one of its disk drives to read older floppy disks: double sided, double density 80 track 5.25" floppies cannot be read by the more modern 360 rpm 1.2 MB drives usually fitted to PCs.

When I decided to photograph the system for this page I dug it out, blew the dust off, cleaned the bus connectors and plugged it in. The system ran though the keyboard was initially non functional. As this was a seven bit parallel type and connected to the system chassis by ribbon cable, I initially thought this could be a show stopper. However, after stripping it and thoroughly dousing the key switches with switch cleaner it came back to life and I was able to tell the ROM monitor to boot Flex-09. The system booted on first try and now seems to be in working order despite being 24 years old and spending 18 years in my loft.

References

Technical Systems Consultants (TSC), the authors of Flex-09 have closed down, as have South-West Technical Products (SWTP), inventors of the SS-50 bus. However, support is still available: