I'm pretty close to finishing the cursor-control logic now - although I envisioned a fairly simple process of tweaking it to handle the few edge-conditions that needed managing, it turned into a slightly more complex exercise in which I essentially turned the whole thing upside-down, shook it violently, and then threw a lot of loose pieces into the bin. What's left is smaller and neater than before, and far more tolerant to change than the precarious house of cards I'd managed to erect at the first attempt.
In between having some hard, deep thoughts about cursors, I also took a moment to do some general housekeeping and edge-trimming on other parts of the project. I spotted a way to shave about 200-odd cycles off the dirty-row refresh code, adjusted the memory-test logic so that it behaved ever-so-slightly-differently and worked on the assumption that BLK0 (the 3K RAM expansion at $0400) would be present - plus I added a check at the end of RAMTAS to confirm that the BLK0 bit in the Expansion RAM bitmap had actually been set, so we now have a stub JMP to a failure-handler if not and there will be (in the future) a little routine at the end of it which tells the user that VIC++ needs at least BLK0 populated.
I also did a little clean-up of the commenting in a few modules, as there were some areas which needed a little more descriptive help in explaining what they did. Oh, and I created a 6502 Assembler Language File for Notepad++ so it does nicer syntax highlighting. So once again, there's little visible to show for the last few hours' work, but I have been 'doing stuff' even if it's mostly behind-the-scenes activity.
If the next round of testing proves that the new cursor code is nice and robust, I'm going to flesh-out the code that does the memory-count stuff to populate the startup messages (it's just a bunch of kludged calls to the 16-bit addition routine at the moment) and then generate a little video of the whole startup sequence. Yay, and Woo, and so forth.
No comments:
Post a Comment