_tzok_: http://www.emulators.com/gemul8r.htm - możesz zobaczyć ;)

3,827

(244 odpowiedzi, napisanych Fabryka - 8bit)

Qmega sam używam ;) Tylko piszę, że właśnie czasem się przydaje. Z autopsji - dograj sobie jeszcze os od 400/800, do niektórych starych gier się przydaje (ja mam standardowy OS, dwa Qmegi, ale nie pamiętam które (3xx/4xx) oraz właśnie os Atari 800.

3,828

(244 odpowiedzi, napisanych Fabryka - 8bit)

@Mq, nie zadziałają ci Tracma  - one są dostosowane do natywnej prędkości stacji, albo się zawieszą, albo wyskoczą błędy na grafice/dźwięku. Poza tym są ze cztery gry na krzyż, które oryginalnie zadziałają tylko w normalu, ale tytułów już nie pomnę, tym bardziej że można znaleźć scrakowane wersje ;)

3,829

(20 odpowiedzi, napisanych Sprzęt - 16/32bit)

Rozumiem, że zadziałało ;) Dzięki :)

3,830

(20 odpowiedzi, napisanych Sprzęt - 16/32bit)

Monitor mono masz wyłączony jak przełączasz? Któryś pin odpowiada za detekcję i może chroni monitor po prostu?

3,831

(20 odpowiedzi, napisanych Sprzęt - 16/32bit)

Odebrane. Dzięki za odzew.

3,832

(20 odpowiedzi, napisanych Sprzęt - 16/32bit)

@Artik, a ile Cię przekona, że moja potrzeba to Twoja własna potrzeba? (tylko nie przesadź)? :)

ok - do następnej części zrobię dużego ATR-a, a każdy w razie potrzeby sobie wypakuje i przegra na mniejsze atr-y nawet pod emulatorem. Czekam na wrażenia i pytania do tej części ;)

Część trzecia, czyli dwa słowa o grafice i pliku DOSowym.
Miło mi, że na forum pojawiaja się komentarze i poprawki mojego kodu. Zgodnie z ustaleniami dziś postaram się pokazać jak stworzyć plik uruchamiany spod DOSu (lub dowolnego loadera). Ale ponieważ ma to być gra, w dodatku z grafiką - zacznijmy od niej.
Całą gra ma być w trybie graficznym (bo mi tak wygodnie z pewnych względów, ma zawierać grafikę, itp., itd.). Niestety, nie doczekałem się pomocy grafika, więc muszę sam coś zaimprowizować. Całość robimy w trybie jednokolorowym (dla niektórych: dwukolorowy, barwa i odcień). Tak działa nasze Atari (o ile nie korzystamy z artefaktów, ale te to na CRT i głównie w NTSC). Lubię, jak gra ma jakiś tytuł. Postanowiłęm, że do dzisiejszej części dorobię taką namiastkę. Ponieważ w tym trybie standardowo mamy rozdzielczość 320x192 punkty, proporcje piksela 1:1 (co jest bardzo ważne), bardzo wygodnym narzędziem są wszelkiego rodzaju edytory graficzne na PC (oczywiście można grafikę zrobić na Atari, Macu czy nawet Atari ST czy Amidze), w moim przypadku z możliwością zapisu/eksportu w formacie GIF (bo z takich narzędzi korzystam na Atari i w tym tutorialu). Obsługi programów nie będę tutj uczył - napiszę tylko, że w naszym przypadku korzystam z darmowego GIMPa.
Dobrze, stworzyłem sobie grafikę w odpowiednim formacie i rozdzielczości - ponieważ mam zamiar tytuł wyświetlać także podczas gry, założyłem, aby grafika nie była zbyt duża, powiedzmy 320x40 pikseli, oczywiście w jednym kolorze. Grę nazwałem oryginalnie "Tutorialowa gra paragrafowa" i zmodziłem z tego grafikę o zadanych rozmiarach, po czym przekonwertowałem ją na grafikę jednobitową i zapisałem w formacie GIF. Całość umieściłem na dyskietce roboczej (stworzyłem na potrzeby tutorialu kolejną dyskietkę - grafika.atr - osobiście preferuję większe obrazy, ale poradzimy sobie). Zakładając, że ktoś korzysta z pojedynczej stacji dyskietek postaram się przeprowadzić teraz drogich czytelników przez proces konwersji, przy czym zaczniemy od liczenia: 320px w szerokości daje nam w tym trybie graficznym 40 bajtów, mamy 40 linii, czyli 40x40=1600 bajtów - tyle docelowo zajmie nasza grafika.
Zabieramy się za konwersję. Ponieważ tu grafika zajmuje całą szerokość ekranu do testów napiszemy sobie prosty programik w TBXL do wycięcia bloku, ale najpierw trzeba wszystko przekonwertować. Wczytujemy dyskietkę roboczy_tools.atr i program do konwersji (jv.com). Po pojawieniu menu programu za pomocą klawisza "M" wybieramy tryb Gr.8 BW - jest to nasz docelowy tryb graficzny (nawiasem mówiąc - proponuję się w wolnej chwili pobawić tym programem). Podmieniamy w stacji naszą dyskietkę na obraz grafika.atr. Teraz możemy ją wylistować (D), można podać maskę lub wcisnąć RETURN (bo całość mamy w stacji D:). Upewniamy się, że jest tam nasz GIF - wybieramy "L", następnie *.gif (mamy ten jeden póki co, więc po co się męczyć z nazwą?), możemy zmienić sposób dzielenia szerokości i wysokości (tu bez zmian) i wczytujemy (Return). Po wczytaniu widzimy nasz obraz, naciskamy klawisz START i całość zapisujemy - dla grafik w 8-mym trybie graficznym ja zwyczajowo daję rozszerzenie .8, ale może być dowolne, więc naciskam "S" i wpisuję "TYTUL.8" (wpisujcie bez apostrofów). Zapisał nam się plik w 8-mym trybie graficznym. Teraz podmieniamy dyskietkę na taką z dosem, "Z" i jesteśmy w DOSie.
Proponuję wczytać TBXL. Podmieniamy dyskietkę na ą z grafiką i teraz proponuję Wam chwilę przerwy od gry. Napiszemy sobie krótki programik do naszej grafiki. Przepiszmy uważnie ten kod:

