Re: Looking for a really good PET zero-page map

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.