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.