I am currently designing a revised Raven ISA cartridge PCB board with a GAL16V8 IC for the coding logic on the board.agranlund wrote: 14 Oct 2025 13:38 This is not at all thought through properly, just thinking out loud :)
But we can steer the logical cartridge address range to an ISA-MEM access with the PMMU.
Would "just" need to avoid that the (isa-space) range isn't colliding with what a graphics card may think belongs to it.
Possibly by A0-A19 being lower than $A0000, and then also some quite high address bit(s) being set to put it out of the way of potential linear framebuffers.
Something likeAx signals TBD, perhaps at ISA space 8MB or something like that.Code: Select all
ISA Cart A0-A15 A0-A15 A16 Rom3/4 select Ax Cart select D0-D7 D8-D15 D8-D15 D0-D7
(cpu) 0xFA0000 -> (isa) 0x800000
(cpu) 0xFB0000 -> (isa) 0x810000
The card would need some logic, similar to a normal ISA card, to decide if the access is for it. And then also to generate some of the signals for the cartridge port.
I am currently routing A16–A23 and MEMRD from ISA socket to the GAL IC on the new board. This will allow me to update the GAL logic depending on the address space to be used and agreed mechanisms.
here is the logic at the moment:
Code: Select all
/*
Raven ISA Cartridge Port Decode PAL
-----------------------------------
This PAL recreates the Atari ST cartridge ROM3/ROM4 decode
using ONLY signals available on the Raven ISA bus.
ISA provides:
- A0–A23
- /MEMR (memory read strobe)
ISA does NOT provide:
- 68000/68060 AS
- 68000/68060 RW
Therefore /MEMR is used as the cycle qualifier.
/MEMR already implies:
- valid bus cycle
- memory space
- read cycle
Address ranges decoded:
ROM4 → 0xFA0000–0xFAFFFF
ROM3 → 0xFB0000–0xFBFFFF
Upper address byte:
FA = 1111 1010₂
FB = 1111 1011₂
*/
/* ---------- Pin Assignments ---------- */
PIN 1 = MEMR; /* ISA /MEMR (active low) */
PIN 2 = A16;
PIN 3 = A17;
PIN 4 = A18;
PIN 5 = A19;
PIN 6 = A20;
PIN 7 = A21;
PIN 8 = A22;
PIN 9 = A23;
/* Outputs to Atari cartridge socket */
PIN 18 = ROM4; /* Active low */
PIN 19 = ROM3; /* Active low */
/* ---------- Logic Equations ---------- */
/*
ROM3 = /MEMR & A23..A16 = 11111011₂
ROM4 = /MEMR & A23..A16 = 11111010₂
*/
ROM3 = !MEMR & A23 & A22 & A21 & A20 & A19 & !A18 & A17 & A16;
ROM4 = !MEMR & A23 & A22 & A21 & A20 & A19 & !A18 & A17 & !A16;
Happy to take feedback on things so far. Prototype PCBs ordered as the undecided bits should be in the GAL logic :)
