Re: SuperCPU for my C64 and C128

From: Mia Magnusson <mia_at_plea.se>
Date: Fri, 20 Jul 2018 01:36:30 +0200
Message-ID: <20180720013630.00005811@plea.se>
Den Wed, 18 Jul 2018 13:57:48 -0500 skrev Luis Rene Vela Garcia
<lrvg1010@gmail.com>:
> Hi Guys,

Welcome :)

I'm not totally sure exact what information you are looking for.

But in general there are two strategies here. One needs to be used and
the other can greatly speed up things.

As Ruuds stuff about the CP/M cartridge says, the C64 has a mode where
an external CPU can access the C64's internal memory.

But you can also do it the other way around, let the C64 access
external memory. This is called the "Max" or "Ultimax" mode.

The intention of the mode is to provide compatibility with the
Max/Ultimax gamle machine which was like a C64 but almost only for game
playing, containing a small amount of static ram and partially the I/O
a C64 has, but otherwise you had to provide a cartridge with rom and in
some cases (the Basic programming language cartridge) also ram).

But in practise you can assert _GAME at any time which disables most of
the C64 internal memory and let you drive the data bus in the cartridge
port when the C64 does a read operation. This way you can provide
external memory for the VIC-II video chip. The exception is the first
part of RAM (iirc 4k) which were actual ram on a Max/Ultimax and thus
the internal C64 memory is always enabled at those addresses. Also the
I/O areas might not be possible to disable (but I'm not sure here).

For a 65816 accelerator I think you should start as Ruud suggest by
running the 65816 at 1MHz and let it use the C64's internal memory for
the first 64k of address space.

Then I actually suggest using a PLL driven oscillator and sync it to
the C64 clock frequency as it makes timing easier.

The next step would be to add ram which at first is enabled for the
addresses above 64k.

Here comes a nice trick: The next step would be to put the C64 in
Max/Ultimax mode and let the C64 VIC-II chip read from the faster
memory in the 65816. From the point where VIC-II supplies a valid
address to the point it samples the bus you are free to do a faster
read cycle of your memory and latch the read data until the VIC-II
actually samples the data bus. That way a VIC-II read cycle will only
take as short time as the memory can provide data at, and not a full
half of a 1MHz cycle.

Unfortunitely this won't work for the first 4k. You can speed up things
a lot by writing both to the internal C64 memory and the faster
expansion memory, but only read from the faster memory. There is
nothing but the CPU that can alter memory contents so that won't cause
any incompatibly.

The I/O address space must of course be directed directly to the
existing C64 hardware.

A tricky part is the 6510 buildt-in I/O port at address 0/1. The only
way to actually read/write to that port is to run code in the 6510
itself. However that port controls memory mapping and some pins of the
cassette interface. If we assume the 65816 won't use the cassette
interface (but switch to 6510 mode as the cassette port anyway needs
compatible timing) the memory mappings can be simulated by adding a
port at address 0/1 on the 65816 and map in/out write protected parts
of memory that contains copies of the C64 ROM's, and also map in/out
access to the original C64 hardware for the I/O space. That way almost
all C64 software will run fine, and you can also soft load basic/kernal
rom images.

I'm not sure how JiffyDOS works on a SuperCPU, but in general JiffyDOS
is a replacement kernal so you'd just need to use another image for
Kernal. If you want to, you could make your hardware able to show it's
ram to the 6510 CPU (using the _GAME technique) making it possible to
let the 6510 use a JiffyDOS image instead of the standard kernal.

Btw even thogh JiffyDOS is a great improvement, as the 65816 mode won't
be compatible with existing timing critical software (like games and
demos) anyways, I suggest adding a SD card interface to your hardware,
and space for some kind of ROM making it possible to load/save to the
SD card directly. That would win over any JiffyDOS solution speedwise,
while those wanting a 100% compatible drive can use either an existing
1541 or a 1541 Ultimate, even together with your hardware.



-- 
(\_/) Copy the bunny to your mails to help
(O.o) him achieve world domination.
(> <) Come join the dark side.
/_|_\ We have cookies.
Received on 2018-07-20 02:00:34

Archive generated by hypermail 2.2.0.