10 OPEN #1,4,0,"D:TYTUL.8":BGET #1,$60
00,7680:CLOSE
11 GRAPHICS 24:POKE 710,0
12 MOVE $6000,DPEEK(88),1600
13 GET KEY
14 OPEN #1,8,0,"D:TYTUL.DAT":BPUT #1,$
6000,1600:CLOSE

Proponuję zapisać to sobie, na przykład jako "TESTGR.TB". Uruchamiamu (RUN) - na ekranie po chwili ukaże się nasz tytuł. Robimy DIR i co widzimy - plik TYTUL.DAT, który jest sporo krótszy od TYTUL.8 - ma dokłądnie 1600 bajtów.
Co dokłądnie robi nasz mini program? Otwieramy kanał pierwszy do odczytu, wczytujemy pod adres $6000 7680 bajtów, uruchamiamy ósmy tryb graficzny bez okna tekstowego (8+16=24), przepisujemy pierwsze 1600 bajtów na ekran (linia 12), po naciśnięciu klawisza otwieramy pierwszy kanał do zapisu i zapisujemy dane na dyskietkę. Pamiętamy o każdorazowym zamykaniuu otwartych kanałów - dobra praktyka!
Teraz tak - zaraz kilka osób się przyczepi, że przecież mogłem otworzyć dwa kamnały od razu (jeden odczyt, drugi zapis) i polecieć całość za jednym zamachem (pierwsze 1600 bajtów pliku), mogłem wczytać od razu na ekran (zamiast $6000 od razu dpeek(88)) - itp. Nie zrobiłęm tego, aby pokazać mechanizm działania i pewien sposób trzymania danych w pamięci komputera.
Czas określić miejsce w pamięci, gdzie będziemy trzymać nasz tytuł. Proponuję tuż pod fontami, pamiętamy, że one siedzą od adresu $9C00, wpiszmy w TBXL:

?HEX$($9C00-1600)

Wyskoczy nam wynik: 95C0, czyli naszym docelowym adresem będzie $95C0. Kto chce, może skorzystać z metody Open... itd, ale jak widzicie - pliki nam się mnożą. Proponuję wczytać teraz Super Packera, i po kolei:
1. L (czyli load) i podajemy DANE.DAT (nasze fonty, przypominam)
2. F (wczytanie danych niebinarnych) i podajemy TYTUL.DAT, podajemy adres 95C0, sprawdzamy, czy jest przed fontami (jest - 9BFF)
3. S (zapisujemy) i podajemy DANE.DAT - nadpisujemy nasz plik z danymi
4. Q - wychodzimy do DOSu
Uwaga! Pamiętamy, aby w stacji były odpowiednie dyskietki! Wynik zapisujemy na naszej roboczej dyskietce z programem w TBXL!
Teraz wczytujemy TBXL. dajemy komendę BLOAD"D:DANE.DAT" i możemy sprawdzić, czy dane siedzą w pamięci:

