From: Ethan Dicks (ethan.dicks_at_gmail.com)
Date: 2008-06-15 04:37:47
On Sat, Jun 14, 2008 at 12:18 PM, Rhialto <rhialto@falu.nl> wrote: > On Sat 14 Jun 2008 at 01:09:01 +0000, Ethan Dicks wrote: >> Way back in 1979 or so, someone gave me a paper copy of a really >> excellent 3-column zero-page and ROM entry-point map. There's >> a good chance it was based on work by Jim Strasma... > I may have something like that in my paper collection. I'll have to look > that up. At least one of those is from that Transactor issue with all > the tables; I seem to recall that it is online. I have the Transactor tables - they are quite helpful, but only about 98% as complete as the paper document I'm searching for. > In the mean time, is > http://www.zimmers.net/anonftp/pub/cbm/maps/PETram.doc useful? Thanks for pointing that out. There are a couple of items that are better documented than in the Transactor tables. > LDTB1 00E0-00F8 224-248 3+4.40: Screen Line Link Table / Editor Temps > > is the table that records if a logical line is continued from this > physical line. It looks like it has only 24 entries, i.e. the last line > is left implicit. Interesting. So now I wonder how $D5 is getting set to 80. I checked through a couple of disassemblies - I found one "STA $D5" in the entire ROM, so it's likely that however this is happening can be traced down without too much effort. What I was after the zero-page maps, though, was not for this bug, it was for another. Before I got to the bottom of the last-line bug, I had another, unrelated bug, wherein I could navigate all around the game on an 8032, but it wouldn't accept nouns (i.e., "E" worked, but not "OPEN MAILBOX"). Between that and some string decoding glitches, I figured I had a zero-page conflict. I was right. I eventually found a large enough spot that was free on BASIC 4.0 machines ($BA-$C3) that I could move all of the variables out of the problem range of $03-$0C. Once I stopped using those lower locations, nouns worked and there were no longer any corrupt strings being printed. What would be great would be a companion map that would more-or-less show locations that were safe to re-use if you weren't using BASIC - that was fundmentally my quest - find over 100 free spaces to stuff things, with an unfortunately large requirement for contiguous blocks (32 bytes for one, 8 bytes for another). It appears that the zero-page layout of later machines (C-64/VIC-20) is much more suited to that than PETs, but then I doubt in 1976/1977 much thought went into how to optimize things when BASIC wasn't needed. At this point, I only have one more visible bug to track down. On 40-column machines only, when the text fills the screen and the game prints "[MORE]", sometimes, when the text scrolls up, memory garbage from $83E8-$83FF comes with it. It's probably related somehow to the 80-column-last-line problem I'm having with input. This happens on a 3032 and a 4032, but obviously not an 8032. It's been really exciting to make some progress on these bugs after so long. I started working on this project over 20 years ago with a C-64 and 1541, then made some significant progress about 10 years ago once I could test with an early version of VICE on a Sun workstation, but use UNIX tools and a megapixel screen to do the code edits. With three different bugs affecting three platforms differently, my progress ground to a halt until I got a flash of insight this week - now, it works perfectly, as far as I can tell, on a 8032, and _nearly_ perfectly on 40-column machines. -ethan Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.