Skrivet av Svensktiger:
Hittade en bra beskrivning här (som du säkert har koll på redan):
https://www.tldp.org/HOWTO/Large-Disk-HOWTO-4.html
Ofta så kan man kringgå 33.8GB begränsningen med en moddad BIOS.
Men den moddade BIOS'en har troligen tagit bort nånting annat för att få plats med modden.
Storleken på BIOS chippen var ju det som skapade problemet från början
Oftast plockar man bort stöd för udda eller väldigt långsamma CPU'er.
Med moddad BIOS innebär att adresstranseleringen måste gå via LBA i slutändan mot disken eftersom IDE-protokollet har ingen adressfält för mer än 65535 cylindrar och då gäller det att hålla tungan rätt i munnen om man emulerar Cxxx*H255*S63 för att hantera större diskar då de flesta IDE-diskar maxar ut vid 65535 * 16 * 63 (16bit + 4bit + 6bit i adressering ) om man adresserar via CHS-adressering och över det måste gå via LBA-adressering som har 28 bitar (i 4 Byte) för max 137.4 GB på sig innan utökningen till LBA48 med ATA6 kom.
Man skall komma ihåg att IDE-registren är direkt överfört från WD1003 och sedan har man i stort sett bitstuffat in nya funktioner, ändra definition/användning på några register i början och sedan lagt på ytterligare register i slutet... det är inte så många som ställer in write compensation längre när disken formateras som man gjorde med WD1003 och istället nu kallas 'feature register' vid skrivning i IDE
WD1002/ WD1003 AT-buss IDE IDE LBA-mode
adress 1F0 data register (16 bit) data register(?-bit) data register (?bit)
1F1 error register error register error register
1F2 sector count sector count LBA count
1F3 sectorn number sector number byte 0 LBA number(LSB)
1F4 cylinder number(LSB) cylinder number(LSB) byte 1 LBA number
1F5 cylinder number[1] cylinder number(MSB)[1] byte 2 LBA number
1F6 SDH register[2] select driver/Head reg.[2] byte 3 LBA number(MSB)[3]
*alla register i byte om inget annan nämns.
[1] endast 2 lägsta bitar används, detta hängde med väldigt länge även i IDE också därav max 1024 cylindrar i CHS-adressering och i stort sett var hugget i sten i gränssnittet mot OS/DOS även om IDE-diskarna klarade flera cylindrar, och var första hindret när man skulle över 528 Mbyte - BIOS fejkade senare geometri mot DOS/OS med adresstranslation med att öka antalet sektorer och antal huvuden för att till vare pris inte skulle nå över 1024 cylindrar för att DOS/Windows skulle kunna boota. - detta är typexempel på att mjukvara kan bli svårare att ändra på än hårdvara när det väl 'standarden' är satt...
[2] 4 lägsta bitar för adressera läshuvud, därav aldrig kan bli mer än 16 huvuden, bit 5 är drive select (av disk 0 och 1, även kallad master/slav) vilket också är orsak till varför denna fält inte kan ökas för fler läshuvuden, bit 7 används för att flagga när LBA-adressering skall användas i IDE-diskar.
[3] samma som [2] och är orsaken med endast 4 lägsta bitar tillgänligt gör att LBA-adresseringen inte kan ökas mer än till 28 bitar lång.
den senare utökningen till LBA48 använder inte nämnda fälten alls och signalerar att LBA48 skall använda när dessa fält är fyllda med 'f' hexadecimalt.
Ovanstående säger inget om hur stora sektorer kan vara - på den tiden med MFM-diskar som WD1002 och WD1003 härrör ifrån kunde man formatera i 128, 256 och 512 bytes sektorer, somliga SCSI-kontroller tillät även 1024 bytes sektorer men WD1003 var prisoptimerad för IBM:s räkning och bara 2 kByte RAM och därav blev maxsstorleken 512 Bytes sektorer som sedan blev standard i windowsvärlden.
---
@hakank222
vad är det för miljöer du kör - gamla DOS och win95/98 ?? - då förstår jag om det är krångligt...
De flesta moderna OS skiter fullständigt i vad BIOS tycker om diskarna utan utforskar själva och anpassar drivrutinerna för det, men problemet är BOOT och hur den skall suga i sig boot-koden och bootmanagern vilket gör att man är styrd i att dessa filer måste placeras i början av disken innan mer 'intelligenta' OS tar över.