MAE
From Atariki
(Różnice między wersjami)
Wersja z dnia 02:05, 9 gru 2005 KMK (Dyskusja | wkład) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) (→Błędy w kompilatorze - świeża dostawa) |
||
Linia 1: | Linia 1: | ||
{{grafr|mae.png}} | {{grafr|mae.png}} | ||
- | '''Macro-Assembler-Editor''' - środowisko programowania dla Atari XL/XE autorstwa [[John Harris|Johna Harrisa]] składające się z edytora, asemblera i debugera. Charakteryzuje się następującymi cechami: | + | ... czyli Macro-Assembler-Editor - środowisko programowania dla Atari XL/XE autorstwa [[John Harris|Johna Harrisa]] składające się z edytora, asemblera i debugera. |
- | *używa rozszerzonej pamięci do przechowywania części źródła i tablicy etykiet, dzięki czemu użytkownik ma około 40 kilobajtów bufora na źródło (zależy od aktualnej wartości MEMLO) plus prawie drugie tyle na tablicę symboli | + | |
- | *obsługuje makrodefinicje, asemblację warunkową i etykiety lokalne | + | == Charakterystyka ogólna == |
- | *argumenty makrodefinicji podstawiane są jako ciągi tekstowe, przez co mogą mieć składnię taką, jak argumenty rozkazów (ważne zwłaszcza w trybach pośrednich i indeksowanych) | + | |
- | *obsługuje asemblację dla procesora [[65c816]] (oczywiście [[6502]] też) | + | *używa rozszerzonej pamięci do przechowywania kodu źródłowego, dzięki czemu użytkownik ma około 40 kilobajtów bufora na źródło plus prawie drugie tyle na tablicę symboli; |
- | *ma dosyć wygodny i bogaty w funkcje edytor działający w całości za pośrednictwem systemowego urządzenia "E:"; edytor ten niestety nie jest pozbawiony błędów | + | *obsługuje makrodefinicje, asemblację warunkową i etykiety lokalne; |
- | *z poziomu debugera dostępne są etykiety zawarte w źródle | + | *argumenty makrodefinicji podstawiane są jako ciągi tekstowe, przez co mogą mieć składnię taką, jak argumenty rozkazów (ważne zwłaszcza w trybach pośrednich i indeksowanych); |
- | *rozpoznaje do 15tego znaku w etykiecie | + | *obsługuje asemblację dla procesora [[65C816]] (oczywiście [[6502]] też); |
- | *może działać także w trybie 64-o i 80-cio kolumnowym (ten drugi tryb z użyciem [[XEP80]]) | + | {{grafr|mae64kol.png}} |
+ | *z poziomu debugera dostępne są etykiety zawarte w kodzie źródłowym; | ||
+ | *rozpoznaje do 15-go znaku w etykiecie; | ||
+ | *ma dosyć wygodny i bogaty w funkcje edytor działający w całości za pośrednictwem systemowego urządzenia "E:"; edytor ten w ostatnich wersjach (powyżej 1.1) niestety nie jest pozbawiony błędów; | ||
+ | *edytor, jako że używa systemowego urządzenia "E:", może działać także w trybie 64 (w trybie graficznym, na obrazku obok) i 80 kolumn (w trybie graficznym albo przez [[XEP80]] lub [[VBXE]]). | ||
+ | |||
+ | Najnowsza wersja to 1.3. | ||
+ | |||
+ | == Wady programu == | ||
+ | |||
+ | Jedynymi wadami MAE są błędy w edytorze i kompilatorze. | ||
+ | |||
+ | === Błędy w edytorze === | ||
+ | * Wyszukiwanie (Ctrl/F) nie wyszukuje wszystkich miejsc wystąpienia tekstu zgodnego z podanym wzorcem. Błąd ten wystepuje w MAE 1.2 oraz 1.3, nie ma go natomiast wersja 1.1 i wcześniejsze. | ||
+ | |||
+ | === Błędy w kompilatorze === | ||
+ | * Użycie etykiety o wielkości ponad 15 znaków, zwłaszcza kiedy przypisuje się jej wartość przez operator '=', może powodować zawieszanie się podczas asemblacji. Błąd ten nie występuje w MAE 1.0. | ||
+ | * '''LDA ($1234),Y''' jest akceptowane bez zastrzeżeń, mimo że nie ma takiego trybu adresowania. Kod wynikowy jest jak po '''LDA ($34),Y'''. | ||
+ | * Na '''LDA #$<1234''' program powinien zgłosić błąd składni, nie robi tego jednak. Kod wynikowy jest jak po '''LDA #$01'''. | ||
+ | * Poniższy kod powoduje złe działanie: | ||
+ | |||
+ | AA = BB | ||
+ | BB = CC | ||
+ | CC = 1 | ||
+ | .OR $0600 | ||
+ | LDA AA | ||
+ | |||
+ | Rozkaz '''LDA AA''' traktowany jest jako '''LDA 32768'''. W rzeczywistości kompilator powinien zgłosić błąd, gdyż etykieta '''AA''' pozostaje niezdefiniowana w trakcie drugiego przejścia asemblacji. | ||
+ | * Kod obliczający wartości wyrażeń arytmetycznych miewa problemy, jeśli pierwszą wartością w wyrażeniu jest 0, np. 0*n (gdzie n>0) daje w wyniku zawsze 2752512 (= $2a0000). Ale n*0 daje prawidłowy wynik. | ||
+ | * Podobne kłopoty występują przy obliczaniu wartości liczb ujemnych: -255 daje prawidłowe $FFFF01, lecz już -256 to $FFFE00 zamiast $FFFF00. Z kolei $FFFF00 jest wg programu równe tyle co -0. Jednak wyrażenia typu 0-256 i 0-0 są obliczane poprawnie (odpowiednio $FFFF00 i 0). | ||
+ | |||
+ | == Zobacz też == | ||
+ | * [http://www.mixinc.net/atari/mae.htm Instrukcja obsługi] (po angielsku) | ||
+ | |||
+ | == Download == | ||
+ | |||
+ | * [http://drac030.krap.pl/MAE-1.1.zip MAE v.1.1] | ||
+ | * [http://drac030.krap.pl/MAE-1.2-816.zip MAE v.1.2] - wersja dla [[65C816]] | ||
+ | * [http://drac030.krap.pl/MAE-1.3.zip MAE v.1.3] | ||
- | Więcej na temat MAE i pełną instrukcję obsługi można znaleźć tutaj: http://www.mixinc.net/atari/mae.htm | ||
[[Kategoria:Oprogramowanie Atari 8-bit]] | [[Kategoria:Oprogramowanie Atari 8-bit]] | ||
- | [[Kategoria:Asemblery]] | + | [[Kategoria:Języki programowania]] |
Aktualna wersja
... czyli Macro-Assembler-Editor - środowisko programowania dla Atari XL/XE autorstwa Johna Harrisa składające się z edytora, asemblera i debugera.
Spis treści |
[Edytuj]
Charakterystyka ogólna
- używa rozszerzonej pamięci do przechowywania kodu źródłowego, dzięki czemu użytkownik ma około 40 kilobajtów bufora na źródło plus prawie drugie tyle na tablicę symboli;
- obsługuje makrodefinicje, asemblację warunkową i etykiety lokalne;
- argumenty makrodefinicji podstawiane są jako ciągi tekstowe, przez co mogą mieć składnię taką, jak argumenty rozkazów (ważne zwłaszcza w trybach pośrednich i indeksowanych);
- obsługuje asemblację dla procesora 65C816 (oczywiście 6502 też);
- z poziomu debugera dostępne są etykiety zawarte w kodzie źródłowym;
- rozpoznaje do 15-go znaku w etykiecie;
- ma dosyć wygodny i bogaty w funkcje edytor działający w całości za pośrednictwem systemowego urządzenia "E:"; edytor ten w ostatnich wersjach (powyżej 1.1) niestety nie jest pozbawiony błędów;
- edytor, jako że używa systemowego urządzenia "E:", może działać także w trybie 64 (w trybie graficznym, na obrazku obok) i 80 kolumn (w trybie graficznym albo przez XEP80 lub VBXE).
Najnowsza wersja to 1.3.
[Edytuj]
Wady programu
Jedynymi wadami MAE są błędy w edytorze i kompilatorze.
[Edytuj]
Błędy w edytorze
- Wyszukiwanie (Ctrl/F) nie wyszukuje wszystkich miejsc wystąpienia tekstu zgodnego z podanym wzorcem. Błąd ten wystepuje w MAE 1.2 oraz 1.3, nie ma go natomiast wersja 1.1 i wcześniejsze.
[Edytuj]
Błędy w kompilatorze
- Użycie etykiety o wielkości ponad 15 znaków, zwłaszcza kiedy przypisuje się jej wartość przez operator '=', może powodować zawieszanie się podczas asemblacji. Błąd ten nie występuje w MAE 1.0.
- LDA ($1234),Y jest akceptowane bez zastrzeżeń, mimo że nie ma takiego trybu adresowania. Kod wynikowy jest jak po LDA ($34),Y.
- Na LDA #$<1234 program powinien zgłosić błąd składni, nie robi tego jednak. Kod wynikowy jest jak po LDA #$01.
- Poniższy kod powoduje złe działanie:
AA = BB BB = CC CC = 1 .OR $0600 LDA AA
Rozkaz LDA AA traktowany jest jako LDA 32768. W rzeczywistości kompilator powinien zgłosić błąd, gdyż etykieta AA pozostaje niezdefiniowana w trakcie drugiego przejścia asemblacji.
- Kod obliczający wartości wyrażeń arytmetycznych miewa problemy, jeśli pierwszą wartością w wyrażeniu jest 0, np. 0*n (gdzie n>0) daje w wyniku zawsze 2752512 (= $2a0000). Ale n*0 daje prawidłowy wynik.
- Podobne kłopoty występują przy obliczaniu wartości liczb ujemnych: -255 daje prawidłowe $FFFF01, lecz już -256 to $FFFE00 zamiast $FFFF00. Z kolei $FFFF00 jest wg programu równe tyle co -0. Jednak wyrażenia typu 0-256 i 0-0 są obliczane poprawnie (odpowiednio $FFFF00 i 0).
[Edytuj]
Zobacz też
- Instrukcja obsługi (po angielsku)
[Edytuj]