1

Witam,
po oglądaniu dem i graniu w gry na Atari postanowiłem że trzeba coś własnego stworzyć.  Zrobiłem już parę programów w Basicu i 2 gry wykorzystujące procedury napisane kodem maszynowym (1 niedokończona).  Jednak kod maszynowy sprawia mi dużo problemów a Basic jak wiadomo jest niezadawalający.  W nadzieji chciałem spróbować Quick Assemblera, że w miarę swobodnie będę mógł napisać jakiś najprostrzy program.  Jednak okazało się innaczej. 

Chciałem napisać program który zmienia tryb graficzny na 0(gr.0), ale wynikiem tego programu nie powinien być chyba kompletnie czarny ekran.  Więc zwracam się do Was z prośbą czy moglibyście przeanalizować kod i powiedzieć co źle zrobiłem albo czy popełniłem jeden z grzechów głównych i to jest cud że komputer jeszcze działa? Byłbym wdzięczny za jakąkolwiek pomoc.

list             equ   %00000101                     ;  Żeby podczas kompilacji był listing tylko errorów
mem_copy         equ   %00010000                     ;  i żeby kod był umieszczany do pamięci komputera
                 opt    list+mem_copy          

                 org   $9000                         ;####program dla CPU#####
                 lda   $00                           ;
                 brk                                   ;żeby sprawdzić stan akumulatora*
                 sta   560                           ; Poke 560,00
                 lda   $9A                           ;
                 brk                                   ;żeby sprawdzić stan akumulatora*
                 sta   561                           ;Poke  561,$9A 
joystic          lda   644                           ;Pobieram stan przycisku Joy'a
                 cmp  0                              ;Sprawdzam czy wciśnięty
                 bne   joystic                       ;Jeśli nie to skok do joystick
                 rts                                 ;powrót do QA (o ile dobrze wiem)

                 org   $9A00                         ;####program dla ANTIC####
                 dta   b($70)                        ;
                 dta   b($70)                        ;3x8 pustych linii
                 dta   b($70)                        ;
                 dta   b($42)                        ;linia w trybie 0(gr.0) i określenie nowego adresu obrazu
                 dta   b($00)                        ;LSB adresu
                 dta   b($90)                        ;MSB adresu
                 dta   c(' 11 razy znak o wartości 2 w ASCII ')  ;11 linijek w trybie 0
                 dta   b($41)                        ;skok i synchronizacja 
                 dta   b($00)                        ;LBS adresu programu Antica
                 dta   b($9A)                        ;MBS -||-
                 end

*Wartości wogóle się nie zgadzają, byłbym też wdzięczny za wytłumaczenie tego zjawiska.
Mam nadzieję że napisałem kod w dość przejrzysty sposób

2

lda $00
sta 560 ; POKE 560,PEEK(0)
lda #0
sta 560 ; POKE 560,0

Podobnie "cmp 0" -> "cmp #0", a można tę instrukcję pominąć, bo lda ustawia znacznik Z.

https://www.youtube.com/watch?v=jofNR_WkoCE

3

Taka prosta rzecz... Dzięki za tak szybką odpowiedź.

Chciałbym się jeszcze spytać czy ludzie zwykle tworzą czysto asemblerowskie programy czy częściej łączą z wysokopoziomowymi językami.

4

Tu nie ma zwykłych ludzi.

A na serio - większość softu to czysty assembler, ale są też fajne programy np. w Turbo Basicu se wstawkami assemblerowymi. Chyba główny problem b. duża strata pamięci na biblioteki, runtime'y, interpretery, itp. niezbędne w większości języków wysokiego poziomu...

http://www.5oft.pl/

5 Ostatnio edytowany przez Monsoft (2009-02-06 16:35:28)

No tak jak Pirx nadmienil, zazwyczaj to czysty assembler. Czasmi ludzie pisza w TB albo w Action lub nawet teraz w C.

BTW. Oczywiscie tan sam blad masz przy calej inicjacji Dlisty czyli ze starszym bajtem adresu tez.

6

hybryda Turbobasic'owa z assemblerem :) - http://www.atari8.info/trsdesktop.php

kod Turbobasic - kompilowany ze wstawkami w asm.

Kontakt: pin@usdk.pl

7

Czyli generalnie rzecz biorąc język zależy od projektu(np. Turbo Basic do tekstówki czy przygodówki, ASM+TBAS gry akcji, ASM strzelanki gdzie potrzeba więcej pamięci) i nie ma czegoś takiego że zaawansowani piszą w asmie a ci co dopiero zaczynają w Basicu?

Monsoft: Już działa mi program, ale dzięki że zauważyłeś. :D

8 Ostatnio edytowany przez Monsoft (2009-02-06 18:01:35)

Ogolnie gry w ktorych duzo zeczy sie ruszalo (czyli wiekszosc) jest napisana w assemblerze.

