1

Zaczalem sobie pomalutku uczyc sie asemblera na malucha, korzystajac z kursu TeBe (dzieki :). Znam asembler na mikrokontrolery 8051, Atmelki 90... i inne takie i przyzwyczailem sie do narzedzi typu asembler+debuger+symulator w jednym. Szczegolnie ten ostatni jest mi potrzebny na wczesnym etapie rozwoju :) Wiecie, nie chce odpalac prograu pod emulatorem - chce zobaczyc krok po kroku co moja procedurka robi ze stosem, pamiecia, flagami stanu, itp...
Znalazlem w sieci takie cos: http://home.pacbell.net/michal_k/6502.html znalazlem tez kilka innych, ale moze mi doradzicie czy jest jakies bezkonkurencyjne narzedzie tego typu dla 6502 (moze wrecz dedykowane dla programujacych na Atari...)?
Dobrze by bylo gdyby symulator nie korzystal z pliku zrodlowego asm, jesli mam pisac w makroasemblerze xasm i uzywac jego pseudorozkazow...

2

No, jest MAE, które ma edytor, kompilator i debugger w jednym. Debugger ma, jak każdy debugger, opcje śledzenia programu, aczkolwiek nie powiem, żebym kiedykolwiek z niej korzystał.

KMK
? HEX$(6670358)

3

Wraz z QA był dołączany BugHunter, używałem go ostatnio z 10 lat temu:)
Szkoda, że emulator nie ma zintegrowanego debuggera, jak np. emulek z80 którego kiedyś używałem...

: 404. Stopka not found

4

Ale emulator (Atari 800 Win) ma wbudowany monitor, którym można wszystko przejżec. Nie da się nim co prawda podglądać działania programu krok po kroku, ale na pewno łatwiej nim dociec co się zwaliło po zwisie, niż na prawdziwym Atari.

Ja deabuggera MAE uzywałem dość często i muszę przyznać, że jest to bardzo dobre narzędzie (czego nie mogę powiedzieć o Bug Huntrze): ˇ praca krokowa ;)
ˇ pułapki na adres, stan procesora
ˇ monitor pamięci i rejestrów
ˇ wbudowany prosty asembler
ˇ deasemblacja na dowolne urządzenie (E:, D:, itp.)
ˇ podgląd wartości etykiet (jeśli przejdziemy do debuggera po asemblacji programu)
ˇ wyszukiwanie referencji
ˇ funkcje uzytkownika
ˇ prawie cała pamięć dla programu (debugger zajmuje kilkaset bajtów poniżej $C000, reszta jego kodu siedzi w banku)
ˇ długo jeszcze by wymieniać ;)

Zawsze mam rację, tylko nikt mnie nie słucha.

5

Akurat trochę teraz siedzę nad poprawkami do Atari800Win PLus i między innymi dodałem sporo opcji debugujących. Na razie jednak używam tego sam, bo nie chciałbym wypuszczać emulatora bez porozumienia z głównym autorem, a z nim kontakt mi się z lekka urwał (trochę meilowaliśmy w wakacje a potem cisza).

Aby odpackować teksty trzeba najpierw odpackować  program do ich odpackowywania - Energy #1

6

A moze przydalby Ci sie mlody (hehe) programista jako betatester tych opcji debugujacych? :D

[ Dodano: Pią Lis 12, 2004 12:54 pm ]
Wlasnie, zapomnialem dodac, ze jak juz mam xasm pod winde + emulator to debuger/symulator bylby znacznie wygodniejszy w obsludze pod winde a nie pod atari. Ja zawsze mam problem jak na ekranie 1000x700 pomiescic wszystkie wymagane informacje (program, ze 2 podglady pamieci, rejestrow, timerow,...). Na Atari to musi byc masakra.

7

