Cartridge Port

153 views
Skip to first unread message

Todd Andrew Williamson

unread,
Jan 20, 1988, 10:04:06 AM1/20/88
to


Can anyone give me a comprehensive idea of what the game and exrom lines on
the cartridge port of the 64 do? I think I have a pretty good idea, but I'd
like to be sure. I heard a nasty rumor that if the game line is held low on
startup, the 64 goes into a "Max machine" mode, with like 4k of RAM or
something. I tried all of my usual sources, but I couldn't find any
information on the PLA chip. Any information would be appreciated, either a
post or EMAIL.


Thanks in advance,

-Todd.

Eric Green

unread,
Jan 21, 1988, 11:12:21 PM1/21/88
to

Look on pages 263-267 of the Programmer's Reference Guide. Yes
indeedy, if you pull down the *GAME line without pulling down the *EXROM
line, it goes into "ULTIMAX video game memory map". Interesting thing about
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?!".

'Nother interesting thing is the snafu of p266 (bottom), the 16K cartridge
memory map, and page 265 (bottom), the 8K BASIC expander memory map. Look
carefully at LORAM and HIRAM for both (those are two bits in location $01, see
the memory map). They're identical! In actuality, one is supposed to be
LORAM=1,HIRAM=0. Something else interesting is that my copy of Abacr*p's "The
Anatomy of the Commodore 64" has those very same memory maps in it -- complete
with that error! So much for proof-reading......

--
Eric Lee Green e...@usl.CSNET Asimov Cocktail,n., A verbal bomb
{cbosgd,ihnp4}!killer!elg detonated by the mention of any
Snail Mail P.O. Box 92191 subject, resulting in an explosion
Lafayette, LA 70509 of at least 5,000 words.

-Pe...@cup.portal.com

unread,
Jan 22, 1988, 1:23:21 PM1/22/88
to

The following comes from the book 'Programming the Commodore 64' by Raeto
Collin West, copyright March 1985 by COMPUTE! Publications Inc. I intend the
following to be treated the same as though I had let someone read from the
book.

Memory with Cartridge and BASIC

At power up, this arrangement has an 8K cartridge, usually designed to auto-
start, 4K free RAM, and BASIC with 30K ROM, which you may or may not be returne
to. Most cartridges using 8K or less--even pure ML--use this arrangement, since
they can also borrow BASIC subroutines. Some utilities coexist with BASIC or
intercept BASIC in order to add their own commands. Some utilities relocat
their cartridge ML to RAM at $c000, altering BASIC vectors, then switch them-
selves out by resetting EXROM high. This allows nother cartridge to operate, bu
means that RAM from $c000 must remain untouched.
If EXROM is grounded with no cartridge present, the 64 will print 30719
bytes free when turned on; it loses 8K of ROM, so $8000-$9fff is read as
garbage, but written as RAM. If GAME alone is grounded when the computer is
turned on, the 64 crashes, since the Kernal is deactivated. The following
figure shows how the PLA detects cartridge presence.
Software Hardware
CHAREN HIRAM LORAM EXROM GAME
1 1 1 0 1 $d000-$e000 is I/O ROM
0 1 1 0 1 $d000-$e000 is Char. ROM

All other configurations are identical to those of no cartridge being
present.

Memory with Cartridge but Without BASIC

This allows a 16K ML autostart cartridge to use Kernal and I/O. It's often
called the application configuration, based on the theory that 16K will hold
a serious program. However, it's often not enough and it's common to find
cartridges using bank switching themselves. COMAL (a structured programming
language) has four banks here, using 64K RO.

MAX

Intended to allow a 16K autostart cartridge, including its own I/O routines
with 4K of RAM.
Software Hardware Config.
CHAREN HIRAM LORAM EXROM GAME 0 1000 8000 A000 D000 E000 FFF
--- ANY --- 1 0 RAM Unused 8K Cart Unused I/O 8K Cart