A co do poczatkow to roznie bywalo. Na poczatku to sie przepisywalo cos w basicku z gazet i ksiazki do basica a pozniej to roznie. Ja np. nie zaczynalem od basicka tylko od assa i wlasnie uzywajac pakietu QA. Jakos MAC65 mi nie podchodzil. Oczywiscie basic'a ciagle sie uzywalo np do generowania roznego rodzaju tablic itp aby pozniej to wrzucic do zrodlowki w assemblerze.

Tu moga sie wypowiedziec osoby ktore sa lub byly badziej kreatywne na scenie.

9

No, zaraz się zacznie dyskusja o wyższości... W każdym razie QA jest pozornie wygodniejszy od MAC-a na początku, kiedy się pisze proste wprawki, bo ma pełnoekranowy edytor, możliwość natychmiastowego uruchomienia itede. Ale kiedy się chce napisać napraw?e duży program, zaczyna się rzeźba, bo bufor edytora jest za mały, QA dysponuje nim rozrzutnie (nie kompresuje spacji, np.), asemblacja jest koszmarnie wolna itp. Taka pułapka na początkujących.

Na atarkę samą nie ma chyba niczego lepszego niż to: http://atariki.krap.pl/index.php/MAE Poza tym sa oczywiście cross-assemblery. Lista tutaj: http://atariki.krap.pl/index.php/Asembler

KMK
? HEX$(6670358)

10

Konrad wiem ze zaraz moze sie zaczac, ale nie bylo to moim zamiarem. Po prostu tak juz wyszlo i tyle. To tylko moja opinia. Ja nie pisalem zadnych kobyl wiec nie wiem jak to jest. Jedyna duza zecza ktora napisalem bylo DigiCMC ktorego i tak nie moge teraz nigdzie w sieci znalezdz, a jak znalazlem to ARC byl uszkodzony :(

11

Dzięki za odpowiedź. Poszperam, spróbuję wszystkiego po trochu i wyrobię sobie opinię na ten temat. :)

Chciałbym prosić jeszcze o jedną rzecz (nie chcę zakładać kolejnego tematu) znacie jakąś książkę lub artykuł który mówi o operacjach We/Wy i korzystaniu z urządzeń zewnętrznych (lub ich lista) po przeczytaniu których mógłbym napisać jakiś najprostrzy DOS czy Loader?

12

Znamy: http://atariki.krap.pl/index.php/SIO

Ale po co chcesz wyważać otwarte drzwi? Loaderów i DOS-ów są całe tony.

KMK
? HEX$(6670358)

13

Dla umięjętności, uważam ze mam ubogą wiedzę na ten temat. A po za tym lubię znać ogólne zasady działania programów z których korzystam.

Dzięki za pomoc, mam nadzieję że sobie poradzę :).

14

a moze tak wez 2-3 boot loadery deasembler i sam sprawdz jak dzialaja? najszybszy sposob nauki to podgladanie ;-)

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

15

Kanis napisał/a:

Chciałbym prosić jeszcze o jedną rzecz (nie chcę zakładać kolejnego tematu) znacie jakąś książkę lub artykuł który mówi o operacjach We/Wy i korzystaniu z urządzeń zewnętrznych (lub ich lista) po przeczytaniu których mógłbym napisać jakiś najprostrzy DOS czy Loader?

Książka: Wojciech Zientara "Mapa pamięci Atari XL/XE - Procedury wejścia/wyjścia". Są jeszcze trzy inne książki z tego cyklu "Mapa pamięci" (m.in. jedna o DOSach), ale ta jest zdecydowanie najbardziej godna uwagi.

https://www.youtube.com/watch?v=jofNR_WkoCE

16

xxl: Nie pomyślałem,  ale bym chciał najpierw ogarnąć podstawowe zagadnienia nim się rzucę na kod. Po za tym bym się sprzeczał ze to najszybszy sposób (albo ja jestem ułomny). Jak przerabiałem "Podstawy Programowania" Zientary to zawsze wolałem sam próbować napisać jakiś program opierając się na własnej wiedzy niż analizować o co chodziło danym przykładzie. Możesz powiedzieć że jestem nastawiony na spreparowaną papkę wiedzy którą wystarczy tylko wchłonąć no ale ten proces (w moim przypadku) przebiega o wiele szybciej( i chyba po to są książki i artykuły traktujące o komputerach).

Fox:Dzięki :), na pewno przejrzę.

17

znajdziesz ta ksiazke w http://tajemnice.atari8.info/ksiazki/index.html
btw. polecam przyjrzec sie bardziej ogolnie http://tajemnice.atari8.info/ ;)

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

18

Dzięki za zaoszczędzenie mi szukania :D.  Muszę przyznać że gazetę (z celulozy) się innaczej czyta niż wersję komputerową.

19

"Procedury we/wy" Zientary niewiele ci pomogą w "napisaniu najprostszego DOS-u lub loadera", bo tenże opisane tam procedury ma wykorzystywać, a nie dublować. Moga natomiast zaszkodzić, jeśli zapomnisz zajrzeć do tegoż autora "Podstawowe procedury systemu operacyjnego", gdzie na samym początku jest tablica skoków :P Albo tu: http://atariki.krap.pl/index.php/Tablica_skok%C3%B3w

