176

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Dopisuję się do ostatniej wersji...

Dosyć oczywista optymalizacja - zamiana rejestrów X z Y oraz zmiana adresacji z absolutnej na pośrednią postindeksowaną na stronie zerowej:

loop  jsr get
        beq stop
        lsr @
        tax
q0    jsr get
q1    sta $dead
        inc q1+1
        bne *+5
        inc q1+2

        dex
_bpl  bmi loop
        bcs q0
        bcc q1

get   iny
       bne *+4
       inc src+1
       lda (src),y
stop rts

Zysk 2 bajtów przy wariancie na stronie zerowej oraz 1 przy poza.

To nie było moje ostatnie słowo...

Jest jeszcze bardziej pociśnięta wersja, ale ostrzegam, że jest to już HARDCORE:

loop    brk
         nop
        tax
        beq exit
        lsr @
        tax
q0     brk
        nop
q1     sta $dead
        inc q1+1
        bne *+5
        inc q1+2

        dex
_bpl   bmi loop
        bcs q0
        bcc q1 !

get    iny
        bne *+4
        inc adr+1
        lda (src),y
    rti

Trzeba się tylko "upewnić", że pod $fffe są odpowiednie wartości oraz zezwolić na przerwania niemaskowalne ($d20e ???), ale to raczej nie problem. Zysk jest 1 bajtowy. Exit oznacza adres powrotu, a procedure wywołujemy przez jmp loop.

35 bajtów poza stroną zerową, 33 na zerowej.

177

(36 odpowiedzi, napisanych Programowanie - 8 bit)

piszac aplikacje nalezaloby zrezygnowac ze wszystkich rozkazow odwolujacych sie do stosu i strony zerowej, przerwania wylaczone koniecznie

Co do stosu - zgoda, co do strony zerowej - niekoniecznie. Można teoretycznie udostępnić wątkom pewną przestrzeń strony zerowej bez przerzucania jej, albo też większą z przerzucaniem. Przerwania w praktyce musiałby być rzeczywiście wyłączone dla wątku.

Istnieje możliwość podzielenia stosu na części - bez konieczności buforowania go - mam tu na myśli zarządzanie wskaźnikiem stosu (rozkazy TXS, TSX). Ma to sen o tyle, że programy raczej nie korzystają zbyt intensywnie z zagnieżdżeń. Dla paru wykonywanych programów ma to sens, a najlepszym rozwiązaniem jest hybrydowe, czyli do momentu gdy pula stosu $100 bajtów wystarcza można na nim ciągnąć parę stosów dla zadań, a po przekroczeniu tego zakresu zarządzać poprzez buforowanie. Wydaje się to być optymalnym rozwiązaniem.

wlasciwie ze strony zerowej moglibysmy zrezygnowac

Problem polega na tym, że przynajmniej na 6502 rozkazy w trybie pośrednim indeksowanym są dosyć powszechnie używane i funkcjonalne, a zatem rezygnacja z tego trybu byłaby moim zdaniem b. dużym ograniczeniem.

Po zastanowieniu doszedłem też do wniosku, że emulacja kodu 6502 nie byłaby aż tak wolna, jak pierwotnie to wcześniej określiłem. Można napisać szybki kod, odrzucający wstępnie przypadek przekroczenia zakresu i wogóle operować na offsecie strony, a nie pełnym słowie.

Istnieje też inna propozycja założeń - bez ochrony wielu elementów, ale puszczona na max. prędkości. Może będzie okazja później o tym coś napisać, jeśli będzie takie zainteresowanie.

178

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Propozycja...

Założenia:

Nierozbudowany "maluch" klasy 65XE, ew. 130XE.

1) Ochrona pamięci
2) Ochrona przed przepełnieniem stosu
3) Ochrona przed wykonaniem nieprawidłowego op-code'u
4) Ochrona/zarządzanie zasobami systemowym na podstawowym poziomie (całkowita blokada)
5) Na pocz. prosta wielozadaniowość, bez żadnych priorytetów.

Na początek można spróbować napisać proste, małe API do GUI (okna z paroma typowymi kontrolkami jak EditBox, ComboBox, Checkbox) oraz do uruchamiania aplikacji konsolowych.

W takim środowisku graficznym (zrealizowanym w trybie tekstowym),  możnaby uruchamiać proste programiki, jak manager plików, kalkulator, prosty edytor tekstowy.

[ Dodano: Wto Maj 10, 2005 3:22 pm ]
Policzyłem wstępnie liczbę cykli na wykonanie rozkazów z adresowaniem absolutnym z ochroną pamięci i wyszło średnio spowolnienie 8:1. Inne rozkazy, nie wymagające adresowania pamięci wykonywane są znacznie szybciej. Otwarcie trzeba powiedzieć, że rozkazy z adresowaniem pamięci występują raczej często, więc myślę, że będzie można mówić o spowolnieniu rzędu 6:1.

179

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Do tego nie było potrzebne zadawanie pytania, które nic nie wnosi do Pańskiej wiedzy

Do mojej nie. Ale miałem nadzieję, że wniesie coś do twojej.

O mnie prosze się nie martwić.

Jeżeli Pan nie ma ochoty na dyskusję merytoryczną ze mną z dowolnych powodów - niech Pan tego tutaj nie robi.

Dla jasności: wyrażałem swoje uwagi, a motywacja ich wprowadzania przeze mnie jest moją indywidualną sprawą, o ile nie narusza ogólnych zasad panujących na forum. Nie sądzę, abym je naruszył.

jeśli do dyskusji o całkach będziesz się na trzeciego wtrącał co 5 minut z mantrą: "ale proszę pamiętać, że dwa razy dwa to cztery", to nie możesz się spodziewać poważnego potraktowania.

Na początek wystarczy brak tonu moralizatorskiego i osobistych wycieczek.

Rozumiem z tego, że wydajność emulatora na poziomie 5% (a raczej mniej) mocy oryginalnego procesora jest kwestią, którą uznajesz za nieistotną. Bardzo ciekawe podejście, ale raczej mało realistyczne.

Uważam kwestię wydajności za istotną, a samo zadanie jako sztukę dla sztuki. Moim zdaniem większym wyzwaniem jest zrobić to w dziedzinie takiej jaką dysponujemy, czyli standardowe Atari z procesorem 6502, aniżeli iść na łatwiznę. Równie dobrze można sobie pisać system operacyjny z obsługą wielowątkowości na PC'ta, tyle że nie o to chyba chodzi. Po prostu opieram się na innych założeniach.

180

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Z całym szacunkien dla Pańskiej osoby, ale odnoszę wrażenie, że dyskusja zbacza z tematu.

Nie. Chciałem się tylko dokładnie przekonać, czy masz coś wartościowego do powiedzenia na ten temat.

Do tego nie było potrzebne zadawanie pytania, które nic nie wnosi do Pańskiej wiedzy, a prywatnie, to może Pan do mnie wysłać mail'a w tej sprawie, jeśli ma Pan taką ochotę.

Bo widzisz, ktokolwiek zabiera się do budowy stołu, świetnie wie, i nie będzie o tym toczył dysput, ze stół, zeby był stabilny, potrzebuje czterech punktów podparcia co najmniej.

Myli się Pan - wystarczą trzy. :>

Zadkładając, że nie mam pojęcia o "budowie stołów" - jaki jest sens mówienia o tym tutaj? Ja uważam, że żaden praktyczny... Jeżeli Pan nie ma ochoty na dyskusję merytoryczną ze mną z dowolnych powodów - niech Pan tego tutaj nie robi.

TeBe, który rzucił pomysł implementacji multitaskingu, jest koderem, i jak wszyscy koderzy tutaj, świetnie wie, jak działa BRK, że jest to przerwanie IRQ i gdzie ma wektor.

Odpowiadałem na Pańskie pytanie. Sądzę, że to było stosowne w tym miejscu, a Pan mi odpowiedział, że to banał... :>

