{===================================================} {=== DEVICE.TPU Written By Franz-Josef Ayestaran ===} {===================================================} { *** Public Variables *** } { ************************ } { 'disk_drive_capacity' variable Returns - 1:360K 2:1.2Mb 3:720K 4:1.44Mb } { 'disk_drive_capacity_no' variable Returns above strings 1 - 4 } var disk_drive_hi_track, disk_drive_hi_head, Total_disk_drives, disk_drive_capacity_no : byte; disk_drive_bytes_sector : word; disk_drive_capacity : string; sector_buffer : array[0..511] of byte; track_buffer : array[1..512*18] of byte; HMA : word; Expanded : pointer; { capacity - tracks_per_side - Sec_per - bytes_per - total - sec_per (cylinders) track sector two sides cluster --------------------------------------------------------------------- 360KB 40 9 512 368,640 2 1.2MB 80 15 512 1,228,800 1 720KB 80 9 512 737,280 2 1.44MB 80 18 512 1,474,560 1 } { ************************ } { *** Public Procedures / Functions *** } { ************************************* } { 'Disk_Drive_No' variable requires - 0:A 1:B } Procedure Disk_Drive_Type(disk_drive_No:byte); Procedure read_sector(drive:byte;sector:integer); Procedure read_multi_sector(drive:byte;start,amount:integer); Procedure write_sector(drive:byte;sector:integer); Procedure read_track(drive:byte;track,sectors_per_track:integer); Procedure write_track(drive:byte;track,sectors_per_track:integer); Procedure read_disk(drive:byte;filename:string;Display:boolean); Procedure write_disk(drive:byte;filename:string;Display:boolean); { 'Drive' variable requires - 0:default 1:Drive A 2:Drive B 3:Drive C } procedure fill_sector_buffer(fill:byte); function disk_size(drive:byte):longint; function disk_free(drive:byte):longint; function sectors(drive:byte):word; Function Allocate_HMA(size:word):boolean; Function Allocate_Expanded(size:word):boolean; Procedure OvrEMS; { ************************************* }