Commodore manía

General => Off-topic => Mensaje iniciado por: josepzin en Agosto 15, 2015, 04:24:28

Título: Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 15, 2015, 04:24:28
Acabo de ver esto, parece interesante :-)

Citar
Hoy encontré esto en AtariAge, hay un "loco" haciendo un retrocomputador basado en el 6502 pero buscando la potencia de audio y video del Commodore Amiga.

Se ve bastante avanzado el proyecto

http://forum.6502.org/viewtopic.php?f=4&t=3329


https://www.youtube.com/watch?v=chACO3WNtg0
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: Maniako en Agosto 15, 2015, 07:29:13
Simplemente bestial.
Qué gráficos , qué lio en la mesa.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 15, 2015, 08:04:09
No sé como hará con los gráficos... ¿?
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: Scooter en Agosto 15, 2015, 16:44:59
Me parece absolutamente increíble, tanto que no se creermelo.
Las placas board fallan más que una escopeta de feria, falsean contactos que no veas. Conseguir que funcione un proyecto de ese calibre me parece absolutamente increíble.

Anbiao ende mi parato usando catacrak

Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: riq en Agosto 15, 2015, 17:03:39
Acabo de ver esto, parece interesante :-)

Excelente. El pibe esta loco y además es super talentoso.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 15, 2015, 22:47:32
¿Y como hacen con los sprites y modos gráficos?? ¿un chip lo hace todo o como funciona eso??
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: Scooter en Agosto 16, 2015, 01:22:02
Según dice con puertas lógicas mondas y lirondas.
Me parece una pasada. Tengo un clon del spectrum hecho con puertas lógicas y los modos gráficos del speccy son...uno sólo sin sprites en modo gráfico siempre.

Anbiao ende mi parato usando catacrak

Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 16, 2015, 01:44:51
Me parece una pasada. Tengo un clon del spectrum hecho con puertas lógicas y los modos gráficos del speccy son...uno sólo sin sprites en modo gráfico siempre.
A eso me refiero, para tener sprites alguien se tiene que programar esas rutinas... ¿no?
Entonces, ¿eso se hace con un lenguaje y luego se guarda en un chip o cómo es el proceso?
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: pastbytes en Agosto 16, 2015, 07:01:55
Un sprite no es mas que una mini pantalla grafica, que se lee por lineas para enviarlas a la pantalla, igual que la pantalla grande.
Las coordenadas X e Y solo definen en que momento se empieza a imprimir en la pantalla general, el color de cada pixel del sprite define si se imprime el sprite o la pantalla de fondo, digamos que se podria tomar el color 0 (de los 256 posibles) como color transparente, si es 0 una llave habilita que lo que se envie a la pantalla en ese pixel sea el fondo, si es cualquier otro la llave selecciona la imagen del sprite, con el color correspondiente.
Cuantos mas sprites se tengan, mas mini pantallas habra, y ademas en cada pixel no solo hay que decidir si actua el color de fondo del sprite, sino que ademas hay prioridades de sprites, pero ese tipo de cosas ya existen hace mucho tiempo, por ejemplo para las prioridades de las interrupciones, hay chips que hacen eso por hard, e internamente estan implementados con puertas logicas.
Es cierto que se necesita una cantidad bestial de compuertas, pero en definitiva un microprocesador se puede implementar integramente con chips de la serie 7400. Un chip de video tiene menos complejidad en la variedad de componentes, pero una gran escala en cantidad.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 17, 2015, 02:04:47
Se me escapa un poco el tema de programar un chip usando compuertas u operadores logicos o como se llamen... porque eso no es código máquina, es un nivel más bajo todavía ¿no?
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: pastbytes en Agosto 17, 2015, 05:17:13
Por que un sprite solo se puede hacer programando, y no la imagen de fondo? Es lo mismo.
Suponiendo que solo se puede hacer con un programa, ese programa tiene que correr en un procesador, y el procesador no es mas que un conjunto de circuitos logicos. Lo que vendria a equivaler a decisiones se hacen con mascaras y compuertas, y cualquier cosa que requiera una secuencia, se hace con flip flops y señales de reloj, pero todo eso tambien se puede implementar con compuertas.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: pastbytes en Agosto 17, 2015, 05:30:55
El codigo maquina no es el nivel mas bajo que hay, cada instruccion es tambien un mini programa, por eso cada una requiere una cierta cantidad de pulsos de reloj, depende de la complejidad que tenga el microcodigo que implementa esa instruccion, y tambien de la arquitectura del procesador. Pero ademas el microprocesador no es magico, no esta hecho con instrucciones implementadas por algun tipo de brujeria, es un circuito electronico como cualquier otro y por lo tanto se puede reimplementar con compuertas, como ya se hizo en algunos proyectos. Tambien asi se hicieron los chips especiales de Amiga, con componentes comunes en varias placas gigantes por chip, antes de que Commodore los implementara en 3 chips.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 17, 2015, 05:38:38
Entonces... Para un proyecto de estos se usan chips genéricos que se pueden programar para que funcionen como coprocesador grafico, sonido, etc.

