Skip to content

The ultimate dev‐environment

Helge Skrivervik edited this page Oct 14, 2024 · 2 revisions

A personal tale about experience, preferences and accidental discoveries.

Intro

[TL;DR? Skip to the Dream System section] In development, tools and scaffolding are key to both quality and productivity. In a cross development setting like this, the tools reside on the development host (and on github), while the scaffolding - the environment created to test and use the code - is either an emulator or a physical system. In some cases even several physical systems, as required to verify compatibility across target platform variants.

Emulators like QEMU or 86Box are convenient and fast, and certainly a preference when speed and timing don't matter or disturb testing. However, when working on OS, IO and network level code, timing often matters - some times to such a degree that a single printk or even kputchar changes or at least affects the behaviour. That's why I like - and prefer - to work on real hardware whenever possible. My history with ELKS, later TLVC, started on a Compaq Portable III, a 286/12.5MHz system with a 40MB (original) disk, a 1.44M floppy and 6MB of extended memory. A similar 386/20MHz system was added later, equipped with a CF card as disk drive, 1.44M and 1.2M floppies and 10M extended memory. The extended memory part is important because it made a world of difference speedwise when @ghaerr introduced XMS buffer support in ELKS. The floppy-based 286 (the HD was (and is) unavailable, occupied by other systems) suddenly went from sluggish to champion with thousands of buffers.

My development systems are located in the garage because they are big and noisy. They're being accessed via serial lines - serial console and in most cases one or two additional serial ports. The additional port(s) become the work terminal, leaving the console, often cluttered with debug messages, as log screen more than anything else. This way the physical system gets tested (and pushed) in a different way than if just using the console and keyboard, beating up otherwise little used parts of the systems and provoking different bugs.

After ELKS networking and ktcp became stable, development speed increased dramatically. New versions of apps, kernels, whatever were ftp'd over in a snap, and using physical systems became close to as fast as using emulators. In particular if the system speed was decent. A simple ftp-command would get a new kernel across in a couple of seconds - for example:

ftp -u ftp://xx:[email protected]/linux target/linux

Or a full floppy images in a few more seconds. Adding to the convenience, the net command - which allows switching between different network interfaces in a snap - turned network development into a whole new ballgame: Test-switch-compare-download-test again etc.

The Compaq Portables had their limitations though. However convenient, they have only two ISA slots in the expansion box, a rather severe limitation - not the least because one of them was needed for additional serial lines.

The Dream System

That's where the 'dream system' comes in. Just like the Compaqs, it started almost accidentally. Browsing eBay looking for something else, I noticed this SBC, single board PC with an ISA16 edge-connector. What a neat idea. More searching and the perfect match popped up. A 40MHz 386SX with VGA, 4x serial lines, keyboard connector, AT-style IDE disk interface, floppy interface, 4MB memory on board and SIMM socket for another 16MB. Plus the ISA16 edge-connector.

IMG_0286

This board, a power supply and a 8 slot backplane and we have and extremely powerful and flexible system. A month later it was working - and has been my dream system since. Very responsive, very flexible.

IMG_9896

No enclosure, just the backplane on a piece of styrofoam on a shelf in the garage. A CF card plugged into the HD connector, 3.5 ans 5.25in floppies and any connotation of additional ISA cards, typically 3 or more network cards. Serial lines were connected to a terminal server (a rarity these days, but I got a 4-port unit at a very decent price on eBay), making them available via the network.

Further, a small PC keyboard and equally small (5") VGA display for occasional use next to the system in the garage. And not the least, a remote controlled power switch so I can powercycle the system from my office if it hangs hard.

Here's the thing: Once the tooling is in place, the Dream System equals using QEMU in terms of both speed and convenience. It takes 5 more seconds or so to boot, but other than that, they come out about the same. For driver and kernel development it's unbeatable, not only because of the speed issues, but with an emulator you're always limited to the devices supported, not the ones you may need.

The list goes on - but the point has been made.

Dream System II

The Dream System is an XT architecture - and a (relatively) fast one. It is also a very different environment from the original PC or XT, with their 8bit bus and 4.77MHz clock. Another environment to be supported by TLVC and thus one that has to be available for testing.

After repairing, playing with and writing drivers for the IBM 5155 X portable and the Compaq Portable Plus, I decided it was time for simplification. These monsters are charming and deliver impressive performance with their limited resources but they're still monsters. IOW - time for Dream System II. The XT Dream if you like.

Elijah Miller has been designing and making XT class boards for some time and I've been following his work on and off. Armed with intent to create the XT Dream, I headed back to his site hoping to find what I needed. I didn't - and everything he had was out of stock - for good. I contacted him about availability - and luck would have it that he was designing a new XT board, more complete than the previous series - exactly what I needed. The new design was fresh from the board manufacturer and Elijah soldered up a working board for me, while I ordered the other required components: The ISA backplane, a VGA card, a floppy/serial card, and a disk controller, the latter not quite XT style but more conveniently a AT/IDE controller with XT support via BIOS.

IMG_9898

Some of the system components are still missing as I write this, but the intention is to create an XT system next to the Dream System, possibly with a KVM switch and certainly with CF disk and floppies - 360k and 720k 3.5in. A platform which can accommodate any hardware from that period and allow drivers to be created and tested.The Dream System II.