The last few hours of work on the project have mostly been spent doing stuff that has no real visible effect - that is, if you fire-up 0.1g (the current build) and compare it to 0.1f, there's no apparent difference. This isn't the case, of course, because there is actually about 100 bytes of new or tweaked code tucked away inside the ROM to do with handling cursor position updates, text line overruns, binary-to-BCD-to-ASCII numeric conversion, and 16-bit binary arithmetic. All of which have allowed me to add a few final demonstration instructions and have 0.1g draw to a close with a flourish:
Yep, there's now enough framework in there to write messages to the screen in a sensible, coherent way, and have the OS keep track of the cursor position for the next message (handling line overruns and CRLF directives) and do simple 16-bit addition sufficient to allow the amount of installed RAM to be counted and displayed. I think I'm going to revisit the font pretty soon though, as the lower-case glyphs look frankly hideous in some cases. The numbers indicate 'Installed RAM', which is the sum of the 1500-odd free bytes at the end of the on-board 5K plus however many 8K blocks are filled, and 'Available RAM', which is the total minus whatever number of bytes the OS has reserved for the Symbol Table, etc. At the moment that's a big fat zero, so the two values are the same - 34,340 bytes. Ah, Smug Mode. :)
You can't see it in the screenshot, but the cursor is blinking - although there's obviously a bug somewhere because it's dropped to the bottom line and sort of flattened itself a bit. Most odd - must be something to do with an in-progress tweak I started work on last night which I guess has splatted an address table with garbage somewhere... Anyway, I might investigate the perceived complexities of making a short video to demonstrate system startup and the fact that the cursor really does do something and isn't just a faked block... ;)
I've also spent a productive half-an-hour restructuring the project folder layout, tweaking the build scripts to take account of things moving around, and created a Google Code repo for the project. I was using Dropbox as a simple synchroniser and off-site storage facility, but I had a dire panic-stricken hour one evening last week when it looked like I'd managed to nuke about three hours work by mistake (I hadn't) and decided to do things properly. Everything else I do is either in a cloud-backed personal Subversion repo or Google Codes' Subversion infrastructure, so I don't know why I didn't put VIC++ in there in the first place - but I have now, and feel better for it!
Before I get to the keyboard-scanning task, there are a few loose ends to tidy-up with what I've done recently - the font, for example, I've already mentioned needs work; some text line overrun edge-cases need to be handled properly; and there's a stub call that currently goes nowhere to handle scrolling the screen upwards when text is inserted at/beyond the end of line 25, so I need to write that.
Busy busy!

Cheers Muttley. I grabbed FRAPS and had a quick play with it - it seems to get the job done, so once I've fixed the last couple of glitches in the cursor-positioning logic, I'll have a stab at creating a short video of the OS starting up.
ReplyDelete