1

Hej!

Chciałem użyć tego narzędzia napisanego przez TeBe. Mam jednak jeden mały problem :) Na stronie wyczytałem:

Dodatkowo użytkownik sam może pomóc zdefiniować adresy od których zaczyna się kod zawierający rozkazy 6502 a od których zwykłe dane, albo tablice zawierające adresy bloków kodu lub danych.

możecie mnie oświecić jak to zrobić? W moim przypadku mam fragment pamięci ($700-$9ff). W tym wypadku między kodem programu występują teksty drukowane na ekranie...

<kod>,<string#1>,<kod>,<string#2>,<kod>,itd.

Chciałem disassemblerowi podać adresy w którym znajdują się stringi bo mi jest próbuje disassemblować i wychodzą głupoty.

Zupełnie nie mam pojęcia jak mogę wskazać mu lokacje zawierające dane, może ktoś wie?

2

to zawartość BAT-a którym testowałem disasembler

rem dis6502.exe seg0015.raw /a$2000 -bd$2d96
rem dis6502.exe seg0017.raw -a$0000 -bd$44 -bc$7c7 -bc$1879 -bc$1a9e -bc$1aa2 -bc$1ed8 -bc$1609 -bc$1614 -bc$16cb
rem dis6502.exe seg0022.dat -a$bf00 -s$84

dis6502 test.obx -a$2ec0 -bd$2f74 -bd$2fce -bd$2fde -bd$2ffc -bd$301a -bd$3038 -bd$3061 -bd$3081 -bd$30a1 -bd$30c1 -bd$30c2 -bd$30c3 -bd$30df -bd$30e0 -bd$30e1 -bad$2ec0 -bd$5300 -d

pause

a$..... - na początku podajemy adres od którego zaczyna się disasemblacja, koniecznie

bc$.... - adres od którego zaczyna się kod 6502
bd$.... - adres od którego zaczynają sie dane, czyli nie jest to kod 6502

bac$.... - tablica z adresami a(word) bloków kodu 6502, czyli np. tablica z adresami procedur
bad$.... - tablica z adresami a(word) bloków danych, czyli np. tablica z adresami bitmap

jeśli w programie występują jakieś skoki typu JSR, JMP, BEQ, BNE itp. to disasembler sam będzie aktualizował informacje o tym gdzie jest kod 6502 i odpowiednio reagował

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

3 Ostatnio edytowany przez seban (2008-06-17 15:01:15)

Hej!

Dzięki za info! Prawdę mówiąc nigdzie nie doczytałem się informacji o opcjach -$b. Program po wywołaniu o nich nie wspomina :)

CPU6502 DisAsembler v1.7 by Tebe/Madteam
Syntax: DIS6502 source [options]
/d       save as data, example: dta $..,$..
/i       change adres to name, example: $d301 -> portb (default OFF)
/m       mnemonic OFF (default ON)
/a$xxxx  adres of disasembled memory block (default $0400)
/o$xxxx  skip $xxxx byte of memory block (default 0)

w dodatku pisze że jest wersją 1.7... TeBe czy ty masz jakąś nowszą wersję niż ta co jest na waszym WWW?

Wnioskuję iż masz jednak jakąś nowszą wersję bo w tej ze strony trzeba dawać "/" zamiast twoich "-" podając parametry. W dodatku działa mi tylko jedno wywołanie /bd$, mimo wpisania następnych adresów program usilnie je próbuje disassemblować.

Mam jeszcze jedną propozycję... nie dało by się dodać opcji np. /bs$xxxx, która określała by adres stringu zakończonego $9b :) (wiem, wiem marudzę :] ) a już rewelacyjnie by było aby dało się podać czy ATASCII, INTERNAL i znacznik końca tekstu :) np. /bs$920,A,$9b (znaczy string od adresu $920 w ATASCII, znak końca stringu $9b) lub /bs$920,I,$00 -> czyli string od $920, kody Internal, znacznik końca $00.

BTW, rewelacyjny program pomógł już w kilkunastu sprawach :) dzięki za niego! pozwala oszczędzić dużo czasu.

pozdrawiam
Seban

4 Ostatnio edytowany przez tebe (2008-06-17 17:43:02)

racja, info poprawiłem na stronie ale nie dałem nowej paczki, teraz już jest OK, wersja 2.0 w pliku 'dis6502.7z'

CPU6502 DisAsembler v2.0 by Tebe/Madteam
Syntax: DIS6502 source [options]
-d              save as data, example: dta $..,$..
-l              label name, example: $d301 -> portb (default OFF)
-m              mnemonic OFF (default ON)
-a$xxxx         address of disasembled memory block (default $0400)
-s$xxxx         skip $xxxx bytes of begining memory block (default 0)
-bc$xxxx        block code at address $xxxx
-bd$xxxx        block data at address $xxxx
-bac$xxxx       block with address of new code blocks
-bad$xxxx       block with address of new data blocks
*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

5 Ostatnio edytowany przez seban (2008-06-17 19:19:02)

dzięki WIELKIE :D