Ready/Run
Takie sobie archiwum listingów ze starych magazynów komputerowych
-
Przeszukiwanie pamięci
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.
Autor listingu: Krzysztof Kołodziej
Listing nadesłał: Amarok
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Liczby zespolone
Liczby zespolone są mało znanym uczniom szkół średnich działem matematyki (praktycznie tylko uczniom klas o profilu matematyczno-fizycznym). Tym jednak, którzy poznają liczby zespolone przydatny może być mój program.
Realizuje on najczęściej wykonywane działania na liczbach zespolonych takie jak: mnożenie, dzielenie, dodawanie, odejmowanie, potęgowanie zespolone, pierwiastkowanie, ponadto wylicza loga- rytm naturalny, funkcje sinus i cosinus, exponent, moduł i liczbę sprzężoną oraz zamienia postać algebraiczną na trygonometryczną i odwrotnie. W opcjach „DODAWANIE" i „MNOŻENIE" program pyta o ilość liczb, na których będzie wykonywanie działania. Umożliwia to dodawanie lub mnożenie wielu liczb zespolonych (jednak nie więcej niż 17).
Program mój został częściowo oparty na algorytmach zawartych w książce „25 numerycznych programów w języku BASIC" Andrzeja Witowskiego i Jakuba Tatarkiewicza.
Jeszcze kilka uwag na koniec. Ze względu na możliwości obliczeniowe Atari nie wszystkie dane będą akceptowane przez program, o czym użytkownik jest informowany odpowiednim komunikatem. Większość wyników podawana jest z dokładnością do 0.001. W opcjach zmiany postaci z algebraicznej na trygonometryczną i odwrotnie ułamki za kropką oznaczają dziesiętne i setne stopnia, a nie minuty i sekundy,
Autor listingu: Dariusz Tabaczyński
Listing nadesłał: Amarok
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Hej Kolęda, Kolęda...
Zbliżają się święta, a z nimi choinki, prezenty i kolędy. Proponuję stworzyć świąteczny nastrój przy pomocy naszego Spectrum. Nauczymy je w tym celu grać kilka najpopularniejszych kolęd. Wystarczy wpowadzić i uruchomić któryś z umieszczonych programów. Wesołych Świąt!
Autor listingu: Marcin Borkowski
Listing nadesłał: Faust
Język programu: Sinclair Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: [zx][b121988]hej_koleda-t2e.pl.7z
-
Muzyka w przerwaniach
Dzięki wiadomościom zawartym w „Bajtku" przestałem bać się przerwań i napisałem program w języku maszynowym, który jest wykonywany co 1/50 sekundy w czasie przerwania synchronizacji pionowej. Opracowana przeze mnie procedura może wykonywać proste melodie (do 93 nut), lecz nie przeszkadza w normalnej pracy Basica. Można więc wykorzystać ją do uzyskania podkładu muzycznego we własnym programie, zaś przy pisaniu programu może ona umilić pracę.
Dla uzyskania takiego efektu trzeba wpisać zamieszczony program i uruchomić go. Program ten jest potem zbędny i można go skasować instrukcją NEW. Przerwanie pracy programu następuje po naciśnięciu klawisza RESET lub po wpisaniu POKE 548, 138: POKE 549, 194. Ponowne włączenie muzyki uzyskuje się po wpisaniu POKE 548, 0: POKE 549, 6. Jeśli chcemy uzyskać inną melodię, to trzeba wpisać do komórki 1541 liczbę nut pomnożoną przez 2 (maksymalnie 186), a do komórki 1582 wielkość pauzy między nutami (maksymalnie 255). Teraz jest to odpowiednio liczba 132 w wierszu 90 i trzecia liczba 0 w wierszu 100. Następnie trzeba zmienić zawartość instrukcji DATA od wiersza 120. Kolejno trzeba tam wpisać dla każdej nuty wysokość dźwięku (wartości takie jak w instrukcji SOUND) i czas jego trwania. Na końcu w wierszu 70 wpisujemy graniczną wartość pętli FOR/NEXT odpowiednią dla liczby nut wprowadzonych do instrukcji DATA. Dla Czytelników zainteresowanych programowaniem w języku maszynowym podaję dodatkowo źródłowy wydruk procedury w asemblerze MAC/65.Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK
Jak zaladować (najprostsza metoda)
ALTIRRA:
- Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
- Cold Reset (Powinien wejść do Basica)
- LOAD "D0:MUZYKA.BAS"
- RUN
Autor listingu: Maciej Rempiński
Listing nadesłał: Amarok
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Obwoluta
Dwa poniżej przedstawione programy pozwalają na samodzielne wykonanie koperty dla dyskietki oraz papierowej wkładki do pudełka od kasety. Programy te współpracują z dowolnym Commodore i ze wszystkimi drukarkami, które mogą współpracować z tymi komputerami. W wypadku wkładki do pudełka od kasety możliwa jest także aktualizacja danych dotyczących programów zawartych na danej kasecie. Możliwe jest wpisanie do 13 tytułów programów z obu stron kasety. Gdy po jakimś czasie taśma ta znudzi Ci się i skasujesz zawarte na niej programy, to bez większych problemów możesz zrobić dla niej nową wkładkę zawierającą aktualne tytuły programów. W wypadku programu drukującego kopertę dla dyskietki użytkownik powinien w miejsce „Imię i nazwisko" wpisać swoje własne dane nie zmieniając przy tym liczby znaków w tym wierszu. Może to być np. imię i nazwisko właściciela, dowolny znak katalogowy itp. Papier, z którego zostanie wykonana koperta, powinien być w miarę sztywny i czysty — doskonale do tego celu nadaje się np. papier kredowy.
Jeżeli Twoja drukarka współpracuje z komputerem poprzez port użytkownika, to musisz najpierw wprowadzić do programu odpowiednie korekty (dotyczy to instrukcji OPEN oraz PRINT#4). Oczywiście posiadacze lepszych drukarek np. NL-10 czy GEMINI będą mogli z łatwością wprowadzić poprawki do programów, umożliwiające wydruk więcej aniżeli 13 tytułów w wypadku wkładki czy np. dodatkowe pola dla nazwy i identyfikatora dyskietki. Oprócz programów zamieszczam także przykładową wkładkę, jaką otrzymamy w wyniku działania pierwszego programu.
Na dyskietce znajduja sie dwa pliki:
Obwoluta.prg - zawiera generator okładki na kasety
ObwolutaFDD.prg - zawiera okładkę na FDD, niestety ta drobna modyfikacja nie została dostosowana do generowania pełnych spisów.
Autor listingu: Klaudiusz Dybowski
Listing nadesłał: Faust
Język programu: Commodore Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: [c64][b1988-12]_obwoluta-t2e.pl.7z
Ten numer został zreduksowany - "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
