Tajemnice ATARI

Ludzie listy piszą...

    Michał Mik, uczeń I klasy LO

Drogi Michale! Bardzo mnie cieszy Twój stosunek do informatyki i komputerów. Spróbuję odpowiedzieć na Twe pytania:

1. Działanie instrukcji DTA

Rozkaz DTA umieszcza w kolejnych komórkach pamięci dane, które określa argument tego rozkazu. Miejsce (adres) w pamięci, gdzie zostaną umieszczone te dane, wynika z aktualnego stanu "licznika programu", czyli zależy od poprzedzającego rozkazu ORG i (lub) od innych rozkazów, których kody zostały umieszczone w pamięci.

Przykładowy fragment programu:
      ORG $600
      LDA #$24
      DTA C'ABC'
      DTA A($1234)
umieści w pamięci począwszy od adresu $600 następujący ciąg bajtów (szesnastkowo): A9, 24, 41, 42, 43, 34, 12. Łatwo to sprawdzić, np. Wglądownicą z XLF-a. Warto spostrzec, że adres $1234 z ostatniej linijki zapisuje się w pamięci jako 34, 12, czyli najpierw "młodszy" bajt, potem "starszy". Można też dane grupować w jednym rozkazie, o ile się zmieszczą. Tu na przykład ostatnie dwie linijki można zastąpić jedną:
      DTA C'ABC',A($1234)
2. Jak zamienić .BYTE, .SBYTE, itd. MAC-a na rozkazy MAC-a w QA?

Rozkaz DTA nie jest kopią żadnego z rozkazów MAC-a. Niektóre z MAC-owych konstrukcji generujących dane można niemal automatycznie przenieść do QA, z innymi czeka Cię trochę więcej zabawy. Podstawowa różnica polega na tym, że MAC ma różne rozkazy do różnych typów danych, a QA tylko jeden rozkaz, a typ danych wynika ze sposobu zapisu argumentu. Na przykład:
      .BYTE "ABC",$17
      .SBYTE "DEF",20
      .WORD 65535,$A12B
      .DBYTE $Al2B
tłumaczy się na:
      DTA C'ABC',B($17)
      DTA D'DEF',B(20+64)
      DTA A($A12B)
      DTA H($A12B),L($A12B)
albo nawet na:
      DTA C'ABC',B($17),D'DEF'B(20+64),A($A12B),A($2BA1)
Jak widać, .BYTE tłumaczy się na DTA typu B lub C.
.WORD tłumaczy się na DTA typu A.
.SBYTE (konwersja na kody ekranowe) odpowiada DTA typu D dla napisów, natomiast liczbowe dane trzeba przetłumaczyć w pamięci (w praktyce taka potrzeba prawie nigdy się nie zdarza).
.DBYTE działa podobnie jak .WORD, z tym, że zapisuje bajty w odwrotnej kolejności: najpierw starszy, potem młodszy (przydatność tego jest znikoma) - w DTA można użyć typu B lub C, a nawet A, o ile umiesz sobie przestawić bajty "w głowie".

Często używane w MAC-u konstrukcje:
      .BYTE ADRES/256
      .BYTE ADRES&255
czyli wycięcie starszego i młodszego bajłu ze słowa ADRES, można zastąpić w QA:
      DTA H(ADRES),L(ADRES)
Możnaby się pokusić o skonstruowanie automatycznego translatora danych z formatu MAC na QA. Może podjąłbyś się tego zadania? Chętnie wydrukujemy (i nagrodzimy!) taki program. Nie musi być on zresztą napisany w języku asemblera. Z powodzeniem wystarczy tu C, ACTION, BASIC... Zapraszamy też do rywalizacji innych Czytelników!

3. Podstawowe różnice między MAC-em, a QA ilustruje tabelka zamieszczona niżej:

- MAC65 QuickAssembler 1.0
wielkość 16085 bajtów 12329 bajtów
edytor prymitywny (jak w BASIC-u) całoekranowy, szybki, wygodny
max dłudość wiersza 128 znaków 64 znaki
tekst programu na dysku/kasecie postać stokenizowana, niedostępna dla innych programów tekst ASCII, łatwy do obróbki innymi programami
numery wierszy niezbędne nie używa się
pracuje z DOS-em DOS XL, inaczej bywają kłopoty każdym
praca z magnetofonem krańcowo utrudniona wygodna, działają także wszelkie systemy "turbo"
makroroprocesor, asemblacja warunkowa jest brak
szybkość asemblacji bardzo duża duża
możliwość wykonania napisanego programu brak jest
wbudowany debugger brak wielce uproszczony
debugger zewnętrzny BUG65 konwersacyjny nowoczesny, całoekranowy
dostępność opisu szukajcie, a znajdziecie sprzedawany zawsze z opisem po polsku
przykłady programów możliwe do zdobycia dołączone przez producenta, obecne na łamach "TA"
gwarancja brak (kopia piracka) producent gwarantuje poprawne działanie programów


4. Tytuły książek o programowaniu.

Chadwick Ian "Mapping the Atari"

Eichler Lutz, Grohmann Bernd "Atari 600 XL/800 XL Intern"

Praca zbiorowa "De Re Atari - A guide to effective programing"

Zaks Rodney "Programming the 6502"

Ruszczyc Jan "Assembler 6502"

Janusz B. Wiśniewski



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001