Bo jest, dlatego nie używałem nigdy BugHuntera ani podobnych rzeczy.
Na PC obecnie jest podobnie, gdyż wszystkie zmiany są wprowadzone do monitora, czyli obsługa całości jest w stylu linuksowego gdb. Ciągle chcę się zabrać za graficzne rozszerzenie debuggera, ale nie mogę się zmobilizować  :(

Aby odpackować teksty trzeba najpierw odpackować  program do ich odpackowywania - Energy #1

8

gdb-style zupełnie wystarczy na początek, ja stawiam wino jak ktoś zrobi gdb-like uruchamianie programu, z: s,n,up,do,b,c,l, etc...
Tylko musi być możliwość załadowania równolegle źródełek (albo outputu x-asma) :)

: 404. Stopka not found

9

Weź mi te opcje przetłumacz, bo nigdy w życiu z własnej woli gdb nie używałem :-) Moja ulubiona metoda debuggingu to printf  :D
Wczytywanie outputu z xasma jest, ale tylko po to aby załadować wartości etykiet, dzięki temu można zrobić coś w stylu:
d start
m table
i inne tego typu  :D
No i odblokowałem opcje, które były w oryginalnym Atari800 i zostały z niewiadomych przyczyn zablokowane w Atari800Win PLus.

Aby odpackować teksty trzeba najpierw odpackować  program do ich odpackowywania - Energy #1

10

s-step (into), czyli jezeli nastepna instrukcja jest JSR to wywola to JSR i zacznie debugowac tam
n-next, jezeli to JSR, to poczeka az JSR wroci
up-pojdzie 'wyzej' w stosie wywolan (czyli pokaze kto nas wolal)
do-to samo nizej
b-ustawi breakpoint (bez parameteru - tu gdzie jestesmy, z paramterem - adres lub linia kodu)
c-continue, czyli niech sie program dalej wykonuje do momentu zatrzymania
l-listuj

co do ladowania zrodelek, to x-asm produkuje taki fajny pliczek jesli sie uzyje odpowiedniej opcji, w ktorym jest pomieszany wygenerowana binarka ze zrodlem. super by bylo jakby wciskajac 'l' (list), o ile dla danego fragmentu pamieci kod jest 'zywcem' z x-asma, widac byloby taki uklad kodu (i komentarzy!)  jak w xasmie. ma to oczywiscie pewne problemy, np co zrobic z makrami, wiec mozna by bylo zrobic dwa rodzaje pracy - czysty tryb 6502 i x-asm :)

jezeli uzywasz 'printf' do debugowania zamiast gdb... to znaczy ze nie jestes dobrym programista (cytat z mojego promotora, ktory programista jest niesamowitym) :)
oczywiscie printf tez sie przydaje, ale nie zastepuje gdb jednak.

: 404. Stopka not found

11

Zajrzyjmy do helpa monitora:

s-step (into), czyli jezeli nastepna instrukcja jest JSR to wywola to JSR i zacznie debugowac tam

G - Execute 1 instruction

n-next, jezeli to JSR, to poczeka az JSR wroci

O - Step over the instruction

up-pojdzie 'wyzej' w stosie wywolan (czyli pokaze kto nas wolal)

Nie jestem pewien, ale chyba:
R - Execute until return

do-to samo nizej

Tu już nie rozumiem kompletnie, ale może chodzi o to:
JUMPS - list last locations of JMP/JSR
albo o to:
STACK - list stack (jeśli są tam adresy powrotne z JSR to je pokaże)

b-ustawi breakpoint (bez parameteru - tu gdzie jestesmy, z paramterem - adres lub linia kodu)

B - breakpoint (parametry na breakpoint to zawartość każdego z rejestrów CPU oraz typ rozkazu właśnie wykonywanego (zapisujący do pamięci, odczytujący czy dowolnie)) Do tego jeszcze AND i OR. Można na przykład walnąć breakpoint gdy A >E0 i zapis do komórki w zakresie C000-CFFF lub X<10 i ustawiony tryb dziesiętny :D

c-continue, czyli niech sie program dalej wykonuje do momentu zatrzymania

CONT - continue emulation

l-listuj

D - dissasemble memory

