Programar puerto serie o puertos de expansion del Spectrum
-
- Amstrad PCW 8256
- Mensajes: 146
- Registrado: 19 Abr 2013, 22:01
- Sistema Favorito: Spectrum +2
- primer_sistema: Spectrum +2
- Gracias dadas: 3 veces
- Gracias recibidas: 2 veces
Programar puerto serie o puertos de expansion del Spectrum
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.
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.
Última edición por REHome el 10 Dic 2013, 01:58, editado 1 vez en total.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Programar puerto serie
REHome escribió:No se programación Basic. ¿Es muy complejo de hacer?
Un cordial saludo.
Yo nunca he neceitado el puerto serie, así que no sé exactamente cómo se hace, pero eso debería venir explicado en el manual de BASIC del 128K. ¿Le has echado un vistazo?
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- zup
- Amiga 2500
- Mensajes: 3012
- Registrado: 04 Sep 2009, 20:07
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo DS/3DS
- Primera consola: Nintendo GameBoy
- Ubicación: Navarra
- Gracias dadas: 86 veces
- Gracias recibidas: 356 veces
- Contactar:
Re: Programar puerto serie
Según el manual (inglés) del +3:
- FORMAT LINE <baudios> para cambiar velocidad.
- FORMAT LPRINT "R" para que LPRINT imprima por puerto serie.
- LPRINT "loquesea" para imprimir.
También puedes usar el canal "p" para mandar datos a la impresora, pero de entrada quizás no quieras complicarte tanto la vida.
Otras cosillas son que el +3 siempre usa hardware flow control, lo que significa que tu cable debería tener también DTR/DSR y CTS/RTS bien conectados (en el manual dicen cortocircuitar los pines 4 y 5). Lo que no veo por ninguna parte es cuántos bits transmite por byte, tipo de paridad y bits de parada (y cómo, si es que se pueden, cambiar estos parámetros).
En cuanto a velocidad... creo que el máximo absoluto teórico eran los 38400, pero algún bug (no sé si de firmware o de hardware) impedía utilizarlos. Me suena que en condiciones "normales" 19200 era el máximo, y en el manual dicen que 9600 es la velocidad por defecto (así que te debería funcionar siempre).
- FORMAT LINE <baudios> para cambiar velocidad.
- FORMAT LPRINT "R" para que LPRINT imprima por puerto serie.
- LPRINT "loquesea" para imprimir.
También puedes usar el canal "p" para mandar datos a la impresora, pero de entrada quizás no quieras complicarte tanto la vida.
Otras cosillas son que el +3 siempre usa hardware flow control, lo que significa que tu cable debería tener también DTR/DSR y CTS/RTS bien conectados (en el manual dicen cortocircuitar los pines 4 y 5). Lo que no veo por ninguna parte es cuántos bits transmite por byte, tipo de paridad y bits de parada (y cómo, si es que se pueden, cambiar estos parámetros).
En cuanto a velocidad... creo que el máximo absoluto teórico eran los 38400, pero algún bug (no sé si de firmware o de hardware) impedía utilizarlos. Me suena que en condiciones "normales" 19200 era el máximo, y en el manual dicen que 9600 es la velocidad por defecto (así que te debería funcionar siempre).
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!
Además vendo cosas!
-
- Amstrad PCW 8256
- Mensajes: 146
- Registrado: 19 Abr 2013, 22:01
- Sistema Favorito: Spectrum +2
- primer_sistema: Spectrum +2
- Gracias dadas: 3 veces
- Gracias recibidas: 2 veces
Re: Programar puerto serie
Hola:
En el manual le he echado el ojo, no te explica demasiado. Como dices, falta la paridad, si son datos asíncronos o síncronos, cosas así. De todas maneras, con el HyperTerminal de Windows lo puedo averiguar haciendo pruebas. Intentaré aprender algo de BASIC para Spectrum, hasta la calculadora CASIO de 32K que tengo usa Basic.
Me imagino que pondré para el puerto serie:
No se como hacerlo en BASIC, voy a leer el manual. Tengo que lograr esto que si se hacer en C#.
Hay que usar while para que leer completo el menú mostrado en pantalla y switch para escoger las opociones.
En resumen de lo que quiero hacer.
En la pantalla debe aparecer el menú escrito arriba. Por cada botón que pulse, por ejemplo la letra "A" del teclado, envía por el puerto serie la letra "A", de paso, en la pantalla del TV debe aparecer este mensaje algo así:
Haz pulsado la letra "A".
Todo esto programado bajo BASIC del Spectrum. Ahora mismo echo un vistazo al libro para manejar bien la introducción de datos como entrada y salida, bueno, salida es PRINT, LPRINT para puerto serie. Los que quieran aprotar código en bienvenido.
Cuando consiga manejar el menú o envío de carácteres, me encargo de la electrónica que mostaré en fotos.
Gracias por reponder.
En el manual le he echado el ojo, no te explica demasiado. Como dices, falta la paridad, si son datos asíncronos o síncronos, cosas así. De todas maneras, con el HyperTerminal de Windows lo puedo averiguar haciendo pruebas. Intentaré aprender algo de BASIC para Spectrum, hasta la calculadora CASIO de 32K que tengo usa Basic.
Me imagino que pondré para el puerto serie:
Código: Seleccionar todo
10 FORMAT LPRINT "R" REM Seleccionar puerto serie.
20 PRINT "Zona de pruebas"
30 PRINT "A) Envía letra A."
30 PRINT "B) Envía letra B."
30 PRINT "C) Envía letra C."
30 PRINT "D) Envía letra D."
40 LPRINT "A"
No se como hacerlo en BASIC, voy a leer el manual. Tengo que lograr esto que si se hacer en C#.
Hay que usar while para que leer completo el menú mostrado en pantalla y switch para escoger las opociones.
En resumen de lo que quiero hacer.
En la pantalla debe aparecer el menú escrito arriba. Por cada botón que pulse, por ejemplo la letra "A" del teclado, envía por el puerto serie la letra "A", de paso, en la pantalla del TV debe aparecer este mensaje algo así:
Haz pulsado la letra "A".
Todo esto programado bajo BASIC del Spectrum. Ahora mismo echo un vistazo al libro para manejar bien la introducción de datos como entrada y salida, bueno, salida es PRINT, LPRINT para puerto serie. Los que quieran aprotar código en bienvenido.
Cuando consiga manejar el menú o envío de carácteres, me encargo de la electrónica que mostaré en fotos.
Gracias por reponder.
- zup
- Amiga 2500
- Mensajes: 3012
- Registrado: 04 Sep 2009, 20:07
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo DS/3DS
- Primera consola: Nintendo GameBoy
- Ubicación: Navarra
- Gracias dadas: 86 veces
- Gracias recibidas: 356 veces
- Contactar:
Re: Programar puerto serie
En el BASIC de Sinclair no existe un "caso de..." (switch), pero se puede simular. La forma más sencilla es poner algo así:
El BASIC de Sinclair tampoco tiene bucles tipo "mientras" o "repetir... hasta". Solo dispones de bucles "para" (FOR) y de la sentencia GO TO. Como siempre, se pueden simular. Te pongo unos cuantos bucles de ejemplo (todo de memorieta):
Bucle FOR (muy diferente del de C), para 100 iteraciones
Se imprimirán los números del 1 al 100 separados por espacios.
Bucle FOR, para los números entre 20 y 40 con paso 4.
Se imprimirán los números 20, 24, 28, 32, 36 y 40 (separados por espacios).
Bucle repetir...hasta.
Primero se inicializa el contador de iteraciones. El bucle "repetir" empieza en la línea 100 y el "hasta" está en la 130. El bucle cuenta cuántas veces tiene una tecla pulsada, y se repite hasta que ha acumulado 15 teclas (NOTA: Si pasas dos veces por el INKEY$ sin soltar la tecla, cuenta como dos pulsaciones). Por último, se imprime el valor de A (y si lo he hecho bien, debería ser 15).
Bucle mientras.
Las líneas 10 y 20 inicializan el contador A y esperan hasta que se pulse una tecla. El bucle "mientras" empieza en la línea 100 y acaba en la 130. Este bucle contará las vueltas que da mientras se esté pulsando la tecla "a". Del bucle se sale saltando a una línea por detrás de la última (la 130). En este caso, como la línea 150 no existe, seguiría por la 200 e imprimiría el contador de vueltas.
Espero no equivocarme en nada.
Código: Seleccionar todo
100 LET A$=INKEY$
110 IF A$="A" OR A$="a" THEN LPRINT "A": GO TO 100
110 IF A$="B" OR A$="b" THEN LPRINT "B": GO TO 100
120 IF A$="C" OR A$="c" THEN LPRINT "C": GO TO 100
130 IF A$="D" OR A$="d" THEN LPRINT "D": GO TO 100
140 GO TO 100
El BASIC de Sinclair tampoco tiene bucles tipo "mientras" o "repetir... hasta". Solo dispones de bucles "para" (FOR) y de la sentencia GO TO. Como siempre, se pueden simular. Te pongo unos cuantos bucles de ejemplo (todo de memorieta):
Bucle FOR (muy diferente del de C), para 100 iteraciones
Código: Seleccionar todo
100 FOR I=1 TO 100
110 PRINT I; " ";
120 NEXT I
Se imprimirán los números del 1 al 100 separados por espacios.
Bucle FOR, para los números entre 20 y 40 con paso 4.
Código: Seleccionar todo
100 FOR I=20 TO 40 STEP 4
110 PRINT I; " ";
120 NEXT I
Se imprimirán los números 20, 24, 28, 32, 36 y 40 (separados por espacios).
Bucle repetir...hasta.
Código: Seleccionar todo
10 LET A=0
100 LET A$=INKEY$
110 IF A$<>"" THEN LET A=A+1
120 PRINT A$;
130 IF A<>15 THEN GO TO 100
200 PRINT AT 10,10;A
Primero se inicializa el contador de iteraciones. El bucle "repetir" empieza en la línea 100 y el "hasta" está en la 130. El bucle cuenta cuántas veces tiene una tecla pulsada, y se repite hasta que ha acumulado 15 teclas (NOTA: Si pasas dos veces por el INKEY$ sin soltar la tecla, cuenta como dos pulsaciones). Por último, se imprime el valor de A (y si lo he hecho bien, debería ser 15).
Bucle mientras.
Código: Seleccionar todo
10 LET A=0
20 PAUSE 0
100 IF A$<>"a" THEN GO TO 150
110 LET A=A+1
120 LET A$=INKEY$
130 GO TO 100
200 PRINT AT 10,10;A
Las líneas 10 y 20 inicializan el contador A y esperan hasta que se pulse una tecla. El bucle "mientras" empieza en la línea 100 y acaba en la 130. Este bucle contará las vueltas que da mientras se esté pulsando la tecla "a". Del bucle se sale saltando a una línea por detrás de la última (la 130). En este caso, como la línea 150 no existe, seguiría por la 200 e imprimiría el contador de vueltas.
Espero no equivocarme en nada.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!
Además vendo cosas!
-
- Amstrad PCW 8256
- Mensajes: 146
- Registrado: 19 Abr 2013, 22:01
- Sistema Favorito: Spectrum +2
- primer_sistema: Spectrum +2
- Gracias dadas: 3 veces
- Gracias recibidas: 2 veces
Re: Programar puerto serie
Hola:
Muchas gracias zup por los códigos de arriba, también los que han aportado información. Tendré que ponerme en forma.
Retornando otra vez al Spectrum (por fin reparado del todo) quiero hacer un menú como indican arriba. Me he olvidado hasta de lo más básico y debo aprender de nuevo. Para los que tienen soltura en basic 128 K, quieran ayudar y hacer códigos, mi propuesta es esta. Hacer un buen menú principal del Spectrum, consiste en controlar le puerto serie del Spectrum para salidas y entradas de datos. En otras palabras, para jugar con él, curiosidad y hacer cosas nuevas que al parecer no usan mucho por estos foros el puerto serie, por ahora y que yo sepa.
Voy a controlar el puerto serie con un microcontrolador, usaré un display de 16x2 para probar y otro más grande 20x4. Por ahora estoy haciendo un simulador y funciona desde el PIC.

