Last time in Arantor’s Ego Needs A Check, I outlined the general concept of NextProse.
So let’s recap: a word processor designed to fit on the ZX Spectrum Next. Even allowing for the Next’s OS and all the code, I figured I’d still have a convenient MB or more of memory left over.
For context of why I was doing this on a technical level: it didn’t seem like anyone had managed to write a word processor for the Next actually using any of its capabilities; everyone online seemed to just be using Tasword. Now, that’s fine, I guess. It works, it has accented letters, it even works with the Next’s SD card masquerading as a microdrive. But it can’t keep up with my typing – I can routinely type faster than it can keep up, and as such it misses keys. And I’d like a dark mode (ideally, customisable between light and dark)
I then had the bright idea of ‘the ZX Next has a 640×256 screen mode’, that would be neat to use. And I thought, I already have the CSpect emulator handy, not only does it have a debugger, but its developer (Mike Dailly) also ships a Z80 assembler in the box, as it were. The 640×256 mode has 16 colours, which is plenty, and has multiple palette support so light/dark toggle should be trivial.
FINE. FINE, I SAY.
Armed with some vague background knowledge about the datastructures I might need to handle text (probably some kind of gap buffer), and a vague exploratory mockup in Amiga DeluxePaint (in 640×256 resolution, where the pixels are twice the height vs their width, just as on the Next), I figured my first step was to blank the screen, draw in a status bar, and get some text rendering going on.
At that point I wasn’t sure if I wanted fixed-width or proportional-width. I think I like the idea of proportional width fonts, if I could pull it off.
With that in mind, I sat down with the manual, Mike’s sample code shipped with CSpect, some of the stuff from his repos, and Snasm, and wrote some code.
My best outcomes here were a combination of ‘a black screen’ and ‘bah I made it reboot again’. Clearly something I wasn’t doing right. But I had no real idea what I wasn’t doing right, and I immediately felt hopelessly, tragically out of my depth.
I gave it a few days – work got in the way a lot, especially of late, but I stepped back, and regrouped.