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.