El test1 es un calco del core que escribí en el 2011, cuando salió el proeycto Jupiter ACE en Zona de Pruebas, dirigido por Jepalza. Lo único que he añadido a ese core es poder usar un teclado PS/2.
El test2 es una reescritura completa de arriba a abajo, con un estilo de codificación más acorde a lo que he aprendido en estos años. En consecuencia, el test2 está bastante más depurado, sigue todas las "guidelines" acerca de cómo diseñar correctamente cosas como la memoria RAM y ROM. Es lo que he estado haciendo durante la noche del sábado al domingo.
Además, y como esto es FPGA y aquí no tenemos que ceder a compromisos de diseño que hace 30 años sí tenías que hacer, me he tomado la libertad de que tanto la memoria de pantalla como la memoria de caracteres sean de doble puerto, lo que significa que cuando se accede a esas memorias usando el modo "fast" (las direcciones que no generan contienda) no se produce nieve ni glitches indeseados, cosa que sí ocurre en un Jupiter ACE real (y en el test1)
La memoria de caracteres es leible y escribible por el Z80. En el Jupiter ACE real sólo puede leerse.
Por último, como la Spartan 6 que usamos tiene bastante RAM disponible, he implementado toda la RAM dentro de ella, con lo que el chip de RAM de 512KB del ZX-Uno, en este core está dormido (junto con la tarjeta SD, al menos hasta que Antonio haga algo al respecto )
Esta implementación tiene 51KB de RAM en total: 49KB de usuario, 1KB de memoria de pantalla y 1KB de memoria de caracteres. la ROM es la estándar del Jupiter ACE, y ocupa 8KB. En total ocupamos 59KB de los 72KB de memoria block de que disponemos en la Spartan.
Faltan algunos flecos por terminar, tal como mezclar adecuadamente MIC y SPK (ahora mismo salen uno por un altavoz distinto) y que se escuche EAR (que ahora mismo no se escucha nada, pero cargar carga)
La primera cosa que todo nuevo usuario hace en el Jupiter ACE es sacar la lista de palabras del diccionario por defecto. Esto se hace con la orden VLIST
Para cargar algún juego o lo que sea: no es tan sencillo como en el Spectrum. Hay que saber el nombre del diccionario (así se llama al conjunto de nuevos comandos que se carga) que quieres cargar. He dejado alguna cosilla en "software" (recargar esa parte del repositorio). Para dudas, consultar el manual del equipo, y agarraos los machos porque ¡esto es Forth!
Por ejemplo: el siguiente programa testea y muestra en pantalla la cantidad total de RAM disponible en un Jupiter ACE, y mira si el espejo de memoria RAM está habilitado o no. Esto de habilitar el espejo de memoria sólo tenía sentido con la ampliación de 29KB que diseñé para el Jupiter ACE de ZdP. En esta implementación siempre está habilitado.
Está en el directorio "tests" dentro de "jupiter_ace". Suministro fuentes, binario en formato TAP, TZX y WAV. OJO que el formato TAP no es como el del Spectrum. En "utils" os paso un programilla que hice que convierte un TAP de Jupiter ACE a un TZX que después puede cargarse con el Taper (está en las cosas de Sam Coupé) o pasarse a WAV con la utilidad tzx2wav.
Se carga tecleando:
Código: Seleccionar todo
load l l
Debería verse esto en pantalla al cabo de unos segundos de ejecución: Encontrareis muchos programas y juegos (y las instrucciones para cargar cada uno, porque no todos se cargan igual, hay que saber el nombre del diccionario y de la palabra de arranque), mirar la sección de software del repositorio general de Jupiter ACE:
http://www.jupiter-ace.co.uk/software_index.html
El teclado está configurado para uno español, incluyendo los caracteres de puntuación, matemáticos, etc. La tecla EDIT (borrar linea) es F2. La tecla Ctrl-4 es VIDEO INVERSO. La tecla Ctrl-9 es GRAPHICS. Los cursores están mapeados a las teclas del cursor del Jupiter ACE (CAPS+5678). ESC es la tecla BREAK (CAPS+SPACE). Se puede resetear el ordenador como siempre, Ctrl-Alt-Supr. Ctrl-Alt-F5 dispara una NMI pero ahora mismo no está conectada al Z80.