Ludzie listy piszą...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 $Al2Btł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&255czyli 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:
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
|