26

Krap ma Warpa zrobionego przez samego Pasia, o ile mi wiadomo, i przyczyną niedziałania są zrypane GAL-e. Dokładnie Pasiu ponoć, po zrobieniu Warpa laoo, zgubił pliki do programowania GAL-i i nie udało mu się ich odtworzyć. Jasne, że nie wiem tego na pewno, więc jest miejsce dla sprostowań.

W każdym razie nie ma fizycznych powodów, dla ktorych Warp miałby działać źle z powodu innych rozszerzeń. Jesli działa źle, to, dokładnie tak samo jak kaźde inne źle dzialające rozszerzenie, z powodu, że jest zj*bany przez montera.

Jeśli Pasiu ma pomysł na naprawienie Warpa, to ładne parę osób czeka z niecierpliwością.

KMK
? HEX$(6670358)

27

dzieci dzieci...

sygnal halt mozna sobie wyprodukowac, nie musi byc tym samym haltem, co sygnal generowany przez antic dla wewnetrznego proca
inna sprawa ze

a) jesli uzyje sie sallego (ktory ma halt), to zostaje nam 1.77mhz, co z kolei pociaga za soba wziescie skads tej czestotliwosci - ok, proc moze pracowac na fi2, fajnie, ale to bedzie wciaz te 1.77mhz poprzesowane w fazie wzgledem fi0, do tego - halt stopuje procesor od nastepnego cyklu fi2 - czyli naszego fi5?

b) ok.. powiedzmy ze problem jest wyimaginowany i za malo sypiam, ponadto kazdy ma wersje C, a nawet S (na rdzeniu statycznym) ktora moze byc dowolnie stopowana, albo przynajmiej C i bedzie sobie buforowal cala magistrale danych i adresowa, zeby procesor, ktory bedzie mial za zadanie powtarzac cykl zapisu/odczytu (bo nie bedzie mial halta, ale bedzie mogl pracowac powyzej 2mhz) nie powtarzal go w magistrale atarki - bedzie to bardzo kompaktowe rozwiazanie...

c) niech cud sie zdazy i kazdy pcha tam 816 z pamiecia no - zaszalejmy - 64kb, rdzen - przynajmniej w tych nowych, jest statyczny - mozna calkowicie zatrzymac zegar, jest sobie tez sygnal be do odciecia magistrali - kolejny problem z dyni, ale co zyskujemy?

zalozmy hipotetyczna sytuacje, w ktorej 816 wygenerowal hiper super szybko potrzebna grafike i i ma ja juz gotowa, komputer wyposazony jest w vbxe z ktorej to program kozysta, teraz program chce przepchac dane z weroniki, do pamieci vbxe i jak to sie dzieje? blitter vbxe wlazi na pamiec weroniki i sobie kopiuje dane? czy biedny sally sie poci i kopiuje dane bajt po bajcie? niestety to drugie...

mam taki drobna sugestie, zeby produkowac rozszerzenia komplementarne...

przechodze na tumiwisizm

28

> czyli dodatkowy procesor pisze do pamięci, kiedy jest ona niewidoczna dla Antica, po czym staje się widoczna, ale wtedy procesor nie może do niej pisać. Synchronizacja tego pewnie będzie spoczywać na głównym 6502 atarki, który będzie dodatkowego proca haltował i uruchamiał stosownie do potrzeb. Stwierdzenie, kiedy pamięć jest widoczna dla Antica a kiedy nie, spocznie na jego programie? Bo jakoś nie widzę jak to można zrobić sprzętowo. Czyli dodatkowy procek będzie działał od złapanego stanu VCOUNT sygnalizującego początek dolnej ramki do stanu sygnalizującego koniec górnej ramki?

z opisu wynika ze dodatkowy proc nie bedzie sie musial z niczym synchronizowac, nie bedzie musial byc tez haltowany i nie bedzie musial pracowac 'na wygaszeniu pionowym'. po prostu bedzie lecial z maksymalana predkoscia a jak sobie poradzi w jednej ramce z obrobka danych (przelaczana pamiec danych ma inne adresu od pamieci programu dodatkowego proca) to nawet najbardziej wymyslne efekty zawsze beda trzymac 50fpsow.

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

29

W tym momencie ktoś słusznie zwrócił uwagę na to, że po co tym drugim prockiem ma być 6502? Szybkość 6502 jest ograniczona, a na rynku są ogólnodostępne procesory o większej szybkości - jak już tworzyć coś nowego, to po co ograniczać się do 6502, który tylko lekko wspomoże szybkość systemu, a nie zastosować coś wielokrotnie szybszego, co wykona w tym samym czasie np. 10 razy więcej obliczeń/operacji? Jak już coś takiego wdrażać, to niech efektywność będzie na porządnym poziomie.

30

Idee WARPów i dopalaczy na kartach są ortogonalne i mogą sobie nie przeszkadzać, więc nie ma co się kłócić.

