Preloader image
 
Czarna magia DOS
801
post-template-default,single,single-post,postid-801,single-format-standard,simplicity-core-1.0.3,simplicity-theme-ver-2.0.3,ajax_fade,page_not_loaded,smooth_scroll

Blog

Posted by Maniek in Programy

Czarna magia DOS

PC w erze DOS

W początkowym okresie istnienia komputer PC nie był prostym w zarządzaniu systemem. DOS wymagał wpisywania ręcznego komend, coś na kształt obecnie terminala w MAC OS X lub konsoli Linuks. Owszem istniały systemy graficzne, ale początek lat 90-tych ubiegłego wieku, to był okres gdzie Windows 3.1 a później 3.11 for Workgroups dopiero zaczynał zdobywać popularność. Nadal nie był to pełny system, tylko nakładka na DOS. Okienka działały wtedy na platformach Apple, Atari ST i najbardziej popularnej, w tym czasie w Polsce, Amidze. O konfiguracji urządzeń, w obecnej postaci typu Plug and Play, nikt nawet nie myślał a jego namiastka pojawiła się dopiero wraz z Windows 95. Sam pomysł zaprezentowany został przez Intela w 1994 roku. Do tego czasu, ustawień dokonywało się za pomocą zworek na płytach głównych, czy kartach rozszerzeń (ustawienia dotyczyły wejścia/wyjścia, przerwania IRQ, kanały DMA, zakresu pamięci). To nie wszystko. Kolejną ważną sprawą była odpowiednia konfiguracja DOS za pomocą plików startowych CONFIG.SYS (sprzętowa) i AUTOEXEC.BAT (programowa), w tym również ustawień wgrywających odpowiednie sterowniki przy starcie systemu. DOS ewaluował wraz z rozwojem sprzętu, a cechą nadrzędną było zachowanie kompatybilność wstecznej. Istniały jego wersje produkowane przez firmy IBM – PC DOS, Digital Research – DR-DOS a najważniejszą z nich odmianę, produkował Microsoft – MS-DOS. Zainteresowanych zapraszam do zapoznania się z moim wcześniejszym wpisem dotyczącym bariery 640kB w systemach IBM PC i jego klonach.

Czarna magia DOSu

Jak już zaznaczyłem architektura PC nie posiadała mechanizmu pozwalającego na automatyczne przydzielanie urządzeniom zewnętrznym zasobów. W przypadku kart ISA, aby nadać urządzeniu określone zasoby, należało ustawić zworki na karcie. W tym czasie konieczne było posiadanie dyskietki z driverami, które należało wgrać się po instalacji sprzętu. W tym procesie bardzo często dopisywane były odpowiednie linijki kodu do plików startowych AUTOEXEC.BAT i CONFIG.SYS. Dopiero wówczas dana karta, czy urządzenie było widziane przez system. Czasami w programie obsługującym należało wpisać, jeszcze dodatkowo, przydzielone zakresy zasobów. Bardzo często ten przypadek występował przy obsłudze kart dźwiękowych przez gry, gdzie setup prosił o wybór typu karty a czasami nawet o numery przerwań, czy kanałów DMA.

CONFIG.SYS – plik konfiguracyjny systemu DOS, znajdujący się w katalogu głównym systemu plików. Jego zadaniem jest ustawienie wielu parametrów pracy systemu, których nie można zdefiniować w inny sposób.
W pliku CONFIG.SYS umieszczamy m.in.:
– programy obsługi niestandardowych urządzeń, np. myszy;
– niektóre parametry systemu operacyjnego, np. format wyświetlanego czasu i daty, liczbę buforów w pamięci przy operacjach zapis/odczyt dysku, ilość plików, do których system operacyjny może mieć jednocześnie dostęp;
– organizację pamięci operacyjnej powyżej 640 kB

Plik CONFIG.SYS odpowiada przede wszystkim za sposób obsługi pamięci zamontowane w komputerze . System MS-DOS, z uwagi na wymóg zachowania kompatybilności z procesorami 8086/808.8, pozwala programom na bezpośrednie wykorzystanie tylko pamięci podstawowej (konwencjonalnej), czyli pierwszych 640 KB pamięci RAM. Pamięć ta jednak wykorzystywana jest również do pracy BIOS i systemu, a także do przechowywania:
– tablicy wektorów przerwali;
– procedur BIOSa;
– plików: IO.SYS i MSDOS.SYS;
– buforów DOSa;
– sterowników urządzeń dodatkowych;
– stale obecnej w pamięci pliku COMMAND.COM;
– zmiennych systemowych deklarowanych w pliku AUTOEXEC.BAT;
– programów rezydentnych .
Pozostała część pamięci konwencjonalnej pozostaje do dyspozycji używanych programów.