Dla jasności: wyrażałem swoje uwagi, a motywacja ich wprowadzania przeze mnie jest moją indywidualną sprawą, o ile nie narusza ogólnych zasad panujących na forum. Nie sądzę, abym je naruszył.

Tak samo jak na warstwie sprzętowej, tylko zasymulowane programowo.

Widzę, że jesteś bardzo przywiązany do koncepcji dosłownie pojmowanej maszyny wirtualnej, to znaczy do emulowania 6502 na 6502. Pozwól mi niniejszym wyrazić wątpliwość, czy zdajesz sobie do końca sprawę ze wszystkich konsekwencji wdrożenia takiego czegoś na Atari.

Nie użyłbym takiego sformułowania - przywiązany. Faktem jest, że uważam to za rozwiązanie warte rozważenia. Przynajmniej można o tym podyskutować...

Nie wiem czy zdaję sobie sprawę ze wszystkich konsekwencji, ale z tych które uznaję za istotne - tak.

181

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Na 6502 to się w ogóle nie da, bo nie zaimplementujesz ochrony pamięci.

Nie prawda - jest to możliwe do realizacji.

Co mianowicie? Ochrona pamięci?

Oczywiście. Nie ma żadnych problemów aby na drodze programowej to wykonać.

Nie można puścić na żywioł przerwań. Jeżeli dowolne zadanie miałoby możliwość całkowitej kontroli nad przerwaniami, oznaczałoby to skuteczną destabilizację systemu.

A to z kolei jest zupełny banał. Widziałeś kiedyś porządny system wielozadaniowy, gdzie przerwania są "puszczone na żywioł"?

Z całym szacunkien dla Pańskiej osoby, ale odnoszę wrażenie, że dyskusja zbacza z tematu. Proszę mnie poprawić, ale wydaje mi się, że dyskusja na temat tego czy ja widziałem coś czy nie, ma się nijak do merytoryczności tego wątku, dlatego proszę Pana o całkowite wyeliminowanie elementów osobistych w tym wątku.

PMMU sprzętowe mnie nie interesuje, tak jak napisałem na początku mojej wypowiedzi. Software'owe jest możliwe do realizacji.

Bardzo mnie to ciekawi; może napisz dokładniej, jak to miałoby działać.

Tak samo jak na warstwie sprzętowej, tylko zasymulowane programowo.

182

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Myślałem o implementacji tego na zwykłym 6502...

Na 6502 to się w ogóle nie da, bo nie zaimplementujesz ochrony pamięci.

Nie prawda - jest to możliwe do realizacji.

Teoretycznie gdyby zaprojektować coś w stylu bajt-kodu na odpowiednim poziomie integracji z wystarczająco szerokim API systemowym, całość miałaby sens, tyle, że to API musiałoby być naprawdę wyczerpujące, obszerne, zoptymalizowane pod kątem prędkości wykonywania.

Wizja apokaliptyczna. Ale jednak trochę przesadzona. "Wyczerpujące API" sprowadza się do interfejsu pozwalającego na komunikację ze sprzętem poprzez sterowniki poszczególnych urządzeń. Sterowników może być wiele, ale ich rodzaje są zasadniczo dwa (znakowe i blokowe), a co za tym idzie, wszystkie urządzenia obsługuje się tak samo. Tak więc nie jest to aż tak totalitarne, jak to przedstawiasz.

Wybacz, ale nie wiem co jest w tym apokaliptycznego i przesadzonego.

Co do BRK i przerwań, to widzę to po prostu jako problem sam w sobie.

A mógłbyś jakoś detalicznie (i konkretnie przede wszystkim) objaśnić, na czym ten sam w sobie problem polega?

