Tu się chyba np. Music Protracker 2.4 nie zalicza, a też wychodzi przez JMP $E474, bo się autorowi GR.0 zawołać nie chciało ...
No nie. Sa wyjatki.... :)
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
SV 2024 WE - program imprezy Już za tydzień odbędzie się zimowa edycja Silly Venture
Nowa obudowa dla 800XL - zostało 36 dni Niewiele ponad miesiąc do końca kampanii.
Zmarł twórca języka BASIC Zmarł Thomas E. Kurtz twórca języka BASIC
Zmiana serwera atari.area Serwis przeszedł właśnie ważną aktualizację infrastruktury
4th Atari ASCII Compo - wyniki Dostępne są już wyniki tegorocznego ATASCII Compo.
atari.area forum » Software, Gry - 8bit » Powrot przez wektor $0a
Strony Poprzednia 1 2 3 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
Tu się chyba np. Music Protracker 2.4 nie zalicza, a też wychodzi przez JMP $E474, bo się autorowi GR.0 zawołać nie chciało ...
No nie. Sa wyjatki.... :)
bo się autorowi GR.0 zawołać nie chciało ...
No, a taki np. SI to nie przywraca pierwotnego koloru tła tylko ten cholerny niebieski... :twisted:
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.
No, a taki np. SI to nie przywraca pierwotnego koloru tła tylko ten cholerny niebieski... :twisted:
Oczywiście, że przywraca pierwotny niebieski, bo taki kolor jest zdefiniowany przez sterownik "E:".
Jeśli chcesz, żeby ci SI przy wyjściu ustawiało inny kolor, to musisz zmienić wektor OPEN dla "E:" i skierować go na coś, co wywoła procedurę systemową, a po powrocie ustawi takie kolory, jakie sobie życzysz, i dopiero wtedy odda sterowanie do programu.
Wtedy też od razu zobaczysz, które programy wywołują GR.0 przez skok do CIO, a które bezpośrednim skokiem do sterownika przez wektory w ROM-ie ;)
Po niekrotkiej przerwie, chcialbym jednak wrocic do tematu. Mam wciaz powazne watpliwosci jak sobie poradzic z obsluga dodatkowych bankow, a nie bardzo potrafie znalezc rekomendowana przez Draco dokunentacje do SpartaDOS na sieci (powinna byc tu: http://my.en.com/~russg/, ale maja przegladarka mi tam nic nie wyswietla).
Pojmuje problem z uzywaniem dodatkowych bankow pamieci w ten sposob, ze Sparta nie rozpoznaje wszystkich dostepnych uzytkownikowi bankow, przez co proba dostania sie do nich poprzez "reczne" przelaczanie i probe doczytania do nich danych z urzadzenia zewnetrznego powoduje zwis kompa. Dochodzi do tego problem umiejetnego pomijania w programie tych bankow, ktore zajete sa przez Sparte.
W takiej sytuacji, czy program dzialajacy wg. ponizszego scenariusza ma szanse dzialac pod Sparta w trybie banked?:
1. Zapamietanie aktualnie aktywnego pod Sparta banku.
2. Wybor banku wolnego i widzianego przez Sparte.
3. Wczytanie z urzadzenia zewn. danych bezposrednio do wybranego jak wyzej banku.
Przy powrocie do Sparty przywrocenie, wraz z innymi ustawieniami, poprzedniej zawartosci $d301.
Dodatkowo chcialbym dopytac, czy bank podstawowy jest zawsze pozostawiany wolnym do wykorzystania, czy nalezy zalozyc, ze Sparta moze tam cos waznego przechowywac?
Jeszcze pytanie odnosnie otwarcia E:. Zawartosc ICAX1 i 2 pewnie okresla tryb otwarcia ekranu, czy moglym zapytac jakie konkretnie znaczenie przypisane jest tym zmiennym?
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ąć.
Precyzyjna i pelna odpowiedz, dziekuje.
Przydatnosc procedury jest oczywiscie duza. Musze jednak wyjasnic, ze planowalem rozwiazac problem okreslania dostepnych uzytkownikowi bankow w sposob zdecydowanie bardziej prymitywny.
Otoz myslalem nad zrzuceniem odpowiedzialnosci na wyznaczenie bankow niedostepnych dla programu, na uzytkownika, poprzez odpowiednie przygotowanie pliku konfiguracyjnego, doczytywanego tuz po uruchomieni programu. Wczesniej tylko typowa procedura rozpoznajaca wszystkie dostepne banki pamieci dodatkowej tworzylaby ich tablice, z ktorej to eliminowane bylyby banki obecne wlasnie w pliku konfiguracyjnym.
Moze nie jest to rozwiazanie optymalne dla uzytkownikow Sparty, ale sadze z analizy odpowiedzi, ze do zaakceptowania.
W tablicy t_ nie odnajduje pozycji, gdzie wskazane bylyby banki zajmowane przez Ramdysk. Moze jest to zapisane w innym miejscu, a moze jest to rozwiazane w ten sposob, ze banki zajmowane sa "od tylu" tablicy bankow, a wiec nie mozna swobodnie dobierac bankow dla Ramdysku.
Przed powrotem do Sparty, nalezy rozumiem przywrocic tym samym zawartosc banku podstawowego (z tablicy t_, $FF zwykle). Inna zawartosc banku podstawowego moze zaistniec w jakich okolicznosciach i czy wowczas istotnie bank $FF bedzie do dyspozycji uzytkownika?
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.
A co jak użyszkodnik zapomni o stworzeniu takiego pliku. 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).
Mysle wiec, ze program powinien przypominac o tym, czy plik konfiguracyjny zostal odnaleziony i doczytany (ewentualnie tez informowal, jakie z bankow zostaly wylaczone z uzywania). Mam nadzieje, ze banki zajmowane przez ramdysk uzytkownik bedzie w stanie w jakis sposob sam ustalic (nie mam wiedzy, czy to zawsze mozliwe). Zamierzam dolaczyc do programu tak skonstruowany plik konfiguracyjny, ktory wylaczy z uzywania wszystkie mozliwe banki dodatkowej pamieci (poniewaz program wcale ich do pracy nie bedzie potrzebowal). Poza tym rzecz jasna dokladny opis budowy takiego pliku, aby latwo bylo go samemu sporzadzic. To oczywiscie nie jest rozwiazanie optymalne dla uzytkownikow Sparty, ale nie chcialbym ograniczac mozliwosc uzywania programu jedynie do srodowiska tego DOSu.
Niestety wybor takiego rozwiazania rodzi jeszcze jeden problem dosc powazny. Mianowicie okreslenie sciezki z jakiej zostal wczytany program, poniewaz slusznym zalozeniem wydaje sie szukanie pliku pomocniczego do programu w tym samym miejscu, co sam program.
Chyba znalazlem sposob na rozwiazanie tego problemu, poprzez posluzenie sie adresem bufora nazwy wprowadzonej poprzez E: (kanal 0 IOCB). Nie mam jeszcze opracowanej procedury analizujacej wprowadzona nazwe i wyodrebniajacej sciezke prowadzaca do pliku (trzeba uwzglednic mozliwosc uzycia roznych separatorow dla oznaczenia podkatalogow), ale sadze, ze jest to rozwiazanie dobre.
Wymusza to tylko koniecznosc uruchomienia programu w dosie, poprzez E:, a nie jakims menadzerem plikow.
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
Mozna jednak chyba zalozyc, ze na 99,9% jest to na pewno bank $FF (niezaleznie czy to Sparta, czy inny DOS)?
Chcialbym jeszcze z ciekawosci zapytac, w jakim porzadku Sparta umieszcza w obszarze tablicy T_ "masek przelaczajacych banki", rozpoznane kombinacje aktywujace przelaczanie bankow pamieci. Chodzi mi o to, czy kody grup bankow (po 4) uszeregowane sa wg. swoich wartosci np. od najstarszego do najmlodszego w tej tablicy, czy nie ma takiego porzadku? (A co z bitami OS i Basica, czy sa ustawione czy zgaszone w tych maskach przelaczajacych banki?)
Niestety wybor takiego rozwiazania rodzi jeszcze jeden problem dosc powazny. Mianowicie okreslenie sciezki z jakiej zostal wczytany program, poniewaz slusznym zalozeniem wydaje sie szukanie pliku pomocniczego do programu w tym samym miejscu, co sam program.
żaden problem. Wystarczy (SDX), że program poszukuje pliku poprzez "D:" - i jeśli zostanie uruchomiony np. z "D5:trolljaskiniapałaprogram.com" - to ta właśnie "ścieżka" będzie traktowana jak "D:" :) :D :D :D
W MyDosie mozliwe jest wczytanie programu nie "wchodzac" do podkalogow (np. D1:MSX:BRULL.COM). D: w tym czasie moze wskazywac na zupelnie inna sciezke, niz ta, spod ktorej wczytany zostal program.
Zapoznawalem sie dzis troche z dokumentacja SpartaDOS X i wynika z niej, ze takze mozliwe jest wczytanie programu ze sciezki roznej od biezacej.
Mozna ewentualnie przyjac, ze nalezy tak ustawic sciezke, aby wskazywala na miejsce, w ktorym znajduje sie plik konfiguracyjny programu. Tylko, ze bedzie to mala niedogodnosc dla uzytkownika.
Z tym, ze chyba kazdy w zmiennej 'path' w Sparcie ma biezacy katalog...
Z moich obserwacji wynika (byc moze to przypadek, wynikajacy z mojej sciezki przeszukiwania), ze np. jak jestem na D3: (lub C: jak kto woli) i uruchomie QA, ktory jest u mnie w katalogu B:>PROG> to nie znajdzie on swojego pliku konfiguracyjnego. Ale jesli ten plik bedzie w katalogu glownym partycji B: to juz go znajduje (chociaz ja domyslnie jestem na C: ). Moze tu byc jeszcze jedna zagwozdka, ktora wlasnie mi do glowy przyszla. Otoz Sparta zapamietuje aktualna sciezke dla kazdrgo Dx:. A Wiec jesli bym wykonal taki ciag insrukcji:
B:
CD PROG
C:
CD JAKIS>KATALOG>
QA
i plik QA.SET bylby w katalogu B:>PROG> to by prawdopodobnie Sparta go znalazla.
SpartaDOS X ma mechanizm zwany szlakiem poszukiwań. Jest to zmienna środowiskowa PATH, w której zapisane są katalogi, w jakich szukany jest otwierany plik (nie koniecznie wykonywalny). Polecenie OPEN #1,4+32,0,"D:twojplik.dat" spowoduje przeszukanie wszystkich katalogów zawartych w zmiennej PATH (od pierwszego do ostatniego), a na końcu katalogu bierzącego i otwarcie podanego pliku z katalogu, w którym został znaleziony jako pierwszy.
Np.
PATH=c:dos;b:programy;e:gry
Plik twojplik.dat znajduje się w katalogach: b:programy, e:gry i w katalogu bieżącym, czyli tym, w którym zajdowałeś się w momencie uruchomienia programu (np. a:moje).
Wykonanie powyższego OPEN spowoduje otwarcie pliku twojplik.dat z katalogu b:programy.
Oczywiście nie musi to być wcale ten plik, o który Ci chodziło, bo program, który go otwiera był uruchomiony przez polecenie np. c:dostoolstwojplik. Aby sprawdzić pod SpartaDOS X (tylko ta wersja!) z jakiego katalogu został uruchomiony plik należy wykonać poniższy kod:
; Przepisanie urządzenia, ścieżki i nazwy uruchomionego programu
; pod adres wskazany przez rejestry AX
auxptr = $15
device = $0761
name = $0762
path = $07A0
g.path sta auxptr
stx auxptr+1
ldy #0
lda #'D
sta (auxptr),y
iny
lda device ; urządzenie z jakiego został uruchomiony program
ora #$30 ; przerabiamy na jego nr ;)
sta (auxptr),y
iny
lda #':
sta (auxptr),y ; mamy już Dn:
iny ; teraz przepisujemy ścieżkę
lda path-3,y
sta (auxptr),y
bne *-6
cpy #3 ; jeśli program uruchomiony z bieżącego katalogu,
beq ?skp ; to brak ścieżki
lda path-4,y ; jeśli z wykorzystaniem szlaku poszukiwań,
jsr ckspec ; to brak '' lub '>' na końcu ścieżki
beq ?skp
lda #'>
sta (auxptr),y
?skp ldx #-1 ; przepisujemy nazwę
?cn inx
cpx #8
bcs ?id
jsr ?cc ; przenosimy znak nazwy
bne ?cn
?id lda #'. ; kropka rozdzielająca nazwę od rozszerzenia
sta (auxptr),y
iny
ldx #8
?ce inx
cpx #12
bcs ?in
jsr ?cc
bne ?ce
?in lda #0
sta (auxptr),y
rts
?cc lda name,x
sta (auxptr),y
iny
cmp #$20 ; sprawdzamy, czy spacja (koniec nazwy)
rts
ckspec cmp #'<
beq *+8
cmp #'>
beq *+4
cmp #'
rts
Jak widać procedura nie robi nic szczególnego. Przepisuje tylko urządzenie, ścieżkę i nazwę pliku w formie strawnej dla OPEN. Wskaźnik auxptr może być umieszczony pod dowolnym adresem na stronie 0 ($15 jest dobrą lokalizacją nie kolidującą, ani z systemem, ani z ew. inymi zmiennymi pragramu).
Powyższa procedura jest lekką modyfikacją procki umieszczonej w Config Selectorze. Tam jest nieco krótsza, gdyż korzysta z paru procedur Sparty, który tu nie można użyć ze względu na ich "ruchomy" charakter ze względu na wersję.
O wiele łatwiej jest ustalić ścieżkę pod MyDOS-em, czy dyskową wersją SpartaDOS-u. Tak jak marok dobrze kombiuje, można skorzystać z adresu bufora kanału 0 CIO.
[ Dodano: 03.05.2005 00:23:15 ]
Lewis, QA jak i wszystkie "inteligentne" programy próbujące zgadnąć skąd zostały wczytane wykładają się pod SpartaDOS-em i MyDOS-em. To dlatego, że odczytują tylko numer urządzenia z DUNIT ($0301) i wstawiają go pomiędzy "D" a ":". ;) Pod MyDOS-em "Dn:" oznacza katalog główny dysku n, a pod Spartą katalog bieżący tego dysku.
Jeśli pod Spartą jesteś w katalogu D3:ZRODLA, w zmiennej PATH masz wstawiony katalog z QA, powiedzmy Twój D2:PROG, a katalogiem bieżącym dla dysku D2: będzie akurat D2:GNIOT, to QA będzie szukał pliku QA.SET w katalogu bieżącym dysku D2:, czyli D2:GNIOT.
Po MyDOS-em (drzewo katalogów takie samo jak w powyższym przykładzie ze Spartą), QA zawsze będzie szukało QA.SET w katalogu głównym dysku D2: i nie pomogą tu kombinacje z "CHDIR".
No to czyli to co napisalem. Czyli po prostu programy typu QA szukaja w biezacym katalogu napedu z ktorego zostal odpalony program. A jako, ze zazwyczaj nie zmieniam sciezki dla D2: to szuka w katalogu glownym...
Tak, ale napisałeś to jako przypuszczenie, a ja przejrzyście naświetliłem temat. ;)
Z QA problem rozwiążałem kategorycznie - nie używam. :D Do Panthera z koleji naisałem krótki "skrypt" odpalany zamiast programu:
cd b:applspanther
x b:applspanther
Z tym, ze chyba kazdy w zmiennej 'path' w Sparcie ma biezacy katalog...
Katalog bieżący zawsze jest sprawdzany na końcu. Chyba, że się go dołączy gdzieś w środku lub na początku PATH. (W przeciwieństwie do takiego za przeproszeniem MS-DOS-a, gdzie katalog bieżący sprawdzany jest przed PATH.)
ICAX2 określa tryb graficzny dla ekranu (urządzenie "S:") . Ponieważ otwarcie "E:" implikuje tryb 0, to ten rejestr można spokojnie pominąć.
Istotnie, otwarcie "E:" implikuje tryb 0, procedura otwarcia edytora w ciemno ustawia rejestr DINDEX na 0, bez patrzenia do ICAX2. Ale CIO kopiuje wcześniej ICAX1/2 na stronę zerową, a to z niej mają korzystać sterowniki w stylu "E:". Sterownik, który jest w ROM-ie nie zagląda pod ICAX2Z, ale nie można przewidzieć, jaki sterownik kto napisze w przyszłości. Zostawienie w ICAX2 i ICAX2Z wartości losowej (czyli nieustawienie ICAX2Z) zmniejsza ilość bajtów IOCB i ZIOCB, jakie mogłyby być wykorzystane dla przyszłych rozszerzeń systemu.
A ponieważ zrobienie LDA #$00 / STA ICAX2 (albo STZ ICAX2) nie kosztuje dużo, wobec tego proponuję mimo wszystko zerować ICAX2 przy otwieraniu edytora. Taka mała wprawka z eleganckiego programowania ;)
Lizard, jesli sie zgodzisz, to chetnie zastosuje w programie Twoja procedure na rozpoznawanie sciezki, z ktorej zostal wczytany program pod SDX. Drobne dopasowanie jej do potrzeb programu bedzie wymagac jedynie podmiany tej czesci, ktora odpowiada za wpis nazwy pliku.
Z drugiej strony plik konfiguracyjny potrzebny jest mi tylko po to, aby ustalic zabronione z dostepnych bankow pamieci, a pod SDX mozna byloby z powodzeniem sie bez tego obyc, o czym pisales. Niemniej tej przewagi SDX nad innymi dosami raczej nie bede wykorzystywal, chociaz przyjrze sie mozliwosciom wplecenia odpowiednich poprawek w kodzie programu i jeszcze sie nad tym glebiej zastanowie (musialyby istniec rownolegle dwa sposoby korzystania z bankow w programie).
Starsze wersje Sparty (3.x) chyba nie bedzie mozna uzywac z programem korzystajacym z RAMu pod ROMem, a wiec separatory katalogow charakterystyczne dla tego tylko dosu mozna odrzucic.
Poza tym mialbym jeszcze takie pytania:
Sa jeszcze, poza MyDosem i Sparta, dosy umozliwiajace tworzenie katalogow na dysku?
Pod MyDosem uzywa sie separatora ":" dla oddzielenia katalogu i tylko ten znak jest w uzyciu?
Pod MyDosem uzywa sie separatora ":" dla oddzielenia katalogu i tylko ten znak jest w uzyciu?
Z tego co mi wiadomo, separator ">" jest wspólny dla MyDOS-a i wszystkich wersji SpartaDOS.
Dokladnie i w celu wygodnego pisania najlepiej wlasnie tego uzywac, bo zadowala i Sparte i MyDosa. Innych DOSow z obsluga podkatalogow brak (jak narazie ;) ).
Zapomniałeś jeszcze do DOS-ie XE. ;) Ale czy ktoś go używa? Niemniej istnieje, więc i jego należy uwzględnić. Na szczęście separatorem katalogów również jest ">".
Aha, DOS XE nie nadaje sie do użycia w twardym dyskiem, chociaż jego file system obsługuje "duże" dyski (nie paamiętam, czy 16 MB czy mniej).
No wlasnie, nawet nie wiedzialem, ze ma to podkatalogi... Bo nie uzywalem... ;)
Zawsze myślałem, że filesystem DOS XE obsługuje dyski tylko do 360k. Ale nawet gdyby więcej, to chyba i tak nie da się zapisać struktury katalogu bez uprzedniego formatowania, nie ma żadnej dokumentacji, no i filesystem SpartaDOS-u i tak jest lepszy ;)
..i tu ciekawostka. Graphisc Op. System v2.0 poprawnie widzi podkatalogi dosa XE, lecz z formatem Sparta coś już nie bardzo. Pomimo, że istnieje jakiś enigmatyczny ster dla SDX... diamond.sdx(!) - w gnatach wygląda jak plik dla X'a.
A wydawało się, że wyjście do dosa - to taka prosta rzecz :)
Patrząc na niektóre programy dochodzi się do wniosku, że nie ma takiej prostej rzeczy, której nie można byłoby spieprzyć.
A wydawało się, że wyjście do dosa - to taka prosta rzecz
To jest akurat prosta rzecz. Tyle, że wątek wyewoluował na inny temat. ;)
Strony Poprzednia 1 2 3 Następna
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Software, Gry - 8bit » Powrot przez wektor $0a
Wygenerowano w 0.036 sekund, wykonano 57 zapytań