AUTOEXEC.BAT – nazwa pliku wsadowego. Znajduje się on w katalogu głównym systemu plików. Nazwa pliku jest skróceniem wyrażenia (ang.) automatic execution (automatyczne wykonywanie), które opisuje przeznaczenie pliku – automatyczne uruchamianie poleceń w trakcie startu systemu. Zastosowana nazwa wynika również z ograniczenia długości nazw plików w systemie FAT do postaci 8.3.

Po załadowaniu do pamięci pliku COMMAND.COM odszukuje on w głównym katalogu dysku C: plik AUTOEXEC.BAT, ładuje go do pamięci i uruchamia. Jest to plik tekstowym – system odczytuje z jego wnętrza kolejne wiersze i traktuje je w taki sposób, jak gdyby były to polecenia wpisywane przez użytkownika komputera. W pliku mogą znajdować się:
– polecenia uruchamiające komendy systemu z odpowiednimi parametrami i przełącznikami (np. PATH lub MSCDEX);
– polecenia deklarujące zmienne systemowe (np. TEMP);
– polecenia deklarujące zmienne niezbędne do prawidłowej pracy zainstalowanych programów;
– polecenia ładujące do pamięci programy rezydentne, (np. programy typu cache);
– polecenia uruchamiające programy, z którymi rozpoczynamy pracę po załadowaniu systemu (np. NC dla Norton Commander czy WIN, dla Windows);
– komendy przetwarzania wsadowego pozwalające na wybór tworzonego środowiska programowego (np. CHOICE).

Polecenia z pliku AUTOEXEC.BAT tworzą środowisko, z ustalonymi parametrami, zmiennymi i programami rezydentnymi.

Polecenia pliku AUTOEXEC.BAT
Do podstawowych poleceń stosowanych w pliku AUTOEXEC.BAT należą:
– @ECHO OFF – wyłącza wyświetlanie wykonywanych poleceń;
– PATH C:\; c:\DOS . . . -deklaracja zmiennej PATH, do której wpisywane są ścieżki dostępu do katalogów z najczęściej używanymi programami. Komputer będzie w tych katalogach szukał uruchamianych programów, deklaracje ścieżek powinny być rozdzielone znakami „;”;
– PROMPT $P$G -polecenie PROMPT definiuje sposób wyświetlania i zawartości znaku zachęty systemu;
– SET TEMP=C :\TEMP – deklaracja zmiennej określającej katalog do przechowywania zbiorów tymczasowych.
Poza tymi komendami można wpisywać inne polecenia. Często instalowane programu automatycznie dokonują wpisów do pliku AUTOEXEC.BAT.

Oprócz powyższych system DOS składał się z poniższych plików systemowy, czyli taki, bez których system nie wystartuje (i pomysleć, że kiedyś wystarczyło wgrać tylko te pliki do systemu by ten działał). Skupimy się w tym przypadku, a także później, na ostatniej wersji systemu Microsoft DOS, dostępnego jako osobny produkt, czyli wersji 6.22. Późniejsze wersje MS-DOS oznaczone jako 7, 7.1 i 8.0 były bazą, na której zbudowane zostały systemy Windows 95, 98 oraz Millenium, stanowiąc ich integralną część i z tego właśnie powodu nie były one oferowane oddzielnie. Dopiero Windows 2000, a tak naprawdę XP skończyło z DOS.

Pliki systemowe MS-DOS

Podczas instalacji systemu zapisywane są na dysku twardym podstawowe pliki systemowe, tworzące cały system MS-DOS 6.22. Są to: program ładujący, IO.SYS, MSDOS.SYS oraz COMMAND.COM. Pozostałe, niezbędne do prawidłowej pracy komend zewnętrznych, oraz sterowniki systemowe zapisywane są w katalogu o takiej nazwie, jaka została podana podczas instalacji systemu (zazwyczaj DOS). Program instalacyjny tworzy również nowe pliki konfiguracyjne, CONFIG.SYS oraz AUTOEXEC.BAT, modyfikując pliki istniejące, o czym juz wspominałem.

