diff options
author | phk <phk@FreeBSD.org> | 1995-05-01 04:05:27 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1995-05-01 04:05:27 +0000 |
commit | 632f39cd533df1a0c9395254371443c5a394ba45 (patch) | |
tree | c46a25276d72afe90b217d8e55e20c80503b4c84 /lib/libdisk/write_disk.c | |
parent | 7cb2df48bc34ef37bbb1cf9d3e8ac4b8899a75c9 (diff) | |
download | FreeBSD-src-632f39cd533df1a0c9395254371443c5a394ba45.zip FreeBSD-src-632f39cd533df1a0c9395254371443c5a394ba45.tar.gz |
start CHS is 0xff,0xff,0xff if past 1024.
end CHS is 1023,bios_hd,bios_sect if past 1024. This way we can find
bios the geometry again.
Added a primitive "scan" to tst01.
Diffstat (limited to 'lib/libdisk/write_disk.c')
-rw-r--r-- | lib/libdisk/write_disk.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/lib/libdisk/write_disk.c b/lib/libdisk/write_disk.c index c97727c..818076a 100644 --- a/lib/libdisk/write_disk.c +++ b/lib/libdisk/write_disk.c @@ -151,7 +151,6 @@ Write_Disk(struct disk *d1) dp[j].dp_ssect = 0xff; dp[j].dp_shd = 0xff; dp[j].dp_scyl = 0xff; - } else { dp[j].dp_ssect = i % d1->bios_sect; i -= dp[j].dp_ssect++; @@ -163,26 +162,22 @@ Write_Disk(struct disk *d1) i -= dp[j].dp_scyl; dp[j].dp_ssect |= i >> 2; } + printf("S:%lu = (%x/%x/%x)", c1->offset,dp[j].dp_scyl,dp[j].dp_shd,dp[j].dp_ssect); i = c1->end; - if (i >= 1024*d1->bios_sect*d1->bios_hd) { - dp[j].dp_esect = 0xff; - dp[j].dp_ehd = 0xff; - dp[j].dp_ecyl = 0xff; - } else { - dp[j].dp_esect = i % d1->bios_sect; - i -= dp[j].dp_esect++; - i /= d1->bios_sect; - dp[j].dp_ehd = i % d1->bios_hd; - i -= dp[j].dp_ehd; - i /= d1->bios_hd; - dp[j].dp_ecyl = i; - i -= dp[j].dp_ecyl; - dp[j].dp_esect |= i >> 2; - - } + dp[j].dp_esect = i % d1->bios_sect; + i -= dp[j].dp_esect++; + i /= d1->bios_sect; + dp[j].dp_ehd = i % d1->bios_hd; + i -= dp[j].dp_ehd; + i /= d1->bios_hd; + if (i>1023) i = 1023; + dp[j].dp_ecyl = i; + i -= dp[j].dp_ecyl; + dp[j].dp_esect |= i >> 2; + printf(" E:%lu = (%x/%x/%x)\n", c1->end,dp[j].dp_ecyl,dp[j].dp_ehd,dp[j].dp_esect); |