Preguntas en el spoiler.
Código en asm para el PIC16F887 para los que le pican la curiosidad. (Aún en proceso de desarrollo).
Sólo necesito mientras estoy entretenido en programar asm para el PIC, buscar tiendas on-line para comprar componentes necesarios para este proyecto. Por otro lado, para aquellas que sepan muy bien programar basic para Spectrum 128 K se pueden animar en diseñar un buen menú principal cuyas carácterísteicas les pediré ahora.
Spectrum debe tener un menú principal, se lo muestro en forma de diagrama de flujos para hacer una idea, en él se muestra algo así:
Los valores que se cambian en tiempo real como indican abajo son los 1, los 0 y los mensajes de avisos y alarmas cuando se envía desde el PIC al Spectrum algún dato por puerto serie. Así que Spectrum parece que estará siempre leyendo.
Los que deseen programar el Spectrum, pueden empezar por el menú principal y la opción B). Cuando esté listo esa parte, haré pruebas sólidas con el PIC y les mostarré fotos y vídeos. Ahora tengo las herramientas adecuadas, la mayoría para practicar, solo me faltan algunos componentes como LCD 20x4 verde, por ahora me conformo con el simulador de PIC y el LCD de 16x2 en azul.
Ver foto en este spoiler, solo me hace falta el menú del Spectrum para empezar.
Me falta por explicar cada menú.
Ánimos y adelante...
Muchas gracias zup por los códigos de arriba, también los que han aportado información. Tendré que ponerme en forma.
Retornando otra vez al Spectrum (por fin reparado del todo) quiero hacer un menú como indican arriba. Me he olvidado hasta de lo más básico y debo aprender de nuevo. Para los que tienen soltura en basic 128 K, quieran ayudar y hacer códigos, mi propuesta es esta. Hacer un buen menú principal del Spectrum, consiste en controlar le puerto serie del Spectrum para salidas y entradas de datos. En otras palabras, para jugar con él, curiosidad y hacer cosas nuevas que al parecer no usan mucho por estos foros el puerto serie, por ahora y que yo sepa.

