IBM lanceerde op 12 augustus 1981 zijn model 5150. Deze pc is tot vandaag nog steeds de basis van de vele desktop- en laptopsystemen die worden verkocht. Vanwege backwards-compatibiliteit heeft het ook vele verrassingen waar we tegenaan lopen als we een retrosysteem in gebruik willen nemen.

Henk van de Kamer
In de vorige aflevering wist ik mijn gloednieuwe tweedehands 80386 DX op 40 MHz te starten met behulp van een nieuwe ATX-voeding plus verloop en een tweedehands VGA-kaart – Trident TVGA8900CL. Het eindigde met het BIOS en een paar andere zaken die ontbraken.
CMOS batterij
Tegenwoordig gebruiken moederborden een knoopcelbatterij en dat heeft een goede reden. Oudere systemen gebruikten meestal een oplaadbare NiCd-batterij en die gaan naar verloop van tijd lekken. De daarbij vrijkomende zouten zijn zeer agressief en vreten de koperbanen uiteindelijk volledig weg. Gelukkig heeft iemand op mijn moederbord op tijd de oude batterij verwijderd. Ik zie sporen dat de batterij was begonnen met lekken, maar niet tot een punt dat de printsporen hersteld moeten worden.
Omdat een knoopcel niet opgeladen kan worden, is een extra diode nodig om de oplaadstroom te blokkeren. Ondertussen heb ik een minuscuul printplaatje met diode, CR2032-houder en pinnen op de juiste afstand liggen. Ik ben van plan om solderen te leren, maar op dit moment laat ik het toch liever aan mijn broer over. Op zich kan een computer prima zonder deze batterij functioneren, alleen moeten we dan elke keer de instellingen en datum/tijd invoeren.
Toetsenbord
Voor dat invoeren is natuurlijk een toetsenbord nodig. Vanaf de eerste IBM model 5150 tot en met de eerste Pentium-systemen was een vijfpolige DIN-connector de standaard. Alhoewel de aansluiting hetzelfde was, zijn er drie versies in omloop (https://en.wikipedia.org/wiki/IBM_PC_keyboard#Connection) die niet backwards compatibel zijn. De eerste twee zijn gebruikt in 8086/8088-systemen en de derde in AT-systemen, zie ook de voedingsaansluiting in de voorgaande aflevering. Alles met een 80286 en hoger gebruikt de AT-standaard indien de DIN-connector aanwezig is.
Uiteindelijk werd de 5-polige aansluiting vervangen door de kleinere 6-polige PS/2-poort. Deze heeft naast toetsenbord ook de mogelijkheid om muizen aan te sluiten. Omdat PS/2 compatibel is met AT, zijn er passieve verloopkabels die nog steeds te koop zijn. Nu heb ik begin vorig jaar bij het opruimen van een huis een AT-toetsenbord mogen meenemen. Dit toetsenbord zal niet werken op PC/XT-systemen, omdat er geen conversieschakelaar aanwezig is. Ofwel voor deze systemen moeten we zelf een actief verloop maken via een aparte microcontroller.
De volgende stap was usb en daar wordt het nog onduidelijker. De eerste toetsenborden en muizen leverden respectievelijk een paars of groen passief verloopstuk mee. In het toetsenbord of muis is een microcontroller aanwezig die de signalen van de computer bestudeert om dan te besluiten of het om een PS/2- (en indirect dus ook AT-) of usb-connectie gaat. In theorie is het dus mogelijk om een usb-toetsenbord via een usb-naar-PS/2-verloop en vervolgens een PS/2-naar-AT-verloop te gebruiken.
Theoretisch? Ja, want in de praktijk wordt uit kostenoverwegingen de detectie van het PS/2-protocol steeds vaker weggelaten. Drie van de vier usb-toetsenborden die ik hier heb liggen, werken niet. De vierde is een gaming-exemplaar dat ik het afgelopen jaar bij Action kocht. Onlangs zag ik deze nog steeds in de schappen liggen. En dat toetsenbord werkt met de genoemde verloopstukken prima.
Harddisk
Ik heb nog een aantal IDE-harddisks liggen, maar deze zullen eerst op werking gecontroleerd moeten worden. Omdat het systeem door de voeding toch al een Frankenstein-monster is geworden, heb ik via AliExpress een aantal CF- en SD-naar-IDE-conversies gekocht. De laatste als experiment, omdat de huidige kaarten waarschijnlijk veel te groot zijn voor oudere computers. Qua stroomvoorziening wordt een vierpolige floppydisk-voedingsconnector verwacht en dat betekent weer een conversiekabel naar een male – in sommige aanbiedingen volgens mij incorrect als female aangeduid – SATA-voedingsaansluiting. Tot slot ook nog een collectie met CF-kaarten: twee stuks per grootte van 64, 256 MB, 1, 4 en 16 GB.
In mijn museum vond ik een BNI 16 bits ISA IDE/floppy-controllerkaart. Deze is nergens op het internet te vinden, maar wel een exemplaar dat voor 95 procent identiek is (https://bschepan.narod.ru/hwmuseum/img/full/isa_multiport/ISA_022_1.jpg). Ondanks het ontbreken van documentatie werkt deze kaart zonder problemen met een 64 MB CF-kaart “harddisk” met daarop MS-DOS 3.30. Maar laat ik eerst uitleggen wat daar allemaal voor nodig is.
MS-DOS
De allereerste MS-DOS-versie snapte niets van harddisks. In versie 2.0 werd die omissie aangepakt en kon één FAT12-partitie van maximaal 16 megabyte gebruikt worden. In versie 3.0 werd dit een FAT16-partitie van maximaal 32 megabyte aan het begin van de harddisk. De door mij gekozen versie 3.30 kan in de resterende grootte van de harddisk een extended partitie maken met daarin meerdere logische partities met elk dezelfde 32megabyte-beperking. In versie 4.0 was de het maximum per partitie vergroot naar 512 megabyte en in versie 5.0 werd FAT32 geïntroduceerd.
CHS beperkingen
Een harddisk heeft platters die aan beide kanten een magnetische laag kunnen bevatten. Deze worden gelezen door een head. De circulaire schijf wordt ingedeeld in cylinders die vervolgens worden opgedeeld in meerdere sectoren van elk 512 bytes. Gezien deze fysieke opbouw is het logisch dat men begon met een CHS (Cylinder Head Sector) adressering. Hiervoor werden drie bytes – 24 bits – gebruikt. Helaas hadden fabrikanten en Microsoft een ander idee hoe deze bits verdeeld moesten worden.
Fabrikanten wisten dat een harddisk met meer dan acht platters een uitdaging zou worden, ofwel zij gebruikten vier bits – maximaal 16 koppen – voor de H. Qua sectoren werd als maximum 63 gekozen, ofwel 6 bits. Ja, dat geeft 64 waardes, maar historisch worden sectoren vanaf één geteld en de andere twee vanaf nul. Logisch toch? De resterende 14 bits zijn toegewezen aan de cylinders en dat geeft dus een maximale grootte van 16.384 maal 16 maal 63 maal 512 is 8.455.716.864 bytes ofwel 7,88 GiB (8,46 GB).
Microsoft gebruikt intern voor CHS respectievelijk 10, 8 en 6 bits. Door een bug kan 0xFF als waarde voor de heads niet gebruikt worden. Dat is geen probleem, want de harddiskcontrollers in die tijd snappen sowieso niets van waardes die groter zijn dan verwacht. En dat geeft de eerste grens qua grootte die een harddisk kon hebben onder MS-DOS: 1024 maal 16 maal 63 maal 512 is 528.482.304 bytes ofwel 504 MiB (528 MB).
LBA
Er zijn allerlei trucs bedacht om de beperkingen in beide systemen te omzeilen, maar uiteindelijk is besloten om de hele aansturing in cilinders, koppen en sectoren in de harddisk af te handelen. In plaats daarvan gebruiken moderne besturingssystemen LBA (Logical Block Addressing), ofwel gewoon een volgnummer. Zoals ik ontdekte, worden deze in MS-DOS 3.30 al in de partitietabel gebruikt en ik vermoed daarom dat dit geïntroduceerd is in de tweede versie. Hiervoor zijn vier bytes gereserveerd en dat geeft de 2 terrabyte-limiet die de meeste lezers hebben meegemaakt.
![]() |
| CHS-waardes voor een virtuele harddisk |
PCem
Zoals gezegd, heb ik het systeem nu werkend met MS-DOS versie 3.30 dat ooit op twee 5,25inch 360 KB floppydisks stond. Nu ligt ergens in de opslag een hopelijk nog werkend exemplaar van die floppy’s, maar in plaats van die gok bedacht ik een andere truc. Op het internet zijn genoeg bronnen te vinden met bruikbare images. Die kunnen in een emulator gebruikt worden, mits deze met de genoemde floppydiskdrive overweg kan. Om de cassette BASIC van een originele IBM-PC model 5150 in werking te zien, heb ik ooit PCem (https://pcem-emulator.co.uk) gecompileerd onder Linux. Voor oude computers werkt dit beter dan moderne emulatoren als Qemu en VirtualBox.
In een volgende aflevering zal ik laten zien dat het BIOS in mijn systeem niets snapt van de LBA-adressering. We zitten dus – voor nu – vast aan CHS. Voor fysieke harddisks uit die periode is dat geen probleem, omdat de benodigde gegevens gewoon op behuizing werden gedrukt. Voor CF-kaarten en usb-flashdrives wordt het een stuk lastiger. Volgens de specificaties moeten zij op verzoek van het BIOS logische waardes teruggeven, maar ook dat memo hebben de Chinezen niet ontvangen.
Het BIOS heeft een lijst van in die tijd 46 gebruikelijke harddisks met bekende CHS-gegevens. Mocht geen daarvan juist zijn, kunnen we zelf waardes invoeren. De hamvraag is natuurlijke welke. De gebruikte CF-kaart heeft de volgende exacte grootte:
# fdisk -l /dev/sdb
Disk /dev/sdb: 62.6 MiB, 65601536 bytes, 128128 sectors
...
Als we de 65.601.536 delen door 512, krijgen we het genoemde aantal sectoren. Als we deze vervolgens delen door 63 en 16 – het maximum dat harddiskfabrikanten hebben afgesproken – is het resultaat 127 cylinders, waarbij je het restant negeert! In de afbeelding zien we deze waardes voor een virtuele harddisk – lees: bestand op de fysieke harddisk waarvan PCem is gestart.
Volgende keer
Volgende keer laat ik zien hoe we deze harddisk indelen, formatteren en MS-DOS 3.30 installeren. Waarna we de image naar genoemde CF-kaart kunnen schrijven, om tot slot de 80386 te starten.
