lunes, 17 de febrero de 2025

Cables de Video para Commodore VIC-20, C64, C16, C128

Ampliado el  18/02/25 en color azul
 
El Commodore VIC-20 disponía de un conector de 5 pines para la salida de video. Los primeros Commodore 16 lo usaron igualmente, pero en el C-64 solo lo tuvieron las primeras unidades, luego se amplió a un conector de 8 pines en U (cuidado que hay otro conector de 8 pines que van en círculo y no se puede usar). Este conector está presente también en el C128, que dispone de otro con señales de color. Como las señales de los primeros 5 pines eran casi las mismas, y solo usamos unas pocas en nuestros cables, y además la posición física de los pines del DIN-5 coinciden con las inferiores del DIN-8 y un conector DIN-5 se puede enchufar en un DIN-8, por lo que se puede usar un cable de 5 pines en cualquier modelo.
 
Los C64 no disponen de salidas RGB en el conector, solo de S-Video y AV, por lo que no se gana nada usando un conector SCART, pero si alguno lo quiere montar porque su tele no tenga AV, que me pase un mensaje y añadiré ese cable en la entrada.
 
Dependiendo del modelo de C64 la señal de +5V del pin 7 pueden faltar, en concreto los modelos C64 y C64A no lo llevan aunque los C64B y C64E si tienen la señal, pero las tres básicas para AV, Sonido y Masa están siempre presentes.

CABLE AV

Pongo los esquemas tanto para conector de 5 como para conector de 8 pines, pero si usáis el de 8 recordar que hay dos modelos de conector, uno con los pines en U y otro con pines en círculo, debéis usar el de pines en U.
 
En el esquema del apartado siguiente para el Euroconector he unido el pin 5 con masa, esto es opcional, según comentan mejora la calidad de salida del Audio al fijar a masa la entrada de sonido.

Cable AV a través del Euroconector

Si alguno no dispone de entradas AV pero si de Euroconector (también llamado Scart), puede usar este cable, no ganará en calidad pues es AV igualmente, solo cambia el cable que usamos. 


Cable S-VIDEO

Es el cable preferido en USA, recordar que no es Super-Video sino Separated-Video (video separado) pues lleva las señales de luna y croma por dos cables separado, mientras que el AV los lleva juntos por uno solo. La diferencia de calidad entre ambos es inapreciable, pues los televisores con S-Video suelen usar un condensador para unir Luma y Croma en su entrada, por lo que al final la señal que procesan es la misma. Cuidado que este sistema no lleva el sonido, solo el Video, por tanto hay que usar otro cable para conectarlo a una fuente externa, por lo que no tiene mucho sentido realmente ni aporta nada sobre el AV.


 

sábado, 16 de noviembre de 2024

ZB2SB. Conversor de Basic de los ZX al Super Basic del QL (III): Analizadór léxico segunda parte: Extractor de Tokens

Índice de entradas del conversor


Expresiones Regulares, Gramáticas regulares, Autómatas finitos, Autómatas de Pila, Máquinas de Turing, estos son algunas de las cosas que se emplean en la descomposición en tokens de los programas. Como he dicho que no voy a ser muy académico (y también porque no existen el manejo de expresiones regulares en SuperBASIC), voy a desarrollar la descomposición de Tokens usando un pequeño autómata.

No os voy a aburriros explicando lo que son los autómatas y como se programan, aunque es un tema importante en Informática, por ejemplo si leéis el manual del Kenbak-1 veréis que John Blankenbaker lo planteó como un autómata. De todas formas hay información de sobra en Internet sobre estos temas, y centrándonos en lo que estoy desarrollando podéis consultar libros sobre Compiladores, que hay muchos, de los cuales os recomiendo los dos que más se usan en las universidades sobre la materia: "Compiladores, principios, técnicas y herramientas" de Aho, Sethi y Ullman, también llamado "El libro del dragón" por su portada, de los varios que he leído creo que es el más claro y que más me gustó, el otro es "Construcción de compiladores. Principios y práctica" de Louden, aunque personalmente me gusta menos por no explicar tan bien como el otro, pero la parte de generación de código creo que es un poco mejor.

