The ULA does not check for this and really can't, if it sees it low by a certain half clock of the CPU, it will start the DRAM access if possible. The best you can do is prevent CAS from being generated if it is not low after that to prevent RAM corruption.lliont wrote: Sat Apr 08, 2023 7:52 am And it is a bit more complicated, don't forget that ula in this bus has to check for the dsmc suddenly going high again by an expansion card and abort it's operation. So it can not function arbitrary fast or it will not give the card access.
If it controlled all the ram and not the 128K it could ignore the dsmc for the ram range.
You have to work at 2x CPU frequency since the CPU itself works in half clock cycles.
Keep in mind that DSMCL is actually CPU /DS so the circuit that has to externally pull DSMCL up has to be able to decode that the address does not belong to the ULA and pull up DSMCL from the address (and possibly RDWL) setup time before DSL goes low. If you are generating this asynchronously and as a result there is a chip enable and/or output enable generated from it at some point, the critical path happens on read because DSL gets pulled down by the CPU at the same time as ASL so there is about 1/2 clock of time (at best!) if every signal is fairly equally loaded. On write it is almost impossible not to satisfy it as the setup time is about 1.5 clock cycles. If you generate a chip select and then deactivate it before something is asynchronously read, the data may appear on the bus and then disappear before the proper device supplies data, possibly resulting in a very short bus contention.
But if an asychronous signal is generated which result in some state change in the hardware that was supposed to be addressed but then was not, all sorts of unpredictable behavior can happen.
The best one can do is once the DSMCL signal goes low, not to act until the last possible moment based on the required timing you are about to address within the ULA domain. Even then, there is just so much you can do to mitigate for someone else's badly designed hardware...