GR.8:MOVE$95C0,DPEEK(88),1600:POKE756,$9c

Powinniśmy mieć tytuł na górze ekranu oraz polskie literki z control. Zakłądam, że wszystko jest ok. Pamiętamy, aby uzupełnić nasz plik z adresami o odpowiedni wpis - $95c0-$9fff grafika tytułowa - aby potem ich nie zadeptać. Wczytujemy nasz plik z grą (LOAD"D:GRA0.TB"). Zmodyfikujemy sobie póki co tylko procedurę INTRO, proszę o własnoręczne przepisanie zmian:

99 ------------------------------
100 PROC INTRO
101   GRAPHICS 24:POKE 710,0:POKE 709,
15:POKE 756,$9C
102   MOVE $95C0,DPEEK(88),1600
142   COLOR %1:TEXT 10,100,"Tu będzie i
ntro"
150   IF PEEK(53279)<>6 THEN 150
190 ENDPROC
199 ------------------------------

Pomijając fakt, że będzie to procedura mocno zmieniana w kolejnym odcinku - wykonajmy nasze zadanie, czyli pokażę jak wykonać plik wczytywany z DOSu lub loadera. Zapiszmy całość jako GRA1.TB (ja zawsze zmieniam numer jak coś robię - w razie wpadki mogę wrócić do poprzedniego pliku. Można też tworzyć sobie tylko dwa pliki i je nadpisywać naprzemiennie, nie polecam natomiast zapisywać zmian zawsze na tym samym pliku, bo mogą pojawić się problemy i czasem ciężko będzie do nich wrócić).
Jeszcze sprawdzam, zy wszystko jest ok - RUN.
Jeśli wszysko w porządku - wczytujemy nasz kompilator (DOS i TBC.COM). Wciskamy 1 (numer stacji dyskietek z naszym źródłem), następnie klawiszamy kursora wybieramy nasz plik źródłowy (GRA1.TB) i naciskamy return. Jeśli wszystko będzie w porządku (no errors) - program poprosi o podanie nazwy dla skompilowanego programu (podajemy bez rozszerzenia) - GRA1.CTB, potem naciskamy N (nie chcemy kolejnej kopii), control-D (wyjście do DOS), Y (potwierdzenie) i sprawdzamy nasz katalog (DIR). Niestety, jak tam spojrzymy - mamy tylko 63 wolne sektory (ach, ta pojedyncza gęstość), a sam runtime ma... 88 (jak ktoś stworzył sobie większego ATR-a to nie będzie miał problemu). Na potrzeby tutoriala tworzę nowy ATR, tam przegrywam wyłącznie plik linker, runtime2.exe oraz nasz skompilowany program - ja go nazwałem kompilat.atr (do ściągnięcia).
Po wgraniu DOSa wkładamy do stacji nasz dysk i wczytujemy linker (LINKER.COM) -  i tu uwaga, oryginalny linker wymaga, aby plik RUNTIME2.EXE był w stacji nr 1. O.k., podajemy nazwę naszego programu (pełna śzieżka) - D:GRA1.CTB, następnie nazwę pliku wynikowego - D:GRA1.CO (Uwaga! Z premedytacją dalem rozszerzenie CO - potrzebujemy dograć nasze dane! Gdy nic nie dogrywamy - mamy już gotowy plik!). Wciskamy Return i KONIECZNIE klawisz Esc po zapisaniu! (dopiero on zamyka plik). Wkłądamy dyskietkę z DOSem i mossadem, wciskamy D (wyjście do DOS), wczytujemy mossada i po kolei:
1. R D:GRA1.CO <return> - wczytanie "naszej gry"
2. R D:DANE.DAT <return> - wzytanie brakujących danych
3. W D:GRA1.COM <return> - zapis całej gry
4. Q T - wyjśie do DOSu (musi być w stacji)
Teraz już możemy wczytać naszą grę spod DOSu! Sprawdźcie sami...
Oczywiście, zamiast Mossada można użyć nawet DOSa, ale dla mnie jest to wygodne narzędzie, co więcej - ma spory bufor pamięci. W następnym odcinku spróbujemy nieco doszlifować nasz program binarny i zająć się ekranem inta. Jak zwykle liczę na odzew ze strony forumowiczów i czekam na uwagi.

