Programar puerto serie o puertos de expansion del Spectrum

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Programar puerto serie o puertos de expansion del Spectrum

Notapor REHome el Mie Abr 16, 2014 4:05 pm

Hola:

Tengo un ZX Spectrum +2A 128K negro. Veo que tiene el puerto serie. Para comunicarlo con los demás dispositivos externo e incluso enviar mensajes por ahí para comunicarlo con otro Spectrum por poner un ejemplo.

Sólo necesito usar el pin 2, 3 y masa, con eso me basta para hacer experimento con él. Quiero hacerles unas preguntas.

1) El estandar en baudios del puerto RS232 es 9600 baudios. ¿Es capaz el Spectrum alcanzar esa velocidad?

2) ¿Qué velocidad alcanza como máximo?

Se que es para imprimir en la impresora, mi idea es enviar carácteres a la salida del RS232 del Spectrum, por ejemplo una letra como la "A", o que mensaje que diga: "Hola mundo".

Quiero hacer un ejemplo en Basic 128K que en pantalla mueste 4 letras, por ejemplo.

Pulse estas teclas:
A) Envía la letra "A".
B) Envía la letra "B".
C) Envía la letra "C".
D) Envía la letra "D".

En pantalla, abajo o arriba que ponga un texto que muestre. "Haz pulsado la tecla C".

No se programación Basic. ¿Es muy complejo de hacer?

Un cordial saludo.
REHome
rst 0
 
Mensajes: 2
Registrado: Sab Abr 20, 2013 12:30 pm

Re: Programar puerto serie o puertos de expansion del Spectr

Notapor zup el Mie Abr 16, 2014 5:33 pm

REHome escribió:1) El estandar en baudios del puerto RS232 es 9600 baudios. ¿Es capaz el Spectrum alcanzar esa velocidad?


Sí.

REHome escribió:2) ¿Qué velocidad alcanza como máximo?


Aquí empezamos las malas noticias. El Spectrum no tiene UART ni nada que se le parezca, el puerto serie en realidad son dos entradas y dos salidas digitales. El Spectrum emula el puerto serie mandando bits a intervalos ¿cuidadosamente? temporizados, para coincidir con las diferentes velocidades del puerto serie.

La velocidad máxima teórica debería ser 38400 baudios, pero hay bugs en la ROM que impiden alcanzarla. De hecho, creo que era peliagudo alcanzar los 19200... con 9600 debería ser seguro.

REHome escribió:Se que es para imprimir en la impresora, mi idea es enviar carácteres a la salida del RS232 del Spectrum, por ejemplo una letra como la "A", o que mensaje que diga: "Hola mundo".


En un Spectrum +3 deberías ejecutar:

Código: Seleccionar todo
10 FORMAT LPRINT 9600
20 FORMAT LPRINT "R"
30 LPRINT "Hola mundo"


La primera línea selecciona velocidad, la segunda dice que vas a imprimir por le puerto serie y la tercera imprime el mensaje. Ten en cuenta que el Spectrum no tiene control de flujo, y tampoco tengo claro si se pueden leer datos del RS232 desde BASIC. Si solo vas a sacar datos hacia afuera, con cuidar de no llenar el buffer de la impresora vas que te matas; si necesitas meter datos al Spectrum, tendrás que usar los canales.

REHome escribió:Quiero hacer un ejemplo en Basic 128K que en pantalla mueste 4 letras, por ejemplo.

Pulse estas teclas:
A) Envía la letra "A".
B) Envía la letra "B".
C) Envía la letra "C".
D) Envía la letra "D".

En pantalla, abajo o arriba que ponga un texto que muestre. "Haz pulsado la tecla C".

No se programación Basic. ¿Es muy complejo de hacer?


La cosa sería más o menos así, de una manera bastante chapucera:

Código: Seleccionar todo
10 PRINT "Pulsa una tecla"
20 LET A$=INKEY$
30 IF A$="A" THEN PRINT "La A"
40 IF A$="B" THEN PRINT "La B"
50 IF A$="C" THEN PRINT "La C"
60 IF A$="D" THEN PRINT "La D"
70 GO TO 20


Imprimimos el menú (línea 10), leemos una tecla y la guardamos en A$ (línea 20). Las líneas 30 a 60 imprimen un mensaje según hayamos pulsado una tecla u otra (atención: la a y la A son cosas diferentes) y en la 70 volvemos arriba para pedir otra tecla.

Esta es otra versión algo mejorada (y creo más rápida). Es muy sencillito, así que esta vez no hay explicaciones:

Código: Seleccionar todo
10 PRINT "Pulsa una tecla"
20 LET A$=INKEY$
30 IF A$>="A" AND A$<="D" THEN PRINT "La ";A$
40 GO TO 20
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start...
zup
Freddy Hardest
 
Mensajes: 641
Registrado: Vie Ago 15, 2008 2:43 pm


Volver a Programación y nuevos desarrollos

¿Quién está conectado?

Usuarios navegando este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron