Re: SuperCPU for my C64 and C128

From: smf <smf_at_null.net>
Date: Thu, 26 Jul 2018 03:55:22 +0100
Message-ID: <681dd883-4e16-e5f8-d9ba-c06777343b82@null.net>
On 26/07/2018 02:37, Mia Magnusson wrote:
> But the VIC-II bus cycles is still read only. All other stuff is
> already there anyway.

Being read only doesn't make it particularly easier.

> Well, if you want to be 100% compatible except timing you need the CPU
> to write to the first 4k of the internal RAM which is 1MHz cycles.

The SuperCPU has hardware that mirrors writes to internal ram seperately 
from the 65816, which keeps operating at 20mhz.

The 65816 only has to stop if another write happens to the first 4k 
before the first has been mirrored.

The SuperCPU Optimisation Modes control what range gets mirrored, all 
but "none - copy everything" skips zero page and the stack.

If you're writing SuperCPU aware code then you can interleave writes 
that need to be mirrored with other calculations, so there is no speed 
drop at all.

> Well, if you can do something great, why only make it good enough and
> miss a challenge? :)

Exactly my point.

> Well, you absolutely want it to write to the default screen ram place :)

You want it to be configurable, like the SuperCPU already is. In GEOS 
mode the default screen ram isn't mirrored.

> IMHO it's a good idea to think projects through before implementing
> them. By doing something that "should probably work" as code for a FPGA
> it's easier to estimate how many pins and how much "code" the FPGA must
> have to be able to achieve the goal. It would be a bummer if a pin or
> some minor space in the FPGA is missing to be able to implement the
> ultimax mode.

Or prototype it on a 1541 ultimate u2/u2+, just grab an open source 
65816 first. IIRC That hardware already supports vic fetches in ultimax 
mode for one of the freezers.

> Also it's not obvious which is easiest to bring up first, either only
> running the ultimax mode or only running the 65816 from C64's internal
> ram ("slow mode").

I am not even sure the 65816 runs from internal ram when you switch to 
1mhz mode.

As the default screen ram can't be fetched by ultimax mode, it doesn't 
seem like the first thing you'd try.

>   (Of course only using the ultimax mode with no other
> way of the cart to communicate with the C64 won't work with existing
> programs, but might be good enough to be able to run some test programs
> to check that the hardware works as expected so far. That is a good
> step while developing hardware).

The bringup would be easier if you get the 65816 executing from it's own 
ram first and then mirror writes to the first 4k.

You should build enough debugability into the hardware to help bring it 
up without having to spend ages writing test code.

Once it's up then you can start adding support for vic fetching from 
different places in different ways.

> For an external cartridge on a C128, it seems like the only way for a
> SuperCPU to be compatible is to emulate the C128 MMU
I think the Z80 can write to the MMU and there is very little 
information about what the original adpater actually does.

So it might not be possible to implement a completely external solution, 
you might need an adapter like the original

> interesting as except for the VDC it would probably be rather easy to
> emulate a C128 using a SuperCPU-deluxe++-replica even on a C64.

VDC, keyboard, VIC2e test mode effects & fast IEC (although you can hack 
the motherboard for that)

You're definitely getting ahead of yourself.
Received on 2018-07-26 05:00:04

Archive generated by hypermail 2.2.0.