Voy a controlar el puerto serie con un microcontrolador, usaré un display de 16x2 para probar y otro más grande 20x4. Por ahora estoy haciendo un simulador y funciona desde el PIC.

Preguntas en el spoiler.
Spoiler: Mostrar
Código en asm para el PIC16F887 para los que le pican la curiosidad. (Aún en proceso de desarrollo).
Spoiler: Mostrar
Sólo necesito mientras estoy entretenido en programar asm para el PIC, buscar tiendas on-line para comprar componentes necesarios para este proyecto. Por otro lado, para aquellas que sepan muy bien programar basic para Spectrum 128 K se pueden animar en diseñar un buen menú principal cuyas carácterísteicas les pediré ahora.
Spectrum debe tener un menú principal, se lo muestro en forma de diagrama de flujos para hacer una idea, en él se muestra algo así:
Spoiler: Mostrar
Los valores que se cambian en tiempo real como indican abajo son los 1, los 0 y los mensajes de avisos y alarmas cuando se envía desde el PIC al Spectrum algún dato por puerto serie. Así que Spectrum parece que estará siempre leyendo.
Spoiler: Mostrar
Los que deseen programar el Spectrum, pueden empezar por el menú principal y la opción B). Cuando esté listo esa parte, haré pruebas sólidas con el PIC y les mostarré fotos y vídeos. Ahora tengo las herramientas adecuadas, la mayoría para practicar, solo me faltan algunos componentes como LCD 20x4 verde, por ahora me conformo con el simulador de PIC y el LCD de 16x2 en azul.
Ver foto en este spoiler, solo me hace falta el menú del Spectrum para empezar.
Spoiler: Mostrar
Me falta por explicar cada menú.
Ánimos y adelante...
Última edición por REHome el 08 Dic 2013, 12:35, editado 4 veces en total.
- Zardoz
- MSX Turbo R
- Mensajes: 283
- Registrado: 09 Sep 2013, 19:04
- Sistema Favorito: (Otro)
- primer_sistema: (Otro)
- consola_favorita: Nintendo NES/Clónica
- Primera consola: Nintendo NES/Clónica
- Ubicación: Madrid
- Contactar:
Re: Programar puerto serie
Código: Seleccionar todo
110 IF A$="A" OR A$="a" THEN LPRINT "A": GO TO 100
Siempre había asumido que de ser la condición falsa, ejecutaría el GOTO ...
REHome escribió:Código en asm para el PIC16F887 para los que le pican la curiosidad. (Aún en proceso de desarrollo).
Hay que tener ganas para programar ASM de los PIC