Nie można puścić na żywioł przerwań. Jeżeli dowolne zadanie miałoby możliwość całkowitej kontroli nad przerwaniami, oznaczałoby to skuteczną destabilizację systemu. Jeżeli n wątków odpali sobie przerwania o dużej częstotliwości wywołań, w dodatku nie kontrolowanej długości wykonywania, to jest to koniec. Osobną sprawą jest to, że nie powinno się zezwalać w ogóle na bezpośredni dostęp do obsługi przerwań, tylko za pomocą systemowego API, które pośredniczyłoby w ten sposób, aby nie dopuścić do destabilizacji.

Istnieje wiele powodów, które mogłyby spowodować destabilizację całego systemu podczas wykonywania dowolnego zadania (zawierającego błąd, ale niekoniecznie)

Poczytaj sobie to, co pisałem wyżej o PMMU.

PMMU sprzętowe mnie nie interesuje, tak jak napisałem na początku mojej wypowiedzi. Software'owe jest możliwe do realizacji.

183

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Myślałem o implementacji tego na zwykłym 6502...

Co do API, to owszem, może i jest jakaś baza, ale z pewnością nie pełna. Dostęp do pełnego ekranu w trybie ekskluzywnym należałoby dopisać, pewnie na podobnej zasadzie wiele innych elementów związanych ze sprzętem, jak dźwięk, klawiatura. Teoretycznie gdyby zaprojektować coś w stylu bajt-kodu na odpowiednim poziomie integracji z wystarczająco szerokim API systemowym, całość miałaby sens, tyle, że to API musiałoby być naprawdę wyczerpujące, obszerne, zoptymalizowane pod kątem prędkości wykonywania. To raczej nie wchodzi w rachubę...

Co do BRK i przerwań, to widzę to po prostu jako problem sam w sobie. Uważam, że puszczenie wątku na żywioł nie ma sensu, także z tego powyższego powodu. Istnieje wiele powodów, które mogłyby spowodować destabilizację całego systemu podczas wykonywania dowolnego zadania (zawierającego błąd, ale niekoniecznie), dlatego zastanawiam się, czy wogóle to ma sens w takiej formie jak jest proponowane.

184

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Pamiętajcie, że rozkaz BRK powoduje wywołanie przerwania spod adresu przechowywanego pod $fffe, które w praktyce należałoby filtrować.

Nie bardzo pojmuję, gdzie w tym widzisz problem.

Trzeba zarządzać tym wektorem przy przełączaniu zadań. Istnieje konieczność ogólnego zaprojektowania obsługi przerwań w systemie wielozadaniowym - najlepiej przez zablokowanie ich bezpośredniego zarządzania przez zadanie. To samo dot. wielu rej. sprzętowych, do których dostęp musiałby być pośredni, poprzez specjalnie zaprojektowane API.

185

(36 odpowiedzi, napisanych Programowanie - 8 bit)

Pamiętajcie, że rozkaz BRK powoduje wywołanie przerwania spod adresu przechowywanego pod $fffe, które w praktyce należałoby filtrować. Obawiam się, że wszelkie odwołania do rejestrów sprzętowych, w szczególności te związanie z przerwaniami nmi oraz irq stanowią poważny problem.

186

(36 odpowiedzi, napisanych Programowanie - 8 bit)

To co proponujesz, to tylko namiastka wielozadaniowości. Tak naprawdę należałoby napisać maszynę wirtualną wykonującą rozkazy 6502 na 6502 - emulator. Osobnym problemem są przerwania, rozkaz BRK. W podanym przez Ciebie przykładzie można sobie pozwolić na optymalizację polegającą na podzieleniu stosu na dwie pule po 128 bajtów, eliminując w ten sposób konieczność ich przepisywania i zmniejszając obciążenie z tym związane.

[ Dodano: Sob Maj 07, 2005 4:31 pm ]
Dodatkowy problem to zarządzanie zasobami, takimi jak ekran, urządzenia, krótko mówiąc masa czasu koniecznego na porządną realizację tego zadania. Bynajmniej nie jest ono trywialne.

187

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

You say, that there is sufficient to put #3 to $d20f before every storing to all registers $d200-$d208 ?

Yes.

