Emulador de Am29000 en Javascript

Esta es una conversión a Javascript de mi emulador de Am29000 escrito originalmente en C para un artículo acerca de mi sistema operativo de ventanas de 1997. Esto es posible porque Javascript ahora en su mayoría ha evolucionado en un compilador JIT (Just-In-Time), así que se acerca a las velocidades del lenguaje C.
En su mayor parte es una conversión directa de C, de mi experiencia previa con mi emulador de transputer utilicé el operador >>> 0 (corrimiento lógico a la derecha) para mantener enteros de 32 bits sin signo dentro de la emulación.
También depende de Uint8Array, ya que es más rápido que un arreglo normal y ahorra memoria, ya que hay varios de estos arreglos (dos unidades de disco flexible y la RAM de video). Para las imagenes de disco, encontré un buen truco para reducir el tamaño del código fuente Javascript usando Base64 con mi utilidad bin2c.c para codificar los 1.44 mb. de datos de la imagen de disco flexible, y window.atob obtiene la cadena decodificada que es copiada directamente en el Uint8Array de la unidad.
Finalmente, para la pantalla emula un pequeño subconjunto de un chip de video Cirrus Logic GD-5429, e ilustra 800x600 pixeles con 64k colores convirtiendo la pantalla completa en cada cuadro de 64k colores a RGB 24-bit. No ganaría una prueba de velocidad.
Puedes mirar el código fuente Javascript de este emulador en https://github.com/nanochess/Am29000/tree/master/js

Que tenemos aquí

Debes esperar varios segundos para que las ventanas iniciales aparezcan. Esto se debe a que el sistema operativo construye tres tipos de letra al inicio.
Mueve el cursor con el ratón o el pad. Haz click y sostén en la barra de título para mover ventanas. El botón gris en la parte superior izquierda cerrará las ventanas.
Si haces click derecho en el fondo de la ventana "Arrancador", te dará diferentes esquemas de color.
La ventana "Arrancador" es como un atajo para lanzar un juego de ajedrez, el archivero (puedes arrastra y soltar archivos entre dos ventanas de archivero), edición de color, chequeo de disco y utilidades (puedes arrastra archivos al basurero, o arrastrar un folder para crear un nuevo folder en el archivero)
Mi emulador en C es bastante más rápido que esta demo, pero si tienes una computadora veloz y un buen browser, esta versión Javascript puede ser muy interesante. La versión en C permite generar archivos de impresión, algo que en Javascript no es posible.

Código fuente

El código fuente esta liberado en https://github.com/nanochess/Am29000
Si disfrutaste este artículo, por favor apóyame invitándome un café en ko-fi.

Ligas relacionadas

Última actualización: 07-ago-2026