Już prędzej pomogą ci w tym "Dyskowe systemy operacyjne", gdzie są listingi np. DOS-u 2.5 razem z opisem (aczkolwiek jest to opis Zientary, miejscami bałamutny).

KMK
? HEX$(6670358)

20

Nie zgodzę się z przedmówcą. "Procedury we/wy" pozwalają zrozumieć SIO i CIO, a to podstawa przy pisaniu loadera i DOSa. Przy okazji książka jest warta polecenia, bo opisuje ANTICa i GTIA. Nie mam wątpliwości, że to najlepsza książka z serii.

"DOSy" opisują DOS 2.0 (bodajże w całości jeśli chodzi o DOS.SYS), DOS XL (ZTCP to jakiś krótki rozdział) oraz DOS 2.5 (w postaci różnic do DOSa 2.0). Czy ktokolwiek jeszcze używa tych DOSów?
Można zajrzeć, ale trzeba mieć wcześniej opanowane "Procedury we/wy" i wiedzieć o tablicy skoków.

https://www.youtube.com/watch?v=jofNR_WkoCE

21

Fox, rozczarowujesz mnie. Od kiedy to opis GTIA i ANTIC-a przydaje się przy pisaniu, cytuję, "najprostszego DOS-a lub loadera"? "Procedury we/wy" mogą być użyteczną książką - wiem, bo zajeździłem na strzępy dwa egzemplarze, a teraz zajeżdżam trzeci - ale NIE DO TEGO CELU, jaki przyświeca autorowi pytania. Do zrozumienia SIO wystarczy wskazany przeze mnie artykuł z Atariki. A od "'zrozumienia CIO" (do czego we/wy się może faktycznie przydać) do napisania DOS-u jest jak stąd na Centaura.

No i oczywiście nie na temat jest, czy ktoś w ogóle uzywa DOS 2.0 & co. Oczywiście, że nikt, jednak ich listingi mogą posłuzyć za wzór, jak z grubsza mają wyglądać bebechy DOS-u.

KMK
? HEX$(6670358)

22

Jak widać w pierwszym poście, autor nie interesuje się wyłącznie DOSami/loaderami, więc opis ANTICa i GTIA może mu się przydać (tak jak napisałem "przy okazji").

"Procedury we/wy" jak najbardziej są właściwą lekturą przed napisaniem DOSa/loadera. Tę książkę trzeba przeczytać przed "DOSami" lub zamiast. Wspominając o archaiczności DOSów 2.x nie chodziło mi o bezużyteczność ich źródeł, lecz np. brak obsługi PERCOM, za to obsługę MEM.SAV i systemu plików DOS 2.5, dzisiaj praktycznie niewystępujących w przyrodzie.

https://www.youtube.com/watch?v=jofNR_WkoCE

23

Fox napisał/a:

Tę książkę trzeba przeczytać przed "DOSami" lub zamiast. Wspominając o archaiczności DOSów 2.x nie chodziło mi o bezużyteczność ich źródeł, lecz np. brak obsługi PERCOM, za to obsługę MEM.SAV i systemu plików DOS 2.5, dzisiaj praktycznie niewystępujących w przyrodzie.

Nie przekonałeś mnie. Jak się chce napisać DOS (lub loader), to źródła DOS-u (obojętnie jakiego, może być 2.0) są bardziej przydatne, niż opis tego, co atarka ma w ROM-ie. GTIA/ANTIC natomiast są do tego zupełnie niepotrzebne, i nie jest istotne przy odpowiedzi na konkretne pytanie, czym autor przypuszczalnie interesuje się poza tym.

A opis PERCOM jest w Atariki.

KMK
? HEX$(6670358)

24

moze tak spotkajcie sie przy piwie i strzelcie se po strzale?
wyzszosc jednej ksiazki nad druga...

kolo bedzie zainteresowany, to obie przejrzy...

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

25

drac030 napisał/a:

Jak się chce napisać DOS (lub loader), to źródła DOS-u (obojętnie jakiego, może być 2.0) są bardziej przydatne, niż opis tego, co atarka ma w ROM-ie.

Właśnie nie, bo nie będzie rozumiał tych źródeł. Jeśli np. chcesz napisać program używający biblioteki X, to najpierw przeglądasz źródła programów używających biblioteki X, czy opis biblioteki X ?

drac030 napisał/a:

GTIA/ANTIC natomiast są do tego zupełnie niepotrzebne, i nie jest istotne przy odpowiedzi na konkretne pytanie, czym autor przypuszczalnie interesuje się poza tym.

Nigdzie nie napisałem, że znajomość GTIA/ANTIC jest przydatna do pisania DOSów/loaderów. Poleciłem przydatną do tego książkę i zwróciłem uwagę, że książka zawiera też zupełnie inne informacje.

https://www.youtube.com/watch?v=jofNR_WkoCE