int86x (0x13の&i、&o、&s)機能は区分の記録の価値の割り込み13Hを実施する。 getdrivegeometry機能はドライブの総数を戻す。
- 主要な()機能では、(木炭の) peekb (0x0040、0x0075); (機能peekbはDOS.Hで定義される)システムに付すハードディスクの数を戻す。
ハードディスクの数は記憶場所0040Hで貯えられたバイトによってシステムに表される接続した: 0075H (区分0040H: オフセット0075H)。 システムに接続されるハードディスクの数がより少しなら2プログラムはエラーメッセージおよび出口を示す。
Sectors_in_HDD1 = getdrivegeometry (0x80); 最初ハードディスク(0x80)およびリターンの変数を最初ハードディスクのセクターの総数得る。
同様にSectors_in_HDD2 = getdrivegeometry (0x81); 第2ハードディスク(0x81)およびリターンの変数を第2ハードディスクのセクターの総数得る。
源のハードディスクのサイズはサイズより大きくないそして行先のハードディスクのべきでないことイメージ投射から続けるユーザーによる確認が最初に条件を点検した後。 行先がより小さかったら、エラーメッセージを表示し、出なさい。
すべてが正しく行ったら、行先ディスクにソースディスクのセクターをコピーしなさい。 ここに私達はイメージ投射プロセスをより速くさせる一度に読書および執筆61440バイト(each of 512バイトの120のセクター)である。
64K一度に使用したいと思えばのの限界を越えるより多くのセクターを、大きい記憶モデルで「巨大なポインター」を使用することによってそれをすることができる。 指定の例は次の通りある:
char huge array[100000L];
- 機能、readabsolutesectors (0x80のループ、120の緩衝); 最初ハードディスク(0x80)の120のセクターを、無署名の長い整数のループによって指定されるセクター数から始まって読み、データバッファでデータを貯える。
- 機能、writeabsolutesectors (0x81のループ、120の緩衝); 無署名の長い整数のループによって指定されるセクター数から始まって第2ハードディスク(0x81)の120のセクターにデータバッファのデータを、書く。
|