1#!/usr/bin/perl 2# 3# Try automatic generation of geometries 4# 5 6($k) = @ARGV; 7$sec = int($k*2+0.5); 8 9if ($sec < 320*2) { 10 $c = 40; 11 $h = 1; 12 $type = 1; 13} elsif ($sec < 640*2) { 14 $c = 40; 15 $h = 2; 16 $type = 1; 17} elsif ($sec < 1200*2) { 18 $c = 80; 19 $h = 2; 20 $type = 3; 21} elsif ($sec < 1440*2) { 22 $c = 80; 23 $h = 2; 24 $type = 2; 25} elsif ($sec < 2880*2) { 26 $c = 80; 27 $h = 2; 28 $type = 4; 29} elsif ($sec < 4096*2) { 30 $c = 80; 31 $h = 2; 32 $type = 6; 33} else { 34 printf "%.1fK, %d sectors: ", $sec/2, $sec; 35 print "Considered a hard disk\n"; 36 exit 2; 37} 38 39$ok = 0; 40while ($c < 256) { 41 $s = int($sec/($c*$h)+0.5); 42 if ($s <= 63 && $sec == $c*$h*$s) { 43 $ok = 1; 44 last; 45 } 46 $c++; 47} 48 49printf "%.1fK, %d sectors: ", $sec/2, $sec; 50if ($ok) { 51 print "c=$c, h=$h, s=$s, type=$type\n"; 52 exit 0; 53} else { 54 print "No valid geometry found (MEMDISK will fake it)\n"; 55 exit 1; 56} 57