Lo mostrado a continuación es una lista completa de las llamadas proporcionadas por el IDEDOS v1.03 (y superior). Algunas llamadas no están disponibles en las versiones previas (o funcionan levemente diferente) y está marcadas convenientemente.
IN: - OUT: D=version, E=sub-version Fc=1, success Estado del registro al retornar: A.BC..HL/IX igual .F..DE../.. diferente
Retorna información sobre la versión IDEDOS.
IN: - OUT: A=numero de unidades detectadas (0 a 2) Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Inicializa el interface IDE y detecta el número de discos.
Esta rutina es únicamente para uso interno, y el resultado son es validad cuando es la primera rutina IDE realizada tras un reset.
En lugar de esta rutina, las aplicaciones deben usar la rutina IDE_DRIVE para detectar si una unidad determinada está presente.
IN: - OUT: Fc=1, success Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Inicializa IDEDOS.
Esta rutina es únicamente para uso interno.
IN: A=unidad (0 o 1) OUT(s): Fc=1 IX=Información sobre la dirección de la unidad OUT(f): Fc=0, A=Código de error Estado del registro al retornar: ..BCDEHL/.. igual AF....../IX diferente
Retorna información sobre la dirección de la unidad.Puede ser usada para detectar si una unidad está presente o no (por éxito o fallo de esta rutina).
IN: IX=Partición manejada B=página a transferir HL=dirección CDE=Número del sector lógico de 512-bytes OUT(s): Fc=1 HL=Dirección final+1 (en segmentos de 3) OUT(f): Fc=0, A=Código de error Estado del registro al retornar: ..BC..../IX igual AF..DEHL/.. diferente
Lectura de sector a bajo nivel.
IN: IX=Partición manejada B=página a transferir HL=dirección CDE=Número del sector lógico de 512-bytes OUT(s): Fc=1 HL=Dirección final+1 (en segmentos de 3) OUT(f): Fc=0, A=Código de error Estado del registro al retornar: ..BC..../IX igual AF..DEHL/.. diferente
Escritura de sector a bajo nivel.
IN: A=unidad (0 o 1) BC=número máximo de particiones (debe ser >2) IX=cilindros H=cabezas (v1.03+: bit 7=activo modo disco compartido) L=sectores por pista OUT(s): Fc=1 OUT(f): Fc=0, A=error Estado del registro al retornar:: ......../.. igual AFBCDEHL/IX diferente
Formateo de una unidad IDE.
Desde v1.03 en adelante, Si el bit 7 de H está a 1, entonces el inicio del IDEDOS está en cilindro 0, cabeza 1, sector 1. Esto deja el sector de arranque intacto, permitiendo al disco ser compartido con particiones de PC.
IN: A=unidad (0 o 1) HL=Dirección del nombre de la partición a buscar(16 bytes, separadas por espacios) OUT(s): Fc=1 BC=Número de partición OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Retorna el número de partición para el nombre proporcionado en HL. La búsqueda no es sensible a minúsculas/mayúsculas, y se realiza solo en la unidad IDE especificada.
IN: A=unidad (0 o 1) HL=address of 64-byte partition entry OUT(s): Fc=1 BC=Número de partición OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Crea una nueva partición en la unidad IDE especificada. La entrada de la partición pasada por esta rutina debe tener un nombre, tipo y el número del sector lógico más largo. Opcionalmente, la información específica debe ser rellenada. A la salida, la información del sistema habrá sido actualizada.
IN: A=unidad (0 o 1) BC=número de la partición L= byte relleno IX=Sector lógico máximo a inicializar (0=todos) OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Inicializa los sectores en la partición especificada. Los sectores de 512-bytes lógicos desde 0 a IX son llenados con el valor del byte en el registro L. Si IX=0, la partición completa es inicializada.
NOTE: Esta rutina solo trabaja correctamente con particiones hasta de 16Mb de tamaño.
IN: A=unidad (0 o 1) BC=número de la partición OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Borra la partición especificada.
IN: A=unidad (0 o 1) BC=número de la partición HL=Dirección del nuevo nombre (16 bytes, separados por espacios) OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Renombre la partición seleccionada.
IN: A=unidad (0 o 1) BC=número de la partición HL=Dirección de la partición almacenada OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..BC..../IX igual AF..DEHL/.. diferente
Leer entrada a los 64-bytes de una partición.
IN: A=unidad (0 o 1) BC=número de la partición HL=Dirección de la partición OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..BC..../IX igual AF..DEHL/.. diferente
Escribir en la entrada de bytes de una partición.
Esta rutina es únicamente para uso interno. las aplicaciones deben usar las siguientes rutinas en su lugar: IDE_PARTITION_WINFO, IDE_PARTITION_SETINFO y IDE_PARTITION_RENAME
IN: A=unidad (0 o 1) BC=número de la partición HL=dirección de los 32-bytes con información sobre el tipo específico de partición;n OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Actualiza los 32-bytes con información sobre el tipo específico de partición especificada. La rutina IDE_PARTITION_SETINFO es recomendada en vez de esta.
IN: A=unidad (0 o 1) BC=número de la partición OUT(s): Fc=1 IX=partición manejada OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
Abre la partición especificada, devolviendo el valor en el registro IX.
IN: IX=partición manejada OUT(s): Fc=1 Estado del registro al retornar: ..BCDEHL/.. igual AF....../IX diferente
Cierra la partición referida por IX.
Apunte: Las aplicaciones/sistema operativo debe asegurarse de que no queda ficheros abiertos antes de cerrar la partición.
IN: A=unidad (0 o 1) BC=número de la partición L=offset del byte a retornar(0..31) OUT(s): Fc=1 A=Valor byte Fz=1 Si A=0, en otros casos Fz=0 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..BC..../IX igual AF..DEHL/.. diferente
Lee un byte específico del campo de información específico de una partición;n.
IN: A=unidad (0 o 1) BC=número de la partición L=offset del byte a escribir(0..31) H=Valor byte OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..BC..../IX igual AF..DEHL/.. diferente
Escribe un byte específico del campo de información específico de una partición.
IN: A=tamaño del bloque en sectores, 1 (0.5K) hasta 32 (16K) BC=Número máximo de bloques requeridos OUT(s): Fc=1 IX=swap manejada OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
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.
Localiza una partición swap libre y la abre, devolviéndolo en el registro IX. El tamaño del bloque especificado (cualquier múltiple de 0.5K hasta 16K) determina la cantidad de datos para intercambio entrada/salida con las otras llamadas IDE_SWAP_ . El tamaño de la partición swap requerida es calculada con (tamaño del bloque)* (Número máximo de bloques+1). El bloque actual es puesto a valor 0.
IN: IX=swap manejada OUT(s): Fc=1 Estado del registro al retornar: ..BCDEHL/.. igual AF....../IX diferente
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.
Cierra la partición swap especificada.
IN: IX=swap manejada B=página HL=dirección OUT(s): Fc=1 HL=Dirección final+1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..B...../IX igual AF.CDEHL/.. diferente
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.
Escribe un bloque de memoria en BHL hacía el bloque actual en la partición swap, e incrementa el número del bloque (saltando al bloque 0 si el final de la partición swap es encontrado).
IN: IX=swap manejada B=página HL=dirección OUT(s): Fc=1 HL=Dirección final+1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..B...../IX igual AF.CDEHL/.. diferente
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.
Lee un bloque de memoria desde el bloque actual de la partición swap, e incrementa el número del bloque (saltando al bloque 0 si el final de la partición swap es encontrado).
IN: IX=swap manejada B=página HL=dirección OUT(s): Fc=1 HL=Dirección final+1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..B...../IX igual AF.CDEHL/.. diferente
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.
Intercambia un bloque de memoria con el bloque actual de la partición swap, incrementa el número del bloque (saltando al bloque 0 si el final de la partición swap es encontrado).
IN: IX=swap manejada OUT(s): Fc=1 BC=Número de bloque OUT(f): Fc=0, A=código de error Estado del registro al retornar: ....DEHL/IX igual AFBC..../.. diferente
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.
Retorna el número del bloque actual de la partición swap.
IN: IX=swap manejada BC=Número de bloque OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..BCDEHL/IX igual AF....../.. diferente
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.
Indicamos el nuevo bloque actual de la partición swap.
IN: IX=swap manejada A=nuevo tamaño del bloque en sectores, 1 (0.5K) hasta 32 (16K) BC=Número máximo de bloques requeridos OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
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.
Cámbia el tamaño de bloque de la partició swap actualmente abierta. Debes especificar el mañor número de bloques del nuevo tamaño requerido; Si este valor está fuera de rango, un error ocurrirá y la partición swap permanecerá sin cambios. Si todo es correcto, el número del bloque actual será reseteado a 0.
IN: A=unidad (0 o 1), y dispositivo físico: 2=Disquetera 0 3=Disquetera 1 4=RAMdisk BC=número de la partición L=Letra para la unidad de 'A' hasta 'P' (mayúsculas) Si el bit 6 del FLAGS3 está a "1", Este mapeado se volverá permanente,y tiene efecto al arrancar OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Mapea una unidad +3DOS a la partición espefificada o al dispositivo físico ( esto causa que la partición sea abierta para esa unidad ).
IN: L=Letra para la unidad de 'A' hasta 'P' (mayúsculas) Si el bit 6 del FLAGS3 está a "1", cualquier mapeado permanente que tuviese esa unidad será eliminado OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Elimina el mapeado para una unidad específica (cerrando una partición si es necesario).
IN: L=Letra para la unidad de 'A' hasta 'P' (mayúsculas) BC=dirección del buffer de 18-bytes OUT(s): Fc=1 Fz=1 si no está mapeado (el resto de información no es valida) Fz=0, el mapeado es como indico a continuación: A=unidad (0 o 1), y dispositivo físico: 2=Disquetera 0 3=Disquetera 1 4=RAMdisk BC=número de partición (si es un disco duro) buffer contienen descripción del texto, o en blanco si no está mapeada OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Retorna detalles sobre el mapeado actual de una letra de una unidad especificada.
IN: L=Letra para la unidad de 'A' hasta 'P' (mayúsculas) OUT(s): Fc=1 OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Elimina cualquier mapeado permanente una letra de una unidad especificada.
IN: HL=filespec, terminado con $ff BC=dirección de la rutinas (0=la rutina está situada en la pila) OUT(s): No vuelve nada si el proceso es acertado. OUT(f): Fc=0, A=código de error Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
Carga y ejecuta un fichero snapshot Z80.
IN: A=número de dispositivo DE=dirección de la cadena para el canal especificado a abrir BC=longitud de la cadena para el canal especificado a abrir OUT(s): Fc=1 OUT(f): Fc=0 A=+3 código de error BASIC: $17=dispositivo inválido, $0e=nombre de fichero inválida Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
Apunte: Esta rutina debe ser realizada con la configuración de memoria ROM2/5/2/0 , no con la configuración normal del DOS. La pila debe estar localizada entre STKEND y RAMTOP (la posición normal para el +3 BASIC). El error retornado pertenece a los mensajes del +3 BASIC, no del +3DOS.
Abre un dispositivo A al canal especificado por la cadena DE, longitud BC. La cadena proporcionada puede aceptar cualquier cosa del comando BASIC OPEN # .
IN: A=número de dispositivo OUT(s): Fc=1 OUT(f): Fc=0 A=+3 código de error BASIC: $17=dispositivo inválido, $0e=dispositivo E/S inválido Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
Apunte: Esta rutina debe ser realizada con la configuración de memoria ROM2/5/2/0 , no con la configuración normal del DOS. La pila debe estar localizada entre STKEND y RAMTOP (la posición normal para el +3 BASIC). El error retornado pertenece a los mensajes del +3 BASIC, no del +3DOS.
Cierra un canal asignado a un dispositivo A. Si A es uno de los streams estándar 0..3, entonces el canal por defecto es reasignado antes de cerrarse.
IN: el dispositivo requerido ha sido realizado vía $1601 de la ROM 3 OUT(s): A=byte OUT(f): no vuelve, se genera un error +3 BASIC Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
NOTE: Esta rutina debe ser realizada con la configuración de memoria ROM2/5/2/0 , no con la configuración normal del DOS. La pila debe estar localizada entre STKEND y RAMTOP (la posición normal para el +3 BASIC). El error retornado pertenece a los mensajes del +3 BASIC, no del +3DOS. Cualquier error genera un mensaje de error del +3 BASIC,y no se devuelve nada a la rutina.Antes de llamar a esta rutina, el dispositivo deseado se debe realizar invocando a la rutina $1601 in ROM 3 coh A=número del dispositivo.
Coge el siguiente carácter del dispositivo actual.
IN: el dispositivo requerido ha sido realizado vía $1601 de la ROM 3 C=byte OUT(s): - OUT(f): no vuelve, se genera un error +3 BASIC Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
NOTE: Esta rutina debe ser realizada con la configuración de memoria ROM2/5/2/0 , no con la configuración normal del DOS. La pila debe estar localizada entre STKEND y RAMTOP (la posición normal para el +3 BASIC). El error retornado pertenece a los mensajes del +3 BASIC, no del +3DOS. Cualquier error genera un mensaje de error del +3 BASIC,y no se devuelve nada a la rutina.Antes de llamar a esta rutina, el dispositivo deseado se debe realizar invocando a la rutina $1601 in ROM 3 coh A=número del dispositivo.
Manda un carácter hacía el dispositivo actual.
IN: el dispositivo requerido ha sido realizado vía $1601 de la ROM 3 B=reason code: 0=toma puntero del dispositivo 1=pone puntero del dispositivo 2=toma dispositivo extendido DEHL=puntero, sólo para B=1 OUT(s): DEHL=puntero, sólo para B=0 DEHL=extendido, sólo para B=2 OUT(f): no vuelve, se genera un error +3 BASIC Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
NOTE: Esta rutina debe ser realizada con la configuración de memoria ROM2/5/2/0 , no con la configuración normal del DOS. La pila debe estar localizada entre STKEND y RAMTOP (la posición normal para el +3 BASIC). El error retornado pertenece a los mensajes del +3 BASIC, no del +3DOS. Cualquier error genera un mensaje de error del +3 BASIC,y no se devuelve nada a la rutina.Antes de llamar a esta rutina, el dispositivo deseado se debe realizar invocando a la rutina $1601 in ROM 3 coh A=número del dispositivo.
Pone o lee el puntero o extendido requerido del dispositivo actual. Esta operación sólo está soportada por algunos canales extendidos.
Requiere IDEDOS v1.01+ IN: HL=Dirección origen DE=Dirección destino BC=longitud OUT(s): Fc=1 (Siempre exitoso en ResiDOS) OUT(f): Fc=0, A=código de error (rc_notimp en el +3e) Estado del registro al retornar: ......../IX igual AFBCDEHL/.. diferente
Esta rutina es proporcionad para que los datos que existan en la memoria del ResiDOS puedan ser leídas o escritas por programas. Tales direccione están referenciadas en la documentación que empiezan "en la página 7" . Puede usar esta rutina, con una dirección origen o destino, y tu propio buffer como la otra dirección. En el +3e, esta rutina no está implementada y retorna un error.
Requiere IDEDOS v1.02+ IN: B=pagina para transferir C=unidad (0 o 1) HL=Dirección del buffer de 512-byte OUT(s): Fc=1 HL=Dirección final+1 (en segmentos de 3) OUT(f): Fc=0, A=código de error Estado del registro al retornar: ..BCDE../IX igual AF....HL/.. diferente
Lee la información de la identidad de la unidad (512 bytes), la cual puede ser examinada para determinar el tipo de disco y el fabricante, también como otra información.
Si se está usando un interface de 8-bit, entonces una llamada satisfactoria se convierte en un códido de error conFc=0, A=rc_8bitdata. Esto significa que los primeros 256 bytes de el buffer contienen los bytes menos significativos de cada una de las 256 "palabras" de la unidad. Los bytes más significativos no están disponibles, a excepción del byte más significativo de la "palabra" 1 ( número de cilindros en CHS), la cual es almacena en el byte 256. Bytes 257-511 no son válidos para los interfaces de 8-bits.
Requires IDEDOS v1.02+ IN: A=unidad (0 o 1) OUT(s): A=número de la partición abierta, excluyendo la del sistema HL=partición libre manejada , o 0 Fc=1 Estado del registro al retornar: ......../.. igual AFBCDEHL/IX diferente
Devuelve el número de particiones abiertas ( exceptuando la partición del sistema, la cual está siempre abierta) de la unidad especificada.