Emulador de IMSAI 8080 con Teensy 4.1
En este artículo vamos a emular sobre una Teensy 4.1 el IMSAI 8080, protagonista indiscutible de la historia de la informática.
Sobre IMSAI 8080
El éxito del Altair 8800 llevó a los ingenieros de IMSAI a desarrollar una versión mejorada, lo que supondría el primer clon de la historia de la informática. Esta máquina en particular consiguió el estatus de icónica al ser protagonista de la película de primeros de los 80 «Juegos de Guerra».
A nivel de arquitectura, mantenía el procesador Intel 8080 a 2 MHz, 4 KB de RAM y el bus S-100, aunque se integraba en una carcasa de aluminio más robusta, una fuente de alimentación más potente y una placa madre con 22 ranuras de expansión.
Emulador
Utilizaremos como base el emulador de IMSAI 8080 integrado en Z80pack.
Cambios en nuestro emulador
Se realizan cambios en el código original incluyendo:
- Se deshabilita el panel LED y switches.
- No se emula la APU.
- Se conservan los archivos estrictamente necesarios para ejecutar el emulador.
- El módulo imsai-hal.c se reimplementa para Teensy como imsai_hal_teensy.cpp.
- Siempre usa la ROM MPU-A.
- Se añaden comandos locales para la carga de archivos de disco DSK:
- L X file.dsk: monta archivo imagen de disco file.dsk desde microSD en unidad X (A–D)
- B: arranca unidad A
- B X: arranca unidad X.
- S: muestra estado de las cuatro unidades: archivos cargados y si permite boot.
- [Ctrl][R]: reinicio software.
- Se mantiene embebida imagen de IMDOS 2.02 como opción de arranque sin microSD.
Entorno e instalación del emulador
Elementos
Vamos a necesitar los siguientes elementos:
- Placa Teensy 4.1.
- Tarjeta microSD con formato FAT32.
Instalación
Nos basta con descargar el código fuente de GitHub.
$ git clone https://github.com/RafaGS/imsai4Teensy.git Construimos los binarios y los subimos a la placa.
Preparación de la microSD
Prepararemos una microSD en formato FAT32 donde creamos un directorio imsai y ahí pondremos los archivos DSK.
Emulación
Una vez realizada la subida, y conectada la microSD a la Teensy, nos conectamos vía serie. Aparecerá información sobre el emulador. Pulsaremos la barra espaciadora para comenzar la emulación.
Aparecerá la versión del monitor ROM de IMSAI.
IMSAI IEEE MONITOR VERS 1.0Dispondremos de un prompt en forma de interrogante.
CP/M 2.2
Comenzaremos por CP/M, por lo que indicaremos con L que cargue el disco correspondiente.
?L A cpm22.dsk A lo que el sistema nos dará una confirmación.
[LOADED A: cpm22.dsk]Con la instrucción B, arrancaremos el sistema operativo.
Comenzaremos por CP/M, por lo que indicaremos con L que cargue el disco correspondiente.
?L A cpm22.dsk A lo que el sistema nos dará una confirmación.
[LOADED A: cpm22.dsk]Con la instrucción B, arrancaremos el sistema operativo.
Una vez que aparece el prompt de CP/M, podemos realizar tareas típicas en este sistema.
Podemos volver al monitor en cualquier momento mediante la pulsación de [Crtl][R].
IMDOS
IMDOS es la particularización de CP/M para IMSAI. Vamos a cargarlo mediante la orden L.
?L A imdos202.dsk A lo que el sistema nos dará una confirmación.
[LOADED A: imdos202.dsk]Asimismo, agregaremos en la unidad B el disco de BASIC.
?L B xybasic.dsk Con la instrucción B, arrancaremos el sistema operativo.
Desde el prompt, podremos realizar tareas típicas.
Podemos, por ejemplo, ejecutar BASIC. Para ello, iremos a la unidad B y ejecutaremos XYCPMBCB.
A>B: B>XYCPMBCB Se ejecutará el BASIC, pidiéndonos la típica información de ancho de pantalla y memoria.
Finalmente, podremos escribir un nuevo «Hola mundo».
#1975 #IMSAI #Intel8080 #PJRCTeensy41




