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.
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"...
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:
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
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 útiles que no encajan en ninguna otra categoría.
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.
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.
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).
Estas llamadas te permiten examinar y alterar las unidades mapeadas por el +3DOS.
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).
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.