Llamadas A +3Dos Desde Ba51C - AMSTRAD sinclair ZX Spectrum +3 Manual Del Usario

Tabla de contenido
Hay una serie de problemas típicos que se presentan sistemáticamente cuando se programa
en código de máquina un sistema de conmutación de bancos como el del +3
.
Si a usted
le ocurre lo mismo, compruebe que su pila no está siendo conmutada durante las interrup­
ciones, y que su rutina de interrupción está siempre donde debe estar (es conveniente inhi­
bir las interrupciones durante las operaciones de paginación). También es recomendable
que guarde una copia del registro de bancos actual en algún lugar no paginado de la RAM,
ya que la puerta es de sólo escritura
.
BASlC y el editor usan las variables de sistema
BANKM y BANK678 para 7FFDh y 1FFDh, respectivamente.
Si hace llamadas a +3DOS, no olvide que las interrupciones tienen que estar habilitadas
al entrar en las rutinas. Recuerde también que la pila tiene que estar por debajo de BFEOh
(49120) y por encima de 4000h (16384), Y que tiene que haber al menos 50 palabras de
espacio para la pila.
El programa de código de máquina se puede grabar con toda facilidad:
SAVE
"nombre"
CODE 65268.4
No hay ninguna manera de grabar el programa de forma que se ejecute automáticamente
a sí mismo una vez cargado. No obstante, esto se remedia empleando un pequeño progra­
ma de BASIC:
10 LOAD
"nombre"
CODE 65268.4
20 PRINT USR 65268
que debe ser grabado como programa independiente (si es en la cinta, inmediatamente an­
tes que el código de máquina) con la orden:
SAVE "cargador" UNE 10
Hecho esto, se puede ejecutar el código de máquina desde BASIC con sólo dar la orden:
LOAD "cargador"
que carga y ejecuta automáticamente el programa de BASIC, el cual a su vez carga y eje­
cuta el código de máquina.
Llamadas a +3DOS desde BA51C
Al utilizar la función
USR
de BASIC, éste transfiere el control a la rutina de código de
máquina especificada; la memoria está entonces configurada según se indica en la siguien­
te figura (a la izquierda). La ROM encajada en la zona inferior de la memoria (OOOOh a
3FFFh) es ROM 3 (la de 48 BASIC). La página de RAM encajada en el extremo superior
es la página O; la pila de máquina reside en esta zona (a menos que se la haya trasladado
con una orden
CLEAR
a alguna posición por debajo de COOOh). Según veremos en la Sec­
ción 27 (en la que están descritas las rutinas de +3DOS), para poder invocar +3DOS es
necesario que la página 7 de RAM se encuentre en la zona superior de la memoria, que
Capítulo 8. Guía de programación en +3 BASIC
212
Tabla de contenido
loading

Tabla de contenido