zrgc002@DTUPEV5A.BITNET (Christoph D. Gatzka) (07/31/87)
I wrote a short program that will search for a bad block, provided you know the bad block's LBN and will at the same time print an allocation bitmap of your disk with '*' marking allocated blocks and ' ' marking free blocks. DOES ANYBODY HAVE A PROGRAM TO DIRECTLY ACCESS INDEXF.SYS FOR THIS INFORMATION ? Create the allocation information like this: $ set proc/priv=all $ def sys$output sys$usrroot:[zrgc002]disk.ana $ du/head/block=count=0 dub3:[000000...]*.*;* Then run this pascal program over disk.ana: program a(input,output); var ein:text; bitmap:packed record case boolean of false:(a:packed array[0..790000]of char); true:(b:packed array[0..10000]of packed array[1..80]of char);end; zeile:varying[132]of char; zeile2:varying[80]of char; i,j,lbn,count:integer; begin open (ein,'disk.ana',old); reset (ein); while not(eof(ein)) do begin readln (ein,zeile); if zeile.length > 44 then if substr (zeile,9,6) ='Count:' then begin readv (substr(zeile,15,15),count); readv (substr(zeile,38,zeile.length-37),lbn); if count> 0 then for i:=lbn to lbn+count-1 do begin bitmap.a[i]:='*'; if (i=632766) or (i=632769) or (i=13463) or (i=42000) then writeln ('lbn:',lbn,' count: ',count,' i:',i); end; end; end; close(ein); for j:=0 to 790000-1 do if bitmap.a[j]<>'*' then bitmap.a[j]:=' '; open (ein,'bitmap.karte'); rewrite (ein); for j:=0 to 10000 do begin zeile2.body:=bitmap.b[j]; zeile2.length:=80; writeln (ein,zeile2); end; end. This will produce a list of the logical block numbers found on sys$output (search disk.ana with any editor for 'lbn' to associate the file with the lbn) and an allocation map named "bitmap.karte". Christoph D. Gatzka zrgc002@dtupev5a.bitnet Student of medicine University of Tuebingen Germany