Hay algunos detalles en este ejemplo que vale la pena resaltar. En primer lugar, dado que
BASIC normalmente tiene la dirección de la variable de sistema ERILNR en IY (para
facilitar las referencias a sus variables de sistema), es imprescindible guardar IY antes de
hacer cualquier otra cosa y luego restaurarlo antes de retornar a la
USR
original.
Al igual que antes, hemos trasladado la pila a los 32K centrales. De esta manera podemos
invocar las rutinas de +3DOS sin tener que volver a trasladarla.
La rutina 'irdos' puede ser útil en cualquier programa. Sólo utiliza el registro IY, que el
sistema +3DOS no necesita, y puede hacer llamadas a cualquier rutina de +3DOS.
El programa invoca DOS REF XDPB para hacer que IX apunte al XDPB de la unidad
A. Después 'reconoce' el disco de A, paso imprescindible para poder escribir en él. Luego
calcula y ajusta la suma de comprobación de los bytes que van a ser transferidos al sector
de carga del
disco.
Y finalmente invoca DD ESCR SECTOR para escribir el sector.
Por no complicar las cosas, ni siquiera hemos comprobado que existe el interfaz de disco,
y hemos ignorado los posibles
errores.
Esta rutina puede ser puesta en marcha desde BA
SIC con la orden:
USR 286n
la cual entrega, a su retorno, el número que haya quedado en BC.
Los primeros 16 bytes del sector de carga constituyen una especificación de disco
estándar.
A continuación viene el código de máquina que forma el cargador de inicialización, cuyo
punto de entrada es FElOh. Tal como explicaremos en la Sección 27 a propósito del inter
faz para DOS CARGAR, la memoria consistirá inicialmente en las páginas 4, 7, 6, 3; las
variables de sistema de BASlC permanecen intactas, de modo que se puede usar BASIC
encajando la ROM correcta (la 3) en la parte inferior de la memoria y asegurándose de
que la página 5 está entre 4000h y 7FFFh.
Este sencillo programa cargador no hace más que usar la ROM de BASIC para escribir
un mensaje y luego entrar en un bucle que cambia el color del borde de la pantalla. Usted
podría modificarlo, por ejemplo, para que cargase un fichero binario e iniciase su eje
cución.
Capítulo 8. Guía de programación en +3 BASIC
220