Nasta wrote:I'd say /DS can't be used as a clock in any system as it signifies 'some' data to be available or requested by the CPU, which is entirely driven by what the CPU is doing, which instructions it's executing, etc. Not sure why a /CS was supplied extra, I'm guessing it goes low whenever the expansion bus addresses are referenced.
/CS works as advertised. It functions like a 'global' /AS on a 68000.
R/
W behaves as expected.
I'm just unsure what /DS is working from.
Nasta wrote:How the signals are used, depends on the device that needs to be interfaced. In general it depends if the device has /RD and /WR in addition to /CS or has R/W and /CS. This is because it depends on what signal tells it that addresses and data are stable.
It has R/
W where read is high, write asserts low, and I need to check if it is high, undefined or Hi-Z otherwise.
Nasta wrote:For the case of /CS, /RD, /WR: /CS is usually treated as an address and /RD or /WR are active when the other signals are stable. So /CS is generated directly from address lines, and /RD and /WR from R/W and /DS. For some devices that are interfaced like this (eg. SRAM) /CS /OE /WR are internally gated so whichever signal goes active last and inactive first will determine when the data is/should be stable.
For the case of R/W and /CS: If there is no explicit /DS, then R/W is considered an 'address' of sorts in that it must be stable before /CS goes low. Then /CS must be generated by gating it with /DS. If there is a /DS then /CS is treated as an address and is generated from address lines like in the first case, and /DS then qualifies the signals, and may or may not (depending on application) be gated with a decoder (some devices have automatic power down states when DS is inactive).
I'm kinda looking for documentation so I can answer these very points and know exactly what is needed. It's probably ridiculously obvious and I'm just missing it because it looks a little different on the scope than I am used to, is all.
Nasta wrote:DP8473V - only pins that drive the Q68 signals need to be converted to 3V3 as the pins that the Q68 drives will be fine with a 3V3 signal. As far as I remember only the data lines need to get the 3V3 treatment. That being said, the driver will have to be hacked extensively as the address lines on the Q68 address words, not bytes, so looking from the Q68, the addresses of the registers inside the DP8473V look spread apart 2:1, only even addresses used (instead of 0,1,2,3... on the (S)GC, it would be 0,2,4,8... on the Q68). The same will hold for any byte wide peripheral connected to the Q68 expansion bus.
I made up a little level converter board for all lines so I didn't have to "be careful". It's just there for anything I want to spontaneously throw at it. In a production design, I would use better economy of design.
I think I have the driver right. I just edited the register and R/W addresses to be double spaced to match the Q68 addresses. The data seemed to be latched ok. I made /RD by inverting /WR. /CS was 1:1 match. I didn't get into it too much - was just seeing if it was going to be "straightforward" as people might like being able to chuck their Q68 underneath a single floppy in a double floppy case, internal PSU, etc

(Yeah, I might have a nice design for it. Maaaybe.)
Nasta wrote:PCA9502 - not parallel -> SPI/I2C but SPI/I2C -> parallel, or more precisely 8-bit GPIO. Not the same thing, the arrow does not go both ways

(but would be nice if it did!)
Yeah. But.
Was using it from an AVR chip to try to query the Q68 for data. It does kinda work 2-way if you configure it so the /IRQ pin asserts if there's IO activity on either side. It then switches direction by the AVR setting bit 7 of IODir at +$0A - so the Q68 is a slave, but can prompt the AVR to fetch. That was all part of figuring out and understand configuring parallel ports on the AVR - just a learning exercise. That way, the AVR just has to keep track of if it caused its own interrupt request, or if it was externally triggered. It's half working, and the bit that isn't is not the direction switching. It's the Q68 sending bytes at irregular enough intervals that it's being flagged as a timeout, I think. It's not a big deal - it's just a learning platform.
If you're seeing the flaw in what I am doing, the missing piece of info is that I wanted to get it working with an external device, then I was going to fold it back to the AVR and have it talk to itself, like an external loopback mode. That way I could develop and test both sides of library code I want, and really shake them down in an environment where something else is happening on the AVR; ie: it is transmitting and receiving simultaneously and handling both sides without error. If it can do that, it can listen to QLNET and pay attention to register accesses from the QL too
