Saga20101201

= 01/12/2010: Responses = It's been a while since I've updated; having been busy on other things. Anyway, I've implemented most of the responses and have been playing through The Golden Baton to try and find bugs.

There's still stuff to be done, but I guess I've implemented about 90% of the interpreter and it plays through most of The Golden Baton, my bug list looks something like:
 * GET ROPE (when hanging) requires repeating (continued)
 * No "Don't understand if nothing actioned"
 * LOOK over-ride
 * Unimplemented:
 * continue
 * put item
 * print counter
 * swaploc1
 * sel counter
 * refill lamp
 * light and dark flags
 * light lifetime
 * quit
 * load
 * Tune and clean up source

In terms of file sizes, my code stands at &B03 bytes, which include the system messages, which I'm playing to load externally. This added to the size of the compressed game file for TGB (&11E8) is &1CEB. Comparing this against the original size that was released (&3148) and I've reduced the size to about 55%.

But, there's always a sting in the tail: my dreams of getting some games to work with MODE 0/1/2 is turning out to be a pipedream. With PAGE at &1900, this means that the code plus the game will go up to &35EB, which is quite scary as TGB is one of the smallest games. I have some space below &E00 that I can use (pages 4, 7, 8, 9, A, B - I've already allocated 5, 6 and C) and I could potentially lower PAGE to &1400 if I'm careful about the use of disc, but this has to cover the code I haven't yet written (including graphics code) and only for small games.

So it's time to make the design decision: I'm going to go for mode 4 or 5 for graphics. I could possible make an exception if I'm know the game is running on a Master/B+/E00 DFS which would give me an extra 10 pages; or, if I was running from ROM. More to think about!

I should be happy though - I've implemented a SAGA interpreted in a tad under 3K in a machine code that I haven't used for 20 years, and even then I only used it to write cheats for games!

Lessons over the past few days:
 * Check out your zero page allocations carefully; I nearly came to a halt as I was trying to squeeze too much into 10 bytes of zero page, when I actually over half of it unused!
 * Set up your OSFILE/OSWORD blocks in advance instead of creating them on the fly - it takes up a lot less memory.
 * Don't set up your wireless encryption key with lots of swearing in it as it'll be embarrassing when your better half asks for it!