[comp.sys.cbm] Cartridge Port, Ultimax

leblanc@godzilla.ele.toronto.edu (Marcel LeBlanc) (02/05/88)

>> In article <3021@killer.UUCP>, elg@killer.UUCP (Eric Green) writes:
>>> Ultimax mode... only 4K of RAM is accessible. Period. You can't read any other
>>> RAM, and, what's even more mystifying, you can't WRITE any other RAM. Boggles
>>> one's mind... "WHAT the HECK is THAT in there for?!".
>> The Ultimax (aka Max Machine) was intended to be the cheapest CBM system,
>> below or possibly replacing the VIC-20.  It was primarily a game machine
>> using the VIC-II chip, just like his brother the C64.  He did not even have
>> BASIC in ROM, although a BASIC cartridge was to be available.  Well, in the
>> US at least, Max died in infancy but not before leaving his mark on the C64,
>> which was (ta-da) two machines in one, a Max and a C64.
>
>Another mind-boggling thing: The VIC-][ chip in the C64 can't see the regular
>character-set ROM if the Ultimax mode is enabled. I guess the character set
...
>to take advantage of Ultimax had better make sure that it only takes over
>while BA and S02 are both high (i.e., when the VIC-][ chip isn't active). As
>for why one would want Ultimax, figure out for yourself how you could get your
>own custom Kernal into the machine without a ROM swap....
>

	There are actually a number of products that use the Ultimax
configuration on the C-64.  The Ultimax configuration allows hardware on
the cartridge port to interrupt the C-64 via a simple NMI, regardless of
the state of the register at byte $01.  Since there is essentially nothing
in the processor's address space above address $1000 (except for the $DD00
-$DFFF block), the contents of byte $01 do not affect what will appear in
memory.  In this configuration, ROM can be made to appear at addresses
$E000-$FFFF, enabling the programmer to intercept all interrupts by suitably
redirecting the CPU to addresses at $FFF8-FFFF.
	Another useful result of the empty address space in the Ultimax 
configuration is that RAM can be added to the C-64 without any extra address
decoding.  In the standard 'non-ultimax' configurations of the C-64, ROM can
easily be added by suitably setting the /GAME and /EXROM lines of the cartridge
port, then using the /LOROM and /HIROM lines as enable signals (I think this
is what they are called!).  However, these enable lines are only asserted
during read operations.  In the Ultimax configuration, the enable lines are
asserted for both read and write operations.
	If anybody in net-land is interested in using Ultimax configuration
without making their own hardware, they can use the Super Snapshot cartridge
from LMS Technologies.  In addition to allowing the programmer to switch back
and forth between Ultimax and standard configurations, SS allows you to 
redirect any interrupts in the Ultimax configuration to your own routines in
RAM.  These technical details are not given in the manual, but if anybody wants
more information please feel free to contact me through the NET.

  Marcel A. LeBlanc
  University of Toronto -- Toronto, Canada
  also: LMS Technologies Ltd, Fredericton, NB, Canada

UUCP:	???
ARPA:	leblanc%godzilla.ele.toronto.edu@relay.cs.net
CSNET:	leblanc@godzilla.ele.toronto.edu
CDNNET:	leblanc@godzilla.ele.toronto.cdn
BITNET:	leblanc@godzilla.ele.utoronto (may not work from all sites)
-- 

  Marcel A. LeBlanc
  University of Toronto -- Toronto, Canada
  also: LMS Technologies Ltd, Fredericton, NB, Canada