QL Programación Avanzada | ||
---|---|---|
Anterior | Siguiente |
En el capítulo 6 hemos tratado los conceptos y procedimientos para asignar canales E/S. Para usar los canales asignados es necesario analizar los datos que se mandan y reciben desde el canal.
Los TRAPs que se encargan de la utilización de los canales se pueden dividir en tres grupos bien definidos. Estos grupos se resumen en las siguientes subsecciones.
Aquí se trata la E/S totalmente redireccionable del QL. Las operaciones de E/S serie incluyen el teclado, líneas serie RS232, pantalla, impresora, microdrives, etc. (sujetos como es lógico a las restricciones de lectura/escritura propias de cada dispositivo). Sólo se necesita especificar el número de canal al que se van a mandar o del que se van a recibir los datos. Toda la información sobre las características particulares de cada fichero se ha especificado ya en el proceso de OPEN (ver capítulo 6).
Cuando tratamos con el sistema de E/S totalmente redireccionable, hay tres posibles estados de retorno. El retorno se puede inhibir hasta que el proceso especificado se haya completado, forzar a que ocurra inmediatamente (ej. sin esperar), o programarlo para que ocurra después de un periodo de tiempo predefinido (o si se completa antes el proceso). El periodo de espera se especifica como cero, un tiempo entre 0 y 10 minutos o indefinidamente. El incremento de tiempo es un número múltiplo de 50 ó 60 Hz.
D0 | Nombre | Descripción |
---|---|---|
00 | IO.PEND | Comprueba una entrada pendiente |
01 | IO.FBYTE | Recoje un octeto |
02 | IO.FLINE | Recoje una línea de caracteres terminada en <LF> |
03 | IO.FSTRG | Recoje una cadena de octetos |
04 | IO.EDLIN | Edita una línea de caracteres (sólo en la consola) |
05 | IO.SBYTE | Manda un octeto |
07 | IO.SSTRG | Manda una cadena de octetos |
El control de la pantalla no es por sí mismo una parte del sistema redireccionable de E/S. Sin embargo, la pantalla es una parte integral del QL y como tal debe ser incluida en la utilización de E/S. Por medio del control de salida a pantalla se llevan a cabo procesos tales como modificar una ventana, controlar el cursor, hacer 'scroll' y poner los colores. La operación de sacar caracteres a la pantalla se puede realizar haciendo OPEN a CON_ o SCR_ canal. Esto es parte del sistema redireccionable de E/S.
D0 | Nombre | Descripción |
---|---|---|
09 | SD.EXTOP | Invoca a una rutina adicional como parte del controlador de pantalla |
0A | SD.PXENQ | Devuelve al tamaño de ventana y posición del cursor (en puntos) |
0B | SD.CHENQ | Devuelve el tamaño de ventana y posición del cursor (en caracteres) |
0C | SD.BORDR | Pone el borde de un color |
0D | SD.WDEF | Redefine una ventana |
0E | SD.CURE | Habilita el cursor |
0F | SD.CURS | Suprime el cursor |
10 | SD.POS | Posiciona el cursor en la fila, columna en intervalos de carácter |
11 | SD.TAB | Posiciona el cursor en cualquier columna de caracteres definida |
12 | SD.NL | Posiciona el cursor en una nueva línea de caracteres |
13 | SD.PCOL | Posiciona el cursor en la columna anterior |
14 | SD.NCOL | Posiciona el cursor en la siguiente columna |
15 | SD.PROW | Posiciona el cursor en la línea anterior |
16 | SD.NROW | Posiciona el cursor en la siguiente línea |
17 | SD.PIXP | Posiciona el cursor en coordenadas de puntos |
18 | SD.SCROL | 'Scroll' de toda una ventana |
19 | SD.SCRTP | 'Scroll' de la parte superior de una ventana |
1A | SD.SCRBT | 'Scroll' de la parte inferior de una ventana |
1B | SD.PAN | Mueve lateralmente una ventana |
1E | SD.PANLN | Mueve lateralmente la línea del cursor |
1F | SD.PANRT | Mueve lateralmente la parte derecha de la línea del cursor |
20 | SD.CLEAR | Limpia toda una ventana |
21 | SD.CLRTP | Limpia la parte alta de una ventana |
22 | SD.CLRBT | Limpia la parte baja de una ventana |
23 | SD.CLRLN | Limpia la línea del cursor |
24 | SD.CLRRT | Limpia la parte derecha de la línea del cursor |
25 | SD.FOUNT | Pone y quita un juego de caracteres |
26 | SD.RECOL | Recolorea una ventana |
27 | SD.SETPA | Pone el color del papel |
28 | SD.SETST | Pone el color del punteado |
29 | SD.SETIN | Pone el color de la tinta |
2A | SD.SETFL | Pone el parpadeo |
2B | SD.SETUL | Pone el subrayado |
2C | SD.SETMD | Pone el modo caracteres o gráficos |
2D | SD.SETSZ | Pone tamaño de los caracteres y espaciado |
2E | SD.FILL | Rellena bloques rectangulares en las ventanas |
30 | SD.POINT | Dibuja un punto |
31 | SD.LINE | Dibuja una línea |
32 | SD.ARC | Dibuja un arco |
33 | SD.ELIPS | Dibuja una elipse |
34 | SD.SCALE | Pone la escala de una ventana |
35 | SD.FLOOD | Pone o quita el relleno de un área gráfica |
36 | SD.GCUR | Pone la posición del cursor gráfico |
El manejo de ficheros se puede realizar ampliamente con el sistema redireccionable de E/S. Por ejemplo, se pueden transferir ficheros enteros entre microdrives y las puertas RS232 sin problemas. En este capítulo se tratan dos áreas básicas de manejo de ficheros. Éstas son la carga y salvado de ficheros completos, y tratamiento de ficheros de acceso directo y de registros estructurados.
D0 | Nombre | Descripción |
---|---|---|
40 | FS.CHECK | Comprueba todas las operaciones pendientes de un fichero |
41 | FS.FLUSH | Borra la memoria intermedia de un fichero |
42 | FS.POSAB | Posiciona el apuntador de fichero a una posición absoluta en el fichero |
43 | FS.POSRE | Posiciona el apuntador de fichero a una posición relativa en el fichero |
45 | FS.MDINF | Obtiene información sobre el medio |
46 | FS.HEADS | Pone una cabecera de fichero |
47 | FS.HEADR | Lee una cabecera de fichero |
48 | FS.LOAD | Carga un fichero en memoria |
49 | FS.SAVE | Salva un fichero desde memoria |
La E/S serie se refiere a la transferencia de octetos o caracteres. Esta transferencia es totalmente redireccionable, por lo tanto la salida se puede cambiar de la pantalla a la impresora (por ejemplo) redefiniendo simplemente el canal de transferencia. El proceso detallado de los datos a un periférico determinado es ejecutado por un controlador de dispositivo. Esta pieza de 'software' asegura que el QDOS pueda hablar con cualquier periférico de una forma estándar, a pesar de que los detalles de operación de estos periféricos pueden variar ampliamente.
La transferencia serie por octetos se suele usar cuando el job que trata los datos debe controlar la acción del controlador. En estos casos, los octetos representan códigos de control que deben ser procesados por el job y no por el controlador.
La alternativa a mandar octetos individuales es mandar cadenas completas. La transferencia de estas cadenas es mucho más eficiente que transferir los ficheros de octeto en octeto. Cuando se lee una cadena con un tiempo de espera de cero, solamente se pueden leer los octetos que están disponibles en un tiempo determinado. La transferencia de cadenas debe usar tanta memoria intermedia como sea posible. Si ésta es muy pequeña, el proceso de transferecia entre ficheros será ineficiente (a menos que el fichero contenga solamente un pequeño número de octetos).
Es importante usar la facilidad del tiempo de espera con cuidado cuando está accediendo más de un job al mismo canal. Esto es debido a un posible problema de acceso de clases. Por ejemplo, si un job está esperando por una ES y otro job requiere otra ES en el mismo canal, entonces, suponiendo que el periodo de espera no sea cero, el segundo job será replanificado y no se ejecutará hasta que el primer job haya terminado su espera (porque haya terminado su tarea o vencido el tiempo de espera). El periodo de espera del segundo job no empezará hasta que haga realmente el acceso al canal y no desde cuando lo intentó la primera vez.
Las llamadas al sistema de E/S serie se pueden dividir en tres tipos de retorno diferentes, dependiendo de la aplicación. Las opciones son:
Esta opción de retorno no volverá hasta que se haya completado el proceso requerido. Este tipo de llamada se debe usar con mucho cuidado, ya que si el evento del proceso permanece incompleto, el job que lo llamó puede permanecer inactivo eternamente.
Esta opción es la opuesta a la anterior. Cuando se realiza esta llamada, se realizarán todos los procesos que vayan a ser afectados inmediatamente. Todo lo que no se pueda realizar instantáneamente permanecerá sin terminar. Tenga en cuenta que si una llamada de salida retorna incompleta (ej. la memoria intermedia del canal está temporalmente llena), permanecerá incompleta. Los datos originales no habrán sido mandados, y deben ser reenviados posteriormente para que no se pierdan.
Esta opción retornará después de un tiempo predefinido o cuando se haya completado la tarea (si ocurre antes de que el periodo de espera se haya terminado). Un ejemplo del uso de este tipo de periodo puede ser un RS232 conectado a un teclado. Si no se pulsa una tecla en 10 minutos, por ejemplo, la llamada de lectura del teclado terminará su periodo de espera y puede desconectar el teclado del QL. Todos los tiempos se calculan en periodos de refresco de la pantalla, 50/60 Hz. El periodo de espera para las llamadas de E/S serie se pasa en D3 y no se modifica por los TRAPs.
Todas las opciones de retorno anteriores están disponibles a través de una llamada. Cada una de ellas se caracteriza por la longitud máxima de espera permitida. El periodo de espera puede ser cero, definido o ilimitado. Para definir el número de ciclos de cuadro antes del retorno se usa una palabra, que puede tomar un valor máximo de 32767 (once minutos). Un periodo de espera de -1 indica que se debe esperar indefinidamente. No se debe usar ningún otro valor negativo.
IO.PEND | TRAP #3 | D0=0 |
Comprueba una entrada pendiente
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
EF | fin del fichero |
Descripción:
Este TRAP comprueba una entrada pendiente en un canal. La información se devuelve al programa que lo lanzó por medio del código de error. No lee ningún dato ni modifica el canal de entrada de ninguna forma. En las primeras versiones del QDOS, este TRAP no se puede realizar cuando se usa con el controlador de la consola, se debe usar IO.FBYTE en su lugar.
IO.FBYTE | TRAP #3 | D0=1 |
Recoje un octeto
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1.B | octeto recibido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
EF | fin del fichero |
Descripción:
Este TRAP recoge un octeto del canal definido con un periodo de espera programado. El octeto recogido (si hay alguno) lo devuelve en el registro D1.
IO.FLINE | TRAP #3 | D0=2 |
Recoge una línea de caracteres terminados por <LF>
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1.W | número de octetos recogidos | ||
D2.W | longitud memoria intermedia | D2.W | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base de memoria intermedia | A1 | apuntador nuevo a memoria intermedia | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
EF | fin del fichero | ||
BO | rebosamiento de la memoria intermedia |
Descripción:
Con este TRAP se puede recoger una línea de caracteres. El número de caracteres en la línea (incluido el <LF>) se devuelve en el registro D1. Para todas las lecturas múltiples de un octeto, el periodo de espera es el máximo periodo de espera desde el lanzamiento del TRAP, y no el timepo entre octetos consecutivos. Por lo tanto no se puede usar el periodo de espera para detectar si el operador está tecleando muy lentamente. El máximo número de octetos que se pueden recoger dentro del límite de tiempo, son los que se obtienen.
El recoger una línea de caracteres de la consola tiene un significado especial. Todos los caracteres se van escribiendo en la ventana correspondiente de la pantalla, a medida que se introducen desde el teclado. Cuando se usa este TRAP, el cursor se habilita en la ventana, y se inhabilita una vez que se ha leído la línea. Para modificar la línea se pueden usar las teclas de control del cursor, del modo normal:
⇐ | mueve el cursor hacia la izquierda | ||
⇒ | mueve el cursor hacia la derecha | ||
CTRL + ⇐ | borra un carácter a la izquierda | ||
CTRL + ⇒ | borra un carácter a la derecha |
IO.FSTRG | TRAP #3 | D0=3 |
Recoge una cadena de octetos
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1.W | número de octetos recogidos | ||
D2.W | longitud memoria intermedia | D2.W | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base de memoria intermedia | A1 | apuntador nuevo a memoria intermedia | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
EF | fin del fichero |
Descripción:
Este TRAP recoge una cadena de octetos del canal asignado. Si éstos vienen del teclado, no serán impresos en la pantalla y no se podrá manejar el cursor desde la aplicación. Todo esto se puede conseguir mediante el TRAP IO.FLINE (TRAP #3, D0=2). Si se pasa en A1 un apuntador a una matriz de caracteres, a la vuelta apuntará al siguiente octeto.
IO.EDLIN | TRAP #3 | D0=4 |
Edita una línea de caracteres (sólo en consola)
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.L | longitud cursor/línea | D1.L | longitud cursor/línea | |
D2.W | longitud memoria intermedia | D2 | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base final línea | A1 | apuntador final de línea | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
BO | rebosamiento de la memoria intermedia |
Descripción:
Este TRAP es similar a IO.FLINE, pero con ciertas diferencias. Se puede usar para editar una línea. A1 debe apuntar siempre al final de la línea. En D1 se pasa la posición del cursor en la palabra alta, y la longitud de la línea en la inferior. De este modo se puede editar la línea fácilmente, se escribe (desde la posición actual del cursor) a la consola cada vez que se lanza el TRAP. Una vez lanzado, la línea no debe tener carácter de terminación. Sin embargo, a la vuelta, el carácter de terminación se incluirá en la cuenta de caracteres. Se pueden usar como caracteres válidos de terminación <CTRL J>, <ENTER>, cursor arriba o cursor abajo.
IO.SBYTE | TRAP #3 | D0=5 |
Manda un octeto
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | octeto a mandar | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
DF | unidad llena | ||
OR | fuera de rango |
Descripción:
Con este TRAP se pueden mandar octetos separados a un canal. Para ciertos dispositivos, la espera en salida puede no operar de la forma esperada. El comportamiento esperado ocurre cuando el dispositivo de salida contiene algún tipo de memoria intermedia (ej. la memoria de una impresora). Todo esto es totalmente invisible para el sistema de E/S. Un retorno con la indicación de que se ha completado la transacción solamente significa que los octetos se han transferido al controlador del dispositivo, no implica necesariamente que hayan llegado al otro extremo del dispositivo (ej. que hayan sido impresos). Ver también IO.SSTRG.
IO.SSTRG | TRAP #3 | D0=7 |
Manda una cadena de octetos
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | número de octetos mandados | ||
D2.W | número de octetos a mandar | D2 | preservado | |
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base memoria intermedia | A1 | nuevo apuntador memoria intermedia | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
DF | unidad llena |
Descripción:
Con este TRAP se pueden mandar cadenas de octetos. Se han hecho algunas previsiones para generar nuevas líneas durante la salida a consola o pantalla. Cuando se manda un <LF>, ocurre la inserción automática de nuevas líneas, o si el cursor llega a la parte derecha de la pantalla. A diferencia del TRAP para mandar un octeto, éste no genera el error OR. En caso de que el cursor se haya suprimido, la nueva línea no queda afectada inmediatamente, y permanece pendiente. Se puede activar de las siguientes formas:
mandando otro octeto o cadena, | |
cambiando el tamaño de carácter, | |
activando el cursor, | |
o pidiendo la posición del cursor. |
Las nuevas líneas pendientes se cancelan si se posiciona el cursor. Ver también IO.SBYTE.
El control de la salida a pantalla cubre las operaciones de modificar ventanas, controlar el cursor, limpiar parte o toda la ventana, hacer 'scroll' y poner los colores. Ya que estas operaciones son específicas de la pantalla, estos TRAPs no forman parte del sistema redireccionable de E/S. Esto significa que puede ser posible escribir emuladores de controlador de pantalla que se pueden acceder con un TRAP #3.
SD.EXTOP | TRAP #3 | D0=9 |
Llama a una operación extendida
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | pasa a rutina usuario | D1 | devuelto por la rutina del usuario | |
D2 | pasa a rutina usuario | D2 | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | pasa a rutina usuario | A1 | devuelto por la rutina del usuario | |
A2 | dirección comienzo rutina | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este comando se puede llamar a una rutina proporcionada por el usuario, como si formara parte de controlador estándar de pantalla. El periodo de espera y el ID del canal se pasan en D3 y A0 como es usual. A2 contiene la dirección de comienzo de la rutina de usuario. Los demás registros D1, D2 y A1 pueden ser asignados por el programa de aplicación si se requiere.
SD.PXENQ | TRAP #3 | D0=A |
Obtiene tamaño ventana y posición del cursor (en puntos)
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | preservado | ||
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base del bloque pedido | A1 | indefinido | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este TRAP se puede averiguar el tamaño de la ventana asignada al canal definido. También se obtiene la posición actual del cursor dentro de esa ventana. Todas las posiciones se obtienen en coordenadas de puntos. El tamaño y la posición vienen en un bloque de petición de cuatro palabras. A1 apunta a la base de este bloque. Su formato es:
base | dimensión X de la ventana | ||
base+2 | dimensión Y de la ventana | ||
base+4 | posición X del cursor | ||
base+6 | posición Y del cursor |
La posición superior izquierda es 0,0.
SD.CHENQ | TRAP #3 | D0=B |
Obtiene tamaño ventana y posición del cursor (en caracteres)
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | preservado | ||
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base del bloque pedido | A1 | indefinido | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este TRAP se puede averiguar el tamaño de la ventana asignada al canal definido. También se obtiene la posición actual del cursor dentro de esa ventana. Todas las posiciones se obtienen en coordenadas de caracteres. El tamaño y la posición vienen en un bloque de petición de cuatro palabras. A1 apunta a la base de este bloque. Su formato es:
base | dimensión X de la ventana | ||
base+2 | dimensión Y de la ventana | ||
base+4 | posición X del cursor | ||
base+6 | posición Y del cursor |
La posición superior izquierda es 0,0.
SD.BORDR | TRAP #3 | D0=C |
Pone el ancho y color del borde
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | color | D1 | indefinido | |
D2.W | ancho | D2 | preservado | |
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | preservado | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Esta llamada se usa para redefinir el borde de una ventana. El valor por defecto es 0. El ancho del borde es doblado en los bordes verticales y cae dentro de los límites originales de la ventana. Cuando se cambia el ancho del borde, el cursor se pone en posición de inicio (0,0).
Todos los TRAPs que se llamen a continuación para definir la posición del cursor y los límites de la pantalla usan el tamaño nuevo de la ventana.
Las definiciones de color se tratan en la sección 7.3.9. En este TRAP disponemos de una definición nueva de color. Si definimos el color como $80 produciremos un borde transparente, lo que significa que no se altera el contenido original del borde.
SD.WDEF | TRAP #3 | D0=D |
Redefine una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | color del borde | D1 | indefinido | |
D2.W | ancho del borde | D2 | preservado | |
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base bloque ventana | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la ventana no cabe en la página |
Descripción:
Esta llamada permite redefinir la posición y el diseño de una ventana. El contenido de la ventana anterior no se mueve ni se modifica, pero el cursor se reposiciona en la esquina superior izquierda de la nueva ventana. El bloque de ventana contiene 4 palabras como siguen:
base | ancho ventana | ||
base+2 | alto ventana | ||
base+4 | origen X | ||
base+6 | origen Y |
Todos los TRAPs que se lancen a partir de éste para definir la posición del cursor y los límites de la ventana usarán el nuevo tamaño reducido de la ventana.
Las definiciones de color se tratan en la sección 7.3.9.
SD.CURE | TRAP #3 | D0=E |
Habilita el cursor
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP hace que se habilite el cursor en la ventana definida por el ID del canal. Siempre que se lance un TRAP para leer o editar una línea en una ventana, el cursor se habilitará automáticamente. No devolverá ningún error si el cursor ya está habilitado, en cuyo caso, este TRAP sólo se asegura de que lo esté.
SD.CURS | TRAP #3 | D0=F |
Suprime el cursor
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | preservado | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Esta llamada hace que desaparezca el cursor en el canal especificado. Si la ventana no tuviera ya el cursor, esta llamada no devolverá error.
SD.POS | TRAP #3 | D0=10 |
Posiciona el cursor (coordenadas de caracteres)
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | número de columna | D1 | indefinido | |
D2.W | número de línea | D2.L | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición está fuera de la ventana |
Descripción:
Este TRAP coloca el cursor en una posición absoluta de la pantalla, usando coordenadas de caracteres. La posición del cursor es la esquina superior izquierda del siguiente rectángulo de carácter. La posición de los rectángulos de carácter es relativa a la esquina superior izquierda de la ventana. Si el TRAP devuelve un error, el cursor no cambia de posición. Este TRAP cancela todas las nuevas líneas pendientes.
SD.TAB | TRAP #3 | D0=11 |
Posiciona el cursor en una columna de caracteres
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | número de columna | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición cae fuera de la ventana |
Descripción:
Este TRAP hace que se tabule el cursor a la columna especificada en el registro D1. El cursor se sitúa en la esquina superior izquierda del siguiente rectángulo de carácter. La posición de los rectángulos de carácter es relativa a la esquina superior izquierda de la ventana. Si el TRAP devuelve un error, el cursor no cambia de posición. Este TRAP cancela todas las nuevas líneas pendientes.
SD.NL | TRAP #3 | D0=12 |
Posiciona el cursor en una nueva línea de caracteres
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición está fuera de la ventana |
Descripción:
Este TRAP posiciona el cursor al principio de la siguiente línea de caracteres. El cursor se posiciona en la parte superior izquierda del siguiente rectángulo de carácter. La posición de los rectángulos de carácter es relativa a la esquina superior izquierda de la ventana. Si el TRAP devuelve un error, el cursor no cambia de posición. Este TRAP cancela todas las nuevas líneas pendientes.
SD.PCOL | TRAP #3 | D0=13 |
Posiciona el cursor en el carácter anterior
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición está fuera de la ventana |
Descripción:
Este TRAP posiciona el cursor en el carácter anterior. El cursor se posiciona en la parte superior izquierda del siguiente rectángulo de carácter. La posición de los rectángulos de carácter es relativa a la esquina superior izquierda de la ventana. Si el TRAP devuelve un error, el cursor no cambia de posición. Este TRAP cancela todas las nuevas líneas pendientes.
SD.NCOL | TRAP #3 | D0=14 |
Posiciona el cursor en el siguiente carácter
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición está fuera de la ventana |
Descripción:
Este TRAP posiciona el cursor en el siguiente carácter de la derecha. El cursor se posiciona en la parte superior izquierda del siguiente rectángulo de carácter. La posición de los rectángulos de carácter es relativa a la esquina superior izquierda de la ventana. Si el TRAP devuelve un error, el cursor no cambia de posición. Este TRAP cancela todas las nuevas líneas pendientes.
SD.PROW | TRAP #3 | D0=15 |
Posiciona el cursor en la línea anterior
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición está fuera de la ventana |
Descripción:
Mueve el cursor a la línea anterior. El cursor se posiciona en la parte superior izquierda del siguiente rectángulo de carácter. La posición de los rectángulos de carácter es relativa a la esquina superior izquierda de la ventana. Si el TRAP devuelve un error, el cursor no cambia de posición. Este TRAP cancela todas las nuevas líneas pendientes.
SD.NROW | TRAP #3 | D0=16 |
Posiciona el cursor en la línea siguiente
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición está fuera de la ventana |
Descripción:
Este TRAP posiciona el cursor en la línea siguiente. El cursor se posiciona en la parte superior izquierda del siguiente rectángulo de carácter. La posición de los rectángulos de carácter es relativa a la esquina superior izquierda de la ventana. Si el TRAP devuelve un error, el cursor no cambia de posición. Este TRAP cancela todas las nuevas líneas pendientes.
SD.PIXP | TRAP #3 | D0=17 |
Posiciona el cursor usando coordenadas de puntos
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | coordenada X | D1 | indefinido | |
D2.W | coordenada Y | D2.L | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | la posición está fuera de la ventana |
Descripción:
Con este TRAP se puede posicionar el cursor dentro de la pantalla. Todas las coordenadas son relativas a la esquina superior izquierda de la pantalla, que es la posición 0,0. La nueva línea pendiente dentro de la pantalla será cancelada. Si devuelve un error, el cursor no se mueve.
SD.SCROL | TRAP #3 | D0=18 |
Hace 'scroll' de una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | distancia del 'scroll' | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP hace que se mueva toda la ventana, hacia arriba o hacia abajo, el número de puntos que indica el registro D1. Las líneas que aparecen nuevas al hacer el 'scroll' se rellenan con el color del papel. Un valor positivo hace que se mueva la ventana hacia abajo. Una ventana de texto se suele mover hacia arriba, y requiere un valor negativo.
Ver también SD.SCRTP y SD.SCRBT para el 'scroll' parcial.
SD.SCRTP | TRAP #3 | D0=19 |
Hace 'scroll' de la parte superior de una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | distancia del 'scroll' | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP hace 'scroll' del contenido de la parte superior de la ventana. La división entre la parte superior e inferior de la ventana viene dada por la línea del cursor, que no se mueve. Las líneas que aparecen nuevas al hacer el 'scroll' se rellenan con el color del papel. Un valor positivo hace que se mueva la ventana hacia abajo. Una ventana de texto se suele mover hacia arriba, y requiere un valor negativo.
SD.SCRBT | TRAP #3 | D0=1A |
Hace 'scroll' de la parte inferior de una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | distancia del 'scroll' | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP hace 'scroll' del contenido de la parte inferior de la ventana. La división entre la parte superior e inferior de la ventana viene dada por la línea del cursor, que no se mueve. Las líneas que aparecen nuevas al hacer el 'scroll' se rellenan con el color del papel. Un valor positivo hace que se mueva la ventana hacia abajo. Una ventana de texto se suele mover hacia arriba, y requiere un valor negativo.
SD.PAN | TRAP #3 | D0=1B |
Mueve una ventana lateralmente
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | distancia a mover | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP hace que toda la ventana se mueva lateralmente el número de puntos deseado hacia la izquierda (argumento negativo) o hacia la derecha (argumento positivo). El espacio que se deja se rellena con el color del papel.
SD.PANLN | TRAP #3 | D0=1E |
Mueve laterlamente la línea del cursor
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | distancia a mover | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP hace que se mueva lateralmente la línea del cursor el número de puntos deseado hacia la izquierda (argumento negativo) o hacia la derecha (argumento positivo). El espacio que se deja se rellena con el color del papel. La línea del cursor puede tener 10 ó 20 puntos de altura, dependiendo del tamaño de caracteres seleccionado.
SD.PANRT | TRAP #3 | D0=1F |
Mueve lateralmente el final de la línea del cursor
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | distancia a mover | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP hace que se mueva lateralmente la parte derecha de la línea del cursor el número de puntos deseado hacia la izquierda (argumento negativo) o hacia la derecha (argumento positivo). El espacio que se deja se rellena con el color del papel. La parte derecha incluye el carácter sobre el que está situado el cursor.
SD.CLEAR | TRAP #3 | D0=20 |
Limpia toda una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este TRAP se puede limpiar una ventana completa. Todos los puntos de la ventana se ponen del color del papel. Se pueden limpiar otras partes de la ventana mediante los TRAPs SD.CLRTP, SD.CLRBT, SD.CLRLN y SD.CLRRT que limpian la parte superior, inferior, línea del cursor y final de la línea del cursor. La línea del cursor no se considera en la parte superior ni en la inferior de la ventana.
SD.CLRTP | TRAP #3 | D0=21 |
Limpia la parte superior de una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este TRAP se puede limpiar la parte superior de una ventana. Todos los puntos del área designada se ponen del color del papel. La línea del cursor hace de división entre la parte superior e inferior de la ventana (pero no está incluida en ninguna de ellas). También se pueden limpiar otras partes de la ventana.
SD.CLRBT | TRAP #3 | D0=22 |
Limpia la parte inferior de una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este TRAP se puede limpiar la parte inferior de una ventana. Todos los puntos del área designada se ponen del color del papel. La línea del cursor hace de división entre la parte superior e inferior de la ventana (pero no está incluida en ninguna de ellas). También se pueden limpiar otras partes de la ventana.
SD.CLRLN | TRAP #3 | D0=23 |
Limpia la línea del cursor
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este TRAP se puede limpiar la línea del cursor. Todos los puntos del área designada se ponen del color del papel. Se limpia la altura completa del tamaño de carácter (10 ó 20 puntos).
SD.CLRRT | TRAP #3 | D0=24 |
Limpia la parte derecha de la línea del cursor
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Con este TRAP se puede limpiar la parte derecha de la línea del cursor. Todos los puntos de la parte derecha de la línea se ponen del color del papel. Se limpia la altura completa del tamaño del carácter (10 ó 20 puntos).
SD.FOUNT | TRAP #3 | D0=25 |
Pone o quita el tipo de caracteres
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base de los caracteres | A1 | indefinido | |
A2 | base 2o tipo caracteres | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
DF | dispositivo lleno |
Descripción:
Los caracteres que van a salir a la pantalla se almacenan en una matriz de 5×9 puntos dentro de un rectángulo de 6×10. Esto asegura que los caracteres no se tocarán cuando se sitúen en celdas adyacentes. Hay un tipo por defecto y otro alternativo, dentro del QL, pero también se pueden seleccionar juegos de caracteres definidos por el usuario. El juego de caracteres por defecto incluye los códigos ASCII desde $20 a $7F, y el segundo se extiende desde $80 a $BF.
Cuando se cambia el juego, se selecciona el defecto, si la dirección base que se le proporciona es 0. El juego debe almacenarse en memoria en un formato especial. Por debajo de cierto valor, los caracteres serán inválidos ($1F en el defecto). Desde el siguiente valor ($1F en el defecto) son válidos un número determinado de caracteres ($61 en el defecto). El formato es como sigue:
$00 | carácter válido más pequeño (octeto) | ||
$01 | número de caracteres válidos − 1 (octeto) | ||
$02 a $0A | 9 octetos de puntos del 1er carácter válido | ||
$0B a $13 | 9 octetos de puntos del 2o carácter válido | ||
$14 a $1B | etc. |
Los puntos válidos se almacenan en los bits 6 al 2 (inclusive) de cada octeto de definición de carácter. La fila superior de cada carácter se deja en blanco, y por lo tanto no se debe almacenar con las otras filas.
Si el carácter no es válido en el primer juego, se usa el segundo. Si tampoco es válido en el segundo, se usa el carácter más bajo del segundo juego.
En el QL disponemos de dos modos de pantalla. El modo 8 es el de más baja resolución, 256×256 puntos con 8 colores más parpadeo. El modo 4 es el de más alta resolución, 512×256 puntos con 4 colores sin parpadeo. Los códigos de los colores son:
color | modo 256 | modo 512 |
---|---|---|
0 | negro | negro |
1 | azul | negro |
2 | rojo | rojo |
3 | magenta | rojo |
4 | verde | verde |
5 | cyan | verde |
6 | amarillo | blanco |
7 | blanco | blanco |
Además de los colores anteriores, se pueden crear áreas punteadas con dos colores, dentro de un cuadro de 2×2 puntos. Cuando se crea un área grande de este tipo, el punteado produce un efecto muy interesante.
El color base se coloca siempre en los bits 2 a 0 del octeto de color. Los bits 5 a 3 contienen el XOR del color y la plantilla del punteado. Si el segundo color es cero, el color aparece sólido. Los bits 7 y 6 se usan para indicar la plantilla de punteado, como se ve a continuación:
00sssbbb
un punto de (sss XOR bbb) por cada cuatro puntos
01sssbbb
barras horizontales de (sss XOR bbb)
10sssbbb
barras verticales de (sss XOR bbb)
11sssbbb
plantilla ajedrezada
SD.RECOL | TRAP #3 | D0=26 |
Cambia los colores de una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador lista colores | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Se pueden cambiar los colores de una ventana sin alterar la información que contiene. Este TRAP cambia cada uno de los ocho colores por otros nuevos. Algunos ordenadores cambian los atributos de la pantalla por 'hardaware', lo que permite que cambien los colores rápidamente, sin embargo, en el QL es mucho más lento ya que tiene que cambiar el valor de cada posición de memoria.
La lista para el cambio de color es de ocho octetos de longitud. Contiene los colores requeridos para cada uno de los existentes en la ventana. Cada uno de los colores nuevos debe estar en el rango de 0 a 7. En modo de 4 colores sólo se necesita rellenar los octetos 0, 2, 4 y 6.
SD.SETPA | TRAP #3 | D0=27 |
Pone el color del papel
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | color | D1 | preservado | |
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
El controlador de pantalla usa tres colores. Este TRAP se usa para poner el color del papel, que es el color de fondo de la ventana, y es con el que se rellena el espacio que aparece cuando se hace 'scroll', se mueve lateralmente o se limpia la ventana. Ver también SD.SETST y SD.SETIN para conocer la descripción de cada uno de los colores y su uso.
SD.SETST | TRAP #3 | D0=28 |
Pone el color del punteado
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | color | D1 | preservado | |
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
El controlador de pantalla usa tres colores. Este TRAP se usa para poner el color del punteado, que es el color que usa el generador de caracteres para resaltar el fondo de palabras o caracteres individuales. Por lo tanto, este color aparecerá siempre que se impriman caracteres en la pantalla. Ver también SD.SETPA y SD.SETIN para conocer la descripción de cada uno de los colores y su uso.
SD.SETIN | TRAP #3 | D0=29 |
Pone el color de la tinta
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | color | D1 | preservado | |
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
El controlador de pantalla usa tres colores. Este TRAP se usa para poner el color de la tinta, que es el color que se usa para escribir caracteres y dibujar gráficos. Ver también SD.SETST y SD.SETPA para conocer la descripción de cada uno de los colores y su uso.
SD.SETFL | TRAP #3 | D0=2A |
Pone el modo parpadeo
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | atributo de parpadeo | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP pone el modo parpadeo en los caracteres impresos. Si el atributo que se pasa en el registro D1 es 0, los caracteres se imprimen sin parpadeo, si no es 0, los caracteres que se impriman a continuación serán parpadeantes.
SD.SETUL | TRAP #3 | D0=2B |
Pone el modo subrayado
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | atributo de subrayado | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP pone el modo subrayado en los caracteres impresos. Si el atributo que se pasa en el registro D1 es 0, los caracteres se imprimen sin subrayado, si no es 0, los caracteres que se impriman a continuación serán subrayados.
SD.SETMD | TRAP #3 | D0=2C |
Pone el modo en carácter o dibujo
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | modo | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP permite definir la manera en que se producen los caracteres. Los siguientes modos son válidos:
D1=−1 | Se hace XOR de la tinta con el fondo. | |
D1=0 | El fondo del carácter está punteado, se dibuja con el color de la tinta. | |
D1=1 | El fondo del carácter es transparente, por lo que no se puede escribir encima, se dibuja en el color de la tinta. |
SD.SETSZ | TRAP #3 | D0=2D |
Pone el tamaño y espacio del carácter
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.W | ancho carácter / espaciado | D1 | indefinido | |
D2.W | alto carácter / espaciado | D2 | preservado | |
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP se usa para seleccionar el alto, ancho y espacio de los caracteres dentro de su rectángulo. El generador de caracteres soporta directamente dos anchos y altos de estándar. El ancho simple es de 5 puntos en un espacio de 6 u 8 puntos. El doble ancho es de 10 puntos en un espacio de 12 ó 16 puntos. El usuario puede producir otros espacios con controladores propios de pantalla, pero no son soportados directamente por este TRAP. El valor por defecto en modo simple es de 5 puntos en un cuadrado de 6. El valor por defecto en modo doble es de 10 puntos en un espacio de 12. En el modo de 8 colores solamente se pueden usar caracteres de doble ancho. Las llamadas con D1=0 ó 1 en modo de ocho colores aparecerán como si la llamada se hubiera hecho con D1 igual a 2 ó 3, pero no se genera error.
Disponemos de los siguientes anchos/espacio de caracteres:
0 | ancho simple (5 puntos) en espacio de 6 | ||
1 | ancho simple (5 puntos) en espacio de 8 | ||
2 | ancho doble (10 puntos) en espacio de 12 | ||
3 | ancho doble (10 puntos) en espacio de 16 |
Los siguientes valores son los de altura/espaciado:
0 | altura simple (9 puntos) en espacio de 10 | ||
1 | altura doble (18 puntos) en espacio de 20 |
SD.FILL | TRAP #3 | D0=2E |
Rellena un bloque rectangular en una ventana
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.B | color | D1 | indefinido | |
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base definición bloque | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
OR | el bloque está fuera de la ventana |
Descripción:
Este TRAP modifica un bloque rectangular dentro de una ventana. La definición del bloque consiste en 4 palabras en el siguiente formato:
base | ancho del bloque en puntos | ||
base+2 | alto del bloque en puntos | ||
base+4 | origen X del bloque (relativo al origen de ventana) | ||
base+6 | origen Y del bloque (relativo al origen de ventana) |
El color elegido puede escribirse directamente a la pantalla (de forma que cubra todo lo que hay en ella), o hacer XOR con el contenido de la misma. La manera particular de rellenarla se controla mediante el modo de impresión/dibujo que se haya definido con SD.SETMD (TRAP #3 con D0=$2C). También se pueden usar colores con punteado. Se puede conseguir una gran rapidez en el cambio de colores, dentro de un área particular de la ventana, poniendo el modo impresión/dibujo en modo −1 (XOR).
Truco útil: Resulta más rápido dibujar líneas horizontales y verticales con este TRAP que con el de dibujar una línea.
SD.POINT | TRAP #3 | D0=30 |
Dibuja un punto
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador pila aritmética | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP dibuja un punto dentro de una ventana. Opera del mismo modo que el comando POINT de SuperBASIC. Si el punto cae fuera de la ventana, no se dibuja. Los parámetros que necesita se le deben dar en la pila aritmética en formato de coma flotante (apuntado por A1). Se deben asignar por lo menos 240 octetos en la pila antes de llamarlo. Las coordenadas se refieren a un origen arbitrario (0,0 por defecto) con una escala arbitraria (la altura de la ventana por defecto es 100). Todos estos datos se pueden alterar mediante SD.SCALE.
Los parámetros requeridos son:
0(A1) | coordenada Y | ||
6(A1) | coordenada X |
Tenga en cuenta que 6(A1) significa 6 octetos después del punto que direcciona A1.
SD.LINE | TRAP #3 | D0=31 |
Dibuja una línea
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador pila aritmética | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP dibuja una línea dentro de una ventana. Opera del mismo modo que el comando LINE de SuperBASIC. Si alguna parte de la línea cae fuera de la ventana, ésta no se dibuja. Los parámetros que necesita se le deben dar en la pila aritmética en formato de coma flotante (apuntado por A1). Se deben asignar por lo menos 240 octetos en la pila antes de llamarlo. Las coordenadas se refieren a un origen arbitrario (0,0 por defecto) con una escala arbitraria (la altura de la ventana por defecto es 100). Todos estos datos se pueden alterar mediante SD.SCALE.
Los parámetros requeridos son:
0(A1) | coordenada Y del final de la línea | ||
6(A1) | coordenada X del final de la línea | ||
$C(A1) | coordenada Y del principio de la línea | ||
$12(A1) | coordenada X del principio de la línea |
Tenga en cuenta que 6(A1) significa 6 octetos después del punto que direcciona A1.
SD.ARC | TRAP #3 | D0=32 |
Dibuja un arco
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador pila aritmética | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP dibuja un arco dentro de una ventana. Opera del mismo modo que el comando ARC de SuperBASIC. Si alguna parte de la línea cae fuera de la ventana, ésta no se dibuja. Los parámetros que necesita se le deben dar en la pila aritmética en formato de coma flotante (apuntado por A1). Se deben asignar por lo menos 240 octetos en la pila antes de llamarlo. Las coordenadas se refieren a un origen arbitrario (0,0 por defecto) con una escala arbitraria (la altura de la ventana por defecto es 100). Todos estos datos se pueden alterar mediante SD.SCALE.
Los parámetros requeridos son:
0(A1) | ángulo del arco | ||
6(A1) | coordenada Y del final de la línea | ||
$C(A1) | coordenada X del final de la línea | ||
$12(A1) | coordenada Y del principio de la línea | ||
$18(A1) | coordenada X del principio de la línea |
Tenga en cuenta que 6(A1) significa 6 octetos después del punto que direcciona A1.
SD.ELIPS | TRAP #3 | D0=33 |
Dibuja una elipse
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador pila aritmética | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP dibuja una elipse dentro de una ventana. Opera del mismo modo que el comando CIRCLE de SuperBASIC. Si alguna parte de la línea cae fuera de la ventana, ésta no se dibuja. Los parámetros que necesita se le deben dar en la pila aritmética en formato de coma flotante (apuntado por A1). Se deben asignar por lo menos 240 octetos en la pila antes de llamarlo. Las coordenadas se refieren a un origen arbitrario (0,0 por defecto) con una escala arbitraria (la altura de la ventana por defecto es 100). Todos estos datos se pueden alterar mediante SD.SCALE.
Los parámetros requeridos son:
0(A1) | ángulo de rotación | ||
6(A1) | radio de la elipse | ||
$C(A1) | excentricidad de la elipse | ||
$12(A1) | coordenada Y del centro | ||
$18(A1) | coordenada X del centro |
Tenga en cuenta que 6(A1) significa 6 octetos después del punto que direcciona A1.
SD.SCALE | TRAP #3 | D0=34 |
Pone la escala para dibujar en la pantalla
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador pila aritmética | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP es el mismo que el SCALE de SuperBASIC. Permite alterar el factor de escala que usan todos los TRAPs gráficos. Se cambian dos facetas: el origen de los gráficos y la longitud máxima del eje de la X. El TRAP se puede usar para mover la ventana que se está usando alrededor de un espacio de gráficos mucho más amplio. Los parámetros que requiere este TRAP deben estar en la pila aritmética, en formato de coma flotante (apuntados por A1). Se deben asignar 240 octetos de la pila como mínimo antes de llamar a este TRAP.
La altura por defecto es 100 y el origen 0,0.
Los parámetros requeridos son:
0(A1) | coordenada Y de la línea inferior de la ventana | ||
6(A1) | coordenada X del punto más a la izquierda | ||
$C(A1) | longitud del eje X (altura de la ventana) |
Tenga en cuenta que 6(A1) significa 6 octetos después del punto que direcciona A1.
SD.FLOOD | TRAP #3 | D0=35 |
Pone o quita el formato de relleno
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.L | octeto de estado | D1 | indefinido | |
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador pila aritmética | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP pone o quita el relleno de gráficos de forma similiar a como lo hace el comando FILL de SuperBASIC. Si se ha puesto el relleno, las formas no reentrables se rellenarán con el color de la tinta a medida que se dibujan. Una vez que la figura ha sido completamente cerrada, se debe volver a llamar a este TRAP para comenzar a rellenar la siguiente figura. El único parámetro especial que se pasa a la rutina es el octeto de estado. Se pone a 0 cuando se quita el relleno de áreas, y a 1 para que funcione.
SD.GCUR | TRAP #3 | D0=36 |
Define la posición del cursor gráfico
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2.L | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador pila aritmética | A1 | indefinido | |
A2 | A2 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP es el mismo que el CURSOR de SuperBASIC, con cuatro parámetros. Permite posicionar el cursor gráfico en cualquier parte de la ventana del canal definido. Los parámetros que requiere este TRAP deben estar en la pila aritmética, en formato de coma flotante (apuntados por A1). Se deben asignar 240 octetos de la pila como mínimo antes de llamar a este TRAP. Las coordenadas se refieren a la esquina superior izquierda de la ventana. Los dos primeros parámetros fijan el origen del cursor gráfico, los otros dos colocan el cursor en una posición relativa al primer punto.
Los parámetros requeridos son:
0(A1) | coordenada gráfica X | ||
6(A1) | coordenada gráfica Y | ||
$C(A1) | puntos hacia la derecha | ||
$12(A1) | puntos hacia abajo |
Tenga en cuenta que 6(A1) significa 6 octetos después del punto que direcciona A1.
La selección de TRAPs de manejo de ficheros, que se incluye en esta sección de la Utilización de E/S, cubre el manejo general de ficheros. La apertura y cierre de ficheros se trató en el capítulo 6, mientras que la lectura y escritura se hizo en la sección 7.1. Esta sección trata de las estructuras particulares de ficheros y de las utilidades.
Entre las utilidades se han incluido las operaciones necesarias para obtener información sobre el medio de almacenamiento, leer y escribir una cabecera de fichero, y cargar y salvar ficheros completos a y desde memoria.
El nivel de soporte para ficheros estructurados lo proporciona el TRAP de posicionamiento del apuntador. Este apuntador se puede dirigir a cualquier octeto de un fichero, desde donde se puede leer una cadena de octetos de longitud arbitraria (ver 7.1). Con esta facilidad, se puede manejar cualquier estructura de fichero que se requiera. Las bases de datos requieren algún método de asegurarse de que se han escrito todos los datos en el fichero deseado, y de que ya no hacen falta en memoria. Se puede usar este TRAP para liberar la memoria intermedia del fichero y asegurarse de que todos los datos han llegado a su destino.
FS.CHECK | TRAP #3 | D0=40 |
Comprueba todas las operaciones pendientes en un fichero
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP comprueba si se han completado todas las operaciones pendientes en un fichero. Si se han completado, la llamada retorna sin errores; si hay alguna operación pendiente, devuelve el código de error NC (no completado). Esta comprobación es necesaria, ya que cualquier intento de una operación de lectura o escritura a un fichero, o cambio de un apuntador de fichero, hace uso de la memoria intermedia. Esto significa que los bloques físicos requeridos del fichero en cuestión, son transferidos dentro del área de bloques del QL. Este manejo de la memoria intermedia continúa aunque las llamadas que causan la operación retornen completas.
FS.FLUSH | TRAP #3 | D0=41 |
Libera la memoria intermedia de un fichero
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Esta llamada asegura que todos los datos que hay en el área de bloques de memoria se escriben al fichero correspondiente. Es muy importante que se haga esta llamada en los casos en los que se debe comprobar que se han salvado todos los ficheros, antes de realizar otra operación. No es suficiente asumir que el TRAP se ha completado correctamente, ya que este tipo de retorno no implica que se hayan transferido los datos al fichero correspondiente.
FS.POSAB | TRAP #3 | D0=42 |
Posiciona el apuntador absoluto de un fichero
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.L | posición en el fichero | D1.L | nueva posición | |
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
EF | fin del fichero |
Descripción:
Este TRAP nos permite posicionar el apuntador del fichero en un punto determinado del mismo. Si el TRAP retorna con un error de fin de fichero, el apuntador se pone al límite más cercano (que es 0 o el final del fichero).
FS.POSRE | TRAP #3 | D0=43 |
Posiciona el apuntador del fichero relativo a la posición anterior
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1.L | desplazamiento apuntador fichero | D1.L | nueva posición | |
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | A1 | indefinido | ||
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
EF | fin del fichero |
Descripción:
Este TRAP nos permite posicionar el apuntador del fichero en un punto determinado, relativo a la posición anterior. Si el TRAP retorna con un error de fin de fichero, el apuntador se pone al límite más cercano (que es 0 o el final del fichero). Si se pone este desplazamiento a 0, el TRAP nos devolverá la posición actual en el registro D1. Aunque la llamada retorne como no completada, el apuntador se pondrá, y la tarea continuará cargando el bloque que contiene el siguiente octeto dentro de la memoria.
FS.MDINF | TRAP #3 | D0=45 |
Obtiene información sobre el medio
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1.L | sectores vacíos/buenos | ||
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | apuntador a 10 octetos de memoria intermedia | A1 | fin del nombre del medio | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Este TRAP nos proporciona el nombre del medio, el espacio disponible y la capacidad. Para hacer todo esto, se debe abrir el directorio del fichero. El nombre del medio es de 10 octetos de longitud, con espacios a la derecha. A1 debe apuntar a 10 octetos de memoria disponible, antes de hacer la llamada. La palabra más significativa de D1 contiene el número de sectores vacíos, y la menos significativa el número de sectores buenos que contiene el medio. Los sectores son de 512 octetos de longitud.
FS.HEADS | TRAP #3 | D0=46 |
Pone cabecera de fichero
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1.W | longitud cabecera | ||
D2 | D2 | preservado | ||
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base bloque cabecera | A1 | fin definición cabecera | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto |
Descripción:
Todos los ficheros tienen una cabecera que contiene información sobre el fichero. Este TRAP prepara los 14 primeros octetos de esta cabecera. El formato estándar para los ficheros con directorio es de 64 octetos de longitud y es el siguiente:
$00 | longitud del fichero (palabra larga) |
$04 | acceso al fichero (octeto) - es 0 en QDOS v1.03 |
$05 | tipo de fichero (octeto). Para ficheros ordinarios y programas BASIC, el tipo de fichero es cero. Para programas ejecutables es 1. |
$06 | 8 octetos de información dependiente del tipo. Para programas ejecutables (tipo 1), los 4 primeros octetos contienen el tamaño asignado por defecto al espacio de datos del programa. |
$0E | longitud del nombre del fichero |
$10 | nombre del fichero (hasta 36 caracteres) |
$34 | reservado para información de fecha (no implementado en las primeras versiones del QL) |
Cuando el TRAP trata con dispositivos serie puros, la longitud de la cabecera en D1 será espuria (=15). Esto se debe a que, cuando se mande la cabecera a un dispositivo serie, los 14 octetos de la cabecera van precedidos por un octeto a $FF.
FS.HEADR | TRAP #3 | D0=47 |
Lee la cabecera de un fichero
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1.W | longitud cabecera leída | ||
D2.W | longitud memoria intermedia | D2 | preservado | |
D3.W | periodo de espera | D3 | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | base de la memoria intermedia de lectura | A1 | alto de la memoria intermedia de lectura | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NC | no completado | ||
NO | el canal no está abierto | ||
BO | rebosamiento de la memoria intermedia |
Descripción:
La llamada de lectura de cabecera de fichero se usa para que un job pueda conocer las características más relevantes de un fichero, incluida su longitud. Esta información nos permite asignar espacio suficiente (usando uno de los TRAPs #1) para cargar el fichero.
A1 apunta a la memoria intermedia de lectura que debe tener 14 octetos como mínimo. En el caso de que se use para un dispositivo serie, la longitud de la cabecera retornada en D1 es espuria (=15). A la vuelta del TRAP, la memoria intermedia contendrá la información de la cabecera del fichero.
El apuntador del fichero está diseñado de forma que apunta a la posición cero, que es el primer octeto de datos del fichero. Las fronteras de los bloques en un controlador de directorio estándar están en las posiciones 512*n-64.
FS.LOAD | TRAP #3 | D0=48 |
Carga un fichero en memoria
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2.L | longitud del fichero | D2 | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | dirección base de carga | A1 | dirección alta después carga | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NO | el canal no está abierto |
Descripción:
Este TRAP permite cargar todo un fichero en memoria. Antes de intentarlo se debe reservar suficiente espacio para él. Si este espacio va a estar en el área de programas transitorios, debe ser asignado mediante un TRAP #1 antes de intentar cargarlo. El periodo de espera debe ser infinito (D3=-1). También es importante asegurarse de que A1 contiene una dirección par, ya que los programas sólo se pueden cargar en frontera de palabra.
FS.SAVE | TRAP #3 | D0=49 |
Salva un fichero desde memoria
Parámetros de llamada | Parámetros retornados | |||
---|---|---|---|---|
D1 | D1 | indefinido | ||
D2.L | longitud del fichero | D2 | preservado | |
D3.W | periodo de espera | D3.L | preservado | |
A0 | ID del canal | A0 | preservado | |
A1 | dirección base fichero | A1 | dirección alta fichero | |
A2 | A2 | preservado | ||
A3 | A3 | preservado |
Error devuelto:
NO | el canal no está abierto | ||
DF | unidad llena |
Descripción:
Este TRAP permite salvar un fichero desde memoria. D3 debe ser puesto a -1 antes de llamarlo, y A1 debe ser par para que se sitúe en frontera de palabra cuando se cargue.
Anterior | Tabla de contenidos | Siguiente |
Asignación de Entrada/Salida | Utilidades por vector |