and how long pause can be between #3->$d20f and storing to all registers?

SubPlayInstrument
    lda    #3
    sta    $d20f
   
    ldy    SampleNumTmp
    lda    Notes+0
    clc
    adc    (InstrCh0Adr),y
    tax
    lda    FreqTbls+FRQ_TBL_INDEX,x
    sta    AUDF1

    lda    (InstrCh1Adr),y
;    lda    #$03
    ora    #DISTORTION
    sta    AUDC1
   
    inc    SampleNumTmp
    rts

Will send also an email.

188

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

.. ale ja mam dokładnie odwrotne doświadczenia...

Ja właśnie zapisuję zawsze #3 do $d20f przed każdym zapisem do rejestrów i takowych dystorsji nie mam. Gdy przestaję resetować liczniki, pojawiają się dystorsje.

189

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

Sądzę, że miałem identyczny problem. Wpisanie #3 do $d20f rozwiązało moje problemy. Najlepiej jest to robić tuż przed odświerzeniem rejestrów dźwiękowych $d2xx (0-7) $d21x (0-7). Po tym zabiegu wszystko brzmi zawsze tak samo, tzn. takie jest moje odczucie.

Swego czasu miałem dylemat, czemu MPT odtwarzało czyściej dźwięki, aniżeli CMC oraz Delta.

Poza tym polecam lekturę "DeRe Atari", czy coś w tym stylu. Tam jest opisane dokładniej jak działa POKEY, z tego co pamiętam.

190

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

Pierwsze primo to nie problem, ale drugie owszem, już jest.

191

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

Czy ja dobrze się domyślam i dzięki wyprowadzeniu szyny adresowej oraz danych na wyjście cartridge'a można pruć po pamięci Xe?

192

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

Cartridge można zamówić przez sieć. Nie trzeba wysyłać sprzętu. Prawdopodobieństwo posiadania zorientowanego elektronika w otoczeniu jest małe.

Za to masz gorsze rozszerzenie. Coś za coś.

Kwestia punktu widzenia/definicji rozszerzenia. Oba rozwiązania mają swoje zalety i wady, o których już tu pisano.

hodzi o latwsc monazu rozszerzenia w postaci carta i nie zmienianie autentycznej budowy komputera. 100% Atari w Atari :) Jak pisalem: cart (lub inne porty) to chyba jedyne _naturalne_ rozszerzenie mozliwosci Atari jakie przewidzieli tworcy...

Jasne, łatwość montażu to duża zaleta, wpinasz i po krzyku. Pod warunkiem, że rzecz do wpięcia masz jedną, ale załóżmy. Jednak za tę cenę - i za cenę zachowania stu procent Atari w Atari - taka dopałka będzie miała dużo mniej możliwości, przez co nie jest aż tak atrakcyjna.

Czy dużo mniej? Należałoby to zweryfikować statystycznie. Na poziomie ogólnym oba rozwiązania mogą stanowić b. duży przyrost wydajności, co w kontekście stosunkowo niskiej wydajności natywnego 6502 stanowi ich zaletę.

Ostatecznie, transfer nawet przez najszybszy port na 1,77 MHz, to nie to samo, co bezpośrednie adresowanie na 14 MHz.

To prawda, ale może się okazać wystarczające i nie stanowić krytycznego czynnika sprowadzającego całe rozwiązanie do niepraktycznego.

193

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

Nie do końca rozumiem argument, że instalacja wewnętrzna stanowi problem. Jeśli ogranicza się to do wlutowania gniazda pod CPU i podlutowania kilku kabli w określone miejsca płyty ... jeśli się chce - to można - lub zawsze można z tym iść do znajomego "elektronika" :D

Cartridge można zamówić przez sieć. Nie trzeba wysyłać sprzętu. Prawdopodobieństwo posiadania zorientowanego elektronika w otoczeniu jest małe.

194

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