-
- Amstrad PCW 8256
- Mensajes: 146
- Registrado: 19 Abr 2013, 22:01
- Sistema Favorito: Spectrum +2
- primer_sistema: Spectrum +2
- Gracias dadas: 3 veces
- Gracias recibidas: 2 veces
Re: Programar puerto serie
Hola Zardoz:
Hoy tengo ganas para todo, tanto asm para PIC y Basic para ZX Spectrum +2 de 128 K para hacer cosas con él.
Aprender rápido el Basic para Spectrum solo para estas navidades del 2013 no me da tiempo, ejejjejej. Por eso necesito colaboración.
Explicaré paso a paso que hay que hacer en cada menú del Spectrum. Por ahora me centraré en dos, el menú principal y la opción [2] o la B) que antes la llamaba así.
Nada más encender el Spectrum, en realidad cargar la cinta, muestra el menú principal de abajo.
Al pulsar el botón número [2], accede directamente a otro menú llamado:
Lo que hay que hacer aquí es, que los 1 y los 0 son datos que detecta en el puerto serie del ZX Spectrum +2A 128 K, significa activado para el 1 y desactivado para el 0. RL1 significa Relé 1 que controla el PIC. La imagen de abajo es una placa que en el fututo diseñaré algo similar, con los 8 relés.
Los mensajes de avisos llegan desde el PIC, al igual que los unos y ceros.
También para abreviar se puede hacer así:
Puedes diseñar la primera parte del programa como quieran, incluido la presentación, sólo indico la idea, cada uno con su imaginación. El problema que tengo ahora, ¿quién está dispuesto a codear esta aventura un poco dura?
Un saludo.
Hoy tengo ganas para todo, tanto asm para PIC y Basic para ZX Spectrum +2 de 128 K para hacer cosas con él.



