Llevo desde niño pensando que la velocidad que aparecía en el Setup de mi PCS 286 era la del procesador. En el Extended Set-Up hay una opción con tres valores, 12/12, 12/6 y 6/6, y yo daba por hecho que «12» eran los megahercios del 286 y «6» un modo lento para juegos antiguos.
Revisando la emulación en BluMach he descubierto que no. Y no era lo único.
Qué significa el 12/12
El texto de la propia BIOS lo dice, aunque nunca me había fijado: Select frequency (RAM/IO). El primer número es la frecuencia de la memoria y el segundo, la del bus de expansión, donde van las tarjetas ISA. El procesador sigue a 12 MHz en los tres casos; lo que cambia es cuánto tiene que esperar a la memoria o a las tarjetas. El manual técnico del Triumph-Adler Dario 286, que usa la misma placa que el PCS 286, lo confirma: la tecla cambia la frecuencia «para memoria y reloj de E/S» entre 6 y 12 MHz.
En la práctica el efecto se parece mucho al de un botón Turbo, y por eso la confusión era tan fácil. Pero no es lo mismo: el procesador no se frena, solo espera más a la memoria y a las tarjetas.
Las tres máquinas Olivetti que he revisado guardan esa opción de forma distinta:
- PCS 286 (BIOS 1.42): se guarda en el CMOS y, al arrancar, la BIOS se la pasa al controlador del teclado con una orden propia de Olivetti (en estos equipos, el controlador del teclado también gestionaba parte de la configuración de la placa).
- PCS 286/S con placa TI (BIOS 2.06): se guarda en otro byte del CMOS y se programa directamente en el chipset de Texas Instruments.
- PCS 386SX (BIOS 1.14): aquí son tres valores, RAM, E/S y coprocesador: 16/8/16, 16/16/16 u 8/8/8. La opción de E/S a 16 MHz se guarda, pero la BIOS nunca la aplica.
El ajuste que volvía solo a 12/12
En el PCS 286 emulado pasaba algo raro: elegía 12/6, guardaba, reiniciaba… y volvía a estar en 12/12.
Al principio pensé que me estaba equivocando al guardar. Al final hizo falta poner un registro de cada escritura en el CMOS. El Setup sí guardaba 12/6. Lo que pasaba es que, en el arranque siguiente, la BIOS le preguntaba al controlador del teclado por una señal de la placa y, según su valor, volvía a escribir los valores de fábrica en esos bytes, en cada arranque.
Esos bytes guardan la frecuencia, el idioma del teclado y la contraseña. El manual técnico del Dario 286 documenta un puente llamado A11 «PASSWORT», con dos posiciones: activar o desactivar la contraseña. Probablemente esa señal sea ese puente: en la posición de «desactivada», la BIOS borra la contraseña en cada arranque y además devuelve la frecuencia y el idioma a los de fábrica. El emulador se comportaba como si el puente estuviera en esa posición, así que nada de eso sobrevivía a un reinicio. Ahora se comporta como si estuviera en «activada».
En el PCS 386SX la BIOS hace la misma comprobación, aunque para esa placa no tengo documentación que lo confirme.
Corregido eso, apareció otro problema en el PCS 386SX: al cambiar esa señal, algunas máquinas virtuales se quedaban en el Setup con un error de disco «HDU 255». Esos bytes del CMOS nunca se habían rellenado, porque la BIOS siempre los machacaba antes. BluMach los repara ahora una sola vez, con los mismos valores de fábrica que escribía la BIOS.
Una disquetera que solo podía ser externa
Mi PCS 286 real no me deja poner dos disqueteras si tiene disco duro. La limitación existe, pero no viene de la BIOS, sino de la caja.
La BIOS solo ofrece la unidad B si al arrancar ha detectado dos disqueteras. En la caja hay dos huecos: si uno lo ocupa el disco duro, solo cabe una disquetera interna. Una segunda solo podía ser externa, y entonces sí aparece. BluMach siempre le decía a la BIOS «hay una», con o sin disco. Ahora le dice las que tenga configuradas la máquina virtual; con disco duro, eso equivale a tener una externa.
Opciones ocultas en la BIOS
La BIOS 2.06 de la placa TI tiene textos para elegir el tamaño de la shadow RAM, repartir la memoria entre extendida y expandida, ajustar el volumen del zumbador o fijar por separado las frecuencias de RAM, E/S y coprocesador. Esperaba encontrarlas al ampliar la memoria de la máquina virtual, pero no aparecen nunca.
Desensamblando el Setup se ve por qué: ninguna tecla lleva a ellas. Creo que esa BIOS comparte código con otras placas de Olivetti que sí tenían esas opciones, y que en esta se quedaron como restos. No hay nada que emular.
El PCS 386SX sí tiene shadow RAM y EMS en su Setup. Ahí el problema era del propio emulador, que reescribía esas opciones en cada arranque. Eso también está corregido, aunque todavía me falta comprobarlo con calma.
Lo que queda abierto
En BluMach, la frecuencia ya se aplica: el bus de expansión va a 12 o a 6 MHz, y la memoria lenta se simula de forma aproximada, duplicando sus tiempos de acceso. No es una reproducción exacta del chipset; es lo mínimo para que los modos lentos se noten.
Me queda una pregunta que solo puede contestar la máquina real: en el modo 6/6, ¿baja también el reloj del procesador o solo la memoria y el bus? Tengo un PCS 286 en casa y pienso medirlo, pero eso será ya otro día.
Todo esto está en BluMach 0.1.0-alpha.3. En la ficha de cada máquina, dentro del catálogo de BluMach, queda anotado qué guarda cada opción del Setup y qué hace el emulador con ella.