Es algo así?
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: pastbytes en Agosto 17, 2015, 06:44:17
No estas pensando en la cuarta dimension, Marty.   ;D ;)
Acordate que cuando se hicieron estas maquinas, no existia ese tipo de chips programables, tampoco existian cuando se hicieron los primeros procesadores con valvulas, ademas los primeros ordenadores fueron mecanicos y luego electromecanicos, paso un tiempo hasta que fueron completamente electronicos.
Una instruccion de codigo maquina podria ser similar a una cajita de musica, con cada ciclo de reloj se avanza un paso y segun el programa, que no es mas que una o mas señales que se activan (en el ejemplo serian notas que se activan en ese paso), se disparan distintos circuitos que hacen funciones minimas, como transferir el contenido de un registro a otro registro, sumar dos registros, incrementar en 1, etc.
Mirandolo de una forma muy simplificada, se podria decir que cada instruccion es casi un circuito distinto, y hay un secuenciador que se encarga de leer el programa en codigo maquina desde la memoria, incrementar el contado de programa, decodificar la instruccion, ejecutarla, y volver a empezar leyendo otra instruccion. La toma de decisiones parece magica pero es muy simple, se ejecuta alguna funcion que da un resultado, y segun ese resultado se continua en la siguiente instruccion, o se carga el contador de programa con la direccion suministrada, o se suma o resta un valor al contador de programa, segun el tipo de salto. Pero no hay mucha inteligencia en eso, no es mas que una secuencia de pasos que se pueden implementar con compuertas, flip flops, y buses que conectan todo.
Yendo un poco mas al detalle, no hay un circuito para cada instruccion, sino que hay varios circuitos que se pueden ver como recursos, sumadores/restadores, buses para transferir entre registros y entre registros y memoria, operaciones logicas (xor, or, and). Una instruccion usa algunos de estos circuitos, el microcodigo de esta instruccion (que es como el programa de la cajita de musica) le dice en que orden tiene que hacer las cosas, por ejemplo para sumar 1 al acumulador, tendria primero que colocar el contenido del acumulador en el primer operando del sumador, eso implica activar la transferencia de un registro a otro, luego colocar un 1 en el segundo operando, luego activar el sumador, despues transferir el resultado del sumador a donde corresponda, en este caso volveria al acumulador, pero segun la instruccion podria ir a memoria o a donde sea que lo especifique la instruccion. Los modos de direccionamiento de las instrucciones suelen usar el mismo circuito pero variando que buses se activan (si se lee el operando desde memoria, desde A, desde memoria indexada por X, etc.), el microcodigo de la instruccion sera parecido pero variara algun paso interno para activar distintos circuitos o buses, tambien cada variacion de la instruccion puede tardar una cantidad distinta de ciclos de reloj porque el programa de la instruccion es distinto.
En este video se puede ver que la suma de dos parametros es algo casi instantaneo, es un circuito con compuertas hecho a medida para eso, hay varios circuitos para distintos usos dentro del procesador, y la instruccion es la que define cuales se activan y en que orden. Es el primer ejemplo que encontre en youtube donde se ve el funcionamiento directo y no se ponen a hacer largas explicaciones teoricas, no se ve muy bien pero la idea se entiende:

https://www.youtube.com/watch?v=podqWovdE2M

Esta comparacion es un tanto improvisada, pero se puede entender graficamente, un programa en codigo maquina podria verse como una de estas maquinas:

https://www.youtube.com/watch?v=8qLFF9072Oc

Cada etapa de esas maquinas podria ser una instruccion, el programa vendria a ser donde colocar cada etapa, es decir enlazar la salida de una con la entrada de otra, en las que se ven ahi no se toman decisiones, pero podria ocurrir que segun el peso, tamaño, velocidad o algun otro parametro de la bola o el objeto que se use, se decida que vaya por un camino u otro. Pero lo importante es que cada etapa o camino no sabe hacer mas que una determinada secuencia, en una instruccion de codigo maquina lo hace al ritmo del reloj principal, con cada ciclo hace un paso, en el caso de estas maquinas, el reloj seria la gravedad.
Lo explico asi "a lo bestia" porque en realidad hay que leer mucho para llegar a entenderlo bien, es dificil resumirlo de forma que no parezca magia, espero que eso de una idea aproximada de como es que funciona adentro un procesador. En el caso de un chip de video es similar, se usan contadores para saber en que linea y pixel se encuentra el haz, se compara con valores predefinidos, y segun eso se envia a la pantalla lo que se lee de la memoria de video, una señal de sincronismo, o imagen en blanco.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 17, 2015, 14:21:59
Muchas gracias por toda la explicación :)