En lugar de eso voy a hacer un autómata muy sencillo que será fácilmente comprensible sin necesidad de muchas explicaciones. Así gano dos cosas, que no os canséis y no sobrecargar al QL de procesos, ya que aunque dispone (para mi) del mejor Basic con diferencia de las máquinas de la época, mi muy querido QL nunca se ha lucido por su velocidad. Por ser honestos, es superado por el BBC Basic, pero este tuvo una evolución importante con varias versiones, lo que no ocurrió con SuperBasic. Ambos fueron mucho mejor que los basados en Microsoft BASIC, de los que la mejor versión fue el MSX Basic, y desde luego mucho mejores que el GWBasic del MS.DOS en los PC. 

El BBC fue desarrollado por uno/una de los grandes de la informática, Roger Wilson, que luego cambió de sexo y hoy es Sophie Wilson (lo que personalmente me parece estupendo el que cada uno haga lo que desee, menciono ambos nombres por si los buscáis en Internet), que no solo desarrolló el BBC Micro y su Basic, sino que desarrolló para IBM los primeros procesadores RISC, luego usados en estaciones de trabajo de Acorn, unas máquinas estupendas pero poco conocidas.

Volviendo al tema, este es mi autómata:

tipo = Get_Tipo(c$)
SELect ON tipo
  = TIPONUM : Extrae_Numero(c$)
  = TIPOALFA : Extrae_Identificador(c$)
  = TIPOCADENA : Extrae_Cadena(c$)
  = TIPOSEPARADOR: Extrae_Separador(c$)
  = TIPOOPERADOR : Extrae_Operador(c$)
  = TIPOOTRO : Extrae_Desconocido(c$)
END SELect

 

Como vemos toma un carácter de la línea que estamos analizando, mira de que tipo es, y según este tipo va a llamar al proceso que extrae el token de ese tipo de la cadena, con la salvedad de que cuando extrae un identificador este puede ser: 

  • Un comando del BASIC. En este caso si además el comando es el comentario extrae también el resto de la cadena como texto del comentario.
  • En otro caso será el nombre de una variable.

He desarrollado un módulo para probar la extracción de Tokens del analizador léxico de forma independiente al resto del desarrollo, podéis descargarlo desde aquí

En la siguiente entrada ya entramos en la conversión, ampliaré este módulo para incluir las pruebas de conversión, ya más adelante uniré el módulo de lectura de líneas con este para comenzar a analizar programas.

Para poder convertir haré una mejora de la parte donde identifico los comandos del ZX Basic, que ahora mismo es una cadena de caracteres con estos separador por un espacio, la tengo que convertir en una tabla que identifique el comando y el proceso que se usará para convertirlo.

martes, 12 de noviembre de 2024

ZB2SB. Conversor de Basic de los ZX al Super Basic del QL. Indice

Segundo intento de desarrollo, a ver si esta vez se completa

Este proceso está muy desordenado, ya que he ido alante y atrás todo el rato cambiando el planteamiento de las cosas varias veces, además de ir añadiendo mejoras y simplificando temas, pero es lo que hay cuando no haces un estudio completo antes de empezar, ir programando sobre la marcha tiene estos temas.


01. ZB2SB. Conversor de Basic de los ZX al Super Basic del QL (Reinicio)
02. Definir el Lenguaje de origen
03. DIRECTOR DEL PROCESO
04. Estructuras de datos
05. LEXER. ANALIZADOR LÉXICO. Estructuras de datos para el Lexer
06. LEXER. ANALIZADOR LÉXICO. Planteamiento
07. Un nuevo comienzo
08. PARSER. Analizador semántico
09. GENERADOR de código en SuperBASIC 
10. Otra vuelta atrás (y van...)
11. Mas mejoras (los cambios no acaban nunca)
12. Cambio de idea en los temas especiales

 


Primer intento de desarrollo, fallido, pero quizá te interese ver alguna cosa

01. Introducción
02. Analizador Léxico primera parte: Lectura de líneas 
03. Analizador Léxico segunda parte: Extractor de Tokens