[#23]
Re: dos.library - mały problem z AsmOne
@*y,
post #22
Łańcuch miał na końcu zero, bo oprócz wykorzystywania go jako parmetru d2 w funkcji Write, używałem go też jako zwykłego łańcucha, który wyświetlałem na ekranie, więc 0 na końcu było potrzebne.
Wydaje mi się (jestem prawie pewien), że błąd z mojej strony pochodził z tego:
move.l Bufor,d2
a powinno być
move.l #Bufor,d2
zamiast adresu, pod którym leży zmienna Bufor, wprowadziłem przez niedopatrzenie jej zawartość, co powodowało, że dane odczytane z klawiatury czy pliku wpisywane były pod ten błędny adres. To tutaj program musiał zapisywać dane w jakichś ważnych dla systemu obszarach pamięci, co powodowało wariowanie systemu (np. w jednym przypadku po uruchomieniu programu, nagle stacja dysków zaczęła wariować, następnie obraz się rozstroił tak, jakby odświeżany był z inną częstotliwością, aż w końcu Amiga resetowała się)
Jak będę w domu, to ewentualnie wrzucę listing na stronkę, jest już nieco rozbudowany, posiada funkcję "szyfrowania" i "odkodowywania" zawartości pliku. Programik nie jest żadną rewelacją, a po prostu małym ćwiczeniem z funkcjami biblioteki dos.library, ale działa :). Nie dodałem tylko żadnej kontroli błędów (np. sprawdzianie, czy plik o podanej nazwie istnieje), ale to zabawa na dzisiejszą nockę :)
Aha, problem był jeszcze jeden. Przepisując program od nowa, linijka po linijce i testując praktycznie każdą zmianę, zapomniałem pozamykać wszystkich otwartych dojść do plików itd.
Wyglądało to tak, że program otwierał plik i kończył swoje działanie (sprawdzałem, czy plik zostanie otwarty), niestety bez resetu takie dojście nie jest zamykane, więc plik był niedostępny dla programu po jego kolejnym uruchomieniu (pliku nie dało się nawet usunąć), ale po dodaniu części typu:
move.l FileBase,d1
jsr _LVOClose(a6)
program zaczął funkcjonować.
Ostatnia aktualizacja: 26.12.2012 15:47:09 przez zajebutek