Po tych wyjasnieniach, a w szczegolnosci po uwagach na temat odmiennosci dzialania Sparty, chcialbym blizej zapytac, jak ten system radzi sobie z prostymi programami uzytkowymi, na przyklad, ktore laduja sie zwykle od adresu $2000 i zupelnie nie przejmuja sie zagospodarowaniem strony zerowej powyzej $80.
Generalie przestrzeń dla programów została przyjęta właśnie od adresu $2000. Nazwałbym to już tradycją. ;)
SDX również nie przejmuje się zbytnio "starszą" połówką strony 0.
Slyszalem, ze programy pod Sparte sa relokowalne, stad wzmianowane programy rezydentne, domyslam sie, bardzo czesto gniezdza sie w pamieci komputera.
Wszystkie programy będące nakładkami są relokowalne i umieszczają się, bądź są umieszczane pod adresem wskazywanym przez MemLo. MemLo po takiej operacji podnoszone jest o odpowiednią wartość (musi to zrobić Twoja nakładka :!: ).
Tak jak poprzednicy napisali. Pod SDX w trybie Banked raczej nie zdaża się, by nakładki (wszystkie razem) zajmowały pamięć powyżej $2000.
Przypuszczam, ze jesli memlo jest za wysokie, to program sie nie wczyta
Program się wczyta, ale jeśli nadpisze np. procedurę jakiegoś przerwania, to... sam sobie dopisz scenariusz :)
co oznacza, jesli memlo nie bardzo mozna w programie zmienic (np. program juz krazy w obiegu), ze i tak trzeba bedzie zrezygnowac z programow rezydentnych w systemie, a przynajmniej z wiekszosci z nich (i ich wiekszej liczby jednoczesnie).
No niestety, trzeba będzie rezygnować. Wskaźnika MemLo lepiej samemu nie ruszać (nie ma potrzeby), chyba, że program ma być nakładką, wtedy należy ten wskaźnik ustawić ponad nią. Nakładki pisane specjalnie dla SDX nie muszą tego robić, wystarczy, że zmienią flagę Install na różą od zera (polecam DEC INSTALL ;) ), a system już sam zadba o zmianę wskaźnika.
Stad chyba decydujac sie na niski adres poczatkowy programu, nie bardzo nalezy sie przejmowac koniecznoscia zachowania przyjaznych warunkow dla innych programow - rezydentnych. Takie moje przypuszczenia i ocena, nie wiem, czy mozna sie z tym zgodzic.
Nie można się z tym zgodzić. Lepiej podnieść trochę adres ładowania własnego programu niż narażać się systemowi i użytkownikowi. Big Brother is watchig you. Jak się nie będziesz przejmować, to wszyscy się na Ciebie obrażą. :P
Innym problemem dla takiego rozbudowanego i przyjaznego programom rezydentnym systemu jak Sparta, jest chyba pamiec dodatkowa w bankach. Jesli program zaklada ich uzywanie, powiedzmy z mozliwoscia ich swobodnego wyboru, to czy Sparta jest w tej mierze sie w stanie "dostroic".
Sparta sama z siebie nie może przeskoczyć z banku do banku. Pin podał receptę na to. Jest jeszcze jeden problem z dodatkową pamięcią pod SDX. Ten DOS bardzo nie lubi, gdy program sam zmienia banki. Zwis grozi, gdy SDX pracuje w trybie Banked i: ˇ ładowany program zmienia bank ładowanym blokiem:
.or $D301
.by bank
.or $4000
; kod lub dane
ˇ wywoływana jest operacja I/O urządzenia "Dn:" lub urządzeń Sparty (DSK, CON, CAR, itp.) po ręcznej zmianie banku
Inna watpliwosc, czy Sparta umozliwia bezproblemowe wykorzystanie pamieci pod romem
Gdy pracuje w trybie None lub Banked, to tak.
czy nie jest dla niej problemem przejmowanie, chocby na czas dzialania programu, wektorow przerwan
[...]
oraz czy mozna wylaczajac rom wpisac w lokacje $fffa-$ffff wlasciwe dla programu adresy.
Chodzi Ci o przerwania sprzętowe ($FFFA-$FFFF)? Możesz je dowolnie wykorzystywać, ale na koniec przywróć je do stanu początkowego. SpartaDOS wstawia tam wektory procedur podmieniających RAM na ROM i wywołyjących właściwą procedurę rozpoznania źródła przerwania. Nie wszystkie programy korzystające z RAM-u pod ROM-em i zmieniające te wektory przywracają je i później są problemy (z powieszeniem kompa włącznie).
Nalezy moze zrobic kopie zawartosci tych adresow, a przed oddaniem systemowi sterowania, odtworzyc ich zawartosc?
Dobrze kombinujesz. ;) Jest to reguła we wszystkich systemach niezależnie od komputera i systemu. Program zmieiający wektory przerwań musi je przywrócić najpóźniej przy kończeniu pracy. Wyjątkiem są programy rezydentne. Ale nawet onne muszą mieć mechanizmy sprzątania po sobie na wypadek usuwania ich z pamięci (może ktoś napisze kiedyś podsystem zarządzania pamięcią w Atari).
Jeszcze jedno pytanie. Wracajac do tematu postawionego w temacie watku, do jakiego dosu z tych dwoch, o ktorych byla tu juz mowa, bardziej podobny jest Mydos, wedlug tylko tego kryterium?
MyDOS ma najwięcej wspólnego z DOS-em 2.5. Jeśli chodzi o przerwania, to należy z nimi ostrożnie jak pod Spartą (i gdziekolwiek indziej), jeśli chodzi o dodatkową pamięć, to można zaszaleć jak pod DOS-em II+/D, najwyżej skopiesz sobie (i innym) ramdysk. 8)
[ Dodano: 22.04.2005 15:49:42 ]
Ciekawi mnie tylko, czy wiekszosc scenowych produkcji,
Większość scenowych produkcji, albo nie ma opcji wyjścia, albo wychodzi przez reset (JMP $E474). Za takie wychodzenie z programu powinni wieszać na miejscu. Wynika to z lenistwa koderów, którym nie chce się napisać prostej procedury zapamiętywania ustawień i przywracania ich na koniec. :?