ajayshah@aludra.usc.edu (Ajay Shah) (08/26/90)
I keep getting weird errors while trying to read in a floppy while writing a diskcopy-type program. It reports AH = 4 (sector not found) or AH = 6 (diskette removed). What does the AH = 6 mean? Any ideas what is going on? const {Hardcoded 3.5" HD floppy} MaxSides = 2; MaxTracks = 80; MaxSectors = 18; BytesPerSector = 512; BytesPerChunk = BytesPerSector*MaxSectors; type ChunkType : array[1..BytesPerChunk] of byte; procedure BIOSRead(side, track, NumSectors : integer; var chunk:ChunkType); var r : Registers; begin with r do begin ah := 2; {read function} al := NumSectors; {how many sectors?} ch := track-1; {track number} cl := 1; {sector number} dh := side-1; {"head number"} dl := 0; {drive number} es := seg(chunk); bx := ofs(chunk); {es:bx pointer to buffer} end; intr($13, r); if r.ah <> 0 then begin writeln('Disk read failed.'); writeln('AH = ', r.ah); halt(1); end; if r.al <> NumSectors then begin writeln('Not all requested sectors read.'); halt(1) end; end; var chunk : ChunkType; side, track, sector : integer; r : Registers; begin r.ah := 0; intr($13, r); {BIOS reset; don't know if it's essential.} for side := 1 to MaxSides do for track := 1 to MaxTracks do begin gotoxy(1, wherey); clreol; write('Side = ', side, ' Track = ', track); BIOSRead(side, track, MaxSectors, chunk); end; end. -- _______________________________________________________________________________ Ajay Shah, (213)747-9991, ajayshah@usc.edu The more things change, the more they stay insane. _______________________________________________________________________________