• CAM 5 - Krótka historia DOS Libary V50

18.02.2005 22:54, autor artykułu: Colin J. Wenzel
odsłon: 4332, powiększ obrazki, wersja do wydruku,

Krótka historia DOS Library V50 - autor: Colin J. Wenzel

Od samego początku, AmigaDOS zawsze był osieroconym dzieckiem w całym systemie operacyjnym Amigi. We wczesnym etapie istnienia, dodanie kernela TRIPOSa jako podstawy dla Amiga Disk Operating System (DOS), nie było pierwszym lepszym dokonanym wyborem. Okoliczności były jednak jakie były. Zakończono implementację TRIPOSa napisanego w języku zwanym BCPL. BCPL był poprzednikiem nowoczesnego języka C i zanim ktokolwiek się zorientował, C stało się psuedostandardem języka dla całego systemu operacyjnego Amigi i wielu jego elementów. Stało się również najczęściej stosowanym językiem programowania, w którym powstało wiele aplikacji.

Oczywiście w tamtym czasie, prawie wszystkie elementy systemu były pisane w asemblerze MC68000. Nie było to jakimś wielkim problemem, gdyż większość programistów w latach młodości Amigi dorosło na kodzie asemblerowym. Sam byłem jednym z nich. W dodatku nie było żadnej drogi przyszłości, którą miał podążać system. Nie było planów przeniesienia systemu operacyjnego na inny procesor, tak więc zapotrzebowanie na prędkość był najważniejsze, a na dalszym planie leżały czynniki takie jak portowalność czy systemowość.

Czasy się zmieniały, dodawano pewne części systemu operacyjnego Amigi, podczas gdy inne sukcesywnie przepisywano całkowicie w C. Jednakże, największa część systemu nadal była napisana w asemblerze MC68000. Pozostało to do dzisiaj w takich elementach jak DOS library, a także w części File Systemu.

Od dnia gdy Commodore zbankrutowało, a cała lista nowych właścicieli Amigi odpadła już na starcie, Amiga cierpiała przez ponad dekadę na coś w stylu porzucenia. Nawet wtedy, gdy pojawiały się nowe wersje systemu, nadal wymagały one implementacji nowych cech.

Teraz, gdy istnieje plan rozwoju, AmigaOS stara się nadgonić te wszystkie stracone w rozwoju lata. Stare procesory 68000 odchodzą w zapomnienie, sprzęt, który był obsługiwany przez tyle lat przez AmigaOS nie spełnia obecnie oczekiwań. Oczywistym się stało, że AmigaOS musi przejść na całkiem nowy sprzęt jak najszybciej. Tutaj właśnie wkracza AmigaOS4.0. Nie tylko chodzi o to, aby dogonić stracony czas, lecz trzeba także "odłączyć się" od starego sprzętu. Nie jest to jednak takie proste, a samo "odłączanie" jest skompikowane przez fakt, że większość kodu źródłowego systemu operacyjnego nadal była napisana w asemblerze MC68000, który w znacznej mierze zależny jest od procesora i w żaden sposób nie może zostać przeportowany na jakikolwiek z obecnie najnowszych mikroprocesorów.

Pierwszym krokiem, który należało postawić było całkowite przepisanie systemu operacyjnego do C. Przez lata, różne części systemu były uaktualniane i przepisywane w całości lub w pewnej części do języka C. Jednak z powodu starożytnego pochodzenia DOS library i wagi jaką posiadał w aspekcie kompatybilności, w większym lub mniejszym stopniu pozostawało to zawsze na tym samym etapie od czasów upadku Commodore. Pod koniec dodano jednak kilka cech i podjęto poważne próby usunięcia części powłoki TRIPOSa. Na nieszczęście, nigdy tego nie dokończono i nawet w ostatniej wersji systemu, wczesna wersja kernela BCPL TRIPOS nadal istniała i działała, chociaż była ukryta pod grubszą warstwą, którą znamy i używamy na codzień.

Aby osiągnąć cel, którym jest przeportowanie dos.library, starożytny kernel TRIPOSa musiał zostać usunięty, głównie z powodu tego w jaki sposób był napisany i w jaki sposób działał. Niemożliwym było powielenie go w obecnie najczęściej stosowanym języku C. Fakt ten był dodatkowo potęgowany przez brak jakiejkolwiek dokumentacji co czyniło go jeszcze bardziej mniej użytecznym.

Pierwszym zadaniem było odcięcie nowoczesnej powłoki od pozostałości TRIPOSa. Nie było to takie proste jak początkowo się spodziewaliśmy i zajęło mi osobiście prawie 9 miesięcy. W każdym z etapów coś się gdzieś psuło, czy to w handlerach, czy w dużej ilości innych elementów systemu, które korzystały ze starego środowiska i/lub jego efektów ubocznych. Większość z nich nigdy by się nie pojawiła gdybyś nawet ich szukał. Problemy pojawiały się wtedy gdy wyciągało się ich podstawę. Wiele komend z C: nadal posiadało wiele elementów zależnych od starego kodu TRIPOSa.

