Información Técnica Sobre el +3e

Las facilidades extra del sistema operativo del +3e se ofrecen como un conjunto de llamadas conocidas como IDEDOS. Este documento describe las diversas llamadas que se ofrecen y cómo puede accederse a ellas.

__________________________________________________________________

Detectando la presencia del IDEDOS

Antes de utilizar cualquier llamada del IDEDOS en tu aplicación es importante asegurarse de que el IDEDOS está presente; si no, tu aplicación debería devolver un error al efecto diciendo que sólo podrá ejecutarse en un +3e (v1.00 y superiores), y no un +3 estándar.

Para verificar el IDEDOS, ejecuta la llamada estándar del +3DOS DOS_VERSION y comprueba la bandera de signo. Si el IDEDOS está presente, la bandera de signo estará activada.

Aquí hay un fragmento de código de ejemplo (no te olvides de que la configuración de la memoria debe ser ROM2/5/2/7 cuando se realiza cualquier llamada al +3DOS o IDEDOS):

          call  DOS_VERSION

          jp    m, hayide

          ...salir aquí con el error "IDEDOS no encontrado"...

__________________________________________________________________

Utilizando las llamadas al IDEDOS

Las llamadas al IDEDOS se hacen de la misma forma que las llamadas estándar del +3DOS (como se describe en el manual del +3). Más adelante se muestra una descripción completa de cada llamada. Éstas pueden provocar cualquier código de error estándar del +3DOS, y los siguientes errores adicionales específicos del IDEDOS:

rc_invpartition (56)
Partición no válida
rc_partexist (57)
La partición ya existe
rc_notimp (58)
No implementado
rc_partopen (59)
Partición abierta
rc_nohandle (60)
Sin gestores de partición
rc_notswap (61)
No es partición de intercambio
rc_mapped (62)
Unidad ya mapeada
rc_noxdpb (63)
XDPBs agotados
rc_noswap (64)
Partición de intercambio no disponible
rc_invdevice (65)
Dispositivo no válido
rc_8bitdata (66)
8-bit data transfer

El IDEDOS nunca provocará error rc_notimp, pero está presente de forma que tu aplicación lo pueda generar si se desea y obtener un mensaje apropiado del +3 BASIC. Se recomienda generar el error rc_notimp si la versión del IDEDOS no es lo suficientemente alta para proveer una llamada o cualquier otra funcionalidad que se necesite.

Utiliza el código siguiente para convertir cualquier código de error del +3DOS o IDEDOS en un código de error de +3 BASIC, y pasarlo al BASIC:

         cp    $0a

         jr    c,ricerr

         add   a,$18            ; añade $18 a la mayoría de los errores

         jr    hazerr

.ricerr  add   a,$3d		; añade $3d para errores Reintentar/Ignorar/Cancelar

.hazerr  ld    l,$cf

         ld    h,a

         push  hl               ; almacena RST 8; DEFB err en la pila

         ld    hl,0

         add   hl,sp

         jp    (hl)             ; provoca el error

__________________________________________________________________

Llamadas al IDEDOS

El IDEDOS ofrece muchas llamadas, aunque la mayoría de ellas no resultarán de interés para el escritor de aplicaciones común. Aquí puede encontrarse una descripción completa de las llamadas disponible.

Cuando escribas tu código, utiliza el siguiente fichero de definiciones que contiene todos los códigos de llamadas y error para una mayor facilidad de uso:

Para usar este fichero, recomiendo el excelente ensamblador cruzado z80asm (sigue el enlace para más detalles).

Las llamadas están listadas aquí por categorías y toda la documentación hace referencia al IDEDOS v1.00+:

__________________________________________________________________

Llamadas varias

Llamadas útiles que no encajan en ninguna otra categoría.

__________________________________________________________________

Servicios de la partición de intercambio

NOTA: Las llamadas a las particiones swap sólo deben ser usadas con IDEDOS v1.06+. Versiones anteriores contienen bugs, por lo que tu aplicacció debe comprobar que versión tienes utilizando la función IDE_VERSION antes de realizar esta llamada.

Las llamadas más útiles que ofrece el IDEDOS v1.00 permiten a las aplicaciones acceder a particiones de intercambio de un modo muy simple, ofreciendo un sistema de memoria virtual. Cada aplicación debe abrir tan sólo una partición de intercambio, ya que muchos usuarios no crearán más de 2 de estas particiones (y el +3e usa una partición de intercambio para él mismo).

Las aplicaciones pueden elegir el tamaño de los "bloques" de memoria que serán manejados por las llamadas; el tamaño puede ser cualquier múltiplo de 0.5K hasta 32 (p.e. 16K). Los bloques son numerados desde el 0 en adelante, y cuando se llega al final de la partición, se vuelve a contar desde el bloque 0.

__________________________________________________________________

Acceso a particiones de datos

El acceso a las particiones de datos es generalmente mejor dejarlo a las llamadas al +3DOS, como las particiones de disco duro creadas con el comando NEW DATA las cuales pueden ser accesibles de manera idéntica que cualquier otra unidad +3DOS. Sin embargo, es posible crear y usar particiones con un sistema de archivos diseñado por ti, si asi lo deseas (!Esto no es para débiles de corazón!) usando las siguientes llamadas.

__________________________________________________________________

Manejo de particiones

Estas llamadas, junto con las llamadas Acceso a particiones de datos, permite manejar las particiones, y pueden resultar útiles en programas para utilidades de discos duros (clonado o reponer particiones,por ejemplo).

__________________________________________________________________

Unidades mapeadas

Estas llamadas te permiten examinar y alterar las unidades mapeadas por el +3DOS.

__________________________________________________________________

Flujos y canales

Estas llamadas proporcionan un camino estándar para programadores de código máquina para acceder a los canales y flujos del Spectrum, tristemente olvidadas de la máquina estándar. Puntualizar que solo para estas llamadas, la configuración de los bancos de memoria debe ser ROM2/5/2/0, en vez de ROM2/5/2/7 como es normalmente para otras llamadas al IDEDOS, y la pila debe estar localizada en la posición normal para el BASIC (entre STKEND y RAMTOP). Cualquier error resultará en un mensaje estándar de error del 48K BASIC (usualmente O - CANAL NO VALIDO o J - DISP. E/S INCORRECTO).

__________________________________________________________________

Llamadas internas

Estas llamadas son sólo para uso interno, y se enumeran aquí.

__________________________________________________________________

Por favor contacta conmigo si deseas alguna información adicional,o te gustaría portar el IDEDOS que forma parte del sistema operativo del +3e a otros Spectrum u ordenadores basados en el Z80.

__________________________________________________________________

Volver a la página principal del ZX Spectrum +3e