|
Na początku był CP/M
W maju 1979 firma Seattle Computer Products skonstruowała kartę w architekturze
S-100 z nowym, 16-bitowym procesorem Intel 8086. Prowadzone były rozmowy z
Digital Research Inc. na temat wykorzystania tworzonego właśnie CP/M-86 w nowym
sprzęcie, jednakże prace w DRI przeciągały się. Ponadto SCP posiadało zaledwie
dwie karty z procesorem 8086 i nie chciało lub nie mogło udostępnić DRI żadnej z
nich do prac rozwojowych i testowania nowego systemu. Jedną z pierwszych kart
otrzymała natomiast do prac nad BASIC'em dla procesora 8086 firma Microsoft,
znana m.in. z BASIC'a dla komputera MITS Altair. Około dwóch tygodni później, w
pierwszym tygodniu czerwca 1979, na National Computer Conference w New York
zademonstrowana została pierwsza wersja Stand-Alone Disk BASIC (BASIC ze
zintegrowanymi podstawowymi procedurami I/O) dla procesora 8086.
QDOS - Quick'n'Dirty Operating System
Sprzedaż kart ruszyła w listopadzie 1979. Jako jedyne oprogramowanie dołączany
był Stand-Alone Disk BASIC Microsoftu. Czas płynął, a SCP nadal czekała na nową
wersję systemu CP/M opracowywaną przez (Intergalactic) Digital Research Inc.
Niestety, DRI nie spieszyła się z zakończeniem prac nad CP/M-86 i na wiosnę 1980
systemu nadal jeszcze nie było. W kwietniu 1980 SCP zdecydowała nie czekać
dłużej i stworzyć własny system operacyjny. Został on napisany przez Tima
Pattersona naprędce (w sześć...osiem tygodni), ale działał nadspodziewanie
sprawnie. W sierpniu 1980 roku SPC rozpoczęła sprzedawać nowy QDOS v0.10 (Quick'n'Dirty
Operating System), a we wrześniu zademonstrowała go MS'owi. Później Patterson
został zaangażowany przez MS i przez mniej więcej rok pracował w MS nad DOSem,
po czym wrócił do SCP.
UWAGA: Aby ułatwić życie sobie i innym programistom i móc w miarę
swobodnie przetłumaczyć oprogramowanie CP/M na potrzeby nowego systemu,
Patterson zachował podstawowe struktury i zasady organizacji systemu CP/M oraz
naśladował sposób ładowania i wykonywania programów. Dodał tablicę
rozmieszczenia/alokacji plików (FAT - File Allocation Table), którą Gates i
Allen używali w AltairBASIC i kilka innych ulepszeń.
Podobno Tim Patterson powiedział kiedyś: "So I took a CP/M manual that I'd
gotten from the Retail Computer Store five dollars in 1976 or something, and
used that as the basis for what would be the application program interface, the
API for my operating system. And so using these ideas that came from different
places I started in April and it was about half time for four months before I
had my first working version."
Wczesne wersje DOSa bardzo wiele "zawdzięczają" systemowi CP/M. W rzeczywistości
takie rzeczy jak np. format plików .COM w CP/M i DOS czy też podstawowe
wywołania/funkcje systemowe (system calls) są tak podobne, że programiści bez
najmniejszego problemu "przesiedli" się z CP/M na DOS'a. Serce CP/M składało się
z interpretera poleceń o nazwie CCP (Console Command Processor) i dwóch
podstawowych plików systemowych BDOS i BIOS odpowiedzialnych odpowiednio za
operacje dyskowe na plikach oraz operacje I/O. Ta organizacja została
przeniesiona niemal identycznie do PC-DOS (w postaci trójki plików: COMMAND.COM,
IBMDOS.COM i IBMBIO.COM) i MS-DOS (COMMAND.COM, MSDOS.SYS, IO.SYS).
System dla IBM PC
Mniej więcej w październiku 1980 IBM rozpoczął poszukiwania systemu
operacyjnego, który mógłby natychmiast zostać użyty w nowym projekcie - IBM PC.
IBM rozglądał się, ze względu na brak czasu i wymogi rynku, za gotowym
rozwiązaniem. Początkowo zamierzał zastosować ówczesny standard - system CP/M
firmy Digital Research Inc. Okazało się jednak, że DRI nie był zainteresowany
współpracą z IBM. Wersje wydarzeń, które rozegrały się pomiędzy DRI a IBM są
różne.
Microsoft MS-DOS 1.0 (86-DOS)
Zniechęcony do DRI IBM zwrócił się do Microsoft'u (z którym dotychczas rozmawiał
jedynie o językach programowania dla nowego komputera). MS nie miał systemu
operacyjnego dla procesora 8086, ale już w od października 1980 prowadził
rozmowy z Seattle Computer Products na temat wykupienia praw do QDOSa dla
swojego klienta (SCP nie wiedziało wtedy, że chodzi o IBM). W grudniu 1980 SCP
opracował 86-DOS v0.30 (QDOS przemianowany na 86-DOS), a MS wykupił prawa do
systemu na zasadzie non-exclusiv (bez prawa wyłączności). 86-DOS v0.3 składał
się z około 4000 linii kodu w asemblerze. Został on szybko wygładzony i jako
MS-DOS 1.0 (Microsoft Disk Operating System) zaprezentowany IBM i przekazany do
testowania. W lutym 1981 system został uruchomiony na prototypie IBM PC i w
listopadzie ostatecznie zaakceptowany jako podstawowy system operacyjny dla
nowych komputerów.
PC-DOS 1.x (IBM PC)
Microsoft zakupił za około 50 000$ wszystkie prawa do 86-DOS w lipcu 1981
(86-DOS 1.0, wypuszczony przez SCP w kwietniu 1981). Zaoferował go IBM wraz z
pakietem języków programowania (BASIC, FORTRAN, Pascal, COBOL i 8086 Assembler).
Oferta została przyjęta. 12 sierpnia 1981 IBM przedstawił światu swoje
najmłodsze dziecko: IBM PC oraz jego system operacyjny: IBM Personal Computer
DOS 1.0 (IBM 5150 PC Personal Computer, posiadał procesor Intel 8088 o
częstotliwości 4.77 MHz, 64kB RAM, 40kB ROM, jeden napęd dysków elastycznych
5.25" i wraz z dyskowym systemem operacyjnym kosztował $3 000. IBM poddał system
operacyjny daleko idącemu procedurze sprawdzającej, w wyniku której znaleziono
ponad 300 błędów (bugs) i zdecydował się napisać dużą część systemu od początku
(--> wersja PC-DOS 2.0). Początkowo system sprzedawany był przez dystrybutorów w
systemie OEM pod różnymi nazwami (Compaq-DOS, Z-DOS, Software Bus86). Przy
wprowadzeniu wersji 2.0 MS przekonał wszystkich, oprócz IBM, do używania nazwy
"MS-DOS".
Ciekawostka: wbrew pozorom nazwa towarowa "PC-DOS" nie jest
własnością IBM lecz Digital Equipment (DEC), a IBM używa określenia "The IBM
Personal Computer DOS".
Wersje systemu
Pierwsza wersja DOS'a była skromna i surowa. Polecenia TIME i DATE w wersji
PC-DOS 1.0 były raczej oddzielnymi małymi programami niż częścią COMMAND.COM.
Listing zawartości katalogu podawał co prawda datę utworzenia lub modyfikacji
pliku, pomijał jednak godzinę. Polecenie MODE nie potrafiło ustawić parametrów
protokołu i prędkości połączenia ani też zmusić portu równoległego komputera do
współpracy z typowymi drukarkami. Przy pomocy komendy COPY nie można było
połączyć kilku małych plików w jeden większy. Komunikaty ekranowe było skąpe i
enigmatyczne. Wersja PC-DOS 1.00 obsługiwała jedynie jednostronne, 8 sektorowe
dyskietki o pojemności 160 kB. Wg MS wersja 1.0 mieściła się na pojedynczej
dyskietce 160kB i zawierała: COMMAND.COM - interpreter plików wsadowych oraz
poleceń: DIR, REN, DEL, COPY, TYPE, PAUSE, CHKDSK, DATE, TIME, FORMAT, SYS,
ponadto EDLIN (ascetyczny edytor tekstu pracujący w trybie edycji pojedynczych
linii), DEBUG (prawdziwa perełka: mini-assembler/debuger, wg innych źródeł
dodany dopiero w wersji 2.0), FILCOM (program do porównywania plików).
PC-DOS 1.1 z maja 1982 roku (opracowany w MS i przekazany IBM) poprawiał te
wszystkie braki lub przynajmniej czynił je mnie uciążliwymi. Problemem nadal
były ograniczenia odziedziczone po CP/M. I chociaż IBM wprowadził obsługę
dyskietek dwustronnych, 8-sektorowych o pojemności 320 kB, użytkownicy
oczekiwali na więcej.
Pierwsza wersja sprzedawana przez Microsoft nosiła oznaczenie MS-DOS 1.25,
została wydana w lipcu 1982 i odpowiadała IBM PC-DOS 1.1. MS sprzedawał MS-DOS
początkowo wyłącznie w systemie OEM, dopiero od wersji 3.2 także indywidualnym
odbiorcom. Pomimo iż wersje DOS'a MS i IBM były bardzo podobne, nie były ze sobą
w pełni kompatybilne/zgodne (nie można było przenosić pomiędzy nimi programów).
Kilka uwag technicznych o systemie
Nawet najlepszy komputer nie jest wiele wart bez odpowiedniego oprogramowania i
IBM dobrze zdawał sobie z tego sprawę. Sam IBM nie oferował zbyt wiele programów
użytkowych. Były to EasyWriter - pełen bug'ów, słaby edytor tekstów, wersja
VisiCalc dla DOSa (wersja dla Apple była prawdziwym hitem), kilka języków
programowania Microsoftu i kilka innych mniej znaczących pakietów.
Najpopularniejsze wówczas programy: WordStar i dBase II pracowały tylko w
środowisku CP/M. Jednym z najpilniejszych priorytetów IBM było zapewnienie
łatwości przenoszenia oprogramowania z CP/M do DOSa, a jedyny skuteczny i szybki
sposób na realizację tego zamierzenia był bardzo prosty: oba systemy musiały być
podobne! Stąd właśnie wiele elementów systemu znanych użytkownikowi jak np.
sposób nazywania plików (do 8 liter właściwej nazwy, kropka, 3 literowe
rozszerzenie), prompt "A>", skromne komunikaty systemowe lub zgoła ich brak (jak
np. "kamienna cisza" po usunięciu pliku) wywodzą się bezpośrednio z CP/M. To
samo dotyczy głębiej ukrytych struktur systemu jak np. File Control Blocks (FCB's),
Program Segment Prefix czy organizacja ładowania pliku do pamięci. DOS naprawiał
kilka niedostatków CP/M, kilka poleceń zmieniono na bardziej logiczne.
Programiści mogli traktować operacje I/O związane z drukarką czy ekranem w ten
sam sposób jak operacje na plikach. Organizacja zapisu na dysku w DOS'ie była
skuteczniejsza, pozwalała na zapisywanie dłuższych plików. Było to wynikiem
zastosowania przez Pattersona tablicy rozmieszczenia/alokacji plików (FAT - file
allocation table) po raz pierwszy użytej przez Billa Gatesa w AltairBASIC.
Śledziła ona położenie fragmentów pliku na dysku i umożliwiała "złożenie go w
całość" w razie potrzeby odczytu. Pozwalała również odczytywać i zapisywać
więcej niż jeden plik jednocześnie, co znacznie przyspieszyło operacje dyskowe.
W DOSie można było uruchamiać duże pliki EXE, które w przeciwieństwie do
wywodzących się z CP/M plików COM nie posiadały ograniczenia wielkości do 64kB.
Ponadto DOS mógł pozostawić nieaktywny program w pamięci, a użytkownik mógł go
uaktywnić w razie potrzeby. Dużą popularność zyskała możliwość pisania i
wykonywania skryptów, tzw. batch files. W sytuacjach awaryjnych DOS był trochę
bardziej przyjazny, poza tym obsługa błędów była bardziej dopracowana niż w CP/M.
DOS automatycznie odczytywał zawartość nowego dysku (w CP/M użytkownik musiał
"ręcznie" nakazać to systemowi) oraz zapisywał datę utworzenia lub ostatniej
modyfikacji pliku.
COMMAND.COM podczas uruchamiania programu użytkowego zwalniał część pamięci (co
miało spore znaczenie w czasach, gdy systemy standardowo były wyposażane w 64kB
RAM'u) a po zakończeniu działania programu doładowywał brakującą (tzw. transient
part) część z dysku. W związku z tym, użytkownik zawsze musiał mieć pod ręką
dysk systemowy. Wkrótce jednak ilość pamięci w komputerach powiększyła się
10-krotnie i oszczędność uzyskiwana przez taką organizacje COMMAND.COM był mało
znacząca. Jednym z większych ograniczeń pierwszej edycji DOSa była obsługa
jedynie napędów jednostronnych 160kB, mimo że dyski posiadały dwie strony zdolne
do zapisu danych. Usunięcie tego ograniczenie oraz kilku innych usterek miało
miejsce w wersji 1.1 wprowadzonej przez IBM w maju 1982 roku.
Dalsze losy CP/M
Pomimo zaadaptowania CP/M-86 w 1982 roku dla IBM PC, wyposażenia go w większą
ilość ciekawych funkcji i narzędzi oraz lepszej wydajności, zaczął on jednak
znikać ze sceny systemów operacyjnych. IBM, zagrożony procesem ze strony DRI o
naruszenie praw autorskich (gdyż DOS zawierał wiele elementów "żywcem"
przejętych z CP/M) pozostawiał klientowi wybór systemu (oferowane były IBM
Personal Computer DOS 1.0, UCSD P-System stanowiący rodzaj systemu operacyjnego
ze zintegrowanym Pascalem oraz DRI CP/M-86), ale ze względu na różnice cenowe
wybór wypadał dość jednostronnie (CP/M-86 kosztował $240(wg niektórych źródeł aż
$495!?), a PC-DOS $40-60).
Pomimo pewnych przeciwności DRI z CP/M-86 mógłby utrzymać swoją dominującą
pozycję na rynku systemów operacyjnych dla komputerów klasy PC gdyby nie dwie
rzeczy, po pierwsze za CP/M-86 trzeba było sporo dopłacić (PC-DOS był natomiast,
jako OEM, praktycznie wliczany w cenę systemu i był niejako "za darmo", a poza
tym kosztował jedynie $39,95), po drugie wielu programistów uważało
przeniesienie oprogramowania CP/M na platformę DOS za łatwiejsze niż
przystosowanie go do nowego CP/M-86.
PC-DOS 2.x (IBM PC-XT)
W marcu 1983 IBM wprowadził swój IBM PC-XT, ulepszoną wersję IBM PC oraz nową,
napisaną praktycznie od podstaw, wersję DOSa - 2.0.
Nowy system zarządzania plikami i katalogami
Nowy twardy dysk określany przez IBM jako "stały" (fixed disk) miał pojemność
10MB i mógł pomieścić równowartość 31 dwustronnych dyskietek. Niestety, tak duża
pojemność powodowała problemy. Dotychczas (DOS 1.x) informacje o plikach
przechowywanych na dyskietkach były zapisywane przez system w katalogu głównym
dyskietki (dyskietka jednostronna miała miejsce na 64 takie wpisy (root entries),
dwustronna na 112). Efektywne wykorzystanie możliwości twardego dysku zależało w
dużej mierze od znalezienia nowego sposobu zarządzania plikami i katalogami. CP/M
radził sobie z dużymi dyskami poprzez ich podział na mniejsze jednostki (user
areas), co nie było rozwiązaniem zbyt efektywnym ani wygodnym. Skuteczne
rozwiązanie posiadał za to UNIX, który potrafił zarządzać dużymi woluminami w
sposób elegancki i prosty. MS wykupił licencję na UNIXa i oferował jego wersję
nazwaną XENIX. Sercem systemu UNIX/XENIX była hierarchicznie zorganizowana,
drzewiasta struktura katalogów, która dawała użytkownikowi pełną swobodę w
kształtowaniu i wykorzystaniu dostępnej przestrzeni dyskowej. MS zaadaptował tą
strukturę jako rdzeń zupełnie nowej inkarnacji DOS'a.
UWAGA: Popełnił jednak małą gafę. UNIX w celu identyfikacji poziomu
podkatalogu używa slasha "/" (ukośnika), który pełni rolę "gałęzi" na drzewie
katalogów. Problem polegał na tym, że wcześniejsze wersje DOSa używały slasha
jako znaku sygnalizującego parametr przekazywany do programu lub polecenia
systemowego (np. FORMAT /s). MS w systemie DOS zastąpił go backslashem "\"
(lewym ukośnikiem? :-) co spowodowało irytację całych pokoleń użytkowników UNIXa
i DOSa, a szczególną irytację i zamieszanie wywołało w krajach stosujących inny
niż amerykański, narodowy układ klawiatury, który często nie zawierał w ogóle
znaku backslash lub też przypisywał mu inny klawisz niż standard US.
Instalowalne sterowniki urządzeń
IBM i MS znalazły sposób na poradzenie sobie z gwałtownie rosnącą ilością
urządzeń wypuszczanych na rynek przez producentów. Jednym z podstawowych zadań
DOS'a było zapewnienie komunikacji pomiędzy PC a wszelkimi możliwymi
urządzeniami zewnętrznymi. DOS 1.x stosował predefiniowaną, wewnętrzną tablicę
zawierającą charakterystyki dopuszczalnych urządzeń. W obecnej sytuacji tablica
ta byłaby niewygodna, mało elastyczna i przede wszystkim o wiele za długa. MS
zaimplementował w nowej wersji systemu obsługę instalowalnych sterowników
urządzeń (installable device driver programs), które dostarczał producent
urządzenia. Po zainstalowaniu umożliwiały one komunikację urządzenia z systemem.
Użytkownicy mogli określać, które sterowniki mają być ładowane przy starcie
systemu i wykorzystywane w trakcie jego pracy za pośrednictwem specjalnego pliku
konfiguracyjnego (CONFIG.SYS). Plik ten pozwalał również np. określić, jak wiele
pamięci system ma przeznaczyć na bufory operacji dyskowych, ile plików może być
otwartych jednocześnie i jak często DOS powinien sprawdzać czy użytkownik nie
nacisnął klawisza "Ctrl-Break". Umożliwiał również używanie innego interpretera
poleceń niż COMMAND.COM lub też przechowywanie go w innym niż standardowe
miejscu (tzn. nie w katalogu głównym dysku startowego, czyli przeważnie "C:\").
Zmiana sposobu dostępu do plików
Jedną z najważniejszych zmian w DOS 2.0 był wewnętrzny sposób postępowania z
plikami. W celu zachowania kompatybilności/zgodności z CP/M, DOS 1.x
przechowywał istotne informacje o otwartych plikach za pomocą File Control
Blocks (FCB). Rozwiązanie to miało swoje ograniczenia i w miarę, jak programy
stawały się coraz bardziej złożone, zachodziła często potrzeba bezpośredniego
manipulowania danymi zawartymi w FCB, co było kłopotliwe i potencjalnie
niebezpieczne. Ponadto FCB nie obsługiwały nazw podkatalogów (nie było w nich
miejsca na ścieżkę dostępu). Począwszy od wersji 2.0 wprowadzone zostały tzw.
file handles jako alternatywny sposób dostępu do plików na dysku. Po podaniu
systemowi położenia danego pliku w strukturze katalogów możliwy był dostęp do
tego pliku przy pomocy, składającego się z dwóch znaków "skrótu" określanego
właśnie jako handle (w tłumaczeniu: punkt zaczepienia, uchwyt). Standardowo DOS
zawierał pięć specjalnych handles (w wersji 3.2 było ich sześć: NUL - urządzenie
puste, "czarna dziura", CON - konsola, czyli klawiatura i ekran, PRN - drukarka,
COM# - złącze szeregowe o numerze #, AUX - złącze szeregowe nr 2, LPT# - złącze
równoległe o numerze # (LPT1=PRN) później doszło jeszcze CLOCK$ - zegar
systemowy), które umożliwiały sterowanie kanałami wejścia i wyjścia. Normalnie
klawiatura i ekran traktowane są przez DOS jako urządzenie wejścia/wyjścia o
nazwie CON (konsola). Od wersji 2.0 użytkownik mógł "przekierować" strumienie
danych ze standardowych wejść lub wyjść np. z lub do pliku czy też z lub na inne
urządzenie. Umożliwiało to również "przepuszczanie" (pipe) strumieni danych
poprzez tzw. filtry i tworzenie tzw. potoków (strumień wyjściowy jednego
programu staje się bezpośrednio strumieniem wejściowym następnego programu
itd.). Pozwalało to w stosunkowo prosty sposób dokonać na całych plikach lub ich
grupach takich operacji jak np. zmiany małych liter na duże, usuwanie z tekstu
zbędnych/określonych znaków czy też sortowanie list lub rekordów w porządku
alfabetycznym. Możliwe było "spinanie" czy też "łączenie" ze sobą wyjść i wejść
kilku programów i/lub urządzeń aby wykonać sekwencje pewnych operacji w jednym
potoku zamiast każdą z nich oddzielnie. Przykładowe filtry dostarczone z DOS 2.0
były całkiem użyteczne. Pozwalały np. wyszukiwać pliki zawierające lub nie
zawierające określonego tekstu (FIND), szybko sortować w porządku alfabetycznym
wszelkie listy zawierające znak carriage return na końcu linii (SORT),
wstrzymywać wyświetlanie w celu umożliwienia przeczytania
przewijającego/pojawiającego się po ekranie tekstu (MORE).
Szczątkowe przetwarzanie/praca w tle
DOS 2.0 wprowadził szczątkowe przetwarzanie w tle (rudimentary background
processing). DOS w założeniu był systemem jednozadaniowym, ale twórcy wersji 2.0
z polecenia PRINT stworzyli spooler, który potrafił drukować plik podczas gdy
użytkownik kontynuował pracę. Spooler w zasadzie nie były nowym wynalazkiem, ten
jednak stanowił nową jakość. Typowe spoolery alokowały z reguły dużą ilość
pamięci operacyjnej i przekierowywały pliki wysyłane na drukarkę do stworzonego
w ten sposób bufora, następnie czekały na "spokojny" moment i wysyłały plik na
drukarkę. Komenda PRINT w nowej wersji DOS'a odczytywała plik z dysku, przez co
nie obciążała tak mocno pamięci systemu. Program monitorował pracę użytkownika,
sprawdzał jego aktywność ok. 18 razy na sekundę. Jeżeli w momencie sprawdzania
nic się akurat nie działo, wysyłał kilka znaków na drukarkę. Komputer pracuje na
tyle szybko, że takie techniki "dzielenie czasu" (time slicing) sprawiają
wrażenie wykonywania dwóch czynności jednocześnie, ponieważ przełączanie
pomiędzy zadaniami następuje bardzo szybko, w sposób normalnie niezauważalny. A
gdyby tak się jednak zdarzyło, że system pracowałby wyjątkowo intensywnie,
wówczas użytkownik ma możliwość wpłynięcia na częstotliwość prób przerwania tej
pracy przez spooler.
Nowe polecenia i programy
MS wprowadził w tej wersji systemu sterownik ANSI.SYS rozszerzający możliwości
sterowania ekranem i klawiaturą przez użytkownika. Dodane zostały oczekiwane
przez wielu nowe polecenia. Trudno w to uwierzyć, ale w 1.x nie było możliwości
wyczyszczenia zawartości ekranu, dopiero w 2.0 pojawiła się komenda CLS. Również
w tej wersji zadebiutowały polecenia ECHO, IF, FOR, SHIFT i GOTO.
Ze zrozumiałych względów dopiero teraz pojawiły się polecenia i programy
narzędziowe dające użytkownikowi możliwość zarządzania twardym dyskiem, chociaż
niektóre z nich, jak np. polecenie TREE, które powinno wyświetlać całą strukturę
katalogów, nie funkcjonowało jak należy. Może jako rekompensatę, IBM dodał do
systemu prawdziwą perełkę - mini-assembler DEBUG, który szybko zyskał wielu
przyjaciół wśród bardziej zaawansowanych użytkowników.
Inne usprawnienia
IBM PC-XT posiadał zwiększoną o trzy (do łącznie ośmiu) liczbę gniazd/złącz
rozszerzeń (internal expansion slots). Ponadto DOS zwiększył ilość 512-bajtowych
sektorów na ścieżce z ośmiu do dziewięciu, co przy 40 ścieżkach na stronę dawało
przyrost pojemności dyskietki o 40 kB (z 320kB na 360kB). Pozwalał także nadawać
dyskom etykiety (LABEL), dawał użytkownikowi dostęp do specjalnego obszaru
pamięci tzw. środowiska (enviroment), w którym przechowywane były istotne
ustawienia systemowe, lepiej gospodarował pamięcią i zawierał ponad 20 nowych
poleceń. Z tak dużą ilością zmian i usprawnień można spokojnie mówić o zupełnie
nowym systemie (z zupełnie nowymi usterkami rzecz oczywista).
Najbardziej istotnymi były zmiany w strukturze systemu (zwłaszcza w metodach
zarządzania pamięcią i plikami), które powodują, że dopiero wersję 2.00 można
uznać za pierwotną wersję systemu DOS.
Dalsze wersje 2.x
W październiku 1983 (PC-DOS) oraz w styczniu/marcu 1984 (MS-DOS) pojawiła się
wersja 2.10 przeznaczona dla komputera IBM PC Junior (IBM PCjr - projekt
zakończony niepowodzeniem. Posiadał kolorowy monitor i oraz trzygłosowy
syntezator dźwięku mogący odtwarzać akordy, jednak był całkowicie
niekompatybilny z czymkolwiek i do tego wyposażony w bardzo zawodny twardy dysk
(system musiał zmniejszać prędkość dysku aby zapewnić stabilną pracę)) oraz dla
modelu przenośnego IBM PC Convertible. Usunięto w niej wiele błędów z wersji
2.00 i zoptymalizowano obsługę napędów dysków elastycznych.
Firma Microsoft oferowała także wersje 2.11, 2.25 i 2.85. Wersja 2.11 była
podstawą systemów operacyjnych wielu mikrokomputerów z mikroprocesorem
i8086/i8088, budowanych przez firmy: Hewlett-Packard, Compaq, Tandy i Texas
Instruments. W wersjach 2.05, 2.11, 2.2 i 2.25 MS dodał obsługę międzynarodowych
formatów czasu, daty, waluty i klawiatur.
PC-DOS 3.x (IBM AT)
Komputery IBM PC i PC-XT nie były prawdziwymi 16-bitowymi maszynami. Intel 8088
pracował co prawda wewnętrznie na 16-bitach, jednakże z otoczeniem komunikował
się poprzez 8-bitowy system bus. Stało się to w pewnym momencie wąskim gardłem
systemu. Pierwszym prawdziwym systemem 16-bitowym był IBM PC-AT. W porównaniu do
swoich poprzedników była to prawdziwa rakieta. W jego wnętrzu pracował procesor
Intel 80286 kompatybilny/zgodny programowo z całym dotychczasowym
oprogramowaniem. Wraz z PC-AT ukazała się nowa wersja DOS 3.0. Zarówno PC jak i
PC-XT pracowały z częstotliwością 4.77 MHz, a średni czas dostępu do twardego
dysku, w zależności od modelu, wynosił od 80 do 115 ms. Oficjalnie częstotliwość
taktowania zegara procesora 80286 w pierwszych modelach PC-AT wynosiła 6 MHz,
ale użytkownicy szybko odkryli, że wymieniając warty $4, umieszczony na
podstawce kwarcowy generator (quartz crystal) mogą przyspieszyć zegar do 8 a
nawet 9 MHz bez jakichkolwiek skutków ubocznych (wtedy nazywało to się tampering,
dzisiaj overclocking ;-) .IBM, znany z ultrakonserwatywnych specyfikacji i
celowego obniżania wydajności, po odkryciu tych praktyk napisał program
blokujący możliwość manipulacji, który został umieszczony w pamięci systemowej
ROM.
Wszystkie dyski twarde PC-AT posiadały średni czas dostępu 40ms lub niższy.
Pechowo pierwsza duża seria AT miała zainstalowane wyjątkowo awaryjne dyski CMI.
Wersje PC-DOS 3.00, 3.10 i 3.20
W sierpniu 1984 powstała wersja PC-DOS 3.00 przeznaczona dla modelu IBM PC/AT z
mikroprocesorem 80286. Zmieniono wielkość elementów tablicy rozmieszczenia
plików (FAT) na 16-bitowe, w związku z wyposażeniem komputera w dysk twardy o
pojemności 20MB. System został także uzupełniony o obsługę dysków miękkich 5,25"
o pojemności 1,2MB, obsługę dysku twardego o pojemności do 20 MB, RAM-dysk.
Zmodyfikowano polecenia SORT, FORMAT, BACKUP, RESTORE, GRAPHICS i DATE oraz
dodano nowe polecenia: ATTRIB, COUNTRY, GRAFTABL, LABEL, SELECT, SHARE i KEYBxx.
W marcu 1985 (listopadzie 1984 MS) powstała wersja 3.10, która została
uzupełniona o obsługę sieci lokalnej LAN (Local Area Network) i współużytkowanie
plików (file sharing). Zmieniono polecenia LABEL i TREE oraz dodano JOIN i SUBST.
W styczniu 1986 ukazała się wersja 3.20, w której dodano obsługę napędów 3,5"
dysków miękkich o pojemności 720Kb, zabezpieczenie przed przypadkowym
formatowaniem dysku twardego, możliwość kontroli urządzeń niestandardowych i
logicznych. Zmodyfikowano w związku z tym polecenia: FORMAT, DISKCOPY, DISKCOMP,
COMMAND, ATTRIB. Nowe polecenia to: REPLACE, XCOPY i APPEND.
PC-DOS 3.3 i 4.x (IBM PS/2 i następcy)
W kwietniu 1987 - wraz z wprowadzeniem przez IBM nowej serii mikrokomputerów IBM
PS/2 (Personal System2), pojawiła się wersja PC-DOS 3.30 systemu DOS. Została
ona dostosowana do obsługi instalowanych w komputerach PS/2 dysków miękkich 3,5"
o pojemnościach 720KB i 1,44MB. W przeciwieństwie do poprzednich wersji, przy
podziale dysku na strefy (partycje), dla systemu DOS można utworzyć do 24 dysków
logicznych. Umożliwiało to łatwe instalowanie dysków twardych o pojemnościach
większych niż 32MB. Wprowadzono nową instrukcję plików wsadowych CALL oraz
polecenia FASTOPEN (umożliwiające szybsza obsługę plików), COMP(ARE)
(porównywanie zawartości dwóch plików) i SELECT. Nowe instrukcje CHCP i NLSFUNC
są związane z wprowadzona możliwością wymiany tablic kodów znaków. Zmieniono
zasadę obsługi klawiatur narodowych, rezygnując z rodziny programów KEYBxx i
wprowadzając jeden program KEYB korzystający z tablic kodów znaków zawartych w
pliku KEYBOARD.SYS. W wersji 3.30 znajduje się również kilka nowych
instalowanych programów obsługi urządzeń (np. DISPLAY.SYS, PRINTER.SYS) oraz
program SYMDEB, umożliwiający korzystanie z wartości symbolicznych przy
uruchamianiu programów. Zmieniono nieco polecenia FDISK, APPEND, ATTRIB, BACKUP.
Upgrade z wersji 3.3 do 4.0 powstał całkowicie w IBM i przy (o ironio)
współpracy DRI i był następnie licencjonowany do Microsoft'u. Na początku lat 90
IBM ogłosił wstrzymanie dalszych prac na DOS'em i zajął się rozwojem systemu
OS/2(?). Dalszymi losami systemu kierował od tego momentu w zasadzie wyłącznie
Microsoft.
W lipcu 1988 wprowadzono wersję MS-DOS 4.00, która miała trzy istotne nowe
właściwości. Pierwsza to sterowany za pomocą sytemu menu interfejs użytkownika
MS-DOS Shell, podobny do interfejsu Presentation Manager stosowanego w systemie
OS/2. Druga właściwość to 32-bitowe (obok 16-bitowych) numery sektorów,
usuwające ograniczone wielkości dysku logicznego do 32MB. Trzecią cechą jest
wprowadzenie do systemu operacyjnego mechanizmów korzystania z pamięci
stronicowanej EMS (expanded memory). Zrealizowano to za pomocą programu
XMA2EMS.SYS obsługującego karty pamięci stronicowanej - takie jak 2MB Expanded
Memory Adapter lub PS/2 80286 Expanded Memory Adapter/A - oraz programu
XMAEM.SYS emulującego pamięć stronicowaną na komputerach z procesorem 80386.
Wprowadzono także nowe polecenia konfiguracyjne: INSTALL, REM i SWITCHES oraz
polecenie MEM wyświetlające bieżące wykorzystanie pamięci operacyjnej, a także
rozszerzono i zmodyfikowano wiele innych poleceń. Dodano m.in. VDISK.SYS i
DEBUG.COM.
W listopadzie/grudniu 1988 wprowadzono wersję MS-DOS 4.01. Zmieniono i
rozbudowano mechanizmy zarządzania pamięcią operacyjną przez wprowadzenie
instalowanych programów obsługi pamięci HIMEM.SYS i EMM386.SYS. Tak
zmodyfikowany DOS stal się podstawą wersji 5.00.
MS-DOS 5.0 i następne
W maju 1990 ukazał się konkurencyjny DR-DOS 5.0
Czerwiec 1991 - po wielu testach i długim okresie przygotowań pojawiła się
wersja MS-DOS 5.00. Różni się ona znacznie od poprzedników. Istotne uzupełnienia
to :
-
Dodano możliwość ładowania części systemu
operacyjnego do obszaru pamięci wysokiej HMA (High Memory Area). Programy
użytkowe mogą więc korzystać z większej pamięci operacyjnej w
konwencjonalnym obszarze adresowania 0-640 kB. Dotyczy to komputerów z
procesorami 80286, 80386, i486 i nowszych.
-
Dodano możliwość ładowania programów
obsługi urządzeń (tzw. sterowników - device drivers) i programów użytkowych
do pamięci operacyjne w obszarze powyżej 640 kB.
-
Wprowadzono możliwość obsługi więcej niż
dwóch dysków twardych. Dyski logiczne mogą mieć wielkość powyżej 32 MB.
-
Dodano możliwość obsługi dyskietek o
pojemności 2.88 MB
-
Wprowadzono graficzny interfejs
użytkownika - program DOS-SHELL, umożliwiający korzystanie z graficznego
przedstawienia struktury katalogów, obejrzenie katalogów równocześnie na
dwóch dyskach lub dwóch katalogów, wykonywanie podstawowych poleceń systemu
przez wybranie ich z menu. Korzystanie z myszy przy wyborze dysków,
katalogów, plików lub funkcji systemu umożliwia łatwiejszą, szybszą i
bardziej intuicyjną pracę oraz przełączanie pomiędzy programami.
-
W programie DOS-SHELL wprowadzono opcję
HELP, wspomagającą użytkownika w dowolnej chwili. Objaśnienia są również
dołączone do wszystkich poleceń systemowych (opcja /?).
-
Dodano nowe polecenia UNFORMAT i UNDELETE
umożliwiające odzyskanie przypadkowo skasowanych lub uszkodzonych plików.
-
Wiele poleceń zmodyfikowano, np.
wzbogacono możliwości polecenia DIR.
-
Dodano polecenia konfiguracyjne konieczne
do ładowania systemu i programów do pamięci powyżej 640 kB.
-
Do systemu dołączono prosty edytor
ekranowy EDIT.COM z możliwością wyświetlania na bieżąco informacji
pomocniczych.
-
Dołączono dodatkowy program DOSKEY,
umożliwiający wywołanie wcześniej wywoływanych poleceń oraz definiowanie
makropoleceń zawierających sekwencje szczególnie często używanych ciągów
poleceń.
-
W skład systemu włączono program
interpretatora języka Basic o nazwie QBASIC, o znacznie większych
możliwościach niż wcześniej dołączane wersje interpretatora.
We wrześniu 1991 ukazał się DR-DOS 6.0
za $100, zawierający wiele nowych elementów nieobecnych w PC/MS-DOS.
Sierpień 1993 - MS udostępnia wersję MS-DOS 6.0 - dodano programy
MEMMAKER (optymalizacja wykorzystania pamięci), DOUBLESPACE (kompresja twardego
dysku), ulepszony SMARTDRIVE (cache CD-ROM'u), INTERLINK (do przesyłania danych
pomiędzy dwoma komputerami po złączu szeregowym lub równoległym - tzw. nullmodem)
możliwość uruchomienia menu konfiguracyjnego w pliku CONFIG.SYS oraz
przetwarzania AUTOEXE.BAT krok po kroku, skaner antywirusowy, DEFRAG korzysta z
EMS/XMS (defragmentacja twardego dysku). W ciągu pierwszych 40 dni sprzedano 1
milion kopii (retail).
W listopadzie 1993 - wersja MS-DOS 6.20 z ulepszonym programem
DOUBLESPACE, SCANFIX (rozszerzona wersja chkdsk), DISKCOPY wreszcie używa
twardego dysku do buforowania kopiowania dyskietek (likwiduje to konieczność
częstego zmieniania dyskietki w napędzie), drobne zmiany w MEM, DIR, CHKDSK,
FORMAT (kropka po trzech cyfrach w dużych liczbach) oraz w MOVE, COPY, XCOPY
(pytanie przed nadpisaniem pliku).
W marcu 1994 - wersja MS-DOS 6.21 bez DOUBLESPACE
W kwietniu 1994 - PC-DOS 6.3 oraz wersja MS-DOS 6.22 z nowym
programem kompresji dysku: DRIVESPACE
W kwietniu 1995 - IBM wydaje PC DOS 7 ze zintegrowaną kompresją
dysku firmy Stac Electronics (STACKER).
W sierpniu 1995 - wersja MS-DOS 7.0 jako część składowa Windows95
(emulacja DOS'a w środowisku Windows95).
W sierpniu 1996 - wersja MS-DOS 7.1 jako część składowa
Windows95OSR2.
Zakończenie
MS-DOS i PC-DOS chodziły nie tylko na klonach IBM PC. Istniała karta
rozszerzenia dla Apple II, która umożliwiała uruchamianie (niektórych tzw. well
behaved) programów dosowskich. Podobnego typu karty oferowano także dla
Commodore Amiga 2000, Apple MacIntosh II oraz IMB RT PC. Pozwalały one
uruchamiać środowisko DOS. ATARI ST posiadał emulator DOS nazwany PC-Ditto i był
w stanie uruchomić w pełni funkcjonalną, dowolna wersje DOSa. System OS/2
zawierał w sobie tzw. DOS Compatibility Box gdzie można było uruchamiać wiadome
oprogramowanie. QNX, niektóre wersje UNIXa i Linuxa mogą uruchomić emulatory
DOSa jako jeden z procesów.
Dużą wadą systemu DOS wynikającą z budowy komputerów typu IBM PC jest
ograniczenie pamięci operacyjnej do 640kB. Mogło się ono wydawać nieistotne w
czasie powstawania systemu, później jednak stało się poważną przeszkodą w
wykorzystywaniu możliwości komputerów. Złagodzono to w wersjach 5.00 i wyższych,
wprowadzając tryb wirtualny 8086 oraz stronicowanie.
Autorem materiałów jest Paweł Boguś
D.F.
|