Conexión con el PC por puerto serie

Zerover
Badajoz, julio 2003
Revisión: abril 2004

El planteamiento es hacer un adaptador de clavija del QL a DB9 macho, de forma que el puerto serie del QL fuera como un puerto serie de PC, así se podría conectar al QL cualquier cosa conectable a un PC. Luego sería simplemente cosa de conectar el QL y el PC con un cable nullmodem.

Para que los dos puertos del QL funcionasen como los puertos serie del PC hay que hacer adaptadores diferentes, ya que en el QL los puertos son diferentes. El adaptador para el puerto SER1 valdría también para el puerto RS232 del Spectrum 128K.

Creo que el conector de los puertos serie es BT631W y el de los puertos de joystick es BT630W, aunque no estoy seguro. En Homestead venden unos cables con conector BT631A, que son muy parecidos al BT631W y se pueden arreglar con un cutter. Es buena idea comprar un cable de estos y cortarlo por la mitad, así tenemos dos conectores ya grapados a su cable.

El manual de Sinclair es un poco confuso al explicar las señales de los puertos, pero he podido llegar a la siguiente conclusión:

SER1 (DCE)
PinNombreSentidoSignificado
1GND0V
2TxDentradaEntrada de datos
3RxDsalidaSalida de datos
4DTRentradaVía libre para enviar
5CTSsalidaPreparado para recibir
6V+12V
SER2 (DTE)
PinNombreSentidoSignificado
1GND0V
2TxDsalidaSalida de datos
3RxDentradaEntrada de datos
4DTRsalidaPreparado para recibir
5CTSentradaVía libre para enviar
6V+12V

Con lo que las conexiones para simular un puerto de PC son las siguientes. También he puesto los números correspondientes a un conector de 25 pines.

cable A
DB9 machoBT631W
1no conectado
22
33
46
51
6no conectado
75
84
9no conectado
cable B
DB9 machoBT631W
1no conectado
23
32
46
51
6no conectado
74
85
9no conectado

Los conectores DB9 o DB25 son macho. El cable A es para SER1 y el cable B es para SER2. Una vez que tengo en el QL un puerto como el de un PC, cabe la posibilidad de conectarlo con otro ordenador (un PC o compatible o un QL con este cable) con un cable nullmodem o con un cable transparente, si utilizo un cable transparente en lugar de un nullmodem debo intercambiar los cables A y B y utilizar conectores DB9 hembra.

El resultado de combinar el cable con un nullmodem es el siguiente:


Cable A y nullmodem


Cable B y nullmodem

Las comunicaciones las realizo a 9600 baudios, 8 bits de datos, sin paridad y con 2 bits de parada. Hay que tenerlo en cuenta porque son los parámetros por defecto en el QL, pero no en el PC.

Ejemplo

Este es un programa escrito en QBASIC, para comprobar el buen funcionamiento del cable. Yo lo he probado con los dos tipos de cable en los dos puertos del QL. De paso vas tener tu propia ROM en tu emulador de QL favorito.

PuertoQL$ = "1"  ' puerto serie que se usará en el QL
PuertoPC$ = "1"  ' puerto serie que se usará en el PC

CLS
PRINT "1. Reinicia el QL"
PRINT "2. Escribe en el QL: LRUN ser" + PuertoQL$ + "z <INTRO>"
PRINT "3. Pulsa cualquier tecla en el PC"
DO WHILE INKEY$ = "": LOOP

FicROM$ = "QL.ROM"  ' nombre del fichero ROM en el PC
IniROM# = 0#        ' dirección inicial de la ROM en el QL
TamROM# = 49152#    ' tamaño en bytes de la ROM

OPEN "COM" + PuertoPC$ + ":9600,N,8,2" FOR OUTPUT AS #5 LEN = 1
PRINT #5, "100 BAUD 9600: TRA 0"; CHR$(10);
PRINT #5, "110 OPEN #5,ser" + PuertoQL$; CHR$(10);
PRINT #5, "120 FOR i=" + MID$(STR$(IniROM#), 2) + " TO " + MID$(STR$(IniROM# + TamROM# - 1), 2); CHR$(10);
PRINT #5, "130 PRINT #5,CHR$(PEEK(i));"; CHR$(10);
PRINT #5, "140 END FOR i"; CHR$(10);
PRINT #5, "150 CLOSE #5"; CHR$(10);
PRINT #5, CHR$(26);
CLOSE #5

OPEN "COM" + PuertoPC$ + ":9600,N,8,2" FOR INPUT AS #5 LEN = 1
OPEN FicROM$ FOR OUTPUT AS #6
FOR i# = 1# TO TamROM#
  c$ = INPUT$(1, #5)
  PRINT #6,c$;
  IF i# MOD 128 = 0 THEN PRINT ".";
NEXT i#
PRINT
CLOSE #5: CLOSE #6

Fuentes consultadas


Sinclair QL Recursos en Castellano Alojado en / Hosted at:
Sinclair QL Recursos en Castellano
Sinclair QL Spanish Resources