Aprender rápido el Basic para Spectrum solo para estas navidades del 2013 no me da tiempo, ejejjejej. Por eso necesito colaboración.
Explicaré paso a paso que hay que hacer en cada menú del Spectrum. Por ahora me centraré en dos, el menú principal y la opción [2] o la B) que antes la llamaba así.
Spoiler: Mostrar
Nada más encender el Spectrum, en realidad cargar la cinta, muestra el menú principal de abajo.
********** Menú principal **********
[1] Sistema de monitorización.
[2] Sistema de gobierno desde Spectrum.
[3] Modo sistema de gobierno gráfico .
[4] Test.
[5] Información.
[6] Ayuda.
Al pulsar el botón número [2], accede directamente a otro menú llamado:
*** Sistema de gobierno desde Spectrum ***
RL1 RL2 RL3 RL4 RL5 RL6 RL7 RL8
0 1 1 0 1 0 1 0
Mensajes de avisos o alarmas
Para salir pulse "P".
Lo que hay que hacer aquí es, que los 1 y los 0 son datos que detecta en el puerto serie del ZX Spectrum +2A 128 K, significa activado para el 1 y desactivado para el 0. RL1 significa Relé 1 que controla el PIC. La imagen de abajo es una placa que en el fututo diseñaré algo similar, con los 8 relés.
Spoiler: Mostrar
Los mensajes de avisos llegan desde el PIC, al igual que los unos y ceros.
También para abreviar se puede hacer así:
*** Sistema de gobierno desde Spectrum ***
1 2 3 4 5 6 7 8 RL
0 1 1 0 1 0 1 0 OUT
Mensajes de avisos o alarmas
Para salir pulse "P".
Puedes diseñar la primera parte del programa como quieran, incluido la presentación, sólo indico la idea, cada uno con su imaginación. El problema que tengo ahora, ¿quién está dispuesto a codear esta aventura un poco dura?
Un saludo.
- scooter
- Amiga 1200
- Mensajes: 1031
- Registrado: 17 Jul 2012, 09:25
- primer_sistema: C64
- Ubicación: Alicante
Re: Programar puerto serie
Ya puestos a hacer el boticario yo le pondria una uart hardware, eso facilita muuuuuucho ; con un 8052 a 1mip he comunicado sin pegas a 115kbps todo lo que sean uarts software es tumbar el sistema mientras comunica.
-
- Amstrad PCW 8256
- Mensajes: 146
- Registrado: 19 Abr 2013, 22:01
- Sistema Favorito: Spectrum +2
- primer_sistema: Spectrum +2
- Gracias dadas: 3 veces
- Gracias recibidas: 2 veces
Re: Programar puerto serie
Buenas:
No te preocupes en la electrónica. Llevará la comunicación hacia el PIC <--MAX232--> Spectrum la electrónica necesaria. La UART se hará físicamente, no te preocupes.
He hecho pruebas con el PIC16F84A, 16F88, 16F886, 16F887, 18F2550 y el 18F4550, todos de maravilla. Me falta Arduino, al tener la placa haré pruebas, incluyendo Raspberry Pi.
Vídeos:
Voy a intentar hacer la primera pantalla del menú principal para Spectrum.
Edito:
Menú principal, soso pero se ve y se entiende. Lo que tengo que hacer algo en la señal de vídeo, ya que uso un cable directamente al vídeo amarillo del RCA.

