Ready/Run

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

Listingi w bazie
Dodaj listing
  • Migający Kursor

    Przedstawiony program może być pomocny przy pracy z komputerem, powoduje bowiem migotanie kursora, który staje się przez to bardziej widoczny i łatwiejsze jest redagowanie pisanego tekstu. Oprócz tego po każdym RESET ustawiane są zgodnie z życzeniem użytkownika tak ważne przy długiej pracy z komputerem parametry jak: kolor tła i ramki, jasność tekstu, lewy i prawy margines, a także szybkość wprowadzania znaków z klawiatury. Teraz naciśnięcie (nawet przypadkowe) klawisza RESET nie powoduje irytującej zmiany ustawionych parametrów.
    Po uruchomieniu programu mamy migający kursor, tło ciemnozielone, ramkę jasnoniebieską, lewy margines 2, prawy = 37, czas do pierwszego powtórzenia klawisza = 15, szybkość powtarzania = 2. Jeżeli ustawione wartości komuś nie odpowiadają, można je zmienić dwoma sposobami: w samym programie w liniach DATA (trzeba również obliczyć nową sumę kontrolną i wstawić ją do linii 16 zamiast 8208), albo w trybie bezpośrednim za pomocą instrukcji POKE.

    A oto lista możliwych zmian:

     

    • POKE 1542,41 — kursor migający  linia 20, liczba 41
    • POKE 1542,9   — kursor normalny
    • POKE 1543,x   — częstotliwość migania linia 20, liczba 8
    • POKE 1572,x   — lewy margineslinia 24, liczby 2 i 37
    • POKE 1576,x   — prawy margines
    • POKE 1580,x   — jasność tekstu
    • POKE 1585,x   — kolor tlalinia 26, liczby 12,192 i 148
    • POKE 1590,x   — kolor ramki
    • POKE 1595,x   — czas do powtórzenialinia 28, liczby 15
    • POKE 1600,x   — szybkość powtarzaniai 2 (po 169)
       

    Autor listingu: Marek Krupa

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Migający Kursor

    Program napisany w języku maszynowym wykorzystuje przerwanie VBLK. Na uwagę zasługuje fakt, że program działa dalej po naciśnięciu RESET. Jeśli chcemy wyłączyć pulsowanie kursora, to wystarczy POKE 9,0 i RESET. Powrót do migania uzyskamy przez POKE 9,1 i RESET. Program umieszczony jest na szóstej stronie pamięci.
     

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

    • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
    • Cold Reset (Powinien wejść do Basica)
    • LOAD "D:KURSOR1.BAS"
    • RUN

     

    Autor listingu: Adam Hartwig

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Migający Kursor

    Jedną z wad edytora BASIC-a w komputerze Atari 800XL jest brak migającego kursora, co utrudnia jego lokalizację. Aby to poprawić ułożyłem krótki program.
    Po jego uruchomieniu kursor zaczyna migać. Prędkość migania można zmienić poprzez zmianę zawartości komórki 1549 (zalecana 20). Kursor przestaje migać po naciśnięciu RESET; aby przywrócić stan poprzedni należy wykonać sekwencję rozkazów z linii 90—120. Kursor nie przestaje migać po zmianie trybu graficznego. Procedura jest relokowalna; adres początku umieszczany jest w komórkach 552 i 553.
    Uwaga: przy dużej prędkości wyprowadzania danych na ekran (np. listowanie) kursor może zostawiać ślad.

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

    • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
    • Cold Reset (Powinien wejść do Basica)
    • LOAD "D:KURSOR3.BAS"
    • RUN

     

    Autor listingu: Bartosz Polednia

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Od Środka cz. II

    Znacie już cały podział pamięci ZX Spectrum (mamy nadzieje, że zapamiętaliście coś z poprzedniego artykułu). A wiec do dzieła. Dziś poznany sposób zapisu programów na taśmie i zaczniemy sie włamywać do programów napisanych w BASIC-u (pamiętaj, że praktycznie każdy program ma chociażby procedurę ładująca napisana w BASIC-u. a jeśli jej nie posiada, to w zasadzie wcale nie jest zabezpieczony).

    Na razie weźmy się jednak do sposobu zapisu programów na taśmie — przypomnij sobie co widać i słychać podczas wczytywania jakiegokolwiek programu.
    Przez ok. 1 — 2 sekundy, na obrzeżu ekranu widoczne są szerokie, czerwono-niebieskie pasy oraz słychać ciągły dźwięk. Jest to tzw. pilot, który umożliwia komputerowi zsynchronizowanie się z sygnałem z taśmy, który ma odbierać. Potem przez krótką chwilę pojawiają się cienkie, migające, żółto-granatowe paski, oznaczające, że komputer wczytuje do pamięci informacje. Jest ich 17 bajtów — tzw. nagłówek. Pojawia się napis "Bytes:" "Program:", "Character array:" lub "Number array:", a potem po chwili przerwy zaczyna się drugi pilot (nieco krótszy), a po nim wczytuje się właściwy program. Zajmiemy się teraz nagłówkami, gdyż zawarte są w nich najważniejsze informacje o wczytywanych programach.
    Nagłówek — jak już wspomnieliśmy — składa się z 17 bajtów. Będziemy je numerować od 0 do 16 (patrz rys.1). Zerowy bajt oznacza typ bloku. Jest on równy 0 — jeśli jest to program w BASIC-u, 3 — jeśli blok kodu maszynowego (nagrany przez SAVE "CODE..." albo SAVE "..." SCREEN$, które oznacza dokładnie to samo, co SAVE "...",CODE 16384,6912. Jeśli natomiast nagłówek ten poprzedza zbiór będący tablicą zmiennych BASIC-a (nagrany przez SAVE DATA...), to jest on równy 1 — dla tablic liczbowych lub 2 — dla tablic znakowych.
    Następne 10 bajtów, to nazwa wczytywanego bloku, czyli tekst pojawiający się po załadowaniu nagłówka, za napisem "Program:", "Bytes:" czy innym.
    Bajty 11. i 12. zawierają dwubajtową liczbę (pierwszy bajt mniej znaczący) oznaczającą długość bloku danych, którego ten nagłówek dotyczy.
    W zależności od typu wczytywanego bloku, bajty od trzynastego do szesnastego są w różny sposób interpretowane.
    Zacznijmy od nagłówków programów napisanych w BASIC-u. Bajty 13. i 14. oznaczają numer linii, od której ma się uruchomić program, jeśli był nagrany przez SAVE "..." LINE nr. Jeśli program był nagrany bez opcji LINE czyli po wczytaniu nie uruchomi się samoczynnie, to wartość tej liczby jest większa od 32767. Jednym ze sposobów unieszkodliwiania zabezpieczeń samostartujących programów w BASIC-u jest zmiana tych dwóch bajtów w nagłówku na wartość większą od 32767.
    Bajty 15. i 16. zawierają liczbę oznaczającą długość samego programu w BASIC-u (bo SAVE "" lub SAVE "" LINE nagrywają program wraz ze wszystkimi zmiennymi, tzn. zawartość pamięci od bajtu wskazywanego przez zmienną systemową PROG, do bajtu określonego zmienną E_LINE). Gdy od całkowitej długości bloku (bajty 11. i 12.) odejmiemy tę liczbę, dowiemy się ile bajtów w tym bloku zajmują zmienne BASIC-a. To wszystko, jeśli chodzi o nagłówki programów w BASIC-u.
    W nagłówkach kodu maszynowego ("Bytes:") bajty 15. i 16. nie są wykorzystywane, natomiast 13. i 14. tworzą dwubajtową liczbę określającą pod jaki adres należy wczytać następujący po nagłówku blok.
    W nagłówkach tablic wykorzystywany jest spośród tych czterech, tylko bajt 14., który przedstawia nazwę wczytywanej tablicy. Jest on zapisany tak, jak nazwy wszystkich zmiennych BASIC-a (w obszarze od VARS do E_LINE), tzn. trzy najstarsze bity oznaczają typ zmiennej (tutaj będzie to tablica liczbowa lub znakowa) a pięć mniej znaczących bitów — nazwę tej zmiennej*).
    Na listingu 1. przedstawiony jest program tworzący procedurę umożliwiającą odczytywanie nagłówków programów zapisanych na taśmie. Po jego dokładnym wpisaniu (uważaj na właściwą ilość spacji w liniach z instrukcjami DATA!) uruchom go przez RUN i poczekaj chwilę. Na ekranie pojawi się informacja o adresach początku i końca procedury oraz o jej długości, która powinna wynosić 284 bajty. Jeśli tak nie jest, sprawdź, czy na pewno wpisałeś wszystkie linie programu. Jeśli wszystkie dane były poprawne, to na twojej taśmie znajdzie się procedura "czytacz", dzięki której będziesz mógł odczytać każdy nagłówek. Po nagraniu jej na taśmę możesz już skasować program z listingu 1.
    Procedura "czytacz" jest relokowalna, tzn. będzie działała poprawnie niezależnie od tego, pod jakim adresem w pamięci się znajdzie. Możesz ją więc wczytać przez:
    LOAD "czytacz" CODE adres
    a następnie uruchamiać przez
    RANDOMIZE USR adres
    i to nawet wielokrotnie. Po uruchomieniu, procedura wczytuje pod adres 23296 (do bufora drukarki) pierwszy napotkany nagłówek. Jeżeli ze względu na podłączone urządzenia zewnętrzne nie odpowiada ci ten adres, to możesz go zmienić zastępując w linii 200 programu z listingu 1. liczbę 005B heksadecymalnym adresem, pod który chciałbyś wczytywać nagłówki (dwie pierwsze cyfry są młodszym bajtem tego adresu). Aby po takiej zmianie uniknąć sprawdzania sumy kontrolnej w tej linii, na końcu tekstu ujętego w cudzysłowy zamiast spacji i czterech cyfr sumy kontrolnej umieść literę "s" poprzedzoną czterema spacjami.
    Po wczytaniu nagłówka procedura odczytuje informacje w nim zawarte i wraca do BASIC-a, lecz wczytanego nagłówka nie niszczy, więc jeśli chcesz, możesz go dodatkowo obejrzeć wykorzystując funkcję PEEK.
    Samo odczytywanie nagłówków to jednak trochę mało, by móc włamywać się do bloków zapisanych na taśmie. Trzeba jeszcze wiedzieć, co z tymi blokami zrobić, aby umieścić je w pamięci, nie pozwalając im się przy tym uruchomić.
    W przypadku bloków typu "Bytes" wystarczy zwykle załadować je pod wymuszony adres, powyżej RAM-TOP-u (tzn. powyżej komórki pamięci wskazywanej przez zmienną systemową RAMTOP), np. przez:
    CLEAR 29999: LOAD ""CODE 30000
    Metoda ta skutkuje, jeśli tylko wczytywany blok nie jest zbyt długi (może mieć maksymalnie ok. 40K). Dłuższe bloki mogą się po prostu nie zmieścić w pamięci — konieczne jest wówczas podzielenie ich na kilka krótszych części. Niedługo dowiemy się jak to robić.
    Podobnie, w przypadku tablic, załadowanie ich nie nastręcza raczej kłopotów — wystarczy użyć normalnej w takich wypadkach instrukcji LOAD "" DATA...
    Gorzej natomiast wygląda wczytywanie programów w BASIC-u. Są one zwykle nagrywane przez SAVE "..."LINE, a na samym początku linii, od której mają się uruchomić umieszczone są instrukcje zabezpieczające je przed zatrzymaniem. Najprostszym rozwiązaniem jest ładowanie programu nie przez LOAD"", lecz MERGE "", jednak metoda ta nie zawsze daje rezultaty. Z tej beznadziejnej wówczas sytuacji istnieją dwa zasadnicze wyjścia: podmienić nagłówek programu lub użyć przedstawionego niżej programu "load/merge".
    Pierwsze z nich polega na zastąpieniu nagranego na taśmie nagłówka przez taki sam, ale nie powodujący uruchomienia programu.  Można w tym celu użyć programu "COPY COPY" — wczytać nagłówek programu, wcisnąć BREAK, a następnie instrukcją LET zmienić jego parametr START na liczbę większą od 32767 (tzn. wykonać np. LET 1 ="32768 — jeśli przerabiany nagłówek był wczytany jako pierwszy zbiór). Tak zmodyfikowany nagłówek nagrywamy gdzieś na taśmę. Usuwamy z pamięci program COPY COPY i wpisujemy LOAD "". Wczytujemy stworzony przed chwilą nagłówek, lecz zaraz po jego zakończeniu zatrzymujemy taśmę. Teraz do magnetofonu wkładamy kasetę z programem, do którego się włamujemy, ale ustawioną zaraz za nagłówkiem tego programu — tak, aby wczytać tylko treść programu, bez oryginalnego nagłówka.
    Druga metoda jest o wiele wygodniejsza:
    Wprowadzamy do pamięci (z klawiatury lub z taśmy) program "load/ merge" zamieszczony na listingu 2. Po uruchomieniu zaczyna on czekać na pierwszy program w BASIC-u, który znajduje się na taśmie. Wczytuje go zupełnie tak samo, jak instrukcja LOAD "", lecz po załadowaniu nie pozwala na jego uruchomienie — drukuje jedynie komunikat "0 OK", z informacją od której linii wczytany program miał się uruchomić.
    Na listingu 3. przedstawiona jest procedura, którą tworzy ten program poprzez POKE-i. Zasadniczą jej instrukcją jest CALL 1821. Począwszy od adresu 1541, w ROM-ie znajduje się procedura interpretująca instrukcje SAVE, LOAD, VERIFY i MERGE. CALL 1821 wskakuje do środka tej procedury. Początkową jej część (odczytującą parametry tych instrukcji) pomijamy, zastępując to w liniach 40 — 90 naszej procedury: Najpierw przez RST 48 rezerwujemy 34 bajty w obszarze WORKSP**), adres wolnego miejsca przenosimy z rejestru DE do IX, w linii 80 zaznaczamy w zmiennej systemowej T__ADDR, że chodzi nam o LOAD, a nie np. VERIFY, a w pierwszym bajcie nagłówka do porównywania umieszczamy wartość 255, oznaczającą, że ma być wczytany pierwszy napotkany blok (tzn. program w BASIC-u). Reszty dokonuje procedura z ROM-u, działając identycznie jak LOAD "". Różnica w działaniu LOAD a "load/merge" polega na tym, że po całkowitym wczytaniu programu, zamiast wrócić przez RET do interpretera BASIC-a, przepisujemy zawartość zmiennej NEWPCC ("numer linii do której ma być skok") do PPC ("numer ostatnio wykonywanej linii") oraz nie dopuszczamy do uruchomienia programu — wykonujemy RST 8 z komunikatem "0 OK". Dzięki temu przepisaniu, w wydrukowanym komunikacie znajdzie się informacja o numerze linii, od której wczytany program miał się uruchomić.
    Niecierpliwie czekając na kolejny odcinek z tego cyklu popróbuj odczytywać nagłówki bloków i wczytywać zabezpieczone programy w BASIC-u. Za miesiąc nimi właśnie dokładniej się zajmiemy.

     

    Autor listingu: Tomasz Surmacz, Robert Dudzik

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Atak! (Inwazja)

    Tym razem coś dla miłośników łamania joysticka. Wystarczy wpisać program według zamieszczoneoo listingu i można strzelać do woli.

    Na okołoziemskiej orbicie pojawili się "Obcy". Wkrótce okazało się, że ich zamiary wcale nie są przyjazne, a na dodatek dysponują potężnym uzbrojeniem. Bardzo szybko rozprawili się z flotami kosmicznymi wielkich mocarstw. Pozostałeś tylko Ty. Kierując bojowym kosmolotem "Gwiezdny Piorun" musisz pokonać Obcych. Jesteś ostatnią nadzieją Ziemi, jeśli zawiedziesz, wszyscy ludzie zostaną niewolnikami, a Ty zginiesz w mękach.
    Po wpisaniu "RUN" program wykonuje kilka procedur i sam startuje. Gdy nie powiedzie Ci się lub gdy uzyskasz premię, gra będzie kontynuowana po naciśnięciu klawisza "START" lub przycisku joysticka.
    Opisu gry nie będzie. To dobre dla jajogłowych naukowców i znudzonych komputerem dzieci. Prawdziwy gracz nie zajmuje się takimi głupstwami. Ale jedna uwaga jest konieczna. Przed pierwszym uruchomieniem programu lepiej zapisać go na kasecie lub dyskietce. Są na świecie rzeczy, o których się filozofom nie śniło — a po co "wklepywać" wszystko jeszcze raz.

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

    • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
    • Cold Reset (Powinien wejść do Basica)
    • LOAD "D:ATAK.BAS"
    • RUN

     

    Autor listingu: Wojciech Zientara

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
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.