QL Programación Avanzada
Anterior Siguiente

Apéndice C - Especificaciones de la ROM enchufable

Introducción

Este apéndice puede ser de interés para aquellos que quieran añadir sus propios programas de utilidad al QL, en formato de ROM. También puede ser de interés para los que quieran saber como conecta el QDOS las rutinas suministradas en ROM.

La ranura de cartuchos ROM se encuentra en la parte trasera del QL. Esta ROM se conecta directamente en el circuito impreso del QL, mediante un conector para circuito impreso de 30 vías a doble cara. Esto permite conectar ROMs de hasta 16K de tamaño. El cartucho puede contener, por ejemplo:

1. Programas que pueden reemplazar al SuperBASIC tales como nuevos lenguajes como LISP, PASCAL, BCPL, ensambladores, utilidades para depuración de programas, aplicaciones especializadas, etc.

2. Programas que se pueden conectar al SuperBASIC para añadir procedimientos nuevos.


Figura C.1 Señales en la ranura de la ROM

Conexiones de 'hardware'

En la ranura de la ROM se proporcionan una gran variedad de señales útiles. La 16 líneas de dirección permiten direccionar hasta 64k octetos de ROM, pero en la práctica sólo hay 16K disponibles en el mapa de memoria (ver apéndice A). Las líneas de datos permiten transferir octetos desde la ROM al microprocesador 68008. ROMOE es una señal, activa cuando está baja, que habilita a la ROM para salida cuando el 68008 intenta leerla. Finalmente, hay dos líneas de alimentación con 0 y +5 voltios, respectivamente. En la figura C.1 se puede ver la dispodición de las diferentes señales.

Especificaciones de los programas en ROM

Los programas de la ROM enchufable tienen varios aspectos. Primero, debe haber una secuencia especial para el reconocimiento de la ROM, que comprueba el QDOS. Si existe esta secuencia, reconoce que hay una ROM conectada en la parte trasera del QL. Segundo, una vez que se ha cerciorado de que hay una ROM ahí, el QDOS debe ser capaz de encontrar las rutinas que quiere usar, y conectarlas dentro del sistema.

El código especial de reconocimiento se debe colocar al principio de la ROM y es 4AFB0001 Hex seguido de la cabecera del controlador. Esta cabecera apunta a una lista de procedimientos y funciones BASIC dentro de la ROM, junto con las direcciones de iniciación de las rutinas. Hay también una cadena que identifica la ROM. El formato de la cabecera es:

00palabra larga indicador de reconocimiento ($4AFE0001)
04apuntador a la lista de procedimientos y funciones
06apuntador a la rutina de iniciación
08cadena que identifica la ROM

Todos los apuntadores son relativos a la dirección base de la ROM. La cadena que identifica la ROM debe estar en forma de contador de caracteres (palabra) seguido por los caracteres ASCII de la descripción del dispositivo. Esta cadena debe terminar con un <LF>. Se recomienda no pasar de 36 caracteres.

La lista de los procedimientos y funciones debe estar en el siguiente formato:

palabranúmero de procedimientos

por cada procedimiento:

palabraapuntador a la rutina de la ROM
octetolongitud del nombre del procedimiento
caracteresnombre

seguido por:

palabracero al final de un procedimiento
palabranúmero de funciones

y por cada función:

palabraapuntador a la rutina en la ROM
octetolongitud del nombre de la función
caracteresnombre

y finalmente:

palabraigual a cero al final de las funciones

el código de las rutinas puede empezar en este punto hasta rellenar el resto de la ROM.

La secuencia de los eventos, cuando se enciende la máquina, es la siguiente. Primero, se comprueba el indicador de reconocimiento de la ROM. Si hay una ROM presente, la máquina conecta los procedimientos BASIC adicionales que incluye la ROM. El número de procedimientos y funciones se usa para reservar espacio en las tablas internas en RAM. Si la longitud del nombre del procedimiento o función, excede de 7, el número efectivo de procedimientos y funciones se calcula como (número total de caracteres + número de funciones o procedimientos + 7)/8. Después de conectarse al BASIC, se llama a la rutina de iniciación (en modo usuario). Esta rutina no debe modificar A6, y debe restaurar A0 (la ID de la ventana inicial) y A3 (el apuntador a la ROM), antes de retornar. Se pueden usar hasta 128 octetos en la pila de usuario.

Finalmente, para más información sobre la forma de escribir controladores de dispositivo, refierase al capítulo 9.


Anterior Tabla de contenidos Siguiente
Sumario del juego de instrucciones del 68008   Formato de los Microdrives