Poza tym w wypadku dwóch procesorów trzeba tworzyć jakis dodatkowy system umożliwiający wspópracę obydwu procesorów - może łatwiejsze jest to sprzętowo w wykonaniu, ale za to programowo staje się problematyczne - owszem,  da się coś z tym zrobić, ale po cholerę utrudniać sobie życie ?

Myślę, że słowo system, jest tutaj trochę na wyrost.

Wydaje mi się że robienie złożonych układów do synchronizacji o dużej wydajności nie ma sensu. Z moich teoretycznych oszacowań wynika, że prędkość transferu na poziomie porównywalnym z przepisywaniem pamięci w 6502 (9 cykli/bajt) byłaby wystarczająca.

195

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

Na zakonczenie: co wyscie sie tak uparli na ten 65816? Ja rozumiem ze asembler i podobienstwo ale przeciez nauczyc sie innego asemblera nie jest trudno (ja znam ze 3 na mikrokontrolery choc na 6502 wciaz slabo).

Ja osobiście się nie upieram. Uważam, że 65816 wydaje się być rozsądnym kontynuatorem 6502. Nie ma sensu uczyć się nowego, kompletnie odmiennego assembler'a, kiedy ten z 65816 stanowi ~99% zasad pisania programów/składni 6502. Jest to wyważona ewolucja, moim zdaniem.

Osobiście widzę niepodważalny argument na korzyść rozwiązania Pasia, a mianowicie możliwość pracy ze zwiększoną wydajnością dla starych programów. Może się jednak w praktyce okazać, że wcale nie będzie to zaleta, a wada, bowiem wielu programistów, jak się domyślam, może nieprawidłowo dokonywać aktualizacji parametrów ruchu, tzn. w funkcji ilości wyświetlanych klatek, zamiast upłyniętego czasu.

Moze tak, jako praktycy podalibyscie lepiej jakie funkcje (obliczenia matematyczne) mialby byc przez ten koprocesor na poczatek realizowane?

Jeżeli to byłby procesor (typu 65816), to moim zdaniem nie ma sensu się generalnie ograniczać do jakiegoś konkretnego, wąskiego zastosowania. Mogę jednak podać konkretny przykład, jaki mi się nasuwa, a mianowicie mnożenie 8bit * 8bit (128 KB) oraz odwrotność 65536'ciu wartości (128 Kb, lub więcej, w zal. od precyzji). Z pewnością można znaleźć wiele innych zastosowań.

196

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

Osobiście nie widzę żadnego sensu ograniczania funkcjonalności procesora do jakichkolwiek operacji, w tym konkretnym przypadku.

A ja owszem, widzę. A to dlatego, że znam praktykę na komputerze, który ma dwa procesory, z tego jeden wyposażony we własną pamięć i podpięty przez porty I/O. Chodzi o Falcona030 i jego DSP. Bywa tak, że po tym, jak jeden program właduje się do pamięci DSP i tam namiesza, to drugi już tego nie może zrobić i DSP jest nieczynne (aż do resetu). Nie jest tak zawsze, ale tak bywa.

To tylko dowodzi o niedopracowanej implementacji współpracy między procesorami.

Właśnie dla uniknięcia takich sytuacji wolałbym w tej teoretycznej karcie koproca podział na funkcje, które są predefiniowane i zawsze takie same, oraz oddzielną możliwość ładowania i uruchamiania własnych funkcji przez program.

Można tak zrobić, lecz otwarcie furtki na wrzucenie dowolnego kodu spowoduje, że nie będzie to działało maksymalnie stabilnie, zakładając jakieś problemy z komunikacją między procesorami.

1 MB pamięci powinien starczyć do tego aż nadto.

Mam podobne zdanie. Powinno wystarczyć.

197

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

No o tym właśnie mówię: można przetransferować, ale ogólnie transfery danych będą zachodzić ze starą szybkością, podczas gdy z Pasiową kartą transfer nawet po starej pamięci będzie 3-4 razy szybszy; to moim skromnym zdaniem daje lepsze pole do popisu jeśli chodzi o np. gry niż nawet najszybszy układ mnożący zamontowany na karcie.