COMMAND.COM – jest to tzw. interpreter poleceń, czyli program, który bezpośrednio odpowiada za działalność systemu podczas pracy z komputerem, tzn.:
– wyświetla znak zachęty systemu,
– odczytuje komendy wydane przez użytkownika lub przez uruchomione
– odczytuje polecenia zawarte w plikach przetwarzania wsadowego
– wyświetla właściwe komunikaty systemu,
– wykonuje komendy wewnętrzne systemu,
– wyszukuje na dysku, ładuje do pamięci i uruchamia programy (pliki EXE) w tym komendy zewnętrzne systemu;
Jeżeli wpiszemy jakiś zestaw znaków i naciśniemy ENTER, to sterowanie przejmuje rezydujący w pamięci COMMAND.COM. Sprawdza wpisany ciąg i sprawdza, czy jest to polecenie wewnętrzne (np. CLS, TYPE, ECHO, PROMPT, IF, FOR itd.), czy polecenie uruchomienia programu zewnętrznego (np. FORMAT.COM, EDIT.COM). Pliki programów zewnętrznych są wyszukiwane w folderach określonych w zmiennej środowiskowej PATH, najczęściej zdefiniowanej w pliku AUTOEXEC.BAT. Jeżeli polecenie nie zostanie rozpoznane, COMMAND.COM wyświetli komunikat o błędzie. COMMAND.COM pracuje w dwóch trybach – konwersacyjnym (interakcyjnym) lub wsadowym. Tryb wsadowy polega na zinterpretowaniu i wykonaniu podanego pliku wsadowego .bat, będącego ciągiem poleceń – skryptem DOS;

IO.SYS -jest to program zawierający procedury obsługi standardowych urządzeń uzupełniając program BIOSu umieszczony w pamięci ROM na płycie głównej (jest zapisany w pierwszych sektorach dysku C: przeznaczonych dla plików);

MSDOS.SYS -jest to program zawierający podstawowe procedury ‚systemu, m.in do zarządzania plikami, pamięcią itp., jest to tzw. jądro systemu (plik umieszczony na dysku C: zaraz za plikiem IO.SYS);

Przetwarzanie wsadowe CONFIG.SYS

Zadaniem tego pliku jest ustawienie wielu parametrów pracy systemu, których nie można zdefiniować w inny sposób.
W pliku CONFIG.SYS lokujemy m.in.:
– programy obsługi niestandardowych urządzeń, np. myszy;
– niektóre parametry systemu operacyjnego, (np. format czasu i daty, liczbę buforów w pamięci przy operacjach zapis/odczyt dysku, ilość plików, do których system operacyjny może mieć jednocześnie dostęp);
– organizację pamięci operacyjnej powyżej 640 kB.

W pliku konfiguracyjnym użytkownik przekazuje systemowi informacje, z jaką konfiguracją systemu będzie pracować. Wygląda to tak, jakbyśmy informowali system co ma uwzględnić w danej konfiguracji a co pominąć. Dzięki temu możliwa jest optymalne ustawienie systemu pod pracę z konkretnymi aplikacjami. Ponieważ konfiguracja jest istotna dla pracy MS-DOS-u, więc interpretacja pliku konfiguracyjnego jest jednym z pierwszych zadań po załadowaniu systemu.
Po uruchomieniu MS-DOS szuka automatycznie pliku CONFIG.SYS, Plik ten musi być w katalogu głównym! Jeśliby plik CONFIG.SYS będzie w innym katalogu, to nie zostanie odnaleziony. Po odnalezienia CONFIG.SYS jest on interpretowany i standartowe ustawienia zostają zmienione zgodnie z poleceniami w nim zawartymi.
Warto dodać, że jeżeli pliku CONFIG.SYS nie ma w katalogu głównym, to i tak MS-DOS skonfiguruje system w sposób standardowy, zazwyczaj wystarczający do zwykłej pracy. DOS skorzysta ze standartowych ustawień składowych systemu.

W celu tworzenia plików konfiguracyjnego CONFIG.SYS możemy skorzystać z dowolnego edytora tekstu lub z systemowego edytora EDIT. Należy pamiętać, że stworzony plik konfiguracyjny musi być zapisany jako czysty plik typu ASCII.

