In the beginning was the Amstrad NC100.
At one point during the Easter holiday I had the sudden urge to get out my old Z80 based laptop, an Amstrad NC100. Fiddling with it for a little while, I decided it was under-utilising the hardware due to the very restrictive operating system. It does have BBC basic built in, allowing the user to easily write programs, however BASIC isn't a very powerful language (quick to code I'll admit, but not powerful), and the programming was slow. It also left you having to start BASIC, load a program into memory then run it every time you wanted to use one. Clearly this didn't make for an enticing environment to develop.
I then had the idea of writing a new ROM for the device. If you look at the back of an NC100 there's a little panel that comes off with just one screw, revealing a standard 2Mbit ROM. "Easy", I thought, all I need to do is replace that with a memory chip that I've programmed, and away we go. I had an 8KB Ferric RAM (a type of non-volatile RAM) chip with an appropriate pin-out to replace the ROM that was present. So I went about building a USB based tool to read the original ROM and write to my new NVRAM replacement. The memory tool is described here, and I plan to use it extensively later on in the project.
After many hours of peering at the code I had extracted and disassembled from the ROM, I began to realise how horribly complicated and awkward the system was to program, and there was no real documentation of the internal architecture of the computer, making writing an operating system for it practically impossible. The big problem was a huge custom gate array that was right in the middle of the system which is totally un-documented. I reluctantly decided that I wasn't going to get any where useful in a half decent amount of time with that, and the system was far too limited for my liking, so I began to formulate a plan to construct a new architecture of my own design.
I did find out quite a bit about the display for the NC100, as I took the display out of mine to try and run it for my own project, the details are in the NC100 screen sub-project, after that though, I moved on to an intelligent display instead for now as driving the LCD was proving quite complex with DIY electronics.