Rozumiem. Do celów, o jakich ja myślałem, byłoby to wystarczające, jak sądzę (demoscena).

Skuteczniejszym jest podłączyć przez najszybszy port mocną konfigurację PC.

No usiłuję ci właśnie przetłumaczyć, że też nie... Co ci po mocy obliczenowej Pentium 4 2,5 GHz, który ci rozpakuje divxa, jeśli 6502, nawet nie zajmując się niczym innym jak odbiorem strumienia danych od pentiuma, nie wyrobi się na wyświetlenie nawet 25 klatek animacji na sekundę?

Owszem, ale inne rozwiązanie oznacza rozmontowanie malucha. Tego chciałem uniknąć przede wszystkim. Dla mnie rozwiązanie z zewnętrznym modułem (poza komputerem) jest kompromisowe.

Najlepiej uniknąć jest skalpela.

Toteż, jak ktoś tu już cichutko napisał (ale został zignorowany), pasiowa karta wchodzi w podstawkę od procesora.

Nieporozumienie. Miałem na myśli całkowity brak demontażu komputera. Jakikolwiek.

Moim zdaniem pakowanie jakiegokolwiek rozszerzenia do komputera, gdy jest możliwość zrobienia tego niejako zewnętrznie, jest b. ważnym argumentem na niekorzyść tego pierwszego.

Byłoby to twierdzenie słuszne, ale następnik jest fałszywy. To znaczy: nie ma co do mej wiedzy możliwości zrobienia "tego" zewnętrznie. To znaczy, karta zewnętrzna nie będzie miała takich możliwości, jak rozszerzenie wewnętrzne. Czyli, jedna rzecz nie może zastąpić drugiej. Ale też z drugiej strony nie wykluczają się wzajemnie.

Nigdzie nie pisałem, że karta zewnętrzna ma mieć możliwości rozszerzenia wewnętrznego i nie było to moją intencją wypowiedzi.

Wg. mnie zewnętrzna karta z drugim 65c816 taktowanym wysoko (np. 14 MHz) i własną pamięcią mogłaby się przydać jako koprocesor (do karty Pasia albo bez niej). Część funkcji można byoby mu przypisać na stałe (np. obliczenia zmiennoprzecinkowe), a resztę pozostawić do swobodnego wykorzystania przez programy.

Osobiście nie widzę żadnego sensu ograniczania funkcjonalności procesora do jakichkolwiek operacji, w tym konkretnym przypadku.

198

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

c) interfejs cartridge'a ma bodajże wyprowadzoną szynę adresową

Nie całą, o ile mi wiadomo.

To nie jest najważniejsze moim zdaniem.

Co do komunikacji, to wystarczy natywna dla malucha. Potęgę ma tworzyć zewnętrzna w stosunku do 6502 kalkulacja danych. Transfer późniejszy może być wolniejszy/standardowy. Powinno to być satysfakcjonujące.

Oczywiście, formalnie do cartridge'a także można włożyć co się chce, ale wydaje się, że sensowniej/wygodniej jest wprowadzenie procesora oraz układów o architekturze zbliżonej do natywnego 6502, czyli 65816.

Po drugie, nie samymi obliczeniami człowiek żyje. Dane też trzeba od czasu do czasu wkopiować do pamięci ekranu. A Pasiowa konstrukcja przyspiesza również i to, dzięki zcache'owaniu pierwszego segmentu pamięci RAM. Ciekaw jestem, jak to zrobisz z poziomu kartridża, uniknąwszy przy tym przekładania do tegoż kartridża całego komputera.

Moje założenia są inne. Nie mam zamiaru sugerować przenoszenia całego komputera. Dane obrazu to takie same dane jak i inne, więc po ich sprawnym wygenerowaniu w pamięci rozrzerzenia można je przetransferować do pamięci 6502.

No i jest jeszcze kwestia styków: miałem wystarczająco dużo problemów z zewnętrzną Spartą X, żeby wiedzieć, że taki moduł raz styka a raz nie. W sumie jestem za montażem do wewnątrz.

