Ready/Run

Takie sobie archiwum listingów ze starych magazynów komputerowych


Zamiana napisów jeszcze raz
  • Język programu: Basic
  • Platforma: Atari XE/XL
  • Kod zamieszczono w Bajtek 11/1988
  • Autor listingu: Mirosław Honkowicz
  • Listing nadesłał: Amarok

Stan listingu:

0
Listing niesprawdzony - świeżo po OCR lub przepisaniu

Posiadam Atari 800XL z magnetofonem. Komputera używam głównie pisząc własne programy. Ponieważ lubię jednak czasem pograć, postanowiłem ułatwić sobie życie w grach Drop Zone i Starquake. Korzystając z wiadomości zamieszczonych w „Bajtku” nr 5/88 (art. „Zostań nieśmiertelnym") użyłem program „Zamiana napisów” opublikowany w „Bajtku” nr 7/87. Jednakże, tak jak przypuszczałem, zabrakło pamięci, aby wczytać grę. Ponieważ nie dysponowałem innym programem o podobnych możliwościach, postanowiłem napisać swoją wersję. Mimo, iż użyłem do tego celu Basica, program dysponuje przeszło dziesięcioma kilobajtami pamięci więcej od programów „Zmiana napisów” i „Nie tylko dla graczy” ("Bajtek” nr 3/88). Uzyskałem to przez przesunięcie programu ANTIC-a i pamięci ekranu w obszar tuż nad głównym programem. Dodatkowo podczas operacji czytania i zapisu odłączany jest ROM Basica, co pozwoliło zaoszczędzić osiem kilobajtów pamięci. Ze względu na zastosowanie tego triku, procedura wyszukująca i wymieniająca dostarczony ciąg bajtów musiała zostać napisana w języku wewnętrznym. Jedną z zalet tego rozwiązania jest niewspółmierne skrócenie czasu przeszukiwania pamięci. Przeszukanie czterdziestu kilobajtów w celu odnalezienia określonego ciągu pięciu bajtów trwa około jednej sekundy. W Basicu trwałoby to przez 7 minut... Program składa się z dwóch części. Część pierwsza umieszcza potrzebne procedury na szóstej stronie i wczytuje część drugą, która jest głównym programem. Rozwiązałem to w ten sposób, gdyż zależało mi jak na największym obszarze wolnej pamięci RAM. Pierwsza część jest zapisana przez SAVE"C”, część druga bezpośrednio po pierwszej przez CSAVE. Całość należy wczytywać poprzez RUN"C”. Po wczytaniu całości program należy uruchomić instrukcją RUN. Po usłyszeniu pojedynczego sygnału należy wczytać program, w którym chcemy wprowadzić zmiany. Po wczytaniu wyświetlana jest ilość bajtów zajmowanych przez wczytany blok. Następnie program pyta się czy pokazać wczytany zbiór w kodach ATASCII. Potem program oczekuje wprowadzenia kodów ATASCII, które chcemy zmienić. Naciśnięcie RETURN nagrywa zmieniony program. Po znalezieniu dostarczonego ciągu znaków program wyświetla adresy, ich zawartość i odpowiadające im kody, a następnie oczekuje wprowadzenia ciągu kodów do zmiany (tej samej długości co odnaleziony ciąg). Zmiana sygnalizowana jest ponownym wyświetleniem adresów.

UWAGA:
Wyświetlanie wczytanego zbioru w kodach ATASCII możemy przerwać klawiszem BREAK. Podczas wyświetlania klawisz BREAK zatrzymuje tylko listowanie zbioru, nie zatrzymuje głównego programu. Ze względu na przełączanie banków pamięci, procedura wyświetlająca — zbiór jest napisana w języku wewnętrznym, wykorzystuje ona procedurę obsługi urządzeń I/O CIOMAIN.