Development Tools on a Rainbow 100

While Six/Six is “almost done,” with just a few theoretical days of playtesting before a release, I thought it might be fun to talk a bit about development on a mid-1980s Rainbow 100 personal computer. Unlike many games developed these days for retro platforms, Six/Six was developed entirely on a Rainbow 100 (except for some of the code to support a modern Windows port). In fact, all the tools for designing rooms and locations and managing object within the game only run on a Rainbow.

Programming on a Rainbow does involve some old and possibly uncommon tools.

Operating System: MS-DOS 3.10b

The Rainbow is capable of running an assortment of operating systems, but the only one I use regularly is Microsoft MS-DOS. Basically, the Rainbow saw use mostly as a host for CP/M-86/80 (both 8- and 16-bit!) and MS-DOS. There were other unpopular OSes for the Rainbow, p-System, Venix, etc. Developing for one of those bit players, though, would be even more pointless than the current undertaking.

You might notice that I’m using MS-DOS 3.10b, which seems like an odd choice. In fact, it is the last version released for the platform! Because the Rainbow is not an IBM compatible machine, it needs a version of MS-DOS built especially for it. Notably, Digital Equipment Corporation didn’t even release this version of DOS for the ‘bow. IT took a third-party company, Suitable Solutions, to acquire the Rainbow version of 3.10b and release it; otherwise, we’d all be stuck with version 2.11.

Editor: Sedt

Sedt is a fun, cross-platform text editor that seems to have been relatively popular on DEC hardware back in the day. At some point in the 1990s I was introduced to this software by my father. It is mostly notable for two reasons:

  1. It makes heavy use of the Rainbow’s LK201 keyboard layout
  2. It is the only editor for which I ever bothered to learn the hotkeys

Perhaps point 2 only makes it notable to me. It is ingrained in my mind to this day to press F6 (to save) and F8 (to exit) once done editing, and I regularly attempt it on other inferior editors. The Rainbow keyboard has fun keys like Find and Select that Sedt correctly uses to find text and create selections in an obvious manner.

Sedt does have a weird limitation of only having 4 buffers open at a time, at least in this version, but you can quickly switch between them using F17-F20. Does your keyboard have those keys?

Compiler: Turbo C 2.0

My choice of compiler might be the most controversial subject. Turbo C is old, non-standard, and somewhat restrictive. Borland did ship an IDE with Turbo C, but that environment will not run natively on the Rainbow because of its entirely-different-from-IBM video memory layout. And that’s fine. Turbo C is surprisingly simple to use from the command line, and its make utility actually quite good.

To run Turbo C on a Rainbow, the damn compiler has to be patched because Borland needlessly decided to use an interrupt that the Rainbow uses for system purposes. My version is patched, and I’ve forgotten all the details.

Turbo C, however, on a stock Rainbow is slooooow. The Rainbow boasts an 8088 and pretty good disk access, but it just takes time to compile. One of the major slowdowns is build time, especially when hunting down bugs. Developing software professionally in the 80s must have been painful.

Some might ask why I’m not using Turbo C++ (which will also work on the Rainbow). I don’t use it because I don’t like C++. Does it compile C? I don’t know, probably… I don’t want to bother.

Others might ask why I’m not using Open Watcom. Well, Open Watcom doesn’t run on an 8088. It’s actually a rather heavy (and great, quite frankly…) compiler. I’d be transferring my code to a modern system to compile and transferring the resulting executable back. It would be at least as tedious as waiting for Turbo C.

So that’s a quick rundown of the tools I’m using! Six/Six also uses an assortment of game-specific tools, but perhaps that’s another post…

Get Six Six

Buy Now$5.00 USD or more

Leave a comment

Log in with to leave a comment.