Re: [Fwd: Diagnostic cartridges]

From: Nicolas Welte (welte_at_chemie.uni-konstanz.de)
Date: 2002-01-29 12:39:17

Marko Mäkelä wrote:
> The portions it relies to be okay are two bytes somewhere at $1f0-$1ff.
> 
> The RESET routine does just
> LDX#xx:SEI:TXS:CLD:JSR$xxxx:...:RTS:BEQ/BNE$xxxx:JMP($8000) if the
> CBM80 text is found at $8004-$8008.  The JSR'd routine checks the
> text, and if the RAM is bad, the RTS at the end of this routine will
> fail.  Stupid design by Commodore, I'd say.

That explains my problems, thanks. So Nick's startup code will help in this
case, *if* the diagnostic cartridge ROM code does not rely on the stack for
its own purposes.

The cartridge logic necessary for this could be pretty simple: First, it must
boot up the C64 in Ultimax mode (/EXROM=H, /GAME=L), and after a write to the
I/O area (either I/O1 or I/O2) change this to normal EXROM mode (/EXROM=L,
/GAME=H). This can be done with a simple LS74 flipflop I guess (/RES and I/O1
as set/reset inputs, /EXROM and /GAME as outputs Q and /Q). The /ROML and
/ROMH signals must be combined to select the single EPROM, to make the mode
switch possible from inside the ROM, and this can be done with two diodes. I
like this much better than modifying a Supergames cartridge.

Nicolas

       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail 2.1.1.