Adjusting the QNET timings on a QXL2
Posted: Fri May 18, 2018 8:41 pm
Hi everyone
Question:
How do you find the Device Definition Block (DDB) base-address from SBASIC for the NET device on a QXL under SMSQ/E?
Context:
Whilst still exploring the QNET capabilities across various platforms, I purchased a refurbished QXL2 (8MB, 40MHz osc => CPUCLK @ 20MHz) from Derek a little while ago and am now testing the network.
Derek had fitted an 68RC040 on the card that apparently came from a Q40 - runs very nicely using the latest SMSQ/E v3.33.
My first testing of the network on this little beastie failed between both an iss7 QL as well as my prototype QNET to USB adapter attached to my QPC-running laptop (still a work in progress - see elsewhere...).
Attaching my cheapo digital analyser, I see that the bit-timings are just a bit too short to allow reliable connection with the QL. By adjusting the timings on the QNET/USB adapter, I can read the packets from the QXL OK. The difference is just 5% off - accumulatively (?) half a bit-time after 9-bits (START+8-bits) - and just enough for the receiving QL to misinterpret the STOP bit as the final/MSBit of the sent byte.
QXL also delivers a relatively shorter set of STOP bits, but the QNET protocol takes that in its stride.
See attached screen-captures - the nominal QNET bit-timing is 11.2us, resulting in 100.8us for the 9-bit (partial) frame. The QL meets this, but the equivalent QXL frame runs to only 96us. The sample rate was only 1Mbps, so to the nearest 1us...
I've tested with CACHE_ON and CACHE _OFF - same results.
Referring to the SMSQ/E sources for the QXL Net code, we see that the the timing constants are exposed in the DDB for the NET device, which is handy (though not as handy as the hardware timer approach that we could use on the Q68.)
We can pick-up the Driver Linkage Block address from the Channel Def Block (CDB) for an open NET channel, but I'm struggling to follow all the redirection to find the DDB base address itself from where the NET timing-constants table - ndt_ctab @ $50(a3) - could be read and altered (extended by 5%.)
I'd like to experiment with some adjusted timings in the DDB before attempting to recompile SMSQ for the QXL with the adjusted timings.
Any help finding the DDB address for an open Net Channel from SBasic would be appreciated!
M.
Question:
How do you find the Device Definition Block (DDB) base-address from SBASIC for the NET device on a QXL under SMSQ/E?
Context:
Whilst still exploring the QNET capabilities across various platforms, I purchased a refurbished QXL2 (8MB, 40MHz osc => CPUCLK @ 20MHz) from Derek a little while ago and am now testing the network.
Derek had fitted an 68RC040 on the card that apparently came from a Q40 - runs very nicely using the latest SMSQ/E v3.33.
My first testing of the network on this little beastie failed between both an iss7 QL as well as my prototype QNET to USB adapter attached to my QPC-running laptop (still a work in progress - see elsewhere...).
Attaching my cheapo digital analyser, I see that the bit-timings are just a bit too short to allow reliable connection with the QL. By adjusting the timings on the QNET/USB adapter, I can read the packets from the QXL OK. The difference is just 5% off - accumulatively (?) half a bit-time after 9-bits (START+8-bits) - and just enough for the receiving QL to misinterpret the STOP bit as the final/MSBit of the sent byte.
QXL also delivers a relatively shorter set of STOP bits, but the QNET protocol takes that in its stride.
See attached screen-captures - the nominal QNET bit-timing is 11.2us, resulting in 100.8us for the 9-bit (partial) frame. The QL meets this, but the equivalent QXL frame runs to only 96us. The sample rate was only 1Mbps, so to the nearest 1us...
I've tested with CACHE_ON and CACHE _OFF - same results.
Referring to the SMSQ/E sources for the QXL Net code, we see that the the timing constants are exposed in the DDB for the NET device, which is handy (though not as handy as the hardware timer approach that we could use on the Q68.)
We can pick-up the Driver Linkage Block address from the Channel Def Block (CDB) for an open NET channel, but I'm struggling to follow all the redirection to find the DDB base address itself from where the NET timing-constants table - ndt_ctab @ $50(a3) - could be read and altered (extended by 5%.)
I'd like to experiment with some adjusted timings in the DDB before attempting to recompile SMSQ for the QXL with the adjusted timings.
Any help finding the DDB address for an open Net Channel from SBasic would be appreciated!
M.