Przykładowy plik CONFIG.SYS (nr w nawiasach kwadratowych służą w celach informacyjnych i nie ma ich w pliku konfiguracyjnym, ani nie należy ich tam też umieszczać:

[1] device=C:\\WINDOWS\\COMMAND\\display.sys con=(ega,,1)
[2] country=048,852,C:\\WINDOWS\\COMMAND\\country.sys
[3] lastdrive=[litera dysku] [4] device=[ścieżka] [1] – ładowanie sterownika DISPLA odpowiedzialney jest za wyświetlanie obrazu
[2] – konfiguracja dla danego państwa (m.in. sposób wyświetlania daty i czasu). Dla Polski numer ten wynosi 048,852
[3] – określone zostaje ile maksymalnie liter system musi zarezerwować pamięć do nazywania dysków, np. lastdrive=E zarezerwuje pamięć dla pięciu dysków (od A do E). W tym przypadku jeśli CD-ROM miałby literę F, system nie będzie go widział. Dzięki ograniczeniu zakresu liter używanych do nazywania dysków możemy oszczędzić pamięć, mimo to nie przynosi to zbyt wielkich oszczędności
[4] – sterowniki do CD-ROM-u, myszki i innych urządzeń, moga zawierać więcej niz jedną linię

Wyjaśnienie niezbędnych poleceń systemu:

FILES = Ilość plików. Określa maksymalną ilość plików, do których jednocześnie może mieć dostęp system operacyjny. Możemy przyjąć wartości od 8 – 255. Jeżeli jej nie określimy, system przyjmie standardowe 8. Polecenie to jest ważne, gdy pracujemy z programami używającymi wielu plików, np.: bazy danych.

BUFFERS= Ilość buforów. Określona zostaje ilość buforów używanych przy operacjach dyskowych (zapis/odczyt). Każdy bufor zajmuje 512 kB pamięci. Zwiększając ilość buforów, przyspieszamy operacje dyskowe, ale kosztem zmniejszenia ilości pamięci na inne programy. Standardowo system przyjmuje wartość 15.

COUNTRY= Kod kraju, numer tablicy kodów. Ustawia właściwy danemu krajowi sposób wyświetlania daty i czasu oraz znaki alfabetu. Parametry tego polecenia to:
– kod kraju – np.: dla USA jest to kod 001, dla Polski jest kod 048
– numer tablicy kodów (strona kodowa)

DEVICE= Wczytuje do pamięci program obsługi urządzenia zewnętrznego (sterowniki), np. mysz

SETVER.EXE Ustawianie, pokazywanie i zmiana wersji dla dowolnego programu w postaci specjalnej wewnętrznej tabeli odczytywanej przez MS-DOS. Nie jest ustawiana wersja tego programu, lecz specjalnie dla niego jakby oszukana nowa wersja DOS-a, tak aby „widział” tę wersję DOS-a jaką chce. Dla pozostałych programów, nie wyszczególnionych w tabeli wersji, wersja DOS-a nie jest zniekształcana. Jeśli chcesz użyć programu, który nie był przewidziany do pracy pod MS-DOS w danej wersji , możesz dodać jego nazwę do tej tabeli wersji. Wówczas pomimo nieprzewidzenia przez programistów tego programu pracy pod DOS-em , oraz mimo blokady wykonania programu pod nim, nastąpi próba jego wykonania.

BREAK Polecenie BREAK określa, czy programy i inne polecenia mogą być przerwane w czasie dostępu do dysku za pomocą kombinacji klawiszy Ctrl-C. Tylko przy ustawieniu BREAK ON takie przerwanie jest możliwe: BREAK=ON

FCBS= komenda deklarująca maksymalną liczbę równocześnie otwartych bloków opisu plików (FCB)

NUMLOCK= -komenda określająca stan (włączony/wyłączony ) klawisza NumLock podczas inicjalizacji systemu;

SHELL= komenda deklarująca instalację nowego interpretera poleceń;

STACKS= komenda organizacji stosów do obsługi przerwań.
Wiele z tych parametrów modyfikowanych jest przez instalowane programy. Poniżej podane zostały przykładowe wartości nadawane tym parametrom:

BREAK=ON
BUFFERS=40,0
FCBS=4,0
FILES=40
LASTDRIVE=H
NUMLOCK=OFF
SHELL=C:\COMMAND.COM C:\ /E:512 /P
STACKS=9,256

Przetwarzanie wsadowe AUTOEXEC.BAT

Programowanie wsadowe dotyczy tworzenia tzw. plików wsadowych, którym nadawane jest rozszerzenie BAT. Umożliwia nam to:
– podawanie kolejnych poleceń (bez wykonywania ich od razu);
– zapisanie ich w pliku o podanej nazwie z rozszerzeniem BAT;
– wykonanie zdefiniowanego pliku, podając jego nazwę
System DOS zawiera szereg specjalnych instrukcji, które mogą być użyte w plikach wsadowych. Miedzy innymi są to:

PAUSE Zawieszenie wykonywania pliku do chwili naciśnięcia dowolnego
klawisza
ECHO OFF Wykonywane polecenia pliku wsadowego nie będą wyświetlane na
ekranie
ECHO ON Wykonywane polecenia pliku wsadowego będą wyświetlane na ekranie
ECHO komunikat Wyświetlenie na ekranie podanego komunikatu
REM komentarz Umieszczony pod REM komentarz jest ignorowany przez system operacyjny; jest to informacja dla użytkownika

Przykładowy plik AUTOEXEC.BAT może wyglądać następująco (numery wierszy w nawiasach kwadratowych tylko w celach informacyjnych, nie należy ich umieszczać w pliku konfiguracyjnym):

[1] @ECHO OFF
[2] PATH C:\;C:\DOS;D:\;D:\WINDOWS;E:\WINWORD;E:\EXCEL
[3] PROMPT $P$G
[4] SET TEMP=C:\TEMP
[5] VERIFY OFF
[6] C:\DOS\MODE CON CP =PREP((852) C:\DOS\EGA.CPI)
[7] C:\DOS\MODE CON CP SEL=852
[8] C:\DOS\MODE LPT1 CP =PREP((852) C:\DOS\4201.CPI )
[9] C:\DOS\MODE LPT1 CP SEL=852
[10] C:\DOS\KEYB PL,,C:\DOS\KEYBOARD.SYS
[11] C:\DOS\MODE CON:RATE=32 DELAY=1
[12] LH C:\PC-CACHE /MAX=63/SIZEXT=1024
[13] LH C:\DOS\MSCDEX.EXE /D:MSCDOOO /L:G
[14] LH IMOUSE /E/#2

1,2,3,4 – polecenia zostały już omówione;
5 – wyłączenie sprawdzania poprawnosci przy przenoszeniu lub kopiowaniu zbiorów;
6,7,8,9 – spowodują, że dostępne staną się w systemie polskie znaki (na ekranie i drukarce);
10 – załadowany zostanie program KEYB obsługi klawiatury w polskim układzie maszynistki;
11 – deklaruje maksymalną częstotliwość powtarzania naciśniętego klawisza;
12 – ładuje program PC-CACHE (do pamięci górnej);
13 – ładuje (do pamięci górnej) systemowy sterownik CD-ROM;
14 – ładuje (do pamięci górnej) program obsługi myszki.

Gdy w pliku CONFIG.SYS umieszczone są komendy ładujące sterowniki pamięci, tzn. HIMEM.SYS oraz EMM386.EXE system automatycznie postara się wykorzystać pamięć górną do przechowania zadeklarowanych zmiennych, ale można ją również użyć do załadowania programów rezydentnych. W tym celu komendy uruchamiające te programy powinny być poprzedzone poleceniem LOADHIGH lub skrótem LH.

Program obsługi CD-ROM, który załadujemy standardowo:
C:\DOS\MSCDEX.EXE /D:MSCDOOO /L:G

można zmodyfikować tak:
LH C:\DOS\MSCDEX.EXE /D:MSCDOOO /L:G

Polecenie to sprawi, że program MSCDEX zostanie umieszczony w pamięci górnej, zwalniając pamięć konwencjonalną. Polecenie LH jest bezpieczne i w sytuacji, gdy zabraknie miejsca w pamięci górnej na ładowany program, to zostanie on automatycznie załadowany do pamięci konwencjonalnej.

Polecenia DEVICEHIGH= oraz LOADHIGH pozwalają na umieszczenie w pamięci górnej i wysokiej wielu elementów systemu i zwolnienie w ten sposób nawet pokaźnej ilości pamięci konwencjonalnej. Nie wszystko jednak da się umieścić w tych obszarach pamięci. Niektóre sterowniki lub programy rezydentne muszą w całości lub częściowo być umieszczone w pamięci konwencjonalnej. Zdarza się też, że nie mieszczą się tam one.

Błędne parametry w ustawieniach plików konfiguracyjnych mogą spowodować błędy w pracy, a nawet uniemożliwić załadowanie systemu.
Jeżeli system nie może być załadowany należy nacisnąć podczas jego startu klawisz F5 (pominięte zostaną polecenia konfiguracyjne) lub F8 (spowoduje krokowe wykonywanie poleceń konfiguracyjnych, które możemy zaakceptować lub odrzucić, i w ten sposób możemy też wyłapać, w którym miejscu jest błąd).

Najczęściej wystarczy jednak zmienić kolejność ładowania niektórych programów rezydentnych tak, aby największe z nich ładowane były na początku. Dzięki temu do pamięci konwencjonalnej trafią mniejsze programy.

Jeżeli potrzebujesz zainstalować MS-DOS 6.22 zapraszam Cię do kolejnego mojego wpisu!