1

Temat: Adres startowy programu, adres ladowania,

Pytanie , ak znalezc adres spod ktorego sie gra,program uruchamia? Wiem ze kazda inaczej ale moze sa jakies ogolne zasady? W jaki obszar pamieci  sie laduje mozna poznac po naglowku z tego co pamietam ale tez nie pamietam detali.Mam potem zdissasemblerowany program i chcce go uruchomic. Skad mam wiedziec gdzie on startuje? Kiedys to robilem jeszcze na podstawie artykolow z  Bajtka i Komputera typu znajdz niesmiertelnosc. Nie bic, dopiero zaczynam. Jakies zrodla zebym doczytal ?

Dwa korce ziemniaków, gęsich jajek kopa, żeby móc to połknąć, tęgiego trza chłopa. GG3456993

2

Odp: Adres startowy programu, adres ladowania,

Atariki Twoim przyjacielem:

http://atariki.krap.pl/index.php/Binarny_plik_DOSu

:)

I Ty zostaniesz big endianem...

3

Odp: Adres startowy programu, adres ladowania,

A ktoś mi pomoże, z tym że chodzi o Commodore.
Jak z naglowka prg odczytać gdzie u nich siada program ????

4

Odp: Adres startowy programu, adres ladowania,

ups... :-) Nie to forum chyba ...

może lepiej:

http://forum.c64power.com/

pomidor

5

Odp: Adres startowy programu, adres ladowania,

Jeżeli chodzi o C64 to z tego co pamiętam to program typu .PRG zawsze ale to zawsze ładuje się u nich pod $801, i może mieć maks. rozmiar 38911 bajtów. Programy wykonywalne na commodore muszą udawać program BASIC-owy. Ładowane są BASIC-ową komendą:

 LOAD "nazwa",8,1

Każdy program składa się więc z nagłówka identycznego, wskazującego na adres ładowania $0801 (dwa pierwsze bajty), potem następuje kawałek stokenizowanego programu w BASIC-u, najczęściej jest to coś w stylu:

SYS 2069

Na instrukcja pozwala na uruchomienie wczytanego programu od podanego za SYS adresu. Potem już leci program, najczęściej spakowany różnymi cruncherami, packerami. Wydaje mi się iż właśnie przez ograniczenie, iż ładowane programy muszą się mieścić w buforze interpretera BASIC-a na Commodore powstało tyle programów pakujących :)

pozdrawiam
Seban

Ostatnio edytowany przez seban (2008-08-27 09:04:22)

6

Odp: Adres startowy programu, adres ladowania,

Zaxon: możesz też otworzyć sobie daną binarkę w SuperPakerze i wszystkie bloki będziesz miał jak na dłoni.

grzybson/SSG^NG

7

Odp: Adres startowy programu, adres ladowania,

Co do Atari to jeszcze możesz podejrzeć strukturę pliku, używając programu Jindrich Kubec-ki:

http://jindroush.atari8.info/data/asoft/chkexe_bin.zip

odpalasz chkexe.exe twój_plik.xex i wypluwa na ekran strukturę pliku, dla przykładu jak to wygląda:

chkexe.exe zorro.xex
ChkExe v2.71 (c) 1998-2000 Jindrich Kubec <kubecj@asw.cz>
Binary file:  zorro.xex
[0002] Block:  8000-8062 (0063)
[0069]      :  Unexpected second 0xffff format header
[006B] Block:  4000-49FF (0A00)
[0A6F] Init :  8012
[0A75]      :  Unexpected second 0xffff format header
[0A77] Block:  4A00-53FF (0A00)
[147B] Init :  8012
[1481]      :  Unexpected second 0xffff format header
[1483] Block:  5400-5DFF (0A00)
[1E87] Init :  8012
[1E8D]      :  Unexpected second 0xffff format header
[1E8F] Block:  5E00-67FF (0A00)
[2893] Init :  8012
[2899]      :  Unexpected second 0xffff format header
[289B] Block:  4000-48FF (0900)
[319F] Init :  8012
[31A5]      :  Unexpected second 0xffff format header
[31A7] Block:  4900-4EFF (0600)
[37AB] Init :  8012
[37B1]      :  Unexpected second 0xffff format header
[37B3] Block:  1480-4D7F (3900)
[70B7]      :  Unexpected second 0xffff format header
[70B9] Block:  5BE8-84E7 (2900)
[99BD]      :  Unexpected second 0xffff format header
[99BF] Block:  5000-5030 (0031)
[99F4] Run  :  5000
Ok!

Bardzo dawno temu (za czasów Code3) napisałem dwa prościutkie tego typu programy dla Atari. FileTracer (FT.COM) oraz Fast FileTracer (FFT.COM). Funkcję spełniały one ta samą, różniły się prędkością działania. Pierwszy czytał analizowany program bajt po bajcie (nie miał dużego zapotrzebowania na pamięć), drugi używał bufora przez co odczyt poszczególnych bloków był szybki - lecz kosztem zajęcia całego RAM od MEMLO to $BC1F.

pozdrawiam
Seban

Ostatnio edytowany przez seban (2008-08-27 13:03:09)

8

Odp: Adres startowy programu, adres ladowania,

Na Commodore to dokładnie jest tak: - 2 pierwsze bajty pliku zawierają adres ładowania

Z tym, że komenda: load"nazwa",8,1     
załaduje program pod właśnie ten adres (mówi o tym ta 1 po przecinku, 8 to nr urządzenia - 1sza stacja dysków)

natomiast komenda: load"nazwa",8
załaduje program pod adres $0801 (bez względu na to co jest w nagłówku)

9

Odp: Adres startowy programu, adres ladowania,

Zyga, a nie jest odwrotnie? tnz. LOAD "...",8,1 ładuje zawsze pod $0801, a LOAD "...",8 ładuje pod adres wskazany w dwóch pierwszych bajtach?

10

Odp: Adres startowy programu, adres ladowania,

Nie jest, load "nazwa",8 ładuje ignoruje nagłówek i ląduje dane od początku pamięci dostępnej dla BASIC czyli $0801, dodając "1" ładujemy zgodnie z nagłówkiem.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.

11

Odp: Adres startowy programu, adres ladowania,

zyga, dely: faktycznie namieszałem :) Macie racje :)

pozdrawiam
Seban

12

Odp: Adres startowy programu, adres ladowania,

Wlasnie w zasadzie sie pytalem bo pamietam z c64, load, potem poke potem sys i byla niesmiertelnosc. Na Atari do tego mialem program pracowicie wpisany z Bajtka w Basicu, ladowal mi gre, moglem wprowadzic zmiany, nawet kod w ascii wyswietlal, potem nagranie spowrotem i juz byla gierka z niesmiertelnoscia , ktos go kojarzy?

Dwa korce ziemniaków, gęsich jajek kopa, żeby móc to połknąć, tęgiego trza chłopa. GG3456993

13

Odp: Adres startowy programu, adres ladowania,

Zamiana Napisów się nazywał.

Czy możecie wyjaśnić, Stirlitz, dlaczego wasz służbowy adres stirlitz@rsha.gov.de ma aliasa justas@gru.su?
Nie czytam PM. Proszę używać e-mail.