BOOTPo 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
|