Ready/Run
Takie sobie archiwum listingów ze starych magazynów komputerowych
- Język programu: Basic
- Platforma: Atari XE/XL
- Kod zamieszczono w Bajtek 12/1988
- Autor listingu: Krzysztof Kołodziej
- Listing nadesłał: Amarok
Stan listingu:
Podczas pisania programów w BASIC-u, w których wykonujemy operacje na zmiennych tekstowych, zachodzi czasami konieczność wyszukiwania w nich pewnych podciągów znakowych.
Również w Basicowych monitorach pamięci pomocną opcją może być możliwość wyszukiwania umieszczonych w pamięci mikrokomputera sekwencji bajtów. Napisanie procedury, która by realizowała powyższe czynności w języku Basic jest czynnością prostą, ale czas jej wykonywania zwłaszcza przy przeszukiwaniu dużych obszarów pamięci jest zbyt długi, co pogarsza efektywność pisanych programów. W związku z tym proponuję wykorzystanie do tych celów zamieszczonego poniżej programu.
Program ten zawiera w liniach 80—110 dane do relokowanej procedury maszynowej, które dla wygody użytkownika umieszczane są przez program w zmiennej tekstowej AS. Po bezbłędnym wpisaniu programu i jego uruchomieniu (dla bezpieczeństwa zapisać program na taśmie lub dyskietce) tworzona jest zmienna tek-
stowa A$ zawierająca naszą procedurę w liniach 10 i 20, pozostałe linie programu są kasowane. Po zapisaniu tych linii programu na nośniku zewnętrznym instrukcją LIST, możemy za pomocą instrukcji ENTER dołączać je do własnych programów. Wywoływanie procedury:
1. W przypadku wyszukiwania sekwencji bajtów bezpośrednio w pamięci mikrokomputera postać wywołania jest następująca:
X = USR(ADR(A$),START,KONIEC, ADR(B$),LEN(B$))
gdzie B$ jest zmienną tekstową, w którą należy wpisać wcześniej wyszukiwaną sekwencję bajtów w znakach ATASCII (maksymalna długość 255 znaków);
START, KONIEC — są to adresy odpowiednio początku i końca przeszukiwanego przez procedurę obszaru pamięci.
Pod zmienną X procedura podstawia adres pierwszego bajtu odnalezionej w pamięci sekwencji. W przypadku jej nieodnalezienia podstawiana jest pod X wartość zero. Uwaga! Wartość zero podstawiana jest pod X także, gdy sekwencja rozpoczyna się od adresu 0000.
2. W przypadku wyszukiwania sekwencji bajtów w zmiennej tekstowej postać wywołania i znalezienia początku jej położenia jest nieco bardziej złożone. Jako adres startu wyszukiwania (START) podstawiamy adres przeszukiwanej tablicy np. dla tablicy S$ podstawiamy ADR(SS), adresem końca zaś w tym przypadku będzie ADR(S|) + LEN(S$)-1. Postać wywołania procedury może być więc następująca:
X = USR(ADR(A$),ADR(SS),ADR(SS) + LEN(SS) -1 ,ADR(B$),LEN(BS))
Po tym wywołaniu należy jako pierwszą wykonać następującą instrukcję:
X = X-ADR(S$)+1
Jeśli X<0 to przeszukiwana tablica nie zawiera danej sekwencji, gdy zaś X>0 to wartość X wskazuje położenie szukanej sekwencji w zmiennej S$.
Na zakończenie chcę powiedzieć, że czas przeszukiwania przez procedurę obszaru pamięci 64KB wynosi nieco ponad 2 sekundy, zaś w przypadku przeszukiwania
zmiennych tekstowych procedura działa szybciej niż instrukcja FIND w Basicu XL.

Ten program ukazał się w reduksie "Bajtek 12/1988"
- „MikroExpo”
- „MUZYKA W PRZERWANIACH” Maciej Rempiński
- „Pożyteczne procedury” Wojciech Zientara
- „Namer” Robert Pindera
- „Liczby Zespolone” Dariusz Tabaczyński
- „Samouruchamianie przez Enter” Roman Tomaszewski, Andrzej Zalewski
- „Przeszukiwanie Pamięci” Krzysztof Kołodziej
- „Haker” Piotr Kowalczyk, Łukasz Czekajewski
- „The Rocky Horror Show” (mp)
- „World Series Basketball”
- „Zaczęło się od Spectrum” Piotr Bernatek
- „JOYSTICK - BŁAHA WAŻNA RZECZ (mini test użytkowników)” Marcin Lutomski
- „Palcem na Bank (Danych)” Wojciech Łuczak
- „Klub nad Renem” Jarosław Łojewski, Piotr Kuzora
- „Bity z Lodówki” Grzegorz Onichimowski
