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.