Dilwyn Jones wrote:

...
I think (the article doesn't say this) that pin 6 of a QL serial port plug is the one nearest the latching pin. It is not connected for the purposes of these cables and file transfer, but I think it carries +12v, so might cause some damage to interfaces if wired wrongly, although you could test my assumption by using a tester to determine which pin is +12V since that will identify pin 6.

Just to confirm, pin 6 (+12v to be used to assert any control line, eg DSR, DCD) is next to the clip.


Although ser2 pin 4 is shown in the QL manual as DTR, Tony Firshman told me a while back it is more like an RTS signal as far as making these cables is concerned. You can then see that making up a serial cable is a simple matter of cross connecting the relevant signals, i.e. RxD to TxD and vice versa, and RTS to CTS and vice versa, and connecting the two ground signal lines together.

The DSR/DTR & RTS/CTS handshake pairs have always been something of a confusion to me. As far as I understand these lines, they are:

DTR - Data Terminal Ready: terminal is ready for input
DSR - Data Set Ready: .... modem is ready to send data to terminal
RTS - Request To Send: ... terminal wants to send data
CTS - Clear To Send: ..... modem is ready to receive data from terminal.

So logically, crossing RTS/CTS on a DTE-DTE null modem cable makes no sense: the Request To Send from one terminal is connected to the Clear To Send on the other; or to put it another way:

If terminal A wants to send data (raises RTS), terminal B gets the signal telling it it's ok for it to send data to terminal A (CTS goes high), and terminal A gets no signal that terminal B is ready to input the data terminal A wants to send to terminal B - that would happen the moment terminal B decided it wanted to send some data to terminal A and raised its RTS line (causing terminal A's CTS line to go high).

The serial ports on the QL were rather a cludge. They are both split into two halves, with the 8749 second processor handling the input side of both, and the ZX8302 ULA handling the output side of both.

Output of data from the QL is fairly straightforward:

The ZX8302 assumes the relevant request line is raised (use the +12v line if necessary) and awaits clearance on the relevant control line (Ser1.DTR or Ser2.CTS). Then it sends the data on the relevant data line (Ser1.RXD or Ser2.TXD) - shifting out the bits at the baud rate.

Input of data to the QL is rather more complicated:

The input lines (Ser1.TXD & Ser2.RXD) are tied (via logic gates) together and appear on one data pin (port) of the processor (and the interrupt line). The start bit causes the processor to interrupt, which then shifts the data in at the relevant baud rate (I presume). Thus ONLY ONE serial port can receive data at any one time.

Hardware handshaking is [almost] vital to ensure correct input of serial data - especially if both ports are being used. The way it is done is that the 8749 asserts the ready for input line (Ser1.CTS & Ser2.DTR - of the port on which it is expecting data) for a short time and then clears it. If both serial ports are open, it then asserts the other one. This flip-flop nature of the control line(s) can be observed by a LED serial port tester.

Thus, the QL uses the following:

Ser1.CTS & Ser2.DTR to control when it is ready to receive input
Ser1.TXD & Ser2.RXD to recive input from another device
Ser1.DTR & Ser2.CTS to control when another device is ready to receive input
Ser1.RXD & Ser2.TXD to send output to another device

As the QL uses non standard connectors, perhaps it'd be better to rename the port pins:

Pin    Ser1    Ser2
 1      GND     GND       GND = signal GrouND
 2      DTQ     DFQ       DTQ = Data To QL
 3      DFQ     DTQ       DFQ = Data From QL
 4      RFF     RFT       RFF = Ready For From
 5      RFT     RFF       RFT = Ready For To
 6      +12     +12

RFF is set by the other device saying it's ready for data From the QL
RFT is set by the QL saying it's ready for data To the QL.

Thus a QL to QL cable would cross DTQ/DFQ and RFF/RFT (for Ser1 to Ser2, this crossing would occur with a straight through 1-1, 2-2, 3-3, 4-4, 5-5 cable; with Ser1 to Ser1, or Ser2 to Ser2, the crossing would occur with crossed pairs: 1-1, 2-3, 3-2, 4-5, 5-4).

Thus, I think a cable from the QL to a PC would connect:

   DTQ -- TXD = Data transmitted To QL
   DFQ -- RXD = Data received From QL
   RFT -- CTS = Clear To Send To QL
   RFF -- DTR = Ready to receive data From QL*
   GND -- GND = Signal ground

*DTR would probably always be asserted by a PC as their serial ports can usually handle input at any time; thus the RFF control line could be looped to the +12 line (pin 6) so that the QL always thinks it can send data. The only vital line is the RFT control line - the QL _MUST_ be allowed to control the flow of data to the serial port otherwise framing, or other errors will occur.


Is this a load of twaddle, or does it make any sense?

_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm

Reply via email to