Designing the Ulti(mate) MAX cartridge

From: Rob Clarke <crock_at_clarke-family.org.uk>
Date: Wed, 19 Dec 2012 17:55:31 +0100
Message-ID: <342845acc175a181d01c37354a5106f8.squirrel@www.clarke-family.org.uk>
Gentlemen,

Thanks to Steve Gray’s simple MAX machine modification, I now have my MAX
working via composite out to my LCD TV. Despite having ipad’s, Nintendo
DS’s and a Wii, my kids spent hours playing the ultimax mode cartridges
which is testament to the playability of the very earliest games from HAL
labs and the other stuff produced in Japan.

Given it’s one of the rarer of my Commodore machines, I didn’t
particularly like the idea of my 6-year old Son swapping the cartridges
himself so it got me thinking that it would pretty easy to make an ultimax
mode cartridge which would boot into a menu and allow the user to select
an image with the joystick. As there was only a total of about 30 ultimax
compatible games (and even then, several of these were different versions
of the same game), they would all fit onto a 256k x 8 prom. I know there’s
several solutions that do this for the stock 64 (easyflash, alienflash,
u1541 etc) but none work on a max machine as far as I know and, besides,
this is more an exercise to see if I can.

Although I’ve spent a few years on the forum, I’ve never done much
hardware hacking myself, mainly just for repairing and knowledge, so I
wanted to run a couple of ideas past you guys to see if they’re workable.

If I assume I’m using a 2mb prom, which would hold up to 32 x 8k images, I
need to find a way to programmatically control A13 -> A17. My idea was to
use a tri-stateable latch such a 74LS373 which I would latch with one of
the chip selects on the MAX expansion port. Pin 7 controls /EXRAM which I
think is only used by the MAX-Basic cartridge. I haven’t checked, but I
assume this maps to $0800-$0FFF, so I can latch these address lines with a
write to an address in this space, AND’ing this with the R/W line. If I
copy a small banking routine into the RAM at $0000-$03FF, I can set the
latch and JMP ($FFFC) to start the image. This will all come a bit unstuck
if the image makes writes to the $0800-$0FFF address space but the only
image that would do that would be the MAX-BASIC, which I would not
include.

This leaves the problem of how to ensure it comes up properly when RESET.
My idea with the tri-stateable latch was that I could pull-up (or down)
the banking address lines with a resistor pack and control the output
enable with another line exposed on the MAX cartridge port. What this line
might be is more problematic. On the MAX schematic on Zimmers, I notice
that P2 of the 6510 I/O port is exposed on pin-22 through a 470ohm
resistor. On a 64, this would be ground, but maybe I can use this to
control /OE on the MAX? This raised another questions though which I might
have asked before on this forum which is:

Q) When a 6510 is reset, what’s the default state of the DDR and I/O ports?

The answer I am hoping for is that they are set for input so that I could
have a pull-up resistor on /OE up to disable the latch outputs and rely on
the pull-ups on the address lines to bank in the correct menu image when
RESET. The worst answer would be that it’s not deterministic at all, in
which case it would be very difficult to use P2. If this will not work,  I
am open to suggestions as to an alternative. If I used an octal latch like
the 673 I would still have 3 unused with a 2mb PROM so I  wonder if I
could use some nasty feedback option where I use one of the unused latches
to control its own output enable. If I then use /EXRAM to control /OE and
(inverted) LE, writing a 0 to the latch would enable it and a 1 would
disable it.

Could these ideas work or am I talking garbage? Don’t feel bad about
tearing my ideas apart.

Cheers, Rob


       Message was sent through the cbm-hackers mailing list
Received on 2012-12-19 17:00:05

Archive generated by hypermail 2.2.0.