C64Power Forum

Software => Programowanie => Wątek zaczęty przez: Esio w 19 Sierpnia 2013, 15:58

Tytuł: Odzyskiwanie skasowanego programu z pamięci
Wiadomość wysłana przez: Esio w 19 Sierpnia 2013, 15:58
100 lat temu jak bawiłem się basic-em na C64 nie wiem jakim sposobem po wpisaniu któregoś POKE udawało się wylistować wcześniej skasowany program poleceniem NEW, a nawet odzyskać jego część po resecie z carta. Dorzucę nawet, że dało się nawet odczytać jego resztki po wyłączeniu komputera na ułamek sekundy(hardcore version). Czy ktoś z was zna może te magiczne liczby ? Chciałem spróbować czy to jest możliwe tylko na realnej maszynie czy emulator też to potrafi.
Tytuł: Odzyskiwanie skasowanego programu z pamięci
Wiadomość wysłana przez: Mikra_Lbn w 19 Sierpnia 2013, 22:16
Polecenie NEW zeruje dwie pierwsze komórki pamięci, w których zapisany jest program (standardowo 2049 i 2050 czyli $0801 i $0802). W tych dwóch bajtach jest zapisany odnośnik (link) do kolejnej linii programu.
Do odpowiedniego ustawienia wartości tych komórek przyda się monitor assemblera, w którym będzie można szybko podejrzeć pamięć C64. Jeśli program był zapisany od adresu $0801, to kolejne baty oznaczają:
$0801 młodszy bajt linku
$0802 starszy bajt linku
$0803 młodszy bajt numeru linii
$0804 starszy bajt numeru linii
$0805 tu zaczynają się polecenia pierwszej linii programu, która (jak każda inna) kończy się komórką pustą ($00)
Dodając 1 do adresu pierwszej pustej komórki otrzymujesz adres, który trzeba wpisać do $0801 i $0802.

W emulatorze ten sposób też działa. Polecenie OLD z Final Cartidge też. \"\"