3,835

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

Jest tam napisane ;)

3,836

(20 odpowiedzi, napisanych Sprzęt - 16/32bit)

Kurde, a w moim VGA CRT obudowa cała popękała :/
Skolka wiela za to cudo? Jakby co wstępnie:
Sikor - 1szt

3,837

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

No tak, daję namiar przez forum to kolega podsyła linka do sklepu Kuby ;) Ale można i tak ;)

3,838

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Dziwne, bo to by sugerowało, że błąd wyskoczy zawsze na każdym urządzeniu, a tak nie jest przecież. Nieważne, bez źródeł się nie dowiemy. Poza tym - nie chodzi o samą transmisję, a o jej zakończenie, a właściwie zakończenie tylko przy zapisie.

3,839

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

A według mnie jest to błąd drivera. Skoro zawsze jest powtórzony 510 bajt - podejrzewam z ł ą kolejkę, po prostu sprawdza, czy ostatni 512 bajt - jeśli tak, to go już nie odczytuje, a do zapisu wypycha z kolejki ostatni tam będący, uzupełniając do 512 - czyli 510, jak wynika z zapisu. Zasugerowałbym to Putnikowi może, bo powtarzalność jest idealna.

3,840

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

Kuba Husak robił, pisz do niego, pewnie Ci wydrukuje.

3,841

(10 odpowiedzi, napisanych Kolekcjonowanie)

Co do RAM CHARGERA to oryginalnie powstał właśnie na Indusa, a nie słyszałem, aby był przerabiany pod inne stacje. Różnice mogą być w miejscu wyprowadzeń sygnałów.

3,842

(113 odpowiedzi, napisanych Miejsca w sieci)

Hmm, a na konkurencyjnym portalu piszą, że 20.01 byli z Piterem u kogoś kręcić film. O tu... http://atarionline.pl/v01/index.php?sub … ct=nowinki - szkoda, bo pismo fajnie się zapowiadało...

Zagraj w moją wersję - tam oczywiście masz odpowiedź. Oczywiście jest dla mnie oczywiste, że umiesz czytać, więc oczywiste rzeczy warto sprawdzić oczywiście. Ready[].

Bosz... @Smaku, po prostu nic w życiu nie napisałeś i nie skompilowałeś, oczywiste. Oczywiste, że nie udostępnisz swojego emulatora, bo to jest oczywiste, że nie istnieje. Więc oczywiste jest to, że nie udostępnisz kodu źródłowego, bo to oczywiste, że takiego nie masz. Oczywista oczywistość :P

3,845

(15 odpowiedzi, napisanych Programowanie - 8 bit)

A pro po - tak sobie sprawdziłem, że maksymalna wartość w HEX to po przeliczeniu 65535, czyli jest to konstrukcja wyłącznie do korzystania z adresowania pamięci, stąd pewnie w obliczeniach działa wolniej...

to do kolekcji:

150 REPEAT:UNTIL PEEK(53279)=6

Bez negacji, tylko znak równości

150 ON PEEK(53279)<>6 GOTO 150

Mamy goto, ale działanie dokładnie takie samo

150 #START:ON PEEK(53279)<>6 GO# START

Podobnie
Panowie, mówimy o grze paragrafowej. Ułamki sekund tu nic nie znaczą. Ciekawe za to, jak z zajętością kodu w wynikowym programie. To było jako przykłąd, abyśmy wykorzystali klawisze konsoli. Każdy przykład można przepisać z negacją lub bez, można zaoszczędzić na kilku cyklach, ale nie o to tu chodzi. Nie gmatwajmy kodu. Przykładów robiących to samo można by pewnie podać jeszcze z dziesięć, tylko po co? Nie mnóżmy niepotrzebnie bytów, jak poznamy zasadę działania - każdy sobie znajdzie najlepszą dla niego metodę, jak myślę. Póki co zatrzymała nas obsługa klawiszy konsoli.

Oczywiście, negacja tu nic nie zmienia.

Tak, to bardzo skomplikowane jest... Nad wyraz, nie ukrywam...

Chłopaki, piwo i popcorn mi się kończy...
Smaku, ile to jest dwa do potęgi 4? Jak znajdziesz odpowiedź to pomyśl...

3,850

(1 odpowiedzi, napisanych Konsole)

Jak można przeczytać - wyszła nowa wersja loadera do cartridge-a obsługującego karty SD. Więcej info na stronie https://atarigamer.com/articles/introdu … -version-2