Tajemnice ATARI

BOOT

    Z pewnością wielu Czytelników rozpoczynających lekturę tego artykułu zetknęło się już z pojęciem "boot-owania systemu" czyli automatycznego ładowania z magnetofonu lub stacji dysków do pamięci komputera programu sterującego. Dzieje się to w chwili, gdy po włączeniu komputera do sieci jest aktywna stacja dysków lub jest wciśnięty klawisz START, który oznacza potrzebę odczytu z magnetofonu. Program BOOT MAKER, którego listing jest wydrukowany poniżej tworzy plik, który obsługuje procedurę "boot-owania systemu". Artykuł jest próbą wyjaśnienia tego, co oznacza proces "ładowania systemu", sposobu jego wykonania oraz jest jednocześnie instrukcją obsługi programu BOOT MAKER.

   Po włączeniu komputera do sieci rozpoczyna swą działalność system operacyjny, który po wykonaniu czynności wstępnych (takich jak ustawienie wszystkich wektorów, wyczyszczenie pamięci RAM, otwarcie edytora ekranowego, itd) przystępuje do próby załadowania z pamięci zewnętrznej (stacji dysków lub magnetofonu) programu nadzorującego pracę systemu operacyjnego (np. DOS-a). Jeżeli dotyczy to magnetofonu to programem tym może być po prostu gra. Odgłos "wrrrr", który zawsze słyszymy, gdy po włączeniu komputera do sieci nie ładujemy żadnego programu jest właśnie symptomem tego, że rezydujący system operacyjny próbuje wykonać operację "boot-a dyskowego". Ponieważ kończy się to wynikiem negatywnym, więc zwykle wtedy uaktywnia się ROM BASIC-a witając wszystkich napisem READY.

   Co dzieje się jednak, gdy chcemy dokonać operacji "boot-owania systemu"? Proces ten zostanie omówiony na przykładzie "boot-a dyskowego", w przypadku ładowania z magnetofonu proces przebiega analogicznie, różnica polega jedynie na innym nośniku danych i sposobie komunikacji z nim. System operacyjny rozpoczynając operację "ładowania systemu" jest przygotowany na wczytywanie programu w 128 bajtowych pakietach (rekordach, sektorach). Z tego powodu, nawet jeśli dyskietka jest sformatowana w podwójnej gęstości (sektory 256 bajtowe), to sektory boot-owe są standardowo 128 bajtowe. Wczytywany jest pierwszy sektor, który pełni najważniejszą rolę ze względu na znaczenie pierwszych sześciu bajtów. Są to bajty tzw. nagłówka (zwane są też bajtami organizacyjnymi), które pełnią specyficzną rolę. Bajt pierwszy jest ignorowany, przeważnie jest on równy O. Drugi bajt stanowi licznik wczytywanych pakietów programu. Po każdym wczytanym rekordzie licznik jest zmniejszany o jeden, gdy osiągnie wartość zero - proces "ładowania systemu" został zakończony. Jeżeli drugi bajt jest równy O to zostanie wczytanych 256 sektorów. Nie wolno zapomnieć, że w skład wczytywanych sektorów wlicza się również ten, który zawiera nagłówek, np. gdy drugi bajt pierwszego rekordu jest równy 2, to po wczytaniu tego pakietu danych zostanie wczytany jeszcze jeden, a nie dwa. Zwykle dyskietka posiada trzy sektory boot-owe.

   Załóżmy, że cały nasz program został załadowany do pamięci komputera. Ale w jakie lokacje pamięci został on wgrany? Otóż adres początkowy ładowania programu jest zapisany w trzecim i czwartym bajcie nagłówka. Zwykle systemy operacyjne zostają wczytane od adresu 1792 ($700). Zanim będzie wyjaśniona rola pełniona przez bajty piąty i szósty nagłówka omówione zostaną działania systemu operacyjnego po załadowaniu całego programu.

   Rozpoczyna się mianowicie wtedy proces inicjalizacji wgranego systemu. Uruchamiany jest program od adresu wgrania plus sześć bajtów czyli po nagłówku. Tutaj zwykle wykonuje się czynności wstępne, jest to jakby pod-program inicjalizujący. Powinien kończyć się on instrukcjami CLC RTS, w przeciwnym wypadku system operacyjny zauważa, że inicjalizacja zakończyła się negatywnie (ustawiona flaga Carry) i ponawia całą operację. Gdy jednak wykonanie podprogramu zakończy się pomyślnie (powrót do systemu ze skasowaną flagą Carry) to nastąpi właściwe uruchomienie programu od adresu, jak zapewne wielu się domyśla, zawartego w piątym i szóstym bajcie nagłówka (odpowiednio młodszy i starszy bajt). Tak odbywa się procedura "boot-owania systemu".

   Teraz krótki opis Boot-a, który stwarza poniżej wydrukowany program BOOT MAKER. Boot ten umożliwia wgranie do pamięci komputera dowolnego pliku binarnego oraz jego uruchomienie bezpośrednio po zainicjowaniu systemu operacyjnego. Dzieje się to bez obecności DOS-a ! Boot symulując działanie trochę Dyskowego Systemu Operacyjnego, trochę jego Command Processora ładuje plik binarny (a więc zaczynający się od bajtów: 255 255 ($ff $ff)) w odpowiednie rejony pamięci i uruchamia go. Nazwa pliku, która została podana w opcji "Nagranie bootstrapa" programu BOOT MAKER jest szukana w całym katalogu dyskowym. Gdy nie zostanie ona znaleziona, boot poprosi nas o "Hit a key" (naciśnięcie dowolnego klawisza), po jej spełnieniu ponowi próbę ładowania pliku. Analogicznie zachowa się po wystąpieniu błędu podczas wgrywania. Boot ma długość trzech sektorów i zajmuje lokacje od adresu 1792 ($700).

    Oto instrukcja obsługi programu BOOT MAKER. Po wgraniu programu do dyspozycji będziemy mieli okienko z dwoma opcjami. Pierwsza z nich umożliwia stworzenie pliku boot-owego. Po jej wybraniu wpisujemy nazwę pliku binarnego, który chcemy wgrać po włączeniu komputera do sieci. Należy pamiętać, że rozszerzenie nazwy pliku podajemy po znaku "." (kropka). Do stacji dysków wkładamy dyskietkę, na której chcemy nagrać sektory boot-owe i naciskamy klawisz RETURN. Spowoduje to na niej zmianę pierwszych trzech sektorów. Po poprawnym wykonaniu tej czynności wybieramy drugą opcje, "Powrót do systemu" (jeżeli chcemy opuścić program) i po potwierdzeniu klawiszem "T" lub RETURN-em pytania czy jesteśmy pewni wracamy do programu nadrzędnego, natomiast ślad po BOOT MAKER-ze ginie bezpowrotnie. Teraz wykonujemy zimny start (np. poprzez wyłączenie i włączenie komputera do sieci) i sprawdzamy owoc naszej pracy. Jej wynikiem powinno być uruchomienie programu o podanej nazwie. Program powstał przy użyciu Quick Assembler-a 1.0 napisanego przez JBW.

