• Acabo de probar la primera aplicacion autonoma del chip de video, autonoma en el sentido de que no tipeo o envio los datos desde una PC a traves de un programa terminal. Hace unos años me habia adaptado un receptor de los sensores y controles remotos de mi alarma para que en vez de activar reles enviara los datos de lo recibido por RS232 para conectarlo a una PC. Ahora saque esa placa del olvido y la cablee directamente a la entrada TTL del chip de video, ya que puse jumpers entre eso y el MAX232 justamente para poder puentear el DB9 y la adaptacion de voltajes.
    La placa receptora no tiene mas que un receptor de radio y un PIC de 8 pines que aproveche para cambiar por uno mas moderno y de paso mejorar un poco los mensajes de salida. La verde es la placa del receptor, y de la otra solo se usa el ATMega8.
    Por cierto, como resalta la mugre del teclado con el flash.  suprised ;D
    EPSN3019s
     

  • Y este es el resultado en pantalla, va mostrando la recepcion de lo que detecta como valido, sean controles remotos o sensores inalambricos que se disparan. Si tuviera tiempo haria que el PIC dibujara el plano de la casa con graficos ASCII, pero me conformo con saber que anda.
    Al arrancar el PIC envia comandos de escape para borrar pantalla y cambiar el cursor a modo de bloque, ahora lo estoy probando a 19200 bps y anda muy bien, antes estaba trabajando en 9600. Sin embargo es una velocidad muy alta para un 6502 o Z80, ya que cada bit a 19200 dura aproximadamente 10 microsegundos, asi que va a tener que ser asistido por un PIC o algun otro chip que haga de puerto serie.
    EPSN3020s
     

  • 13 años atrás

    que groso!
    felicitaciones a ambos por lo que estan haciendo
     

  • Realmente lo de ustedes es admirable.  wink
     

  • Qué groso! Felicitaciones! Algún día cuando tenga tiempo, voy a aprender a hacer algo así. tongue jaja
     

  • La idea de usar componentes actuales, es que una vez que este definido el hard, cualquiera pueda armarse una o comprarla en kit si mandamos a hacer placas, pero para eso falta mucho.  wink
     

  • Genial! Aunque de todas maneras me refería a poder hacer un diseño propio entendiendo lo que uno está haciendo y no hacer un montaje de otro. A propósito, conocés el libro de Andre LaMothe de "The Black Art of Video Game Console Design"? Es justamente sobre el diseño de una consola de juegos. Si lo conocés, que opinión te merece?
     

  • Genial! Aunque de todas maneras me refería a poder hacer un diseño propio entendiendo lo que uno está haciendo y no hacer un montaje de otro. A propósito, conocés el libro de Andre LaMothe de "The Black Art of Video Game Console Design"? Es justamente sobre el diseño de una consola de juegos. Si lo conocés, que opinión te merece?


    La verdad no conozco ese libro, me baje algunos pero nunca tengo tiempo de leerlos. En cuanto a lo de entender el diseño, esta lleno de maquinas hechas por otros, con 6502 o Z80, pero mi idea es no solo que los demas pueden armarla sino tambien entender por que se tomo cada decision de diseño, y que se entienda como funciona. Esto seguramente es mas trabajo que la computadora misma, documentar todos esos detalles, pero asi tiene mas gracia. Por el momento las cosas no estan tan definidas pero cuando esten mas avanzadas ya puedo empezar a documentar todo.
     

  • Actualizo, por el momento estoy trabajando en el mapa de memoria, lo que tengo definido es que va a haber 64K en 8 bloques de 8K, con un decodificador de 3 a 8 para seleccionar cada uno de los bancos de 8K, en los ultimos 16K de los 64K totales (desde 48K hasta 64K) va a haber ROM. La ROM basica (BIOS, kernel o como se la quiera llamar) va a estar en los ultimos 8K (56K hasta 64K), en los 8K anteriores (48K hasta 56K) en el futuro va a estar el BASIC o el lenguaje que se elija hacer (falta demasiado para eso pero el espacio ya esta reservado). En los anteriores 16K (32K hasta 48K) voy a implementar un sistema de paginado para usar varios MB de RAM, aunque por un tiempo (probablemente largo) eso va a quedar como RAM fija para el usuario. Los primeros 8K son para el sistema y parte para el usuario (programas BASIC por ejemplo), y lo que queda en medio, de 8K a 32K es memoria para los programas y datos del usuario.
    Es decir quedaria algo asi:

    56K - 64K ROM : (8K: BIOS, sistema operativo)
    48K - 56K ROM : (8K: BASIC, aplicaciones integradas)
    32K - 48K RAM : (16K: Por ahora RAM, en el futuro, una ventana de 16K para paginacion)
    8K - 32K RAM: (24K: Memoria RAM de usuario)
    0 - 8K RAM: (8K: Memoria RAM base, pagina 0, pila, E/S, datos de sistema y programas/datos del usuario)

    La pagina 0 (posiciones 0 a 255) son usadas por el 6502 para el modo de direccionamiento de pagina 0, la pagina 1 (posiciones 256 a 511) son usadas por la pila del 6502, la pagina 2 (posiciones 512 a 767) queda reservada como espacio de E/S, dividida en 16 bloques de 16 bytes cada uno, de los cuales por el momento se van a usar 3 o 4 nada mas. Ya que no tengo mucho espacio en la placa, mi idea es aprovechar las GAL que tengo para hacer la decodificacion de direcciones, pero lo mismo se pueden usar compuertas logicas si se tiene el espacio fisico en la placa.
    Si consigo un 8255 se puede agregar a la placa para mantener compatibilidad con la placa de Marcos, pero definitivamente voy a incluir un PIC en mi diseño para manejar tal vez algun puerto serie, aunque no puedo definirlo como parte del sistema por ahora porque va a ser como un comodin, todavia no se sabe que va a resolver.
    Me tengo que conseguir un SIMM de 30 pines, de 1MB por lo menos, para investigar el refresco de las DRAMs, cuando pueda resolver eso el SIMM va a reemplazar al chip de 8K SRAM que tengo actualmente, utilizandose 48K del SIMM, ya que los ultimos 16K estan reservados a la ROM. Tengo un monton de SIMMs de 72 pines, pero se complica mas soldarlos a la placa por la separacion de las pistas y la cantidad de lineas.
    En cuanto al ATMega de video, tengo que ver como usar la linea de datos de vuelta al host, ya que tiene esa opcion para devolverle al micro informacion tal como la posicion actual del cursor, algo util para evitar tener que llevar la cuenta en RAM principal de todo lo que se envio a pantalla, ya que el chip es una terminal totalmente independiente. Tengo que probar un emulador de chip SID hecho tambien con un ATMega8, pero me parece que acepta los datos en serie y no en paralelo como el chip original, tampoco esta muy documentado. El sitio del proyecto es este: LINK
    De todas maneras el sonido por ahora no es importante, es probable que lo arme como una placa intercambiable porque no estoy seguro de querer usar sonido SID en esta maquina, me es mas util el sonido digital de 8 bits ademas de tener un sintetizador con ondas basicas. La reproduccion de audio digital es algo que necesito para poder usar mensajes grabados en una memoria flash serie, algo que ya tengo hecho en proyectos con PIC.
    Me olvidaba, para el refresco de las DRAMs por lo que vi se necesita detener el micro aproximadamente por 3ms cada algo asi de 4ms (los tiempos dependen de la cantidad de memoria), si se quiere hacer un circuito generico, y dado que no me termina de convencer el perder tiempo de procesamiento, quiero encontrar la manera de hacer el refresco por partes, entrelazado con la ejecucion del 6502. De esta manera el 6502 no se detendria nunca por el refresco, pero el circuito estaria atado a la velocidad del micro, ya no se podria usar por ejemplo en un Z80 o con un 6502 mas rapido. Por esto lo ideal seria planificarlo para un micro de 2MHz y en todo caso adaptarlo despues a 1MHz si se usa un micro de esa velocidad. La ventaja de todo esto es que podria usar SIMMs y tener una gran cantidad de memoria en poco espacio fisico y de forma muy barata.
     
  •  

Moderador (s): homecomputer, Selandari, ArielP, pastbytes, Durandal