|
La función de int86x (0x13, &i, &o, &s) invoca la interrupción 13H con valores del registro del segmento. La función getdrivegeometry vuelve el número total en la impulsión.
- En () la función principal, peekb (del carbón) (0x0040, 0x0075); (el peekb de la función se define en DOS.H) vuelve el número de los discos duros unidos al sistema.
El número de discos duros conectó con el sistema es representado por el octeto almacenado en la posición de memoria 0040H: 0075H (segmento 0040H: 0075H compensado).
Si el número de los discos duros conectados con el sistema es menos entonces el programa dos demuestra el mensaje y las salidas de error.
Sectors_in_HDD1 = getdrivegeometry (0x80); consigue los parámetros del primer disco duro (0x80) y de vueltas el número total de sectores en el primer disco duro. Semejantemente Sectors_in_HDD2 = getdrivegeometry (0x81); consigue los parámetros del segundo disco duro (0x81) y de vueltas el número total de sectores en el segundo disco duro. Después de que confirmación del usuario a continuar con la proyección de imagen, primer cheque la condición que el tamaño del disco duro de la fuente no debe ser mayor entonces el tamaño del disco duro de la destinación.
Si la destinación es más pequeña, exhibir el mensaje de error y salir. Si va todo a la derecha, copiar los sectores del disco de la fuente al disco de la destinación. Aquí somos lectura y escritura 61440 octetos (120 sectores con cada uno de 512 octetos) a la vez para hacer el proceso de la proyección de imagen más rápido.
Si deseas utilizar más sectores a la vez, incluso más allá del límite de 64K, puedes hacerlo usando el “indicador enorme” en modelo grande de la memoria. El ejemplo de la especificación es como sigue:
arsenal enorme del carbón [100000L];
- La función, readabsolutesectors (0x80, lazo, 120, almacenador intermediario); lee los 120 sectores del primer disco duro (0x80), a partir de el número del sector especificado por el lazo largo sin firmar del número entero y almacena los datos en almacenador intermediario de los datos.
- La función, writeabsolutesectors (0x81, lazo, 120, almacenador intermediario); escribe los datos del almacenador intermediario de los datos a 120 sectores del segundo disco duro (0x81), a partir de el número del sector especificado por el lazo largo sin firmar del número entero.
|
|