Na szczęście mieliśmy wspaniałą ekipę koderów, którzy pracowali nad tym projektem OS4 i tylko gdy odkryliśmy tego zależności, poprawiliśmy je i przepisaliśmy - jeden za drugim. Wkrótce cały kod starego BCPL TRIPOSa zniknął. Stało się to o 3 nad ranem, 7 grudnia 2002 roku w Queensland (to dla tych, którzy chcą wiedzieć dokładnie). Przez kolejnych kilka miesięcy resztki kodu asemblerowego zostały usunięte i zastąpione językiem C. Prawie każdy programista z ekipy zajmującej się OS4 miał swój wkład w nową dos.library, czy to przez poprawianie błędów, które wpływały na inne elementy, czy też przez budowę struktury samej biblioteki, czy też przez testy.

Duży wkład mieli również nasi współpracownicy, którym chciałbym osobiście podziękować. Bez ich pomocy, wątpię abym sam ukończył tę pracę, przynajmniej nie na przestrzeni kilku lat. Nie zapominam również o wszystkich naszych beta testerach, którzy po dziś dzień odkrywają dziwne zachowania i mają ogromny wkład w poziom ulepszeń całkiego pakietu - z punktu widzenia użytkownika.

Oto lista elementów w jakie swój wkład zapewnili inni programiści, którzy dostarczyli swoje własne, gotowe do zastosowania zamienniki zastosowane w V50 dos.library:

  • całkowicie nowy zamiennik procedury pattern matching
  • całkowicie nowa implementacja LoadSeg
  • całkowicie nowa implementacja ReadArgs

I wiele innych nowych funkcji, których jest zbyt wiele, aby je tutaj wymienić.

Praca nad dos.library nie zatrzymała się tylko na przeportowaniu jej do języka C. Przeprowadzono również wiele potrzebnych usprawnień, które były potrzebne od wielu lat. Oto krótka lista nowych i ulepszonych cech nowej dos.libary:

  • zniknęło ograniczenie do 255 znaków w ścieżce dostępu do pliku,
  • poprawiono wiele błedów dotyczących przekazywania wskaźnika NULL,
  • dostępnych jest wiele funkcji dotyczących konwersji formatu daty i czasu,
  • nowe procedury mountujące zostały wbudowane w dos.library,
  • nowe funkcje adresowania i śledzenia segmentów są od teraz wewnętrzne,
  • dostępnych jest wiele funkcji tzw. "task callable",
  • rozszerzone wychwytywanie błędów i ich raportowanie,
  • obsługa multi-przypisów dla funkcji pattern matching,
  • wbudowana obsługa PPC i innych przyszłych formatów.

Podczas okresu rozwoju, dos.library była kompilowana przy pomocy SASC. Aby jednak przeportować ją na PCC, musieliśmy zastosować GCC. Z początkiem maja 2003, cały kod został zmieniony tak, aby współpracował z GCC i idzie to całkiem dobrze.

Cała praca była nie lada wyzwaniem. Jestem pewien, że zostanie doceniona. Nie mówię tylko o dos.library, ale także o wszystkich pozostałych elementach systemu. Jestem również pewien, że niebawem usłyszycie więcej informacji od innych programistów, którzy zajmowali się pracą nad innymi modułami.

Kończąc ten artykuł, pomyślałem, że będzie miło jeżeli pokaże coś, czego nikt spoza programistów systemu operacyjnego prawdopodobnie nigdy nie widział. Od wejścia w życie wersji V50, zostało to przeniesione na zawsze do archiwum.

Poniższy tekst pochodzi z oryginalnego nagłówka napisanego w starym kodzie asemblerowym. Zawarty był w wersji V40 w pliku "doslib.asm".



Tłumaczenie na podstawie Club Amiga Monthly - Sebastian Rosa.

Translated and reproduced by kind permission of Amiga Inc. Not for distribution beyond this site.

Przetłumaczone i opracowane za zgodą Amiga.Inc. Dystrybucja wyłącznie na stronach PPA.

Club Amiga logo concept and artwork by Mark Rickan & Mohamed Moujami, winners of the Club Amiga Logo Contest.
Submitted text and images reproduced in Club Amiga Monthly are copyright by their respective authors.
All other text and images reproduced in Club Amiga Monthly are copyright 2003 Amiga Inc.
Content may not be reprinted or reproduced in part or in whole without express written consent of Amiga Inc.

 głosów: 1   
dodaj komentarz
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem