Autor Tema: Vulcan-74, construyendo un ordenador basado en 6502  (Leído 10095 veces)

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13724
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Vulcan-74, construyendo un ordenador basado en 6502
« 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
« última modificación: Agosto 15, 2015, 08:03:39 por josepzin »
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #1 en: Agosto 15, 2015, 07:29:13 »
Simplemente bestial.
Qué gráficos , qué lio en la mesa.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13724
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #2 en: Agosto 15, 2015, 08:04:09 »
No sé como hará con los gráficos... ¿?
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Scooter

  • Commodorista
  • ***
  • Mensajes: 89
  • SYS 0
    • Ver Perfil
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #3 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


riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #4 en: Agosto 15, 2015, 17:03:39 »
Acabo de ver esto, parece interesante :-)

Excelente. El pibe esta loco y además es super talentoso.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13724
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #5 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??
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Scooter

  • Commodorista
  • ***
  • Mensajes: 89
  • SYS 0
    • Ver Perfil
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #6 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


josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13724
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #7 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?
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 557
  • SYS 0
    • Ver Perfil
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #8 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.
« última modificación: Agosto 16, 2015, 07:04:19 por pastbytes »

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13724
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #9 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?
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 557
  • SYS 0
    • Ver Perfil
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #10 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.
« última modificación: Agosto 17, 2015, 05:18:49 por pastbytes »

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 557
  • SYS 0
    • Ver Perfil
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #11 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.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13724
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #12 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í?
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 557
  • SYS 0
    • Ver Perfil
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #13 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.
« última modificación: Agosto 17, 2015, 06:46:16 por pastbytes »

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13724
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Vulcan-74, construyendo un ordenador basado en 6502
« Respuesta #14 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.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com