• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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