Tengo una duda construiste el cpu basándote en los esquemas de un cpu teórico como en los libros de lógica digital y el micro código creaste los nemonicos propios?
Tantas dudas suena fascinante el proyecto. e
Hola compañero, que tal? no me base en ninguna arquitectura.
El desarrollo teórico lo empecé allá por el año 1998. Y todo quedó ahí varios años, hasta que empecé la construcción en el 2004-2005 aprox. En el 2007, armé el 70% e hice las primeras pruebas. Consistía en contar una variable en un bucle y mostrar dicha cuenta en uno de los puertos. Luego volvió a quedar abandonado todo, y retomé al año siguiente.
A partir de ahí comencé con el desarrollo de la placa de vídeo. Teniendo algo dónde poder "ver", comencé a desarrollar el compilador.
Básicamente, es un programa que me permite, escribir en código alfanumérico, sin necesidad de escribír todo en 0s y 1s. Además tiene un pequeño procesador de texto. Ya que por ejem. No me permite ingresar un número mayor a 255. O ingresar un microcódigo inexistente. Cómo lo muestra uno de los vídeos, que compartí.
Los micro códigos, los cree en función de la necesidad y el hardware que iba tomando forma. Y a medida que añadía hardware, necesitaba añadir más microcódigos, para poder controlar el nuevo hardware.
Respecto a la organización del programa de firmware. Posee dos memorias 27C256 trabajando en paralelo. A partir de la dirección 0/42 que es la forma en que la designé. La primer parte(cero), corresponde a los primeros 8bits de menor peso LSB.
La 2da. Parte al MSB, respectivamente, es decir el número 42.
Retomando, a partir de ésta dirección. Se escribieron todas las funciones que son llamadas por el programa que se está corriendo (que comienza desde la dirección 0/0 en adelante.)
Contiene funciones cómo CLS(Borrado completo de pantalla) ésto debe hacerse cada vez que se enciende el sistema, pues porque la RAM de vídeo tiene obviamente datos aleatorios, que de lo contrario mostraría un cielo estrellado jeje.
También contiene una función que gestiona la tarjeta de sonidos monofónico.
Debo escribir en dos registros específicos la duración y fcia. de la nota, antes de hacer el llamado a ésta función.
Luego otra función, que me convierte, un número binario de 16 bits en BCD de cinco dígitos.
Luego con otra función a la cuál hago el llamado me permite mostrar en pantalla ese número.
En dónde hago éste uso de función es en el inicio del sistema cuándo chequea la RAM.
Y por último, una función que me permite escribir texto en pantalla.
Consiste en escribir en hasta ocho registros consecutivos, valores numéricos que representan caracteres alfanuméricos, que va desde el cero hasta la Zeta, pasando por caracteres especiales cómo, punto, coma, barra, etc.
Obtenido todo ésto, ya me permite escribir el programa principal. Sólo debo hacer el llamado a la función necesaria cada vez que la necesite, y listo.
En la medida que pueda, subo fotos del resto del sistema. Y gracias por el interés!