Edycja kickstartu - 5.0 out of 5 based on 2 votes

Ocena użytkowników: 5 / 5

Gwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywnaGwiazdka aktywna
 
Kickstart to część systemu operacyjnego znajdująca się w pamięci ROM, która nie może być edytowana. Ale gdy nasza Amiga wspiera funkcję MapROM to możemy użyć przygotowany przez nas kickstart. W tym artykule pokażę jak zgrać kickstart do pliku, wypakować jego elementy, podmienić własnymi i stworzyć własną wersję.
Co nam daje edycja kickstartu? Możemy pozbyć się patchy, których do tej pory używaliśmy, a poprawki zaaplikować bezpośrednio do kickstartu. Dzięki temu zaoszczędzimy również pamięć RAM. Tak przygotowany kickstart wykorzystuję w karcie ACA620 ładując go do specjalnie wydzielonej pamięci. Kickstart jest ładowany zaraz na samym początku sekwencji startowej, komputer jest bootowany z tego kickstartu i pozostaje w tej pamięci do wyłączenia zasilania. W innym moim artykule możecie przeczytać o pozostałych możliwościach karty ACA620.
Poniżej znajduje się lista wymagań, które należy spełnić, aby móc edytować kickstart:
Nie będę tutaj omawiał instalacji MUI oraz wymaganych bibliotek. Remusa nie trzeba instalować, program wystarczy wypakować z archiwum, potem podmienić pliki z archiwum RC35 i RC36.
Wyodrębnienie zawartości kickstartu
Na początek musimy zgrać zawartość ROMu kickstartu do pliku. Najłatwiej posłużyć się do tego programem ROMSplit (jest razem z Remusem). Po uruchomieniu klikamy Grab ROM i poniżej na liście widzimy zawartość pamięci ROM. Są to wszystkie komponenty, które wchodzą w skład naszego kickstartu wraz z numerami wersji.
grabrom t
Program automatycznie ustawi Save dir w którym zapisze wyodrębnione elementy z kickstarta. Klikamy Select all i Extract files. W trakcie wyodrębniania zostaniemy zapytani czy chcemy użyć patcha na module input. Patch usuwa sterownik input.device z modułu input, zostawiając tam tylko sterowniki do klawiatury i myszy (gameport i keyboard.device). Dzięki temu zyskujemy jakieś 2kB w kickstarcie.
ROMSplit wyodrębnione dane zapisał do katalogu Modules/<wersja kickstartu> w katalogu programu Remus. Za pomocą ROMSplit możemy wyodrębniać pliki również z gotowych obrazów kickstartów, dyskietek kickstart (takich jakie były w A1000 i A3000) oraz plików AmigaOS ROM Update, które są używane w AmigaOS 3.9.
Jeżeli w AmigaOS 3.9 używamy Boing Baga 2, to możemy wypakować pliki znajdujące się w pliku 'DEVS:AmigaOS ROM Update'. W Load ROM podajemy ścieżkę do tego pliku. Tak jak w przypadku wczytania kickstartu z ROM tak i teraz poniżej będziemy mieli spis zawartości wraz z wersjami. Program automatycznie utworzy kolejny katalog w podkatalogu Modules, gdzie znajdą się wyodrębnione pliki.
amigaromupdate t
Znów ROMSplit zapyta się nas o patchowanie. Tym razem pliku ram-handler. Jeżeli nie spatchujemy go, to nie będziemy mogli dodać go do nowego obrazu kickstarta, a bez niego system nie wstanie. Patch, oprócz poprawiania ram-handlera, doda nową funkcjonalność. Dzięki niej ramdysk nie będzie już widoczny jako 100% pełny. Aktywujemy patcha na ram-handler.
Zamykamy ROMSplit i przechodzimy do Remusa. Normalnie w zwykłym kickstarcie 512 kB pozostaje 96 bajtów wolnego miejsca. Żadna aktualizacja się w to nie zmieści, więc jesteśmy zmuszeni zbudować kickstart 1MB. Aby zbudować taki kickstart, musimy najpierw wygenerować plik podstawowy i rozszerzony, a potem je połączyć w całość.
original kick t
1MB to sporo miejsca i możemy je wykorzystać do dodania do systemu nowych funkcji, np. KingCON od razu na starcie systemu. Dodatkowe bajery możemy wziąć z nieoficjalnych dodatków Boing Bag 3 i 4, z tej strony zawierającej spis modułów oraz z bloga Cosmosa. Gość specjalizuje się w wydawaniu łatek bibliotek systemowych. Na koniec artykułu podam biblioteki, których ja użyłem.
Budowanie własnego kickstarta
Najpierw budujemy podstawowy plik. Przechodzimy do zakładki Settings i w ROM file podajemy ścieżkę do pliku wynikowego. ROM base nie zmieniamy (powinno być $F80000 Standard 512K ROM). ROM size ma być na 512kB i Image type na normal. Możemy wpisać nową wersję kickstartu w formacie wersja.rewizja. Reszty nie ruszamy.
kick standard settings t
Wracamy na kartę ROM contents. Po lewej mamy zawartość przyszłego kickstartu, a po prawej zawartość katalogów w katalogu programu Remus. Stąd będziemy dodawać elementy ROM. Przechodzimy do podkatalogu Modules i stamtąd dodajemy poszczególne elementy kickstartu.
Na początek kickstartu podstawowego (nierozszerzonego) dajemy zawsze exec.library (klikamy dwukrotnie na elemencie z listy z prawej strony). Musi być to exec z oryginalnego kickstartu, inaczej Amiga nie wystartuje nam. Na forum PPA przewijał się temat podmiany execa. Jednym to działało, innym nie (w tym mi), więc zalecam użyć oryginalnego execa, a potem podmieniać go za pomocą LoadResident.
Zaraz za execiem musi być moduł 1MB_ROM, jeżeli budujemy kickstart o wielkości 1MB. Inaczej Amiga będzie nam resetować się w kółko. Moduł ten znajduje się w katalogu Others/Blizkick/
Potem dobrze jest dać wszystkie elementy, które były oryginalnie w kickstarcie, aby o niczym nie zapomnieć. Później będziemy je podmieniać nowszymi wersjami. Na razie możemy nie dodawać graphics.library i workbench.library. Są to jedne z największych bibliotek, damy je później do pliku kickstarta rozszerzonego (i tak pewnie by się nam nie zmieściły).
Gdy komponenty są już załadowane, możemy budować plik podstawowego kickstartu. Warto zapisać plik projektu, aby w przyszłości nie trzeba było ustawiać programu od nowa i dodawać elementy. Klikamy Compile. W miejscu, gdzie ustawiliśmy plik wynikowy, powinien być plik kickstartu podstawowego.
kick standard compile t
Teraz tworzymy plik kickstart rozszerzony. Klikamy New. Wyświetli się nam znów karta ustawień. Podajemy nową ścieżkę do pliku wynikowego. W ROM Base wybieramy $E00000 (Extended 512K ROM). Rozmiar 512kB, typ obrazu normalny, odznaczamy Checksum.
kick extended settings t
Wracamy do ROM contents. Teraz pierwszą rzeczą, którą musimy dać jest romheader. Znajduje się on w katalogu Other/RomHeader/romheader. Następnie dodajemy rzeczy, które nie zmieściły się nam w poprzednim pliku kickstart podstawowym, czyli na przykład graphics.library i workbench.library. Zapisujemy również plik projektu i kompilujemy obraz.
Uzyskaliśmy w ten sposób dwa pliki z podstawowym i rozszerzonym kickstartem. Dobrze by było przetestować je, czy działają na emulatorze WinUAE bądź FS-UAE. W emulatorze podajemy ścieżki do kickstartów i sprawdzamy czy działa.
Jeżeli wszystko działa i chcemy wykorzystać kickstart w karcie turbo, musimy połączyć oba pliki w jeden 1MB obraz ROM. Uruchamiamy jeszcze raz program Remus i z paska ikon na górze klikamy przycisk ARexx. Z meny wybieramy Make 1MB ROM, następnie wyskakuje requester z pytaniem jaką Amigę mamy. Jeżeli budujemy dla Amigi 600, wybieramy przycisk A500/A2000. Jeżeli chcemy wygenerować jeden plik 1 MB dla funkcji MapROM najlepiej jest wybrać opcję A500/2000, nawet dla Amigi 1200. Dzieje się tak dlatego, że Amigi 500/600/2000 mają jedną kość ROM i powstaje jeden plik, a w przypadku Amig 1200/4000 są dwie kości ROM, więc powstają dwa pliki LO i HI. Tych ostatnich nie wykorzystamy w ACATune. Potem skrypt poprosi nas o wskazanie pliku podstawowego, rozszerzonego, a na koniec pliku, w którym ma zapisać kickstart o wielkości 1MB. Pliki kickstartu LO i HI są wykorzystywane podczas wypalania kickstartu w kościach dla A1200/4000 i tylko po operacji ByteSwap.
kick 1MB generate t kick 1MB generate which amiga t
Ostatnie pytanie dotyczy operacji ByteSwap na obrazie ROM. Jeżeli mamy zamiar wykorzystywać obraz tylko w funkcji MapROM, wybieramy No. Jeżeli chcemy wypalić w kości za pomocą programatora, wybieramy Yes.
Gdy nasz kickstart jest już gotowy i chcemy go wykorzystać w kartach z serii ACA, dodajemy na samym początku sekwencji startowej np.:
C:ACATune >NIL: -maprom DEVS:Kickstarts/AmigaOS3.9.1.rom -vbrmove -maxmem
Amiga po wczytaniu kickstartu do specjalnie przeznaczonej na to pamięci zrebootuje się. Po restarcie mamy już nowy kickstart. Ważne jest, aby wyrzucić wcześniej z sekwencji startowej wszystkie zaaplikowane w obraz ROM łatki, bo już nie są nam potrzebne. Polecenie SetPatch należy skrócić o zaplikowane łatki. Jeżeli integrowaliśmy wszystkie łatki z kickstartem linijkę SetPatch ustawiamy w następujący sposób:
C:SetPatch NOROMUPDATE QUIET
Teraz przedstawiam listę poprawek, które zawarłem w swoim kickstarcie:
I na koniec trik, jaki odkryłem podczas pisania tego artykułu: gdy otworzymy projekt przygotowanego wcześniej kickstarta i chcielibyśmy dowiedzieć się jaką wersję komponentu użyliśmy w nim, wystarczy dwuklik na elemencie. Poniżej pojawią się informacje na temat modułu.
Wpis inspirowany artykułem z mfilos Computers & Consoles Blog.
Spodobało Ci się? Udostępnij, przypnij, podziel się z innymi:


Wykorzystanie zawartości tej strony w celach komercyjnych bez zgody autora jest zabronione.
Jeśli wykorzystujesz zawartość tej strony w swoich artykułach, podaj jako źródło adres URI tej strony. Google+
Creative Commons License