Ya está la cuarta alpha de BluMach, la 0.1.0-alpha.4. Entra una marca nueva en el catálogo, TriGem, con su placa SX386M, y cuatro modelos más de la serie M de Olivetti. Para prepararla he repasado la BIOS de casi todas estas máquinas, y de ahí han salido varios fallos que llevaban tiempo en la emulación.
Como las anteriores, es experimental. Que una máquina arranque no quiere decir que funcione bien, y en cada ficha está anotado qué he probado y qué no.
Antes de descargar: BluMach no incluye ROM, BIOS ni sistemas operativos. Tendrás que conseguirlos por tus propios medios; no se distribuyen con el programa.
Desbloqueamos y corregimos máquinas nuevas
- TriGem SX386M, una placa 386SX a 16 MHz que TriGem fabricó para otras marcas. Se conoce dentro del Emerson Elite SX386/16 y del CMS Enhancements ESP SX386M. Lleva el mismo chipset Headland que el Olivetti PCS 386SX, pero no tiene nada que ver con Olivetti.
- Olivetti M250 y M250 E, 286 de sobremesa con vídeo VGA integrado. Al crearlos se elige uno de los discos Conner que aparecen en la tabla de su Setup.
- Olivetti M280, 286 con controladora GO723 o GO717.
- Olivetti M380 y M380 C, 386DX a 16 MHz con controladora GO717.
TriGem aparece en el catálogo con la historia de la empresa y la familia SX386.
Controladoras de disco GO
El M28, el M280 y el M380 no llevan la controladora de disco en la placa, sino en una tarjeta de Olivetti: la GO714 en el M28, la GO714, la GO717 o la GO723 en el M280, y la GO717 en el M380 (también admitía la GO720 ESDI, que no está emulada). El M250 y el M250 E, en cambio, la tienen integrada en la placa, como interfaz IDE. Las tres tarjetas GO están ahora en BluMach, montadas sobre la emulación del WD1003. Los jumpers no se pueden cambiar: quedan fijas en la dirección primaria y la disquetera la pone la máquina.
Al probar el M380 apareció un error de controladora después de un reinicio en caliente que solo desaparecía apagando y encendiendo. Ya me había pasado hace tiempo con el PCS 286. La tarjeta no recibía la señal de reset del bus; ahora se reinicia como en la máquina real.
Lo que salió de las BIOS
- M380. Su BIOS habla con el controlador de teclado con un juego de órdenes ampliado de Olivetti y guarda la configuración en una pequeña memoria dentro de él. En la version emulada se omitia, así que la configuración salía siempre como no válida. Ahora se guarda en un fichero dentro de la máquina virtual. También estaba mal colocada la memoria que queda detrás del hueco de 640 KB: la BIOS la busca en una dirección concreta y la cuenta como «memoria dedicada». Con 4 MB, el POST ya muestra lo mismo que la máquina: 640 KB base, 3072 KB extendidos y 384 KB dedicados.
- El Setup del M380. Su BIOS no trae Setup, y el disquete de utilidades del M380 no lo tengo. El programa SETUP del disquete System Test del M280 funciona en él, y con eso he instalado MS-DOS 3.30 en un disco de la GO717.
- M250. Había un alias de memoria permanente que no existe en la máquina: la BIOS solo escribe en esas direcciones para medir la memoria. Se quitaba 128 KB de memoria convencional. Además, se cargaba la BIOS de vídeo de un Amstrad en lugar de la de Olivetti. Ahora el reparto de los 384 KB del hueco sigue el registro que usa la BIOS, y la tabla de discos sale de la propia BIOS: el tipo 2 tiene 776 cilindros, no los 766 que pone la guía de servicio.
- PCS 286 y Dario 286. El mismo alias de memoria estaba activo siempre. En estas placas sí existe, pero solo con chips de 256 Kbit: es como la BIOS distingue los chips de memoria. Con 2 o 4 MB, la BIOS creía tener la memoria equivocada. Ahora el alias depende de la configuración que la BIOS manda al controlador de teclado.
- M280. Tampoco trae Setup en la BIOS: está en el disquete System Test 2.02. La ficha ya lo explica.
- TriGem SX386M. La BIOS cambia de 16 a 8 MHz con Ctrl+Alt+gris − y gris +, o con la opción «Start-up Speed» del Setup. BluMach no hacía caso y la máquina iba siempre a 16 MHz. Ahora el modo lento funciona, aunque de forma aproximada: frena la memoria en lugar de bajar el reloj del procesador.
Todas estas BIOS desensambladas quedan en mi biblioteca, junto con las notas de cada máquina, para la próxima vez que haya que mirar algo.
Catálogo
La ficha de la familia Prodest de Olivetti tiene por fin su historia y su tabla de modelos: los PC 128 y PC 128 S, que eran un Thomson y un Acorn con la marca Olivetti y solo se vendieron en Italia, y los PC 1 y PC 1 HD, que sí eran compatibles PC diseñados por Olivetti. Las fichas del M250, el M280, el M380, el PCS 286, el Dario 286 y el SX386M recogen lo que he encontrado y lo que queda por hacer, en los cinco idiomas.
Qué está comprobado y qué no
“Comprobado” quiere decir que lo he visto funcionar yo, no que la emulación sea exacta. Las pruebas automáticas y las compilaciones en Windows, Linux y macOS han pasado, pero varias correcciones de esta versión todavía no las he repetido a mano.
| Máquina | Comprobado | Pendiente |
|---|---|---|
| TriGem SX386M | Arranca creado desde su ficha; MS-DOS 6.22 con una versión anterior | Disco duro desde la ficha, modo lento, shadow y las distintas memorias |
| M380 | POST con 4096 KB, configuración guardada con el SETUP del M280 y MS-DOS 3.30 arrancando desde la GO717 | Reinicio en caliente después del SETUP |
| M250 | Arranque en frío con una versión anterior | POST, Setup y System Test con las correcciones de memoria y vídeo; disco duro |
| M250 E | Nada todavía con esta versión | Todo: POST, Setup, System Test, reinicio, reloj y disco |
| M280 | POST y teclado con una versión anterior | Guardar el Setup, que aún no puede; arranque de DOS y disco GO723 |
| PCS 286 y Dario 286 | Probados a fondo en versiones anteriores | POST con 1, 2 y 4 MB tras la corrección de memoria |
Descarga
La versión está en la página de la alpha.4 en GitHub, solo para Windows de 64 bits. Se descomprime en una carpeta nueva y se abre BluMach.exe. La guía de la versión explica la instalación, el firmware que pide cada máquina y las limitaciones conocidas.
Si algo falla, abre un aviso en GitHub con la versión, la máquina, la BIOS, la memoria, el disco y los pasos para reproducirlo.