El programa hecho pero no es funcional. Debo aprender al menos como cambio de pantalla una a otra y luego volver, así poder hacer fucniones después.

Por cierto, al guardar el programa, escribí al final de código:
save "RS232"
Al recuperarlo, no encontró nada en la cinta, solo otros programas ya realizados hace tiempo. Que me recuerde alguien si es con save como se guarda. Con cargar es LOAD "RS232". Otra cosa. ¿Cómo se interrumpe un programa?
Cualquier ayuda es bienvenida.
PD: ZX Spectrum: Grabar juegos en cintas de cassette con Spectaculator y ZXSpin
-- Actualizado 10 Dic 2013, 02:54 --
Hola de nuevo.
No se programar para Spectrum pero si para C# y ensamblador para PIC, jejejejeje. He hecho como un emulador no funcional para le puerto serie (cosa que si me animo lo haré funcional en todos los aspectos pero debo dejarlo bonito).
En el Spectrum veo que tiene "E/S EXPANSION", puerto paralelo, joyStick, así que lo miraré a fondo que se pueden hacer cosillas, cualquier sugerencia es bienvenida, estoy a tiempo para recibir ideas.

El ejecutable quien quiera mirarlo a fondo me lo dicen y se los paso por correo.
Hecho bajo Visual C# 2013 Express.
Basic + del Spectrum por ahora me parece complicado hacer menús. Quien se anime a echarme una mano o dar pistas.
Un saludo.
No te preocupes en la electrónica. Llevará la comunicación hacia el PIC <--MAX232--> Spectrum la electrónica necesaria. La UART se hará físicamente, no te preocupes.
He hecho pruebas con el PIC16F84A, 16F88, 16F886, 16F887, 18F2550 y el 18F4550, todos de maravilla. Me falta Arduino, al tener la placa haré pruebas, incluyendo Raspberry Pi.
Vídeos:
Spoiler: Mostrar
Voy a intentar hacer la primera pantalla del menú principal para Spectrum.
Edito:
Menú principal, soso pero se ve y se entiende. Lo que tengo que hacer algo en la señal de vídeo, ya que uso un cable directamente al vídeo amarillo del RCA.

