#systemyoperacyjne #linux #oesowo

Sterowniki urządzeń

Długo żem się zbierał do tego wpisu. Jak tu zrobić żeby nie było za nudno albo niezrozumiale, a pewnie i jedno o drugie, no nie da się.

Obsługa jakiegokolwiek urządzenia, czy to wewnątrz czy na zewnątrz kąkutera polega na wysyłaniu określonych w dokumentacji urządzenia komend pod adresy pod którymi te urządzenia nasłuchują. Procesory linii 8086 od Intela miały osobne rozkazy do pisania i czytania z komórek pamięci, a osobne do pisania i czytania z urządzeń. Trudno teraz odkopać faktyczny i oficjalny powód dlaczego Intel tak zrobił. Czyli napisanie czegoś do pamięci (mov) pod adres 0xb00b wypełniało komórkę pamięci, a wysłanie czegoś pod adres IO (out) wysyłało bajty na szynę w nadziei że pod PORTEM (bo adresy IO Intel nazywał portami) o tym adresie słucha jakieś urządzenie.

Szyna ISA o ile dobrze pamiętam była po prostu wystawieniem szyny systemowej. Urządzenia - jakieś soundblastery, sieciówki, modemy itp miały na płytach zworki do konfiguracji. Nie przewidywano, że to system czy bios będą się dogadywać z urządzeniami i ustalać pod jakimi adresami IO będą występować ani jakie numery przerwań trącać. To robił człowiek przed umieszczeniem karty w slocie, a potem musiał pamiętać.

Sound Blaster, na adresie IO 0x220, nr przerwania 7, kanał DMA 1. Chyba tak domyślnie układano zwory i rzadko kto to ruszał chyba że inna karta nie dała się ustawić tak, żeby nie kłóciła się z SB.

DOS umiał obsługiwać szereg urządzeń - kartę graficzną w trybie tekstowym, dyski i system plików FAT, dzięku czemu można było czytać plik c:\file.txt i wystarczyło wywołać ze swojego programu funkcję systemową. DOS z kolei wołał funkcję BIOSa do odczytu sektorów. Jak w wierszyku o rzepce - program do DOSa, DOS do BIOSa, BIOS do dysku. Po drodze w DOSie był jeszcze właśnie "sterownik" FAT umiejący przetłumaczyć żądanie o plik po nazwie na szereg odczytów z sektorów dysku.

DOS jednak nie umiał ani w karty muzyczne ani w sieciówki. W CD ROMa też nie umiał.

Co robili programiści - głównie gier, bo to one napędzały rynek mikrokomputerów IBMopochodnych? DOS całe szczęście był prymitywny aż do końca. Architektura już chyba od 286 pozwalała na rozgraniczenie co może robić program użytkownika a co (wszystko) system operacyjny. DOS miał to w pompie, wszystkim wolno wszystko, niech klawisz Reset ma nas w swojej opiece. I całe szczęście.

Sterowniki do kart muzycznych były częściami programów gier. Program install.exe albo częściej setup.exe pozwalał ustawić, przetestować i zapisać ustawienia karty muzycznej dla danej gry. Potem właściwa gra korzystała ze SWOJEGO sterownika. Biedny Gravis Ultrasound mimo że produktem był świetnym to spóźnił się na pociąg i niewiele gier go wspierało. To był ten minus. Można było mieć GUSa ale w ulubionej gierce być skazanym na pierdzenie z PC speakera.

Opcja druga - tak jak robiły to sieciówki. Chciało się pograć w Dooma z kolegami? Najpierw każdy musiał załadować w odpowiedniej kolejności pakiet sterowników dla swojej karty. lsl.exe, potem właściwy sterownik karty, zwykle nazywający się jak model karty - np ne2000.exe dla kart Novella czy 3c5x9x.exe dla 3COM, a na końcu stos protokołu, w Doomie był to IPX, czyli o ile pamiętam ipxodi.exe. Albo .com zamiast exe. Sterowniki były programami wykonywalnymi ale "kończąc" swoje działanie zamiast uruchamiać w dosie funkcję terminate wołały terminate and stay resident co powodowało że mimo że już formalnie skończyły, DOS po nich nie sprzątał. Ich kod zostawał dostępny w pamięci. I tak stawały się sterownikami, z których mógł skorzystać Doom, bo producenci kart umówili się na wspólny interfejs programowy.

Można by zaryzykować stwierdzenie, że DOS był akurat tak prymitywny, że nie przeszkadzał w niezwykle gwałtownym rozwoju zarówno sprzętu jak i gier. Wobec braku internetu ciągłe aktualizacje systemu były w zasadzie niemożliwe, bardziej elegancki system operacyjny wykorzystujący ochronę pamięci i jądra mógł być poważną przeszkodą dla twórców gier. Ale był DOS - może nie najtaniej ale jako tako.

e3ac3237-d5ef-4779-b766-40dbf2bae53e
78a649d4-f788-4ac7-bf8d-c5d5679c00e2

Komentarze (13)

Fen

Ale że co? Nie mogłeś sobie Windowsa na płytce od kolegi ogarnąć? Po co to komu?

pierdonauta_kosmolony

@Fen W tych czasach, szczególnie w Polsce, płytkę można było sobie jedynie powiesić na lusterku w aucie. Byli tacy, co wierzyli że rozprasza fale radarów policyjnych.

Fen

@pierdonauta_kosmolony no to przez wetransfeara byś ogarnął... teraz też jest problem z cdromami!

pierdonauta_kosmolony

@Fen Rzeczywiście w 1996r musiałem być trochę nieogarniętym dzieciakiem żeby nie ściągnąć sobie Windowsów 95 z wetransfera. Ale przyniosłem sobie winsowsy 3.11 na dyskietkach.

Fen

@pierdonauta_kosmolony no też tak sądzę @ataxbras a co 85 był gorszy?? Jesteś rasistą czy jak?

Nie widziałem że z wiekiem człowiek traci zdolność do wyłapania sarkazmu...

ataxbras

@Fen Wyłapałem, stąd wyszczerzona buźka.
A co do '85 - to był wspaniały rok, nie zapomnę go nigdy...

Fen

@ataxbras no ja nie będę ściemniał... ja go pamiętać nie mogę xD. Jeszcze 9 lat czekałem żeby się pojawić 😆

ataxbras

@Fen Coraz młodsi pchają się na ten portal dla seniorów

fervi

@Fen Nie wiem czy dżołk, ale Windows tyle zasobów zżerał i był tak na początku lipny, że ludzie siedzieli na DOS i Windowsa odpalali jak był potrzebny

jiim

Ja byłem na przekór i zawsze ustawiałem SB Pro na IRQ 5 xd

A GUS miał, o ile pamiętam, emulację Adlib, więc wcale na speakera nikt nie był skazany.

ataxbras

@pierdonauta_kosmolony INT13h

Zaloguj się aby komentować