Voy a comprar uno de estos http://www.old-computers.com/museum/computer.asp?st=1&c=446
Estoy planeando construir un servidor dentro de él. Y estaba pensando en usar el monitor CGA incorporado como una pantalla de estado (estilo LCDInfo, o lo que sea que usan los geeks geniales hoy en día). La pantalla es monocromática de color ámbar, por lo que probablemente se parecería un poco a las pantallas Planar EL que algunos han estado usando en sus modificaciones. Y quiero usar un Arduino (o algo parecido) como solución de middleware... PC -> Arduino -> Pantalla
He estado revisando un poco, y CGA es una señal RGBI que usa comunicaciones TTL. 4 líneas (RGB + Intensidad), combinado con HSYNC (15.75KHz) y VSYNC (60Hz). Las 4 "entradas de color" son lógicamente activadas o desactivadas. La combinación de estos genera hasta 16 colores. Sin embargo, como se trata de una pantalla ámbar, probablemente sería más fácil comenzar con "todo alto" o "todo bajo"... Blanco y negro.
Entonces, el problema es el siguiente... Probablemente podría cablear y codificar el arduino para encender y apagar las líneas TTL, pero no estoy seguro de lo que hago con las entradas HSYNC y VSYNC. Y cómo cronometrar los giros TTL para que se correspondan con los píxeles de la pantalla. (La resolución CGA estándar es 320x200).
No soy muy bueno en electrónica, pero soy muy bueno siguiendo instrucciones y captando pistas.
¿Alguien ha intentado esto antes?
EDITAR : ¿Podría usar una versión modificada de esto? http://www.eosystems.ro/deogen/deogen_en.html
EDIT2 : No necesito usar un Arduino. Pero quiero mantenerlo lo más simple posible.
EDIT3 : puede parecer que el monitor en cuestión es en realidad un monitor compuesto, y no un monitor de entrada CGA "real". Entonces eso probablemente hace las cosas un poco más fáciles. Pero todavía estoy interesado en cómo generar una señal CGA pura usando un microcontrolador...
Las señales hsync y vsync son pulsos negativos relativamente cortos que restablecen el haz de electrones del CRT a la izquierda y la parte superior de la pantalla, respectivamente.
Dado que CGA era básicamente solo NTSC (también conocido como RS-170) con sincronización y componentes separados, la sincronización de los pulsos debería ser la misma. El hsync se produciría cada 63,5 microsegundos y el vsync cada 16,7 milisegundos. El tiempo vertical debe estar dentro de las capacidades de un arduino, pero los horizontales pueden ser más desafiantes.
Durante el escaneo horizontal activo, deberá actualizar la luminancia de acuerdo con la resolución horizontal para la que está diseñando. Para obtener 640 píxeles, suponiendo que use aproximadamente 53 us del tiempo de seguimiento horizontal para permitir la duración del HS y los márgenes para asegurarse de que su salida no se salga de los bordes del CRT, debe generar un nuevo píxel aproximadamente cada 82 nanos,. Ahora, 82 ns es (probablemente) demasiado rápido para obtener directamente de un arduino, pero si emplea un registro de desplazamiento externo de 8 bits, solo tiene que cargar eso cada 660 ns, es decir, orden de medio microsegundo. Por supuesto, puede optar por 320 píxeles y facilitar aún más el tiempo.
Si cumplir con ese tipo de tiempo le parece razonable, los números exactos podrían obtenerse fácilmente a través de un poco de búsqueda en Google. Por ejemplo, este parece un buen ejemplo.
¿Estás configurado en un Arduino?
El Parallax Propeller puede generar todo tipo de señales de video de forma nativa. Hay un código disponible para generar señales de video compuesto y VGA, y todas las fuentes también están disponibles, por lo que puede modificarlas si lo desea. Internamente, tiene un conjunto de lógica de generación de temporización de video especializada. Debería ser posible configurar el sistema para controlar esa pantalla sin demasiados problemas, aunque puede requerir un poco de SRAM externa si desea poder mostrar el movimiento completo (bueno, tan lleno como sea posible considerando que es un ámbar pantalla) color.
Además, es mucho más potente que un arduino.
http://code.google.com/p/arduino-tvout/ es probablemente lo que necesita. Si tiene suerte, el monitor interno aceptará una señal NTSC.
Nunca he usado CGA, pero es posible que pueda adaptar uno de los (muchos) proyectos Arduino VGA a su propósito.
Construí un juego de pong VGA alrededor de un ATMega168 que podría ser un buen punto de partida (enlaces 1 2 ). Utilicé la biblioteca AVGA , que hace todo el tiempo VGA bajo interrupción, por lo que su código de primer plano solo necesita preocuparse por mover los sprites.
Otra opción podría ser modificar un YBox .
La PC portátil de IBM se comportó como si el monitor interno estuviera conectado a la salida compuesta de una tarjeta CGA estándar. Uno de los efectos secundarios de esto fue que cuando el modo se configuró para "colorear" 80 columnas, los colores aparecían como patrones de rayas grises en lugar de tonos de gris. Esto, a su vez, haría que muchas combinaciones de primer plano y fondo (por ejemplo, azul sobre negro) fueran casi completamente ilegibles. Esto fue bastante molesto dado que (1) el monitor interno era monocromático y, por lo tanto, la información cromática sería inútil para él; (2) incluso cuando se usaba un monitor compuesto externo, la señal de ráfaga de color estaba mal sincronizada en el modo de 80 columnas, por lo que no se podía obtener el color de todos modos.
Por cierto, el monitor interno de Compaq parece ser único; utiliza la velocidad de exploración horizontal NTSC, pero la exploración vertical puede ser de 60 Hz o 30 Hz. No estoy seguro de por qué Compaq decidió usar 30 Hz no entrelazados, en lugar de maldecir el circuito vertical del monitor para que funcione bien con la salida entrelazada no del todo correcta del 6485, pero es la única máquina que he visto con un Escaneo de pantalla de 30 Hz.
Christian Wattengard
connor lobo