INT 21 : D.O.S. --------------- 21,01 lee ascii de entrada standard, la muestra por salida standard -> AL=ascii Espera a que se aprete una tecla 21,02 Saca ascii=DL por la salida standard 21,03 Std Aux (COM 1) -> AL 21,04 AL -> Std Aux (COM 1) 21,05 Saca ascii=DL por prn 21,06 Entrada (AL=FF) o salida (AL=ascii) por consola -> AL=ascii 21,07 Entrada de consola sin eco -> AL=ascii (si alt o ctr llamar 2 veces) 21,09 saca String$ por stdout DS:DX=offset(string) 21,0A entrada de teclado a través de un buffer (hasta CR) DS:DX offset(buffer) 21,0B ver si hay caracter en stdin -> AL=FF : si AL=00 : no 21,0E selecciona disco DL (A=0 etc) -> AL=número de discos lógicos 21,19 pide disco actual -> AL=disco (A=0 etc) 21,1A establece DTA (area transferencia de disco) en DS:DX (por defecto 128 bytes a partir de 080h en el PSP) 21,1B pide info del disco (u. por defecto) -> AL=sectores por cluster BX=offset descriptor del medio CX=bytes por sector DX=nº de clusters del disco Descriptor tamaño capacidad sectores caras FE 5,25 160K 8 1 FC 5,25 180K 9 1 FF 5,25 320K 8 2 FD 5,25 360K 9 2 F9 5,25 1,2M 9 2 F9 ? 3,50 720K 9 2 F0 3,50 1,44M 18 2 F8 R¡gido 21,1B pide info del disco DL (0=A etc) -> AL=sectores por cluster BX=offset descriptor del medio CX=bytes por sector DX=nº de clusters del disco Descriptor tamaño capacidad sectores caras FE 5,25 160K 8 1 FC 5,25 180K 9 1 FF 5,25 320K 8 2 FD 5,25 360K 9 2 F9 5,25 1,2M 9 2 F9 ? 3,50 720K 9 2 F0 3,50 1,44M 18 2 F8 Rígido 21,25 Poner vector de interrupci¢n AL apuntando a DS:DX 21,2A Pide fecha del sistema -> AL=dia de la semana (0=lunes etc) CX=año (1980-2099) DH=mes DL=dia 21,2B Pone fecha del sistema AL=dia de la semana (0=lunes etc) CX=año (1980-2099) DH=mes DL=dia ->AL=0 válida AL=FF no válida 21,2C Pide hora del sistema -> CH=hora CL=min DH=seg DL=cent AL=0 válida AL=FF no válida 21,2D Pone hora del sistema: CH=hora CL=min DH=seg DL=cent -> AL=0 válida AL=FF no válida 21,2E Pone verify on (AL=01) u off (AL=0) 21,2F Pide DTA (area transf. de disco) -> ES:BX = offset 21,30 Pide versión del D.O.S. -> AL=versión principal AH=versión secundaria 21,31 Terminar y quedar residente AL=código de retorno DX= memoria a reservar en párrafos de 16 bytes 21,34 Vuelve en ES:BX flag INDOS . Lleva la cuenta de la tarea efectuada: sirve para TSR. Se activa cuando están en 00 o 01 pero la INT 28 esta activa. 21,35 pide vector de interrupción AL -> ES:BX = offset 21,36 pide espacio libre en el disco DL -> AX=sectores/cluster (FFFF=unidad incorrecta) BX=clusters libres CX=bytes/sector DX=clusters totales espacio libre=AX*CX*BX capacidad total=AX*CX*DX 21,39 MD Crea directorio DS:DX=offset(nombre_del_directorio) asciiz 21,3A RD Borra directorio DS:DX=offset(nombre_del_directorio) asciiz 21,3B CD Cambia directorio DS:DX=offset(nombre_del_directorio) asciiz 21,3C Crea fichero DS:DX=offset(nombre_del_archivo) asciiz CX=atributos: 00=archivo 01=solo lectura 02=oculto 04=sistema -> AX=handle (si el archivo ya existe, lo pone a tama¤o=0) 21,3D Abre fichero AL=acceso: 00= lectura 01=escritura 02=lectura/escritura DS:DX=offset(nombre_del_archivo) asciiz ->AX=handle 21,3E Cierra fichero BX -> handle 21,3F Leer fichero BX=handle CX=# de bytes DS:DX=buffer -> AX=bytes le¡dos 21,40 Escribe en archivo BX=handle CX=# bytes DS:DX=offset buffer datos -> AX= # de bytes leídos 21,41 Borrar un archivo DS:DX = offset (asciiz) 21,43 Pedir (AL=0) o poner (AL=1) atributos de archivo DS:DX=offset asciiz CX=atributos:1 solo lect 2 Oculto 4 Sistema 8 Volumen 10 directorio 20 archivo 21,47 Pedir directorio actual DL=unidad (0=u*defecto, 1=A, 2=B etc) DS:SI=offset buffer de 64 bytes -> el buffer contiene directorio actual sin unidad de disco y sin la primera \ 21,4B cargar(AL=0)/cargar y ejecutar(AL=3) un programa DS:DX offset asciiz ES:BX offset al bloque de par metros AL=0 --------------------------------------------------------- | | | | | --------------------------------------------------------- segmento desplazamiento puntero a primer puntero a segundo entorno a la l¡nea de FCB FCB ¢rdenes AL=3 ----------------- | | | ----------------- segmento factor de dirección reubicación overlay 21,4C Termina proceso, devuelve código de retorno AL 21,4D Obtener código de retorno -> AH= código de terminación AH=0 normal AH=1 control-C AH=2 error crítico AH=3 residente AL=código devuelto por el programa que terminó 21,4E Obtener 1º archivo que coincide CX=atributo DS:DX offset asciiz especificación de archivo