Ja osobiście wielkich problemów z tym nie miałem. Nie sądzę, aby to był problem generalny i dyskwalifikujący.

[ Dodano: 11.01.2005 19:04:13 ]

To mi sie wydaje bardziej eleganckie...

Tyle, że jest mniej skuteczne.

Skuteczniejszym jest podłączyć przez najszybszy port mocną konfigurację PC. Tyle, że nie o to chodzi...

Obawiam się, że "dwie szkoły", o których piszesz, wynikają z tego, że jedni traktują Pasiowy dopał jako kolejne rozszerzenie do Atari, inni natomiast Atari z takim rozszerzeniem traktują jako zupełnie nową maszynę, która zachowując urok atarynki otwiera nowe możliwości.

Najlepiej uniknąć jest skalpela.

Jeśli to ma być to drugie, to nie widzę sensu w (5x droższej zapewne i 10x trudniejszej) realizacji tego jako karty, bo i kiedy będzie zachodzić potrzeba takowej karty wyjęcia?

Cartridge nie byłby drugą maszyną w sensie komputera ze wszystkimi układami do grafiki/dźwięku. Nie jest to konieczność. Można ograniczyć się do procesora z rodziny (65816) oraz pamięci. Inne rozwiązania, to tylko dalsze propozycje do rozważenia. Moim zdaniem pakowanie jakiegokolwiek rozszerzenia do komputera, gdy jest możliwość zrobienia tego niejako zewnętrznie, jest b. ważnym argumentem na niekorzyść tego pierwszego.

199

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

Miałem na myśli stworzenie rozszerzenia, a nie rozbebeszenia malucha. Rozkładanie komputera na części sprowadza się niestety do tego, czego tygryski wcale nie lubią najbardziej, czyli do kompletnej abstrakcji, czyli w zasadzie można tam wstawić co się chce... dowolny procesor, dowolne rozszerzenie, a wiadomo, że "prawdziwym atarowcom" nie o to chodzi :> Instalowanie rozszerzenia w oparciu o istniejący mechanizm cartridge'a ma swoje poważne zalety:

a) nie przeprowadzamy operacji na pacjencie
b) bardziej komercyjny charakter/zero transporu całego sprzętu
c) interfejs cartridge'a ma bodajże wyprowadzoną szynę adresową

Co do komunikacji, to wystarczy natywna dla malucha. Potęgę ma tworzyć zewnętrzna w stosunku do 6502 kalkulacja danych. Transfer późniejszy może być wolniejszy/standardowy. Powinno to być satysfakcjonujące.

Oczywiście, formalnie do cartridge'a także można włożyć co się chce, ale wydaje się, że sensowniej/wygodniej jest wprowadzenie procesora oraz układów o architekturze zbliżonej do natywnego 6502, czyli 65816.

Co do dodatkowej pamięci - jak najbardziej. Okolice 0,5MB  1 MB byłyby satysfakcjonujące.

Można nawet pakować teoretycznie tam drugiego POKEY'a zamiast rozbebeszać atarkę do kolejnych zmian. Krótko mówiąc jest to rozwiązanie bardziej elegenckie i w "duchu Atari", naszego małego komputerka. Oczywiście domyślam się, że będzie wiązało się to z pewnymi problemami (zasilanie), ale pewnie je także można obejść (dodatkowe/wewnętrzne zasilanie/akumulatorki). Co o tym sądzicie?

Oczami wyobraźni widzę te silniki 3d generujące grafikę w trybie 2x2 w znośnej ilości klatek na sekundę. Istnieje wiele innych propozycji co do wykorzystania portu cartridge'a, ale na razie na tym zakończę.

Pozdrawiam

200

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

Czy istnieje możliwość wpakowania takiej dopałki do standardowego mechanizmu rozszerzeń Xl/XE, czyli cartridge'a? Jeśli tak, to odpadłaby dekompozycja malucha.