refleje siempre el último byte enviado a la puerta IFFDh
.
Tal como ilustra el ejemplo an
terior, la
técnica
consiste en copiar la variable en el acumulador
,
modificar los
bits
rele
vantes, actualizar la variable de
sistema
y realizar la conmutación con una
instru cción
OUT. Las interrupciones tienen que estar inhibidas en todo momento en que la variable
de sistema no refleje el estado de la puerta. Puesto que la puerta I FFDh no
se limita
a
controlar la conmutación de las ROM, sería incorrecto dar a la variable valores absolutos;
lo que se debe hacer es modificar solamente los bits pertinentes, utilizando instrucciones
SETjRES
o bien
AND/OR
con la máscara de bits adecu
ada
.
De la misma forma que BANK678 refleja el valor enviado a IFFDh, BANKM debe estar
permanentemente actualizada con el último valor enviado a la puerta 7FFDh.
Tampoco
en este caso se debe usar valores absolutos, pues ciertos
bits
de esta puerta sirven para
otros propósitos. Por ejemplo, los 3 bits inferiores
seleccion an
la página de RAM que es
encajada en la zona de COOOh a FFFFh (como se puede observar en el ejemplo anterior)
.
Desde luego, cuando haya que controlar varios bits
a
un tiempo, la forma más
rápida
es
usar AND u OR con la máscara adecuada. El sistema de paginación de la RAM está des
crito en la Sección 24, en el apartado 'Gestión de la memoria'.
El ejemplo anterior
demostraba
la forma más sencilla de invocar rutinas de DOS
.
En el
siguiente
mostraremos
un par de técnicas adicionales que pueden ser
muy
útiles.
Sin
em
bargo, si usted no tiene cierta soltura en la programación en ensamblador, quizá sea prefe
rible que ignore este ejemplo
.
En la Sección 20 de este capítulo dijimos que la opción Cargador del menú de
presentación
primero busca en el disco el fichero llamado
*,
después el fichero
DISK
y finalmente, si
no encuentra ninguno de los dos, carga el primero que encuentra en la cinta. Pero ésta
no es la historia completa. En realidad, la primera operación consiste en intentar cargar
un sector de inicialización desde el disco de la unidad A. El sistema utiliza como cargador
de inicialización el sector de la cara Oy pista O, a condición de que la suma de comproba
ción de este sector sea
3.
El siguiente programa asegura que la suma de comprobación
de los 512 bytes cumple este requisito y luego
escribe
la información en la
posición
correc
ta en el disco. Una vez modificado el disco de esta forma, se puede usar la opción Carga
dor para cargarlo y ejecutarlo automáticamente. También se puede usar
la
orden
LOAD
"*"
de BASIC.
Este
ejemplo ha sido desarrollado con la ayuda de M80 en una máquina basada en CP
1M;
el método por el que se asegura que el programa
ensamblado
quede referido a
la
dirección
correcta puede ser distinto en otros ensambladores.
;
Este programa escribe un
sector de
inicialización en el
disco de la unidad
A
; escrit o
por
Cliff Lawson
;
copy right (el AM5TRAD
Pie,
1987
,zBO
;ignore
esto si
su
ensamblador no es MBO
Capítulo 8. Guía de
programación en
+3
BASIC
216