co do ladowania zrodelek, to x-asm produkuje taki fajny pliczek jesli sie uzyje odpowiedniej opcji, w ktorym jest pomieszany wygenerowana binarka ze zrodlem. super by bylo jakby wciskajac 'l' (list), o ile dla danego fragmentu pamieci kod jest 'zywcem' z x-asma, widac byloby taki uklad kodu (i komentarzy!)  jak w xasmie. ma to oczywiscie pewne problemy, np co zrobic z makrami, wiec mozna by bylo zrobic dwa rodzaje pracy - czysty tryb 6502 i x-asm :)

Wiem, o tym pliku, ale właśnie z powodu trudności dopasowania disasemblowanego kodu do jego postaci na razie nic z tym nie robię. Może kiedyś wpadnę na jakiś ciekawy pomysł.

jezeli uzywasz 'printf' do debugowania zamiast gdb... to znaczy ze nie jestes dobrym programista (cytat z mojego promotora, ktory programista jest niesamowitym) :)
oczywiscie printf tez sie przydaje, ale nie zastepuje gdb jednak.

Daj w moje łapki tego promotora  :twisted:
A poza tym moje programy działają od razu bez konieczności debugowania. Specjalnie staram się ich nie uruchamiać, aby się przez przypadek nie okazało, że jest inaczej :D

P.S. Większość z tych opcji debugujących jest w emulatorze, tylko została zablokowana.
P.S. 2 Dostanę to wino???

Aby odpackować teksty trzeba najpierw odpackować  program do ich odpackowywania - Energy #1

12

Daj w moje łapki tego promotora  :twisted:
A poza tym moje programy działają od razu bez konieczności debugowania. Specjalnie staram się ich nie uruchamiać, aby się przez przypadek nie okazało, że jest inaczej :D

:)

P.S. Większość z tych opcji debugujących jest w emulatorze, tylko została zablokowana.
P.S. 2 Dostanę to wino???

oOOOOoooooOoOOooOOooOooo!
to moja nie wiedziała.
To jakieś straszne draństwo, że zablokowali. Czekam na wersję odblokowaną :)
masz wino, tylko się przypomnij :)

: 404. Stopka not found

13

To jakieś straszne draństwo, że zablokowali. Czekam na wersję odblokowaną

Chciałeś powiedzieć: skrakowaną? :F

14

Ja zawsze mam problem jak na ekranie 1000x700 pomiescic wszystkie wymagane informacje (program, ze 2 podglady pamieci, rejestrow, timerow,...). Na Atari to musi byc masakra.

Panowie, bez jaj. Po co to wszystko mieć na ekranie? To - wartości rejestrów, stany znaczników, operacje wykonywane przez rozkazy - widzi się po prostu na generowanym przez debugger listingu kodu. Debugger, który nie może pomieścić istotnych informacji na ekranie 1024x768 może potrzebny jest przy łamaniu cudzych programów, ale do śledzenia własnych wystarczy 40x24 (= debugger MAE).

Poza tym, ale to moja prywatna opinia, jeśli ktoś się uczy asemblera, to uzależnianie się od debuggera na tym etapie jest największą krzywdą, jaką sobie można zrobić na przyszłość. Albowiem do wykrywania błędów we własnych programach wcale nie jest potrzebny debugger, tylko umiejętność analizy kodu, a w wyrobieniu tej umiejętności debugger akurat przeszkadza, bo odmóżdża już na samym wstępie.

KMK
? HEX$(6670358)

15

się uczy asemblera, to uzależnianie się od debuggera na tym etapie jest największą krzywdą, jaką sobie można zrobić na przyszłość. Albowiem do wykrywania błędów we własnych programach wcale nie jest potrzebny debugger, tylko umiejętność analizy kodu, a w wyrobieniu tej umiejętności debugger akurat przeszkadza, bo odmóżdża już na samym wstępie.

Ja przez pierwsze 3 lata nie wiedziałem że MonST ma opcje śledzenia kodu :-D

What can be asserted without proof can be dismissed without proof.