Ready/Run

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

Listingi w bazie
Dodaj listing
  • Wyścigi Samochodowe

    Cześć Maluchy!
    Przyszedł do Was z wizytą kolega. Nie należy — jak Wy — do Komputerowych Przedszkolaków, a więc komputer jest dla niego urządzeniem egzotycznym i nieco tajemniczym. Po wypróbowaniu kilku gier kolega odkłada drążek sterowy i pyta: „Czy mógłbyś mi pokazać, na czym polega to programowanie?“


    W tym momencie stajesz przed poważnym problemem. Jak w ciągu kilkunastu minut przedstawić zasadę programowania? Warto by było napisać także jakiś prosty program. Zwykle taki pokaz kończy się na stworzeniu czegoś podobnego do tego:

    10 PRINT "Jurek-Ogorek, kiełbasa i sznurek"
    20 PRINT
    30 PRINT
    40 GOTO 10
    (Oczywiście jeśli nasz kolega ma na imię Jerzy.)

    Trzeba przyznać — faktycznie — można nazwać to programem i to napisanym jedynie przy pomocy dwóch instrukcji. Kolega stwierdza, że programowanie jest zajęciem fascynującym, ale prawdę mówiąc minę ma nieco zawiedzioną. A może da się wymyślić coś ciekawszego i równie prostego? Właśnie coś takiego chciałem Wam zaproponować. Będą to wyścigi samochodowe napisane przy pomocy tylko jednej instrukcji (PRINT). Rozpoczniemy od zaprogramowania samochodu wyścigowego.

    110 PRINT "                     _"
    120 PRINT "                 ()-/ -()"
    130 PRINT "                   / 1 "
    140 PRINT "                   :/+:"
    150 PRINT "                   :!o!:"
    160 PRINT "                ()-< U >-()"
    170 PRINT "                    ./"
    RUN                              >ENTER/RETURN<
                   _"
               ()-/ -()"
                 / 1 "
                 :/+:"
                 :!o!:"
              ()-< U >-()"
                  ./"
    Ready

    No dobrze, mamy samochód, ale on stoi w miejscu. Poruszymy go również przy pomocy instrukcji PRINT. Uzupełnimy nasz program o następujące linie:

    101 PRINT: PRINT: PRINT: PRINT: PRINT:
    102 PRINT: PRINT: PRINT: PRINT: PRINT:
    103 PRINT: PRINT: PRINT: PRINT: PRINT:
    104 PRINT: PRINT: PRINT: PRINT: PRINT:
    105 PRINT: PRINT: PRINT: PRINT: PRINT:
    171 PRINT: PRINT: PRINT: PRINT: PRINT:
    172 PRINT: PRINT: PRINT: PRINT: PRINT:
    173 PRINT: PRINT: PRINT: PRINT: PRINT:
    174 PRINT: PRINT: PRINT: PRINT: PRINT:
    175 PRINT: PRINT: PRINT: PRINT: PRINT:

    Ruszył naprawdę. Najpierw wszystkie napisy uciekły do góry, a następnie zza dolnej krawędzi ekranu wyskoczył nasz samochód, przejechał przez cały ekran i zniknął za jego górną krawędzią. Wykorzystaliśmy tutaj zjawisko tak zwanego „przewijania“ ekranu, czyli przesuwania wszystkiego, co znajduje się na ekranie do góry w momencie, gdy kolejna linia nie mieści się na ekranie. W przypadku komputera ZX Spectrum i jego licznej rodzinki sprawa troszeczkę się komplikuje. Otóż Spectrum po zapełnieniu całego ekranu zatrzymuje program i czeka na naciśnięcie dowolnego klawisza. Można tego uniknąć wpisując po uruchomieniu komputera:
    POKE 23692,255: REM *** Tylko Spectrum ***
    Oczywiście należy to zrobić tak, aby nie widział tego nasz kolega, bo mu się znowu wszystko pomiesza w głowie.
    Ale co to za wyścigi skoro mamy tylko jeden samochód? Czym prędzej musimy nadrobić to karygodne zaniedbanie. Oto program rysujący i uruchamiający kolejne samochody.

    110 PRINT "               _"
    120 PRINT "           ()-/ -()"
    130 PRINT "             / 1 "
    140 PRINT "             :/+:"
    150 PRINT "             :!o!:"
    160 PRINT "          ()-< U >-()"
    170 PRINT "           ./"
    171 PRINT: PRINT: PRINT: PRINT: PRINT:
    172 PRINT: PRINT: PRINT: PRINT: PRINT:
    210 PRINT "       x"
    220 PRINT "   ()-/ -()"
    230 PRINT "     o 2 o"
    240 PRINT "     //-"
    250 PRINT "   : !*! :"
    260 PRINT "  ##-: U :-##"
    270 PRINT "      ./"
    271 PRINT: PRINT: PRINT: PRINT: PRINT:
    272 PRINT: PRINT: PRINT: PRINT: PRINT:
    310 PRINT "                       ."
    320 PRINT "                   {}-/ -{}"
    330 PRINT "                      ( 4 )"
    340 PRINT "                      </->"
    350 PRINT "                      (!*!)"
    360 PRINT "                   []-: U :-[]"
    370 PRINT "                      :---:"
    371 PRINT: PRINT: PRINT: PRINT: PRINT:
    410 PRINT "       _"
    420 PRINT "   {}-/ -{}"
    430 PRINT "     : 3 :"
    440 PRINT "     :/-:"
    450 PRINT "     :!*!:"
    460 PRINT "  {}-: U :-{}"
    470 PRINT "      ./"
    471 PRINT: PRINT: PRINT: PRINT: PRINT:
    472 PRINT: PRINT: PRINT: PRINT: PRINT:
    473 PRINT: PRINT: PRINT: PRINT: PRINT:
    474 PRINT: PRINT: PRINT: PRINT: PRINT:
    475 PRINT: PRINT: PRINT: PRINT: PRINT:


    Przy okazji usuńmy linie 173, 174 i 175. Wpisując numer linii i naciskając >ENTER/RETURN<. Zmniejszy to dystans pomiędzy pierwszym samochodem a następnymi.
    Pisząc cały ten program skorzystaliśmy dotychczas tylko z jednej instrukcji — instrukcji PRINT. Musicie przyznać, że efekt jest interesujący. Niestety program wykonuje się bardzo szybko i trzeba go uruchamiać od nowa. Są na to dwie rady. Po pierwsze można dopisywać do programu kolejne samochody, a po drugie można wprowadzić nową instrukcję. Łatwiejsze będzie z pewnością to drugie rozwiązanie, tym bardziej, że ta „nowa instrukcja“ nie jest wcale dla nas (a nawet dla Waszego kolegi) nowa. Chodzi tu oczywiście o rozkaz RUN. Przyzwyczailiśmy się korzystać z niego wyłącznie do uruchamiania programu, a tymczasem może on być z powodzeniem wykorzystywany w treści programu.
    Dopiszmy więc ostatnią linię.

    500 RUN

    Teraz nasz program będzie biegał w kółko, aż mu nie przerwiemy lub nie wyłączymy komputera. Szerokiej drogi i gumowych drzew życzy Wam

     

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Ciało zanurzone...

    Już za parę dni wakacje. Zamykamy zeszyty i książki, zapominamy o tabliczce mnożenia, wietrzymy głowy z wszelkich definicji, reguł i praw. Nic nas nie zmusi do zajęcia się nimi przez najbliższe dwa miesiące. Jest jednak takie jedno prawo w fizyce, które właśnie w okresie wakacyjnym studiowane jest ze szczególną pilnością zarówno przez najmłodszych jak i przez starszych. Prawo to brzmi następująco:

    Ciało zanurzone w cieczy traci na wadze tyle, ile waży ciecz przezeń wyparta.
    Miliony eksperymentatorów z niesłychaną dociekliwością i poświęceniem zanurzają swe ciała w czym tylko się da, idąc śladami wielkiego Archimedesa, który — pamiętamy to wszyscy z opowiadań pana od fizyki — odkrył swe prawo siedząc w wannie. A tymczasem okazuje się, że pan od fizyki nie miał racji! Archimedes zanurzając się w wannie dokonał innego spostrzeżenia, które dopiero w toku dalszych eksperymentów doprowadziło go do odkrycia cytowanego na początku prawa. Spostrzegł mianowicie, że jeśli do pełnego po brzegi naczynia zanurzy się jakiś przedmiot, to z naczynia wyleje się woda o objętości równej objętości zanurzanego przedmiotu. Stwierdziwszy ten fakt, uczony mąż wybiegł ze swego domu na ulicę Syrakuz z okrzykiem "heureka" (znalazłem) i tym samym wykonał, prawdopodobnie pierwszy w historii striking, czyli bieg na golasa w miejscu publicznym.
    Cóż jednak było takiego w tym prostym i pozornie oczywistym zjawisku? Otóż pozwolę sobie przypomnieć, że wszystkie wielkie odkrycia były proste. A poza tym dla Archimedesa stanowiło to klucz do rozwiązania problemu, nad którym biedził się już od pewnego czasu. A było to tak:
    Władca Syrakuz, Hieron II zamówił u znamienitego złotnika nową koronę w kształcie wieńca z liści laurowych. Widocznie jednak lepsze zdanie miał o zdolnościach artystycznych rzemieślnika niż o jego uczciwości, gdyż gnębiło go pytanie, czy nie został oszukany. Wątpliwości budził fakt, czy korona została wykonana z czystego złota, jak utrzymywał złotnik, czy też dodano do niej srebra. Z tym problemem zwrócił się Hieron do Archimedesa, najlepszego ze swych ekspertów. Uczony mąż stanął przed niezwykle trudnym zadaniem. Wszystkie znane mu metody zawiodły. Gdyby potrafił obliczyć objętość korony, wszystko stałoby się proste, ale korona zbudowana była z listków różnej wielkości i kształtów, nie przypominających żadnych znanych Archimedesowi brył. Czyżby więc miał się poddać?...
    W takim nastroju wszedł nasz mędrzec do wanny napełnionej po brzegi wodą. Oczywiście część wody wylała się z wanny. Ile wody się wylało — zastanowił się Archimedes...
    Jakie wyciągnął wnioski i co z tego wynikło opisałem wcześniej. Nie wątpię zresztą, że wszyscy znaliście już tę historię.
    Po powrocie do domu Archimedes zrezygnował z dalszej kąpieli. Pobiegł natychmiast do swojej pracowni, gdzie w odkrywczej pasji wrzucał do wody wszystko co wpadło mu w rękę. Przy okazji stwierdził, że przedmiot wyjmowany z wody staje się jakby cięższy. Przy pomocy wagi przekonał się, że tak było w istocie. Jeszcze parę eksperymentów z płynami innymi niż woda, porównanie wyników i wielki mąż z Syrakuz zapisał stwierdzenie, które już na zawsze zwane będzie prawem Archimedesa.
    Nie po raz pierwszy przekonaliście się, jak ciężkie jest życie wielkich ludzi i jak niebezpieczne jest robienie odkryć. Można dostać zapalenia płuc, pośliznąć się na mydle albo nawet zostać aresztowanym za obrazę moralności. Mimo to będę Was namawiał do ponownego odkrycia prawa Archimedesa, z tą jednak różnicą, że użyjemy do tego wyłącznie kartki papieru i ołówka.
    Na początek przypomnijmy sobie, co wiemy o ciśnieniu hydrostatycznym. Otóż ciśnienie obliczamy mnożąc ciężar właściwy cieczy przez głębokość pod lustrem cieczy. Ilość cieczy i kształt naczynia nie mają żadnego znaczenia. Ciśnienie działające na dno każdego z naczyń przedstawionych na rysunku 1 jest identyczne.
    Przekonajmy się jakie ciśnienie i jakie wynikające z niego siły działać będą na ciało zanurzone w cieczy. Dla ułatwienia obliczeń przyjmijmy, że nasze ciało ma kształt prostopadłościanu o krawędziach równych: X, y, z. Ciało umieszczamy pod powierzchnią cieczy tak, aby odległość górnej powierzchni prostopadłościanu od lustra cieczy wynosiła h (rys. 2).
    Siły wynikające z ciśnienia działające na powierzchnie boczne prostopadłościanu możemy pominąć, gdyż ze względu na symetrię wzajemnie się równoważą. Inaczej ma się rzecz z powierzchniami górną i dolną. Na dolną powierzchnię działa siła równa iloczynowi pola powierzchni (y*z) i ciśnienia na tej głębokości ((h+x)*cw), gdzie cw — ciężar właściwy:
    P1=(y*z)*((h + x)*cw)
    podobnie  obliczamy siłę  działającą  na górną  powierzchnię.
    P2=(y*z)*(h*cw) 
    Siły te skierowane są w przeciwnych kierunkach, a więc w sumie należy obliczyć ich różnicę.
    P=P1- P2
    P=(x*z)*(h+x)*cw - (y*z)*(h*cw) P=x*z*c w*(h+x - h) P=x*y*z*cw
    Popatrzcie na ostatni wzór. Przedstawia on objętość ciała pomnożoną przez ciężar właściwy cieczy, czyli ciężar cieczy wypartej przez ciało. Możemy więc zapisać:
    Na ciało zanurzone w cieczy działa siła wyporu wynikająca z ciśnienia, równa ciężarowi wypartej przezeń cieczy, a więc ciato zanurzone w cieczy traci na wadze...
    Czyli jednak udało się. Bez wchodzenia do wanny, a nawet bez zanurzenia czegokolwiek.

    Wykorzystamy praktycznie nasze odkrycie i zbudujemy łódź podwodną a raczej mały batyskaf. Konstrukcja naszego pływadełka różni się znacznie od prawdziwych łodzi podwodnych. Do jej napędu używamy sprężonego powietrza. Batyskaf posiada dwa pływaki, każdy o pojemności 200 l. Napełnione powietrzem sprawiają, że batyskaf jest lżejszy od wypieranej wody, a więc zanurzony unosi się ku górze. Wypuszczenie powietrza z jednego z pływaków doprowadza do stanu równowagi, to znaczy do sytuacji, w której batyskaf waży dokładnie tyle, ile wypierana woda. Pozostaje więc na stałej głębokości. Oczywiste jest, że napełnienie drugiego pływaka wodą powoduje zanurzenie batyskafu.
    Pływaki można napełniać sprężonym powietrzem. W tym miejscu pojawia się jednak problem. Powietrze wypierając wodę musi znajdować się pod ciśnieniem mini
    malnie większym niż sama woda. Wynika stąd — zgodnie z prawami rządzącymi sprężaniem gazów — że napełnienie zbiornika na głębokości 90 m, gdzie ciśnienie wynosi 10 atmosfer wymaga dwukrotnie więcej powietrza niż ta sama czynność na głębokości 40 m (5 atmosfer) i dziesięciokrotnie więcej niż na powierzchni (1 atmosfera).
    Dysponujemy zapasem 100 kg powietrza. Wbrew pozorom nie jest to tak wiele. Przypomnę tylko, że 1 metr sześcienny powietrza o temperaturze 10 stopni Celcjusza i ciśnieniu atmosferycznym waży 1,25 kg. Dodatkowe zużycie powietrza powoduje silnik poruszający batyskaf. Jeden etap podróży kosztuje 5 kg.
    Twoim zadaniem jest złowienie możliwie największej liczby ryb specjalnego gatunku. Masz do dyspozycji wykrywacz ryb i automatycznego rybaka. Wystarczy jedynie, że osiągniesz głębokość, na której wykryto rybę a resztę zrobi za Ciebie automatyczny rybak. Nie każdą rybę opłaca się jednak łapać. Wybór odpowiedniej strategii należy do Ciebie.
    Sterowanie batyskafem odbywa się w umownych jednostkach czasu odliczanych kolejnymi rozkazami. Jeśli nie wydajesz żadnego rozkazu naciskaj tylko klawisz ENTER/RETURN.
    Stopy wody pod kilem i taaaaaakiej ryby życzy Ci

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Imieniny Cioci Kloci


    Cześć Maluchy!
    Wczoraj były imieniny ukochanej cioci Kubusia, Cioci Kloci, a Kuba nawet nie wysłał jej kartki z życzeniami. A przecież ona zawsze pamięta o każdym święcie. Cóż robić, Kubuś wyśle dzisiaj kartkę z przeprosinami, ale swoją drogą przydałoby się zaradzić temu na przyszłość. Ale jak?


    Do dzisiaj medycyna nie znalazła niestety skutecznego medykamentu poprawiającego pamięć. Tak więc nie szukajmy ratunku w pigułkach, maściach i rozmaitych miksturach. Może więc lepiej zanotować wszystko w kalendarzu? Ale przecież w kalendarzu Kubusia imieniny Cioci Kloci zakreślone są grubym, czerwonym flamastrem, a on i tak o nich zapomniał. Stosunkowo najlepiej do przypominania nadaje się mama. Ona wszystko doskonale pamięta. Mama jednak nie przypomni o swoich imieninach, Dniu Kobiet czy Dniu Matki.
    Kogo by więc poprosić o tę przysługę? Ten ktoś musi mieć dobrą pamięć i dużo cierpliwości. Kubuś dobrze wie, kto ma najlepszą pamięć i nigdy się nie znudzi. To oczywiście komputer. Spróbujmy teraz, razem z Kubusiem nauczyć komputer przypominania nam o tym, o czym sami możemy zapomnieć.
    Popatrzmy jaki program napisał Kubuś i prześledźmy jego działanie. Pierwsza część programu (linie 100—180) umożliwia podanie komputerowi aktualnej daty. Komputer pyta najpierw o dzień (linie 130 i 140), a następnie o miesiąc (linie 150 i 160). Rok nie jest mu potrzebny, ponieważ program w wersji napisanej przez Kubusia przypominać ma jedynie o terminach stałych, takich jak urodziny i imieniny.
    Komputer nie przyjmie odpowiedzi, które z założenia są błędne, np. nie przyjmie liczby 13 jako numeru miesiąca. Dzieje się tak, dzięki liniom 145 i 165, w których sprawdzane jest, czy wpisana przez użytkownika liczba jest całkowita i czy nie wykracza poza dozwolony przedział. Dla zmiennej dzień wynosi on <1—31>, dla zmiennej miesiąc <1—12>.
    Teraz komputer przechodzi do porównywania daty podanej jako dzisiejsza z terminami przechowywanymi w pamięci, a konkretnie w liniach DATA (linie 1000—5000) na końcu programu. Informacje w liniach danych zapisywane są w ściśle ustalonej kolejności. Najpierw dwie zmienne liczbowe, dzień i miesiąc, a następnie tekst określający czego dotyczy zapamiętany termin. Ostatnia wartość wynosi 100 i oznacza koniec zapisu, a dla komputera koniec odczytywania danych.
    Komputer wczytuje dane z jednej linii (dotyczące jednego terminu) (linie 200—230). Warunek w linii 210 umożliwia wyskoczenie z pętli po wczytaniu wszystkich danych. Następnie termin porównywany jest z dzisiejszą datą (linie 240—270). Jeśli do wyznaczonego terminu pozostało dziesięć lub mniej dni informacja o nim ukazuje się na ekranie.
    Zapewne zauważyliście, że terminy obliczane są tak, jak gdyby wszystkie miesiące miały po 31 dni. Nie powoduje to jednak większego błędu, gdyż dla nas ma znaczenie liczba dni pomiędzy stosunkowo bliskimi terminami a nie liczba dni, które upłynęły od początku roku. Tak więc błąd może wynosić 1 dzień w przypadku miesięcy 30 dniowych i 3 dni w lutym, jeśli ma on 28 dni. Błąd ten powstaje pod koniec miesięcy „krótszych“, gdy i opóźnia komunikat o 1—3 dni.
    Program można uzupełnić o dodatkowe funkcje. Może on na przykład informować ile lat kończy nasz solenizant (choć nie jestem pewny, czy wszystkie panie byłyby zadowolone). W każdym razie linie danych należy wypełnić datami imienin, urodzin i rocznic naszych znajomych i uruchamiać ten program chociaż dwa razy w tygodniu. Jeśli tak zrobisz, z pewnością nie zapomnisz o żadnym z nich. A może także nie zapomnisz o przyjaciołach Kubusia?

     

    Autor listingu: Roman 'Rozmek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

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

    W poprzednim numerze przedstawiliśmy dwa sposoby formatowania trzycalowych dysków na 210 KB. Dzisiaj kontynuujemy ten temat. Poniższy program pozwala na sprawdzenie poprawności zapisu wszystkich ścieżek na dyskietce.
    Po każdym sformatowaniu dysku powinno się sprawdzić, czy wszystkie sektory istnieją i czy są poprawnie zapisane. Takie błędne formaty mogą wystąpić, gdy używamy niefirmowych lub zużytych dysków. Oczywiście można w tym celu posłużyć się programem DISCKIT, ale akceptuje on jedynie standardowe formaty AMSTRADA.
    Nasz weryfikator (wydruk obok) umożliwia sprawdzenie dysku o dowolnym formacie. Oczywiście jest to możliwe jeśli posiadamy program zmieniający DPB (ang. Disc Parameter Błock) stosownie do tego formatu. Taki DPB dla formatu 208 KB przedstawiliśmy w poprzednim numerze "Bajtka". Na uruchomienie tego, jak i innych tego typu programów komputer zwykle reaguje opuszczeniem weryfikatora. Aby wrócić do niego, należy wprowadzić RUN 500 (RETURN) w trybie bezpośrednim.
    Na ekranie w kolumnie pod literą C pojawią się numery ścieżek, a pod S numery sektorów, które program sprawdza. Poprawność lub niepoprawność jest potwierdzana stosownym komunikatem.

    Autor listingu: Jacek Kunowski

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

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

    Cześć Maluchy!
    Bywa czasem, że nawet najwięksi ludzie, najtęższe umysły zmuszeni są poświęcić nieco czasu rzeczom zwykłym i codziennym. Zdarza się wówczas, że proste, nieciekawe czynności stają się pretekstem do niezwykle interesujących rozważań. Anegdota z życia Simeona Denisa Poisson (1781—1840), francuskiego matematyka i fizyka, profesora Sorbony stanowi doskonały przykład takiego zdarzenia.
    Pewnego razu Poisson wybrał się wraz ze swym przyjacielem, również matematykiem, na długą, pieszą wycieczkę. Późnym wieczorem zdrożeni wędrowcy dotarli do samotnej karczmy. Obydwaj przyjaciele byli już solidnie głodni i spragnieni. Zamówili więc dzban wina w zamiarze osuszenia go nim karczmarz przygotuje posiłek. Matematycy postanowili podzielić się winem po połowie, tu jednak pojawiła się pewna trudność. Gospodarz przyniósł wino w jednym, pełnym naczyniu ośmiolitrowym. Na prośbę gości użyczył im jeszcze dwóch naczyń, o pojemności 5 i 3 litrów, dodając, że w karczmie nie ma już innych naczyń.
    Po kilku próbach przelewania wina z jednego dzbana do drugiego, profesorowie mieli ochotę zrezygnować ze sprawiedliwego podziału na rzecz bezzwłocznego zwilżenia wyschniętych gardeł, lecz przekora i upór właściwe wszystkim wielkim naukowcom wzięły górę...
    Anegdota nie mówi jak długo przyjaciele trudzili się tym problemem, nie wspomina też o tym, co myślał sobie karczmarz widząc co ci dwaj spragnieni podróżni wyprawiają z jego winem. Jako fakt podaje jednak, że w końcu każdy z nich wypił swoje 4 litry wina (dla wyjaśnienia dodam, że było to bardzo słabe wino, rozcieńczane wodą).
    Wynika stąd, że istnieje rozwiązanie tego problemu. Nie jest ono jednak proste, o czym możesz się sam przekonać. Nie biegnij jednak od razu do kuchni i nie wyciągaj mamie garnków z szafki. O ile pamiętam, mamy zwykle nie przepadają za robieniem z kuchni basenu kąpielowego. Znacznie bezpieczniej będzie jeśli usiądziesz przed komputerem i wpiszesz ten program.
    Rolę naczyń spełniają w naszym programie tablice pojemnosc(3) i zawartosc(3). Już same nazwy tablic określają jakie wartości będą w nich przechowywane. I tak na przykład pojemnosc(2)=5 oznacza, że pojemność naczynia drugiego wynosi 5 litrów, a zawartosc(2)=3 oznacza, że w tym naczyniu znajdują się 3 litry wina.
    W liniach 30—50 następuje wczytanie początkowych wartości tablic. W trakcie gry zmianie ulegać będą jedynie wartości umieszczone w tablicy zawartosc(3), natomiast tablica pojemnosc(3) zachowa wartości początkowe.
    Zasadnicza pętla programu mieści się w liniach 100—340. Na początek drukowana jest na ekranie informacja o napełnieniu kolejnych butelek (linie 120—150). Przy okazji sprawdzane jest, czy w którymś z naczyń nie pozostały przypadkiem dokładnie 4 litry wina, co oznaczałoby spełnienie warunków gry (linia 140). Pętla wyposażona jest także w licznik kolejnych sytuacji (linie 70, 100 i 330), który pozwala określić po ilu przelewaniach uda nam się osiągnąć sukces.
    W następnej kolejności komputer pyta grającego kolejno o to, z której butelki i do której chce on przelać wino (linie 200—260). Numery butelek zapamiętuje odpowiednio jako zmienne z i d. Przy okazji sprawdza, czy wprowadzone liczby mogą być numerami butelek (linie 220 i 250), oraz czy grający nie chce przelać wina do butelki, z której właśnie wylewa (linia 260). W każdym z tych przypadków komputer rozpoczyna pytanie od nowa.
    Dysponując wszystkimi danymi komputer może przystąpić do „przelewania“ (linie 300—320 i 1000—1020). Zawartość butelki d — zawartosc(z) zwiększana jest o zawartość butelki z — zawartości) (linia 300). Zawartość butelki z — zawartość(z) przyjmuje wartość 0 (linia 310). Może się jednak zdarzyć, że zawartość butelki d — zawartość(d) jest większa niż pojemność tejże butelki — pojemnosc(d) (linia 320). Komputer wykonuje wówczas dodatkowe operacje (podprogram w liniach 1000—1020). Zawartość butelki z — zawartosc(z) przyjmuje wartość równą różnicy zawartości butelki d — zawartosc(d) i jej pojemności — pojemności(d) (linia 1000). Zawartość butelki z — zawartość(z) przyjmuje wartość jej pojemności — pojemność(z).
    Teraz pozostało jedynie zwiększenie wartości licznika s o 1 i pętla rozpoczyna się od nowa. Program trwa aż do momentu, gdy zadanie nie zostanie wypełnione lub... aż nie zostanie on przerwany.

     

    Autor listingu: Roman Romek Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

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

    Przemek ma 13 lat, jego młodsza siostra Bianka ukończyła 10 i chodzi do czwartej klasy. Dla niej właśnie napisał Przemek na Am- stradzie 464 program, który Wam dzisiaj przedstawiam. Służy on do ćwiczenia szybkiego obliczania w pamięci wyników czterech podstawowych działań arytmetycznych. Nie jest to jednak zwykły test, jakich otrzymujemy dziesiątki, ale prawdziwa gra komputerowa.
    Wyobraźcie sobie, że nad naszym miastem zawisło niebezpieczeństwo. Przybysze z kosmosu postanowili je zniszczyć zrzucając burzące bomby. Spadającą bombę można rozbroić wykonując napisane na niej działanie. Jeśli uczynimy to bezbłędnie, bomba zawiśnie w powietrzu i będziemy mogli ją zestrzelić. Jeśli jednak pomylimy się lub nie starczy nam czasu, bomba spadnie na miasto, a kilka domów legnie w gruzach.
    Grający ma możliwość ustawiania prędkości i wyboru działań arytmetycznych. Tak więc w miarę doskonalenia swoich możliwości, można podnosić poprzeczkę.

    Uwagi...
    To byłby całkiem miły program gdyby nie parę błędów, które zawiera np. zestrzeliwanie bomby działa pod warunkiem, że uda nam się strzelić przed osiągnięciem pozycji najwyższej helikoptera (głupi błąd, który kiedyś może skoryguje). To samo tyczy się końca gry... Gra ma co prawda ekran końcowy... jednak nigdy do niego dociera. Nie zmienia to faktu, że jak na "13" to bardzo przyjemny programik.

     

    Autor listingu: Przemek Siwiński

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Powróżyć

    Tym razem nie jest to żadna gra, ale prawdziwy eksperyment. Na pewną stację kolejową przyjeżdżają pociągi z dwóch miast. Na miejscu są łączone w jeden skład i jadą dalej. Każdy z pociągów przyjeżdżających na stację może mieć od jednego do sześciu wagonów. Możemy traktować to jako rzecz całkowicie przypadkową, podobnie jak rzut kostką. Żadna liczba wagonów nie występuje z założenia częściej niż inne. Efektem naszego doświadczenia jest liczba wagonów pociągu powstałego z dwóch składów. Może ona wynosić najmniej 2 (gdy przyjadą dwa pociągi mające jedynie po jednym wagonie) a najwięcej 12 (dwa pociągi po sześć wagonów). Na ekranie ukaże nam się tabelka, której poziome rubryki oznaczone są właśnie liczbami od 2 do 12. Odjazd pociągu o określonej liczbie wagonów powoduje umieszczenie w odpowiedniej rubryce kolejnego wagonika. W ten sposób będziemy mogli zobaczyć, jakich pociągów odjechało najwięcej.
     

    Autor listingu: Roman Romek Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Strzałka

    Czytając serię artykułów w Bajtkach nr 3—4/87 pt. „Duszki” pomyślałam sobie, jak przydatne byłyby możliwości „grafiki graczy i pocisków dla komputera AMSTRAD-SCHNEIDER. Niestety, na tym typie mikrokomputera niemożliwe jest sprzętowe uzyskanie takich efektów. Cóz, pozostaje więc tylko rozwiązanie programowe.

    Zabrałem się ostro do pisania programu. Plonem dwutygodniowej pracy jest prezentowany poniżej program. Jego wersja pierwotna napisana jest oczywiście w asemblerze (to ze względu na szybkość i oszczędność pamięci), natomiast wydruk to progam dla BASICa. Należy go „wystukać”, nagrać dla pewności i uruchomić zleceniem „RUN”. Po zgłoszeniu się kursora mamy do dyspozycji kilka nowych zleceń:
    : ON — ukazanie się strzałki na ekranie,
    : OFF — zniknięcie strzałki z ekranu,
    :GO — po wywołaniu tego zlecenia możemy kierować strzałką za pomocą klawiszy kursora.
    [SPACE] kończy działanie zlecenia. Jeżeli chcemy, aby strzałka poruszała się szybciej musimy dodatkowo przyciskać klawisz [SHIFT],
    : POS,x%,y% — strzałka przybiera nowe współrzędne, pod którymi ukaże się, jeśli wykonamy 
    : ON
    (x% — współrzędna X od 1 do 303
    y% — współrzędna Y od 1 do 183
    Początek układu współrzędnych znajduje się w lewym górnym rogu ekranu.),
    :GETPOS,Cx%,Cy%    —    pobiera współrzędne strz  ałki. Zmienne x% i y% muszą być wcześniej zadeklarowane. Jeśli np. chcemy wyświetlić na ekranie współrzędne strzałki musimy wykonać sekwencję instrukcji: x% = 0:y%=0:!GETPOS, Cx%,Cy%:PRINT x%,y% Strzałka „chodzi w modzie pierwszym” (spolszczenie MODE 1). Nie może nastąpić scroll ekranu.
    Strzałkę można zastosować do swoich własnych programów znacznie upraszczając i uatrakcyjniając ich obsługę. Kto mi nie wierzy niech obejrzy „ART-STUDIO” w działaniu. Kto nie ma tej możliwości, może sprawdzić działanie strzałki na podstawie zamieszczonego programu demonstracyjnego.

    RCK Mielec

    Autor listingu: Krzysztof Kuśnierz

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Na szachownicy (Biale / Czarne)

    Cześć Maluchy!
    Nasza szachownica ma nieco nietypowy kształt. Składa się z jedenastu pól ustawionych w jednym rzędzie. Rozpoczynając od jednego końca kładziemy na kolejnych polach pięć pionów w kolorze białym. Od drugiego końca kładziemy natomiast pięć pionów czarnych (rysunek 1). Pośrodku pozostaje jedno pole wolne. Zadaniem grającego jest umieszczenie białych pionów na miejscach czarnych i odwrotnie. Piony białe poruszają się wyłącznie w prawo, piony czarne — w lewo. Każdy z pionów można przesunąć na sąsiednie wolne pole, lub też — jeśli znajduje się na nim pion innego koloru — na wolne pole znajdujące się bezpośrednio za tym pionem. W jakiej kolejności należy przesuwać piony i ile trzeba wykonać ruchów?

     

    Spróbujmy przełożyć zasady tego zadania na język komputera. Rolę szachownicy w naszym programie będzie pełniła tablica pole (10). Posiada ona — podobnie jak nasza szachownica — 11 pól o numerach: 0, 1, 2, 3,... 10. Wartości wprowadzone do odpowiednich elementów tablicy symbolizują piony. I tak, wartość 1 oznacza pion biały, -1 — pion czarny, -0 — puste pole. Dodatkowo wprowadzamy jeszcze jedną, identyczną szachownicę koniec (10). W niej zostanie zapisane docelowe ustawienie pionów. W pierwszym fragmencie programu (linie 10-70) znajdują się deklaracje opisanych tablic i następuje wypełnienie ich odpowiednimi wartościami zapisanymi w linii danych (linia 70). Tablica pole (10) zawiera sytuację początkową, natomiast koniec (10) — końcową.
    Główna pętla naszego programu (linie 100-140) składa się wyłącznie ze skoków do podprogramów. Taka konstrukcja często bardzo ułatwia zachowanie przejrzystości i czytelności programu, gdyż umożliwia łatwe analizowanie każdego z podprogramów osobno. Pierwszy ze skoków skierowany jest do podprogramu rysunek planszy (linie 1000-1100), który sprawdza kolejno zawartość poszczególnych elementów tablicy pole (10) i rysuje szachownicę, wypełniając ją odpowiednio znakami O symbolizującymi piony białe lub * symbolizującymi piony czarne (rysunek 2). Drugim z wykonywanych podprogramów jest koniec gry? (linie 2000-2050), czyli sprawdzenie czy przypadkiem sytuacja na szachownicy nie jest już taka, jaką chcieliśmy osiągnąć. W tym celu porównywane są zawartości odpowiednich elementów tablic pole (10) i koniec (10).

    Jeśli zawartość obu tablic jest identyczna następują gratulacje i koniec gry.
    Kolejny podprogram, to wybór ruchu (linie 3000 - 3070). Decyzja grającego wprowadzana jest do komputera przy użyciu instrukcji INPUT. Następnie — w zależności od wybranego ruchu — zmienna pion otrzymuje wartość 1 (jeśli wybrano białe) lub -1 (czarne).

    Najważniejszym i równocześnie najbardziej złożonym podprogramem jest ruch (linie 4000-4170). Wymaga on też nieco dokładniejszego omówienia. Pierwsze linie (4000-4020) to sprawdzenie, które z pól szachownicy pozostaje puste. Numer tego pola przypisany zostaje wartości i. W następnej kolejności sprawdzane jest, czy można przesunąć pion na wolne pole z pola sąsiedniego (linie 4030 i 4040) lub przeskakuje przez inny pion (linie 4050 i 4060).
    Ciekawe, że w tym podprogramie znajdują się dalsze podprogramy. Jeśli ruch jest niemożliwy, następuje skok do „podprogramu” drukującego na ekranie komunikat Ruch niemożliwy!!! (linie 4070 i 4090). „Podpodprogramy” w liniach 4100-4130 i 4140-4170 przestawiają wartości w tablicy pole (10) w przypadku ruchu — odpowiednio — na sąsiednie pole lub z przeskokiem.
    Analizując kolejne instrukcje warunkowe — możecie to potraktować jako zadanie domowe — dojdziecie może do wniosku, że wartości 1, -1 i 0 symbolizujące sytuację poszczególnych pól szachownicy nie zostały wybrane przypadkowo. Spróbujcie odpowiedzieć sobie dlaczego. Spróbujcie także zastanowić się nad samą grą. Na przykład, czy można wykorzystać w niej dłuższą szachownicę i więcej pionów, oraz jak wpłynie to na strategię gry.
     

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Zabawa w sklep

    Proponuję Wam dzisiaj przerobienie komputera na kasę sklepową. Będzie to jednak nieco mądrzejsza kasa niż te, które widujemy na codzień.

    Zwykła kasa — pomimo bardzo poważnego wyglądu — potrafi bardzo niewiele. Praktycznie jedynie dodaje wystukiwane na klawiaturze sumy pieniędzy. Pomocnicze obliczenia (na przykład ile kosztuje 62 dekagramy sera w cenie 347 złotych za kilogram) musi dokonywać sprzedający. Spróbujmy mu pomóc.
    Człowiekowi obliczenie rachunku w rodzaju
    0.62*347
    zajmuje przeciętnie kilkanaście sekund, dla komputera natomiast jest to czas niezauważalny. Trzeba mu jednak te dane wpisać. Najprostszym sposobem byłoby każdorazowe informowanie komputera o ilości i cenie jednostkowej (na przykład za kilogram, litr lub sztukę) towaru. Wówczas następowałoby obliczenie należności i zsumowanie jej z poprzednimi. Zastanówmy się jednak, czy nie można jeszcze bardziej ułatwić życia sprzedawcy.
    Ilość towaru (w odpowiednich jednostkach) będzie trzeba podawać za każdym razem, bo zależy ona jedynie od życzenia klienta. Bez trudu możemy natomiast przewidzieć jednostkowe ceny towarów, i to może za nas pamiętać komputer. W takim przypadku wystarczy podać nazwę sprzedawanego towaru i jego ilość. Dla uniknięcia nieporozumień komputer powinien pamiętać, że ilość mleka mierzy się w litrach, cukru w kilogramach a bułek w sztukach.
     

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Katalog Dyskowy

    W ostatnim numerze z 1987 roku przedstawiliśmy Wam program umożliwiający korzystanie ze spisu zawartości kasety magnetofonowej wewnątrz programu w BASIC-u. Teraz kolei na dyskietkę.

     

    Zamieszczony poniżej listing należy uważnie wpisać do komputera i na wszelki wypadek zapamiętać na dyskietce. Rozkazem RUN uruchamiany program i odczekujemy kilkanaście sekund, aż pojawi się znany dobrze komunikat „Ready”. Jeśli otrzymamy wcześniej komunikat "Błąd w DATA!!!", to znaczy, że popełniliśmy błąd przy przepisywaniu i daną linię należy poprawić. Komunikaty Basica (np. "Syntax error" ) mogą również świadczyć o błędzie przy kopiowaniu listingu.

    Dodatkową pomocą przy przepisywaniu są sumy kontrolne umieszczone w nawiasach kwadratowych na prawo od każdej linii programu. Jeżeli przed rozpoczęciem wpisywania uruchomiliśmy program „Weryfikator” z nr 1/1988, to po każdym naciśnięciu ENTER ukaże się liczba, która musi być równa sumie kontrolnej. Nierówność oznacza pomyłkę w ostatnio wprowadzonej linii.

    Po pojawieniu się komunikatu „Ready” możemy skasować program komendą NEW, gdyż spełnił on swoje zadanie: procedura w języku maszynowym została załadowana do pamięci począwszy od adresu &9D00. Ponieważ ładowanie programu do pamięci z linii DATA trwa aż 15 sekund, to opłaca się zapamiętać teraz fragment pamięci rozkazem:

    SAVE "DCAT.BIN",b,&9D00,&410 aby ładować go potem trzema rozkazami:

    MEMORY &9CFF:LOAD "DCAT.BIN", &9D00:CALL &9D00

    zamiast za każdym razem od nowa uruchamiać program w Basicu.

    Procedura dodaje do Basica dwie nowe komendy RSX: |DCAT i |INFO.

    Rozkaz DCAT służy do wpisania katalogu dyskietki dc tablicy stringów. Jego wywołanie wygląda następująco:

    |DCAT,@a$(0),dr

    Parametr dr jest wyrażeniem całkowitym dającym wartość 0 lub 1 i oznacza stację dysków, na której przeglądany ma być katalog (0 = A, 1 = B). Opuszczenie parametru dr powoduje wybranie stacji domyślnej (ustawionej przez :A,:B lub :DRIVE).

    Tablica stringowa a$ (można oczywiście użyć innej nazwy) musi posiadać co najmniej tyle elementów (stringów) o długości większej od 17 ile jest zbiorów na dyskietce. Jeśli będzie ich mniej to komputer wypisze komunikat „Table too small”. Zawartość stringów jest przy tym nieistotna. Komenda zamieni miejscami elementy tablicy tak, aby właściwe elementy znalazły się na początku i wpisze do nich nazwy zbiorów z dyskietki w następującym formacie

    "00:NAZWA_»TYP*#z"

    • 00 — numer użytkownika (USER); może przyjmować wartości od 00 do 15
    • NAZWA — ośmioznakowa nazwa pliku (ewentualnie dopełniona spacjami) np, CIOCPM3
    • TYP — trzyznakowe rozszerzenie nazwy (ew. dopełnione spacjami: np. EMS, BAS, BIN, COM)
    • * — oznacza plik zabezpieczony przed zapisem (R/O); spacja zamiast gwiazdki oznacza zwykły plik
    • # — oznacza plik systemowy (nie pokazywany przez CAT i DIR — nasza komenda pokazuje takie pliki); dla plików zwykłych w tym miejscu jest spacja
    • z — jest pojedynczym znakiem, którego kod mówi o wielkości pliku tzn. jeśli ASC(z) = 15to plik zajmuje 15 kB;

    Stringi zawierające nazwy zbiorów są przez DCAT sortowane alfabetycznie (tak jak przez CAT), przy czym brany jest pod uwagę również numer użytkownika, to znaczy string „00:ZZZZ...” jest przed stringiem „01 :AAAA...”. Ponieważ znak z (wielkości pliku) ma najczęściej kod mniejszy od 32, czyli jest znakiem sterującym, to nie należy wyświetlać elementów tablicy w całości, lecz następująco:

    PRINT (LEFT$(a$(i),17),ASC(MID$ (a$(i),18,1))

    Otrzymany w ten sposób napis od 00 do # i obok wielkość pliku w kilobajtach, „i” jest numerem elementu tablicy.

    Jeżeli string, do którego wpisano informację o zbiorze ma długość większą od 18, to znaki od 19 do ostatniego pozostają niezmienione.

    Ze względu na specyfikę obsługi stringów w Amstradzie nie wolno w programie inicjalizować tablicy przez przypisanie pojedynczego stringu np a$(i) = „01234567890123456789”. Należy posłużyć się przypisaniem dowolnego     wyrażenia     stringowego     np.

    a$(i)=„0” +„1234567890123456789” lub krócej: a$(i) = SPACE$(18)

    Jeżeli tę samą tablicę używamy do wczytania katalogu z kilku dyskietek, to należy ją za każdym razem inicjalizować, by móc stwierdzić, ile zbiorów jest na kolejnej dyskietce (jeśli będzie mniej, to w nie zainicjalizowanej tablicy pozostaną stringi z informacją o zbiorach poprzedniego katalogu).

    Drugą komendą, którą daje nam program jest INFO. Wywołuje się ją następująco: |INFO,@nazwa$,@a% ,@b% ,@c%, @d%,@e%

    nazwa$ — jest  zmienną stringowa zawierającą nazwę zbioru, o którym informację chcemy uzyskać; nazwa nie może zawierać oznaczenia stacji („a:”) ani numeru       użytkownika („0:”); wszystkie spacje są ignorowane; użytkownicy  CPC  664  i  6128 mogą zamiast @nazwa$ podać nazwał lub bezpośrednio string a%,b%,c%,d%,e% są zmiennymi całkowitymi o dowolnej, ale określonej wartości. Po wykonaniu komendy zostaną w nich umieszczone następujące informacje:

    • a% — typ zbioru:
      • 0 — Basic
      • 1 — Basic zabezpieczony (SAVE,p)
      • 2 — program w języku maszynowym 22 — zbiór ASCII lub program COM
    • b% — adres ładowania programu maszynowego; dla Basica zawsze 368; dla ASCII nieokreślone
    • c% — długość zbioru; dla ASCII nieokreślone
    • d% — jeżeli wielkość zbioru przekracza 64 kB tutaj umieszczany jest najbardziej znaczący bajt długości zbioru (prawie zawsze 0; dla ASCII nieokreślony)
    • e% — adres autostartu dla programów maszynowych uruchamianych komendą RUN; dla Basica — 0; dla ASCII nieokreślone

    Nazwy zmiennych mogą być oczywiście różne od tych, podanych w przykładzie.

    Zbiór szukany jest zawsze na domyślnej stacji dysków i domyślnym obszarze użytkownika (które można ustawić komendami :A, :B, :DRIVE i :USER). Jeżeli nie zostanie znaleziony, to komputer wypisze: „File not found”, lecz nie przerwie programu.

    Przedstawiony w numerze 12/1987 katalog kasetowy można załadować do pamięci razem z katalogiem dyskowym, co umożliwia na przykład pisanie programów automatycznego kopiowania dyskietek na kasety i odwrotnie. Najpierw należy załadować poprzedni program a dopiero potem przedstawiony powyżej..

    Autor listingu: Sergiusz Wolicki

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Sufler

    Doświadczeni programiści wiedzą, że aby znaleźć odpowiedź na takie pytanie trzeba niejednokrotnie poświęcić dużo czasu, chociaż odpowiedź może okazać się bardzo prosta.

    W dużo gorszej sytuacji sa początkujący amatorzy „komputerowego szaleństwa”, stawiający pierwsze kroki nie tylko w programowaniu, ale również i w nieodzownym przy tej pracy języku angielskim. Krótkie „syntax error” lub inne niezrozumiałe komunikaty rujnują zapał, nerwy, i czupryny naszych najmłodszych czytelników. A właściwie jest to już czas przeszły... Wystarczy uzbroić się w odrobinę cierpliwości i przepisać poniższy program oraz utrwalić go na kasecie lub dyskietce pod nazwą „SUFLER”. Od tej pory pisanie własnych programów należy rozpoczynać od załadowania naszego „suflera”, numerując własne linie począwszy od 10. i kończąc obowiązkowo linią z rozkazem END o numerze nie większym niż 59999! Każde uruchomienie programu z błędem spowoduje pojawienie się informacji o numerze błędu, numerze linii, w której wystąpił błąd oraz komunikatu w języku angielskim z następującym po nim obszerniejszym wyjaśnieniem w języku polskim.
    Sprawdzony i działający program zapisuje się oczywiście na kasecie lub dyskietce po uprzednim usunięciu „suflera” poleceniami DEL — 9 i DEL 60000 —. Zapisane wcześniej a nie działające programy mogą być poprawiane również przy użyciu tego programu po włączeniu do nich „suflera” poleceniem CHAIN MERGE „nazwa programu” (pod warunkiem wszakże, że kończą się również linią z poleceniem END).
    Roztargnionym przypominam, iż nie należy przepisywać z listingu liczb podanych w nawiasach kwadratowych, ani samych nawiasów. Są to liczby kontrolne, generowane przez opisywany poniżej po raz drugi weryfikator, służące wyłącznie do kontroli poprawności wpisywanych linii programu.
     

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Osiemnastokołowiec

    Kubuś Literka, dzielny poszukiwacz przygód i nasz stary przyjaciel został kierowcą wielkiej ciężarówki. Chyba każdy (a może także każda)-z Was marzy o tym, by zasiąść za kierownicą takiego osiemnastokołowca i wyruszyć przed siebie. Okazuje się jednak — przekonał się o tym Kubuś — że życie kierowcy nie składa się z samych tylko przyjemności. Czasem trzeba nieźle się nagłowić, jaki zabrać towar i jaką pojechać trasą, aby przewieźć możliwie najwięcej ładunków.

    Zasady gry są bardzo proste. W pięciu miastach znajdują się magazyny z towarem. W każdym z magazynów czekają na transport do poszczególnych miast cztery ładunki. Kubuś rozpoczyna pracę od pierwszego magazynu. Jego ciężarówka zabiera jednorazowo 3 ładunki. Może wyruszyć na trasę tylko siedem razy a równocześnie musi starać się dostarczyć do miejsca przeznaczenia jak najwięcej ładunków. Za każdy z nich otrzymuje zapłatę w wysokości 100 bajtodukatów.
     

    Autor listingu: brak danych

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Mieszanie trybów

    Poniższy program dodaje nowe rozkazy do BASIC-a pozwalając na prace ekranu Amstrada w kilku trybach równocześnie.

    Miłą cechą Amstradow jest możliwość podziału ekranu na cztery części (zwane dalej sekcjami) i nadawania im własnych trybów pracy. Kto widział grę SORCERY na Am- stradzie, wie jakie efekty można uzyskać za pomocą tej metody. W grze tej górna część ekranu pracuje w trybie 0 pozwalającym na uzyskanie 16-u kolorów, podczas gdy dolna część ekranu pracuje w trybie 1 i służy do wyświetlania tekstów.
    Mieszanie trybów osiągane jest za pomocą odpowiednich zmian wartości rejestru układu VGA (Video Gate Ar- ray) określającego tryb pracy ekranu.
    Podział ekranu na sekcje jest stały. Wiersze 1-5 tworzą sekcję o numerze 0, wiersze 6-12 sekcję 1, wiersze 13-18 sekcję 2, a wiersze 19-25 sekcję 3.
    Prezentowany program dodaje trzy nowe rozkazy do BASIC-A. Po jego uruchomieniu program można wymazać z pamięci. Rozszerzenia będą aktywne oczywiście tylko do momentu wyłączenia komputera. UWAGA! Dla bezpieczeństwa nie należy zapomnieć o zapisaniu wprowadzonego programu na taśmę lub dysk przed pierwszą próbą jego uruchomienia. Wprowadzone rozkazy są rozkazami RSX rozpoczynającymi się znakiem: (SHIFT @)
    :SETMO .sekcja, tryb [.sekcja,tryb] — informuje system operacyjny Amstrada w jakim trybie ma wyświetlać daną sekcję. Jednym rozkazem można nadać tryby jednej lub wielu sekcjom.
    :SMODE .tryb — służy do pisania po ekranie, informuje system w jakim trybie będziemy teraz wyprowadzać dane na ekran. Działanie tego rozkazu jest analogiczne jak rozkazu MODE z tym, że nie czyści ekranu. Używanie rozkazu MODE mija się z celem albowiem tryb ustawiony tym rozkazem zostanie zmieniany przy najbliższym przerwaniu.
    :NORMAL ,tryb — powrót do normalnego, całoekrano- wego trybu pracy. Wskazane jest użycie tego rozkazu przed pierwszym użyciem rozkazu :SETMO.
    Program utrzymując ekran w kilku trybach używa przerwań, które są blokowane podczas operacji na dysku lub taśmie. Nie uzyskamy dobrych rezultatów próbując współpracować z pamięciami zewnętrznymi mając podzielony ekran.
    Nie należy również dopuszczać do wysuwu ekranu (scroll), który zaburza synchronizację zmiany trybu pracy podczas przechodzenia pomiędzy sekcjami.
    Załączony program demonstracyjny ułatwia zrozumienie sposobu użycia nowych rozkazów BASIC-a.
    Na podstawie Popular Computing Weekly
     

    Autor listingu: Jarosław Borełowski

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Pociag

    Stoi na stacji lokomotywa... a za nią wagony towarowe, które trzeba załadować czekającymi w magazynach skrzyniami. Maszynista, Kubuś Literka siedzi w parowozie i czeka, aż wszystkie wagony zostaną zapełnione..

    Pociąg składa się zawsze z dwóch wagonów ale mogą one być bardzo różne — długie i krótkie, wysokie i niskie. Za każdym razem trzeba więc dokładnie policzyć ile pakunków pomieszczą. Skrzynie zgromadzone są w pięciu magazynach. W pierwszym jest tylko jedna, w drugim i trzecim po dwie, w czwartym pięć a w szóstym aż dziesięć skrzyń. Jest jednak pewna trudność. Załadowując pociąg musimy opróżniać całe magazyny. Na przykład z magazynu piątego trzeba wziąć 10 skrzynek i ani jednej mnie|. Oczywiście możemy też — jeśli tak nam będzie pasowało — nie brać nic z tego magazynu.
    Jeżeli obliczymy, że w jednym wagoniku zmieszczą się cztery skrzynki a w drugim trzy, to będziemy się starali tak wybrać ma- gazyny, aby w sumie było w nich siedem skrzyń. W tym przypadku będą to magazyny drugi lub trzeci (2 skrzynki) oraz czwarty (5 skrzyń).
    Gdy prawidłowo wybierzemy magazyny, to znaczy liczba skrzyń znajdujących się w nich będzie dokładnie równa liczbie miejsc na wagonach, wówczas pociąg z ładunkiem odjedzie, a na peronie pojawi się następny skład. Jeśli jednak skrzynek będzie zbyt dużo, pociąg nie ruszy się z miejsca a my — za karę — dostaniemy inne wagony do załadunku.
    Zastanówmy się teraz, czy może się zdarzyć, że nie będziemy mogli załadować pociągu? Największy wagon może pomieścić 9 skrzyń a więc w dwóch takich wagonach należy umieścić 18 pakunków. To największa ich liczba jaka może w naszej zabawie wystąpić. We wszystkich magazynach mamy w sumie 20 skrzynek, a więc możemy być spokojni, ze towaru nie zabraknie. Czy jednak każdą liczbę (nie większą niż 18) będziemy mogli przedstawić jako sumę iczb pakunków w poszczególnych magazynach? Przerwijcie na chwilę czytanie i spróbujcie to sprawdzić. .
    No i co?

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Weryfikator V.2 dla CPC 6128

    Wszystkie redakcje pism poświęconych problematyce mikrokomputerowej zasypywane sa listami czytelników piszących mniej więcej tak: ..... przepisałem program drukowany w ostatnim numerze Waszego pisma i, niestety, mimo wielokrotnych prób i sprawdzania wydruku program nadal nie da sie uruchomić. Chyba jest bład w wydruku...”.

    Redakcje, współpracujące z odpowiedzialnymi autorami wiedzą, że nie jest możliwe, by błąd tkwił w wydruku sprawdzonego i uruchamianego wielokrotnie programu, lecz przekonanie zdesperowanego czytelnika o tym, że to on wprowadził błędy przy przepisywaniu, jest prawie niemożliwe. Oczywiście można wymagać od autorów wprowadzania np. sumy kontrolnej i programów (podprogramów) obsługi błędów, jednak zabieg takie prowadzą głównie do kontoli danych w liniach DATA i to dopiero poczas uruchamiania programów. Proponowany dzisiaj WERYFIKATOR jest programem stosowanym przez francuskie pismo Amstrad Magazine i zachodnioniemieckie CPC Schneider International, umożliwiającym kontrolę wprowadzanych linii programu „na bieżąco”, niezależnie od tego czy są to linie DATA, czy linie zawierające słowa kluczowe lub komentarze. Każdy znak w linii „sumowany” jest z następnym i w momencie wprowadzania linii do pamięci (klawisz RETURN lub ENTER) generowana jest suma konrolna ujęta w nawiasy kwadratowe. Przy przyjętym przez te pisma drukowaniem programów łącznie z sumami kontrolnym podawanymi dla każdej linii możliwa jest natychmiastowa kontrola poprawności wprowadzania kolejnych linii przez porównanie sumy kontrolnej wydruku i sumy kontrolnej linii wpisywanej przez użytkownika.”
    Warto więc po raz ostatni skupić się i przepisać DOKŁADNIE podany program, ponieważ przy następnych wydrukach będę już podawał sumy kontrolne. Prawidłowo wpisany program po uruchomieniu oferuje cztery rozkazy: | ON/uaktywniony od razu w linii 180, j OFF — wyłączający weryfikator, | CHECK.2 — odpowiadający komendzie LIST ale z wyświetlaniem sumy kontrolnej i ] CHECK.8 pozwalający na uzyskanie wydruku linii programu na drukarce z podawaniem sumy kontrolnej. Pc uruchomieniu weryfikatora można przystąpić do przepisywania ineresu- jących nas programów pod warunkiem, że ich wydruk został wykonany również przy użyciu WERYFIKATORA. Posiadacze CPC 464 i 664 powinni zmienić niektóre linie DATA zgodnie z dołączonym wykazem. Niecierpliwi mogą sprawdzić działanie programu wpisując dowolne linie lub rozkazy w trybie bezpośrednim. Po każdym wciśnięciu klawisza RETURN lub ENTER powinna się pojawić liczba w nawiasach kwadratowych. Cierpliwych zapraszam za miesiąc.


    Na podstawie Amstrad/Schneider 1/81
     

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • CPC Dump

     Wizja nadchodzącego, jak zwykle pechowego trzynastego odcinka cyklu sprawiła, że w autorze obudziło się sumienie i postanowił nie męczyć już dłużej czytelników widokiem monotonnych tabelek, wypełniających cenna przestrzeń Klanu Amstrad-Schneider. Jednakże sumienie nie zadowoliło się samym postanowieniem i zażądało pokuty, w ramach której zobligowało autora do odpowiedzi na dwa pytania: „po co to wszystko było drukowane?” i „co z tego ma Czytelnik?”. Kończąc cykl, skruszony autor odpowiada...

     
    Dokładna znajomość systemu operacyjnego mikrokomputera pozwala nie tylko na oszacowanie jego możliwości, ale bardziej zaawansowanym użytkownikom umożliwia przystosowanie sprzętu do konkretnych i indywidualnych wymogów m.in. poprzez modyfikację lub rozbudowę procedur systemowych. Jednakże działalność taka jest możliwa tylko wtedy, gdy dysponuje się listą procedur i opisem ich działania... a także potrafi się programować w języku maszynowym.
    Zamiarem autora nie było prowadzenie kursu programowania lecz dostarczenie niezbędnej dokumentacji. Wprawdzie niektóre procedury mogą być wywoływane bezpośrednio z poziomu BASIC-a i znacznie upraszczają pisanie programów (np. CALL & BBBA jest odpowiednikiem ciągu rozkazów: PAPER 0:PEN 1:ORIGIN 0,0: WINDOW #0,0, 639,0,399 lub CALL &BB18 zastąpi ciąg A$=””:WHILE A$=” „:A$=INKEY$:WEND) lecz większość procedur może być uaktywniana dopiero po ustaleniu pewnych stanów wejściowych w wymaganych dla danej procedury rejestrach. Taka sytuacja wymusza wprawdzie na programiście znajomość sposobu działania procedur systemu, ale jednocześnie pozwala na wprowadzanie pożądanych zmian.
    Zacznijmy od najprostszych przykładów:
    Procedura Screen Mode Set (ustalenie trybu pracy ekranu monitora) &BC0E w momencie uruchomienia odczytuje informację z rejestru A (akumulatora), mówiącą o wybranym trybie pracy. Pisząc program w języku maszynowym trzeba przed wywołaniem procedury wpisać do akumulatora 0,1 lub 2. Dla trybu MODE 2 wygląda to następująco: kod hex
     
    kod hexa mnemonik
    3E02 LD A,2 Wprowadź 2 do rej. A
    CD0EBC CALL BC0E wywołaj procedurę Screen Mode Set
    C9 RET powrót do programu
     
    Procedura drukowania znaku na ekranie &BB5A wymaga podania w rejestrze A kodu znaku, ale jednak wcześniej trzeba również określić tryb pracy ekranu i pozycję na której ma być ten znak drukowany, czyli podać parametry wejściowe wymagane w procedurach odpowiednio & BC0E i & BB75 (patrz odcinek 7 i 4 cyklu). Wygląda to tak:
     
    3E02 LD A,2 wprowadź 2 do akumulatora
    CD0EBC CALL BC0EH wywołaj procedurę SMS
    260A LD H,10 wprowadź numer kolumny (10)
    2E10 LD L,16 wprowadź numer wiersza (16)
    CD75BB CALL BB75H wywołaj procedurę &BB75 (pozycja)
    3E42 LD A,66 wprowadź kod litery B do rej. A
    CD5ABB CALL BB5AH wyświetl znak B na ekranie
    C9 RET wróć do programu głównego
     
    Modyfikacje procedur wymagają oczywiście bardziej skomplikowanych zabiegów, jednak ze względu na charakter cyklu i szczupłość miejsca podam jedynie mechanizm przeprowadzania modyfikacji. Załóżmy, że nie wystarcza nam 7-bitowy sprzęg w CPC, ponieważ chcemy wykorzystywać pełne możliwości przyłączanej do niego drukarki. Jednocześnie wiemy, iż drukarka ma możliwość ustawienia 8-go bitu po odebraniu określonego znaku lub sekwencji znaków (w przypadku DMP 2000 jest to ESC „>” i skasowania 8-go bitu po odebraniu innej sekwencji (ESC „=”). Mamy również świadomość, że procedura wywoływana przez & BD2B ograniczona jest właśnie 7-bitowym sprzęgiem. Rozwiązanie problemu polega na napisaniu programu, który najpierw sprawdzi, czy wysyłany do drukarki znak ma ustawiony ósmy bit. Jeśli znak ma ósmy bit = 0 to powinien być od razu przesłany do drukarki. W przeciwnym przypadku najpierw powinien być przesłany ESC „>”, następnie znak i ESC „ = „. Tak napisany program trzeba ulokować w pamięci RAM poza obszarem dostępnym dla BASICa (MEMORY HIMEM-długość programu) dołączając wcześniej do niego skopiowane z adresów & BD2B, &BD2C i &BD2D instrukcje skoku do precedury wydruku znaku w pamięci ROM. Teraz wystarczy wpisać pod adres &BD2B kod C3 (skok pod dwubajtowy adres), pod &BD2C młodszy bajt a pod &BD2D starszy bajt adresu początku naszego programu i po uruchomieniu drukować aż do chr$(225). Czytelników oczekujących gotowego rozwiązania informuję, że programy takie były już publikowane w naszej prasie (o ile dobrze pamiętam pionierem był pan Wojciech Wojtanowski z programem opublikowanym w Przeglądzie Technicznym).
    Namawiając do dalszej samodzielnej pracy podaję dwa krótkie programy umożliwiające odczyt na ekranie monitora zawartości pamięci ROM (dolnej) w postaci kodów ASCI i heksadecymalnym. Niewielkie zmiany programu pozwolą również na odczyt zawartości pamięci ROM górnej.W tym celu należy: 
     
    w linii   10 — wpisać ...ROM górny... &C000 do &FFFF 
    w linii   40 — wpisać ... górnej...
    w linii 110 — zamiast cd,06,bd wpisać cd,00,bd i zamiast 00,00,11 wpisać 00,c0,11
    w linii 140 — zamiast (i-6000) wpisać i+6000).
     
    Zachęcam do modyfikacji programów w celu uzyskania możliwości odczytu ograniczonej przestrzeni adresowej (np. zajmowanej tylko przez jedną procedurę) i organizacji wydruku na drukarce. Finis coronat opus!

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    2
    Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnością
  • Catalog

    Z pewnością często mieliście ochotę zrobić porządek na swoich kasetach z programami i równie często rezygnowaliście z tego mając w perspektywie pracowite spisywanie z ekranu danych uzyskanych przez komendę CAT. Jak dobrze byłoby zwalić te robotę na komputer. Mógłby on wtedy sam przejrzeć kasetę, sprawdzić, czy jakieś zbiory nie powtarzają się, wydrukować spis na drukarce. Niestety, CAT wysyła wyniki tylko na ekran i odzyskanie ich stamtąd wymaga wiele wysiłku. Komendy tej nie można również przerwać programowo a jedynie klawiszem ESC.

     
    Równie często ambitniejsi użytkownicy Amstradów i Schneiderów usiłują uzyskać dane o długości programu, miejscu jego ładowania, czy adresie autostartu. Dane te są niezbędne na przykład do przenoszenia programów maszynowych z kasety na dyskietkę. I tutaj komenda CAT nie zdaje się na nic.
    Zamieszczony obok listing programu w BASIC-u umożliwia dodanie do systemu nowej komendy RSX o nazwie CATALOG, która rozwiązuje nasze problemy.
    Po uruchomieniu programu, jeżeli nie pojawi się na ekranie żaden komunikat o błędzie w linii DATA (spowodowanym błędnym przepisaniem) w obszar pamięci od adresu &A400 zostanie załadowany i zainicjowany program maszynowy komendy CATALOG. Program w BASIC-u można teraz skasować (przez NEW).
    Wywołanie komendy ma następującą postać:
    I CATALOG, @a$, @a1%, @a2%, @a3%, @4%, @a5%, @a6%, @a7% gdzie zmienne a$, a1%, a2%... a7% muszą mieć uprzednio nadane wartości (w przeciwnym przypadku pojawi się komunikat „Improper argument”). Ich nazwy nie muszą być oczywiście takie jak wyżej. Ważne są jednak typy: pierwsza musi być łańcuchowa — pozostałe całkowite. Symbol „@” oznacza, że do komendy przekazywany jest adres zmiennej, a nie jej wartość. Wartości nadane zmiennym całkowitym przed wywołaniem są obojętne. Natomiast a$ powinien być przypisany łańcuch zawierający dowolne znaki, lecz o długości co najmniej 16. Komenda CATALOG uruchamia silnik magnetofonu i wczytuje nagłówek najbliższego bloku (trzeba więc pamiętać o wciśnięciu klawisza PLAY przed wywołaniem). Dane o bloku kopiowane są do parametrów w następujący sposób: 
     
    a$    — zawiera nazwę zbioru, do którego należy blok: jeżeli wartość a$ przed wywołaniem była łańcuchem krótszym niż długość nazwy, to nadmiarowe znaki zostaną obcięte; jeżeli łańcuch był dłuższy niż nazwa, to pozostałe miejsca zostaną zapełnione spacjami a1% — zawiera numer bloku 
    a2% — zawiera typ zbioru: 0 — BASIC, 1 — BASIC chroniony (SAVE „nazwa”, P), 2 — program w języku maszynowym, 22 — zbiór ASCII
    a3% — adres ładowania bloku; adres ładowania pierwszego bloku w zbiorze jest zarazem adresem ładowania całego zbioru (dla ASCII = 0, dla Basica = 368)
    a4% — długość bloku; dla wszystkich bloków z wyjątkiem ostatniego prawie zawsze 2048 = 2 KB 
    a5% — długość całego zbioru, do którego należy blok 
    a6% — adres autostartu; od tego adresu rozpocznie się wykonywanie programu maszynowego załadowanego komendą RUN „nazwa” 
    a7% — znaczniki bloku: a7% zawiera wartość całkowitą dwubąjtową: starszy bajt różny od zera oznacza pierwszy blok zbioru, młodszy bajt różny od zera — ostatni blok; wartość tę najlepiej obserwować jako HEX$ (a7%,4) dwie pierwsze cyfry to starszy bajt, dwie pozostałe — młodszy (cyfry hex) 
     

    Autor listingu: Sergiusz Wolicki

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    2
    Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnością
  • Uczymy mówić CPC 464/664/6128

    Program jest przykładem nietypowego zastosowania mikrokomputera, który w tym przypadku pełni role magnetofonu cyfrowego.

    Komputer może zapisać dźwięk z magnetofonu podłączonego do wejścia magnetofonowego (TAPE PORT) pracując jako 1-bitowy przetwornik analogowo cyfrowy, a następnie odtworzyć go korzystając z wbudowanego generatora dźwięku. Program wprowadza następujące rozkazy RSX:
    I RECORD, adres, długość — powoduje odczytanie dźwięku z magnetofonu i zapisanie jego cyfrowej reprezentacji do bufora pamięci o podanej długości (długość), począwszy od adresu określonego wartością adres.
    I PLAY, adres, długość — powoduje odtworzenie dźwięku, którego reprezentacja cyfrowa mieści się w buforze pamięci o parametrach adres, długość.
    I SPEED, szybkość — powoduje ustawienie zadanej szybkości zapisu i odczytu dźwięku.
    Eksperymenty z programem dowodzą, jak bardzo „pamięciochłonny” jest cyfrowy zapis dźwięku. Przy średniej prędkości w buforze 30KB mieści się zaledwie około 15 sekund nagrania. Najciekawsze efekty uzyskuje się zapisując nagrane wcześniej na taśmę krótkie wyrazy np. mama, tata itp.
    Właściwy program napisany w kodzie maszynowym jest ładowany przy pomocy podprogramu rozpoczynającego się od linii 300. Podprogram ten sprawdza poprawność danych umieszczonych w liniach DATA.
    Linie 1000-2040 zawierają program demonstrujący użycie rozkazów RSX — I PLAY, I RECORD, I SPEED.


    Od redakcji
    Program w wersji nadesłanej do redakcji posiadał możliwość odczytywania dźwięku z magnetofonu i odtwarzania „nagrania”, a także umożliwiał regulację prędkości odczytywania i odtwarzania. Postanowiliśmy uzupełnić możliwość programu o jeszcze jedną opcję — możliwość utrwalania cyfrowego zapisu dźwięku na dysku bądź taśmie magnetofonowej. Pozwala to na stworzenie biblioteki dźwięków, z które] w każdej chwili (w przypadku korzystania ze stacji dysków w ciągu kilku sekund) można wybrać poszukiwany efekt.
    (rp)

    Autor listingu: W. Szczęśniak

    Listing nadesłał: Zbyniu [Speccy.pl]

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Kubuś na Dzikim Zachodzie

    Nasz przyjaciel Kubuś, niestrudzony globtroter i poszukiwacz przygód trafił tym razem na Dziki Zachód. Wkrótce został szeryfem w pewnym miasteczku i — jakże by inaczej — czeka go pojedynek z groźnym Bilem Pixelem.

    Jest samo południe. Przeciwnicy wolnym krokiem zbliżają się do siebie. Wzrokiem oceniają odległość. Strzelać teraz, czy poczekać, aż strzał będzie pewniejszy. W rewolwerach mają po trzy pociski. Bil strzela pierwszy, na szczęście niecelnie. Kubuś robi jeszcze dwa kroki i strzela również. Udało się, trafił w pas z rewolwerami. Bezbronny Bil podnosi ręce do góry, poddaje się.

    JAK URUCHOMIĆ NA EMULATORZE

    1. Pobierz np. WinApe, uruchom...
    2. Włóż dyskietkę z rozpakowanego archiwum (File->Drive A->Insert Disc Image)
    3. Wpisz run"kubus"
    4. Gra załaduje się i uruchomi

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Kubuś tańczy break dance

    Pamiętacie tańczącego Kubusia Literkę z pierwszego numeru "Bajtka" z 1986 roku? Dzisiaj wrócimy do tego pomysłu. Tym razem jednak nasz przyjaciel Kubuś będzie wykonywał znacznie bardziej skomplikowane ewolucje.

    Zapewne nie wszyscy wiecie, że Kubuś ma brata bliźniaka — Barnabę, który jest znakomitym tancerzem. Kubuś także postanowił nauczyć się tańczyć. Poprosił więc brata o udzielenie mu kilku lekcji.
    Na ekranie zobaczymy więc Barnabę i Kubusia. Gdy Barnaba wykona jakiś ruch, Kubuś będzie go musiał — najszybciej jak tylko może — powtórzyć. Oczywiście z Waszą pomocą.
     

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Firma

    Zostałeś dyrektorem nowej firmy. Masz do dyspozycji jedną fabrykę i 50 tys. dolarów kapitału zakładowego. Możesz doprowadzić swoją firmę do rozkwitu, jeśli okażesz się dobrym biznesmenem, albo też stracić pracę, gdy spowodujesz bankructwo przedsiębiorstwa.

    Gry towarzyskie takie jak „Bankrut”, „Giełda”, „Tranzyt” itp., polegające na modelowaniu mechanizmów wielkiego biznesu, cieszą się od lat powodzeniem nie tylko w naszym kraju. Z jednej strony pozwalają nam wczuć się w rolę rekinów finansjery, dysponujących milionowymi fortunami, a z drugiej, stanowią znakomite pole do wypróbowania umiejętności strategicznego myślenia.
    Autor programu „Firma” wykorzystał ten pomysł, uzupełnił o własne przemyślenia, i tak w efekcie powstała znakomita gra komputerowa.
    Gra przeznaczona jest w zasadzie dla jednej osoby, która w ciągu 24 miesięcy (oczywiście komputerowe miesiące upływają znacznie szybciej niż w życiu) ma zarobić możliwie najwięcej pieniędzy. Zarabianie pieniędzy wymaga oczywiście inwestycji Trzeba kupować półfabrykaty, które w fabrykach przerabiane są na gotowe wyroby, budować nowe fabryki, płacić za transport. Stosunkowo najmniej zachodu wymaga spekulacja na giełdzie, lecz — z drugiej strony — jest to bardzo niepewny interes.
    Można także wziąć kredyt z banku Należy jednak pamiętać, że po sześciu miesiącach, cały kredyt (wraz z odsetkami) trzeba zwrócić. Jeśli kapitał zakładowy jest niższy niż należna płatność, prowadzi to nieuchronnie do bankructwa.
     

    Autor listingu: Tomasz Nowicki

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Kasjer

    Michał Czupryński z Brodnicy przysłał do naszej redakcji kilka różnych programów własnego pomysłu. Oto jeden z nich. Służy on do obliczania liczby banknotów i monet, które składają się na podaną sumę.

    Program działa najzupełniej poprawnie, a jednak warto się zastanowić, czy nie dałoby się zapisać go w nieco krótszej formie i w sposób bardziej elegancki.

    Autor listingu: Michał Czupryński

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Wilk, Koza i Kapusta

    Pewien przewoźnik stanął przed bardzo trudnym zadaniem. Ma przeprawić na drugi brzeg rzeki kłopotliwy ładunek — wilka, kozę i kapustę. Trudność polega na tym, że nie można pozostawić bez opieki wilka z kozą ani też kozy z kapustą, gdyż w pierwszym przypadku wilk pożre kozę, a w drugim, koza dobierze się do kapusty. Łódź przewoźnika jest tak mała, że może — prócz niego samego — pomieścić tylko jedną rzecz. Jak więc rozwiązać ten problem?
    Pomysł tego klasycznego i starego jak świat zadania logicznego można wykorzystać do napisania gry komputerowej. Ponieważ zasadę juz znamy, możemy przystąpić do pisania programu. Rozpoczniemy od tego, jak wyobrażamy sobie jego działanie na zewnątrz, to znaczy, co będzie widział grający. Popatrzmy na rysunek ekranu. Pionowo przez jego środek płynie rzeka. Po lewej i prawej stronie znajdują się „pasażerowie” (na początku gry wszyscy są na lewym brzegu rzeki!, łódka — w zależności od sytuacji — może być przycumowana do prawego, bądź lewego brzegu. Poniżej znajduje się „menu”, czyli zestaw możliwych ruchów, które wybieramy naciskając klawisz z cyfrą odpowiadającą „pasażerowi”
     

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Drukarka?

    Pisząc program przeznaczony dlaz wykłych ludzi a nie dla informatyków, chcielibyśmy by był on odporny na nieumiejętną obsługę. Powinniśmy więc starać się, aby wszystkie błędy sygnalizowane były w odpowiedni sposób przez program, a nie przez interpreter BASIC-a. Nietrudno wyobrazić sobie reakcję laika na komunikat „Improper argument" lub „Syntax error". Dobry program wypisze w takim wypadku dokładne objaśnienie błędu umożliwiając jednocześnie powtórzenie źle wprowadzonego polecenia.

    Autor listingu: Sergiusz Wolicki

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Ósemka - Tylko dla Przedszkolaków

    Ta gra wymaga zręczności, precyzji i pełnej koncentracji. Rzucamy kulą w kierunku planszy, kula powinna zatrzymać się na polu oznaczonym jak największą liczbą. Dwa pierwsze pola mają wartość 1, trzy następne — 2, kolejne dwa— 4 i wreszcie ostatnie — 8. Umieścić kulę w jednym z pierwszych pól nie jest trudno, gorzej, gdy celujemy w „ósemkę", bo gdy kula potoczy się choć o jedno pole dalej wylatuje poza planszę.
     

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Waga - tylko dla przedszkolaków

    Macie młodsze rodzeństwo? Jeśli nawet nie macie, to pewnie znajdziecie wśród swoich kolegów takich, którzy rozpoczynają naukę liczenia. Właśnie dla nich przeznaczony jest ten program..

    Czytaliście zapewne wiele razy — nie tylko w "Bajtku" — o programach dydaktycznych. Bywają one bardzo rozmaite, ale mają jedną wspólną cechę — korzystając z nich, czegoś się uczymy. A jeśli w dodatku program jest zabawny, to tym lepiej. Nasz program będzie służył do ćwiczenia się w umiejętności liczenia, konkretnie odejmowania na poziomie przedszkolaków (tych prawdziwych, a nie komputerowych). Myślę, że jest on nawet trochę zabawny.
    Czy można zważyć liczbę? Chyba raczej nie bardzo, bo czy ktoś miał w ręce np. siódemkę albo dziewiątkę... Jak więc takie coś położyć na wadze? Pofantazjujmy: jeśli by się jednak dało ważyć liczby, to dziewiątka powinna być cięższa od siódemki, a dwie dwójki powinny mieć ciężar jednej czwórki. Jeśli od ósemki odejmiemy piątkę to różnica powinna mieć wagę trójki. Śmieszne ale... logiczne. Prawda?

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Kubuś Ratuje Królewnę

    Pamiętacie przygody Kubusia w Tajemniczym Zamku z numeru 8/86 „Bajtka"? Jeden z moich przyjaciół - przedszkolaków powiedział mi wtedy: „to fajna gra, ale można w nią grać tylko raz: potem już zawsze wiadomo co robić". To prawda, w tym przypadku chyba większą frajdą było wymyślanie i pisanie programu (świadczy o tym cała masa listów z podobnym grami) niż sama zabawa. Nasz dzisiejszy program będzie — mam nadzieję — ciekawszy dla grającego.
    Wyspa Smoka w naszym programie to coś w rodzaiu wielkiej szachownicy o wymiarach 40x40 kratek. Po niektórych polach Kubuś może poruszać się swobodnie, na inne, z kolei nie może we|ść — to np. skały, mury. Komputer przestawia (w sposób dla nas niewidoczny) postacie na tej szachownicy i sprawdza ich wzajemne położenie.

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Mikrusek - Kolędy, Słowa

    Prezentujemy propozycje Grzegorza Rowińskiego (lat 11) z Warszawy.
    Grzegorz przysłał dwa programy napisane na mikrokomputerze Amstrad. Pierwszy z nich (po prawej) jest programem muzycznym i daje nam możliwość wysłuchania czterech kolęd. Nie byłoby w tym pewnie nic ciekawego — program wykorzystuje zaledwie ułamek możliwości muzycznych Amstrada — gdyby nie fakt, że Grzegorz bardzo sprytnie wykorzystał linie DATA z podobnego programu na Spectrum.
    Programowanie dźwięku w Spectrum i Amstra-dzie odbywa się na całkowicie różnych zasadach. Okazuje się jednak, że komputer w rękach sprytnego programisty może sobie poradzić także z takim kłopotem. Tajemnica tkwi w liniach 70 i 80, w których następuje tłumaczenie muzycznego zapisu Spectrum na zrozumiały dla Amstrada.
    Drugi program Grzegorza (poniżej) służy do sortowania — układania w kolejności alfabetycznej dowolnych słów. Co prawda przyjęty algorytm sortowania wymaga wykonania dużej liczby operacji i skutkiem tego, sortowanie większych zbiorów trwa dość długo. Niemniej jednak program działa poprawnie i może być przydatny chociażby ze względu na swą prostotę. Przede wszystkim zaś jest to program napisany samodzielnie.

    Bajtek 3/1987 - Słowa (Grzegorz Rowiński, 1986)
    Bajtek 3/1987 Koleda - Mikrusek (Grzegorz Rowiński, 1986)

    Autor listingu: Grzegorz Rowiński

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Węże

    Pomysł stary jak gry telewizyjne — realizacja nowa. Zagrać można z kolegą lub z komputerem. Zasada jest prosta: odetnij mu drogę.

    Listing posiada przynajmniej jeden błąd do poprawy dla cierpliwych - pierwsza potyczka z komputerem kończy się wygraną Amstrada.Nietestowany tryb dwóch graczy.
     

    Autor listingu: Sergiusz Wolicki

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Bierki

    Gra w bierki jest stara jak świat. Zasada jest prosta: grający biorą na przemian przedmioty z jednej kupki.  Trzeba zabrać zawsze co najmniej jeden przedmiot.  Maksymalna liczba jednocześnie zabieranych przedmiotów zależy od umowy. Wygrywa ten, kto weźmie ostatni przedmiot.

    Spróbujmy nauczyć komputer gry w bierki, ale w nieco trudniejszej wersji. Rozłóżmy 12 patyczków na trzy kupki. W pierwszej kupce niech będzie 5 patyczków, w drugiej — 4, a w trzeciej trzy. W naszej grze można wziąć jednocześnie dowolną liczbę patyczków, ale tylko z jednej kupki. Oczywiście za każdym razem trzeba wziąć choć jedną. Kto weźmie ostatni patyczek (lub kilka ostatnich) wygrywa.
     

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Circle

    Zamieszczony poniżej program służy do rozszerzenia BASIC-a Amstrada o dodatkowa komendę CIRCLE.
    Komendę tę wywołuje się przez pionową kreskę SHIFT + @ tak, jak np. instrukcje obsługi stacji dysków. Składnia instrukcji jest następująca:
    CIRCLE,x,y,r x,y
    - współrzędne środka okręgu
    r - promień okręgu
    Podobnie jak w Spectrum komenda ta rysuje okrąg o zadanych parametrach, nie zmienia jednak pozycji ostatniego narysowanego ounktu. Współrzędne środka okręgu podlegają tym samym prawom, co współrzędne instrukcji PLOT i DRAW (tzn. ten sam zakres, ORIGIN).
    Algorytm tej komendy w BASIC-u podajemy obok. Loader w BASIC-u jest tak na pisany, że zapewnia relokowalność programu tzn. można umieścić kod maszynowy pod różnymi adresami w pamięci. Adres początkowy należy umieścić w linii 260 przypisując go zmiennej a. Spośród linii 370-390 należy wybrać tę, która odpowiada posiadanemu modelowi Amstrafa Schneidera. W liniach DATA ukryte są sumy kontrolne zapewniające kontrolę poprawności wpisywania programu. Jeżeli zdecydowaliśmy się na jeden adres początkowy, to po uruchomieniu loadera możemy podać komendę
    SAVE "CIRCLE",b,a,495
    i potem ładować komendę do pa mięci rozkazami
    MEMORY adr-1:LOAD "CIRCLE"
    CALL adr
    gdzie adr oznacza ustalony adres początkowy - dawna wartość zmiennej a.
     

    Autor listingu: Sergiusz Wolicki

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    1
    Listing przepisany - zawiera błędy, nieuruchamia się na emulatorach lub realnej platformie
  • Ruchome Literki

    Kilka dodatkowych linii na początku programu pozwoli na interesującą prezentacje jego tytułu i autora.
    Wystarczy w tym celu, począwszy od linii 110, napisać odpowiedni tekst a$, który będzie wyświetlany w linii y ekranu. Podprogram w liniach od 30 do 100 realizuje ruch liter w następujący sposób:
    Dla zmieniającej się wartości i tworzony jest z łańcucha tekstowego a$ jednoznakowy łańcuch b$=mid$(a$,i,1), wyświetlany następnie na pozycji j,y (linia 60) i kasowany spacją na poprzedniej jego pozycji j + 1,y (linia 70). Linia 50 określa kolumnę j, w której ma być wyświetlony, znak począwszy od prawej strony ekranu. Ruch znaku w lewo zapewnia zamknięcie pętli w linii 80. Jednocześnie w linii 50 człon 20-len(a$)/2 + 1 lokalizuje napis w środku ekranu. Linia 90 wprowadza małe opóźnienie w pojawianiu się kolejnych liter napisu. Możliwe jest rów nież korzystanie z MOD 0 i MOD 2. Należy w tym celu zmodyfikować linię 20, wpisując zamiast MODE 1 inny wybrany tryb pracy. W linii 50 trzeba również uwzględnić ilość kolumn ekranu zmieniając odpowiednio: przy MOD 0 39 na 19 i 20 na 10 przy MOD 2 39 na 79 i 20 na 40
     

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Choinka

    Święta za pasem, najwyższy czas zabrać się za ubieranie choinki. Zanim jednak stanie w waszym domu prawdziwa choinka, warto trochę potrenować. Oczywiście pomoże wam komputer.
    Na naszej komputerowej choince zawieszać będziemy tylko bombki i gwiazdki. Nie będzie to jednak takie łatwe. Otóż bombka jest dwa razy cięższa niż gwiazdka i — aby nasza choinka nie przewróciła się — musimy powiesić ją na gałązce dwa razy dalej.
    W fizyce nazywa się to zasadą dźwigni dwustronnej, lub — jeszcze mądrzej — równowagą momentów sił. Prawa te mówią, że każdy ciężar możemy zrównoważyć na huśtawce ciężarem o połowę mniejszym, jeśli umieścimy go dwa razy dalej od środka. Na tym właśnie będzie polegała nasza zabawa. Gwiazdka musi być zawieszona na gałązce o połowę bliżej pnia niż bombka. Jeśli się pomylimy, choinka przewróci się.
    Bądźcie więc ostrożni!
     

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Biorytmy

    Jeśli czujesz się fatalnie, łamie cie w kościach a głowa spuchła ci jak bania, to z pewnością dlatego, że krzywa fizyczna twojego cyklu biologicznego przecięła się z osią.
    Pokłóciłeś się z dziewczyną i pobiłeś kolegę z pracy - to emocjonalny dzień krytyczny. Dostałeś cztery lufy w ciągu trzech lekcji, wiadomo, kryzys intelektualny. To więcej niż pewne! Chyba, że... w pierwszym przypadku łapie cię grypa, w drugim - mucha usiadła ci na nosie, a w trzecim - bez reszty pochłonęło cię błogie lenistwo.
    Co by jednak nie mówić o biorytmach - niezależnie, czy się w nie wierzy, czy też nie - mają one jedną nieocenioną zaletę: niezmiernie rzadko zdarza się, że jesteśmy sprawni pod każdym względem. A więc gdy coś nam nie wyjdzie, np. oblejemy egzamin, wystarczy obliczyć sobie biorytm i mamy już spokojne sumienie. Bo przecież, choć intelektualnie stoimy zupełnie nieźle, to fizycznie... lepiej nie mówić i w dodatku emocjonalnie też spadamy. Wszystko przez te nerwy!
    Myślę, że przekonałem najbardziej nawet sceptycznych czytelników o użyteczności programu do obliczania biorytmów, tym bardziej, że jest to program, który może działać na każdym mikrokomputerze. Jedynie posiadacze Spectrum będą musieli zmienić wszystkie oznaczenia zmiennych łańcuchowych na jednoliterowe, ale to przecież drobnostka.
    Działanie programu jest proste i nie wymaga specjalnego komentarza. Tym bardziej, że program komentuje się sam, poprzez oznaczenia zmiennych.
    Najpierw komputer liczy ilość dni, które przeżył badany, następnie oblicza reszty z dzielenia ilości dni przez długości cykli i na tej podstawie określa jego fizyczną, intelektualną i emocjonalną kondycję w danym dniu. Teraz tylko dobrać odpowiedni komentarz i sprawdzamy co będzie jutro.
    A tak przedstawiała się moja sytuacja w dni pisania tego programu. Jeśli więc coś będzie nie tak, sami widzicie, że nie jestem w najlepszej formie psychicznej...
    Roman Poznański

    Autor listingu: Roman Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Monitor - Pamięć pod lupą

    Podczas pracy na komputerze przydatna jest czasem możliwość „podglądania” zawartości pamięci lub jej modyfikacji. Wymagania takie spełnia przedstawiony tutaj prosty program, nazwany monitorem. Na podstawie Amstrad Magazine

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    2
    Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnością
  • Trochę ruchu - wędrujące litery

    Nagrodą za pracowite „wstukanie” programu będzie nie tylko ruchoma reklama „Bajtka”. Zmieniając tekst w liniach od 120 do 180 możemy również zareklamować własne umiejętności. Program wykorzystuje możliwość programowania układu scalonego 6845, czyli kontrolera ekranu w Amstradzie. Wysokość tekstu może być zmieniona od normalnego wymiaru znaku, a więc jednej linii aż do 16-tu linii (patrz końcowe cyfry w liniach DATA).

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Kubuś Telegrafista

    Mogłoby się wydawać, że w dobie łączności satelitarnej i komputerów, wielki wynalazek pana Morse'a, jego słynny alfabet, powinien trafić do lamusa. Okazuje się jednak, że nie nastąpi to tak prędko. Zasadę zna każde dziecko — grupy krótkich i długich sygnałów dźwiękowych zastępują litery. Kłopot tylko w tym, żeby nauczyć się rozumieć ten ciąg pisków. Nasz program służy właśnie do tego. Uczeń może wybrać sobie jedną z pięciu prędkości nadawania. Może również skorzystać ze ściągawki w postaci graficznego przedstawienia sygnałów (kropki i kreski) lub z niej zrezygnować. Komputer nadaje kolejno pięć losowo wybranych słów. Po każdym słowie zaczyna odliczać czas. Teraz odpytywany musi możliwie najszybciej napisać odczytane słowo i na koniec nacisnąć klucz spacji. Czasy poszczególnych odpowiedzi są sumowane, oczywiście za każdym razem komputer sprawdza prawidłowość odpowiedzi i wysyła na ekran odpowiedni komunikat. Za każdy błąd dolicza umowną ilość sekund. Po pięciu próbach następuje obliczenie punktów karnych i wydruk końcowego wyniku na ekranie. Egzamin skończony.

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    2
    Listing skorygowany - zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, jednak z organiczoną funkcjonalnością
  • Almanach Listingów dla Amstrad CPC

    Almanach listingów dla Amstrada CPC publikowanych w Bajtkach w roku 1986 przepisane i poprawione przez Zbynia.

    Autor listingu: różni

    Listing nadesłał: Zbyniu

    Język programu: brak danych

    Stan listingu:

    5
    Listing wzbogacony - uruchamia się na emulatorze lub realnej maszynie, przepisujący listing wzbogacił go o swoje rozwiązania
  • Test oczu i uszu

    Ten program sprawdzi czas Twojej reakcji na nieoczekiwanie pojawiający się znak na ekranie i sygnał dźwiękowy. Podobny jest do testów psychomotorycznych, którym poddawani sa kierowcy, piloci i kosmonauci.

    Autor listingu: Tomasz Pyć

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Muzyka Robota

    Jeśli umieścicie w swoim programie linie od 40 do 190 jako podprogram, możecie zilustrować muzycznie np. czołówkę (okładkę) zaprojektowanej gry. Należy wykorzystać przy tym instrukcje GOSUB i RETURN, a także odpowiednio do potrzeb przenumerować linie powyższego programu. Melodia łatwo „wpada w ucho"

    Autor listingu: Tomasz Pyć

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Alibaba

    Znacie bajkę o Alibabie i czterdziestu rozbójnikach? Znacie! A więc zabawmy się razem. Pamiętacie na pewno, w jaki sposób sprytni zbójcy strzegli swych skarbów. Mieli kryjówkę w skale, która otwierała się tylko na odpowiednie hasło. (Pamiętacie jakie?) Hasło znał tylko herszt bandy i tylko on — do czasu aż w całą sprawę nie wmieszał się jeszcze sprytniejszy Alibaba — mógł otworzyć skarbiec. A może wy także macie jakieś skarby do ukrycia, może na przykład jakiś specjalny program, którego nie chcecie pokazać kolegom. Jest na to sposób. Wystarczy umieścić przed waszym programem przedstawiony tutaj podprogram. Pyta on o hasło i przechodzi do wykonywania właściwego programu tylko w przypadku podania prawidłowej odpowiedzi.

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Jak odbezpieczyć program w BASICU

    BASIC komputerów Schneider i Amstrad posiada możliwość zapamiętania programu w formie zabezpieczonej przed listowaniem!(...) Aby uniknąć ponownego pisania programu spróbujemy go odbezpieczyć. Pomoże nam w tym krótka procedura w języku maszynowym zamieszczona obok. Ładuje się ona w pusty obszar RAM-u między zmiennymi systemowymi BASICU-u i systemu (B0C7-B0FF) i pozostaje tam nawet po użyciu klawiszy CTRL/SHIFT/ ESC.

    Autor listingu: Sergiusz Wolicki

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Jednoręki bandyta
    Nie wychodząc z domu i nie mając grosza przy duszy zagrasz z największym na świecie połykaczem pieniędzy zwanym, "jednorękim bandytą". Bywalcy kasyn twierdzą, że pociąganie za „rękę" tego automatu kończy się zazwyczaj zniknięciem zawartości Twojego portfela. A Ty nie stracisz ani centa (fakt, że również nic nie wygrasz pomińmy milczeniem; najważniejsza jest przecież sama gra). Wystarczy trochę dokładności i cierpliwości przy wprowadzaniu zamieszczonego obok programu.

    Autor listingu: O. Fercher, SW

    Listing nadesłał: Faust

    Język programu: brak danych

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Notesik

    Cześć Maluchy! Do dzisiaj wszystkie pisane przez nas programy służyły tylko do zabawy. Tym razem zabierzemy się za prawdziwy program użytkowy. Co prawda dość prosty, ale zawsze... Chyba każdy przedszkolak, który bawi się komputerem wie, co to jest baza danych. Jest to po prostu taki komputerowy notes, który sam - na twoje żądanie - odszukuje potrzebne ci informacje. Powiedzmy, że chcemy zrobić sobie taką bazę danych z numerami telefonów naszych kolegów.

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: brak danych

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Menu - Dysk

    Jeśli posiadasz wśród swoich dyskietek wiele takich na których nie zamierzasz dokonywać już zmian, to wygodnie będzie Ci umieścić na nich program "MENU DYSKU". Nie będziesz wtedy musiał za każdym razem pisać CAT, żeby zobaczyć jak nazywają się programy i potem wpisywać RUN "nazwa. Wystarczy, że podasz komputerowi rozkaz RUN "DYSK, a on sam wypisze Ci wszystkie nazwy i teraz będziesz mógł wybrać odpowiedni program przez naciśnięcie jednego klawisza. Po wpisaniu listingu musisz w linii 60 umieścić po DATA najpierw liczbę programów, które znajdują się na danej stronie dyskietki, a potem ich nazwy (bez rozszerzenia czyli trzech liter po kropce).

    Autor listingu: Tomasz Pyć

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • VarDump

    Załączony program tworzy nową komendę VARDUMP, która umożliwia wylistowanie nazw wszystkich zmiennych występujących w tworzonym przez nas programie. Lista taka znakomicie ułatwia wyszukiwanie „przekłamanych" zmiennych.

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Powiększanie napisów

    Prezentujemy krótki, lecz interesujący program pozwalający na powiększanie liter i znaków graficznych. Program wykorzystuje instrukcję SYMBOL AFTER 32, co pozwala na redefiniowanie wszystkich znaków. Zamiast linii 70, 80 i 85 można wpisać własne i ewentualnie przenumerować linię 90.

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Zegar dla Amstrada

    My wykorzystamy tę zaletę (Czytelnicy znający zasady pracy mikroprocesora wiedzą, że w celu zapewnienia w miarę dokładnej pracy zegara wykorzystywany jest mechanizm przerwań, czyli sprzętowego (zewnętrznego) wymuszania skoku do określonego adresu w pamięci komputera) do napisania własnego zegara, który będzie pracował niezależnie od aktualnie wykonywanych programów i będzie podawał czas w normalnej formie (czyli godz.:min.:sek.). Wyposażymy go również w budzik i możliwości sterowania z BASIC-u. Żeby być całkowicie w zgodzie z prawdą należy zauważyć, że nasz zegar, tak jak zresztą i maszynowy, nie pracują, jeśli jakiś program wyłączy przerwania, co jest możliwe za pomocą odpowiedniego rozkazu maszynowego. System i BASIC wyłączają przerwania właściwie tylko w czasie zapisu lub odczytu danych na taśmę lub dyskietkę. Po wpisaniu i uruchomieniu zamieszczonego obok programu należy odpowiedzieć na pytanie o wersję Amstrada (Schneidera), gdyż od tego zależą adresy pewnych procedur systemowych wykorzystywanych przez program (np. dzielenie przez 10). Opracowany na podstawie „Schneider International" nr 12/1985 - zmiany dotknęły komend sterujących (z niem. na polski).

    Autor listingu: S. Wolicki

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Wieczny Kalendarz

    Czy wiesz w jakim dniu tygodnia się urodziłeś? A może interesuje cię czy bitwa pod Grunwaldem miała miejsce w poniedziałek czy w piątek? Jeśli tak, wpisz do swojego komputera ten program i dowiesz się wszystkiego.

    Autor listingu: F. Głowiński

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Kiedy 2 = 10

    Program oblicza postacie liczb w układach od dwójkowego do 35-kowego zastępując (w przypadku systemów o podstawie większej od 10) liczby 10, 11, 12 itp. literami A, B, C itd.

    Autor listingu: Jacek Niewęgłowski

    Listing nadesłał: Faust

    Język programu: Locomotive Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Pisać nie pisac

    Oto krótki program umożliwiający posługiwanie się polskim alfabetem w trakcie pisania własnych programów na komputerach Amstrad 464 (664) 6128.

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
  • Miniorgany

    Może zainteresuje cię program, będący świetnym upominkiem dla młodszej siostry lub brata. Zapewnia on pełne wykorzystanie bogatych możliwości dźwiękowych Amstrada (Schneidera). Dwa najniższe rzędy klawiszy literowych zostają zamienione na klawiaturę instrumentu zgodnie z rysunkiem, który pojawia się po uruchomieniu programu.

    Autor listingu: Sergiusz Wolicki

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

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

    Oglądając programy telewizyjne „Spectrum" i „Sonda" często podziwiamy, jak przed oczami projektanta obraca się na komputerowym ekranie wspaniały, trójwymiarowy przekrój samochodu. Napewno niejeden programista-amator marzy o stworzeniu takiego obrazu za pomocą mikrokomputera. Niestety, kiedy uruchamia on napisany mozolnie w BASIC-u program rzednie mu mina.
    Wrażenie ruchu jakiegokolwiek większego przedmiotu jest bowiem znacznie osłabione przez migotanie całego rysunku. Wynika to ze sposobu, w jaki konstruuje się ruchome obrazy na ekranie. Najpierw trzeba narysować przedmiot w jednym położeniu, zmazać go. narysować w następnym, znowu zmazać itd. ... A wszystko to dzieje się przecież stosunkowo wolno.

    Autor listingu: brak danych

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Odzyskiwanie plików skasowanych omyłkowo na dyskietce

    Instrukcja |ERA w Basic Locomotiv umożliwia skasowanie pliku na dyskietce np. w celu uzyskania miejsca na wpisanie innego programu. Użycie tej samej instrukcji wymaga szczególnej ostrożności, ponieważ skasowany przy jej użyciu plik nie będzie wykazywany po użyciu instrukcji CAT (katalog).
    Powyższy program napisany na BASIC-u umożliwia odtworzenie skasowanego przez omyłkę pliku, o ile powykonaniu instrukcji |ERA na dyskietkę nie został zapisany inny plik.

    Autor listingu: Wojciech Ziółek

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Skarb kubusia

    Nasz stary przyjaciel Kubuś Literka wybrał się tym razem na poszukiwanie skarbów. Stoi przed nim bardzo trudne zadanie. Skarb został ukryty w jednej z komnat zamku a jest ich dokładnie sto. Żeby było jeszcze trudniej Kubuś nie może wziąć skarbu nim nie zbierze trzech fantów ukrytych w innych komnatach. Trzymaj się Kubusiu!

    Autor listingu: Roman 'Romek' Poznański

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    3
    Listing skorygowany - prawdopodobnie zawiera błędy, uruchamia się na emulatorze lub realnej maszynie, wymaga jednak poprawek kosmetycznych
Dodaj listing
Powrót do spisu

Dodaj plik z listingiem *

    Jeżeli posiadasz plik wykonywalny i źródłowy spakuj je w jedno archiwum. Wielkość pliku nie może przekroczyć 2mb. Wszystkie pozostałe pola są niewymagane, jednak ułatwiłoby dużo, gdybyś podał przynajmniej orientacyjnie skąd jest listing, a jeżeli jest Twojego autorstwa pozostaw namiar.

    Nazwa programu:

    Nazwa programu lub nazwa artykułu, z którego pochodzi.

    Stan listingu

    Jak oceniasz stan przesłanego listingu, jeśli jego działanie wymaga dodatkowego wyjaśnienia dodaj go w opisie.

    Opis programu:

    Opis działania programu. Zauważone problemy w funkcjonowaniu. Dodatkowe informacje.

    Autor listingu

    Autor artykułu/listingu zamieszczanego pliku. W razie wielu autorów odzielaj ich przecinkami

    Platforma

    Mikrokomputer, na który pochodzi listing. Jeśli danej platformy nie ma w spisie wprowadź jej nazwę w pole poniżej.

    Język listingu

    Język listingu, np. TurboBasic, BasicXL, MSBasic itp.

    Źródło

    Jeśli program jest Twojego autorstwa pozostaw puste.

    Twój nick

    Twój nick, ewentualnie dane osoby, która program wklepała, w razie wielu autorów odzielaj ich przecinkami.

    Email

    Do celów edycyjnych, informacyjnych i kontaktowych - bez podawania go jawnie.