1,276

(69 odpowiedzi, napisanych Software, Gry - 8bit)

W tablicy t_ nie odnajduje pozycji, gdzie wskazane bylyby banki zajmowane przez Ramdysk.

[...]

banki zajmowane sa "od tylu" tablicy bankow, a wiec nie mozna swobodnie dobierac bankow dla Ramdysku.

Dokładnie. Banki zajmowane są ZAWSZE od końca tablicy. Uwalnia to system od trzymania dwóch wartości: pierwszego wolnego banku i liczby wszystkich banków. Wystarczy tylko jedna - liczba dostępnych.

Nie sądzę, by swobodne dobieranie banków, było aż tak niezbędne. Wg mnie nie ma znaczenia w jakiej kolejności przełączane są banki jeśli przypisane sa im indeksy zamiast warości wpisywanych do PortB.

Otoz myslalem nad zrzuceniem odpowiedzialnosci na wyznaczenie bankow niedostepnych dla programu, na uzytkownika, poprzez odpowiednie przygotowanie pliku konfiguracyjnego, doczytywanego tuz po uruchomieni programu.

A co jak użyszkodnik zapomni o stworzeniu takiego pliku. :P Poza tym, nie jest to bezpieczne ze względu na ramdysk (nie tylko pod SDX; dotyczy to również MyDOS-a i DOS-a II+/D).

Wydaje mi się, że w SpartaDOS ma najlepiej rozwiązane zarządzanie dodatkową pamięcią ze wszystkich systemów atarowskich. Przede wszystkim nie musisz sprawdzać, czy i jakie rozszerzenie jest zamontowane oraz jakie wartości przełączają pamięć.

Przed powrotem do Sparty, nalezy rozumiem przywrocic tym samym zawartosc banku podstawowego (z tablicy t_, $FF zwykle).

Zauważ, że w mojej procedurze przed przełączeniem banku jest

lda portb
pha

a na końcu

pla
sta portb

To wystarczy, by nie martwić się o przywracanie na koniec właściwego banku. Oczywiście przechowywanie takich informacji na stosie jest tylko przykładem. Równie dobrze może to być strona zerowa lub dowolna komórka pamięci poza zakresem $4000-$7FFF, ale to chyba jasne. :D

Inna zawartosc banku podstawowego moze zaistniec w jakich okolicznosciach i czy wowczas istotnie bank $FF bedzie do dyspozycji uzytkownika?

Normalnie jest to $FF. Nigdy nie spotkałem się, by bank podstawowy był zmieniany, ale jak pod T_+4 wpiszesz co innego niż $FF, to to będzie bankiem podstawowym. Jednak nie polecam takich eksperymentów, bo np. Turbo Basic (używa pamięci pod ROM-em) i MAE (korzysta z dodatkowej pamięci) wieszają komputer. Reszta, która używa tylko pamięci podstawowej (nie miącha w PortB) działa.

1,277

(69 odpowiedzi, napisanych Software, Gry - 8bit)

W takiej sytuacji, czy program dzialajacy wg. ponizszego scenariusza ma szanse dzialac pod Sparta w trybie banked?:

1. Zapamietanie aktualnie aktywnego pod Sparta banku.

SpartaDOS zawsze przed oddaniem programowi sterowania włącza bank podstawowy (PortB = $FF), więc nie zdążysz zanotować dodatkowego banku. 8)

2. Wybor banku wolnego i widzianego przez Sparte.
3. Wczytanie z urzadzenia zewn. danych bezposrednio do wybranego jak wyzej banku.

To da się zrobić, choć mogą być łatwe do obejścia problemy z różnymi wersjami SDX. Obecnie są dwie w użyciu: 4.20 (cartridge sprzedawany legalnie lub piracko w Polsce) i 4.22 (przywędrowała do nas w postaci pliku obrazu).