1000 REM ---------------------------
1001 REM :          BOOT           :
1002 REM :  autor: Leon Pasternak  :
1003 REM : (c)1991 Tajemnice Atari :
1004 REM ---------------------------
1010 DATA ffffe002e1020080008043854c
1020 DATA a380a9808511a205200981a9cb
1030 DATA a201207b8320c683900160a20a
1040 DATA a9209d7587ca10fae8a000ad23
1050 DATA 85c92ed005a0a54c2683bd2385
1060 DATA c99bf010c92ed005e8a008d0f0
1070 DATA 997587e8c8d0e9ad9f84c92cd0
1080 DATA 15ada084c925d00eada184c92f
1090 DATA d007ada284c92ef004a921d002
1100 DATA a9578d0203a9018d0a03a9008d
1110 DATA 0b03a9008d0403a9868d050320
1120 DATA 53e43019ad04031869808d0403
1130 DATA 9003ee0503ee0a03ad0a03c904
1140 DATA 90e3604c2683a9108dd902a903
1150 DATA 8dda02a98085d4a98785d5a201
1160 DATA 200981a9008514a9ff8dfc02a6
1170 DATA 13adfc02c9ffd004e413f0f520
1180 DATA d181a90085d985daa202200981
1190 DATA a90085d62051829004a90185d6
1200 DATA 209382a4d69848b9058185d2b9
1210 DATA 078185d32002816810de6cd200
1220 DATA 030a8083a98b85d2a98485d3a0
1230 DATA 00caf015a006b1d2c8c99bd0f9
1240 DATA 981865d285d290eae6d3b0e6a2
1250 DATA 03b1d295cc9d4085c8ca10f520
1260 DATA de82a200a5cf85d6a4ceb1d081
1270 DATA d420b6828810f620c682c6d610
1280 DATA eda003b9cc0081d420b6828810
1290 DATA f520de82a5ce85d6a200a000bd
1300 DATA c88191d0e8c8bdc88191d0c6ce
1310 DATA d0f6e8bdc88191d020c682c6cf
1320 DATA f008a203a5d685ced0d9e8e6cf
1330 DATA e00790f3a004b1d285ccc8b1d2
1340 DATA 85cd84ce20de82a00084cfe6ce
1350 DATA a4ceb1d2a4cfc99bf00fc940f0
1360 DATA 0591d0c8d0e920c6824ca88160
1370 DATA 5152457c007c5a5243a200a000
1380 DATA 20bd82a1d499cc00c8c004d0f3
1390 DATA 20de82a4cf20c68288d0faa200
1400 DATA a00020bd82a1d491d0c8c4ce90
1410 DATA f4f0f220d282c6cf10e9a00020
1420 DATA bd82a1d499cc00994085c8c004
1430 DATA d0f020de8220b68288d0fa60a6
1440 DATA d6f00ec6d6204282a900a891ca
1450 DATA c891ca8a60a514c514f0fce6ca
1460 DATA d002e6cb60a514c514f0fca5ca
1470 DATA d002c6cbc6ca60a003b9408599
1480 DATA cc008810f720de82a4d620c682
1490 DATA 8810fa20938220ed82b023c90f
1500 DATA d00ca5d6c901f0f120a0824c6a
1510 DATA 82c90ed00aa5d6f0e320ab824c
1520 DATA 6a82c90cd0d91860a4ce88b1d0
1530 DATA 498091d088d0f76020938220c6
1540 DATA 82e6d64c938220938220d282c6
1550 DATA d64c9382e6d4d002e6d560a5d4
1560 DATA d002c6d5c6d460a5d018692885
1570 DATA d09002e6d160a5d038e92885d0
1580 DATA b002c6d160a5cca6cd18655885
1590 DATA d08a655985d160a2ff8efc02ec
1600 DATA fc02f0fbadfc028efc02a22d20
1610 DATA 85f9c91cf00218603860a20320
1620 DATA 098120ed824820d18168c92df0
1630 DATA 04c90cd00620d1816868686020
1640 DATA 4583a20420098120ed824cd181
1650 DATA 0a084ac960b006e91fb0026960
1660 DATA 0a286a60a90085cc85cda207f8
1670 DATA 980aa8a5cc65cc85cc26cdca10
1680 DATA f2d8a002a5cc206983a5cd4c72
1690 DATA 8348207283684a4a4a4a290f09
1700 DATA 10990785886018655885ca8a65
1710 DATA 5985cba514c514f0fca9b08d26
1720 DATA 02a9838d2702a9068d180285d9
1730 DATA a9008d190260a514c514f0fca9
1740 DATA 0085d98d18026048984808a000
1750 DATA b1ca498091caa5d98d18022868
1760 DATA a86860a2008e3f8586d6bd2385
1770 DATA 9d3185e8c99bd0f5a6d6bd3185
1780 DATA c99bf013203483a0038c1802a0
1790 DATA 0091ca203582e6d6d0e420ed82
1800 DATA b03fae3f85d022ee3f85c90cf0
1810 DATA 1bc934f01748202282d004684c
1820 DATA 2084a000a90091caa99b9d3085
1830 DATA d0eac90cd01da5d618f0cb08a2
1840 DATA 00bd31859d2385e8c99bd0f528
1850 DATA 0820a28320d1812860aac934d0
1860 DATA 0c202282f08da99b9d3085d086
1870 DATA bd51fbc92ef01fc92af01bc930
1880 DATA 9093c93a90138a0940aabd51fb
1890 DATA c93af008c9419080c95bb010a6
1900 DATA d6e00cb00a9d3185a99b9d3285
1910 DATA d0c84cf483031401497201222f
1920 DATA 2f34002d212b2532006279002c
1930 DATA 252f2e400823090034616a656d
1940 DATA 6e6963650021342132299b0314
1950 DATA 014972012e616772616e696500
1960 DATA 626f6f7473747261706140306f
1970 DATA 77726f7400646f007379737465
1980 DATA 6d759b021101c2eb012e610070
1990 DATA 65776e6f001f0008340f2e099b
2000 DATA 031401497701226c6164000310
2010 DATA 1011400a0a0a0a0a0a0a0a0a9b
2020 DATA 0215019bc4012e617a77611a00
2030 DATA 9b9b2c61626f6c61746f726975
2040 DATA 6d009b2b6f6d70757465726f77
2050 DATA 650000002c252f2effff00867f
2060 DATA 8700030007c907a9698515a901
2070 DATA 851685212046083046e615a515
2080 DATA c971a2f0b03c8a29f0186910aa
2090 DATA 30e8bd8108d0034cd10729dfc9
2100 DATA 03f004c942d0e5a000bd8608d9
2110 DATA 7508d0dbe8c8c00b90f28a29f0
2120 DATA aabd84088515bd850885162046
2130 DATA 083074a90085448543a50a8de0
2140 DATA 02a50b8de102a0ff841a841ba2
2150 DATA 028647cab51a9518bd79079545
2160 DATA ca10f4e88648864620f907303e
2170 DATA a518251949fff0dda5188545a5
2180 DATA 198546a51a38e518aaa51be519
2190 DATA a8e8d001c886478448a9698de2
2200 DATA 02a9088de30220f907301120c6
2210 DATA 074c6d076ce2026ce002c08818
2220 DATA f027a2008643bc6a0820ef07a6
2230 DATA 43e8e00a90f1a2ff8efc02ecfc
2240 DATA 02f0fb4c0607ad470348ad4603
2250 DATA 489860a000a644a5470548f01a
2260 DATA e443b01bbd81089145e645d002
2270 DATA e646a547d002c648c647e8d0e0
2280 DATA 8644a00160a5150516f03f2046
2290 DATA 08303cad0009297f8543adff08
2300 DATA 8515adfe0829038516a9008544
2310 DATA f0b3a9528d0203a5218d0103a5
2320 DATA 158d0a03a5168d0b03a9818d04
2330 DATA 03a9088d05034c53e4a0886048
2340 DATA 69742061206b65799b50434841
2350 DATA 4f53202020444f53
Leon



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001