[#29]
Re: Na jaki model amigi pisać (A500 czy A1200)?
@Zbych,
post #1
Bardzo mgliście określiłeś problem aplikacji modułowej, brakuje wielu rzeczy. Głównie to takiej w jaki sposób zamierzasz korzystać z OS.
Co do aplikacji modułowej to ja sobie myślę, że to zależy jakie masz umiejętności pisania w asemblerze, znajomości OS. Plus w w jakim stopniu chcesz korzystać z OS.
Przypuśćmy że to będzie produkcja typu NDOS. Następujące niespodzianki czekają na śmiałków: Sprawdzenie z pomocą OS jaki procek na pokładzie, ile i jakiej pamięci jest. ładowanie kodu jak i danych odbywa się za pomocą własnego loadera, czyli powstaje problem posiadaczy twardych dysków. Tu rozwiązaniem jest WHDLoad, wiąże się to z czekaniem na instalkę o ile ktoś się nad tym pochyli. Napisanie instalki to nie jest fizyka kwantowa ale wiąże się to z dodatkowym czasem. Ładowanie kodu w przypadku NDOS sprowadza się do asemblowania kodu na twardo pod jakiś adres i ładowania go jako dane, pomijamy wtedy problem relokacji. Najłatwiej jest załadować go w obszarze pierwszych 512kb (CHIP), przy założeniu że jest to przynajmniej maszyna, która tyle pamięci posiada. Minusem tego podejścia to niewykorzystanie rozszerzeń pamięci i korzyści z tego płynących.
Oczywiście można to rozwiązać pisząc własny relokator bądź pisząc kod całkowicie relokowalny kod. W przypadku własnego relokatora dochodzą dane do relokacji + preocedura relokacyjna. Kod całkowicie relokowalny wymaga większych umiejętności czyli trzeba więcej czasu spędzić nad kodem. To tak w dużym skrócie o przypadku NDOS.
W przypadku produkcji korzystającej z OS, to możemy tu używać biblioteki DOS i LoadSeg, która odwali brudną robotę związaną z relokacją. Ale tu musimy dbać o to by pamięć była alokowana/zwalniana za pomocą OS, w przeciwnym razie czeka nas niespodzianka w stylu zawieszenie w najlepszym razie.
Możesz użyć też Overlays, ale tu jestem waflem w tym temacie, więc musiałby się wypowiedzieć ktoś kto używał tego podejścia i wie jakie są korzyści a gdzie są zagrożenia i, wie z jakim nakładem pracy trzeba się liczyć. Swoją drogą chciałbym ten temat kiedyś nagryźć.