W Twoim przypadku różnica polega na różych adresach tablicy T_. W 4.20 jest to $0902, w 4.22 - $0904. Jej budowa jest następująca: ˇ 4 bajty - informacja o bankach w Atari 400/800, dla serii XL/XE są tam zera
ˇ 1 bajt - bank podstawowy (przeważnie $FF)
ˇ 1 bajt - 0 (nie znam znaczenia)
ˇ 1 bajt - bank, w którym Sparta trzyma swoje bebechy
ˇ 1 bajt - 0 (nie znam znaczenia)
ˇ 16 bajtów - maski przełączające banki
ˇ 1 bajt - maska bitów przełączających banki
Wyjaśnienia wymaga przedostania pozycja. Twórcy SpartaDOS-u wyszli z założenia, że ilość banków jest zawsze podzielna przez 4 (4, 8, 12, 16, 32 i 64), przy czym bity 2 i 3 PortB zawsze odpowiedziale są tylko i wyłącznie za przełączanie pamięci. Dlatego też, nie ma potrzeby sprawdzania dla jakiej ich kombiacji bank istnieje, bo istnieje dla każdej. Jeżeli istnieje %xxxx00xx, to na pewno obecne są również: %xxxx01xx, %xxxx10xx i %xxxx11xx.

Nie wszystkie bajty z tablicy masek są wykorzystywane w każdym systemie. Jeśli komputer ma 128 kB pamięci, to informacja o dodatkowych bankach zapisana jest w pierwszym bajcie, 192 kB - w dwóch, 256 kB - w trzech, 320 kB - w czterech, 576 kB - w ośmiu, 1088 kB - w szesnastu. Informację o ilości baków odczytasz spod adresu DPEEK(dosvec)+29. Jeśli SDX jest w trybie None lub Osram, to będzie tam liczba podzielna przez 4, jeśli Banked, to mniejsza o jeden, ponieważ Sparta po zajęciu dodatkowej pamięci zmniejsza jej dostępną ilość (to samo robi np. RAMDISK.SYS, sprawdź np.: RAMDISK.SYS I: 4 i zobacz ile zostanie wolnych banków). W moim przypadku (320 kB) w None i Osram jest tam 16, w Banked - 15.

Jak z tego korzystać? Najprościej ponumerować sobie banki od 0 do ilości dostępnych banków-1. Chcesz włączyć konkretny bank:

t_   =   $0902           ; (lub $0904, gdy SDX 4.22)
portb =  $D301

     lda portb           ; zapamiętujemy bieżący bank
     pha

     ldy newbank         ; nr banku (0 - liczba dostępych banków-1)
     tya                 ; obliczamy nr "grupy" banków
     lsr
     lsr
     tax

     tya                 ; obliczamy nr banku w "grupie"
     and #%00000011
     tay

     lda t_+8,x          ; "składamy" maskę bitową dla PortB
     ora bnkingrp,y
     eor portb
     and t_+24
     eor portb
     sta portb

     jsr doit            ; robimy co swoje na dodatkowej pamięci

     pla                 ; przywracamy pierwotny bank
     sta portb

     ...

bnkingrp .by %00001100 %00001000 %00000100 %00000000

Kawałek "składający" maskę jest modyfikacją fragmentu procedury Sparty przełączającej banki. Nie sprawdzałem jej, ale powinna działać. :)

Kod nie jest specjalnie skomplikowany. Kombinacje eor; and; eor i wcześniejsze mają służyć obliczeniu takiej wartości dla PortB, by zmieniły się tylko bity odpowiedzialne za dodatkową pamięć. Dzięki temu, przełączanie banków nie włącza/wyłącza Basica, czy systemu. Powinno się to przydać, gdy zamierzasz odłączać rom.

Przy powrocie do Sparty przywrocenie, wraz z innymi ustawieniami, poprzedniej zawartosci $d301.

Spróbuj zapomnieć o przywróceniu PortB, to bardzo szybko sobie przypomnisz. 8)

Dodatkowo chcialbym dopytac, czy bank podstawowy jest zawsze pozostawiany wolnym do wykorzystania, czy nalezy zalozyc, ze Sparta moze tam cos waznego przechowywac?

Sparta niczego nie przechowuje w tym obszarze. Wszystko co jest jej niezbędne znajduje się poniżej MemLo.

Jeszcze pytanie odnosnie otwarcia E:. Zawartosc ICAX1 i 2 pewnie okresla tryb otwarcia ekranu, czy moglym zapytac jakie konkretnie znaczenie przypisane jest tym zmiennym?

Dokładnie. W ICAX1 określasz kierunek przepływu danych: 4 - odczyt, 8 - zapis, 12 - odczyt i zapis. Urządzenie "E:" jest połączeniem ekranu (wyjście) i klawiatury (wejście), więc zawsze ustawia się go w tryb dwukierunkowy (12 w ICAX1). ICAX2 określa tryb graficzny dla ekranu (urządzenie "S:") . Ponieważ otwarcie "E:" implikuje tryb 0, to ten rejestr można spokojnie pominąć.