Overview of 64 Memory Maps

64K of RAM is available under ROM. This is because the PLA insures that when-
ever ROM coexists with RAM, reading comes from ROM, but writing goes to the
hidden RAM (or the I/O chips). You'll need to alter the LORAM or HIRAM bits
to read the RAM back. However, the VIC-II chip is wired to read RAM--except
where it sees character ROM. Also, of course, the PLA has to switch in external
ROM cartridges when detected, giving them priority over internal RAM and ROM.
Note that, when the 64 is turned on, CHAREN, HIRAM, and LORAM are all set to 1,
so the maps with ots of RAM must be switched in using software. They aren't
necessarily easy to use; the Kernal and I/O are important if you wish to use
the keyboard and screen, for example.
There are several limitations on the amount of external ROM which the 64 can
take. No external ROM can be added below $8000 without external decoding (so
you must use RAM below $8000), and ROM above $8000 is confined to several
blocks, arranged around the BASIC, Kernal, and character ROMs. Paradoxically,
the system is in some ways less flexible than the VIC-20, where several chunks
of empty memory can be filled with ROM or RAM packs.
Turnkey (ready to go) systems use the $8000 autostart feature. A cartridge
can be mimicked in RAM by poking five bytes into $8004-$8008 to defeat a reset
switch (unless EXROM is grounded). However, a cartridge which uses its own
area of underlying RAM won'T work if it's simply copied into RAM, and an
external RAM pack, which would mimic ROM, can't be written to. So, from the
software security point of view, this design is good.

Commodore 64 Ports
Cartridge Port. This is the port at the left of the 64, looking from the
rear. It has 44 connections, 22 on each side, all of which are connected. Two
tracks, usually wired together, carry the +5-volt power supply to the cart-
ridge; these are pins 2 and 3, near the top right, from the back of the 64.
(The VIC-20 has a reversed numbering convention.) These tracks are rather
close, and the possibilities of a short-circuit or arcing make it inadvisable
to insert or remove cartridges when the power is on, though with care it is
generally safe. Note that edge connectors are designed for the replacement
of faulty computer parts during maintenance; they aren't really ideal for
cartridges.

Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Bot A B C D E F G H I J K L M N O P Q R S T U V

The pins function as described below:
Top
---
1 Ground. All four ground lines are usually tied together.
2,3 5-volt power supply to the cartridge.
4 IRQ. As long as this is low, it requests an interrupt.
5 R/W line. Reads when low, writes when high.
6 8MHz dot clock input, for your own video control.
7 I/O1 goes low when 64 detects use of $de00-$deff; can be used with CP/M.
8 GAME replaces BASIC ROM with external cartridge ROM when grounded.
9 EXROM replaces RAM from $8000-$9fff when EXROM is low; needs address
A0-A12.
12 BA (Bus Acknowledge). To use, pull DMA low. An external device ca
control the 64 while BA is high.
13 DMA (Direct Memory Access). See BA.
14-21 D7 through D0. The data bus carries eight bits of data.
22 Ground.

Bottom
------
A Ground.
B ROMH selects external ROM at $a000-$bfff (or $e000-$ffff, for MAX) when
GAME or EXROM is low; needs address bits A0-A12.
C RESET detects a positive voltage, resetting when rising from ground to
+5 volts.
D NMI connects to 6510 Non-Maskable Interrupt line. It is spike sensitiv
--needs a pulse in either direction. Normally high, so many devices can
signal NM=I.
E 02 system clock. Essential for I/O timing, but not necessary for externa
ROM. (Note: 0 is the small circle w/ the slash through it.)
F,H,J,K,L,M,N,P,R,S,T,U,V,W,X,Y, Address bus (A15-A0). The full 16 address
lines are necessary for DMA.
Z Ground.

A typical 16K game or word processor on cartridge uses the ground and power
lines, GAME and EXROM, ROML and ROMH (for access to cartridge ROM at $800
$bfff), and the data bus, plus address lines A0-A12. All ROM addresses from 0X
through 1XXX, plus ROML and ROMH, are therefore accessible. An 8K cartridge
doesn't need GAME or ROMH.
Interfaces typically use I/O1 or I/O2 to control two storage buffers and R/W
and 02 to control timing.


(Programming the Commodore 64, pages 114-120, slightly modified.)

I hope that this has been a help to you.

-Peter Cook
Unison: [DCUNSN]PETERCOOK
sun!DCUNSN.DAS.NET!MAX::PETERCOOK
sun!portal!cup.portal.com!Peter_Thomas_Cook
Portal: -Pete-

Fred Bowen

unread,
Jan 29, 1988, 10:44:33 AM1/29/88
to
In article <30...@killer.UUCP>, e...@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?!".
>
> Eric Lee Green e...@usl.CSNET Asimov Cocktail,n., A verbal bomb

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.

(So I suppose you could say then that the C128 is really FOUR machines in
one, with Max still in its heart ;-)

--
--
Fred Bowen uucp: {ihnp4|rutgers|caip}!cbmvax!fred
arpa: cbmvax!fr...@RUTGERS.EDU
tele: 215 431-9100

Commodore Electronics, Ltd., 1200 Wilson Drive, West Chester, PA, 19380

Eric Green

unread,
Jan 31, 1988, 2:19:17 AM1/31/88
to
in article <32...@cbmvax.UUCP>, fr...@cbmvax.UUCP (Fred Bowen) says:
> In article <30...@killer.UUCP>, e...@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
had to be on the plug-in cartridges? Beats me... all I know was that I wrote a
short program at $900 that banked Ultimax in (via a jumper to a CIA), paused
for a few secs (with irq's off, of course), then banked Ultimax out -- and the
character set evaporated during that pause. Which means that anybody who wants
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....

--


Eric Lee Green e...@usl.CSNET Asimov Cocktail,n., A verbal bomb

Fred Bowen

unread,
Feb 2, 1988, 10:21:22 AM2/2/88
to
In article <31...@killer.UUCP>, e...@killer.UUCP (Eric Green) writes:
> 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
> had to be on the plug-in cartridges?

Yep. Most games were bit mapped or used their own characters anyhow.
Also remember the VIC sees the character ROM not at $D000 like the
processor but in bank 0 or 2 only, at $2000 and $9000, thru the same
magical PLA that dreams up Max mode when the /game goes down.

> ... anybody who wants


> 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).

Ultimax mode is (was?) intended for game cartridges which are
installed at power up, so this is no problem.

> ...why one would want Ultimax, figure out for yourself how you could get your


> own custom Kernal into the machine without a ROM swap....

Not using Max mode unless you are playing truly bizarre "hardware"
games with /game. Even so, in Max mode the image of the "kernel"
ROM also appears at $3000, and all but 2-4K of RAM evaporate. Add
to this the VIC-ercises you mentioned above, and you get some idea
why it's so hard to maintain compatiblity in newer computers with
fellas like yourself running around :-) But I guess that's why the
64 type computer still lives, eh?

> Eric Lee Green e...@usl.CSNET Asimov Cocktail,n., A verbal bomb
> {cbosgd,ihnp4}!killer!elg detonated by the mention of any
> Snail Mail P.O. Box 92191 subject, resulting in an explosion
> Lafayette, LA 70509 of at least 5,000 words.

Marcel LeBlanc

unread,
Feb 5, 1988, 3:04:36 PM2/5/88
to
>> In article <30...@killer.UUCP>, e...@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...@relay.cs.net
CSNET: leb...@godzilla.ele.toronto.edu
CDNNET: leb...@godzilla.ele.toronto.cdn
BITNET: leb...@godzilla.ele.utoronto (may not work from all sites)
--

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

Reply all
Reply to author
Forward
0 new messages