A> CPS8256 (Interfaz paralelo centronics y serie RS232C)
Vista General
Descripción, Contexto e Historia
Comercializada oficialmente por Amstrad plc en el año 1985 de forma simultánea con el lanzamiento de los modelos Amstrad PCW 8256 y PCW 8512, la interfaz CPS8256 constituye el periférico oficial más importante para la expansión de comunicaciones de este sistema. El diseño base de la gama PCW carecía deliberadamente de puertos de comunicación de propósito general, limitándose a canales propietarios integrados destinados únicamente a su monitor y a su impresora matricial nativa. La CPS8256 fue concebida para subsanar esta limitación, permitiendo la conexión directa de módems telefónicos, ratones serie, digitalizadores e impresoras externas de terceras marcas.
A nivel de documentación histórica, existió una persistente confusión en las revistas especializadas de los años 80 afirmando que el puerto paralelo implementado no cumplía estrictamente con la norma Centronics al operar con una longitud de palabra de 8 bits puros. Esta afirmación es un mito desmentido por el análisis de hardware: el puerto físico es 100% estándar respecto a sus líneas eléctricas y protocolo. El problema real subyacía en el software de procesamiento de textos LocoScript de Locomotive Software, el cual utilizaba un mapa de caracteres interno y formatos de control propietarios; esto provocaba impresiones ilegibles si los documentos no eran exportados o convertidos previamente a formato ASCII estándar antes de ser enviados a través del puerto paralelo.
Arquitectura de Hardware y Componentes de Silicio
Desde la perspectiva de la ingeniería electrónica, la CPS8256 aloja en su placa interna un conjunto de integrados de la familia lógica Zilog (o clones licenciados) perfectamente coordinados para gestionar la E/S asíncrona sin sobrecargar la CPU Z80 principal del ordenador:
- Z80 DART (Dual Asynchronous Receiver/Transmitter) / Z80 SIO: Es el núcleo central de comunicaciones del dispositivo. Físicamente posee dos canales independientes de transmisión/recepción de datos. En el diseño de Amstrad, el Canal A se encuentra cableado por completo para controlar el puerto serie bajo la norma RS-232C, mientras que el Canal B fue ingeniosamente reutilizado para monitorizar y secuenciar las líneas de estado, señales de control y el apretón de manos (handshaking) del puerto paralelo Centronics.
- Z80 CTC (Counter/Timer Circuit): Este integrado temporizador se utiliza de manera exclusiva y dedicada como un generador programable de baudios (Baud Rate Generator). Sus canales internos independientes procesan las frecuencias de reloj necesarias para sincronizar los registros internos del Z80 DART, permitiendo establecer velocidades estables de transmisión de datos.
- Subsistema Convertidor de Voltaje: El bus de expansión lateral del Amstrad PCW solo distribuye voltajes de alimentación de +5V y +12V. Dado que la especificación internacional RS-232C exige de forma obligatoria el uso de umbrales de voltaje simétricos negativos para codificar los estados lógicos de la transmisión serie (evitando ruidos de fondo), la CPS8256 incorpora internamente un circuito inversor/convertidor de tensión dedicado a generar la línea de -12V requerida para las señales de comunicación.
Mapeo de Puertos de Entrada/Salida (I/O) del Z80
La interfaz CPS8256 se decodifica en el bus del sistema ocupando un rango fijo de 8 puertos direccionables que van desde 0E0h hasta 0E7h. El mapa de registros de hardware se desglosa de la siguiente manera:
| Puerto (Hex) |
Puerto (Dec) |
Acceso |
Función y Registro del Sistema |
0E0h |
224 |
R / W |
Z80 DART (Canal A) - Registro de Datos: Lectura de caracteres entrantes en el búfer serie (Rx) y escritura de datos a transmitir (Tx). |
0E1h |
225 |
R / W |
Z80 DART (Canal A) - Registro de Control: Escritura para apuntar a los registros internos (WR0-WR5) y lectura de registros de estado (RR0-RR1). |
0E2h |
226 |
Escritura |
Puerto Paralelo Centronics - Registro de Salida (Data Latch): Almacena y fija el byte de datos de 8 bits en las líneas físicas D0-D7 para la impresora. |
0E3h |
227 |
Lectura |
Puerto Paralelo Centronics - Registro de Estado: Lectura en tiempo real de las líneas lógicas de control físicas (Busy, /Ack, Paper Empty, Select). |
0E4h |
228 |
Escritura |
Z80 CTC (Canal 0) - Temporizador del Transmisor: Fija la constante de tiempo que define el Baud Rate de la transmisión serie (Tx). |
0E5h |
229 |
Escritura |
Z80 CTC (Canal 1) - Temporizador del Receptor: Fija la constante de tiempo que define el Baud Rate de la recepción serie (Rx). |
0E6h |
230 |
— |
Línea reservada por la decodificación / No utilizada por el estándar de Amstrad. |
0E7h |
231 |
Escritura |
Z80 CTC (Canal 3) - Registro de Control general: Inicializa el modo de operación de los contadores y las interrupciones del circuito temporizador. |
Estructura Interna de los Registros del Z80 DART (Puerto 0E1h)
Para la programación directa a bajo nivel (por ejemplo, en código ensamblador Z80 saltándose las llamadas de la BIOS de CP/M), el puerto de control de la CPS8256 opera de forma secuencial. Se escribe en 0E1h el número de registro interno al que se desea acceder y, en el siguiente ciclo de reloj de E/S, se envía o lee el valor en ese mismo puerto. Las funciones críticas de preservación de bits son las siguientes:
- WR3 (Write Register 3 - Configuración del Receptor): Los bits 7 y 6 definen la longitud de los datos recibidos (
11 = 8 bits, 10 = 7 bits, 01 = 6 bits, 00 = 5 bits). El bit 5 activa el control de flujo automático por hardware de la línea CTS/RTS, y el bit 0 habilita físicamente la lógica del receptor de datos (Rx Enable).
- WR4 (Write Register 4 - Parámetros de Transmisión): Los bits 7 y 6 controlan el factor de división del reloj (establecido de forma invariable en
01 para el diseño del PCW). Los bits 3 y 2 definen los bits de parada o Stop Bits (11 = 2 bits, 10 = 1 bit). El bit 1 activa el bit de paridad (1 = Even / Par, 0 = Odd / Impar), y el bit 0 activa o desactiva el chequeo automático de la misma.
- WR5 (Write Register 5 - Configuración del Transmisor): El bit 7 controla el estado de la línea física DTR. Los bits 6 y 5 establecen la longitud de los datos a transmitir (
11 = 8 bits, 10 = 7 bits). El bit 3 habilita la transmisión (Tx Enable), y el bit 1 controla directamente la línea RTS de salida.
- RR0 (Read Register 0 - Registro de Estado de Líneas): Permite verificar mediante polling el estado de la transferencia. El bit 7 monitoriza la condición de Break. El bit 5 refleja el estado lógico de la línea de control CTS, el bit 4 la línea RI (Ring Indicate) y el bit 3 la línea DCD (Carrier Detect). El bit 2 cambia a estado alto (1) cuando el búfer de transmisión física está vacío y listo, mientras que el bit 0 indica que hay un carácter entrante en el búfer listo para lectura.
- RR1 (Read Register 1 - Registro de Errores): Almacena los fallos lógicos acumulados. El bit 6 detecta errores de encuadre (Framing Error), el bit 5 errores de desbordamiento por hardware (Rx Overrun Error) y el bit 4 errores lógicos de paridad (Parity Error).
Conexiones y Patillajes de los Puertos (Pinout)
La CPS8256 expone al exterior dos tipos de conexiones normalizadas internacionalmente con el siguiente cableado electrónico verificado:
1. Puerto Serie (Conector DB25 Macho - Configuración Estándar DTE):
| Pin DB25 |
Señal RS-232C |
Flujo (PCW) |
Función de la Línea Eléctrica |
| Pin 1 |
GND (Shield) |
— |
Masa protectora de chasis y apantallamiento de cable. |
| Pin 2 |
TXD (Transmit Data) |
Salida |
Línea de envío serie de datos binarios asíncronos. |
| Pin 3 |
RXD (Receive Data) |
Entrada |
Línea de recepción serie de datos binarios asíncronos. |
| Pin 4 |
RTS (Request To Send) |
Salida |
Petición del PCW indicando que desea transmitir datos. |
| Pin 5 |
CTS (Clear To Send) |
Entrada |
Señal del periférico autorizando al PCW a enviar datos. |
| Pin 6 |
DSR (Data Set Ready) |
Entrada |
Confirmación de que el dispositivo remoto/módem está encendido. |
| Pin 7 |
GND (Signal Ground) |
— |
Masa de referencia común para todos los voltajes de datos. |
| Pin 8 |
DCD (Data Carrier Detect) |
Entrada |
Detección de tono de portadora telefónica activa (módems). |
| Pin 20 |
DTR (Data Terminal Ready) |
Salida |
Señal que confirma que el Amstrad PCW está activo y operativo. |
| Pin 22 |
RI (Ring Indicator) |
Entrada |
Indicador de detección de señal de llamada telefónica. |
2. Puerto Paralelo (Conector Hembra Amphenol Centronics de 36 pines):
- Pin 1: Señal de control
/STROBE (Salida activa en bajo. Pulso de sincronismo emitido por el PCW para avisar que los datos en el bus D0-D7 son válidos y la impresora debe capturarlos).
- Pines 2 al 9: Bus paralelo de datos de 8 bits (Líneas lógicas de
D0 a D7).
- Pin 10: Señal de control
/ACK (Entrada activa en bajo. Impulso enviado por la impresora indicando que procesó el byte anterior correctamente).
- Pin 11: Señal
BUSY (Entrada activa en alto. Línea que la impresora mantiene en 1 cuando está offline, imprimiendo datos o con el búfer saturado, ordenando detener el envío).
- Pin 12: Señal de error
PE (Paper Empty - Entrada activa en alto que notifica la ausencia física de papel).
- Pin 13: Señal de estado
SLCT (Select - Entrada que verifica que el periférico está seleccionado y en línea).
- Pines 19 al 30: Retornos lógicos de masa a tierra común (Signal Ground / GND).
Soporte del Sistema Operativo e Integración en Emuladores
- Modificación Dinámica de la BIOS: Si la CPS8256 está interconectada físicamente en el bus de expansión lateral en el momento del encendido, la rutina de arranque grabada en el bloque de carga del sistema operativo CP/M Plus la identifica automáticamente. La BIOS modifica dinámicamente el mensaje oficial de bienvenida en el monitor CRT, añadiendo la cadena de texto:
(SIO/Centronics add-on).
- Herramienta MAIL232: El disquete original de utilidades del sistema suministrado por Amstrad incluía el binario ejecutable
MAIL232.COM, una herramienta de comunicaciones que interactuaba directamente con el puerto serie de la CPS8256 convirtiendo al ordenador en un terminal compatible para BBS.
- CP/M Box (Habisoft): El emulador de Habi intercepta de forma completa las operaciones de lectura y escritura destinadas a los puertos lógicos
0E0h-0E7h. Permite desviar todo este flujo de datos hacia puertos COM físicos/virtuales o redirigir el puerto paralelo Centronics hacia archivos de texto o colas de impresión LPT en Windows.
- Joyce (John Elliott): Recrea con absoluta fidelidad de tiempos la lógica interna del integrado Z80 CTC y el comportamiento síncrono del Z80 DART mapeados en su espacio de memoria hardware original.
Documentación y Descargas