atarionline.pl Odzyskiwanie programu w BASICu - Forum Atarum

    Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

    • :
    • :

    Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

      • 1: CommentAuthormono
      • CommentTime21 Nov 2009 19:11
       
      Czy spotkaliście się z jakimiś narzędziami do odzyskiwania przypadkowo skasowanego (np. za pomocą NEW) programu w BASICu?
      • 2: CommentAuthorMaciek
      • CommentTime21 Nov 2009 20:11
       
      widziałem coś takiego u kolegi na commodore. Korzystał z jakiegoś kartridża podczas "bazylowania" po new mógł wpisać old i miał z powrotem stary program.
      • 3: CommentAuthormono
      • CommentTime21 Nov 2009 20:11
       
      Heh. Ale mnie chodziło o taką funkcjonalność na Atari :) Ośmiobitowym na dodatek.
      • 4: CommentAuthorMaciek
      • CommentTime21 Nov 2009 21:11
       
      Wiem, wiem... mnie ciekawi dodatkowo czy możnajakoś odzyskać plik z dyskietki, ostatnio wpisałem zamiast enter "d:dupa.lst" list "d:dupa.lst" i nadpisałem sobie niechcący kilkaset linijek :/ Alenie będę robił offtopu
      • 5: CommentAuthormono
      • CommentTime21 Nov 2009 22:11 zmieniony
       
      Zależy od tego, jak dos zarządza powierzchnią dysku. Ale nie wiem czy na Atari są dosy, które nadpisują sektory usuniętych/nadpisanych plików dopiero kiedy skończy się miejsce na dysku. DOS 2.5 na 100% tego nie robi, bo nadpisując plik najpierw go kasuje i zwalnia bity odpowiadające sektorom pliku w tabeli VTOC. Potem zapisuje nowy plik i bierze po kolei wolne numery sektorów wg wolnych bitów z tabeli VTOC. Moim zdaniem nadpisał się stary plik.
      Jest jednak pewna szansa. Jeśli przed LIST "D:DUPA.LST" usunąłeś jakiś plik z dyskietki, którego sektory były na dysku przed sektorami pliku DUPA.LST, to część pliku może jeszcze istnieć. Podejrzyj Turbo Watsonem ten dysk i zobacz najpierw w katalogu dysku (spod Watsona) który id ma twój plik, po czym zobacz w mapie dysku, czy twojemu plikowi nie odpowiadają sektory w różnych miejscach dysku. Jeśli tak, sprawdź począwszy od pierwszego sektora, który zajmuje twój plik (znowu wg katalogu) czy linki wskazują na wszystkie sektory wg mapy. Jeśli nie, to pozostałe są starymi sektorami twojego pliku. Można sprawdzić ich linki na jakie sektory wskazują i czy to jest np koniec starego pliku. Jeśli tak, można dość łatwo odzyskać plik tworząc ręcznie wpis w katalogu i wskazując pierwszy sektor we wpisie na pierwszy sektor reszty starego pliku. Taki plik powinien się dać odczytać mimo błędnego nru pliku w linkach. Po odczytaniu usuń po prostu wpis w katalogu. Ważne, żeby do tego momentu niczego nie zapisywać na takim dysku, bo może się zepsuć i dalsze zapisy zniszczą Ci dane na dysku. Po usunięciu ręcznie wprowadzonego wpisu w katalogu dyskietka powinna działać sprawnie.
      Ale to zadziała dla DOS2x i XL, ale np. dla Sparty już nie. Sparta ma dla skasowanych plików zdaje się polecenie UNDELETE lub UNERASE (nie wiem na 100%), ale ona również raczej nie wykorzystuje nie zapisywanej dotąd powierzchni dysku w pierwszej kolejności. Ale mogę się mylić.
      • 6: CommentAuthormono
      • CommentTime21 Nov 2009 23:11 zmieniony
       
      No dobra. Mam coś takiego jak w załączniku.
      Ładuje się to od $480..$599 i analizuje co jest w pamięci.
      Na razie nie odzyskuje nazw zmiennych więc na ekranie po wylistowaniu będą krzaki w nazwach, które zostały nadpisane.
      Nie wszystko da się odzyskać. Największe problemy są z programem, który nie wykorzystuje ani jednej zmiennej!, bo jego część jest nadpisywana przez NEW i wprowadzony później wiersz w trybie bezpośrednim.
      Jeśli użyto przynajmniej jednej zmiennej wtedy jest łatwiej, bo tablica nazw i wartości zmiennych znajduje się w pamięci przed programem i to ona zostaje nadpisana.

      Sposób postępowania w przypadku omyłkowego wykonania instrukcji NEW:
      1. Jak najszybciej przejść do DOSa instrukcją DOS.
      2. Uruchomić program UNEW.OBX.

      Jak to działa?
      Program ustawia się na końcu ostatniej instrukcji wprowadzonej przez użytkownika w trybie bezpośrednim i szuka pierwszej poprawnej linii w BASICu. Ta linia stanowi punkt wyjściowy w dalszych działaniach.
      Następnie próbujemy odtworzyć poprzedni wiersz (który prawdopodobnie jest częściowo uszkodzony) szukając ostatniej poprawnej instrukcji. W przypadku gdy wiersz jest faktycznie częściowo nadpisany może po wylistowaniu zawierać śmieci. Ale może też zawierać informacje ułatwiające jego odzyskanie.
      UWAGA! Po skasowaniu programu najlepiej nie wykonywać innych zbędnych instrukcji i nie wprowadzać dodatkowych linii programu, bo spowodują one dodatkowe straty.
      Po ustaleniu początkowej linii programu wyszukiwana jest ostatnia linia i ustawiane są wektory tablic BASICa, po czym program wchodzi do BASICa umożliwiając listowanie programu (choć bez nazw zmiennych jeszcze nie będzie to działać do końca poprawnie).
      Jeśli nie uda się odzyskać programu następuje powrót do DOSa.
      UWAGA! Program do działania wymaga włączonego BASICa.
      • 7:
         
        CommentAuthorKaz
      • CommentTime24 Nov 2009 10:11
       
      Mono - czy to juz jest wersja, ktora mozna wrzucic do katalogu uzytkow czy jeszcze beta, ktora bedziesz w najblizszym czasie rozwijal?
      • 8: CommentAuthormono
      • CommentTime24 Nov 2009 15:11
       
      Jeszcze beta. Następną wersję załączę niedługo.