@macgyver: No właśnie ale jakie procesory? AVRy itp odpadają, bo to mikrokontrolery, inne nowoczesne wynalazki są mało atarowskie (zainstalować na karcie intela bym się nie odważył). To może jakiś core jakiegoś procesora zmieściłby się do CPLD? na górze pisałem o 65GZ032, ale nie wiadomo w jakim to jest stanie, ale jąder 6502 na opencores.org jest sporo...

31

czoł(gi)em, a co z WARPem:
http://atariarea.krap.pl/forum/viewtopi … 096#p90096
http://atariarea.krap.pl/forum/viewtopi … 118#p90118
http://atariarea.krap.pl/forum/viewtopi … 195#p90195
... i dalsza część rozważań w tamtym wątku ?

<-- Kontakt przez "E-mail" gdyż albowiem moja skrzynka "PW" jest pełna i zaprawdę nie mam czego usunąć.

--== Kup Pan/i dyskietkę http://www.atari.org.pl/forum/viewtopic.php?id=18887 ==--

32

Czemu nie intelowskie? IMHO jak już coś ładować, to niech to da potencjalnym programistom, którzy będą pod to tworzyć sensowne możliwości, choćby zaimplementowane komendy mnożenia i dzielenia.

W wypadku zastępowania 6502 przez 65816 (rozwiązania ala WARP, F7) musimy mieć 99,9% kompatybilności z 6502, aby stare programy mogły działać, natomiast nowy soft będzie wykorzystywał dodatkowe funkcjonalności. W wypadku "dopały cartridgeowej" możemy zastosować praktycznie dowolną architekturę, najlepiej coś, co będzie "ogólnodostępne" i jednocześnie będzie dawać programistom spore możliwości (to w końcu programiści będą tworzyć soft, który będzie wykorzystywał możliwości tego sprzętu).

A jeżeli już wrzucać core, to może np. MC 680x0 ? Zapytajcie koderów od dużego Atari/Amig, to jest świetna architektura dla programistów - 15 rejestrów ogólnego przeznaczenia o szerokości 32-bit, mnożenie, dzielenie... miodność.

33 Ostatnio edytowany przez laoo/ng (2009-03-12 09:57:49)

Nie jestem zwolennikiem wkładania tam armaty, poza tym motorole to rozwlekłe CISCe z dużymi wymaganiami pamięciowymi. Ja bym tu widział RISCa z 16-bitowym słowem rozkazu bo pamięci raczej nie będzie dużo, a program / dane do karta trzeba przecież wgrać z atari.

34

xxl napisał/a:

a jak sobie poradzi w jednej ramce

A skąd będzie wiedział, kiedy "kończy się" ramka? To mu musi 6502 powiedzieć (albo go jakoś zahaltować). Tak czy owak, ponieważ jednoczesny dostęp dwóch procesorów i Antica do tej samej pamięci nie jest możliwy, jakoś to się będzie musiało synchronizować. Nawet żeby wycyklować całość programu zapuszczonego w karcie, trzeba wiedzieć, kiedy jest początek ramki, a skąd ma to wiedzieć procesor, który jest na zewnątrz komputera?

@laoo: no, pewnie że to jest niesprzeczne. Po prostu wydaje mi się, że taka dopałka będzie raczej praktycznie mało użyteczna, tzn. będzie z tego więcej kłopotu niż pożytku. Bo i do czego to? Do gier tylko i to niewielu typów (np. wektorówkę pewnie by mozna na tym zrobić, ale czy skorzystałby z tego jakiś Bomb Jack?), bo dema wymagającego włożenia dodatkowego karta nikt nie dopuści do ogólnego demo-compo, zresztą pewno na zasadzie ortodoksji pod hasłem "to już nie atari" i "dema tylko na fabryczne komputery" :) a zwykłe programy rzadko potrzebują cokolwiek liczyć.

Czyli, jak mówię, byłoby to urządzenie raczej niezbyt uniwersalne (IMHO).

KMK
? HEX$(6670358)

35 Ostatnio edytowany przez jellonek (2009-03-12 10:32:10)

mac: z tym 68k to niezle pojechales po bandzie ;) to ma byc chyba nowoczesne a nie na antykach oparte (chyba ze freescale chcesz tam widziec)
laoo: nie rozumiem o co ci chodzi z tym "AVRy odpadaja bo to mikrokontrolery" - w czym to przeszkadza? (osobiscie rowniez wolalbym 6502, a jeszcze lepiej 65816 na jakims fpga - ale na opencores wcale tak duzo chyba tego nie ma, chyba ze cos sie strasznie przez ostatnie miesiace zmienilo (ztcp pamietam niekompletny t65 tylko tam)).

drac030: no i wyszlo na jaw ze wypowiadasz sie na temat, mimo ze wczesniej nawet nie przeczytales opisu dzialania Zenona.

konop: pin nie ma ani warpa ani f7 - on ma prosty adapter 65816 - drac030 to wie i nie wiem po co miast sprostowac twoja lekka pomylke - brnie dalej...

z poczatkowej koncepcji Zenona zrozumialem ze pamiec ram procka na CARze jest podzielona na 2 czesci. musi tez miec jakis "bootstrap rom". czyli program ktory ma wykonywac pojawia sie w jednej z polowek ramu, do ktorej przechodzi procek z romu, wykonuje sie, po czym wraca do romu sygnalizujac w rejestrze zakonczenie operacji. z p. widzenia atarki w "oknie" zapisywany jest program dla dopalatora, poczatkowe dane, po upewnieniu sie czytajac z rejestru ze poprzednia operacja dopalatora sie zakonczyla (i "biega" on w romie), atarkowy procek przelacza polowki ramu CARta. inna ewentualnosc - program wykonywany przez carta musi znajdowac sie w obu polowkach ramu, by w trakcie przelaczania polowek - moglby byc kontynuowany bez "wracania" do romulusa.

mozna nieco koncepcje zmodyfikowac tak, by cart mial nieco wiecej ramu (np. 128k+2x16k), ale tylko 2 16k banki dostepne do przelaczenia w tej samej przestrzeni adresowej i widoczne na przemian przez atarke i carta. dostarczony program dla carta moglby sie relokowac w obszar dla niego staly i tam sobie biegac bez uzywania romulusa.

drac030: bylo by to urzadzenie i uniwersalne i uzyteczne, ale zadko (nawet bardzo) uzywalne...

juz w wyobrazni slysze mp3 dekodowane na carcie i odtwarzane przez atarke na gtia ;)

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

36

drac030 napisał/a:

@Marek Konopka: pinek nie ma w komputerze ani Warpa ani F7.

A i tak mu nie działa ;)

37 Ostatnio edytowany przez drac030 (2009-03-12 10:39:41)

jellonek napisał/a:

drac030: no i wyszlo na jaw ze wypowiadasz sie na temat, mimo ze wczesniej nawet nie przeczytales opisu dzialania Zenona.

(...) wykonuje sie, po czym wraca do romu sygnalizujac w rejestrze zakonczenie operacji. (...) po upewnieniu sie czytajac z rejestru ze poprzednia operacja dopalatora sie zakonczyla (i "biega" on w romie), atarkowy procek przelacza polowki ramu CARta.

Co oznacza właśnie, że atarkowe 6502 zajmuje się synchronizacją dostępu i o to mi tu chodzi :P A teraz dodaj do tego pamięć ekranu i DL umieszczoną w "oknie" wiedząc, że póki Antic z niej czyta, dodatkowy procesor nie może do niej pisać.

konop: pin nie ma ani warpa ani f7 - on ma prosty adapter 65816 - drac030 to wie i nie wiem po co miast sprostowac twoja lekka pomylke - brnie dalej...

"Brnę", bo padł nonsensowny argument, że Warpy i F7 mają problemy ze stabilnością, i że to Konop na własne oczy widział. To mniej więcej tak, jakby wziąć zepsute 130XE, stwierdzic, że nie działa, po czym uogólnić, że wszystkie 130XE z natury mają to do siebie, że nie działają ...

KMK
? HEX$(6670358)

38 Ostatnio edytowany przez Marek Konopka (2009-03-12 12:07:49)

drac030 napisał/a:

aczej nie mogłeś widzieć w akcji żadnej z tych dopalek ani tym bardziej stwierdzić ich stabilności (bądź niestabilności).

Niech wypowie się zainteresowany, jak było.

drac030 napisał/a:

Co do dalszej części: Ok, czyli dodatkowy procesor pisze do pamięci, kiedy jest ona niewidoczna dla Antica, po czym staje się widoczna, ale wtedy procesor nie może do niej pisać.

Może pisać do tego obszaru pamięci, innego bufora obrazu.

drac030 napisał/a:

Synchronizacja tego pewnie będzie spoczywać na głównym 6502 atarki, który będzie dodatkowego proca haltował i uruchamiał stosownie do potrzeb. Stwierdzenie, kiedy pamięć jest widoczna dla Antica a kiedy nie, spocznie na jego programie?

O tym decydować będzie 6502 w synchronizacji z VBL.

drac030 napisał/a:

Czyli dodatkowy procek będzie działał od złapanego stanu VCOUNT sygnalizującego początek dolnej ramki do stanu sygnalizującego koniec górnej ramki?

Może działać przez prawie całą ramkę, aż do otrzymania sygnału o zmianie bufora ekranu.

Co do halt'owania... Takie samo występuje przy pracy na każdym CPU/buforze pamięci ekranu, aby uniknąć artefaktów wizualnych. Po to stosuje się n-buforowanie, które pozwala na zagospodarowanie sporej części czasu procesora, który byśmy musieli nominalnie przeznaczyć na straty. W przypadku, gdy efekt będzie renderował klatki z częstotiwością wyższą od odświerzania ekranu, nie będzie żadnego problemu. Przy wyższej można skorzystać z n-buforowania. Poza tym, można moc procesora CAR spożytkować na wykonywanie innych czynności niż tylko generacja danych obrazu, także część z tego "straconego" czasu można "odzyskać".

Można oczywiście przerzucać/wyświetlać dane przez kopiowanie. Kosztem obciążenia 6502 i w konsekwencji ryzyka spadku fps'u, możemy skolejkować więcej buforów ekranu w pamięci CAR. Którą metodę wybrać, zależało będzie od charakterystyki czasowej efektu.

Aktualizacja

macgyver napisał/a:

W tym momencie ktoś słusznie zwrócił uwagę na to, że po co tym drugim prockiem ma być 6502?

Chęć zachowania po części "ducha" komputerka. Dochodzi również łatwość pisania programów na dobrze znaną platformę.

macgyver napisał/a:

Szybkość 6502 jest ograniczona

Szybkość każdego procesora jest ograniczona :>.  A na poważnie, w prototypie Zenona jest 6502, ponieważ tak jest mu wygodnie - testowane są najpierw warianty podstawowe, komunikacja/synchronizacja. Jak już wspominaliśmy oboje, nie ma sensu zbyt daleko wybiegać w przyszłość i gdybać, dajmy na to, ile konkretnie mocy będzie można w to włożyć, dopóki pierwsze testy nie pokażą sensowności podejścia na ogólnym poziomie.

Nie wiem jak wygląda sprawa z konkretnymi edycjami układów 6502, ale pamiętam, że ktoś kiedyś wspominał o wyższym taktowaniu tego procesora. Chyba drac cytował korespondencję od osoby, która projektowała wtenczas te procesory i chwaliła się, że można osiągnąć częstotliwości taktowania w okolicach ~10 MHz. Nam na początek tyle nie jest potrzebne. Gdzieś na forum powinien być o tym wątek.

macgyver napisał/a:

, a na rynku są ogólnodostępne procesory o większej szybkości - jak już tworzyć coś nowego, to po co ograniczać się do 6502, który tylko lekko wspomoże szybkość systemu, a nie zastosować coś wielokrotnie szybszego, co wykona w tym samym czasie np. 10 razy więcej obliczeń/operacji?

816 pasuje tutaj jak ulał.

39

Marek Konopka napisał/a:

n-buforowanie

No tak, tylko jakie widzisz zastosowania tego, bo ja, jak już napisałem wyżej, raczej wąskie (grafika wektorowa w gierce, pewnie głównie, oraz efekty w demach niedopuszczonych do konkursu). I co z tego nie może zostać zrobione przez regularne 65C816 z takiego Warpa?

KMK
? HEX$(6670358)

40 Ostatnio edytowany przez Marek Konopka (2009-03-12 12:19:46)

drac030 napisał/a:

No tak, tylko jakie widzisz zastosowania tego, bo ja, jak już napisałem wyżej, raczej wąskie (grafika wektorowa w gierce, pewnie głównie, oraz efekty w demach niedopuszczonych do konkursu).

Jak już kiedyś pisałem dawniej, kiedy o tym dyskutowaliśmy, nie myślałem o innych zastosowaniach. Zenon w swoim dokumencie również na to kładzie nacisk. Z takiego założenia wychodziłem od samego początku. Dzisiaj dochodzę do wniosku, że możliwości są szersze i można sobie pozwolić na tworzenie gier z większą ilością grafiki, sprite'ów, lepszą muzyką. Procesor na CAR można wykorzystać do generacji buforów audio dla POKEY'a (sampli). To wszystko na razie jest oczywiście teorią, ale skoro sobie gdybamy, to warto o takich zastosowaniach wspomnieć.

Rozumiem, że chętniej widziałbyś bardziej ogólne zastosowania, być może jakiś system operacyjny, dodatkową pamięć, coś na kształt Geos'a, ale czy na pewno to nie jest osiągalne w tej formie, w jakiejś dalszej perspektywie czasowej?

drac030 napisał/a:

I co z tego nie może zostać zrobione przez regularne 65C816 z takiego Warpa?

Nic, to po prostu inne podejście. Nie ma sensu już dyskutować o podstawowych różnicach. Dla mnie rozwiązanie z CAR jest bardziej eleganckie i podoba mi się w nim to, że ma szanse większego upowszechnienia się. O projektach F7/Warp tego nie można powiedzieć. Sam cytowałeś liczbę działających egzemplarzy. Dla mnie oczywiste ograniczenia rozwiązania z CAR są do stolerowania. Nawet powiem więcej, podoba mi się to, że istnieją, gdyż stanowią jakiś wyróżnik i tworzą platformę do realizacji nowych, ciekawych pomysłów, wyciśnięcia maksimum z układów "maluszka".

Aktualizacja

jellonek napisał/a:

z poczatkowej koncepcji Zenona zrozumialem ze pamiec ram procka na CARze jest podzielona na 2 czesci. musi tez miec jakis "bootstrap rom".

Przewidziany jest bootstrap w przestrzeni CAR, pakowany z EPROM'u we fragment przestrzeni adresowej CAR, z kodem obsługującym prosty protokół komunikacyjny, umożliwiający przenoszenie danych/kodu do pamięci CAR pod wyspecyfikowane w protokole lokacje. Jedną z komend będzie egzekucja procedury pod wyspecyfikowanym adresem.

jellonek napisał/a:

mozna nieco koncepcje zmodyfikowac tak, by cart mial nieco wiecej ramu (np. 128k+2x16k), ale tylko 2 16k banki dostepne do przelaczenia w tej samej przestrzeni adresowej i widoczne na przemian przez atarke i carta.

Pierwotna idea jest taka - 2 "banki" po 16K naprzemiennie wpinane w przestrzeń adresową (64k) procka na CAR/6502. Gdzie dokładnie w procku na CAR, to już mniej ważne. Reszta ramu klasycznie w przestrzeni procka. Można to oczywiście rozszerzać, rozważyć 816 z adresowaniem 24-bitowym, w razie powodzeń.

41

A może wykorzystać któregoś ARM'a? Niektóre zestawy rozkazów (zależnie od rdzenia) są rażąco podobne do 6502, organizacja pamięci 16 lub 32-bit zależnie od wyboru rdzenia.
Najprzyjemniejszym chyba jednak zastosowaniem byłoby wykorzystanie tego dodatkowego szybkiego procesora do współpracy z vbxe, ze względu na dużą ilość danych do przetwarzania. Ale jak pożenić ram karty z ramem vbxe?

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

42 Ostatnio edytowany przez macgyver (2009-03-12 12:10:49)

jellonek napisał/a:

mac: z tym 68k to niezle pojechales po bandzie ;) to ma byc chyba nowoczesne a nie na antykach oparte (chyba ze freescale chcesz tam widziec)

Przeczytaj o czym wcześniej pisał Laoo, w mojej wypowiedzi padło słowo "core" więc następnym razem przeczytaj coś uważnie kilka razy, zanim rzucisz komentarzem, do kawałka wypowiedzi wyrwanego z kontekstu.

A co "antyczności" 68k jest zdecydowanie bardziej nowoczesną architekturą, niż 6502, więc czemu tu się nie czepiasz? No chyba, że wg. Ciebie firmy Apple, Atari i Commodore zrobiły w swoim czasie krok wstecz przechodząc z procesorów 65xx na rodzinę 68k :P

43

Marek Konopka napisał/a:

Rozumiem, że chętniej widziałbyś bardziej ogólne zastosowania, być może jakiś system operacyjny, dodatkową pamięć, coś na kształt Geos'a, ale czy na pewno to nie jest osiągalne w tej formie, w jakiejś dalszej perspektywie czasowej?

Od tego to mamy VBXE (sorry, ale graficzny desktop musi być ładny, a z 320x192 w dwóch kolorach nic ładnego nie powstanie, bo potrzebne sa co najmniej 3 kolory, żeby to jakoś wyglądało).

Ogólnie miałem okazję poprogramować na atarce, która miała 1 megabajt pamięci w jednym kawałku, ale poza tym wszystko działało tak samo (oprócz tego, że szybciej). I od tamtej pory uważam, że bawienie się w bankowanie RAM-u, nawet jeśli by się miało w nim coś automagicznie pojawiać, to mało sensowna mordęga i komplikowanie prostych spraw.

To tak ogólnie, natomiast co do zastosowania takiego koproca do systemu operacyjnego, to powątpiewam w uzyteczność w ogóle. Normalny OS tego nie potrzebuje, bo i co on liczy. Zrobienie na tym pakietu FP jest problematyczne, jeśli bank 16k ma się podpinać tam, gdzie jest przestrzeń adresowa karta (w BASIC-u oznaczałoby to nieustanne migotanie ekranu, bo BASIC w kółko liczy coś na FP). Systemowi graficznemu przydałby się szybki procesor robiący za blitter, ale co z takiego blittera, który może skopiować blok pamięci obrazu w inne miejsce tylko wtedy, kiedy Antic/GTIA nic nie wyświetlają (poza tym potencjalna wydajność raczej blednie w porównaniu z blitterem VBXE).

Tak więc nie bardzo widzę, do czego miałoby mi się to osobiście przydać, a poza tym nasuwa się ogólniejsza obserwacja, że rozwój komputerów poszedł w tym kierunku, w jakim poszedł (mam tu głównie na myśli, że tam, gdzie jest więcej pamięci, jest ona dostępna w jednym kawałku) pewnie dlatego, że jest to rozwiązanie najlepsze i nie ma co wynajdywać prochu, który się na dodatek kiepsko pali...

KMK
? HEX$(6670358)

44 Ostatnio edytowany przez Marek Konopka (2009-03-12 13:03:07)

drac030 napisał/a:

Od tego to mamy VBXE (sorry, ale graficzny desktop musi być ładny, a z 320x192 w dwóch kolorach nic ładnego nie powstanie, bo potrzebne sa co najmniej 3 kolory, żeby to jakoś wyglądało).

Mamy sprite'y. Z tego co widziałem ostatnio na zrzutach z Geos'a, również tam są one zastosowane - http://www.guidebookgallery.org/screenshots/geosc64 . Tutaj widzę raczej inny problem, a mianowicie ograniczenie ilości pamięci na okno (16kB). Ewentualnie byłoby to na styk, chyba, że darujemy sobie buforowanie pamięci ekranu.

drac030 napisał/a:

I od tamtej pory uważam, że bawienie się w bankowanie RAM-u, nawet jeśli by się miało w nim coś automagicznie pojawiać, to mało sensowna mordęga i komplikowanie prostych spraw.

Można rozważyć liniową przestrzeń adresową procesora 816 przy 24-bitowej adresacji. Oczywiście należałoby uwzględnić "okno" komunikacyjne. Można podzielić pamięć sprytnie, aby ta powyżej okna, przy jego odpowiednio niskiej lokalizacji w przestrzeni procesora CAR, była zmaksymalizowana dla programów/systemu i liniowa. Nawet gdyby istniało okno, dzielące obszar pamięci operacyjnej na rozdzielne części, to nie jest to jakiś szczególny problem. Normą w obecnych systemach jest fragmentacja pamięci, a alokatory sobie z tym radzić muszą.

Oczywiście, że jest z tym trochę zabawy, ale czy specyfiką old-schoolowych komputerków nie jest właśnie ta konieczność zmagania się z takimi problemami?

drac030 napisał/a:

w BASIC-u oznaczałoby to nieustanne migotanie ekranu, bo BASIC w kółko liczy coś na FP).

Basic w rozważaniach świadomie skreślam. Nie ma to dla mnie praktycznego zastosowania. Dla zainteresowanych można oczywiście stworzyć własną implementację Basic'a i z tego co widziałem na Twojej stronie, coś takiego tworzysz. Oczywiście kompatybilność wsteczna z modelem pamięci OS'u atarowskiego nie ma w tym wariancie miejsca.

Być może omawiany projekt jest okazją, aby pewne rozwiązania przy jego implementacji powiązać/zintegrować.

drac030 napisał/a:

Systemowi graficznemu przydałby się szybki procesor robiący za blitter, ale co z takiego blittera, który może skopiować blok pamięci obrazu w inne miejsce tylko wtedy, kiedy Antic/GTIA nic nie wyświetlają (poza tym potencjalna wydajność raczej blednie w porównaniu z blitterem VBXE).

W tym układzie rolę blitter'a musiałby przejąć sam procesor na CAR, przy założeniu jego odpowiednio wysokiej mocy. Widziałem jak TOS odświerza okna. Jestem przekonany, że można zrobić to lepiej.

drac030 napisał/a:

mam tu głównie na myśli, że tam, gdzie jest więcej pamięci, jest ona dostępna w jednym kawałku

Rozwiązanie z przełączaniem banków dotyczy wyłącznie komunikacji/transferu danych pomiędzy 6502, a procesorem CAR. Sam model pamięci procesora na CAR może być w dużym stopniu od tego niezależny.

45 Ostatnio edytowany przez drac030 (2009-03-12 13:55:19)

Marek Konopka napisał/a:

Mamy sprite'y. Z tego co widziałem ostatnio na zrzutach z Geos'a, również tam są one zastosowane - http://www.guidebookgallery.org/screenshots/geosc64

To trochę mało elastyczne, poza tym na C-64 masz dodatkowo atrybuty, co trochę pomaga. W ST desktop zadowala się dwoma kolorami, ale to w hiresie (640x400), gdzie za trzeci kolor robi siateczka białych i czarnych punktów i wyglada to bardzo dobrze. W 320x200 w dwóch kolorach (na Falconie da się włączyć taki tryb) dokładnie to samo wygląda jak kupa.

Tutaj widzę raczej inny problem, a mianowicie ograniczenie ilości pamięci na okno (16kB). Ewentualnie byłoby to na styk, chyba, że darujemy sobie buforowanie pamięci ekranu.

Buforowanie nie jest konieczne, z okien modalnych można zrezygnować zupełnie, a zamknięcie menu może wysyłać komunikat "redraw" tak samo, jak zamknięcie okna. To są szczegóły.

drac030 napisał/a:

Oczywiście, że jest z tym trochę zabawy, ale czy specyfiką old-schoolowych komputerków nie jest właśnie ta konieczność zmagania się z takimi problemami?

Jest, ale po co sobie utrudniać tam gdzie można sobie nie utrudniać.

drac030 napisał/a:

Oczywiście kompatybilność wsteczna z modelem pamięci OS'u atarowskiego nie ma w tym wariancie miejsca.

To kolejna wg mnie zaleta takiego Warpa: model pamięci (konwencjonalnej) pozostaje taki, jak był.

drac030 napisał/a:

Jestem przekonany, że można zrobić to lepiej.

Och, naturalnie. Tzn. samej "ideologii" odświeżania raczej nie można się czepiać, jest to zrobione prosto, dobrze i skutecznie, ale to na poziomie AES-u. Problemem jest niewielka szybkość działania VDI, ale ono nie jest optymalne, istnieją alternatywne VDI działające kilkakrotnie szybciej.

drac030 napisał/a:

Sam model pamięci procesora na CAR może być w dużym stopniu od tego niezależny.

Tak i tam by była pamięć w jednym kawałku, ale znowu tak jakby "na zewnątrz", bez dostępu do rejestrów I/O, OS-u itd., nie da się tam załadowac rezydenta współpracującego z normalny OS-em i ulepszającego jakoś jego działanie, a przy tym nie popadającego w konflikt z istniejącymi programami (bo model pamięci się zmienia). Znowu, na Warpie nie ma tych wszystkich problemów, dlatego sądzę, że tamto jest dużo bardziej atrakcyjne. No ale co tam komu, mnie osobiście taki kart, jeśli powstanie, przeszkadzał nie będzie.

PS. Te screenshoty z GEOS-a nie wyglądają źle, ale jednak wolałbym obejrzeć to na żywym egzemplarzu, tutaj kolory sa cokolwiek rozmyte, co wydatnie polepsza jakość "trzeciego koloru". Na moim Neptunie taka siateczka wygląda jak siateczka punktów, a nie jak kolor pośredni między czarnym a białym. Tak samo było na Falconie (na monitorze VGA).

KMK
? HEX$(6670358)

46

> juz w wyobrazni slysze mp3 dekodowane na carcie

avr robi to w locie na jakims niskim zegarku, ile mhz potrzebuje na to 65816 lub 68xxx ? :-) acha... z tylu kompa w gniezdzie ?karta? jest tez audio in wiec mozna naprawde poszalec z dzwiekiem :-)

> A może wykorzystać któregoś ARM'a?

nie znam konkretnych rozwiazan mozliwe ze trzeba by sie bylo temu przyjrzec, ale za avr zaplacisz 5zl wiec mozna go wsadzic do kazdego karta z gra...

> Tak więc nie bardzo widzę, do czego miałoby mi się to osobiście przydać, a poza tym nasuwa się ogólniejsza obserwacja, że rozwój komputerów poszedł w tym kierunku, w jakim poszedł (mam tu głównie na myśli, że tam, gdzie jest więcej pamięci, jest ona dostępna w jednym kawałku) pewnie dlatego, że jest to rozwiązanie najlepsze i nie ma co wynajdywać prochu, który się na dodatek kiepsko pali...

nie samym chlebem.... a jak sie ma sprawa z automatami i konsolami? 3-4 procki dzialjace niezaleznie to norma :D i w ta strone trzeba sie poruszac skoro architektura a8 na to pozwala. przykladow takich rozwiazan mozna wymienic kilka jak ktos jest zainteresowany.

ogolnie, jesli to bedzie procek b.szybki,nowoczesny i tani zeby na karta z gra mozna go bylo upchnac to fajnie - jestem za, tylko jak przelamac strach ludzi przed nowoscia? wszystkie 65816 i 68xxx wypadaja strasznie blado w porownaniu z takim avr... a narzedzi na tego ostatniego jest cala masaaa.

> W tym układzie rolę blitter'a musiałby przejąć sam procesor na CAR, przy założeniu jego odpowiednio wysokiej mocy

65816 nie poradzilby sobie z emulacja procesora wektorowego np z asteroida :-) ... jesli myslicie o 65xxx to lepiej nie rozbudzac nadzei...

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

47 Ostatnio edytowany przez laoo/ng (2009-03-12 15:42:17)

Ale czy AVR, który może zaadresować external RAM na pewno kosztuje 5 zł? (Bo ja nie wiem). Jak patrze się na specyfikacje atmegów, to tylko jeden super wypaśny to potrafił, a reszta internal SRAMu ma przeciętnie jakieś 4 kB, a to nas nie urządza...

EDIT:
Sprawdziłem. Ten który to potrafi (ATMEGA8515) kosztuje 12 zł. Jakby się dało, to byłoby ciekawie, bo powera ma (upto 16 MIPS).

48 Ostatnio edytowany przez Marek Konopka (2009-03-12 16:13:29)

drac030 napisał/a:

To trochę mało elastyczne, poza tym na C-64 masz dodatkowo atrybuty, co trochę pomaga. W ST desktop zadowala się dwoma kolorami, ale to w hiresie (640x400), gdzie za trzeci kolor robi siateczka białych i czarnych punktów i wyglada to bardzo dobrze.

Trzeci (czwarty) kolor do rozróżnienia obszarów desktopu, okien, ikon byłby przydatny, podobnie jak na tych zrzutach z Geos'a.

drac030 napisał/a:

To kolejna wg mnie zaleta takiego Warpa: model pamięci (konwencjonalnej) pozostaje taki, jak był.

Oczywiście, w domyśle chodziłoby o stworzenie nowego systemu operacyjnego, który współpracowałbym z CAR'tem, gdzie z kolei umieszczone byłby specyficzne funkcje API. Kompatybilość wsteczna z istniejącymi programami byłaby iluzoryczna. CART spełniałby tutaj rolę koprocesora.

Inny przykład, to zmodyfikowanie BASIC'a ładowanego do pamięci 6502, aby zamiast wywoływania czasochłonnych wersji procedur zmiennoprzecinkowych, zlecał to zadanie wyselekcjonowanemu podzbiorowi funkcji API na CART'cie, po uprzedniej detekcji CART'a. Sama ich implementacja mogłaby być identyczna z tymi już istniejącymi. Zysk z tego konkretnego zastosowania byłby wprost proporcjonalny do nadwyżki mocy zewn. CPU w stosunku do 6502 na maluszku, czyli taki nowszy TurboBasic XL. Inne zastosowanie, to szybsze odrysowywanie grafiki, edytory tekstu, graficzne, muzyczne. Do sprzętu musiałaby odwoływać się bezpośrednio część systemu zlokalizowana po stronie komputera, więc generalnie byłaby to jakaś hybryda.

xxl napisał/a:

65816 nie poradzilby sobie z emulacja procesora wektorowego np z asteroida :-) ... jesli myslicie o 65xxx to lepiej nie rozbudzac nadzei...

Nie rozważaliśmy żadnych emulacji. W domyśle chodzi o zbiór funkcji API wrzucanych do szybkiej pamięci procesora na CARTcie. To jaki to będzie zbiór i z jaką skutecznością zaimplementowany, to już osobna sprawa i zależałoby od wielu czynników.

49

Drugi procesor 6502, (6502K). Nie, wyraźnie zaznaczyłem że w prototypie jest on przewidziany bo ma ku temu wszystkie zalety

Drugi procesor (6502K) jest CAŁKOWICIE podporządkowany procesorowi 6502
Drugi procesor odbiera flagę że doszło do przełączenia pamięci i zaczyna przetwarzać otrzymane dane, jak zakończy informuje flagą że procesor 6502 może dokonać przełączenia, ale to 6502 przełącza a nie 6502K. W czasie gdy jeszcze nie dochodzi do przełączenia a drugi procesor nie ma nic do roboty w najprostszym przypadku wpada w pętlę nic nie robiącą, kontroluje tylko stan flagi czy może wznowić pracę. Pamięć na karcie może być dowolnej wielkości, ale przełącza się tylko blok 8 lub 16kB.
Kompatybilność z innymi rozszerzeniami. Nie mam zielonego pojęcia. Zaproponowane tu rozwiązanie jest kompatybilne z ogólną ideą Atari, i uważam że trzyma się standardu przewidzianego dla kartridży przez twórców tego kompa.
Sparta ma swoje gniazdo przelotowe, więc myślę że Weronika włożona w to gniazdo będzie współpracować o ile nie zajdzie kolizja z adresami rejestrów sprzętowych na stronie $D5 i pamięcią w obszarze $8000-$BFFF
A kwestię ewentualnego oprogramowania i zastosowania pozostawia się zainteresowanym tym projektem.
Wymyśliłem pewną koncepcję, spróbuję to zlutować, po swojemu oprogramować na poziomie prototypu i testów, Konop zaoferował pomoc, zresztą nie tylko on.
Jeżeli ktoś szuka szybkości, efektów specjalnych, i mnóstwa pamięci + niewyobrażalna ilość kolorów i efektów specjalnych od tego jest PC ze swoim oprogramowaniem i symulacją Atari.
Dla mnie to hobby, i w jednym z Seriousów pisałem że robię to co mnie interesuje i ciekawi, a co zrobią z tym inni nie interesuje mnie wcale.
Czy będzie to standard, czy nie, albo kupa złomu....no cóż, to nie ma być coś przebijającego wszystko co do tej pory wymyślono, to po prostu projekt WERONICA. Gorszy, lepszy, nie wiem.
Ktoś tu napisał.... to inne podejście do znanych koncepcji i rozwiązań.
Dużo w tym prawdy.

50

xxl, laoo: zaden avr - chocby obslugiwal stado zewnetrznych pamieci sie nie nada, a to z tego powodu, ze nie jest w stanie wykonac chocby jednej instrukcji z ramu - taka juz natura rozdzielonych magistrali danych i programu...

przechodze na tumiwisizm