I know you're on tenterhooks, itching to know what I did with that code for manipulating the Stack after my first attempt to get a working register-save routine up-and-running last time. Well, here's the result:
Nothing.
Actually, that's not entirely true - I did write two other variations of saveregs, but in both cases the cycle-time went up; I did get a version working which did a degree of faffing-around with the Stacked data and eliminated the two dead-weight return address bytes, but that tallied to over 70 cycles, and was quite ugly. So in the end, I settled on the version I wrote first, and decided that I would just have to accept the rigour needed to ensure I called loadregs nicely and let it tidy-up those two bytes.
After that, I found myself with very little time suddenly, so the project has lain largely neglected for the last week or so. I found a half-hour yesterday to squeeze some logic in to administer a keyboard buffer which the keyscan routine drops characters into as you type them, and then I tweaked the IRQ handler to spit the buffer contents to the screen if appropriate - but it'll be next week before I get a chance to do much more. The next thing on my list is to finalise the way the keyboard logic handles 'control-key' actions like Shift, Control, Tab, etc. so I'm hoping to have that wrapped-up in a few days.
There's also a little bug in the IRQ routine which has become apparent after my new Stack logic went in; I think I've got a sneaky 'pull' happening somewhere which is messing with the Stack Pointer, so I'll be doing a spot of tracing there to identify and fix that glitch.
Onward!
No comments:
Post a Comment