Timing on ROM expansion port / ROMOEH
Posted: Mon Dec 18, 2023 6:01 pm
Hi all,
i'm currently trying my first steps with hardware on QL (basically tinkering...) and decided to go for the rom expansion port (not the expansion port on the left). What i basically tried is to use a PIC (PIC18F27K42 @ 64mhz) and wired up A0-A15, ROMOEH and D0-D7, then in the PIC simply check (continuously) if ROMOEH is high and then if the address lines are between 0xC000 and 0xFFFF, put some bytes on the databus (kind of simulating a rom with a PIC). I'm having minerva installed (Tk2 disabled) if that makes a difference, no further expansion.
So here's my issue:
As long as i don't drive the databus, there is no issue (but i can't deliver any data then).
When i drive the databus, i get some ram-check errors from minerva (assume at least that's the ram-check). Depending how early i check if ROMOEH is still high (to get back to high impedance) i get consistent errors or just sometimes errors (well quite often actually) ...
My assumption is that this is timing related, also should mention that i had to use a 75hc595 SHR for the databus as i run out of pins, which makes it of course much slower, but i'm putting everything to the SHR latch before enabling the SHR outputs, then in a loop wait as long as ROMOEH is high, then disable SHR output again.
Thus my question to the guru's here:
Does anyone know about the timing here ? how long will ROMOEH be high for a read-cycle, ie how much time do i have to deliver on the databus ? Or someone know's where this is documented, i couldn't find anything regarding that until now. Is it even realistic to do that with that simple software approach (no gal's) including the SHR ?
Or anyone thinks that's not related to timing at all ?
i'm currently trying my first steps with hardware on QL (basically tinkering...) and decided to go for the rom expansion port (not the expansion port on the left). What i basically tried is to use a PIC (PIC18F27K42 @ 64mhz) and wired up A0-A15, ROMOEH and D0-D7, then in the PIC simply check (continuously) if ROMOEH is high and then if the address lines are between 0xC000 and 0xFFFF, put some bytes on the databus (kind of simulating a rom with a PIC). I'm having minerva installed (Tk2 disabled) if that makes a difference, no further expansion.
So here's my issue:
As long as i don't drive the databus, there is no issue (but i can't deliver any data then).
When i drive the databus, i get some ram-check errors from minerva (assume at least that's the ram-check). Depending how early i check if ROMOEH is still high (to get back to high impedance) i get consistent errors or just sometimes errors (well quite often actually) ...
My assumption is that this is timing related, also should mention that i had to use a 75hc595 SHR for the databus as i run out of pins, which makes it of course much slower, but i'm putting everything to the SHR latch before enabling the SHR outputs, then in a loop wait as long as ROMOEH is high, then disable SHR output again.
Thus my question to the guru's here:
Does anyone know about the timing here ? how long will ROMOEH be high for a read-cycle, ie how much time do i have to deliver on the databus ? Or someone know's where this is documented, i couldn't find anything regarding that until now. Is it even realistic to do that with that simple software approach (no gal's) including the SHR ?
Or anyone thinks that's not related to timing at all ?