El programa hecho pero no es funcional. Debo aprender al menos como cambio de pantalla una a otra y luego volver, así poder hacer fucniones después.

Por cierto, al guardar el programa, escribí al final de código:
save "RS232"
Al recuperarlo, no encontró nada en la cinta, solo otros programas ya realizados hace tiempo. Que me recuerde alguien si es con save como se guarda. Con cargar es LOAD "RS232". Otra cosa. ¿Cómo se interrumpe un programa?
Cualquier ayuda es bienvenida.
PD: ZX Spectrum: Grabar juegos en cintas de cassette con Spectaculator y ZXSpin
-- Actualizado 10 Dic 2013, 02:54 --
Hola de nuevo.
No se programar para Spectrum pero si para C# y ensamblador para PIC, jejejejeje. He hecho como un emulador no funcional para le puerto serie (cosa que si me animo lo haré funcional en todos los aspectos pero debo dejarlo bonito).
En el Spectrum veo que tiene "E/S EXPANSION", puerto paralelo, joyStick, así que lo miraré a fondo que se pueden hacer cosillas, cualquier sugerencia es bienvenida, estoy a tiempo para recibir ideas.

El ejecutable quien quiera mirarlo a fondo me lo dicen y se los paso por correo.
Hecho bajo Visual C# 2013 Express.
Código: Seleccionar todo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Spectrum_Menu
{
class Program
{
static void Main(string[] args)
{
// Muestra título de la ventana del programa.
Console.Title = "ZX Spectrum +2A 128 K (Sinclair) - Zona de Pruebas";
Console.BackgroundColor = ConsoleColor.White; // Fondo de las letras blanco.
Console.ForegroundColor = ConsoleColor.Black;
while (true)
{
Console.Clear(); // Limpia la pantalla y se pone blanco indicado arriba.
Console.WriteLine(@"********** MENÚ PRINCIPAL **********
(1) Sistema de monitorización.
(2) Sistema de gobierno desde ZX Spectrum.
(3) Modo sistema de gobierno gráfico.
(4) Test.
(5) Información.
(6) Ayuda.
");
string menu = Console.ReadKey(true).KeyChar.ToString(); // Lectura del teclado para las opciones del menú.
int switch_menu;
if (!int.TryParse(menu, out switch_menu)) continue;
Console.Clear();
switch (switch_menu)
{
case 1:
Console.WriteLine(@"****************** Sistema de monitorización ******************
IN 1 IN2 IN 3 IN 4 IN 5 IN 6 IN 7 IN 8
---- ---- ---- ---- ---- ---- ---- ----
0 1 0 0 1 0 0 1
Para salir pulse 'P'.
");
break;
case 2:
Console.WriteLine(@"*** Sistema de gobierno desde Spectrum ***
RL1 RL2 RL3 RL4 RL5 RL6 RL7 RL8
0 1 1 0 1 0 1 0
Mensajes de avisos o alarmas
Para salir pulse 'P'.
");
break;
case 3:
Console.WriteLine(@"**** Modo sistema de gobierno gráfico ****
");
break;
case 4:
Console.WriteLine(@"**************** Test ****************
Todo lo que escribas aquí se enviará por puerto
serie y se visualiza en el LCD.
Para salir pulsa la letra 'P'.
");
break;
case 5:
Console.WriteLine(@"************* Información *************
Desde que pulse 'I' o 'i' muestra información
en forma de texto leído desde Spectrum y el
microcontrolador como versión del programa,
firmware, contacto, foro de información como
Zona de Pruebas, etc.
Lo que se nos ocurra. 'P para salir'.
");
break;
case 6:
Console.WriteLine(@"*************** Ayuda ***************
En esta ventana se mostrarán textos y
explicaciones de ayudas sobre los menús.
Ya lo explicaré más adelante.
");
break;
default:
Console.WriteLine("Pulsa solo 'P' o 'p' para salir al menú principal");
break;
}
while (Console.ReadKey(true).Key != ConsoleKey.P) ;
}
}
}
}
Basic + del Spectrum por ahora me parece complicado hacer menús. Quien se anime a echarme una mano o dar pistas.
Un saludo.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados