26

XXL NIE LUBI ATARI !!!

XXL zastanów się - przez 30 lat napisano OS i X DOSów, które obsługują Y filesystemów w różnych wariantach a na dodatek jest ileś tam urządzeń w różny sposób sprzętowo dostępnych, które służą do przechowywania plików. Przecież to jest bazylion kombinacji. A niektóre wcale banalne do obsługi nie są - naprawdę chcesz pisać te drajwery ? A jak coś zmieni się w biosie dowolnego urządzenia dla którego napisałeś driver to będziesz miał pretensje do autora, że już się program nie ładuje ? A jak np. zostanie nie tylko podmieniony firmware kontrolera IDE (BIOS) - tak, że logiczny rozkład sektorów będzie inny ale zmieni się też (zapisana np. w CPLD) strona sprzętowa interfejsu i co za tym idzie rejestry to na kogo będziesz pomstował ? "Leżysz i kwiczysz" Panie XXL !

pomidor

27

Zaletą pomysłu xxla jest mały rdzeń realizujący proste operacje na fsie. Nie ma tam np. tworzenia plików o dowolnym rozmiarze, a tylko zapis slotów o z góry ustalonym rozmiarze (zawartość slota może mieć max tyle ile na niego przewidział projektant gry). Nie potrzeba też mieć ciągle włączonego OSu, żeby realizować operacje IO. Samo wywołanie funkcji jest znacznie krótsze niż jakiekolwiek wywołanie CIO (wyjątkowo wywołania funkcji SDX są krótkie). Ma swoje ograniczenia, ale ma też i ogromne IMHO zalety. Że każdy bajt pamięci podstawowej się liczy, to wie każdy komu jej zabrakło. Argumentacja ze 130xe też jest słaba, bo proszę sobie pomyśleć ile zachodu wymaga wykorzystanie pamięci bankowanej (jeśli nie, to dlaczego każdy kto myśli o wsadzeniu 816 do Atari od razu chce mieć pamięć liniową). A że projekt ma swoje ograniczenia - każdy ma :)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

28 Ostatnio edytowany przez xxl (2011-12-09 15:29:51)

> XXL zastanów się - przez 30 lat napisano OS i X DOSów, które obsługują Y filesystemów w różnych wariantach a na dodatek jest ileś tam urządzeń w różny sposób sprzętowo dostępnych,

powielano ten sam blad... pozwole zacytowac sobie pierwszy post:

obecnie dziala dla AtariDos i urzadzen podlaczonych przez SIO czyli stacje dyskow, SIO2SD, SIO2PC itp ale jesli ktos zrobi wersje na inny filesystem i/lub urzadzenie to tylko z pozytkiem dla userow tych urzadzen/filesystemow.

dla oryginalnego sprzetu atari biblioteka juz dziala i to sie nie zmieni, jesli ktos bedzie pisal wesje biblioteki pod konkretny sprzet/filesystem - zapraszam.

http://atari.pl/hsc/ad.php?i=1.

29

@electron: Jeśli masz na myśli BIOS np twardego dysku to przecież nie jest powiedziane, że xxl do niego nie skacze (tak, jak to robi OS Atari). Przecież SIO też zaimplementował tak, jak to robi Atari, ale bez użycia przerwań - czy to że nie skacze do ROMu Atari oznacza zaraz że urządzenia podłączone do magistrali nie będą działać? Czy jak ktoś zmieni ROM stacji dysków, to zaraz rozwiązanie xxl przestanie działać? Nie. Po to są interfejsy i standardy, żeby umożliwić pisanie softwareu niewrażliwego na zmiany po drugiej stronie/zmiany bebechów.
Każda gra napisana pod xBIOSa pisana jest standardowo, ale dla innego zbioru interfejsów. Interfejsów xBIOSa. Po prostu żeby gra zadziałała musi być załadowana biblioteka xBIOS. Czy będzie ona w sektorach boot, czy załadowana inaczej to kwestia drugorzędna.

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

30

mono: nie nadazasz ;)

przechodze na tumiwisizm

31 Ostatnio edytowany przez electron (2011-12-09 15:44:22)

Czyli - po prostu - zrobileś całodysk sektorowy.

OK - ale np. na SIDE nie pójdzie. I - jak sądzę - NIKT nie napisze drivera innego niż SIO.

Działa dla atari DOS ? W jakiej wersji ? Dla Mydos ? DOS3 ? DOS 2.5 i klonow ? Jaka dlugosc VTOC ? Jaki rozmiar sektora katoalogu ? 707 czy 708 sektorow w DD ?

Co z resztą dosów i urządzeń ? TO jest bardzo złe rozwiązanie XXL.
tak naprawdę należy się tylko trzymać kilku zasad (OK, ograniczeń) i podać wymagania programu w czasie ładowania.
Wówczas dla danego urządzenia powinien istnieć loader (ale nie Twój !) który to uruchomi, o ile naprawdę nie przesadziłeś z wymaganiami.

Warto by spisać zasady tworzenia prawidłowych plików binarnych, może coś takiego już powstało ?

Ja ze swojej strony chętnie będę (za niewygórowaną opłatą) certyfikował DOSy, loadery i same pliki binarne zaświadczając swą powagą ich zgodność ze standardem.

pomidor

32

@mono: nawet robienie własnego SIO może skutkować tym, że z jakąś tam stacją już nie będzie działać - bo to jest jednak INNE SIO. A co z "turbami", które są w OSach i stacjach ? Najmniejszy wspólny mianownik ?

pomidor

33

> Czyli - po prostu - zrobileś całodysk sektorowy.

oczywiscie, ze nie. dlaczego tak uwazasz?


> Wówczas dla danego urządzenia powinien istnieć loader (ale nie Twój !) który to uruchomi

oczywiscie ze nie moj, ja zrobilem tylko dla urzadzen SIO i ataridos fs :-)

> Warto by spisać zasady tworzenia prawidłowych plików binarnych,

jedyne ograniczenie pliku binarnego pokazal Marek Konopka.

http://atari.pl/hsc/ad.php?i=1.

34 Ostatnio edytowany przez mono (2011-12-09 15:48:41)

@electron: Biblioteka dla SIO+turbo (np. US). Dzięki temu kod obsługi FSa w pamięci Atari jest optymalny, bo nie uwzględnia miliona wariantów dla urządzeń, których nie masz nawet podłączonych. Wiadomo, że jeśli będziesz chciał odpalić taką grę z innego urządzenia, to będziesz musiał mieć załadowaną bibliotekę dla tego urządzenia. Ale to co robi xxl to nie jest DOS, ale biblioteka do pisania gier. Ma być jak najmniejsza, ale umożliwiać wykorzystanie struktur FS bez DOSa.
Co do xBIOS to wersja xxla obsługuje Atari DOSy 1.x, 2.x i MyDOS DD (kompatybilny z DOS 2). Ilość sektorów (707/708) nie jest istotna, bo dysk jest formatowany MyDOSem, a nie biblioteką xBIOS. Powtórzę - xxl nie robi DOSa a bibliotekę do wykorzystania w grach wymagających maksimum podstawowej pamięci.

Edit: adresat

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

35

> nawet robienie własnego SIO może skutkować tym, że z jakąś tam stacją już nie będzie działać - bo to jest jednak INNE SIO. A co z "turbami", które są w OSach i stacjach ? Najmniejszy wspólny mianownik ?

pojdzie, pojdzie :-) z turbo sie wypowiem bo to bylo jedno z zalozen:
turbo dla stacji jest jej rozszerzeniem, biblioteka dla stacji turbo rozni sie 1 bajtem ale nie bedzie przelaczana automatycznie, user ma wybor. uzywaj biblioteki pod twoja konfiguracje sprzetowa.

http://atari.pl/hsc/ad.php?i=1.

36 Ostatnio edytowany przez electron (2011-12-09 16:00:23)

Ostatnimi laty dużo się zmieniło w "pamięciach masowych" dla atari .... i to co robisz XXLu jest moim zdaniem już przestarzałe i skazane na porażkę.

pomidor

37 Ostatnio edytowany przez xxl (2011-12-09 16:02:48)

> Ostatnimi laty dużo się zmieniło w "pamięciach masowych" dla atari

kazda stacja SIO, ktora dziala standardowo bedzie takze dzialac z ta biblioteka bez zadnych zmian. chocby nie wiem ile sie w niej zmienilo. porazka? musialbym przestac pisac gry :-)

http://atari.pl/hsc/ad.php?i=1.

38

dyskietke formatujecie DOS-em, nagrywacie pliki etc. potem odpalacie program który przy pomocy bibliotek xbios realizuje odczyt i zapis bez udziału DOS-u, dostajecie całą przestrzeń pamięci

np. SID ładuje się od adresu $700, nie ma sprawy bo loader umieścimy poza tym obszarem i ładujemy

odczyt/zapis to dwie operacje najczęściej potrzebne, reszta bajerów DOS zajmuje tylko pamięć

chciałbym dodać odczyt plików do Panga, odczyt leveli, tekstur, zapis hi-score (plik hi score ma stały rozmiar, np. 10 wpisów), obszar $0700-$2000 jest wykorzystywany przez grę, co mam zrobić

zapisać obszar pamięci DOS-a $0700-$2000 do dodatkowej pamięci, potem podmieniać ten obszar, włączać OS, inicjować pozostałe komórki?  ale jest XBIOS, więc będzie łatwiej i szybciej

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

39

Bardzo dobry przykład tebe.
A co jeśli pod adresem $700 jest akurat xBios ???
Czy on nie zajmuje miejsca?, czy się sam relokuje szukając wolnego miejsca w pamięci?? Nie - on zajmuje - mało ale jednak, w związku z tym jeśli chcę ten kawałek pamięci użyć muszę mieć KOLEJNĄ WERSJE bibliotek, skompilowaną pod inny adres.
Czyli poza wersjami dla różnego sprzętu, powstawać będą wersję dla różnych programów - oczywiście każda z tych "podwersji" będzie musiała mieć wersje dla różnych konfiguracji sprzętowych....

Czy nie lepiej jednak trzymać się zasad przy pisaniu programów??

(tak wiem SIDy to wyjątkowa sytuacja, ale dlaczego do tej wyjątkowej sytuacji dorabiać ideologię uniwersalności rozwiązania)

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

40

> w związku z tym jeśli chcę ten kawałek pamięci użyć muszę mieć KOLEJNĄ WERSJE bibliotek, skompilowaną pod inny adres.

nie

> Czyli poza wersjami dla różnego sprzętu, powstawać będą wersję dla różnych programów

nie. poczytaj pierwszy post

> Czy nie lepiej jednak trzymać się zasad przy pisaniu programów??

od poczatku nie wymieniles ani jednaj zasady, wymieniasz OGRANICZENIA dosa.

http://atari.pl/hsc/ad.php?i=1.

41

No to jak załaduję coś do obszaru pamięci akurat przez xBiosa zajmowanego??? No jak?
Przeczytałem pierwszy post dokładnie, tam adres xBiosa jest wskazany precyzyjnie, ale ze struktury wynika że może być w innym miejscu pamięci. No i co z SIDem łądowanym pod $800 (żeby było ciekawiej)?

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

42 Ostatnio edytowany przez xxl (2011-12-10 12:48:45)

nie zaladujesz bezposrednio, takie jest OGRANICZENIE xBiosa, no to ja zacytuje pierwszy post:

$0000-$00ff
$0100-$01ff
$0200-$03ff
$0400-$06ff
$0700-$07ff    ; bufor uzywany podczas IO
$0800-$0bff   ; xBios
$0c00-$cfff
$d000-$d7ff   ; Atari HW
$d800-$ffff

do obszaru bufora i xBiosa bezposrednio niczego nie zaladujesz.

http://atari.pl/hsc/ad.php?i=1.

43 Ostatnio edytowany przez mono (2011-12-10 13:08:01)

Jednym z ograniczeń standardowego formatu pliku binarnego jest to, że bloki ładują się pod STAŁY adres. A w OS istnieje przecież coś takiego, jak MEMLO które jest olewane przez DOS podczas ładowania pliku binarnego (no AtariDOS chyba sprawdza czy nie próbuje się go nadpisać). Dopiero Sparta potrafi sobie blok załadować na MEMLO, ale ma już zupełnie inny format pliku niekompatybilny z resztą DOSów.
xBIOS xxla ma tę zaletę,  że zajmuje pamięć między $700..$BFF i wiadomo gdzie na 100% się nie ładować. I ta granica jest STAŁA (póki co ;>).
Założenie, że "porządny" DOS zajmuje pamięć poniżej $2000 jest sztuczne i jest konsekwencją stosowania formatu binarnego - gdyby chcieć na serio traktować MEMLO (a DOS nie ma do tego żadnego supportu) to trzeba by pisać programy relokowalne i własnoręcznie sobie je relokować. Inną opcją jest wykorzystanie ACX i wykrywanie czy mamy do czynienia z XL/XE oraz użycie relokatora, który jest UKRYTY w systemie i używany jedynie do ściągania driverów z urządzeń SIO. Dlaczego DOS z tego nie korzysta? Do w serii 400/800 nie ma? Zawsze można było rozpoznać rodzaj OSu i go sobie doładować.

@MarekKonopka: Przecież można załadować blok pod $FFFF - taki blok wygląda np. tak:

$FF $FF $FF $FF $FF $FF dana

Wiele loaderów pozwoli na adres końca mniejszy niż początkowy, co pozwoli od razu załadować dane na zpg, ale załóżmy że jest to niepolityczne bo a nuż w przyszłości Atari będzie mieć liniową pamięć poza 64k - kończmy więc na $FFFF.

Edit: Innym ograniczceniem podczas korzystania z extramu zgodnego z rambo jest nie umieszczenie pamięci ekranu/dlisty w $4000..$7FFF. Kolejnym jest cartridge z DOSem $A000..$BFFF. Obszar od $C000..$FFFF jest niedostępny, no bo to ROM a DOS nie potrafi tam niczego załadować. Więc aby ładować program w zgodzie ze sztuką należałoby używać w pliku binarnym dwóch obszarów:
- $2000..$3FFF,
- $8000..$9FFF (odpada kiedy mam karta 16K).
16K (8K przy bardziej wymagającym karcie) - hmmmm ciekawe, który z projektantów gier się tym przejmował?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

44 Ostatnio edytowany przez Pecus (2011-12-10 13:13:14)

Jesli nie mozna xBiosa umieszczac w innych obszarach to zyskalismy raptem 2 i pol strony RAM w stosunku do SDX w trybie BANKED ... co za OGROMNY zysk :P

mono: wiekszosc (jak nie wszystkie) loaderow potraktuje 6 kolejnych $ff jako 3 naglowki i bedzie oczekiwało adresu startowego po nich.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

45

bufor ma 256 bajtow?
strzal w stope? sektory maja 512 bajtow

przechodze na tumiwisizm

46 Ostatnio edytowany przez xxl (2011-12-10 13:19:21)

sygnaturka $FFFF jest opcjonalna przy kolejnym ORG (mads tak chyba robi) wiec kompilujac madsem po drugim ORG wystapi $org $ffff to bedzie lipa


> SDX w trybie BANKED ... co za OGROMNY zysk

litosci... czyli wszyscy maja miec minimum dodatkowe 128 ramu, moje atari nie ma 128 kb ramu. no i nie ma rozszerzenia w postaci sdx.

> strzal w stope? sektory maja 512 bajtow

nie bede Cie uczyl JTZ, madra glowa ta implementacje dla przykladu dla ide+ zrobilaby na 1 stronie pamieci...

http://atari.pl/hsc/ad.php?i=1.

47 Ostatnio edytowany przez Pecus (2011-12-10 13:18:56)

xxl napisał/a:

itosci... czyli wszyscy maja miec minimum dodatkowe 128 ramu, moje atari nie ma 128 kb ramu.

TAK (poza tym chodzi o dodatkowe 64kb - czyli standardowe Atari 130XE)

Czy wszyscy, jak Ty muszą zatrzymać się na etapie prehistorycznym? :P

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

48 Ostatnio edytowany przez xxl (2011-12-10 13:23:04)

> Czy wszyscy, jak Ty muszą zatrzymać się na etapie prehistorycznym?

moje standardowe atari ma 64kb ramu noi nie ma rozszerzenia sdx :). no niestety atari to juz prechistoria :D

http://atari.pl/hsc/ad.php?i=1.

49

A to fakt... zwracam honor i idę na zakupy po 16GB RAM do grzyba (zupełnie serio :) ).

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

50

> Przecież można załadować blok pod $FFFF - taki blok wygląda np. tak: $FF $FF $FF $FF $FF $FF dana

jesli sygnaturka pliku binarnego nie bylaby opcjonalna to mozna ladowac dane pod $ffff bez problemu. trzebaby sie dowiedziec skad wiadomo ze sygnaturka jest opcjonalna (moze Krotki by to wiedzial)

http://atari.pl/hsc/ad.php?i=1.