Ready/Run
Takie sobie archiwum listingów ze starych magazynów komputerowych
-
Pchła
Ten program to naprawdę pchła. Nie z tych, które szkodzą, jak wirusy, lecz jeden z użytecznych mini-programów.
Po wpisaniu krótkiej procedury i uruchomieniu jej, w głośniczkach swych Spectrumów usłyszycie pseudo-perkusyjne dźwięki. Skąd się one biorą? Proponuję dokładne przeanalizowanie tych kilkunastu bajtów, gdyż na ich podstawie utworzyć można cały plik procedur perkusyjnych. Ta jedna powinna stać się dla Was inspiracją.
Jeśli nie macie jeszcze generatora AY 3-8910, kupcie lub wykonajcie go jak najszybciej. Żaden bowiem zastęp pcheł nie zastąpi prawdziwej, 3-kanałowej muzyki stereo!
Autor listingu: Gen. Martinez
Listing nadesłał: Faust
Język programu: Sinclair Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz:
-
Gwiazdy
Czytelnikom "Bajtka" interesującym się grafiką komputerową polecam niniejszy programik napisany w BASIC-u ZX Spectrum.
Program ów generuje w sposób losowy najróżniejsze grafiki umownie nazwane przeze mnie gwiazdami.
Po wklepaniu tych paru linii programu i uruchomieniu przez RUN, obsługa sprowadza się do zadania, w odpowiedzi na pytanie "Podaj ilość warstw", ilości nałożonych na siebie rysunków. Najciekawsze efekty uzyskuje się przy zmiennej ilg z przedziału od 1 do 3. Przy większych wartościach rysunek może stawać się nieczytelny.
Jeżeli już nasycimy się wielością generowanych rysunków, możemy wprowadzić pewne modyfikacje w programie. Spróbujmy w linii 90 zamiast odcinków rysować łuki poprzez dodanie trzeciego parametru w instrukcji DRAW (wartości od 0.1 do 1). Analogicznie łuki możemy rysować także w liniach 50, 60, 70 i 80. Na przykład zadajmy następujące parametry luków: linia 50-1, linia 60-(-1), 70-1, 80- (-1). W linii 90 rysujmy tylko odcinki.
Zadajmy parametry jeszcze inaczej — odpowiednio w liniach: 50-2, 60-(-2), 70-2, 80-(-2), a w liniach 90 łuk o parametrach 0.5. Zamiast gwiazd program w tym przypadku kreśli coś na kształt pąków kwiatów. Ciekawą zmianę uzyskuje się wprowadzając w linii 5 instrukcję OVER 1.
Po wnikliwym przeanalizowaniu programu z pewnością odkryjecie jeszcze inne możliwości modyfikacji kreowanego przez komputer rysunku.
Autor listingu: Grzegorz Galiński
Listing nadesłał: Faust
Język programu: Sinclair Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz:
-
3D Grafika Wektorowa
Nawiązując do rozpoczętego tematu programowego tworzenia grafiki przedstawiamy rodzaj grafiki określonej jako wektorowa.
Wprawdzie na ekranie Spectrum uzyskanie czystej grafiki wektorowej jest niemożliwe, gdyż podstawą obrazu są punkty, to jednak można zasymulować ją w prosty sposób. Potrzebne to będzie jedynie do rozważać i eskperymentów, bo grafikę wektorową wykorzystują tak naprawdę specjalne ekrany graficzne i plotery.
Co to jest wektor? Nie jest to ani "odcinek ze strzalłką", ani "strzała", lecz uporządkowana para punktów. W szkole definicja taka nie jest od razu zrozumiała, lecz przy komputerze nabiera głębszego znaczenia. Dostępna w BASIC-u (i nie tylko, patrz Bajtek 7/89) komenda DRAW powoduje wykreślenie wektora o zadanych współrzędnych. Składnia DRAW nie pozostawia chyba wątpliwości — DRAW x,y.
Początek rysowanego wektora, czyli inaczej mówiąc, jego punkt przyłożenia (zaczepienia) to ostatni postawiony na ekranie punkt (lub (0,0), gdy ekran jest świeżo wyczyszczony). Przypominam, iż współrzędne tego ostatniego punktu przechowują zmienne systemowe 23677 i 23678.
Teraz zwyczajne, szkolne zadanie: dany jest wektor [3,5] o początku w punkcie (2,2). Jakie są współrzędne końca wektora? Odpowiedź: (2+3,2+5), czyli (5,7).
Te wiadomości powinny wyjaśnić niedouczonym programistom istotę wektora na ekranie Spectrum. A po co to wszystko? Zaraz stanie się to jasne.
Niech nawet wrogowie gier komputerowych spojrzą teraz na jedną z gier: Star Wars, The Empire Strikes Back, Elitę, Night Raider, Starstrike, Starstrike II, Virus. W każdej z nich wykorzystana jest grafika wektorowa. Co to oznacza? Wszystkie przedmioty (pojazdy, samoloty, góry itp.) przedstawione są jako zarysy krawędzi bryły, w dodatku przezroczystej. Bryła pokazana jest w rzucie, a dokładniej — w aksonometrii ukośnej.
Istota tego rodzaju aksonometrii polega na tym, że krawędzie, które w rzeczywistości są równoległe do patrzącego, zachowują swoje wymiary i położenie, zaś krawędzie prostopadłe do patrzącego ulegają skróceniu o połowę i przedstawiane są w płaszczyźnie równoległej do patrzącego, pod kątem 45 °. Trochę to zawiłe, ale w istocie bardzo proste.
Należy się teraz zastanowić, jak uwieńczyć te myśli programem. Jego zadaniem niech będzie umożliwienie obejrzenia ze wszystkich stron zdefiniowanej bryły. Tak działa najlepszy program inżynierski na PC — AutoCAD, tak tez działa Sprectrumowy VU-3D (opis wkrótce w Bajtku).
Projektujemy naszą bryłę. Niecn będzie to sześcian, by uprościć dane i nie tracić miejsca. Sześcian przedstawiony jest na rysunku, w prostokątnym ukradzie współrzędnych XYZ. Każ demu wierzchołkowi przypisane są współrzędne, krawędź ma długość jednostkową.
Pozostaje do rozstrzygnięcia problem, jak kodować bryłę w pamięci. Ja przyjąłem sposób bardzo prosty: kodowane są wszystkie krawędzie po kolei; każdej z nich przyporządkowana jest szóstka liczb — współrzędne początku i współrzędne wektora pokrywającego się z tą krawędzią. Otrzymujemy w ten sposób 72 liczby, lecz są to zera, jedynki lub minus jedynki.
Zakodowaną bryłę należy wpisać w tablicę. W celu przejrzystości posłużyłem się aż sześcioma tablicami: X, Y, Z dla początków i K, L, M dla współrzędnych wektorów. Teraz odtworzenie bryły na ekranie odbywa się następująco: pobierane są współrzędne początku pierwszego wektora i współrzędne jego samego, a następnie przetwarzane z układu trójwymiarowego na układ płaski.
Autor listingu: Marcin Przasnyski
Listing nadesłał: Faust
Język programu: Sinclair Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz:
-
Weryfikator 3
Oto trzecia wersja programu „Weryfikator“, służącego do kontroli wpisywanych listingów. Uważam, iż jest to wersja jak na razie najdoskonalsza. Nie zajmuje obszaru przeznaczonego na grafikę użytkownika, współpracuje z Interface 1 i jest krótsza od wersji II. Dodatkowo suma kontrolna wyświetlana jest przed numerem linii, zaś zmieniając kod w linii 130 można uzyskać wydruk sumy w nawiasach. Jest to szczególnie ważne w przypadku używania drukarek pozbawionych możliwości drukowania w negatywie.
Podobnie, jak pozostałe wersje, tak i ta oblicza sumę kodów instrukcji modulo (256) pomniejszoną o 9.
Autor listingu: Andrzej M. Grossman
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: zx_weryfikator_3_7-1989-t2e.pl.7z
-
Perkusja
Amstrad, po przejęciu firmy Sinclaira, nie tytko utrzymał produkcję ZX Spectrum 128, ale wprowadził na rynek dwa nowe modele ZX Spectrum oznaczone +2 i +3, zgodne ze starym 128 KB, a nawet wyposażone w tryb emulacji Spectrum 48.
Te trzy komputery różnią się od swoich młodszych braci nie tylko pamięcią, ale i układem do generacji dźwięku. „Gumiak“ nigdy nie miał zbyt wielkich możliwości dźwiękowych, ale już w ZX Spectrum 128 wprowadzono trójkanałowy generator AY 3—8910, który wcześniej zastosowany był w ośmiobitowych maszynach Amstrada.
Zwiększone możliwości muzyczne Spectrum wykorzystywane są w wielu grach, powstałych w 1987 roku i później. Istnieje także kilka programów muzycznych (ja miałem do czynienia na razie z trzema — The Music Box 128, Music Studio 128 i Mozart).
Po takim wstępie chciałbym zaprezentować procedurę, która może przydać się tym wszystkim, którzy w swoich programach chcieliby wykorzystywać dźwięki z generatora a zwykła instrukcja PLAY już im nie wystarcza. Po uruchomieniu programu otrzymujemy do dyspozycji dziesięć dźwięków o perkusyjnym brzmieniu. Większa jego część jest napisana w kodzie maszynowym lecz do prawidłowej pracy potrzebny jest choć fragment programu w Basicu — co najmniej od linii 200. Pomysł został zaczerpnięty z programami MICRORYTHM i jest to jego najbardziej uproszczona wersja. Opis programu:
5—80 przepisanie do pamięci kodu maszynowego
100—130 przepisanie do pamięci kodu dźwięków
200—210 odtwarzanie dźwięków
220 wyłączenie generatora
250 kody dźwiękowe
300 graficzne odwzorowanie aktualnego dźwięku
Najważniejszą częścią programu jest kod maszynowy, umieszczony w dwóch niezbyt odległych od siebie miejscach pamięci. Ze względu na takie rozmieszczenie konieczne jest użycie instrukcji skoku. Z tego powodu kod nie jest relokowalny.
Program „Perkusja“ może być uruchomiony także na Spectrum 48 z dołączonym generatorem dźwięków i dlatego dźwięk wyłączany jest instrukcjami OUT a nie PLAY.
W linii 50 umieszczamy cyfry od 0 do 9 — dane dla perkusji. Trzeba jednak pamiętać, by na jej końcu znajdowała się liczba 255 i cyfr nie było więcej niż 280. Potem można już uruchomić procedurę instrukcją RUN. Komputer zamilknie na kilka chwil, by wczytać kod maszynowy.
Przy prawidłowym przepisaniu procedury, w lewym górnym rogu ekranu powinno pojawić się słowo ZAPIS. Oznacza to, że komputer przystąpił do przepisywania kodów dźwięków. Czas wykonywania tej operacji zależny jest od ilości cyfr w linii 250. Następnie, także w lewym górnym rogu pojawi się napis ODTW, oznaczający rozpoczęcie odtwarzania zapisanych dźwięków. Ponadto na środku ekranu pojawią się cyfry od 0 do 9 i czarny pas, który będzie wskazywał numer dźwięku odtwarzanego w danym momencie.
Program jest tylko propozycją wykorzystania zwiększonych możliwości komputera ZX Spectrum 128 i od niedawna, również 48. Jego rozbudowę pozostawiam Czytelnikom. Chciałbym jednocześnie zachęcić Was do eksperymentów z tym komputerem. Często ich efekty są zadziwiające. Posłuchajcie tylko muzyki z takich gier jak TURBO BOAT czy PROFESIONAL BMX SIMULATOR i spróbujcie ułożyć podobne. Życzę powodzenia.
Autor listingu: Michał Sobieszuk
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
1Listing przepisany - zawiera błędy, nieuruchamia się na emulatorach lub realnej platformiePobierz: zx_perkusja_bajtek_7-1989-t2e.pl.7z
-
Licznik
Myślę, że wiele osób widziało program, który ładuje się z tzw. licznikiem.
Mam na myśli gry EXOLON, KANE itp. Podczas ładowania wartość licznika zmniejsza się aż do zera, gdy program jest już cały w pamięci. Jest to o wiele bardziej eleganckie od zwykłych „pasków“, gdyż licznik jest nie tylko efektowny graficznie, ale także dobry „na nerwy“, ponieważ w każdej chwili wiemy, ile czekania nam jeszcze zostało.
Przedstawiony program LICZNIK umożliwia ładowania programów w ten właśnie sposób.
Główna część kodu maszynowego pochodzi z loadera do programu BOULDER DASH IV, reszta to przystosowanie do ładowania według danych z nagłówka, tak, by użytkownik mógł korzystać z programu bez znajomości assemblera. LICZNIK znajduje się przy końcu pamięci, od adresu 64500 do 69252. Uruchamia się go komendą RANDOMIZE USR 65100 Program wczytuje wtedy nagłówek (pierwszy napotkany) pod adres 65082 i ładuje tylko bloki typu PROGRAM i BYTES, nie akceptuje tablic.
LICZNIK, jak już wyżej wspomniałem, umiejscawia dany program w pamięci na podstawie danych w nagłówku. Jeżeli podczas ładowania wystąpił błąd, LICZNIK wraca do BASIC-a (konkretnie do miejsca wywołania, może więc również wrócić i kontynuować wykonywanie kodu maszynowego). Nie przerywa działania programu, tylko umieszcza w komórce 65099 wartość 0 (normalnie 255).
Jeżeli nie odpowiadają nam atrybuty licznika (standardowo czarne litery na białym tle), to dzięki POKE 64910, (wartość negatywu atrybutu) możemy je zmienić.
Od adresu 64562 począwszy znajdują się kształty cyfr 6 w negatywie) od zera dcrdziewiątki kolejno. Kształty można przedefiniować według własnego upodobania, podobnie jak tworzymy znaki graficzne (UDG).
Jeżeli chcemy korzystać z programu LICZNIK z poziomu assemblera, to podajemy parametry takie same, jak dla systemowej procedury ładowania, tj.
LD IX, adres początku
LD DE, długość
LD A, FFF
SCF
CALL 64500
LICZNIK nie jest programem krótkim, ale myślę, że warto zdobyć się na odrobinę cierpliwości i wpisać go.
Autor listingu: Jacek Marczewski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: zx_licznik_bajtek_7-1989-t2e.pl.7z
-
Jumper
System operacyjny TOS dla ZX Spectrum charakteryzuje się m.in. hierarchiczną strukturą katalogu. Jego wadą jest konieczność pamiętania, w jakim podkatalogu umieściliśmy dane.
Wadę tę likwiduje poniższy program — „JUMPER“. Umożliwia on swobodną „wędrówkę“ po podkatalogach, jak również wgranie w każdej chwili dowolnego programu lub danych (nagrywanych przez SAVE * „nazwa“ CODĘ). Wymagane jest, aby program w BASIC-u posiadał rozszerzenie. BAS, a zbiór danych — COD. W przypadku napotkania innego rozszerzenia wyświetlany jest komunikat o błędzie (linia 5025).
W celu wgrania dowolnego zbioru lub przejścia do podkatalogu, należy klawiszami 6 i 7 przesunąć migający prostokąt na nazwę zbioru (lub katalogu) i nacisnąć „0“ Powrót do poprzedniego katalogu jest możliwy po wciśnięciu „1“.
Program należy zapisać na dysku przez: CLEAR: SAVE * „START“ LINE 10: ATTR * „START“ i będzie on automatycznie wczytywany po naciśnięciu RESET.
Większość liczb w programie zastąpiono przez wyrażenie z „VAL“ lub „PI“, aby maksymalnie zmniejszyć ilość zajmowanej przez niego pamięci — zajmuje on w ten sposób jedną jednostkę alokacji. Nic oczywiście nie stoi na przeszkodzie, aby rozbudować go według własnych potrzeb.
Autor listingu: Jacek Zapała
Listing nadesłał: Faust
Język programu: TOS Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: jumper_tos-t2e.pl.bas
-
Litery
Chcemy tym razem ułatwić posiadaczom popularnych ZX Spectrum wykonywanie różnego rodzaju napisów jakich używa się w tworzonych samodzielnie programach. Można je realizować korzystając z zawartych wzorów liter w ROMie ZX Spectrum. Napisy mogą mieć dowolną szerokość i wysokość znaków. Proponowany przez nas program jest łatwy do wykorzystania i może być dołączany do napisanych wcześniej programów.
Program Litery składa się z dwóch części. Pierwsza to procedura napisana w języku wewnętrznym procesora Z80. Druga to podprogram w BASICu umożliwiający zadawanie parametrów do procedury i jej wykorzystanie. Procedurę w języku wewnętrznym przedstawia listing nr 1. Aby umieścić ją w pamięci należy wpisać linie od 5 do 340 i wykonać program instrukcją RUN. Po wykonaniu, zapisujemy na taśmie 300 bajtów kodu maszynowego instrukcją SAVE "Litery" CODE 65235,300. W ten sposób mamy zabezpieczoną najważniejszą część programu. Teraz, dla skasowania linii 5 do 340, należy wykonać instrukcję NEW i po zgłoszeniu się systemu (bez wyłączania zasilania lub naciskania przycisku Reset) wpisujemy linie 9998 i 9999 (listing nr 2) i już wszystko gotowe, można przejść do instrukcji korzystania z programu.
Instrukcja
Wykonanie dowolnego napisu wiąże się z nadaniem pięciu zmiennym odpowiednich wartości przy pomocy instrukcji LET.
- Zmienna y — określa odległość górnej krawędzi liter od górnej krawędzi ekranu wyrażoną liczbą linii (na ekranie jest 176 linii). Na przykład: LET y=80;
- Zmienna x — określa odległość pierwszej litery od lewej krawędzi ekranu wyrażoną liczbą punktów (na ekranie jest 256 punktów). Na przykład: LET x=10;
- Zmienna s — określa szerokość liter (1 — szerokość normalna, 2 — szerokość podwójna i tak dalej). Na przykład: LET s=2;
- Zmienna w — określa wysokość liter (1 — wysokość normalna, 2 — wysokość podwójna i tak dalej). Na przykład: LET w=5;
- Zmienna a$ — określa ciąg znaków jakie chcemy wypisać (dostępne są wszystkie znaki z klawiatury). Na przykład: LET a$="Komputer".
Po nadaniu zmiennym wartości należy wywołać program instrukcją GO SUB 9999. Przykładowy program będzie wyglądał następująco:
10 LET y=80: LET x=10: LET s=2: LET w=5: LET a$="Komputer": GO SUB 9999: STOP
O efekcie działania programu Czytelnicy przekonują się po jego realizacji. Jeżeli chcemy aby nasz tekst automatycznie był wypośrodkowany na ekranie, nie trzeba deklarować zmiennej x, tylko wywołać program od linii 9998. Poprzedni przykład będzie zatem wyglądał następująco:
20 LET y=80: LET s=2: LET w=5: LET a$="Komputer": GO SUB 9998: STOP
Dołączenie programu Litery do programu użytkownika polega na dopisaniu do istniejącego listingu linii 9998 i 9999 oraz linii przyporządkowujących wartości zmiennym a$, s, w, x, y. Program modyfikowany należy koniecznie uzupełnić procedurą języka wewnętrznego. Procedurę dogrywamy do modyfikowanego programu instrukcją LOAD "litery" CODE. Następnie całość zapisujemy na taśmie sekwencją instrukcji: SAVE "nazwa programu": SAVE "litery" CODE 65235,300.
Samodzielnie programujący Czytelnicy uzupełnią swoje programy wykorzystując tak zwany loader (procedura języka wewnętrznego dogra się automatycznie przy wczytywaniu programu do komputera).
Poza listingiem programu Litery (listing 1 i 2) podajemy dwa listingi krótkich programów demonstracyjnych. Na uwagę zasługuje szczególnie drugi program. Pozwala on na zapoznanie się z budową graficzną repertuaru znaków jakimi dysponuje komputer ZX Spectrum. Poznanie budowy znaków ułatwia samodzielne konstruowanie własnych symboli graficznych, na przykład brakujących w alfabecie angielskim polskich liter.
Na koniec uwaga dotycząca wykorzystywania programu Litery. Program wypisuje tekst tylko w zadeklarowanym miejscu, tak więc napis nie mieszczący się na ekranie będzie wyświetlony w tym samym miejscu na widocznym już fragmencie (nie mieszczące się litery z prawej strony będą wyświetlane od lewej krawędzi ekranu). Pamiętając o tym należy dobierać długość napisów i kontrolować ich położenie (następny wiersz — nowa deklaracja miejsca). Zmienne a1, a3, a$, s, w, x, y nie mogą powtarzać się w programie użytkownika.
Życzymy Czytelnikom udanych eksperymentów i eleganckich opisów programu.
(na podstawie materiałów firmy Horizons).Autor listingu: Zenon Rudak
Listing nadesłał: Grush
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: zx_litery_komputer_6-1986-t2e.pl.7z
-
Drukowanie całego ekranu
Często widziałeś na pewno gry lub inne programy, w których podczas ładowania można podziwiać obrazek znajdujący się na ekranie.
Próbowałeś może także skopiować ten obrazek na drukarce, lecz pewnie nie udało ci się to w całości — instrukcja COPY „obcina” dwa dolne wiersze. Jeśli zamiast „COPY” użyjesz przedstawionego poniżej programu, uzyskasz wydruk całego ekranu — razem z zawartością tych dwóch wierszy. Pamiętaj tylko, żeby nie zatrzymywać programu, gdy na ekranie znajduje się obrazek, który chcesz uwiecznić, gdyż komunikat o zatrzymaniu programu skasuje zawartość tych linii i będziesz musiał jeszcze raz wczytywać obrazek z magnetofonu. Ten sam obrazek możesz kopiować wielokrotnie naciskając dowolny klawisz, za wyjątkiem „n”, które spowoduje załadowanie następnego obrazka
Autor listingu: (ts)
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: zx_druk_b11-1988-t2e.pl.7z
-
Sortowanie po polsku
Każdy użytkownik Spectrum, który chciał zrobić chociażby komputerowy spis telefonów znajomych i mozolnie wprowadził zaprojektowane przez siebie polskie litery natyka się na problem: jak zmusić komputer aby układał wyrazy według polskiego alfabetu?
Kłopot jest spowodowany tym, że Spectrum (a także inne komputery) SORTUJE WYRAZY WEDŁUG kodów ASCII POSZCZEGÓLNYCH liter, a polskie znaki nie są w nim umieszczone. Najprostszym rozwiązaniem mogłoby się wydawać przerobienie generatora znaków przez umieszczenie w nim kolejno liter polskiego alfabetu, jednak to utrudniłoby korzystanie z klawiatury. W takim przypadku jednym z lepszych rozwiązań jest dołączenie do programu dwóch poniższych procedur. Mają one też dodatkową zaletę, że można z ich pomocą sortować wyrazy np. po niemiecku czy rosyjsku (po niewielkich przerób-kach dadzą się też przystosować do innych komputerów). Oto one:
Teraz o praktycznym wykorzystaniu procedur:
Przed programem głównym należy umieścić w tablicy alfabet, wg którego wyrazy będą sortowane (ze spacją na początku!) a następnie przekodować wyrazy (najlepiej zrobić to zaraz po wczytaniu wyrazu, gdyż program ten działa dosyć wolno, a na taśmie przechowywać wyrazy zakodowane), np.: LET z$ = a$(x): GOSUB 9990: LET a${x)=z$. gdzie tablica ai zawiera wyrazy, a x to zmienna sterująca pętli. Teraz następuje sortowanie (aby je przyspieszyć, pożądane jest użycie programu maszynowego — takiego jak np. z nr 5/ 87 „Komputera") i wysyłanie danych na ekran, np.: LET z$=a$(x):GOSUB 9995:PRINTz$
Myślę, że teraz nasza „książka telefoniczna” będzie lepiej spełniała swoje zadanie, wykazując przy okazji iż Polacy nie gęsi...
Autor listingu: Andrzej Wawrzyńczyk
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: zx_sort_b11-1988-t2e.pl.7z
-
Scroll w górę
Prezentowany program umożliwia płynne (a nie skokowe jak w przypadku „scroll") przesuwanie zawartości ekranu do góry.
Wykorzystana została przy tym procedura z ROM-u zawarta pod adresem 8874 (#22AA), przeliczająca współrzędne punktu na jego adres w pamięci ekranu. Program zamienia współrzędne początku danej linii (przechowywane w rejestrze BC) oraz linii o jedną pozycję wyżej na adresy (umieszczane w rejestrze HL) i przesuwa całą linię (32 bajty) pod nowy adres. Tę procedurę uruchamia RANDOMIZE USR 32000. Procedura, zaczynająca się od adresu 32040, przerzuca zawartość pamięci ekranu wraz z atrybutami pod adres 36384, skąd można ją z powrotem „wsunąć” płynnie na ekran przez RANDOMIZE USR 32052, a następnie pokolorować przez RANDOMIZE USR 32080. Działanie podprogramu, rozpoczynającego się od adresu 32052, oparte jest na podobnej zasadzie z tym, że „nową” linię stanowi zawsze najniższa linia ekranu. Kolorowanie obrazu (RANDOMIZE USR 32040) polega na przemieszczeniu zawartości pamięci ekranu rozkazem ldir. O ile pierwsza z procedur może pracować samodzielnie, to pozostałe wymagają obecności pierwszej. Program może obsługiwać obrazy o długości do 22 wierszy. Wszystkie procedury napisane zostały w kodzie maszynowym, lecz można je wczytać z poziomu BASIC-a korzystając z poniższego programu ładującego, który zawiera również przykład praktycznego zastosowania programu.
Autor listingu: Grzegorz Krupa
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: zx_scroll_b11-1988-t2e.pl.7z
-
480x350 czyli prawie EGA
To już ostatnia część moich kłopotów z drukarką — przedwczoraj oddałem ją właścicielowi. (Przypominam — w poprzednich numerach Bajtka opisywałem swoje zmagania z kopiowaniem ekranu przy pomocy pożyczonej drukarki Seikosha GP-500AS).
Kiedy napisałem program kopiujący ekran z atrybutami, miałem nadzieję, że to koniec problemów. Niestety, jak to często bywa, życie zmusiło mnie do dalszych wysiłków. Okazało się, że rozdzielczość jaką dysponuje Spectrum w trybie graficznym, czyli 256*176 punktów, jest dla moich potrzeb stanowczo za mała — wykresy są nieczytelne i wyglądają jak mozaika ułożona z kocich łbów. Już miałem zamiar zrezygnować z użycia komputera, kiedy przyszło mi do głowy rozwiązanie. Nie muszę chyba dodawać, że wiązało się ono z napisaniem jeszcze jednego programu.
Mój pomysł (może nie zupełnie mój, bo na innych komputerach takie rzeczy robiono już wcześniej) jest dość prosty — zamiast korzystać z możliwości oferowanych przez ekran (a konkretnie przez budowę komputera), trzeba wykorzystywać możliwości oferowane przez drukarkę. Pozwoli to zastąpić 256 pikseli (w poziomie) 480 pikselami, bo tyle wynosi rozdzielczość używanej przeze mnie Seikoshy. Teraz trzeba się zastanowić nad tym, jak zrealizować ten pomysł, i jaką przyjąć rozdzielczość pionową. Najprościej skorzystać z istniejących już idei, dopasowując je do własnych potrzeb.
Na zapamiętanie obrazu, który zostanie wydrukowany, trzeba przeznaczyć pewien obszar pamięci na zasadzie "jeden piksel — jeden bit" (będzie to coś w rodzaju pamięci ekranu). Sposób organizacji tej "pamięci drukarki" najlepiej tak dobrać, żeby było jak najmniej kłopotów podczas drukowania — oznacza to w naszym przypadku zapamiętywanie w kolejnych bajtach informacji o sąsiadujących ze sobą słupkach zawierających siedem pikseli (Seikosha ma w głowicy siedem igieł). Ósmy bit pozostaje niewykorzystany — jest to rozwiązanie trochę rozrzutne, ale za to bardzo proste. Teraz można już podjąć decyzję o rozdzielczości w pionie — wiemy, że musi ona być wielokrotnością siedmiu i nie może powodować zajęcia zbyt dużej ilości pamięci. Przyjąłem 350 pikseli — na zapamiętanie obrazu potrzebne będzie 24000 bajtów, co daje się przeżyć.
Teraz już trzeba tylko napisać program, oczywiście w kodzie maszynowym, żeby nie umrzeć z nudów podczas stawiania jednej malutkiej kropki. Nie musicie tego robić sami, wystarczy wstukać jedną z wersji — albo asemblerową albo ładującą w BASIC-u (uwaga — program nie jest relokowalny!), żeby móc korzystać z idei przedstawionej powyżej.
Teraz krótka instrukcja obsługi. Program uruchamia się od trzech adresów:
40000 — PLOT,
40146 — CLS,
40166 —COPY.
Jeżeli chcecie postawić punkt o współrzędnych 100,223, musicie użyć następujących instrukcji:
10 LET x = 100
20 LET y=223
30 RANDOMIZE USR 40000
Program sam znajdzie w obszarze zmiennych zmienne x i y, jeżeli będzie trzeba zaokrągli je do wartości całkowitych, sprawdzi ich wartość (czy nie są spoza dopuszczalnego zakresu (0<=x<=479, 0<=y<=349) i postawi dwie kropki — jedną w obszarze pamięci drukarki, drugą (o współrzędnych x/2 i y/2) na ekranie tak, by można było kontrolować tworzenie się grafiki bez marnowania ton papieru. Większość tych operacji zostanie wykonana przy pomocy procedur zawartych w ROM-ie i stanowiących część interpretera BASIC-a, dzięki czemu program jest stosunkowo krótki.
Żeby wyczyścić pamięć drukarki, należy użyć instrukcji RANDOMIZE USR 40146 — spowoduje ona również skasowanie pamięci ekranu, ale uwaga: utrata zawartości ekranu pod czas pracy (na przykład po instrukcji CLS albo LIST, PRINT czy po zwykłym naciśnięciu ENTER podczas edycji programu) nie powoduje wyczyszczenia pamięci drukarki — można to zrobić tylko przez USR 40146.
Trzecia i ostatnia sprawa, to drukowanie obrazu. Robi się to jako PRINT # 4; USR 40166, po przygotowaniu strumienia czwartego instrukcjami OPEN#4;"b"; FORMAT "b";9600
To już wszystkie informacje odnośnie użytkowania programu. Nie ma możliwości wykonania żadnego napisu, który pojawiłby się na wydruku, brakuje również instrukcji DRAW, ale zrezygnowałem z nich, by nie komplikować zanadto zagadnienia. Zainteresowani mogą próbować rozbudować proponowany system o inne funkcje. Mogą im się w tym celu przydać następujące informacje: podprogram XYSZUK znajduje w obszarze zmiennych zmienne x i y i obliczone na ich podstawie całkowite wartości zapamiętuje jako zmienne XPLOT i YPLOT. Wywołanie programu od etykiety PL0T1 powoduje sprawdzenie, czy XPL0T i YPLOT mają wartości z odpowiedniego zakresu (podprogram ZAKRES) i zaznaczenie odpowiedniego punktu. Jeżeli wartości XPLOT i YPLOT są na pewno właściwe, można wywołać program od etykiety PL0T2. Pamięć drukarki zawiera poczynając od adresu PRTMEM kolejne poziome paski ekranu (każdy o długości 480 bajtów) o wysokości siedmiu pikseli, poczynając od najniższego, kończąc na najwyższym. Najmłodsze bity bajtów pamięci drukarki odpowiadają punktom o współrzędnych pionowych 6, 13, .... 349 —czyli 7 n-1 (n = 50), najstarsze są zawsze równe jeden — tego wymaga drukarka.
To już koniec przygód z drukarką, ale czy na pewno? Zależało mi przede wszystkim nie na pokazaniu gotowych rozwiązań (co nie znaczy, że nie można tak potraktować zamieszczonych tu programów), lecz i na dwóch innych sprawach. Po pierwsze, chciałem Wam pokazać różne drogi, którymi można próbować się poruszać przy korzystaniu z drukarek — dlatego specjalnie pominąłem kwestię polskich liter, jako oklepany temat. Po drugie, chciałem pokazać, że od megabajtów i megaherców bardzo często znacznie ważniejsze jest oprogramowanie, bez którego ani rusz. Mało który użytkownik komputerów korzysta w pełni z ich możliwości — po co więc większa pamięć i szybszy procesor? Nauczmy się korzystać dobrze z tego, co jest nam naprawdę potrzebne. Mam nadzieję, że zgodzicie się ze mną.Autor listingu: Marcin Borkowski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Kopiowanie z Atrybutami
Czy pamiętacie moje ostatnie kłopoty? Wyobraźcie sobie, że nie skończyły się one wcale w momencie napisania programu kopiującego ekran w trybie graficznym. Przypominam — wszystko zaczęło się od pożyczenia drukarki Seikosha GP-500AS. Jak wiadomo, apetyt rośnie w miarę jedzenia. Zapragnąłem skopiować ekran tak, by było widać, że jest kolorowy.
Znacie Art Studio? Jest to taki program do rysowania. Teoretycznie pośród jego wielu możliwości figuruje opcja PRINT, umożliwiająca wydrukowanie zawartości ekranu w taki sposób, by różnym kolorom punktów na ekranie odpowiadały różne kombinacje punktów na papierze (jeden punkt ekranu odpowiada wtedy na papierze kwadratowi składającemu się — w zależności od możliwości drukarki — z czterech lub dziewięciu punktów). Napisałem „teoretycznie“, bo jak wiadomo komputery wcale nie ułatwiają życia swoim właścicielom. Zawsze znajdzie się powód, dla którego nie da się zrobić tego, co teoretycznie powinno dać się zrobić bez żadnego problemu. Tak samo było tym razem. Pogięła się taśma magnetofonowa. Samo Art Studio dało się wczytać, ale już program instalujący je dla różnych konfiguracji sprzętowych — nie.
Ci z Was, którzy czytali ostatni artykuł, już wiedzą czym to się skończyło i następnego zdania mogą nie czytać. Jak to zwykle w takich sytuacjach bywa, musiałem sam napisać program robiący to, co było mi potrzebne. Niestety, tym razem problem nie da się rozwiązać w taki sam sposób jak poprzednio. Żeby skopiować ekran punkt po punkcie, wystarczyło go pokroić na paski o szerokości siedmiu pikseli i każdy taki pasek wysłać na drukarkę. Teraz ekran musiałby być pokrojony na paski o szerokości trzech i pół pikseli (możliwości Seikoshy pozwalają tylko na zastąpienie każdego punktu kwadratem dwa na dwa), cała operacja byłaby bardzo skomplikowana. Zabrałem się więc do pracy w inny sposób. Pokroiłem na paski to, co miało być na wydruku — łatwo jest sprawdzić, czy punktowi na papierze odpowiada na ekranie punkt o kolorze tła, czy o kolorze tuszu.
Początkowo miałem zamiar napisać program w Basic-u, żeby sprawdzić algorytm, ale bardzo szybko zrezygnowałem. Pierwsze próby wykazały, że na kompletny wydruk trzeba by czekać kilka godzin. Dlatego też zdecydowałem się na sam program w kodzie maszynowym. Tak samo jak w poprzednim artykule, oprócz wydruku z asemblera, zamieszczam program ładujący w Basic-u — program nie jest relokowany, uruchamia się go przez PRINT#4;USR 60000, po otwarciu strumienia instrukcjami OPEN #4; „B“: FORMAT „B“;9600.
Autor listingu: Marcin Borkowski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: zx_kopatr_bajtek5-1989-t2e.pl.7z
-
Dekoder Transmisji Radiowej
Z końcem 1985 roku Rozgłośnia Harcerska Polskiego Radia rozpoczęła emitowanie programów komputerowych. Audycja „Radio- komputer“ powstała na życzenie słuchaczy i do dziś prezentuje programy przez nich opracowywane i nadsyłane.
Chociaż pierwsze z emitowanych programów przeznaczone były dla Spectrum, nie stały się popularne. Stosowany w Spectrum standard zapisu informacji na taśmie magnetofonowej jest niezwykle niepodatny do emisji, wrażliwy na zakłócenia. Przez to tylko nieznaczny procent programów dawał się potem odtworzyć i używać.
Sytuacja poprawiła się, gdy p. Tomasz Jordan, założyciel i prowadzący „Radiokomputer“, rozpoczął emisję programów na Atari i Commodore. W przypadku Atan ma miejsce stuprocentowa pewność co do jakości nagranych programów, zaś Commodore wczytuje ok. 70%.
Spectrumowcy czuli się nadal zawiedzeni. Liczne próby coraz to nowych systemów nie dawały rezultatów i „Radiokomputer“ stracił sporą liczbę słuchaczy.
Teraz nareszcie doczekali się oni pewnego systemu transmisji. Firma „SZOK“ ze Świebodzina, w osobie Mirosława Bereźnickiego i Zygmunta Rozynka, opracowała ostateczną wersję programu transmisji, o nazwie „Dekoder Transmisji Radiowej PLUS“, w skrócie DTR +. Warto nadmienić, iż „SZOK“ zajmuje się tworzeniem oprogramowania dla Atari. wykorzystuje przy tym Spectrum jako urządzenie pomiarowe. Przy tak wielkie] znajomości Spectrum firma ta, jako trzecia z rzędu, podjęła się i — co najważniejsze — stworzyła niezawodny program DTR+.
Program przeznaczony do emisji na falach radiowych jest kodowany przez sam „Radiokomputer“, a następnie emitowany. Po nagraniu go na taśmę z radia, należy poddać go odkodowaniu. Zrobi to za Was zamieszczony obok program „DTR+“, który trzeba wpisać (najpierw procedura ładująca — linie 100 — 120 z pierwszego wydruku) i nagrać przez SAVE „DTR+ „LINE 1. Następnie, po wpisaniu drugiej części, należy Tiagrać blok kodu za poprzednio nagraną procedurą ładującą.
Tak przygotowany program DTR+ gotowy jest do użytku Po wczytaniu uruchamia się ona automatycznie i pojawia się mini-menu, dzięki któremu możliwe jest wczytanie zakodowanego programu (LOAD), nagranie odkodowanej wersji na taśmę (SAVE) oraz powrót do systemu (RESET).
Emitowany w radio program zapisany jest w postaci jednego bloku, około dwukrotnie dłuższego niż cały program źródłowy. Program DTR+ odkodowuje go i nagrywa w kilku blokach tak, że jest gotowy do użytku. Dodatkową zaletą jest to, że po odkodowaniu użytkownik dysponuje wersją nagraną na specyficznym dla jego magnetofonu ustawieniu głowicy.
Muszę zmartwić graczy: „Radiokomputer“ nie emitu|e gier! Nie będziecie więc mieli czego tak szukać, chyba, że interesują Was również programy użytkowe, bo tylko takie można tam znaleźć. Ich autorami są w większości słuchacze „Radiokomputera“, choć zdarza się emisja programów zachodnich, np. „SuperCode“.
Wszystkich zainteresowanych współpracą z „Radiokomputerem“ prosimy o nadsyłanie listów i programów na adres:
Rozgłośnia Harcerska
00-950 Warszawa ul. M Konopnickiej 6,
z dopiskiem „Radiokomputer“
Istnieje jedno ograniczenie dla programów przeznaczonych do zakodowania i emisji: wszystkie bloki muszą posiadać nagłówki.
„Radiokomputer“ emitowany jest na falach ultrakrótkich i średnich, w każdy czwartek w godz 16.00 — 16.20 oraz wtorek — godz. 22.50—24.00. Blok emisji programów to godz 23.25—24 00Autor listingu: Marcin Przasnyski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Kuba Rozpruwacz
Dziś rano uciekł z więzienia znany przestępca i włamywacz, Kuba Rozpruwacz. Jesteś jedyną osobą, która widziała go zaraz po ucieczce. Dysponujesz starą maszyną do sporządzania portretów pamięciowych. Ma ona zakodowane po kilka cech każdej części twarzy. Są to: kształt głowy, gęstość włosów, wielkość oczu, gęstość brwi, wielkość nosa, uszu, ust i wąsów. Kuba nie nosi brody, gdyż go łaskocze. Nie przylepia też sztucznej z powodu alergii na klej. Każdą cechę możesz ustalić tylko raz.
Po podaniu ostatniej, maszyna tworzy gotowy portret. Twoje zadanie ogranicza się więc do zmiany wielkości kolejnych części twarzy. Przedstawiony poniżej program symuluje taką właśnie maszynę. Poszczególne cechy generowane są losowo. W sumie możliwe jest stworzenie 3888 różnych twarzy. Portret rozpoczynany jest od głowy. Można ją zwiększać i zmniejszać klawiszami 1 i 2. Klawisz 0 służy do przejścia do następnej cechy. Po ustaleniu wielkości wąsów, twój portret porównywany jest z oryginałem. Dowiadujesz się, które części podałeś źle, oraz jaka jest odchyłka portretu od oryginału. I to już koniec. Możesz grać od początku, tworzony jest nowy Kuba i ty musisz stworzyć jego portret.
Program powstał na pomyśle gry „PHOTOFIT“. Było to tworzenie portretów przez podawanie określających ich przymiotników, np. dłuższy, węższy, grubszy, oczywiście po angielsku. Ja ograniczyłem się tylko do wielkości, różnie rozumianej.
Proponuję rozbudować program według własnego uznania. Jego główną częścią są podprogramy 5000—5700, gdzie tworzone są części twarzy na podstawie zmiennych zawartych w tablicy a. Podprogram 6000 pozwala na zmianę wielkości odpowiedniej części. Zmiennymi wejściowymi są: wielkość początkowa, wielkość najmniejsza i największa oraz podprogram rysujący daną część Program został „potraktowany“ weryfikatorem z Bajtka 6/88, w celu uniknięcia pomyłek przy wprowadzaniu listingu. Nie należy więc wpisywać instrukcji REM na końcu linii, lecz po wpisaniu programu wykonać RANDOMIZE USR 23380. Oczywiście, w pamięci musi znajdować się weryfikator. Potem wystarczy porównać wartości przy REM w programie i w listingu.
Autor listingu: Marcin Przasnyski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: zx_kuba_rozp_bajtek5-1989-t2e.pl.7z
-
Kopiowanie Ekranu Nie Jest Takie Proste
Chciałbym opowiedzieć Wam historię o pożyczonej drukarce i pilnej pracy do wykonania. Morał wyciągnijcie sami.
Pożyczyłem od znajomego drukarkę. Nie byl to Epson ani Star, lecz zwykła stara Seikosha GP-500AS. Miałem zamiar przy jej pomocy przygotować różne, pilnie mi potrzebne graficzne materiały.
Podłączyłem wszystko zgodnie z instrukcją i zdrowym rozsądkiem, napisałem tak jak trzeba OPEN#3, "t": FORMAT "t", 9600, i spróbowałem wydrukować jakiś program. Udało się. Pokrzepiony tym sukcesem, napisałem COPY. Nie udało się. Spróbowałem z innej beczki — napisałem OPEN#4, "b": FORMAT "b", 9600. COPY jak nie dawało żadnego efektu, tak nie daje dalej. W tej sytuacji postanowiłem wziąć się do sprawy systematyczniej, wyciągnąłem różne mądre książki i zacząłem szukać. Odpowiedź znalazłem w ROM-ie. COPY działa tylko wtedy, gdy korzysta się ze specjalnej drukarki, przystosowanej do Spectrum. Co ma w takiej sytuacji zrobić człowiek, któremu zależy na skopiowaniu ekranu — to samo, co zawsze się robi, kiedy trzeba — napisać samemu odpowiedni program. Tak też zrobiłem. (Przy wszystkich programach zakładam, że tak samo jak ja, otworzyliście strumienie trzeci i czwarty).
Zacząłem od programu kopiującego ekran w trybie tekstowym (wydruk 1). W końcu od czasu do czasu zależy nam na przesłaniu na drukarkę jakichś wyników — wtedy wystarczy skopiowanie znaków ASCII, znajdujących się na ekranie.
Niestety, czasem trzeba przenieść na papier widoczną na ekranie grafikę. Wtedy pierwszy program jest bezużyteczny, bo funkcja SCREEN$ potrafi rozpoznać tylko znaki których wzorce są zapamiętane w ROM-ie, bez grzebania w zmiennych systemowych nie można przy jej pomocy rozpoznać nawet UDG. W takich wypadkach jedyne co może nam pomóc, to program kopiujący ekran w trybie graficznym (wydruk 2).
Cały problem polega na odpowiednim podzieleniu ekranu na poziome paski o grubości siedmiu pikseli i sprawdzaniu stanu pikseli (są czy ich nie ma) w odpowiedniej kolejności — od dołu do góry. To, co się dzieje w linii 150, najlepiej sobie rozpisać — jest tam przygotowywany bajt, którego poszczególne bity odpowiadają stanowi odpowiednich punktów na ekranie. Taki program wprawdzie działa bardzo skutecznie, ale ma jedną wadę. Jest przeraźliwie wolny. Skopiowanie ekranu trwa ponad 14 minut czyli więcej niż przygotowanie skomplikowanego rysunku, o czym niedawno pisałem. Należy go więc przyspieszyć czyli "ręcznie" skompilować. Uzyskamy wtedy to samo, ale w kodzie maszynowym (wydruk 3).
Teraz jest juz szybko — to nie drukarka czeka na komputer ale odwrotnie — komputer czeka, aż drukarka skończy poprzedni wiersz, żeby jej przesłać dalszy ciąg danych. (Program uruchamia się instrukcją PRINT#4; CHR$ USR adres, i nie radzę robić tego inaczej, bo nic się nie skopiuje!).
Znając użytkowników Spectrum wiem, że niektórzy patrzą podejrzliwie na program w asemblerze. Mam dla nich niespodziankę — nie musicie z tego wydruku korzystać! Popatrzcie na następny — jest to program ładujący, napisany w Basicu i w dodatku wersja, którą on ładuje jest wygodniejsza — bo relokowalna (wydruk 4)!
Podejrzewam, ze naraziłem się tym wszystkim, którzy mają inne drukarki niż pożyczona przeze mnie. Radzę im dobrze przeanalizować wszystkie programy — i spróbować napisać własne. Powodzenia!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 periodyku
-
Zapis Liczb w Pamięci RAM
Zestaw 3 programów ilustrujących cykl artykułów traktującym o tym zagadnieniu. Program nie czyszczony, wymaga poprawek ale ciężar tego zagadnienie tak mnie przytroczył, że zostawiłem sobie poprawki na 'kiedyś'
Autor listingu: Piotr Sumara
Listing nadesłał: Faust
Język programu: Sinclair Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
-
Rozkrój
Oto bardzo prosty przykład na to, jak praktycznie wykorzystać możliwości mikrokomputerów, na przykładzie popularnego Spectrum. Przedstawiony program ma za zadanie znaleźć optymalny sposób podziału elementu dużego (np. arkusza blachy) na jednakowe elementy mniejsze. Danymi wejściowymi są: wymiary arkusza, wymiary elementu i zapotrzebowanie. W rezultacie otrzymuje się układ rozkroju liczbę arkuszy potrzebnych do uzyskania żądanej liczby elementów oraz wydajność z arkusza. Dodatkowo, po podaniu masy surowca obliczana jest masa elementów oraz potrzebnych arkuszy.
Autor listingu: Józef Ludwiński
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_rozkroj_bajtek-1-1989-t2e.pl.7z
-
Zegar
Po uruchomieniu tego programu na ekranie monitora pojawi się zegar. Dokładność wskazań zależy od precyzji danych wejściowych, czyli czasu „nakręcania” oraz sprawności układów elektronicznych mikrokomputera Spectrum.
Autor listingu: Andrzej [???]
Listing nadesłał: Duddy
Język programu: Sinclair Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznychPobierz: zx_zegar_iks286-t2e.pl.zip
-
Compact
Compact jest programem na 16/48 KB Spectrum pozwalającym na zmniejszenie zajetości i pamięci i zwiększenie szybkościdziałania innych programów napisanych w BASIC-u. Umożliwia wykonywanie trzech podstawowych operacji:
- — skracanie zapisu liczb bez wpływu na dokładność obliczeń;
- — skracanie długich nazw zmiennych do nazw dwuznakowych w postaci: A0,C0... ZZ;
- — kompresja (łączenie wierszy programu) jeśli jest to możliwe.
W celu wykorzystania programu Compact załaduj go do pamięci i instrukcjami:
CLEAR adres: LOAD „”CODE
gdzie adres jest początkowym adresem obszaru pamięci, która może wykorzystać program Compact. W zależności od posiadanych wersji mikrokomputera Spectrum możesz podać wartość adresu np. 32108 lub 64876.
Uruchom program Compact komendą RUN. Gdy otrzymasz pytanie o adres startowy, wprowadź wcześniej wybraną wartość adresu. Na zakończenie program Compact podaje adresy startowe operacji możliwych do wykonania (zapamiętaj je lub zapisz). Wykonaj NEW.
Wprowadź do pamieci program, który chcesz poddać obróbce programem Compact. Jeśli chcesz wykonać operacje, które umożliwia Compact, podaj komendę w postaci:
RAND USR adres operacji
(adres operacji miałeś wcześniej podany). Przekształcone postacie swojego programu możesz obejrzeć wykonując LIST programu.Autor listingu: Piotr Iwiński
Listing nadesłał: Faust
Język programu: Sinclair Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznychPobierz: zx_compact_iks286-t2e.pl.zip
-
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
-
Paczka minilistingów Mikrokomputery, 1987
Paczka listingów zamieszczonych w dodatku do Kuriera Szczecińskiego "Mikrokomputery" z 1987 roku. Wszystkie listingi oprócz "Najwyższy Wspólny Podzielnik" są ok.
Na obrazie kasety znajdują się programy, w kolejności zamieszczania ich w periodyku:
- DZIEŃ TYGODNIA
- LICZBY RZYMSKIE
- LUPA
- JEDNOSTKI CIŚNIENIA
- ŻÓLW W BASICU
- NAJWYŻSZY WSPÓLNY PODZIELNIK
- JEDNOSTKI MASY
- MOZAIKA
- GRAFIKA
- SYSTEMY LICZBOWE
- KURSY WALUT
- JEDNOSTKI DŁUGOŚCI
- POWIERZCHNIE
- SKALE TERMOMETRYCZNE
- WIELOKĄTY
Autor listingu: nw
Listing nadesłał: Faust
Język programu: Sinclair Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
-
Follow Me
Tytuł ten, w wolnym tłumaczeniu, może znaczyć "rób to, co ja". Pomysł zaczerpnięty jest z francuskiego czasopisma „Amstrad Magazine”; program podobny figurował pod nazwą „Garfunkel”. Tu jednak został znacznie skomplikowany, co zapewne czyni go atrakcyjniejszym, lecz trudniejszym.
Na ekranie widnieje kolorowe koło, podzielone na osiem jednakowych części, ponumerowanych od 0 do 7. Komputer wybiera losowo którąś z części i zakrywa ja przez chwiię. Zadaniem grającego jest powtórzenie tego ruchu, przez wciśnięcie jednej z cyfr od 0 do 7. Po prawidłowej odpowiedzi komputer losuje następną część koła i zakrywa po kolei: najpierw poprzednią, potem wylosowaną. W ten sposób trudność gry wciąż rośnie.
Na początku nie będziesz mógł zapamiętać nawet pięciu zniknięć, po krótkim treningu z łatwością powtórzysz osiem. Jednak wynik piętnastu zniknięć należy uznać za bardzo dobry, nawet po długim treningu.
Autor listingu: Stanisław Dałek
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Weryfikator
Jak sprawdzić, czy wpisany właśnie program jest poprawny?
Najlepiej porównać go z oryginałem. Może to być jednak niewykonalne. Proponuję metodę stosowaną już w Klanie Atari i Klanie Commodore. Sposób będzie jednak trochę inny. Spectrum posiada edytor na tyle nietypowy, że właściwie nie ma możliwości kontrolowania aktualnie wpisanej linii. Zastosowałem więc inną metodę — dopisywania do wprowadzonej już linii sumy wszystkich jej kodów modulo 255 w kodzie szesnastkowym.
Procedura pracuje w dwóch wersjach. Pierwsza, uruchamiana przez RANDOMIZE USR 23310 powoduje zapisanie sumy kontrolnej w każdej linii, którą kończy instrukcja REM xx. XX to dwa dowolne znaki.
Tryb uruchamiany przez RANDOMIZE USR 23380 powoduje dopisanie do każdej istniejącej linii końcówki REM z kodem kontrolnym linii.
Proponuję przeanalizowanie procedury w kodzie maszynowym. Jest ona umieszczana w buforze drukarki i pozostaje tam do chwili wyzerowania komputera. Oczywiście, jeżeli używa się drukarki, procedurę należy przenieść w inny obszar pamięci lub wpisywać ją tam po każdym użyciu drukarki.Autor listingu: Mieczysław Torbus
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 periodyku
-
Labirynt
Bajtkowe przedszkolaki z grupy Romka dotarły już do „starszaków” — czas najwyższy, by czytać kolumny „Klanów”. Zanim więc rozpoczniecie naukę asemblera, uświadomcie sobie, że BASIC to nie tylko Kubuś Literka. Dla Was kontynuujemy cykl „Zrób to sam” — czyli układamy „duży” program w oparciu o pomysł z „Bajtka”.
Dziś w KLANIE SPECTRUM propozycja zabawy w bieganie po labiryncie. W podanym przykładzie (jest to tylko przykład) należy w jak najkrótszym czasie przejść wszystkie korytarze. Operując czterema klawiszami (Q, A oraz O i P), zbieramy porozrzucane gwiazdki. Kto chce, może już zacząć grać. Należy tylko pamiętać, by po wpisaniu programu utrwalić go na taśmie oraz by w czasie gry nie był włączony CAPS LOCK. Tym zaś, którzy chcieliby tanim kosztem stworzyć „własną” grę, proponujemy analizę załączonego przykładu i co najważniejsze, udoskonalenie go, bo przecież nie możemy w „Bajtku” drukować super wersji na 48 kB.
Wszystkim radzimy najpierw wpisanie programu dokładnie w takiej postaci, jak na listingu. Pierwszą rzeczą jaką będziecie potem mogli zmienić jest kształt labiryntu, zapisany w liniach DATA. By nie pogubić się w zerach i jedynkach, dobrze byłoby najpierw zaprojektować go na kartce (labirynt zajmuje obszar 32 x 19 znaków). W liniach 2000 — 2030 zdefiniowana jest postać, którą poruszać się będziecie po labiryncie (aby ją „wywołać” przy wpisywaniu programu, należy najpierw wpisać i uruchomić fragment 2000—2030, a następnie używać GRAPHICS i A). Postać tę możecie również dowolnie zmieniać — sposób definiowania wyjaśniony jest w każdej instrukcji do komputera. Klawisze sterujące „schowane” są w liniach 90—120. Można je wymienić na inne lub, po dopisaniu kilku linii, wprowadzić możliwość definiowania ich przez gracza. Wiele linii można też dodać, by ulepszyć oprawę graficzną i dźwiękową. Pomysłów na pewno Wam nie zabraknie — wszak nie jesteście już przedszkolakami.Autor listingu: (PB)
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_labirynt_bajtek-61986-t2e.pl.zip
-
Szukamy Liczb Czyli Sukcesywna Aproksymacja
W instrukcji do Spectrum znalazłem następujący program:
10 LET a=INT (RND*100)20 LET a$ = ~~30 INPUT (a$); ~Zgadnij liczbe~;b40 IF a=b THEN PRINT „ Gratuluje! ”:STOP50 IF a>b THEN LET a$=” Za malo ”60 IF a<b THEN LET a$=” Za duzo! ”70 GO TO 30Istnieje niejedna metoda aproksymacji. Rozważmy program:Jest to doskonała zabawa na prawie cały dzień. Zgadujemy tu liczbę pomyślaną przez komputer. Najefektywniejszą taktyką odgadywania jest dzielenie rozpatrywanego przedziału na pół. Na przykład jeżeli zgadujemy liczbę z przedziału (0,100), podajemy 50. Jeśli jest ona za mała, bierzemy przedział (50,100), podajemy 75 i tak dalej. W zasadzie ósmy strzał powinien być trafiony.Metoda kolejnych przybliżeń to właśnie aproksymacja. Powinna on być sukcesywna — dawać rezultat jak najszybciej.Spróbujmy odwrócić sytuację — my pomyślimy liczbę, a komputer będzie ją odgadywał.10 LET x=0:LET y=10220 LET c=INT((x+y)/2)30 INPUT „Czy „;(c);” ? „;a$40 if a$=”>” THEN LET x=c:GO TO 2050 IF a$=”<” THEN LET y=c:GO TO 2060 IF a$=”=” THEN STOP70 GO TO 20W odpowiedzi na pytanie „Czy xx” należy podać jeden ze znaków — „>”, „<” lub „ = „. Rozpatrujemy przedział (0,100).Istnieje niejedna metoda aproksymacji. Rozważmy program:10 DIM a(8)15 LET a(1)=120 FOR f=2 TO 8:LET a(f)=2^(f-2):NEXT F30 LET c=a(8)40 FOR f=7 to 1 STEP -150 INPUT ~Czy ~;(c);~ ? ~;a$60 IF a$<>”<” AND a$<>”>” AND a$<>”=” THEN GOTO 5070 IF a$=”>” THEN LET c=c+a(f)80 IF a$=”<” THEN LET c=c-a(f)90 IF a$=”=” THEN GOTO 110100 NEXT f110 PRINT „Liczba=”;cW tablicy a zapisaliśmy sześć kolejnych potęg dwójki. Najwyższa liczba to 64, więc kompuer odgadnie tu liczbę z przedziału (0,127). Jako pierwsza podawana jest liczba 64. Jeżeli pomyślana jest większa, do 64 dodawana jest 32, jeśli mniejsza, to 32 jest odejmowane i tak dalej. Tu maksymalna ilość pytań jest także 8 ze względu na włączenie zera do rozpatrywanego przedziału.Możemy rozszerzyć tablicę na przykład do 16 pozycji; trzeba wtedy odpowiednio pozmieniać początki i końce pętli, lecz uzyskamy zakres do 131069, a maksymalną ilością pytań będzie najwyższa potęga dwójki, czyli 16.W zasadzie nie można powiedzieć, która z metod jest najlepsza. W pamięci lepiej używać metody dzielenia przedziałów na pół, maszyna szybciej aproksymuje dwójkowo.Autor listingu: Marcin Przasnyski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Bzzz... inaczej
Po przeczytaniu opisu gry „Bzzz” w numerze 3/87 „Bajtka” postanowiłem napisać ją w BASIC-u. Program okazał się prosty i o wiele krótszy od wersji w kodzie maszynowym. Mimo to jest on dosyć szybki. W linii 2 po pierwszym słowie „GRACZ” należy wstawić zieloną, a po drugim niebieską kratkę. Zapalenie się czarnego kwadracika informuje o przegranej któregoś z graczy. W liniach 9500 i 9600 musi być czarna spacja graficzna.
Autor listingu: Hubert Sobczak
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Od Środka cz. II
Znacie już cały podział pamięci ZX Spectrum (mamy nadzieje, że zapamiętaliście coś z poprzedniego artykułu). A wiec do dzieła. Dziś poznany sposób zapisu programów na taśmie i zaczniemy sie włamywać do programów napisanych w BASIC-u (pamiętaj, że praktycznie każdy program ma chociażby procedurę ładująca napisana w BASIC-u. a jeśli jej nie posiada, to w zasadzie wcale nie jest zabezpieczony).
Na razie weźmy się jednak do sposobu zapisu programów na taśmie — przypomnij sobie co widać i słychać podczas wczytywania jakiegokolwiek programu.
Przez ok. 1 — 2 sekundy, na obrzeżu ekranu widoczne są szerokie, czerwono-niebieskie pasy oraz słychać ciągły dźwięk. Jest to tzw. pilot, który umożliwia komputerowi zsynchronizowanie się z sygnałem z taśmy, który ma odbierać. Potem przez krótką chwilę pojawiają się cienkie, migające, żółto-granatowe paski, oznaczające, że komputer wczytuje do pamięci informacje. Jest ich 17 bajtów — tzw. nagłówek. Pojawia się napis "Bytes:" "Program:", "Character array:" lub "Number array:", a potem po chwili przerwy zaczyna się drugi pilot (nieco krótszy), a po nim wczytuje się właściwy program. Zajmiemy się teraz nagłówkami, gdyż zawarte są w nich najważniejsze informacje o wczytywanych programach.
Nagłówek — jak już wspomnieliśmy — składa się z 17 bajtów. Będziemy je numerować od 0 do 16 (patrz rys.1). Zerowy bajt oznacza typ bloku. Jest on równy 0 — jeśli jest to program w BASIC-u, 3 — jeśli blok kodu maszynowego (nagrany przez SAVE "CODE..." albo SAVE "..." SCREEN$, które oznacza dokładnie to samo, co SAVE "...",CODE 16384,6912. Jeśli natomiast nagłówek ten poprzedza zbiór będący tablicą zmiennych BASIC-a (nagrany przez SAVE DATA...), to jest on równy 1 — dla tablic liczbowych lub 2 — dla tablic znakowych.
Następne 10 bajtów, to nazwa wczytywanego bloku, czyli tekst pojawiający się po załadowaniu nagłówka, za napisem "Program:", "Bytes:" czy innym.
Bajty 11. i 12. zawierają dwubajtową liczbę (pierwszy bajt mniej znaczący) oznaczającą długość bloku danych, którego ten nagłówek dotyczy.
W zależności od typu wczytywanego bloku, bajty od trzynastego do szesnastego są w różny sposób interpretowane.
Zacznijmy od nagłówków programów napisanych w BASIC-u. Bajty 13. i 14. oznaczają numer linii, od której ma się uruchomić program, jeśli był nagrany przez SAVE "..." LINE nr. Jeśli program był nagrany bez opcji LINE czyli po wczytaniu nie uruchomi się samoczynnie, to wartość tej liczby jest większa od 32767. Jednym ze sposobów unieszkodliwiania zabezpieczeń samostartujących programów w BASIC-u jest zmiana tych dwóch bajtów w nagłówku na wartość większą od 32767.
Bajty 15. i 16. zawierają liczbę oznaczającą długość samego programu w BASIC-u (bo SAVE "" lub SAVE "" LINE nagrywają program wraz ze wszystkimi zmiennymi, tzn. zawartość pamięci od bajtu wskazywanego przez zmienną systemową PROG, do bajtu określonego zmienną E_LINE). Gdy od całkowitej długości bloku (bajty 11. i 12.) odejmiemy tę liczbę, dowiemy się ile bajtów w tym bloku zajmują zmienne BASIC-a. To wszystko, jeśli chodzi o nagłówki programów w BASIC-u.
W nagłówkach kodu maszynowego ("Bytes:") bajty 15. i 16. nie są wykorzystywane, natomiast 13. i 14. tworzą dwubajtową liczbę określającą pod jaki adres należy wczytać następujący po nagłówku blok.
W nagłówkach tablic wykorzystywany jest spośród tych czterech, tylko bajt 14., który przedstawia nazwę wczytywanej tablicy. Jest on zapisany tak, jak nazwy wszystkich zmiennych BASIC-a (w obszarze od VARS do E_LINE), tzn. trzy najstarsze bity oznaczają typ zmiennej (tutaj będzie to tablica liczbowa lub znakowa) a pięć mniej znaczących bitów — nazwę tej zmiennej*).
Na listingu 1. przedstawiony jest program tworzący procedurę umożliwiającą odczytywanie nagłówków programów zapisanych na taśmie. Po jego dokładnym wpisaniu (uważaj na właściwą ilość spacji w liniach z instrukcjami DATA!) uruchom go przez RUN i poczekaj chwilę. Na ekranie pojawi się informacja o adresach początku i końca procedury oraz o jej długości, która powinna wynosić 284 bajty. Jeśli tak nie jest, sprawdź, czy na pewno wpisałeś wszystkie linie programu. Jeśli wszystkie dane były poprawne, to na twojej taśmie znajdzie się procedura "czytacz", dzięki której będziesz mógł odczytać każdy nagłówek. Po nagraniu jej na taśmę możesz już skasować program z listingu 1.
Procedura "czytacz" jest relokowalna, tzn. będzie działała poprawnie niezależnie od tego, pod jakim adresem w pamięci się znajdzie. Możesz ją więc wczytać przez:
LOAD "czytacz" CODE adres
a następnie uruchamiać przez
RANDOMIZE USR adres
i to nawet wielokrotnie. Po uruchomieniu, procedura wczytuje pod adres 23296 (do bufora drukarki) pierwszy napotkany nagłówek. Jeżeli ze względu na podłączone urządzenia zewnętrzne nie odpowiada ci ten adres, to możesz go zmienić zastępując w linii 200 programu z listingu 1. liczbę 005B heksadecymalnym adresem, pod który chciałbyś wczytywać nagłówki (dwie pierwsze cyfry są młodszym bajtem tego adresu). Aby po takiej zmianie uniknąć sprawdzania sumy kontrolnej w tej linii, na końcu tekstu ujętego w cudzysłowy zamiast spacji i czterech cyfr sumy kontrolnej umieść literę "s" poprzedzoną czterema spacjami.
Po wczytaniu nagłówka procedura odczytuje informacje w nim zawarte i wraca do BASIC-a, lecz wczytanego nagłówka nie niszczy, więc jeśli chcesz, możesz go dodatkowo obejrzeć wykorzystując funkcję PEEK.
Samo odczytywanie nagłówków to jednak trochę mało, by móc włamywać się do bloków zapisanych na taśmie. Trzeba jeszcze wiedzieć, co z tymi blokami zrobić, aby umieścić je w pamięci, nie pozwalając im się przy tym uruchomić.
W przypadku bloków typu "Bytes" wystarczy zwykle załadować je pod wymuszony adres, powyżej RAM-TOP-u (tzn. powyżej komórki pamięci wskazywanej przez zmienną systemową RAMTOP), np. przez:
CLEAR 29999: LOAD ""CODE 30000
Metoda ta skutkuje, jeśli tylko wczytywany blok nie jest zbyt długi (może mieć maksymalnie ok. 40K). Dłuższe bloki mogą się po prostu nie zmieścić w pamięci — konieczne jest wówczas podzielenie ich na kilka krótszych części. Niedługo dowiemy się jak to robić.
Podobnie, w przypadku tablic, załadowanie ich nie nastręcza raczej kłopotów — wystarczy użyć normalnej w takich wypadkach instrukcji LOAD "" DATA...
Gorzej natomiast wygląda wczytywanie programów w BASIC-u. Są one zwykle nagrywane przez SAVE "..."LINE, a na samym początku linii, od której mają się uruchomić umieszczone są instrukcje zabezpieczające je przed zatrzymaniem. Najprostszym rozwiązaniem jest ładowanie programu nie przez LOAD"", lecz MERGE "", jednak metoda ta nie zawsze daje rezultaty. Z tej beznadziejnej wówczas sytuacji istnieją dwa zasadnicze wyjścia: podmienić nagłówek programu lub użyć przedstawionego niżej programu "load/merge".
Pierwsze z nich polega na zastąpieniu nagranego na taśmie nagłówka przez taki sam, ale nie powodujący uruchomienia programu. Można w tym celu użyć programu "COPY COPY" — wczytać nagłówek programu, wcisnąć BREAK, a następnie instrukcją LET zmienić jego parametr START na liczbę większą od 32767 (tzn. wykonać np. LET 1 ="32768 — jeśli przerabiany nagłówek był wczytany jako pierwszy zbiór). Tak zmodyfikowany nagłówek nagrywamy gdzieś na taśmę. Usuwamy z pamięci program COPY COPY i wpisujemy LOAD "". Wczytujemy stworzony przed chwilą nagłówek, lecz zaraz po jego zakończeniu zatrzymujemy taśmę. Teraz do magnetofonu wkładamy kasetę z programem, do którego się włamujemy, ale ustawioną zaraz za nagłówkiem tego programu — tak, aby wczytać tylko treść programu, bez oryginalnego nagłówka.
Druga metoda jest o wiele wygodniejsza:
Wprowadzamy do pamięci (z klawiatury lub z taśmy) program "load/ merge" zamieszczony na listingu 2. Po uruchomieniu zaczyna on czekać na pierwszy program w BASIC-u, który znajduje się na taśmie. Wczytuje go zupełnie tak samo, jak instrukcja LOAD "", lecz po załadowaniu nie pozwala na jego uruchomienie — drukuje jedynie komunikat "0 OK", z informacją od której linii wczytany program miał się uruchomić.
Na listingu 3. przedstawiona jest procedura, którą tworzy ten program poprzez POKE-i. Zasadniczą jej instrukcją jest CALL 1821. Począwszy od adresu 1541, w ROM-ie znajduje się procedura interpretująca instrukcje SAVE, LOAD, VERIFY i MERGE. CALL 1821 wskakuje do środka tej procedury. Początkową jej część (odczytującą parametry tych instrukcji) pomijamy, zastępując to w liniach 40 — 90 naszej procedury: Najpierw przez RST 48 rezerwujemy 34 bajty w obszarze WORKSP**), adres wolnego miejsca przenosimy z rejestru DE do IX, w linii 80 zaznaczamy w zmiennej systemowej T__ADDR, że chodzi nam o LOAD, a nie np. VERIFY, a w pierwszym bajcie nagłówka do porównywania umieszczamy wartość 255, oznaczającą, że ma być wczytany pierwszy napotkany blok (tzn. program w BASIC-u). Reszty dokonuje procedura z ROM-u, działając identycznie jak LOAD "". Różnica w działaniu LOAD a "load/merge" polega na tym, że po całkowitym wczytaniu programu, zamiast wrócić przez RET do interpretera BASIC-a, przepisujemy zawartość zmiennej NEWPCC ("numer linii do której ma być skok") do PPC ("numer ostatnio wykonywanej linii") oraz nie dopuszczamy do uruchomienia programu — wykonujemy RST 8 z komunikatem "0 OK". Dzięki temu przepisaniu, w wydrukowanym komunikacie znajdzie się informacja o numerze linii, od której wczytany program miał się uruchomić.
Niecierpliwie czekając na kolejny odcinek z tego cyklu popróbuj odczytywać nagłówki bloków i wczytywać zabezpieczone programy w BASIC-u. Za miesiąc nimi właśnie dokładniej się zajmiemy.
Autor listingu: Tomasz Surmacz, Robert Dudzik
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
9888
Liczba ta jest nazwą, a jednocześnie oznaczeniem początku pewnego użytecznego programu narzędziowego dla ZX Spectrum.
Jedną z wad ZX Spectrum jest niezbyt wygodna edycja tekstu programu. Napisany przeze mnie program stanowi próbę ułatwienia tej operacji.Program należy wpisać, przetestować i nagrać na kasetę. W razie potrzeby dołączamy "9888" do pisanego programu przy pomocy instrukcji MERGE. Trzeba jednak pamiętać, że program główny nie może zawierać linii o numerach wyższych od 9888.Po wykonaniuGO TO 9888ukazuje się krótkie menu funkcji programu — jest on gotowy do użytku. Oto jego możliwości:1 — POLICZ P,0Komputer oblicza liczbę linii zawartych pomiędzy numerami P i O włącznie.2 — PRZENUMERUJ P, O, N, KPrzenumerowanie fragmentu programu zawartego między liniami P i O. Pierwsza linia fragmentu otrzymuje nowy numer N, zaś numeracja odbywa się z krokiem K. Nie są zmieniane parametry odwołań GO TO i GO SUB.3 — PRZESUŃ P, O, NFragment programu pomiędzy liniami P i O otrzymuje numery zwiększone o N (N może być ujemne).4 — ZNAJDŹ X, P, OWyszukanie wszystkich fragmentów tekstu X w liniach programu pomiędzy P i O.5 — ZAMIEŃ X = Y, P, OZamiana wszystkich występujących pomiędzy liniami P i O fragmentów tekstu X na tekst Y. Zarówno X, jak i Y mogą mieć do 10 znaków długości — pozostałe znaki są ignorowane.6 — STOPPowrót do BASIC-a.Autor listingu: Grzegorz Waligórski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznychPobierz: zx_9888_bajtek12_87-t2e.pl.zip
-
Pożyczone Litery
Wiele gier zadziwia nas swoim wymyślnym liternictwem. Czcionka pogrubiona, pochyła, „komputerowa”, gotyk lub cyrylica, umieszczone na ekranie sprawiają, że strona graficzna programu zyskuje bardzo wiele w oczach użytkownika.
Jak zapewne wiadomo większości posiadaczy ZX SPECTRUM, cały zestaw znaków (96 liter) tego komputera można zastąpić nowym zestawem, zaprojektowanym przez użytkownika. Litery jakie widzimy na ekranie zaraz po włączeniu komputera, są pobierane z generatora znaków, który znajduje się pod adresem 15616 i zajmuje 768 bajtów (96 * 8 bajtów). Adres pierwszej komórki generatora obliczany jest przez komputer na podstawie zawartości zmiennej systemowej CHARS (komórki o adresach 23606 i 23607), wg wzoru:ADRES = (PEEK 23607)*256 + (PEEK 23606) + 256Zmieniając więc zawartość zmiennej, zmieniamy zarazem adres, spod którego pobierane są kształty znaków. Oczywiście nie wystarczy zmienić samego adresu, należy jeszcze pod nim umieścić dane o kształcie nowego zestawu liter. O tym, ze projektowanie liter to długa i żmudna praca, nie trzeba chyba nikogo przekonywać i właśnie dlatego proponuję ułatwienie tego zadania przez wyciągnięcie interesującego kroju pisma z gotowych programów, aby móc go wykorzystać do własnych celów. Sposób jest prosty. Najpierw jednak należy wpisać i zapamiętać na taśmie zamieszczony obok program CZCIONKAAutor listingu: Michał Szuniewicz
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Śledzenie Pracy Programu
Pomysł na napisanie tego programu zaczerpnąłem z pakietu procedur maszynowych pod nazwa SUPERCODE.
Krótki program w języku wewnętrznym mikroprocesora Z80 informuje, która instrukcja i w której linii jest aktualnie wykonywana. Informacja ta znajduje się na ekranie w drugiej linii od dołu. W trybie bezpośrednim znajduje się tam numer ostatniej wykonanej instrukcji, lub po CLS, napis postaci „q534:1 „. Wynika to z pewnej niedokładności programu. Zaburzenia mogą wystąpić także podczas wpisywania linii zajmujących więcej, niż jeden wiersz. Program wykorzystuje system przerwań maskowalnych mikroprocesora. Początek procedury obsługują cej przerwania jest pod adresem 56797 (221 +256+221 =56979) i wartość 221 wpisana jest w pamięć zapełniając całą stronicę o numerze 222. Numer stronicy wpisany jest do wektora przerwań za pośrednictwem akumulatora, po czym ustawiany jest wektoryzowany tryb obsługi przerwań. Czynności te wykonuje procedura zawarta od adresu 56640. W pamięć znajduje się także procedura przełączająca tryb przerwań na normalny — jest ona umieszczona od adresu 56812.
Z uwagi na dość dużą szybkość wykonywania programu w BASIC—u i idące za tym trudności z odczytaniem bieżącej linii, instrukcją POKE 56777,n można zmniejszyć szybkość wykonywania programu. Zmienna n może przyjmować wartości 1+255, lecz nie zalecam podawania jej jako większej od 100. Początkowo jest ona równa jeden.
Na koniec jeszcze ciekawostka. Skąd komputer wie, która instrukcja jest właśnie wykonywana? Odczytuje to ze zmiennych systemowych PPC (23621) i SUBPPC (23623). PPC to numer wykonywanej linii programu, a SUBPPC — numer instrukcji w wierszu o numerze zawartym w PPC.
Autor listingu: Marcin Przasnyski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: zx_sledzenie_programu-t2e.pl.7z
-
Częstosciomierz
Program przeznaczony na ZX Spectrum tworzy dwuzakresowy częstościomierz mierzący w zakresie od 0-t-15 kHz i od 5^-50 kHz. Dokładność pomiaru w zakresie niższym jest równa ± 0,5 Hz tak, że ostatnia wyświetlana cyfra jest prawdziwa (1 Hz). Częstościomierz do pracy nie wymaga dodatkowych układów, wystarczy wpisać i uruchomić program. Po podaniu mierzonego sygnału na wejście EAR lub MIC na ekranie pojawi się wartość częstotliwości w Hz lub kHz. Dokładny częstościomierz w zakresie akustycznym jest przydatny do rozmaitych prac np.: kalibrowania generatorów akustycznych, strojenie filtrów, badanie pasma częstotliwościowego układów akustycznych itp.
SPOSÓB URUCHAMIANIA
Przed przystąpieniem do wpisania programu warto wprowadzić POKE 23609,40 (BEEP KLAWIATURY), co pomaga uniknąć pomyłek. Po wpisaniu programu wg listingu należy go uruchomić rozkazem RUN. Na ekranie pojawia się napis „CZEKAJ” i komputer sprawdza poprawność wprowadzania wartości w instrukcjach DATA. Jeżeli po chwili pojawi się napis ERROR należy skontrolować zawartość DATA. Gdy program jest wprowadzony bezbłędnie komputer zaczyna mierzyć częstotliwość i na ekranie pojawia się płyta czołowa naszego „przyrządu”.
Opcja trzecia służy do kalibracji częstościomierza w przypadku gdyby jego własny generator miał odchylenia od częstotliwości wzorcowej. Wprowadzenie nowej wartości współczynnika powoduje „dostrojenie” wskazań częstościomierza do właściwej wartości.
Prawidłowy pomiar ma miejsce, gdy kolejne następujące po sobie odczyty, są stabilne tzn. nie różnią się. Częstotliwość mierzona powinna być czystym tonem o dowolnym kształcie, jednak najkorzystniejsze są przebiegi symetryczne tzn.: sinus, trójkąt, prostokąt.
Program „CZĘSTOŚCIOMIERZ” dedykuję przede wszystkim radioamatorom, dla których może on być wzbogaceniem pracowni o dokładny przyrząd pomiarowy za cenę ręcznego wprowadzenia programu do pamięci komputera.
Autor listingu: Krzysztof Kuc
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Pogaduszki -
Robert Witt z Gdańska przysłał do rubryki "Sam programuję" program dydaktyczny "Pogaduszka". Robert wykorzystał elementy "Rozmówki" publikowanej w jednym z zeszłorocznych numerów "Bajtka", uzupełnił własnymi pomysłami i w efekcie powstała bardzo ciekawa i kształcąca zabawa. Program został napisany na mikrokomputerze Amstrad
Autor listingu: Robert Witt
Listing nadesłał: Faust
Język programu: Locomotive Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Edytor Znaków Graficznych
Prezentowany program umożliwia szybkie zaprojektowanie zestawu 96 znaków o kodach ASCII 32 do 127 i znaków graficznych użytkownika.
Po uruchomieniu programu przez RUN należy odczekać chwilę, aż w odpowiednim obszarze RAM umieszczone zostaną procedury maszynowe. Następnie pojawi się pytanie czy wczytać dane z taśmy magnetofonowej, a później plansza prezentująca poprawiany zestaw znaków i ich odpowiedniki w kodzie ASCII, menu oraz edytowany znak w wielkości naturalnej i powiększony 8 razy. W programie możliwa jest realizacja kilkunastu funkcji wybieranych naciśnięciem odpowiedniego klawisza.
Autor listingu: Janusz Jamroch
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: zx_generator_znakow_bajtek7-1987.7z
-
Elektron w studni
Jak poznać problemy mechaniki kwantowej, mechanizm absorpcji i emisji światła, linie widmowe, strukturę energetyczno-przestrzenną atomu wodoru, nie zasypiając nad podręcznikiem fizyki? Wystarczy uważnie wpisać do komputera poniższy program.
Autor listingu: Michał Małachowski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
-
Wisielec Mikrusek
Kto z nas nie grał w "wisielca" (niektórzy pewnie nawet na lekcjach — bardzo nieładnie!). A może jednak ktoś nie grał? Na wszelki wypadek wyjaśniam zasady. Jedna osoba wymyśla wyraz, druga stara się go odgadnąć podając kolejno litery. Każdy błąd to kolejny element... szubienicy. Brr, okropność!
Joanna Marciniak z Warszawy (lat 11) przysłała na nasz Konkurs komputerową wersję tej gry na ZX Spectrum. Jest to gra dla dwóch osób; jedna wprowadza wyraz, druga zgaduje. Wydaje mi się, że warto uzupełnić ten program o możliwość gry z komputerem. Trzeba bylko wprowadzić pewną liczbę słów, z których byłby losowany szukany wyraz. Spróbujcie zrobić to sami.Autor listingu: Joanna Marciniak
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Fotografia
Użytkownikom komputerów SPECTRUM, którzy przeważnie nie posiadają kamer cyfrowych lub optycznych czytników proponujemy program. który umożliwia przetwarzanie zdjęć. Oczywiście rolę czytnika w tym wypadku przejmuje człowiek. Wybrane zdjęcie powinno być jak największe i zawierać mało drobnych szczegółów. Najlepiej jeśli jest to zdjęcie czarno-białe. Należy je podzielić na kwadraty (program przyjmuje zdjęcia o szerokości do 64 i wysokości do 42 kwadratów.
Analizując zdjęcie należy decydować jaki stopień szarości (cień) przyznać kolejnym kwadratom. Program pozwala na użycie 7 cieni (od czarnego do białego).
Rysowanie poszczególnych kwadratów na ekranie odbywa się na zasadzie wyświetlania znaków graficznych (ang. UDG). Jeden kwadrat stanowi matrycę o wymiarze 4x4 punkty. Liczba i rozłożenie zapalonych punktów w tej matrycy decyduje o odcieniu danego kwadratu. Po uruchomieniu programu, na ekranie wyświetlane jest menu z szeregiem opcji.
Autor listingu: Michał Szuniewicz
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: zx_fotografia_bajtek4-1987-t2e.pl.7z
-
Tenis - Mikrusek
Program Szymona Herera (lat 11) z Warszawy. Program wzorowany jest na jeszcze niedawno bardzo popularnych grach telewizyjnych i polega na odbijaniu piłki od ścianki Pomysł nie jest więc nowy, ale realizacja bardzo ciekawa. Gratuluję!
Autor listingu: Szymon Herera
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznychPobierz: spectrum_tenis_bajtek51987-t2e.pl.7z
-
Użyteczny Hazard
Grę w orła i reszkę odnaleźć można bez trudu w symulacjach metodami Monte Carlo, czy też w wielu problemach fizyki statystycznej, w tym np. fizyki statystycznej magnetyków. Krótko mówiąc: wszędzie tam, gdzie mamy do czynienia z tzw. schematem do świadczeń Bernoulliego.
Aby lepiej zrozumieć, na czym polega ta konstrukcja, uruchom program, którego listing przedstawiono na rys. 1. Po wprowadzeniu np. cyfry 0 komputer rozpoczyna wyświetlanie strzałek, przy czym prawdopodobieństwo elementarne tego, że pojedyncza strzałka jest skierowana do góry wynosi p. Inaczej mówiąc, aby narysować pojedynczą strzałkę komputer losuje najpierw liczbę pseudolosowg RND z przedziału 0,1. Jeżeli liczba ta jest mniejsza od p, wówczas komputer rysuje strzałkę skierowaną do góry (ewentualnie żeton czarny), w przeciwnym razie strzałkę skierowaną w doł ekranu (ewentualnie żeton biały).Autor listingu: dr hab. Ryszard Kutner
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
-
Projektor Filmowy
Od pewnego czasu interesowała mnie możliwość realizacji filmów animowanych na komputerze tak prostym, jak Spectrum. Niniejszy pro-gram jest efektem tych poszukiwań. W poszukiwaniu rozwiązania zabrałem się do obliczeń. Ile obrazów możemy pomieścić w 48 KB RAM? To proste: pamięć obrazu zajmuje 6912 bajtów; BASIC daje użytkownikowi nieco ponad 40 KB. Daje to w sumie 6 „ekranów" plus jeden w swoim zwykłym miejscu — pod adresem 16384. Razem siedem kadrów filmu, z których każdy zajmuje cały ekran. Gdybyśmy jednak wykorzystywali jako klatkę filmu tylko część ekranu ...Pytanie, jak ową część ekranu wybrać staje się proste po przyjrzeniu się strukturze odwzorowania obrazu w pamięci. Mianowicie z 6912 bajtów równo 6 KB zajmuje rysunek, reszta — to kolor atrybuty obrazu. Z kolei pamięć rysunku podzielona jest na 3 sektory po 2 KB. Widać je wyraźnie podczas wczytywania obrazków z magnetofonu. Zrezygnowałem z koloru i odrzuciłem dwa sektory ekranu, zamierzając w charakterze klatki filmu wykorzystać tylko środkowy. W ten sposób da się pomieścić 16 kadrów w 32 KB, przy czym pozostaje jeszcze dość miejsca na ewentualną rozbudowę programu oraz swoboda w wykorzystywaniu ekranu poza „projekcją". 16 kadrów umieściłem w górnych 32 KB pamięci, nazywając je kolejnymi literami alfabetu (a..p). Zadanie przepisania zawartości kadru na ekran pełni krótka procedura w języku maszynowym. Zainteresowanych jej działaniem odsyłam do artykułu „jak schować obrazek" z „Bajtka" nr 8/86. Kodu maszynowego użyłem oczywiście przez konieczność maksymalnego przyspieszenia działania procedury. Funkcje programu wywoływane są przy pomocy menu ukazującego się w dwóch dolnych liniach ekranu.
Autor listingu: Marcin Waligórski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
2Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnością
-
Bzzz
Program „BZZZ” jest wersja znanej gry „Light CYCLE”. Dla tych, którzy jej nie znają — w skrócie zasady gry.
Przeznaczona jest ona w zasadzie dla dwóch osób, choć jedną z nich, a nawet obydwie, może zastąpić komputer. Każdy z graczy steruje punktem, przepraszam wspaniałym, transgalaktycznym światłolotem, który poruszając się zostawia za sobą ślad (oczywiście smugę światła z fotonowego silnika). Celem każdego z graczy jest jak najdłuższe unikanie zderzenia ze śladem własnym, śladem pozostawionym przez przeciwnika, brzegiem ekranu i poławiającymi się od czasu do czasu „przeszkadzajkami” oraz utrudnianie tego samego przeciwnikowi poprzez zajeżdżanie mu drogi, spychanie na brzeg ekranu czy zamykanie w małych obszarach. Począwszy od startu rośnie stawka, która przypada zwycięzcy, tzn. graczowi, który zdołał dłużej uniknąć zderzenia.
Gra kończy się, gdy jeden z graczy uzyska 1000 punktów. Sterowanie odbywa się z klawiatury: dla gracza pierwszego są to klawisze „Z”, „X”, „Q”, „A”, a dla drugiego klawisze „M”, „Symbol Shift”, „P” i „ENTER”. Na początku każdej gry trzeba określić ilu graczy weźmie w niej udział, prędkość poruszania się punktów oraz włączyć lub wyłączyć dźwięk.
Gra „BZZZZ” (nazwa pochodzi od dźwięku wydawanego przez silniki kosmolotów) jest jeszcze mniej skomplikowana niż „Jumping Jack”, ale moim zdaniem bardziej wciągająca. (Pod warunkiem, że grają dwie osoby, ponieważ komputer nie jest zbyt ciekawym partnerem).
Jeżeli nie posiadasz „LIGHT CYCLE” a zainteresował Cię opis „BZZZZ”, pierwsze co musisz zrobić, to wprowadzić do komputera „Program 2” i nagrać go na taśmę instrukcjami:
LET a$ = CHR$ 22 + CHR$ 1 + CHR$0 + „BZZZZ” + CHR$ 6: SAVE a$ LINE 10
Wprowadź teraz do komputera (usuwając część właśnie nagraną na taśmę) „Program 3” i uruchom go instrukcją RUN. Będziesz teraz pytany 90 razy o linijki kodu maszynowego w zapisie heksadecymalnym (szesnastkowym), który umieszczony jest w „Programie 1”. Każda linijka składa się z 28 znaków, z których pierwsze 24 to 12 bajtów programu, a ostatnie 4 to suma kontrolna (suma 12 bajtów w jednej linijce), która umożliwia wykrycie błędów.
Po wprowadzeniu całości właściwy program nagrywany jest automatycznie za już umieszczoną na taśmie częścią „BZZZZ”.Autor listingu: Wojtek
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: bajtek-387-spectrum-bzzz-t2e.pl.zip
-
Trzy Wymiary Pascala
Oto prosty program na ZX-Spectrum rysujący trójwymiarowy obraz funkcji dwóch zmiennych. Programu takiego poszukiwałem od dawna, chcąc na prowadzonych przeze mnie zajęciach pokazać studentom pewne rzeczy w sposób jak najbardziej obrazowy.
Autor listingu: Wojciech Stanisz
Listing nadesłał: Faust
Język programu: Pascal
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: wykres3d_pascal-b2-1987-t2e.pl.zip
-
Zgadywanka
Jeżeli mamy pod ręką jakiś komputer, ot zwykłe Spectrum czy Commodore, to możemy zaprezentować "Inteligentną maszynę" mądrzejszą od niejednego z nas. To nie dowcip! Któż z nas potrafi w sześciu pytaniach zgadnąć np. państwo europejskie, które sobie pomyślałem, jeżeli na zadawane mi pytania odpowiadam tylko "tak" lub "nie"? A komputer potrafi. Dziele się to tak: uruchamiamy komputer i wprowadzamy program. Maszyna proponuje "Pomyślcie sobie jakieś państwo europejskie". Porozumiewając się na migi, aby komputer nie mógł podsłuchać, decydujemy się np. na Francje. Teraz komputer zadaje pytania. Po kilku zaczyna być widoczne, że maszyna już coś podejrzewa, że już chyba wie, a tylko sprawdza naszą wiedzę. W końcu ostatnie pytanie: "Czy tym państwem jest Francja?" Dobra - mówimy sobie - to było łatwe. Spróbujmy Islandię - zgadł, San Marino - też zgadł. W dodatku za każdym razem pytał o coś innego, więc chyba rzeczywiście myśli.
Autor listingu: Leszek Rudak
Listing nadesłał: Faust
Język programu: BASIC
Stan listingu:
2Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnością
-
Karuzela
Obrazki przypominają dobrze znane efekty działania programu VU-3D, stworzył je jednak programik w skondensowanej wersji mieszczącej się w 40 wierszach języka BASIC. Jego najbardziej szokującej możliwości nie sposób jednak przedstawić w statycznej ilustracji: bryły te są... ruchome. Obracają się wokół swej pionowej osi w tempie ok. 40 obrotów na minutę! Powstaje złudzenie ruchu nie gorsze niż przy oglądaniu TV. Jest to oczywiście możliwe tylko dzięki ich wysokiej symetrii, gdyż cały ruch jest wynikiem złożenia tylko sześciu ekranów, jakie mieści pamięć ZX Spectrum.
Autor listingu: brak
Listing nadesłał: Faust
Język programu: BASIC
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
-
Kardioidy
Program ten kreśli miły dla oka wzór, złożony z odbitych symetrycznie krzywych, zwanych kardioidami.
Krzywe te opisane są równaniem parametrycznym:
x = y*(1 -cos(k))*cos(k)
y = r*(1 -cos(k))*sin(k)
gdzie 0 <= k <= 2n
Geometrycznie krzywa ta może być interpretowana jako droga punktu okręgu, toczącego się (zewnętrznie) po okręgu o tym samym promieniu.
Rysunek kreśli się długo, co spowodowane jest powolnym obliczaniem wartości funkcji trygonometrycznych przez Spectrum — aż czterech w każdym kroku algorytmu.
Zmienna "Rozdzielczość" określa dokładność tworzonego rysunku. "Promień" jest proporcjonalny do jego wielkości, zaś "Gęstość" wyznacza ilość krzywych, składających się na jedną połowę wzoru.
Wykreślenie jednego rysunku nie jest jednak kresem możliwości naszego programu (inaczej niewielki byłby z niego pożytek). Zmieniając równania parametryczne krzywych — np. znaki + na -, funkcje SIN i COS oraz parametry K i R — możemy uzyskać cały szereg nowych, interesujących deseni.
Autor listingu: M.W.
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
ALGEBRAF
Dziś proponujemy doskonalenie się w arytmetyce przy zabawie spopularyzowanej przed laty przez tygodnik ITD - krzyżówce arytmetycznej, czyli algebrafie.
Zasady gry są proste: trzeba odgadnąć 9 cyfr (dokładniej: liczb jednocyfrowych), które należy wpisać w diagram w taki sposób, by powstało sześć wyrażeń arytmetycznych (trzy pionowo i trzy poziomo) o podanych wartościach. W wyrażeniach zachowano normalną kolejność działań: mnożenie zawsze wykonuje się przed dodawaniem lub dejmowaniem.
Algebraf może mieć więcej niż jedno poprawne rozwiązanie: układ sześciu równań z dziewięcioma niewiadomymi może mieć ich nieskończenie wiele, gdy jednak dopuszczamy tylko rozwiązania w liczbach całkowitych (czyli, jak powiedziałby matematyk, rozważamy tzw. równanie diofantyczne) rozwiązań nie bywa więcej niż trzy. Program akceptuje oczywiście każde poprawne rozwiązanie, także różne od proponowanego przez komputer.Autor listingu: bd
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznychPobierz: komputer-21986-algebra-t2e.pl.zip
-
Życzenia od Komputera
Popatrzcie na ten maleńki program. Wiecie już jaki będzie efekt jego działania? Jeśli nie, to koniecznie go wpiszcie i przekonajcie się sami. Cała tajemnica jest oczywiście ukryta w linii 20. Spróbujcie odgadnąć co ukrywa się W komórce pamięci o numerze 23606. Jeśli się to wam nie uda, zaglądnijcie do podręczników obsługi Spectrum lub też do poprzednich numerów „Bajtka". .
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Strażnik Banku
Po długiej podróży dotarłeś do Gun City. Celem wędrówki było zdobycie pracy i szczęśliwym trafem tutejszy bank pilnie potrzebował strażnika. Otrzymałeś służbowego colta i usiadłeś sobie w kacie pilnie bacząc na to kto wchodzi. Drzwi się otwierają i... wchodzi jakaś dama pragnąc wpłacić swoje oszczędności.
Przez drugie drzwi znienacka usiłuje wtargnąć jakiś oprych. Wyciąga pistolet ale ty jesteś szybszy. Nagle w drugich drzwiach ukazuje się żądny krwi bladych twarzy indianin, ale już po chwili jego duch wędruje do Manitou. Znowu byłeś lepszy. I znowu ktoś otwiera drzwi. Strzelasz bez zastanowienia i Bogu ducha winny farmer wita się ze Św. Piotrem Lecz na szczęście tutejszy szeryf jest pobłażliwy i zawsze mówi: „do trzech razy sztuka". Ktoś wchodzi. Teraz uważnie go oglądasz. Błąd! Jego słów - „Jestem szybszy!" słuchasz już w towarzystwie świętego Piotra.
Tak, szanowny czytelniku, może wyglądać i twoja historia jeśli zadasz sobie trud i mozolnie „wstukasz" poniższy program do Twojego Spectrum. Teraz dam Ci kilka praktycznych wskazówek. Duże litery w cudzysłowach w liniach 70-410 należy wprowadzać w trybie graficznym, tzn. C.SHIFT + 9. Wówczas na ekranie otrzymamy kursor "G". Powrót do normalnego kursora odbywa się analogicznie. Można zmienić wartość punktacji przez zamianę w linii 4020 wartości 100 na taką jaka Ci będzie odpowiadała. Możesz efekt strzału zaczerpnąć z 1go numeru nowego Bajtka. Możesz robić z tym programem co tylko Ci się podoba, bowiem żadne prawa autorskie nie są zastrzeżone. Acha, jeszcze dla ułatwienia dodam, że im wyższą liczbę podasz przy pytaniu o stopień utrudnienia, tym łatwiej będzie Ci się grało. Radził bym jednak nie przesadzać, gdyż przy b. wysokiej liczbie program staje się powolny i po prostu nudny.
Sterowanie odbywa się klawiszami 1,2,3; klawisz 1 odpowiada pierwszym drzwiom od lewej itd.
Dobrego refleksu!Autor listingu: Grzegorz Zatryb
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
-
Renumeracja
Przedstawiam program ZX-Spectrum, służący do automatycznej renumeracji linii. Z wielu innych programów tego typu wyróżnia go: szybkość działania,początek renumeracji rozpoczyna się od linii wskazywanej przez kursor programowy (co go różni od innych tego typu programów) — bardzo przydatne, wartość skoku linii może mieć dowolną liczbę i jest relokowalny...
Autor listingu: Andrzej Dziarnowski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 2131th07_zxbajtek1186renumerator.zip
-
Wykres
Program „Wykres” służy do przedstawiania danych liczbowych w postaci pseudotrójwymiarowych słupków. Na początku program pyta się o tytuł wykresu. Można wpisać dowolny tekst, jednak tylko pierwsze 32 znaki będą przyjęte. Następnie program pyta się o rodzaj skalowania. Jeśli wybrane zostanie skalowanie automatyczne wówczas wykres będzie skalowany według największego słupka, jeśli nie — program spyta o wartość według której odbędzie się skalowanie.
Autor listingu: Michał Szuniewicz
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
3Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznychPobierz: 2044th07_zxbajtek1186slupki.7z
-
Test na jasnowidzenie
Program ten jest adresowany do wszystkich, którzy mniej lub bardziej na poważnie biorą zjawiska spostrzegania pozazmysłowego. Pozwala na przetestowanie możliwości w tym zakresie. Nie należy tego brać na serio, gdyż nikt jeszcze nie stwierdził czy komputerowi można czytać w „myślach”.
Autor listingu: Grzegorz Zatryb
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Program Katalog
Przy pomocy programu „KATALOG” możemy prosto i bez wysiłku utworzyć wykaz posiadanych programów łącznie z określeniem typu programu (np. BASIC, kod maszynowy, dane), długości i linii od której program startuje. Odczytane z taśmy magnetofonowej nagłówki programów uzupełniamy numerami licznika magnetofonowego, które pozwolą nam na szybkie odnalezienie szukanego tytułu. Wybierając odpowiednie funkcje programu możemy dokonać weryfi kacji tytułów na ekranie lub wydrukować cały spis na drukarce. Program korzysta z instrukcji LPRINT tak jak dla drukarki ZX PRINTER lub SEIKOSHA GP 50. Mając do dyspozycji inną drukarkę należy dołączyć do programu „KATALOG” program jej obsługi, umożliwiający korzystanie z tej instrukcji. Należy przy tym pamiętać o obszarach pamięci mikrokomputera zajętych przez kod maszynowy.
Autor listingu: Konrad Fedyna, Zygmunt Wereszczyński, Andrzej Ciepliński
Listing nadesłał: Tygrys@Speccy.pl
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: 0138th13_zxbajtek1086katalog.zip
-
Pióro świetlne - program obsługi
Przykładową realizację programową obsługi pióra, umożliwiającą wybór zaprogramowanych opcji, przedstawiono na wydruku. Pozwala on wykorzystać pióro świetlne wzorując się na popularnej „myszy”. Podstawową część programu stanowią linie od 9000 do 9120. W części tej ładowany jest kod maszynowy obsługujący port 254, do którego podłączone jest pióro i obliczający, w którym z 21 wierszy na ekranie jest umieszczone. Numer zdekodowanego wiersza znajduje się w zmiennej „a” (linia 100). Wykorzystanie informacji tam zawartej jest już proste lecz wymaga pomysłowości i inwencji od piszącego program. Linie programu od 10 do 140 prezentują sposób realizacji trzech przykładowych procedur wybieranych piórem świetlnym. Linia 9999 pozwala zapisać program na taśmie magnetofonowej umożliwiając jego autostart po ponownym wczytaniu do mikrokomputera.
Autor listingu: Konrad Fedyna, Zygmunt Wereszczyński
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
GrafikaParę linijek kodu generujący prostą grafikę.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 0113th30_grafika_zx_spectrum.zip
-
Wycinanki
Prosty program w Basicu, generujący dość psychodeliczne wzorki;)
Autor listingu: bd.
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Pierwszy Polski Kompilator Na Spectrum
Kompilator TOBOS-FP (TOruń BOrkowski Skaba) jest, o ile nam wiadomo, pierwszym całkowicie opracowanym w Polsce kompilatorem zmiennopozycyjnym dla mikrokomputera ZX "Spectrum". Biorąc pod uwagę szybkość działania, zgodność z interpreterem BASICA na ZX "Spectrum" oraz szeroko rozumiana prostotę użycia przewyższa on znane kompilatory produkcji zachodniej takie, jak FP48K-V1.7 czy BLAST.
Autor listingu: Wojciech Skaba,Jerzy Borkowski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 1525th30_zxb91986test_kompilator.zip
-
Zapis obrazu za ramtop
W niektórych grach stosuje się bardzo efektowny sposób rysowania grafiki na ekranie podczas ładowania. Nie powstaje ona linia po linii, lecz ukazuje się na ekranie momentalnie, już pokolorowany. Więksi znawcy komputera mówią wtedy, że "SCREEN wyszedł zza RAMTOPU".
Autor listingu: Marcin Przasnyski
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Tajemniczy Zamek
Widzieliście grę pod tytułem Hobbit? Jeśli nie, to możecie przeczytać o niej w drugim numerze „Bajtka" z tego roku. Takie gry nazywa się najczęściej angielskim słowem „adventure" czyli przygodowe. Zasada jest tu zupełnie inna niż w grach z rodzaju „bij zabij" czy „łap i uciekaj". Małpia zręczność i refleks nie są potrzebne. Należy za to trochę ruszyć głową. Najczęściej gry przygodowe nie posiadają prawie wcale grafiki. Na ekranie ukazują się opisy kolejnych sytuacji. Do ciebie należy zna-ezienie z nich wyjścia. Sukces polega na odkryciu toku postępowania, który prowadzi do wypełnienia postawionego przed tobą zadania. Wydaje się, że tego rodzaju programy muszą być bardzo złożone. Niektóre z nich rzeczywiście zajmują po kilkadziesiąt kilobajtów. Można jednak dla zabawy spróbować napisać własną, prostą grę przygodową. Oczywiście jak zawsze najważniejszy jest pomysł. Resztę można zrobić za pomocą czterech instrukcji — PRINT, INPUT. IF..THEN... i GOTO
Autor listingu: Roman 'Romek' Poznański
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 1435th07_zxb81986tajemiczy_zamek.zip
-
Mikrokomputer współautorem gier
Program na ZX Spectrum symuluje 10000 rzutów kostką wybraną według określonej strategii i wygenerowanej planszy gry. Jeden eksperyment symulujący 10000 rzutów według wybranej strategii trwa ok. 25 minut.
Autor listingu: Jan Rojewski,Michał Stajszczak
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Screen SaverKonieczności oszczędzania monitora nie trzeba chyba wyjaśniać nikomu. Świecący godzinami na biało ekran (bardzo częste zjawisko wśród posiadaczy Spectrum), któregoś dnia przestanie świecić na biało, bo wypali się luminofor(...) Ideą działania wygaszacza jest wygenerowanie ciemnego obrazu po wykryciu faktu, ze przez dłuższy czas (np. 5 minut) użytkownik nie korzysta z komputera. Z chwilą naciśnięcia klawisza lub poruszenia myszki, obraz powraca do stanu początkowego; dzięki temu wygaszacz nie utrudnia pracy(...) Program z listingu spełnia powyższe założenia, a nawet potrafi trochę więcej. Przede wszystkim reaguje na naciśnięcie dowolnego klawisza (także shiftóW) oraz na poruszenie joystickiem, podłączonym do portu Kempston Zawartość obrazu jest przechowywana w sposób maksymalnie oszczędny. Ponieważ cała pamięć obrazu zajmuje aż 6912 bajtów, nie można buforować całej treści - zabierałoby to zbyt wiele pamięci.
Autor listingu: Jacek Trojański
Listing nadesłał: Gelip
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 0057nd02_screen_saver.zip
-
SaperPo ukazaniu się w Bajtku 8-9/93 programu „Saper" dla komputera Amstrad, otrzymaliśmy sporo listów z zapytaniem, czy taki program istnieje na Spectrum. Odpowiedź jest jak zwykłe prosta: nawet jeśli takiego programu nie ma, to można go napisać(...) Większość czytelników, którzy zetknęli się z systemem MS Windows, znają prostą grę pod nazwą Minesweeper. Chodzi w niej o to, by zlokalizować na określonym polu wszystkie ukryte miny.
Autor listingu: Jacek Trojański
Listing nadesłał: Gelip
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 0047nd02_saper.zip
-
Kostka Ciężarka
Kilka lat temu wszyscy się bawili kostką Rubika, a mój brat cioteczny nawet wygrał konkurs na szybkość jej układania w Teleranku (...) Taki jesteś mądrala? To dzisiaj mam dla Ciebie kostkę Ciężarka, zobaczymy jak dasz sobie radę. Zadanie jest bardzo proste - za pomocą pięciu możliwych przesunięć należy ułożyć układankę - czyli napis opiewający cudowność Bajtka i deklarujący wierność temu tytułowi... Uwagi: Pierwotny listing był przeznaczony na IBM PC (Marek Ciężarek), Gelip przepisał go na ZX Spectrum, dodając obsługę kursora (Kempston)
Autor listingu: Marcin Borkowski pps. Marek Ciężarek, Gelip
Listing nadesłał: Gelip
Język programu: brak danych
Stan listingu:
5Listing wzbogacony - uruchamia się na emulatorze lub realnej maszynie, przepisujący listing wzbogacił go o swoje rozwiązaniaPobierz: 0028nd02_kostka.zip
-
Tetris
Do tej gry nie napisano żadnej wymyślnej legendy. Co więcej, nie ma jej w ogóle. Dlatego wolni od spojrzeń całej ludzkości możemy oddawać się tej grze bez sensu... Obok zamieszczamy listing tej gry na ZX Spectrum. Została ona okrojona z nieistotnych efektów i w 972 bajtach i 20 liniach Basica mieści się cały Tetris. Uwagi: Pierwotnie program ukazał się w numerze Bajtka 11/1989 autorstwa Michała Sobieszuka. Niestety listing był błędny i dopiero w numerze 03-04/1990 został podany poprawny zapis, jednak z innymi autorami.
Autor listingu: Michał Sobieszuk,Maciej Pietraś,Marcin Przasnyski
Listing nadesłał: Gelip
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 0006nd02_tetris.zip
-
Ochrona programówPrzedstawiam sposób na włączenie Twoich programów do grupy tych nielicznych, które nie poddają się programom kopiującym. Proponowane zabezpieczenie, choć proste w swej idei, do złamania wymaga niezłe] znajomości kodu. maszynowego oraz zasad działania ROM-u. Jest więc całkowicie skuteczne wobec wszystkich tych, którzy bazują jedynie na programach kopiujących i co najwyżej potrafią obezwładniać proste blokady wmontowane w programy BASIC-owe. Na fachowców niestety nie ma żadnej rady. Tym można co najwyżej zabrać więcej czasu. Jest ich na szczęście (?) niewielu i na ogół mają ciekawsze zajęcia niż łamanie Twoich programów.
Autor listingu: Andrzej Kadlof
Listing nadesłał: Faust
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Drążek sterowyProgram pozwala na rysowanie na ekranie monitora dowolnych kształtów poprzez odpowiednie poruszanie drążkiem. Naciśnięcie przycisku dodatkowego powoduje zniknięcie rysującego punktu. Będzie się on poruszał nadal, tak jak dotychczas, a ukaże się w chwili zwolnienia przycisku.
Autor listingu: Roman Poznański
Listing nadesłał: Faust
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 1621th28_drazek_sterowyspectrum.rar
-
Największa przyjemnośćPrzedszkolaki podnieście bunt! Wystarczy przecież kilka minut KOMPUTER z groźnego i strzelającago przeciwnika stał się Waszym przyjacielem, który na przykład przeegzaminuje Waszą znajomość matematyki, będzie przy tym wyrozumiały dla popełnianych błędów i nigdy się nie zmęczy. Na początek powiem Wam jak można żądać od komputera, aby sprawdził, czy już umiecie dodawać dwie liczby, z których każda nie jest większa od 10.
Autor listingu: ps. Marek
Listing nadesłał: Faust
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Budowa ZX SpectrumTrzy krótkie programy (a w zasadzie trzy linijki) ilustrujące artykuł (działanie ULA)
Autor listingu: Krzysztof Kuryłowicz,Dariusz Madej
Listing nadesłał: Faust
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodykuPobierz: 1536th28_budowa_zx_spectrum.rar
-
Pędzel i stos
Przykładowy podprogram zamalowujący wraz z Program napisano w języku BASIC dla ZX Spectrum. W większości zastosowań praktycznych działanie programu w języku BASIC okaże się zbyt wolne. Radykalnym rozwiązaniem jest zastosowanie szybkiej procedury napisanej bezpośrednio w języku maszynowym. Procedura taka na użytek naszych Czytelników została opracowana. Aby umożliwić skorzystanie z niej także tym, którzy nie znają asemblera, przygotowano specjalny program ładujący w języku BASIC.
Autor listingu: Roland Wacławek
Listing nadesłał: Faust
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Numeryczna metoda znajdowania wartości pierwiastków funkcjiiProgram nie tylko oblicza pierwiastki, ale również wykreśla funkcję w rozpatrywanym przedziale, zaznacza na wykresie położenie osi X i Y (liniami przerywanymi) oraz położenie znalezionych miejsc zerowych.
Autor listingu: Tomasz Kostryński
Listing nadesłał: Faust, Andys
Język programu: brak danych
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Szansa
Zapewne nie raz zdarzyło się Wam prosić rodziców o pieniążki na kupno różnych, niezbędnych rzeczy. Uzyskiwane odpowiedzi rzadko kiedy mogą nas usatysfakcjonować, sprowadzają się bowiem zazwyczaj do mniej lub bardziej eleganckiej odmowy. Zanim wreszcie wyprosimy potrzebną sumę, niepowtarzalna okazja ucieka, a w pamięci pozostaje jedynie obiecanka: „jak wygram w TOTO-LOTKA to ci dam.” Ciężko jest znaleźć na to jakąś skuteczną radę. ale być może przy pomocy ulubieńca całej rodziny — komputera, uda się nam odnieść pewne umiarkowane sukcesy. Zakradnijmy się więc do owej cudownej skrzynki i rozpocznijmy budowę programu, który może przekona Tatę o konieczności wpłace nia nam żądanej sumy bez czekania na wielką (a choćby i mniejszą) wygraną w TOTO-LOTKA.
Autor listingu: ps. Marek
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: szansza_bajtek_2spectrum.7z
-
FlowChart
Nawet w przypadku stosunkowo prostych i krótkich listingów ich analiza "w pamięci" sprawia sporo kłopotów. I tu znowu przydaje się umiejętność przedstawiania algorytmów w postaci schematów blokowych. Narysowanie takiego schematu na podstawie programu zajmuje co prawda sporo czasu, lecz w gruncie rzeczy nie jest to praca wymagająca zbyt dużego wysiłku intelektualnego — a więc coś w sam raz dla komputera. Program, którego listę rozkazów przedstawiamy na następnej stronie, został napisany przez Briana Sidesa, na ZX Spectrum. Zawiera on zaledwie 52 linie i z powodzeniem zastępuje nas w tych pracochłonnych czynnościach. Oczywiście dotyczy to programów napisanych w BASIC–u.
Autor listingu: Brian Sides, Roman Poznański
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: flowchart_bajtek285spectrum.zip
-
Więcej ruchu
Przypuszczam, że i Was denerwuje brak rucha na ekranie. A bez ruchu — wiadomo, nie można prawie w nic grać i znacznie szybciej nudzi się nam siedzenie przed telewizorem. Jedyna rada — rozruszać znaki na ekranie.
Autor listingu: ps. Marek
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: wiecej_ruchu_bajtekt_285spectrum.zip
-
Choinka
Wiemy już, z poprzedniego numeru BAJTKA, na jakiej zasadzie można uzyskać ruch wybranego przez nas znaku na ekranie telewizora. Przypomnę, że polega to na tak szybkiej, że niewidocznej dla oka, zmianie miejsca wydruku owego znaku. Jak pamiętacie, miejsce znaku literowego czy graficznego na ekranie opisane jest dwiema współrzędnymi: numer linii i numer kolumny. (Mówimy ciągle o działaniach na znakach - typu liter, przy grafice używającej punktów sprawy będą się miały nieco inaczej, chociaż zasada jest taka sama).
Autor listingu: ps. Marek
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: choinka_zx_spectrum.zip
-
Grafika
Prezentowany przykład wykazuje, jak interesujące efekty uzyskać można przy pomocy bardzo krótkich programów graficznych. W naszym przypadka są to zaledwie trzy linie. Zwróćcie uwagę na to, że wszystkie grafiki zostały narysowane w wyniku realizacji tego samego programu — zmieniły się jedynie parametry.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: grafika_zx_spectrum.zip
-
SPECTRUM i klakson (aka Dźwięki)
Program przeznaczony jest dla użytkowników ZX Spectrum, którzy nie opanowali jeszcze języka maszynowego a chcieliby poeksperymentować z dźwiękiem na SPECTRUM. Poniższe programy maszynowe (umieszczone w DATA) można wykorzystać we własnych programach.
Autor listingu: Krzysztof Bielewicz
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: dzwieki-1_bajtek186zx_spectrum.rar
-
Efekt Magnetronowy
Prezentowany program napisany na mikrokomputer ZX SPECTRUM stanowi ilustrację do ciekawego zjawiska fizycznego, zwanego efektem magnetronwym. Zrealizowany w formie zabawy ułatwia zrozumienie praw fizyki. Jeżeli cząsteczka o masie „m” i ładunku elektrycznym „e” wpadnie z prędkością „v” prostopadle w jednorodne pole magnetyczne „B” to tor jej ruchu zacznie się zakrzywiać. Gdy pole będzie wystarczająco duże, cząsteczka może zostać uwięziona w nim, gdyż będzie się stale poruszała po tym samym okręgu o promieniu „R” z częstotliwością kątową „w”. Płaszczyzna okręgu jest prostopadła do kierunku pola magnetycznego. Jest to właśnie efekt magnetronowy.
Autor listingu: Tomasz Kostrzyński
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Powiększanie napisow
Właśnie skończyłeś układać grę, która, jak sądzisz podbije światowe rynki. Brakuje w niej tylko jednego, wspaniałego obrazka, który uprzyjemniałby czas podczas ładowania programu. Dodatkowy problem stwarza fakt, że nie masz pióra świetlnego. Być może jedynym ratunkiem będzie w takim przypadku jeden z czterech poniższych programów. Wszystkie te programy służą do powiększania dowolnych napisów (również tych zawierających UDG). Tekst przeznaczony do powiększania drukowany jest w dolnej części ekranu, a następnie każdy jego punkt jest sprawdzany funkcją „POINT”, która bada stan tego punktu (1 — zamalowany, 0 — nie). Jeżeli „POINT” wynosi 1 w odpowiednim miejscu ekranu powstaje jego powiększona kopia, a następnie cała litera (znak) i napis.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
W poszukiwaniu bliźniaka Ziemi
W listopadowym numerze „Creative Computing” z zeszłego roku znalazł się artykuł H. Carlsona p.t. „W poszukiwaniu bliźniaka Ziemi”. Autor prezentuje program umożliwiający prosty sposób przebadania wielu układów planetarnych. Wybieramy masę gwiazdy, której układ chcemy zbadać. Program tworzy — w części losowo – typowy system planetarny dla tej gwiazdy, korzystając z obecnego rozumienia praw tworzenia się układów planetarnych (są one lepiej poznane dla gwiazd o masie Słońca – M = 1). Systemy tworzone dla gwiazd o innych masach są właściwie losowe. Promienie orbit wyznaczone są ze zmodyfikowanego prawa Titius–Bodego – promienie rosną średnio w postępie geometrycznym na zewnątrz od gwiazdy.
Autor listingu: H. Carlson
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Liczydełko
Dzisiaj coś dla leniuchów. Tych, którym nie chce się liczyć. Komputer Wam pomoże. Ale nie ma nic za darmo. Trzeba nauczyć się korzystać jeszcze z kilku instrukcji. Nasz program będzie dodawał, odejmował, mnożył i dzielił. A więc na początku komputer musi nas poinformować jaki mamy wybór.
Autor listingu: Roman 'Romek' Poznański
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: _liczydelko_bajtek286zx_spectrum.rar
-
Niespodzianka
Proponuję wpisać i uruchomić ten oto program. Sądzę, że jego efekty mogą zainteresować wszystkich posiadaczy ZX SPECTRUM.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Sterowanie
Na ekranie widzimy tor poruszającego się obiektu. Naszym zadaniem jest sterowanie stacją namierzającą obiekt tak, aby odchylenie między położeniem obiektu (linia ciągła) i namiarem (linia przerywana) było jak najmniejsze. Wartość odchylenia jest widoczna na ekranie i ponadto sygnalizowana wysokością tonu, od ciszy przy największych odchyleniach (tracimy kontakt z obiektem) poprzez wysoki ton przy dużych odchyleniach do niskiego tonu przy małych odchyleniach i najniższego przy pokrywaniu się obu torów.
Autor listingu: Michał Szuniewicz
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Mapa
Program generuje na podstawie liczb przypadkowych obraz przypominający mapę lub zdjęcie satelitarne. Rysowanie rozpoczyna się od punktu o współrzędnych 128,88. Współrzędne kolejnych punktów wybierane są na podstawie liczby przypadkowej generowanej przez funkcję RND. W zależności od tej liczby zmianie ulega współrzędna x lub y punktu zmniejszając się lub zwiększając o dwa. W ten sposób na ekranie powstaje obraz złożony jedynie z punktów o parzystych współrzędnych.
Autor listingu: Michał Szuniewicz
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: mapa_bajtek34-86zx_spectrum.zip
-
Kalendarz
Ten program napisany w BASIC-u na SPECTRUM przydać się może każdemu — „Kalendarz” na każdy miesiąc do- wolnego roku naszego stulecia. Wystarczy podać nazwę miesiąca i rok, a na ekranie monitora pojawią się kolejne dni i tygodnie. Sprawdź, czy nie urodziłeś się w niedzielę, zobacz, w jaki dzień będą Twoje urodziny w roku 2000.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: kalendarz_iks.1.1986_zxspectrum.zip
-
Mapa Polski
Nie jest to program o finezyjnej konstrukcji; punkt po punkcie odwzorowuje granice naszego państwa. Możliwości graficzne mikrokomputera SPECTRUM nie są duże — stąd każdy rysunek „przędzie się” mozolnie. Cierpliwych zachęcamy do wspólnej pracy. Może razem uda nam się przygotować komputerową mapę Polski, na której zaznaczycie miejscowości, w których działają kluby komputerowe.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Wykres Funkcji
Program rysuje wykresy wartości zadanych wyrażeń algebraicznych w określonym zakresie wartości i przedziale zmienności argumentu x. Wprowadzane wyrażenia mogą być dowolnymi wyrażeniami algebraicznymi złożonymi z operatorów arytmetycznych, stałych, zmiennej x, arytmetycznych funkcji standardowych dostępnych w BASIC-u na SPECTRUM.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu
-
Wyścigi psów
„Wyścigi psów” są grą. Wygrywa ten, kto trafnie przewidzi kolejność psów na mecie. Nie jest to sprawa prosta, bowiem o zwycięstwie decyduje generator liczb losowych. Powodzenia.
Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Paskudne Mrówki (aka Piknik)
Piknik - wybrałeś się na uroczą — jak ci się zdawało — wycieczkę na łono natury. Niestety, stałeś się ofiarą napadu ze strony okrutnych mrówek, które usiłują porwać ci śniadanie. Jeśli nie chcesz być głodny, musisz zdeptać złodziejki. Twoje zapasy składają się z trzech owoców, zaś każde cztery mrówki, które przepuścisz uniosą jeden z nich. Staraj się więc... Jest jeszcze jedna trudność, ale o niej dowiesz się sam, gdy uda ci się uruchomić program. Gra ta, opracowana przez pana Grahama Ramsdena (z drobnymi przeróbkami piszącego te słowa) nie wzbudzi zapewne entuzjazmu wśród miłośników przyrody. Ma jednak kilka zalet, niezależnie od tego, kto kogo w niej depcze. Przy pomocy stosunkowo krótkiego programu, udało się autorowi uzyskać ciekawą grafikę i animację. Gra uzupełniona jest również zupełnie przyzwoitymi efektami dźwiękowymi.
Autor listingu: Graham Ramsden, Roman Poznański
Listing nadesłał: Faust, Andys
Język programu: Basic
Stan listingu:
5Listing wzbogacony - uruchamia się na emulatorze lub realnej maszynie, przepisujący listing wzbogacił go o swoje rozwiązania
-
Ruchomy krajobraz
Program „Ruchomy krajobraz" wykorzystuje operację przesuwania ekranu w lewo o jeden punkt. Ekran ZX Spectrum składa się z trzech poziomych części po 64 linie. Przesuwając osobno każdą z nich można uzyskać ciekawe efekty.
Autor listingu: Michał Szuniewicz
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
4Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
-
Programowanie Gier Logicznych
Przykładem gry o znanej strategii jest NIM, częściej uprawiana, niż znana z nazwy. Najpowszechniej stosowanym rekwizytem w NIM są zapałki. Oto zasady. Gra dwóch graczy. Przed grą układają zapałki w trzy rzędy o dowolnej ilości w każdym. Ruch polega na zabraniu z jednego dowolnie wybranego rzędu dowolnej ilości zapałek — od jednej do wszystkich w rzędzie.
Autor listingu: Janusz Kraszek
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: zxnim_komputer_1-1986.zip
-
Sprawdzian
Program "sprawdzian" nie tylko przeegzaminuje dziecko, wystawi ocenę z każdego z typów działań arytmetycznych oraz ocenę łączną, ale i podając przy błędnych odpowiedziach prawidłowy wynik, być może i czegoś nauczy. Jest też i nagroda dla piątkowiczów - jej pełny urok można poznać jednak jedynie dysponując kolorowym monitorem, chociaż wyrazy uznania ze strony komputera nie ominą oczywiście i posiadaczy telewizorów monochromatycznych.
Autor listingu: ps. Marek
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniuPobierz: zxsprawdzian_komputer_1-1986.zip
-
Compact
Compact jest programem na 16/48KB Spectrum pozwalającym na zmniejszenie zajetości pamięci i zwiększenie szybkości działania innych programów napisanych w BASIC-u. Umożliwia wykonywanie trzech podstawowych operacji:
— skracanie zapisu liczb bez wpływu na dokładność obliczeńczeń;
— skracanie długich nazw zmiennych do nazw dwuznakowych w postaci: A0, C0, D0... ZZ;
— kompresja (łączenie) wierszy programu jeśli jest to możliwe.Autor listingu: brak danych
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
2Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnością
-
64 kolumny
Program ten (1,3 kB),przeznaczony dla ZX Spectrum 48 kB umożliwia uzyskanie na ekranie 64 kolumn tekstu zamiast standardowych 32. Pozwala na to dodatkowy rozkaz TAB (EXTENDED MODE P) o formacie prawie takim samym jak rozkaz PRINT. Umożliwia on drukowanie zarówno tekstów, jak i liczb w dowolnych kombinacjach używając operacji AT, średników, przecinków, funkcji, rozkazów zmieniających kolor itp.
Autor listingu: Andrzej Zagrodziński
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
2Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnościąPobierz: zx64_kolumny_bajtek7-1986.zip
-
Spectrum i drukarka DZM-180
Jednym z podstawowych urządzeń peryferyjnych komputera jest drukarka. Z uwagi na duże rozpowszechnienie w kraju mikrokomputerów SINCLAIR ZX SPECTRUM oraz drukarek DZM-180 produkowanych przez MERA-BŁONIE, celowym stało się opracowanie urządzenia sprzęgającego (interface'u), umożliwiającego ich wzajemną współpracę. Do przesyłania informacji opracowano program obsługi interface'u w języku BASIC, składający się z podprogramów LLIST i COPY. Program obsługi należy dołączyć do programu użytkownika za pomocą instrukcji „MERGE".
Autor listingu: Andrzej Ciepliński,Konrad Fedyna,Marek Mizeracki
Listing nadesłał: Faust
Język programu: Basic
Stan listingu:
0Listing niesprawdzony - świeżo po OCR lub przepisaniu