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)
- Colores: Una forma de editar los colores del sistema operativo.
- Depurador. Un depurador básico que puede desensamblar memoria global y las tareas actuales.
- Editor. Un editor de texto que puede imprimir documentos (muchos bugs)
- Promedio. Uso del procesador y memoria libre.
- Tipografía: Una forma de probar tipos de letra y usarlos en el sistema.
- CDROM: Activa un sistema de archivo ISO-9660, pero no hay soporte de CD en el emulador.
- Terminal: Una terminal serie, pero no hay soporte para puertas serie.
- Circuito impreso: Una demo de gráficos vectoriales.
- El folder Fondos contiene imágenes de fondo, solo dale click para activar una.
- El folder Sistema/Protectores de pantalla contiene un protector de pantalla llamado Acuario, pero no hay chequeo de tiempo para ejecutarlo. Los gráficos están basados en XFishtank.
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
Si disfrutaste este artículo, por favor apóyame
invitándome un café en ko-fi.
Ligas relacionadas
Última actualización: 07-ago-2026