Según lo que mas o menos entiendo, antes para hacer esas pequeñas instrucciones básicas había que hacerlo con elementos físicos (circuitos, transistores, etc), luego con los chips, esa circuiteria se imprimió en un chip.
Ahora con estos proyectos creo entender que lo hacen de alguna de estas maneras:
- Usando un chip que permite programar todas esas instrucciones
- Usando varios chips (como creo entender en el video de la suma) donde cada uno hace una funcion basica y mediante cableado (mucho) ir haciendo que esa "magia" funcione :D.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: Scooter en Agosto 17, 2015, 15:58:17
Los chips básicos no se programan. Se configuran.
Igual que tu no programas la luz conmutada de tu pasillo. La cableas.
El concepto de programa está unas cuantas capas más arriba.
No es que sea peor uno que el otro. Un programa puede parecer que ejecute varias cosas a la vez porque las hace una tras otra muy rápido. Un sistema cableado realmente puede hacer muchas cosas a la vez.
Hoy en día eso está ultraobsoleto, en cuanto pasamos de unas pocas puertas lo que se hace es usar una FPGA o algo semejante, estos chips no se programan, se configuran. Internamente hacen la función lógica de miles o decenas de miles de puertas. Así se han recreado sistemas retro variados... Yo creo que casi todos están clonados.
Ojo, NO son simuladores, son EL MISMO sistema clonado.

Anbiao ende mi parato usando catacrak

Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 17, 2015, 23:14:34
Entiendo, ya veo que no es lo mismo programar que configurar.

Esto me lleva a otra cosa, según he visto hay un chip emula-reproduce el SID, ¿existe lo mismo del VIC? ¿y de los demás chips raros del 64? en definitiva, se puede emular un 64 vía FPGA. Este tema se trató en otro momento pero no recuerdo la respuesta...
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: pastbytes en Agosto 18, 2015, 00:09:43
El unico chip que vi que emula el SID esta implementado con un microcontrolador, no emula la parte analogica del SID y me parece que le falta alguna caracteristica mas. No vi reemplazos del VIC, lo que hace el VIC es demasiado para un microcontrolador, se podria reemplazar por algun chip reconfigurable como CPLD o FPGA, pero seria caro solo para reemplazar un unico chip, por cuestion de costos y espacio se reemplaza la maquina entera.
Los chips a los que uno suele decir programables, como CPLD o FPGA, son un monton de circuitos logicos con cables conectandolos entre si, algo asi como que todos se conectan con todos, y la "programacion" consiste en cortar las conexiones que no se necesitan para lograr el circuito que uno pretende. En realidad esos componentes no se conectan todos, tienen ciertas restricciones, por eso se suele usar un lenguaje para definir el circuito, que despues se compila para obtener las conexiones necesarias que representen ese circuito. Pero esos chips no son procesadores ni ejecutan un lenguaje de programacion, son chips en bruto a los cuales les podemos reconfigurar las conexiones internas.
Si con esos chips podemos implementar procesadores, es porque los procesadores, al igual que los chips de video o sonido, son en definitiva circuitos logicos. En el proyecto del comienzo del hilo, tambien podria haber reemplazado el 65c02 por compuertas, le habria ocupado lo mismo o mas que el chip de video.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 18, 2015, 17:38:12
El unico chip que vi que emula el SID esta implementado con un microcontrolador, no emula la parte analogica del SID y me parece que le falta alguna caracteristica mas.
Siempre me resultó curioso eso de "la parte analógica" del SID, que lo hace tan complicado de emular/reproducir.

No vi reemplazos del VIC, lo que hace el VIC es demasiado para un microcontrolador, se podria reemplazar por algun chip reconfigurable como CPLD o FPGA, pero seria caro solo para reemplazar un unico chip, por cuestion de costos y espacio se reemplaza la maquina entera.
¿Pero existe eso? me refiero a un FPGA del C64 completo.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: pastbytes en Agosto 18, 2015, 20:44:14
¿Pero existe eso? me refiero a un FPGA del C64 completo.

C-One, C64DTV, Turbo Chameleon, etc.
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: josepzin en Agosto 18, 2015, 21:04:52
C-One, C64DTV, Turbo Chameleon, etc.

Que paleto estoy... pensaba que todas esas opciones eran vía emulación por software. Soy un despistado tremendo, seguro que ya lo había preguntado antes...
Título: Re:Vulcan-74, construyendo un ordenador basado en 6502
Publicado por: Scooter en Agosto 18, 2015, 21:47:38
Básicamente un microprocesador simula. Una FPGA emula.
Las pal, gal etc se configuraban fundiendo la parte del circuito que no queríamos. Las FPGA son "RAM" y leen cada vez que arrancan de una memoria su configuración.
Aparte también hay circuitos ASIC como el C64 TV , creo que se llama así, el joystick 64 que salió.
Eso es como una ROM programada en fábrica.
Por encima de eso ya están los custom chips que son chips a medida. Como commodore tenía fábrica de semiconductores se hinchó a llenar sus máquinas de custom chips. Por eso son bastante complejos de similar, emular, imitar...


Anbiao ende mi parato usando catacrak