1,278

(50 odpowiedzi, napisanych Scena - 8bit)

People keep saying that the behavior of i = i++ is undefined

Tu, niezależnie od literatury, obstawiałbym, że i zostanie zwiększone o 1. Najpierw pod i zostanie przypisana wartość i, a potem do i zostanie dodane 1 i zapisane w i. :)

Wracając do mojego przykładu (int c = 1; c += ++c + c++): GCC pod FreeBSD i  Slackwarem oraz CC65 zwraca 7. Czy ktoś z ST/TT/F030 mógłby to sprawdzić pod Pure C? Jestem ciekawy jak Borland sie na to zapatruje.

++c jest wykonywane przed całością, a c++ na samym końcu, czyli już po przypisaniu wartości do zmiennej. Wiedząc to można stwierdzić: ˇ ++c zwiększa wartość c na 2 i to właśnie ta wartość jest brana pod uwagę
ˇ potem jest wykonywane dodawanie c + c, czyli mamy 4
ˇ c zwiększane jest o 4 (c+=4), co daje 6
ˇ na koniec c++ i mamy 7Preinkrementacja zmienia wartość zmiennej natychmiast, więc wszelkie dalsze obliczenia są wykonywane na nowej wartości. Szóstka w GCC na PPC wzięła się przez pomyłkę. :lol: Wpierw zostało wykonane c++ a później += co jest dla wg poważnym błędem. 5 w C# łatwo natomiast wytłumaczyć: c + c to dodawanie dwóch różnych zmiennych (najpierw ++c, czyli 2, potem 2+1=3, 3++ daje 4, a c += 4, to 1 + 4 = 5). 8) Dywagacje nt 5 i 6 są czysto teoretyczne. Nie sprawdzałem tego.

Zgadzam się z Mikeyem i Laoo. Jak ognia należy unikać podwójnej i więcej modyfikacji tej samej zmiennej.

1,279

(50 odpowiedzi, napisanych Scena - 8bit)

"Środowisko": ;) ˇ Windows XP SP2
ˇ cc65 V2.10.1
ˇ set CC65_INC=C:PROGRA~1CC65INCLUDE
set CC65_LIB=C:PROGRA~1CC65LIB
set LD65_CFG=C:PROGRA~1CC65LIB
ˇ nieśmiertelny program hello.c o znanej wszystkim zawartości ;)Zmienne środowiskowe wyglądają dokładnie tak jak widać.

Sekwencja:

cc65 -t atari -o hello.s hello.c
ca65 -t atari -o hello.o hello.s

działa dobrze, natomiast:

ld65 -t atari -o hello.xex hello.o atari.o atari.lib

produkuje zły plik binary - linker pod Win32 jest zwalony.

Natomiast:

cl65 -t atari -o hello.xex hello.c

daje idealny program działający pod Atari 800Win. Nie wiem, czy na prawdziwym sprzęcie też ruszy (powinien), bo gdzieś mi wcięło APE. :?

Pirx, kierunek slashy w zmiennych CC65_* nie ma znaczenia, tak samo jak nie ma znaczenia obecność slasha na końcu ścieżki (zerknij na linie 69. :oops: pliku cc65-2.10.1srccommonsearchpath.c w źródłach ;) ).

Poeksperymentowałem trochę ze slashami i, gdy zmienne zawierają '\', to też wszystko działa.

ale chyba CC65 nie uzywa INCLUDE, tylko tych swoich zmiennych???

I całe szczęście. Wyobraź sobie co by sie stało, gdybyś zapodał do CC65 stdio.h z takiego BC++, a do LD65 stdlib.lib, czy coś podobnego. :mrgreen:

Na koniec praca domowa dla beginnerów: co wyświetli taki program? ;)

#include <stdio.h>
int main()
{
int c=1;

    c+=++c+c++;
    printf("%dn",c);
    return 0;
}

Proszę najpierw ładnie w głowie, a potem sprawdzić, czy aby na pewno. :)

1,280

(50 odpowiedzi, napisanych Scena - 8bit)

"Język ANSI C" autorstwa Briana W. Kernighana i Dennisa M. Ritchiego (można kupić w księgarni albo ściągnąć w postaci pdfa z internetu)

Jak podasz adres tego pdfa, to Cię ozłocę. ;)

Juz taka mentalnosc Polakow, ze nawet jak pomoga to musza powiedziec przy okazji pare slow krytyki...

Bo w ten sposób najłatwiej odwrócić uwagę od własnego braku kompetncji. ;)

Jest jeden plus tego całego zamieszania i kąsania - ściągnąłem CC65. :)

1,281

(32 odpowiedzi, napisanych Bałagan)

Jak mogłeś deptać i truć smrodem swych nóg boginnię. Nic dziwnego, że niespodziewanie odeszła. Przynajmniej wyjaśniła się tajemnica jej śmierci. ;)

Hej Grzybson, jak tam kac poegzaminacyjny? :)

1,282

(32 odpowiedzi, napisanych Bałagan)

Jak tauś zrobi dziubek, to nie ma ... we wsi

:D
Ja tam do wszelkich egazaminów i matury podchodziłem w podkoszulku i też zdawałem. 8O

1,283

(19 odpowiedzi, napisanych Sprawy atari.area)

A możesz zacytować przykład dziecinności moderatorów lub niskiego poziomu ich wypowiedzi?

Przeczytaj dowolny RTT z dowolnego zlotu jaki odwiedizliśmy. :lol:

1,284

(50 odpowiedzi, napisanych Scena - 8bit)

Lizard, zapomniałeś dodać przestrzen nazw std

Może sie zdziwisz, ale pod Borland C++ i Borland C++ Builder taki program przechodzi bez przestrzeni nazw. Stąd mniosek, że domyślnie przyjmowana jest std, a jak chcesz inną to se zmień. :)

Może zamiast rzucać błotem w tebe, wypadałoby się trochę zastanowić jak działa preprocesor po natrafieniu na #include <plik>? Wygląda to mniej więcej tak:
1. pobierana jest zmienna CC65_INC
2. do zmiennej dodawana jest nazwa pliku poprzedzona ew. separatorem katalogu
3. wywoływana jest funkcja otwarcia pliku

Stąd wniosek, że ścieżka podana w zmiennej powinna być zapisana w postaci strawnej dla systemu, na którym odpalany jest CC65. Dla Windows XP powinno być c:ataricc65include (pojedyncze backslashe). Jeśli z tym nie działa, to należy na końcu ścieżki dodać jeszcze jeden ''.

Nie zagłębiałem się w źródła CC65, ale nie wydaje mi się, by kompilator sprawdzał system i odpowiednio ustawiał (back)slashe, więc należy zrobić to ręcznie.

Pomozcie, bo nie daje rady :(((( Wiem, zle szukam w googlu i na atariarea, ale juz lepiej nie potrafie...

Sparwdzałeś na http://www.cc65.org, a konkretnie na http://www.cc65.org/faq.php#PathProblems?

1,285

(50 odpowiedzi, napisanych Scena - 8bit)

Hehe, niedługo toczekamy się posta w stylu: :mrgreen:

Mam taki progam jak niżej i on sie nie komlikuje pod CC65, POMOCY!!!

#include <iostream>
void main()
{
   cout << "Hello łerld" << endl;
}

1,286

(19 odpowiedzi, napisanych Sprawy atari.area)

Przykład idzie z góry, od Pana Kierwnika przez Nabojkę AA (hello Lewis ;) ) i spływa łaską na nas maluczkich.

1,287

(35 odpowiedzi, napisanych Bałagan)

Vasco: jesteś japońskim turystą, więc aparat masz wczepiony w czoło, a trzask migawki wydajesz zębami. Po ciemku nie zapomnij włączyć flesza i świeć oczami. :D

1,288

(19 odpowiedzi, napisanych Sprawy atari.area)

Sam zadecyduj. Zauważ, że jego zwięzła odpowiedź tyczy się Twojej propozycji 4free. ;)

A dla mnie banowanie to metoda sprawowania terroru przez zdziecinniałych modów, którym brakuje inteligencji, by swymi wypowiedziami podnieść niski poziom forum. :twisted:

1,289

(35 odpowiedzi, napisanych Bałagan)

Najlepiej udawajmy japońskich turystów, którzy przypadkiem zabłąkali się w okolice zlotu i podziwiają najnowsze osiągnięcia techniki. :D

1,290

(8 odpowiedzi, napisanych Bałagan)

thePink nie zapodał platformy tylko motyw, więc nie rozumiem skąd te żale. ;)

iestety, nawet dodanie magicznego słówka atari nic nie daje. :(

1,291

(8 odpowiedzi, napisanych Bałagan)

http://www.google.pl/search?hl=pl&q ... di&lr=

1,292

(35 odpowiedzi, napisanych Bałagan)

no ale ormo nie miało korony tylko hełmy, a w szponach pałki ;)

1,293

(8 odpowiedzi, napisanych Sprzęt - 16/32bit)

Drobna uwaga. Gniazdo monitorowe Atari ST ma wyprowadzone sygały RGB, a nie chroma/luma, więc przejściówki Euro --> chinch są tu na ch... potrzebne.

zawor___, utnij jedną wtyczkę Euro i wstaw tam sobie DB9. Będzie mógł podłączyć kompa do monitora przez gniazdo RGB. Ja tak kiedyś zrobiłem i obraz był rewelacyjny.

1,294

(29 odpowiedzi, napisanych Sprzęt - 8bit)

eee tam 8)
zawsze miałem 256kb i nie było problemu...
a w obecnych czasach kiedy jest 1mb :idea:

256 kB przydaje się przy kopiowaniu całodyskowym, a ja pisałem o kopiowaniu dużych plików przy użyciu Toms Navigatora, a tu Ci się nie przyda rozszerzona pamięć (chyba, że kopiujesz pomiędzy dyskietką a ramdyskiem).

Czytaj uważniej, zanim odpiszesz. :rolleyes:

1,295

(69 odpowiedzi, napisanych Software, Gry - 8bit)

To nie SI, tylko GR.0. :P

Nazwę pliku dobrze jest czymś zakończyć, a znak $9b świetnie się do tego nadaje.

Znak końca moża pominąć, gdy urządzenie nie obsługuje nazw plików (E:, K:, S:, P:) lub, gdy po nazwie można zorientować się, gdzie jej koniec (np. fname.ext - rozszerzenie 3-znakowe). Należy tylko zwrócić uwagę, by zaraz za nazwą nie było znaku ">" (MyDOS i SpartaDOS) lub "" (tylko SpartaDOS X). Inaczej sterownik "D:" uzna naszą nazwę za nazwę katalogu, a śmiecie za nią za nazwę naszego pliku. Tak więc jeśli nie chcemy mieć popularnych w Windowsach błędów przepełnieia bufora :mrgreen: , to lepiej kończyć nazwę bezpiecznym $9B lub chociaż wartością 0.

1,296

(29 odpowiedzi, napisanych Sprzęt - 8bit)

Co jak co ale do kopiowanie plików [...] dla mnie to było wygodne proste i świetne....

Kopiowanie długich plików (nie mieszczących się na raz w buforze, co nie było trudne do uzyskannia, bo TN waży jakieś 12kB) pod Toms Navigatorem jest prawdziwą porażką. Dowcip polegał na tym, że po każdym odczycie plik źródłowy był zamykany :?: Aby odczytać dalszą część, należało drugi raz odczytać pierwszy fragment, trzeci - znów całość od początku. Przy zapisie była zdaje się ta sama zabawa, więc skopiowanie takiego Base33 zajmuje trochę czasu; kilka razy dłużej niż pod ormalnym DUP.SYS-em. :rolleyes:

1,297

(69 odpowiedzi, napisanych Software, Gry - 8bit)

Już jest od dawna. :) Draco powinien to gdzieś mieć. Jak nie on, to Pinek.

Pozatym, zmiana banku agłówkiem programu jest proszeniem się o kłopoty. Nie lepiej załadować fragment pliku do pamięci podstawowej, przełączyć pamięć i wtedy przenieść dane? Ładnie, zgrabnie i elegancko. Dodatkowo możemy łatwo kontrolować banki bez ryzyka, że spróbujemy włączyć bank, którego nie ma (tym razem fizycznie).

Mnie się zawsze Sparta wiesza, gdy próbuję ładować program zmieniający banki metodą podaną przez Lewisa. Niewykluczone, że przyczyną jest moje rozszerzenie - 320 kB CompyShop. To rozszerzenie widziane jest przez SDX w połowie (8 banków zamiast 16-tu).

1,298

(35 odpowiedzi, napisanych Bałagan)

Grey, rozłączało Cię podczas ściągania pornoli? :D

1,299

(69 odpowiedzi, napisanych Software, Gry - 8bit)

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. :?

1,300

(35 odpowiedzi, napisanych Bałagan)

Czy to oficjalne logo NaBojkiAA (Narodowej Bojówki AtariArea)? ;)