Z ciekawości szukam jakiegoś dobrego emulatora ANTIC Atari XL/XE i tu są źródła do Altirry - jakiś późniejszy emulator od Atari 800 Win. Przynajmniej są kody źródłowe w C. I teraz zsumowałem sobie wiersze z plików antic.h i antic.cpp i wychodzi, zaokrąglając, żeby liczyć bez komentarzy i zbędnych linii nie będących kodem programu: około 3000 wierszy (trzy tysiące wierszy), żeby zrealizować ANTIC XL/XE. Kosmos jakiś totalny. Nie wiem, czy w ogóle analizować ten kod, nie wiem w jakim celu, skoro to zajmuje kosmos cały. U mnie ANTIC cały robi się w 50-ciu liniach (wierszach), lub w 50-ciu instrukcjach (wychodzi w przeliczeniu w sumie, że na pewno nie więcej niż wierszy), a do tego to instrukcje proste typu dodaj, przypisz, czyli sprzętowy ANTIC u mnie robi się w Turbo Pascal 5.5 na 50-ciu, czy 80-ciu max. instrukcjach prostych. Po znormalizowaniu wyjdzie około 50-ciu instrukcji pewnie w sumie, lub zostanie na 80-ciu, bo przypomina zupełnie techniczne wykonanie, nie bardzo da się coś skrócić, bo by się nie wykonało, a musi, oczywiste. Te 80 instrukcji prostych wrzuca się na hardware elektroniczny do wykonania samodzielnego (zwykły prosty scalak) funkcji ANTIC w sposób sprzętowy i mam gotowy sprzętowy ANTIC XL/XE własny. Ciekawe, jak wygląda i działa oryginalny. Dla porównania. Kiedyś poszukam, z ciekawości. 3000 instrukcji to kosmos, nie wiem czy to się powinno analizować, oczywiste chyba, czy nie? Hmm W drugim odcinku Jak stworzyć własny Emulator Atari XL/XE 8-bit będzie pokazane jak zrobić ANTIC działający 100% sprawnie i 100% wydajnie, zgodnie ze sprzętowym ANTIC Atari XL/XE. Musi zajmować kilkadziesiąt linii kodu (kilkadziesiąt instrukcji) które bezpośrednio interpreterem kodu przerzuca się na wykonanie sprzętowej wersji, czyli układu scalonego gotowego READY do pracy w sprzętowym systemie Atari XL/XE. i z powrotem analogicznie. Hardware <=> Software nie może się niczym różnić, oczywiste. Wtedy jest dobra emulacja sprzętu LUB dobra realizacja programu w formie sprzętowej. Oczywistości.
Będzie pokazane krok po kroku, aż ANTIC będzie READY i się ma. Platforma programistyczna: Turbo Pascal 5.5. Działanie programu: realizacja funkcji ANTIC Atari XL/XE. Wielkość programu: kilkadziesiąt instrukcji zamkniętego pełnego kodu programu do łatwego przeniesienia wprost instrukcji programu na wykonanie czysto sprzętowe (w pełni funkcjonalny układ scalony ANTIC Atari XL/XE). wordmedia.goutlivres.com/?page_id=968 Tu jest jakiś schemat końcówek układu elektronicznego ANTIC, od tego powinno się zaczynać zawsze, przy emulowaniu układów elektronicznych, oczywiste napisali nawet, co oznacza każda nóżka scalaka, super. Nic więcej na razie nie potrzeba, bo musimy mieć struktury danych, na których operuje ANTIC, czyli w wersji programowej funkcja do_antic; {wykonaj ANTIC}. krap.pl/ /www /~trevin/atari/antic_pinout.html ANTIC Pinout Po kolei: A0-A15: Memory address bus - czyli 16-bitowa zmienna do wskazywania adresu w pamięci var AD :word; {ok, następne potrzebne struktury, wait } D0-D7: Memory data bus - czyli zmienna 8-bit na dane, z których się korzysta var DB :byte; {ok, proste, następne } AN0-AN2: CTIA/GTIA bus (data type unknown) - trzy bity na kontakt z układem GTIA, czyli var an :byte; {z tego bajta 3 bity się wykorzysta na a0,a1,a2, reszta nie ważna, ok, proste, następne} Vss: Ground - to uziemienie chyba, no to nie potrzebne w programowej wersji scalaka, potem się dopisze formalnie, żeby automat przerzucał na hardware i żeby niczego nie zgubić, musi być 100% odwzorowanie hardware <=> software, oczywiste, ale do działania programowej funkcji ANTIC chyba nie potrzebne, nie ma tu żadnego przesyłu informacji raczej, chyba, nie wiem, potem sprawdzę, ok, czyli olać na razie, następne LP: Light pen input - to pewnie 1 bit na sygnał związany z piórem świetlnym, ok, no to: var lp :byte {1 bit z tego jest ważny, reszta niepotrzebna, najwyżej potem zrobi się jedną zmienną zbiorczą typu byte,
żeby nie tracić pamięci i wrzuci wszystkie piny typu bitowego, czyli a0, a1, a2, lp, i następne, jeśli będą, zobaczymy, ok, to potem się zbierze, następne } Tych 6 bitów się dorzuci do jednej zmiennej typu byte: RNMI: Non-maskable interrupt input NMI: Non-maskable interrupt output (to CPU) REF: RAM refresh output HALT: Halt output; suspends the CPU while ANTIC reads memory R/W: Read/write direction RDY: ANTIC pulls this pin low to halt the CPU when the WSYNC register is written, until the next horizontal blank occurs. I tych 5 bitów: Vcc: +5V power O2: Phase 2 input clock O0: Phase zero clock output FO0: Fast phase 0 input clock RST: Resets ANTIC Doda się ten wcześniejszy Ground (Vss) jako jeden bit i upcha na pełnej strukturze danych dla ANTIC. OK. READY. Teraz funkcja ANTIC, czyli co ANTIC robi z tymi sygnałami z pinów, czyli jak operować danymi ze struktury stworzonej w Turbo Pascalu jak powyżej? Jak się napisze tą funkcję operowania tą strukturą, to gotowy ANTIC Emulator. Proste. OK. No to gotowe na razie. Co robi ANTIC, żeby to zaprogramować w funkcji TP5.5? Hmm Tu napisali chyba ciekawe, czy ta strona wystarczy, żeby dokończyć cały 100% ANTIC Atari XL/XE, zobaczymy, wait krap.pl/ /kryten /Atari/800XL/atari_hw/antic.htm ANTIC
The ANTIC and CTIA chips generate the television display at the rate of 60 frames per second on the NTSC (US) system. Each frame consists of 262 horizontal TV lines and each line is made up of 228 color clocks. The 6502 microprocessor runs at 1.79 MHz. This rate was chosen so that one machine cycle krap.pl Chyba wszystko tu jest, ogólnie przeglądając wystarczy zaprogramować wszystko, co robi ANTIC zgodnie z tym, co tam napisali na tej stronie, tak zakładam ok, czyli po zrobieniu byłoby gotowe, proste czyli oby tam wszystko było tylko, to wystarczy przeklepać i już zobaczymy po kolei wait zanim się zacznie, trzeba: 1. mieć gotową strukturę danych dla funkcji ANTIC opisaną wcześniej z pinów scalaka ANTIC, najlepiej w Turbo Pascal 5.5, żeby mieć pewność, że wszystko działa 100% idealnie i sekwencyjnie krok po kroku, jak elektronika czysta, prosta, niezawodna. 2. jak już się ma strukturę i pustą funkcję do_antic w TP5.5, czyli np. na początek: procedure do_antic; begin end; można pisać tę procedurę, korzystamy tylko ze struktury danych stworzonej dla ANTIC, oczywiste, czyli tylko te kilkanaście pinów (nóżek) scalaka, OK. No i teraz trzeba po kolei co robi ANTIC? Tam chyba piszą, trzeba to czytać teraz i po kolei klepać w Turbo Pascalu to potem, nie chce mi się potem dokończę priorytety, kawa
Ta przykładowa DL z tych artykułów o ANTIC Atari XL/XE wygląda po puszczeniu po niej ANTIC-a w emulatorze Atari w TP5.5 mniej więcej tak: (przynajmniej u mnie, bo TP nie wyświetli mi 24-ech linii za bardzo, bo <Naciśnij Enter> muszę mieć na dole do obsługi Atari spod monitora w TP). Potem to zrobię na original user interface. Na końcu, oczywiste. 19 linii się udaje ładnie wyświetlić, z 40-toma znakami w linii. Pusty ekran Atari w GRAPH 0. Ładne. Mnie się podoba getchar działa, outchar działa i mam maszynę do pisania w Turbo Pascal 5.5 w trybie gr0 Atari 65XE. Czad. Nie wiem, jak uruchomić tryby graficzne, bo na tych nowych PC-tach nie działa unit graph w TP. Gdyby działał, to mam już wszystkie tryby Atari XL/XE gotowe, ale nie działa graph, kurde. Muszę oryginalny 386DX 33MHz odzyskać. Na giełdzie sprzedałem, może mi oddadzą, trzeba zapytać. Bo mi o unit graph chodzi w TP 5.5, nic więcej, kurde.
W Zorro bym sobie pograł, w Goonies, Mouse Trap, Conan, we wszystko, bo już działa, tylko nie mam unit graph, kurde mol. Emulator Atari XL/XE uruchamia się zwyczajnie przez Ctrl+F9, to straszna radocha, że krótki programik w Turbo Pascalu robi mi cały 100% original Atari XL/XE, genialne, jak cudo jakieś Ctrl+F9 i READY self test działa, BASIC, wszystko działa, gry w ATR, 100% genialne Ctrl+F9 i już Atari READY. Genialne uczucie to jest, uwielbiam to i kurde działa, super to jest cały Atari 65XE w TP5.5 uruchamiany zwyczajne z edytora, tego niebieskiego. Ctrl+F9 i gotowe cały Atari, nic nie brakuje, jakie to kurde genialne wszystkie gry muszę sobie sprawdzić Zapyla ze sto, albo tysiąc razy szybciej niż zwyczajny Atari kosmos W BASIC jak robię FOR I=1 to 65535:?PEEK(I):NEXT I <RETURN> to od razu jest na końcu, czyli wartość spod komórki 65535. Od razu całość przelatuje i już.. READY [] Kurde, jakie to genialne mam najszybszy Emulator Atari XL/XE we wszechświecie chyba kurde, ale zapyla Wrzucę sobie na ten śmig wszystko co istnieje na Atari i niech przeliczy i da gotowe wydruki z wykonywania programów, w maszynowym, albo stany pamięci, wszystko najlepiej 100%. Żeby było widać 100% całego Atari co do rejestru i impulsu, kiedy pracuje sobie ale czad jak magia, niezłe widowisko kurde mol czy ktoś widział jak działa Atari XL/XE kiedy wykonuje grę, demo, etc.? Niektóre działają genialnie, widać, że ładnie zaprogramowane, inne mniej wszystko zależy od zrobienia programu czasem Atari cały blinka jak genialny cudowny cud podczas realizowania programu, widać, jak ślicznie wszystko działa kiedyś pokażę i opowiem - to kwestia umiejętnego napisania kodu wykonywanego, czyli obsługa zasobów, żeby widać było nawet z daleka, że genialnie sprawnie działa napisać śliczny program, to nie łatwa rzecz, widać od razu, czy śliczne, czy nie bardzo. Super to jest
Atari to superkomputer wszech czasów. Ciekawe, czy istnieją lepsze od niego? Na razie nie znajduję nigdzie na świecie hmm to chyba oczywiste mi się wydaje RUN [] REM ale zapyla