Ready/Run

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

Listingi w bazie
Dodaj listing
  • Przesuw Pionowy

    W wielu programach spotykane jest płynne przesuwanie obrazu, które daje znacznie lepszy efekt niż przesuwanie zawartości ekranu o cały wiersz lub kolumnę.

    Uzyskanie tego ciekawego efektu jest — wbrew pozorom — bardzo proste i może być zrealizowane nawet w Basicu. Konieczne jest w tym celu przede wszystkim właściwe przygotowanie pamięci obrazu.
    Przy przesuwie pionowym pamięć obrazu musi zawierać liczbę wierszy większą niż odpowiednia dla danego trybu. Zapis treści obrazu w tych wierszach może być wykonany tylko instrukcjami POKE. gdyż system operacyjny nie przewiduje rozbudowania standardowej pamięci obrazu. Odpowiednią wielkość obszaru pamięci obrazu można uzyskać obniżając RAMTOP przed instrukcją GRAPHICS lub umieszczając nieco niżej w pamięci własny program ANTIC-a. W tym drugim przypadku adres początkowy nowego programu ANTIC-a należy umieścić także w rejestrze MEMTOP (741-742 = $02E5-$02E6). Zabezpiecza to przed zniszczeniem obrazu przez interpreter Atari Basic. Ponadto trzeba
    pamiętać, aby pamięć obrazu nie przekraczała granicy bloku 4 KB pamięci ze względu na konstrukcyjne ograniczenia ANTIC-a.
    Przesuwanie zawartości obrazu o cały wiersz można teraz łatwo uzyskać zmieniając tylko adres pamięci obrazu w programie ANTIC-a. Aby uzyskać dokładnie pionowy przesuw (bez odchyleń na boki) należy zawsze zmieniać adres pamięci obrazu o liczbę bajtów niezbędnych dla utworzenia jednego wiersza programu albo o jej wielokrotności.
    W trybach, w których wiersz ma wysokość jednej linii ekranu (8—11, 14 i 15), każda taka zmiana adresu powoduje przesunięcie obrazu tylko o jedną linię. Jednak w pozostałych trybach zawartość obrazu przesuwa się skokowo o kilka linii ekranu (odpowiednio do liczby linii ekranu tworzących jeden wiersz trybu). Do uzyskania przesuwu płynnego (o jedną linię ekranu) trzeba w tych trybach wykorzystać specjalny rejestr ANTIC-a (VSCROL) oraz bit uruchamiający przesuw pionowy w rozkazach ANTIC-a (bit 5).
    Ustawienie bitu 5 w rozkazie tworzenia wiersza trybu powoduje przesunięcie tego wiersza w górę. Wielkość przesunięcia jest określona przez zawartość rejestru VSCROL. Praktycznie przebiega to następująco:
    Rozkazy ze skasowanym bitem 5 powodują normalne wyświetlanie wiersza. Po napotkaniu pierwszego rozkazu, który ma ustawiony bit 5, opuszczane są w wierszu linie o numerach mniejszych od zawartości rejestru VSCROL (linie są numerowane od zera). Na przykład w trybie 0 zawartość VSCROL równa 3 spowoduje pominięcie linii 0—2. a wyświetlone zostaną tylko linie 3—7. Następne rozkazy z ustawionym bitem 5 dają na ekranie także normalne wiersze. Dopiero pierwszy rozkaz ze skasowanym bitem 5 spowoduje wyświetlenie w wierszu tylko linii o numerach mniejszych od zawartości VSCROL. W podanym wyżej przykładzie wyświetlone zostaną tylko linie 0—2.
    Ze sposobu działania ANTIC-a wynika wyraźnie, że obraz przesuwany pionowo ma zawsze o jeden wiersz mniej od obrazu stałego Gdy niezbędne jest utrzymanie niezmienionej wysokości obrazu, to trzeba w programie ANTIC-a dodać jeden rozkaz tworzenia wiersza.
    Korzystając z rejestru VSCROL można przesuwać obraz tylko w obrębie jednego wiersza. Aby umożliwić dalszy ruch obrazu, po całkowitym przesunięciu wiersza należy zmienić zawartość VSCROL oraz adres pamięci obrazu. Połączenie tych dwóch sposobów przesuwu umożliwia płynne przemieszczanie obrazu w górę i w dół w zakresie całego wyznaczonego obszaru pamięci.
    Zamieszczony obok program demonstruje realizacje pionowego przesuwu w trybie GRAPHICS O. Po ustaleniu trybu i wypełnieniu obrazu liczbami pętla w wierszu 130 ustawia bit 5 w części rozkazów ANTIC-a. Następnie pokazywane jest dwukrotnie przesuwanie w obrębie jednego wiersza (za pierwszym razem ze zmniejszoną prędkością). Potem program demonstruje połączenie przesuwu delikatnego (o jedną linię ekranu) i przesuwu zgrubnego (o jeden wiersz obrazu).
    UWAGA: Widoczne na ekranie zakłócenia są spowodowane powolnym działaniem interpretera Atari Basic w porównaniu z prędkością pracy ANTIC-a oraz dokonywaniem zmian w rejestrach ANTIC-a podczas tworzenia obrazu, a przede wszystkim przekraczaniem granicy bloku 4 KB.
     

    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
    Pobierz:
  • Obrazki w DATA

    Pisząc program często napotykamy na problem, jak w stosunkowo niewielkiej pamięci komputera zmieścić kilkanaście lub kilkadziesiąt rysunków. Zwykle w takich przypadkach stosuje się odczytywanie rysunku z dyskietki lub rysowanie normalnymi instrukcjami graficznymi.

    Drugi z podanych sposobów jest całkiem niezłym rozwiązaniem, szczególnie przy zastosowaniu Turbo Basica, gdzie rysowanie jest stosunkowo szybkie. Dla prostych rysunków spełnia to doskonale postawione zadanie. Listing 1 (w Turbo Basicu) pokazuje przykład takiego właśnie rysunku.
    Wykonywany obrazek pochodzi z mojego programu „MPZZM“. Podczas pisania tego programu pojawił się jednak poważny kłopot. Pokazaną metodą można umieścić w programie kilkanaście obrazków, ale potrzeba ich było kilkadziesiąt. Nie da się tego zrobić mając do dyspozycji 36 KB pamięci na cały program. Konieczne jest skondensowanie rysunku.
    Istnieje kilka sposobów zagęszczania danych w pamięci komputera, jednak żaden z nich mi nie odpowiadał. Zamiast zagęszczać obraz postanowiłem zrobić to z rysującymi go instrukcjami. W efekcie powstała procedura GRAF i kilka procedur pomocniczych, które są przedstawione w listingu 2.
    Jak to działa? Większość instrukcji graficznych Basica posiada dwa parametry. Można więc zakodować je w trzech bajtach: instrukcja i dwie współrzędne. Najoszczędniajszym sposobem zapisu bajtu w programie jest przedstawienie go w postaci odpowiedniego znaku w kodzie ATASCII. Do odczytania jego wartości można wtedy użyć funkcji ASC. Ciąg tak zakodowanych bajtów umieszcza się w instrukcji DATA.
    Procedura GRAF odczytuje wskazany ciąg z DATA i kolejno dekoduje zawartą w nim informację. Pierwszy rozpoznany znak oznacza rodzaj instrukcji, a dwa następne — jej parametry. Ponieważ poszczególne operacje są określone kodami od 1, to kod ten wykorzystywany jest do wyboru odpowiedniej procedury pomocniczej przez instrukcję ON/GOSUB (wiersz 570). Realizacja procedur przebiega w pętli WHILE, aż do napotkania litery Q zamiast kodu operacji. Po każdym odczytaniu trzech pierwszych bajtów ciągu są one usuwane. Wartości kodów operacji ustaliłem następująco:
    1 — PLOT
    2 — DRAWTO
    3 — FILLTO
    4 — PAINT
    5 — TEXT
    6 — CIRCLE
    7 — COLOR
    8 — SQUARE

    Wykonanie pierwszych czterech operacji przez odpowiednie procedury pomocnicze (PLT, DRW, FLT i PNT) nie wymaga komentarza. Ponieważ zawsze odczytywane są dwa parametry, to instrukcję COLOR połączyłem z FCOLOR (wiersz 660). Instrukcje TEXT i CIRCLE wymagają jednak trzech parametrów. Brakujący parametr jest odczytywany w procedurze pomocniczej. Oczywiście, konieczne jest po tym usunięcie tego znaku z ciągu. Sposób realizacji tych instrukcji można zobaczyć analizując procedury TXT i CRC (wiersze 640 i 650).
    Zastosowanie takiego rozwiązania pozwala na tworzenie dodatkowych, własnych instrukcji graficznych. Przykładem jest tu procedura SQR, która rysuje prostokąt. W ciągu należy dla niej umieścić kolejno współrzędne prawego, górnego oraz lewego, dolnego narożnika. Podobnie można utworzyć procedury realizujące inne operacje.
    Ponieważ ciąg z zakodowanym rysunkiem jest umieszczony w instrukcji DATA, to nie może się w nim znaleźć przecinek (kod ASCII=44). Zmusza to do omijania tej współrzędnej przy rysowaniu. Aby wyeliminować tą niedogodność zastosowałem sprawdzanie wartości parametru w wierszach 540 i 550. Jeśli parametr przekracza dozwoloną wartość (dla trybu GRAPHICS 7 jest to 160) to należy go zmniejszyć. W ten sposób zamiast przecinka (kod 44)trzeba zastosować znak o kodzie 44+160=204 (litera L w negatywie).
    Teraz cały rysunek, który zajmował pięć wierszy, można zapisać w postaci jednej instrukcji DATA. Wygląd takiej instrukcji, zawierającej obrazek z pierwszego listingu, jest pokazany na listingu 3. Kolejne obrazki powinny być zapisane w wierszach numerowanych od 10 000 co 2. Trzeba ponadto pamiętać, że każdy ciąg musi się kończyć literą Q.
    Jak korzystać z procedury GRAF? Proszę spojrzeć na listing 4. Na początku trzeba zadeklarować zmienną $, która służy do odczytu ciągu z DATA. Następnie ustalamy numer obrazka (wiersz 110) i ustawiamy wskaźnik odczytu przez READ na wiersz zawierający żądany obrazek (wiersz 120). Teraz pozostaje tylko wybranie trybu graficznego i właściwych kolorów oraz wywołanie procedury GRAF. Działanie całego przykładu można obejrzeć po połączeniu w jeden program listingów 2, 3 i 4.
    Pokazane przykłady napisane zostały w Turbo Basicu. Nic jednak nie stoi na przeszkodzie, aoy wykorzystać je w Atari Basic. Przetłumaczenie nie powinno stanowić problemu nawet dla początkującego programisty. Ponieważ Atari Basic jast znacznie wolniejszy, to dla przyspieszenia rysowania warto przed wywołaniem GRAF wyłączyć obraz instrukcją POKE 559,0 a po jej zakończeniu ponownie włączyć przez POKE 559,34.
     

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    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
  • Rockford dla każdego

    Z pewnością każdy zna śmieszną figurkę Rockforda z gry „Boulder Dash“. Wpadłem na pomysł, aby wykorzystać ją do uatrakcyjnienia programów edukacyjnych dla dzieci.

    Programy edukacyjne pisane w GRAPHICS 0 są uzupełniane postacią Rockforda, który jest dla dzieci uosobieniem komputera. Gdy dzieci odpowiadają, figurka chwali je za poprawną odpowiedź lub gani za złą.
    Pokazany podprogram należy dołączyć do własnego programu. Jego użycie jest bardzo proste. Procedura GOSUB 870 powoduje ukazanie się Rockforda na pozycji określonej zmiennymi X i Y. Potem można wykonać dowolną sekwencję procedur tak, jak jest to pokazane w wierszu 1080. W międzyczasie na ekranie może się pojawiać tekst, dzieci mogą odpowiadać na pytania itp. Usunięcie postaci Rockforda wykonuje procedura GOSUB 890.
     

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Autor listingu: Zdenek Buby

    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
  • Zamiana napisów jeszcze raz

    Posiadam Atari 800XL z magnetofonem. Komputera używam głównie pisząc własne programy. Ponieważ lubię jednak czasem pograć, postanowiłem ułatwić sobie życie w grach Drop Zone i Starquake. Korzystając z wiadomości zamieszczonych w „Bajtku” nr 5/88 (art. „Zostań nieśmiertelnym") użyłem program „Zamiana napisów” opublikowany w „Bajtku” nr 7/87. Jednakże, tak jak przypuszczałem, zabrakło pamięci, aby wczytać grę. Ponieważ nie dysponowałem innym programem o podobnych możliwościach, postanowiłem napisać swoją wersję. Mimo, iż użyłem do tego celu Basica, program dysponuje przeszło dziesięcioma kilobajtami pamięci więcej od programów „Zmiana napisów” i „Nie tylko dla graczy” ("Bajtek” nr 3/88). Uzyskałem to przez przesunięcie programu ANTIC-a i pamięci ekranu w obszar tuż nad głównym programem. Dodatkowo podczas operacji czytania i zapisu odłączany jest ROM Basica, co pozwoliło zaoszczędzić osiem kilobajtów pamięci. Ze względu na zastosowanie tego triku, procedura wyszukująca i wymieniająca dostarczony ciąg bajtów musiała zostać napisana w języku wewnętrznym. Jedną z zalet tego rozwiązania jest niewspółmierne skrócenie czasu przeszukiwania pamięci. Przeszukanie czterdziestu kilobajtów w celu odnalezienia określonego ciągu pięciu bajtów trwa około jednej sekundy. W Basicu trwałoby to przez 7 minut... Program składa się z dwóch części. Część pierwsza umieszcza potrzebne procedury na szóstej stronie i wczytuje część drugą, która jest głównym programem. Rozwiązałem to w ten sposób, gdyż zależało mi jak na największym obszarze wolnej pamięci RAM. Pierwsza część jest zapisana przez SAVE"C”, część druga bezpośrednio po pierwszej przez CSAVE. Całość należy wczytywać poprzez RUN"C”. Po wczytaniu całości program należy uruchomić instrukcją RUN. Po usłyszeniu pojedynczego sygnału należy wczytać program, w którym chcemy wprowadzić zmiany. Po wczytaniu wyświetlana jest ilość bajtów zajmowanych przez wczytany blok. Następnie program pyta się czy pokazać wczytany zbiór w kodach ATASCII. Potem program oczekuje wprowadzenia kodów ATASCII, które chcemy zmienić. Naciśnięcie RETURN nagrywa zmieniony program. Po znalezieniu dostarczonego ciągu znaków program wyświetla adresy, ich zawartość i odpowiadające im kody, a następnie oczekuje wprowadzenia ciągu kodów do zmiany (tej samej długości co odnaleziony ciąg). Zmiana sygnalizowana jest ponownym wyświetleniem adresów.

    UWAGA:
    Wyświetlanie wczytanego zbioru w kodach ATASCII możemy przerwać klawiszem BREAK. Podczas wyświetlania klawisz BREAK zatrzymuje tylko listowanie zbioru, nie zatrzymuje głównego programu. Ze względu na przełączanie banków pamięci, procedura wyświetlająca — zbiór jest napisana w języku wewnętrznym, wykorzystuje ona procedurę obsługi urządzeń I/O CIOMAIN.
     

    Autor listingu: Mirosław Honkowicz

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Centronics dla Atari

    Jak wiadomo posiadacze komputerów Atari XL/XE są skazani na fabryczną drukarkę 1029.

    Powodem jest niestandardowe wyjście szeregowe. Będące w sprzedaży interfejsy, umożliwiające współpracę tego komputera z innymi drukarkami (Star, Citizen, Epson itp.) są dość drogie (w przeliczeniu na złotówki).
    Większości użytkowników Atari nie stać po prostu na zakup drukarki. Gdy nadarza się okazja skorzystania z dobrej drukarki, na przeszkodzie stoi owo fatalne wyjście szeregowe. Wszystkie drukarki przystosowane do współpracy z komputerami klasy PC są wyposażone w wejście równoległe standardu Centronics.
    Przedstawiony obok prosty układ wraz z programikiem zmienia wejścia joysticków w wyjście zgodne ze standardem Centronics na poziomie podstawowej komunikacji komputer-drukarka.
    Ze względu na dostępność wtyczek najłatwiej wykonać interfejs do drukarki wyposażonej w kabel zakończony 25-kołkową wtyczką (np. współpracującej z IBM PC). Do płytki obwodu drukowanego należy więc przylutować 25-stykowe gniazdo produkowane przez zakłady ELTRA oraz dwa 9-stykowe do joysticków.

    Przed wlutowaniem elementów na płytkę trzeba w punktach A, B, C, D i E obustronnie wlutować kawałki drutu miedzianego lub np. obcięte wyprowadzenia rezystorów, aby uzyskać połączenia ścieżek po przeciwnych stronach płytki. W następnej kolejności należy wlutować układ scalony, rezystory, diody, tranzystor i na końcu wtyczki.
    Układ nie wymaga żadnych regulacji ani selekcji elementów. Ze względu na wymiary płytki rezystory powinny mieć obciążalność 0,25 lub 0,125 W.
    Tutaj drobna uwaga: od strony elektrycznej i montażowej układ jest bardzo prosty i zaawansowanemu hobbyście nie powinien sprawić żadnych kłopotów. Pamiętaj jednak, że każdy błąd może Cię drogo kosztować — ingerujesz przecież we wnętrze komputera. Również bardzo zgubne są wszędobylskie ładunki elektrostatyczne.
    Zamieszczony program należy przepisać i uruchomić (RUN). Podwójny sygnał powiadamia o konieczności nagrania na taśmę wersji boot programu. Odtąd program należy wczytywać jak inne w kodzie maszynowym: wciśnięty klawisz START przy włączaniu komputera.
    Aby pozostawić wolną, często wykorzystywaną do własnych celów, szóstą stronę pamięci, program umieszczony jest od adresu 1792 do 2000. Zamieszczona obok wersja źródłowa ułatwi zmiany i pozwoli na wykonanie własnej wersji użytkownikom stacji dysków — wersja kasetowa zajmuje bowiem miejsce przeznaczone dla DOS.
    Transmisja danych przez opisane wyjście równoległe przebiega z dużą prędkością: np. przesłanie bloku 8,5 KB trwa zaledwie 2,5 sekundy. Interfejs można wykorzystywać praktycznie tylko z poziomu Basica dlatego, że uruchamiający się program w kodzie maszynowym ustawia swoje wskaźniki, czy- ii skasuje nasz. Można też obsługę złącza dopisać do interesującego nas programu. Po takim zabiegu edytor tekstu SpeedScript 3.0 umożliwia np. uzys kanie polskich liter na drukarce Centronics GLP II. UWAGAMI WYKONYWANIE KOPII PROGRAMU I OPISANEGO UKŁADU W CELACH HANDLOWYCH JEST ZABRONIONE!!!
    Marek Renner 
    40-532 Katowice
    ul. Dzięciołów 26
    Chętnie pomogę mającym kłopoty z wykonaniem interfejsu. Po podaniu, jaki wtyk (po stronie komputera) ma kabel drukarki, do której masz dostęp wyślę gotową płytkę albo (po dostarczeniu wtyczek) kompletny układ interfejsu.
    Pomogę również w rozszerzeniu programów o program obsługi drukarki.

    Zestawienie części:

    D1-D8    diody BAVP 20
    T    tranzystor BC 107
    R1    rezystor 5,1 kil
    R2    rezystor 1,0 kft
    R3    rezystor 3,0 kfł
    US    układ scalony UCY 7404
    C    kondensator 3,3 nF

    OD REDAKCJI: Powyższy układ został przetestowany w redakcji. Wykazuje on dwie wady, o których autor nie wspomina w opisie. Interfejs nie przenosi kodu 0 czyli CHR$(0). Ponadto program obsługujący zawsze zamienia kod RETURN (155) na kod CR (13). Powoduje to oczywiście błędy podczas wydruku grafiki

    Autor listingu: Marek Renner

    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
  • Liczba PI i E

    Wyznaczenie niektórych stałych matematycznych z dużą dokładnością jest właściwie sztuką dla sztuki.

    Niemniej w wielu dziedzinach nauki i techniki dokładność pomiarów wzrasta ostatnio bardzo szybko i standardowe obliczenia dziesięciocyfrowe są już niewystarczające. Ogólny program obliczeń wielopozycyjnych został przedstawiony w „IKS-ie“ nr 5/86. Program ten umożliwia obliczenia stałych e i π z dowolną dokładnością, ale jest zbyt ogólny, aby mógł być dostatecznie szybki, stąd pomysł, żeby opracować programy szybsze.
    Program 1 oblicza liczbę e z dowolną dokładnością, korzystając ze standardowego rozwinięcia funkcji wykładniczej na szereg Maclaurina, natomiast program 2 oblicza liczbę n, korzystając ze wzoru Gaussa i rozwinięcia funkcji arctg(x) na szereg potęgowy:
    Przyspieszenie uzyskano poprzez obliczanie wyników pośrednich do niezbędnego minimum liczby miejsc znaczących + 1 cyfra zapasowa. Prócz tego, w programach wyeliminowano w miarę możliwości dzielenia, jako działanie około 3 razy dłuższe od mnożenia, dlatego właśnie, teoretycznie szybszy, o około 3.5%, program wykorzystosujący do obliczania liczby [pi] wzór Mellina (Młody Technik nr 2/89) działa na Atari 130XE wolniej, ponieważ wszystkie ułamki występujące w ostatnim wzorze mają nieskończone rozwinięcia dziesiętne. Czyżby Gauss już wtedy przewidział istnienie komputerów liczących w systemie dziesiętnym?
    Program 1 wylicza na Atari pierwsze sto cyfr po przecinku rozwinięcia liczby e w czasie 30 s, natomiast program 2-100 cyfr rozwinięcia liczby — w ciągu 53 s, co oznacza, że program 1 jest ponad sześciokrotnie szybszy, a program 2 — 30 razy szybszy od programu zaprezentowanego w „IKS-ie“ 5/86. Pierwszych 500 cyfr po przecinku liczby e program 1 wylicza w ciągu niecałych 8 min., a 1000 cyfr — w 27,5 min. Dla liczby [pi] czasy obliczeń wg programu 2 wynoszą odpowiednio 19 min. i 1 h 14 min.

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

    • Zbootować dyskietkę.
    • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
    • Cold Reset (Powinien wejść do Basica)
    • LOAD "D0:E.BAS" lub LOAD "D0:PI.BAS"
    • RUN

     

    Autor listingu: Wojciech Przybył

    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
  • Dodatkowe Klawisze Inaczej

    Pokazany w poprzednim „Bajtku“ sposób uzyskania dodatkowych klawiszy nie wykorzystywał wszystkich możliwości dostępnych w systemie operacyjnym komputera.

    Nieosiągalne pozostały jeszcze funkcje uzyskiwane w modelu 1200XL przez naciśnięcie klawiszy F1, F2 i F4 razem z CONTROL. Są one obsługiwane bezpośrednio przez procedurę przerwania wywołaną naciśnięciem klawisza i nie można ich funkcji przypisać innym kombinacjom klawiszy. Trzeba więc zmienić samą procedurę przerwania.

    Można to zrobić kilkoma sposobami. Najczęściej rezerwuje się obszar pamięci operacyjnej komputera przez obniżenie górnej granicy obszaru dostępnego dla systemu (rejestr RAMTOP — adres 106). W takim miejscu umieszcza się nową procedurę przerwania (i ewentualnie inne dane), a adres tej procedury wpisuje się do wektora VKEYBD (520- 521). Poza zajęciem dodatkowego obszaru pamięci, metoda ta ma jeszcze jedną poważną wadę. Nie wystarczy bowiem przepisanie procedury w nowe miejsce i wskazanie go systemowi, aby procedura ta działała prawidłowo. Trzeba jeszcze dokładnie sprawdzić treść procedury i poprawić wszystkie skoki bezwzględne, gdyż w przeciwnym przypadku można spowodować zawieszenie się systemu albo, w najlepszym razie, przejście do wykonywania oryginalnej procedury znajdującej się w ROM.

    Wszystkich tych trudności można uniknąć wykorzystując prezentowaną już w „Bajtku“ procedurę „ROMRAM“, która przepisuje system operacyjny z pamięci ROM do znajdującego się pod tymi samymi adresami obszaru RAM. Mając system operacyjny zapisany w pamięci RAM można dokonywać w nim dowolnych zmian. Dodatkową zaletą jest tu możliwość zmiany tablicy definicji klawiatury bez przepisywania jej w inne miejsce.

    Procedura „ROMRAM“ jest zawarta w wierszach 1000-1060 zamieszczonego obok programu. W wierszach od 60 do 80 zapisane są zmiany w tablicy definicji klawiszy. Są one identyczne z podanymi w poprzednim „Bajtku“, lecz teraz zmiany są realizowane bezpośrednio w systemie, bez przepisywania tablicy. Trzy brakujące funkcje uzyskuje się po wykonaniu instrukcji umieszczonych w wierszach 90 i 100. Polega to na zmianie kodów kombinacji klawiszy wywołujących odpowiednie operacje.

    Po wprowadzeniu wszystkich wymienionych wyżej zmian otrzymuje się nowe działanie następujących kombinacji klawiszy:

    • SHIFT + CLEAR    kursor do lewego górnego rogu
    • SHIFT + INVERSE    kursor do lewego dolnego rogu
    • SHIFT + ESC     kursor do lewego marginesu
    • SHIFT + RETURN     kursor do prawego marginesu
    • CONTROL + ESC    włącza i wyłącza dźwięk klawiatury
    • CONTROL + 7    przełącza zestawy znaków (standardowy i międzynarodowy)
    • CONTROL + 8     włącza i wyłącza działanie klawiatury 
    • CONTROL + 9    wyłącza ekran (włączenie następuje po naciśnięciu dowolnego klawisza 

    Korzystając z procedury „ROMRAM“ można w podobny sposób przeprogramować całą klawiaturę albo zrealizować nowe funkcje, nie istniejące dotychczas w systemie operacyjnym.

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

    • Zbootować dyskietkę.
    • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
    • Cold Reset (Powinien wejść do Basica)
    • LOAD "D0:KLAWISZE.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
    Pobierz:
  • Daleko w kosmosie

    Daleko w Kosmosie, na granicach Gwiezdnego Imperium piloci bojowych statków Floty Imperialnej pełnią trudną, żmudną i niebezpieczną służbę. I Ty możesz przyłączyć się do grona tych odważnych mężczyzn, jeśli przepiszesz zamieszczony program. Uprzedzam jednak lojalnie, że nie jest to gra zręcznościowa i wymaga dużo myślenia.

    Gra polega na zwalczaniu wrogich statków kosmicznych. Najpierw trzeba jednak wybrać własny statek i miejsce akcji. Jako pierwszy wybieramy system gwiezdny, w którym toczyć się będzie walka. W programie zapisane są układy Oriona, Deneb i Arcturusa, lecz przy odrobinie umiejętności można dodać nowe gwiazdy.
    Teraz trzeba zdecydować, jakim statkiem będziemy walczyć. Do wyboru są trzy rodzaje kosmolotów: niszczyciel, krążownik i pancernik. A oto ich podstawowe dane:
    typ    prędkość    ładowność    pancerz
    niszczyciel    10    16    1
    krążownik    4    24    2
    pancernik    2    30    5
    Prędkość jest podana w jednostkach względnych, a ładowność określa ilość broni, którą można załadować na statek. Wybór uzbrojenia także należy do gracza, który ma do dyspozycji następującą broń:
    typ        masa    siła
    działo laserowe        12    4
    pocisk antymaterii    4    20
    rakieta nadprzestrzenna    4    16
    torpeda fotonowa    2    10
    pole siłowe        20    6
    Masa oznacza tu liczbę jednostek ładowności statku niezbędnych do zabrania broni. Działo laserowe i pole siłowe mogą wykonać po 100 strzałów. Pozostałe uzbrojenie można użyć tyle razy, ile sztuk znajduje się na statku.
    Gdy zakończymy wybieranie, rozpoczyna się gra. Do sterowania służą klawisze cyfrowe od <1> do <9>. Pierwsze pięć z nich powoduje użycie kolejnych rodzajów broni (według podanej listy). Klawisz <6> uruchamia automat niszczący Twój własny statek, klawisz <8> umożliwia wycofanie się z walki (ucieczka), a klawisz <9> oznacza oczekiwanie na dalszy rozwój wypadków. Początkowa prędkość kosmolotu jest ustalana losowo i do jej zmiany służy klawisz <7>. Po jego naciśnięciu trzeba podać zmianę prędkości, czyli o ILE ma wzrosnąć lub zmaleć (wartości ujemne). Prędkość dodatnia zawsze powoduje zbliżanie się do przeciwnika, a prędkość ujemna oddalenie się.
    Regulowanie odległości od wrogiego statku jest bardzo ważne, gdyż zależy od tego skuteczność broni, zarówno Twojej, jak i przeciwnika. Jeśli odległość będzie mniejsza niż 200 tys. km, to eksplozje Twoich pocisków będą uszkadzały także Twój własny statek.
    Po użyciu każdego klawisza pojawiają się na ekranie komunikaty. Przede wszystkim informują one o aktualnej prędkości Twojego statku i odległości od przeciwnika. Ponadto wyświetlane są meldunki o użytej broni i uszkodzeniach statku własnego i wrogiego. Gra kończy się po zniszczeniu jednego ze statków lub gdy odległość między nimi przekroczy 1500 tys. km.

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

    • Zbootować dyskietkę.
    • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
    • Cold Reset (Powinien wejść do Basica)
    • LOAD "D0:DALEKO.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
  • Zestaw listingów dla Atari

    Zestaw miniprogramików zamieszczonych w Bajtku 4.1989, przepisanych przez Anaroka Repozytorium.

    W zestawie:

    PRZEWIJANIE NAPISU (Jakub Gawlikowski)

    Głównym mankamentem programu "Płynący napis" z "Bajtka" 7/87 jest fakt, że przewijany napis może mieć długość jedynie 40 znaków.
    Przedstawiony przeze mnie program pozwala wydłużyć go do 255 znaków i umieszcza tekst u dołu ekranu w trybie GRAPHICS 2. Jeśli komuś nie odpowiada ten tryb, może użyć trybu GRAPHICS 1, zmieniając w wierszu 20 POKE DL + 25,87 na POKE DL + 25,86. Procedura współpracuje z pr zerwaniem VBLK, wobec czego może się wykonywać w tym czasie program w Basicu. Należy uważać, aby po każdej instrukcji GRAPHICS 0 powtórzyć sekwencję rozkazów zawartą w wierszu 20.
    Procedura odczytuje tekst począwszy od adresu 16384 gdzie jest on umieszczony w kodach ICODE (kod wewnętrzny ANTIC-a). Przed uruchomieniem należy więc go tam wpisać. 
    W tym celu należy wykonać POKE 82,0; wyczyścić ekran (klawisze SHIFT+CLE AR); w 6-ciu pierwszych wierszach ekranu wpisać, co tylko na myśl przyjdzie (najlepiej jeśli pierwsze 21 znaków będzie spacjami); zjechać kursorem do około 6-ciu wierszy przed końcem ekranu i wpisać FOR I = 0 TO 255: POKE 1638 + I, PEEK(40000+I):NEXT I. Gdy pojawi się komunikat READY, uruchomić program (RUN).

    KATALOG DYSKIETKI (Kasia Lekawska)

    Oto program umożliwiający listowanie oraz drukowanie nazw plików zapisanych na dyskietce bez potrzeby wchodzenia do DOS-u.
    10 DIM PL$ (13)
    20 OPEN #1,6,0, "D:*.*"
    30 TRAP 60:INPUT #1, PL$
    40 PRINT PL$
    50 GOTO 30
    60 CLOSE #1
    Po przepisaniu i zapisie na dyskietce (SAVE) program uruchamiamy instrukcją RUN. I już mamy wykaz wszystkich plików znajdujących się na dyskietce.
    Program ten można oczywiście rozwinąć — zależnie od potrzeb i pomysłowości.
    Podam dwa przykłady:
    1. Aby nie liczyć „piechotą — palcem po ekranie“ ile jest plików na dyskietce i ile możemy jeszcze dopisać — tworzymy licznik. Dopisujemy wiersz:
    35 N = N + 1
    Wiersz 40 po małej zmianie będzie wyglądać następująco:
    40 PRINT N, PL$
    Po uruchomieniu programu każdy plik ma przypisaną kolejną liczbę (N) oraz nazwę wraz z informacją czy jest zabezpieczony. 2. Mając do dyspozycji drukarkę i chcąc otrzymać wydruk plików z dyskietki — tworzymy wiersz dodatkowy:
    45 LPRINT N, PL$

    INPUT/OUTPUT W ACTION! (Wojciech Zientara)
    Zestaw procedur wejścia/wyjścia w Action!

    Autor listingu: Jakub Gawlikowski|Kasia Lekawska|Wojciech Zientara

    Listing nadesłał: Anarok

    Język programu: Atari Basic

    Stan listingu:

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

    Generator znaków, który określa wygląd wszystkich wyświetlanych znaków, znajduje się w pamięci ROM. Zmiana kształtu liter lub zaimplementowanie liter polskich wymaga więc umieszczenia generatora znaków w pamięci RAM. Zajmuje to co najmniej 1 KB pamięci.
    Komputery Atari posiadają jednak pamięć RAM pokrywającą się z obszarem pamięci ROM. Trzeba więc przepisać system operacyjny zawarty w ROM do RAM i można zmieniać jego zawartość bez potrzeby zajmowania dodatkowej pamięci RAM. Sam program tworzący polskie litery nie jest żadną nowością. Zastosowałem tu jednakże procedurę „RAMROM” napisaną przez Joe Millera, a zaczerpniętą z książki „Mapping the Atari”. Pozwala ona na dowolne zmiany w pamięci ROM, zaś użycie jej w generatorze znaków jest tylko jednym z możliwych zastosowań. Na przykład, można wprowadzić zmiany do procedur wejścia/wyjścia lub procedur obsługi przerwań.
     

    Autor listingu: Sebastian Siwy

    Listing nadesłał: Amarok

    Język programu: Atari Basic

    Stan listingu:

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

    Przy przepisywaniu z „Bajtka” programów w Basicu nie sposób ustrzec się błędów. Aby uniknąć żmudnego wyszukiwania popełnianych omyłek wszystkie programy w Basicu są publikowane wraz z kodami kontrolnymi. Zamieszczony obok program służy do kontroli tych kodów podczas przepisywania programu.

    Wydruk „Edytora Basica” należy dokładnie przepisać i zapisać na kasecie lub dyskietce (najlepiej instrukcją LIST „C:” lub LIST „D:EDYTOR.LST"). Poprawność przepisania można sprawdzić samym „Edytorem” w opisany niżej sposób.
    Przystępując do wpisywania dowolnego programu z naszego pisma trzeba najpierw wczytać i uruchomić „Edytor Basica”. Następnie należy przepisywać kolejne wiersze programu. Po wpisaniu każdego wiersza i naciśnięciu klawisza RETURN wiersz ten pojawia się w dowolnej części ekranu wraz z obliczonym kodem kontrolnym. Jeżeli wyświetlony kod jest taki sam, jak wydrukowany przed numerem wiersza, można przystąpić do wpisywania następnego wiersza. Jeśli kody są różne, to ponowne naciśnięcie RETURN wyświetla wpisany wiersz w górnej części ekranu i umożliwia dokonanie w nim niezbędnych poprawek.
    Samo naciśnięcie RETURN wywołuje zawsze ostatnio wpisany wiersz. W celu wywołania innego, wcześniej napisanego wiersza trzeba podać jego numer poprzedzony gwiazdką (np. 1000) i nacisnąć RETURN. Wpisanie samej liczby powoduje wymazanie z pamięci komputera wiersza programu o takim numerze.
    Po poprawnym przepisaniu całego programu trzeba przerwać pracę „Edytora Basica” przez naciśnięcie klawisza BREAK lub RESET. Następnie w celu usunięcia „Edytora” i zbędnych zmiennych (z tablic nazw i wartości zmiennych) zapisujemy program na kasecie instrukcją LIST „C:”,  0,31999 lub na dyskietce instrukcją LIST „D:nazwa”,  0,31999. Teraz kasujemy zawartość pamięci komputera instrukcją NEW i odczytujemy program przy pomocy ENTER „C:” (z kasety) lub ENTER „D:nazwa” z dyskietki. Po wykonaniu tych czynności w pamięci komputera znajduje się tylko gotowy program bez „Edytora Basica” i można go już ostatecznie zapisać na odpowiedni nośnik.
    Procedura ta jest może nieco kłopotliwa, lecz zabezpiecza w stu procentach przed popełnieniem omyłki przy przepisywaniu programu z „Bajtka”. PAMIĘTAJ: ZAWSZE UŻYWAJ „EDYTORA BASICA”.

    Autor listingu: bd

    Listing nadesłał: Amarok

    Język programu: Atari Basic

    Stan listingu:

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

    Dla wszystkich miłośników łamania joysticka zamieszczamy, jako prezent noworoczny, grę zręcznościową pod tytułem „Walka powietrzna”.
    Aby zacząć grę, należy przepisać zamieszczony wydruk programu (litery przed każdym wierszem są kodami kontrolnymi „Edytora Basica” i nie należy ich przepisywać). Następnie, na wszelki wypadek, nagrywamy program na kasetę lub dyskietkę. Teraz można już uruchomić grę przez podanie komendy RUN.
    Na ekranie — poza napisami — widoczne są dwa okna. Górne przedstawia widok z boku na samolot nasz i przeciwnika. W dolnym oknie ukazany jest ich widok z góry. Celem gry jest zestrzelenie przeciwnika. Aby to osiągnąć, trzeba ustawić się dokładnie na wprost niego i oddać strzał przez naciśnięcie przycisku w joysticku. Podana kolejność czynności jest ważna — każdy strzał kosztuje 10 punktów, można więc skończyć grę z wynikiem ujemnym, jeśli strzela się zbyt dużo.
    Przemieszczanie samolotu w górę i w dół (w górnym oknie) oraz na boki (w dolnym oknie) uzyskuje się przez odpowiednie ruchy joystickiem. Jego lot (ruch do przodu) jest ciągły i nie można nim sterować. Jeśli nie uda nam się trafić przeciwnika, to w chwili mijania odwzajemni się on celnym strzałem. Do dyspozycji mamy tylko trzy samoloty, więc trzy nieudane akcje kończą grę. W przypadku powodzenia, każdy następny atak będzie się zaczynał nieco bliżej środka ekranu, pozostawiając mniej czasu na celowanie

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

     

    Autor listingu: Wojciech Zientara

    Listing nadesłał: Amarok

    Język programu: Atari Basic

    Stan listingu:

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

    W tej grze komputer rysuje na ekranie plansze składającą się z 25 kwadratów. Każdy z nich ma dwie strony: ciemną i jasną. Twoim zadaniem jest zamienienie wszystkich ciemnych pól na jasne, w jak najmniejszej ilości ruchów. Dla utrudnienia, oprócz wskazanego kwadratu, odwracane są zawsze cztery sąsiednie pola (o ile mieszczą sie na planszy). Zagraj sam z sobą. Powodzenia!

    UWAGA!
    Niektóre znaki występujące na ekranie monitora nie są dostępne w druku, dlatego też przyjęliśmy poniższe zasady zapisu:

    • pojedyńcze znaki w nawiasach kwadratowych odpowiadają symbolom graficznym, wprowadzane są przy naciśniętym klawiszu CTRL;
    • ciąg znaków w nawiasie kwadratowym odpowiada następującym cynnościom: klawisz ESC a potem klawisz CTRL i ujęty w nawiasie jednocześnie.

    Autor listingu: Tadeusz Cisek

    Listing nadesłał: Faust

    Język programu: Atari Basic

    Stan listingu:

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

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

    Autor listingu: Krzysztof Kołodziej

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

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

    Liczby zespolone są mało znanym uczniom szkół średnich działem matematyki (praktycznie tylko uczniom klas o profilu matematyczno-fizycznym). Tym jednak, którzy poznają liczby zespolone przydatny może być mój program.

    Realizuje on najczęściej wykonywane działania na liczbach zespolonych takie jak: mnożenie, dzielenie, dodawanie, odejmowanie, potęgowanie zespolone, pierwiastkowanie, ponadto wylicza loga- rytm naturalny, funkcje sinus i cosinus, exponent, moduł i liczbę sprzężoną oraz zamienia postać algebraiczną na trygonometryczną i odwrotnie. W opcjach „DODAWANIE" i „MNOŻENIE" program pyta o ilość liczb, na których będzie wykonywanie działania. Umożliwia to dodawanie lub mnożenie wielu liczb zespolonych (jednak nie więcej niż 17).
    Program mój został częściowo oparty na algorytmach zawartych w książce „25 numerycznych programów w języku BASIC" Andrzeja Witowskiego i Jakuba Tatarkiewicza.
    Jeszcze kilka uwag na koniec. Ze względu na możliwości obliczeniowe Atari nie wszystkie dane będą akceptowane przez program, o czym użytkownik jest informowany odpowiednim komunikatem. Większość wyników podawana jest z dokładnością do 0.001. W opcjach zmiany postaci z algebraicznej na trygonometryczną i odwrotnie ułamki za kropką oznaczają dziesiętne i setne stopnia, a nie minuty i sekundy,
     

    Autor listingu: Dariusz Tabaczyński

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Muzyka w przerwaniach

    Dzięki wiadomościom zawartym w „Bajtku" przestałem bać się przerwań i napisałem program w języku maszynowym, który jest wykonywany co 1/50 sekundy w czasie przerwania synchronizacji pionowej. Opracowana przeze mnie procedura może wykonywać proste melodie (do 93 nut), lecz nie przeszkadza w normalnej pracy Basica. Można więc wykorzystać ją do uzyskania podkładu muzycznego we własnym programie, zaś przy pisaniu programu może ona umilić pracę.
    Dla uzyskania takiego efektu trzeba wpisać zamieszczony program i uruchomić go. Program ten jest potem zbędny i można go skasować instrukcją NEW. Przerwanie pracy programu następuje po naciśnięciu klawisza RESET lub po wpisaniu POKE 548, 138: POKE 549, 194. Ponowne włączenie muzyki uzyskuje się po wpisaniu POKE 548, 0: POKE 549, 6. Jeśli chcemy uzyskać inną melodię, to trzeba wpisać do komórki 1541 liczbę nut pomnożoną przez 2 (maksymalnie 186), a do komórki 1582 wielkość pauzy między nutami (maksymalnie 255). Teraz jest to odpowiednio liczba 132 w wierszu 90 i trzecia liczba 0 w wierszu 100. Następnie trzeba zmienić zawartość instrukcji DATA od wiersza 120. Kolejno trzeba tam wpisać dla każdej nuty wysokość dźwięku (wartości takie jak w instrukcji SOUND) i czas jego trwania. Na końcu w wierszu 70 wpisujemy graniczną wartość pętli FOR/NEXT odpowiednią dla liczby nut wprowadzonych do instrukcji DATA. Dla Czytelników zainteresowanych programowaniem w języku maszynowym podaję dodatkowo źródłowy wydruk procedury w asemblerze MAC/65.

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

     

    Autor listingu: Maciej Rempiński

    Listing nadesłał: Amarok

    Język programu: Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • 80 znaków w wierszu

    Profesjonalne komputery umożliwiają zwykle uzyskanie na ekranie monitora 80 znaków w każdej linii. W porównaniu z tym, 40 znaków w linii dostępne na Atari, to śmiesznie mało. Zamieszczamy więc program, który umożliwia podwojenie tej liczby.

    Program działa w trybie graficznym 8 i składa się z dwóch części. Pierwsza generuje nowy zestaw znaków, który umieszczony jest od adresu 31744 i zajmuje 1 KB pamięci (z tego względu program, który będzie wykorzystywał przedstawioną procedurę musi zostawiać w grafice 8 przynajmniej 1,5 KB wolnej pamięci). Właściwa procedura stanowi drugą część programu. Wczytywana jest ona na 6 stronę pamięci. Po wczytaniu obu części program w Basicu może być usunięty (w tym celu należy zamienić instrukcję END w linii 1050 na NEW lub RUN "C:").
    Aby uzyskać tekst trzeba teraz włączyć tryb GRAPHICS 8, a następnie użyć instrukcji:

    I = USR( 1536, ADR(T$),X, Y,LEN(T$))

    gdzie T$ jest tekstem, który chcemy wyświetlić: X jest współrzędną poziomą początku tekstu (od 0 do 79, a więc z dokładnością 4 punktów ekranu); zaś Y jest współrzędną pionową (od 0 do 184, a z oknem tekstowym do 152),
    Umieszczony na ekranie tekst wymazuje tło, na którym się pojawi (oprócz pierwszego znaku przy nieparzystej wartości X). Gdy zamierzamy wykonać nadruk na istniejącym rysunku, to należy przed wywołaniem procedury przez USR, wpisać instrukcję POKE 1770,128. Teraz tekst w miejscach mających kolor 1 będzie miał kolor 0 i odwrotnie. POKE 1664,13 spowoduje, że tekst zawsze będzie miał kolor 1. Normalny tryb pracy programu przywracają instrukcje POKE 1770,131 i POKE 1664,77.
    Przedstawiona procedura ma jednak kilka ograniczeń. Przede wszystkim nie może wykonywać napisów w negatywie (inverse video). Nie pozwala także na zmianę miejsca umieszczenia pamięci obrazu. To ostatnie ograniczenie można ominąć wpisując instrukcje POKE 1615,H i POKE 1622,L, gdzie H i L to odpowiednio starszy i młodszy bajt adresu pamięci obrazu. Ponieważ przesunięcie obrazu może spowodować zniszczenie obszaru zaiętego przez zestaw znaków, to również można go przenieść w inne miejsce. W tym celu trzeba zmienić wartość 31744 w linii 10 na nową i wpisać starszy bajt nowego adresu przez POKE 1577,A/256. Trzeba przy tym pamiętać, aby zestaw znaków rozpoczynał się od początku strony, a więc od adresu podzielnego przez 256.
    Efektywne wykorzystanie programu wymaga dołączenia go do innego programu w Basicu lub (po disasemblacji) do programu w kodzie maszynowym. Można także spowodować, aby program po umieszczeniu w pamięci zestawu znaków i procedury maszynowej uruchamiał inny program w Basicu.

    Listing pochodzi z repozytorium listingów Basic autorstwa AMAROK

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

     

    Autor listingu: Michał Skowroński

    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
  • Demonstracja Grafiki

    Prezentowany przeze mnie programik, choć bardzo krótki, ma wiele atrakcji i nieograniczone możliwości.

    Program ten wykreśla na ekranie fantazyjne wykresy pseudoprzestrzenne. W linie 20 i 50 można wprowadzić własne ciekawsze dane na przykładzie przedstawionej próbki (dodatki I — V). Program mój nie tylko prezentuje możliwości graficzne ósmego trybu, ale również ukazuje przykład praktycznego wykorzystania funkcji matematycznych w Atari.

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

     

    Autor listingu: Arnold Adamczyk

    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
  • Mini Pacman

    Część Czytelników interesują wyłącznie gry, inni chcieliby więcej informacji o programowaniu, a „Bajtek” nie jest z gumy. Aby wilk był syty i owca cała, drukujemy grę napisaną w Action!.

    Po ukazaniu się „Bajtka-Atari” do redakcji nadeszło wiele listów z pytaniami o język Action!. Równolegle do prowadzonego w wydaniach specjalnych „Bajtka” kursu tego języka będą więc w klanie Atari prezentowane napisane w nim programy. Pierwszym jest prosta gra zręcznościowa oparta na motywach popularnego „PacMana”.
    Zadaniem gracza jest zbieranie kropek na planszy. Należy przy tym unikać wygłodniałego potwora, który chciałby zjeść PacMana na obiad. Po zebraniu wszystkich kropek następuje przejście na wyższy poziom (razem jest ich 20). Oczywiście do poruszania się po planszy trzeba używać joysticka.
    Jeszcze krótka informacja dla osób, które nie znają Action!. Po wpisaniu programu trzeba przejść do monitora przez wciśnięcie klawiszy CTRL-SHIFT-M. Teraz poleceniem C kompilujemy program i zapisujemy wersję skompilowaną przez S C: (kaseta) lub S D:PACMAN.OBJ (dyskietka). Program źródłowy można również zapisać (przed wejściem do monitora) przez wciśnięcie klawiszy CTRL- SHIFT-W i podanie nazwy C: lub D:PACMAN.ACT.
    Po skompilowaniu lub wczytaniu skompilowanego programu uruchamiamy go poleceniem R (z monitora). Po zakończeniu gry następuje powrót do monitora i wyświetlenie meldunku błędu „Error:128”. Jest to objaw prawidłowy i nie należy szukać btędu w programie. Ten błąd jest powodowany przez procedurę Break(), przerywającą program.
    Instrukcje w Action! mogą byc oddzielone od siebie spacją lub dwukropkiem. W jednej linii można umieścić dowolną liczbę instrukcji. Rozmieszczenie instrukcji w programie jest więc dowolne, a wcięcia w wydruku służą jedynie poprawieniu jego czytelności.
    Program nie jest skomplikowany i nawet początkujący programista łatwo go zrozumie po dokonaniu analizy. Trzeba przy tym pamiętać, że program w Action! jest ZAWSZE wykonywany od ostatniej procedury.
     

    Autor listingu: Wojciech Zientara

    Listing nadesłał: Faust

    Język programu: Action!

    Stan listingu:

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

    Z przykrością musze stwierdzić, że nie znalazłam dotąd w "Bajtku" artykułu (programu) napisanego przez DZIEWCZYNĘ. Chciałabym zmienić ten stan rzeczy proponując program, którego zadaniem jest zamiana liczb z systemu dziesiętnego na liczby przedstawione w systemie dwójkowym i szesnastkowym (wbudowany BASIC nie posiada takiej funkcji).

    Algorytm działania programu jest uniwersalny do konwersji liczby w systemie dziesiętnym na liczbie w innym systemie, a polega on na dzieleniu zadanej wartości przez podstawę określonego systemu. Otrzymane z dzielenia reszty będą kolejnymi cyframi reprezentacji zadanej wartości w tym systemie.
    Brzmi to trochę dziwnie i niezrozumiale. Przedstawmy przykład, który pozwoli lepiej nam zrozumieć ten sposób konwersji.
    Chcemy przedstawić liczbę 11 w systemie dwójkowym. Dzielimy zatem 11 przez 2 (podstawę systemu dwójkowego).
    11:2=5 r.1
    5:2=2 r.1
    2:2=1 r.0
    1:2=0 r.1
    Otrzymane reszty (r.) piszemy od pozycji najmniej znaczącej (od końca) i w ten sposób otrzymujemy liczbę 11 przedstawioną w systemie dwójkowym.
    11- -> 1011
    Analogicznie rzecz się przedstawia przy zamianie liczby systemu dziesiętnego na liczbę w systemie szesnastkowym z tą tylko różnicą, że podstawa dzielenia jest liczbą 16, a dziesiętne wartości równe 10,11,12,13,14,15 są przedstawione literami A,B,C,D,E,F.
    Dla lepszego zrozumienia przykład: Zamieniamy liczbę 8360 (w systemie dziesiętnym) na liczbę przedstawioną w systemie szesnatkowym.
    8360:16 = 522 r.8
    522:16 = 32 r.10 — A
    32:16 = 2 r.0
    2:16 = 0 r.2
    Przepisanie wartości reszt od pozycji najmniej znaczącej da nam liczbę 8360 przedstawioną w systemie szesnastkowym (należy pamiętać, że wartości 10 odpowiada litera A). Ostatecznie otrzymujemy:
    8360 - -> 20A8


    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

    Autor listingu: Dorota Ciesielska

    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
  • Autostart Programów

    Po opublikowaniu w „Bajtku” 10/87 odpowiedzi na list Arkadiusza Sochana otrzymaliśmy od Czytelników wiele listów. Kolega Marcin nie majac do czynienia na codzień z komputerami Atari udzielił niepełnego wyjaśnienia, co nasi Czytelnicy natychmiast zauważyli. Drukujmy wiec dwa wybrane listy oraz komentarz redakcyjny.

    Przedstawiony program jest tzw. "loaderem", który steruje ładowaniem programów i następnie uruchamia je. Program zajmuje obszar od adresu 1536 do 1751. Ponadto blokuje on klawisz RESET, który po wciśnięciu, kasuje pamięć RAM. Po dokładnym przepisaniu procedury, należy przygotować magnetofon do zapisu i uruchomić program rozkazem RUN. Zostanie on zapisany na taśmie w postaci BOOT, przeznaczonej do ładowania poprzez wciśnięcie klawisza START w momencie włączenia komputera.
     

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

    Autor listingu: Tomasz Waligóra

    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
  • Nie Tylko Dla Graczy

    Przedstawiony program składa się z sześciu niezależnych części ze względów praktycznych połączonych razem. Może on być pomocny użytkownikom ATARI 800 XL (65 XE), którzy zajmują się programowaniem w kodzie maszynowym, dostosowywaniem innych programów do swoich potrzeb, „rozgryzaniem” gier itp.

    Po załadowaniu programu z taśmy (CLOAD; czas 1 minuta 50 sekund) i uruchomieniu (RUN) zgłasza się opcja ładowania innego programu z taśmy (krótka przerwa między blokadami). Długość programu można wstępnie ocenić wg. wzoru:

    B = (T-20)/20

    gdzie:
    T— całkowity czas nagrania wczytywanego programu w sekundach, 
    B — szukana długość programu w KB.

    Jest to o tyle istotne, że zbyt długi program wczyta się do pamięci ekranu a dalsza część nie zostanie w ogóle zapisana, gdyż za obrazem jest ROM.

    Po zakończeniu wgrywania programu wyświetla się liczba wczytanych bajtów. Program prezentuje swoje możliwości po wciśnięciu klawisza ESC: naciśnięcie spacji jest rozumiane jako rezygnacja z „instrukcji obsługi”. Do opisu podprogramów można wrócić naciskając HELP podczas realizacji jednego z nich.

    Następne opcje to: 

    po G. 100 „rozszyfrowywanie” zajmowania pamięci w komputerze przez program dyskowy wczytywany z kasety,

    po G. 400 wyświetlenie zawartości pamięci, po G. 500 zapis do pamięci,

    po G. 700 zapis na taśmę wybranego obszaru pamięci, po G. 800 przemieszczanie wybranego obszaru pamięci.

    Programu można użyć jako kopiera.

    Nie ma tu żadnych ukrytych tricków i można wprowadzać dowolne zmiany. Program zajmie trochę mniej pamięci, jeżeli przepisze się go łącząc niektóre linie w jedną, używając skrótów oraz pisząc na ekranie bez marginesów (POKE 82,0): można też opuścić wszystkie komentarze.

    Wszystkim zainteresowanym życzę cierpliwości przy przepisywaniu i sukcesów w dalszych pracach.

     

     

    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:NIETYLKO.BAS"
    • RUN
     

    Autor listingu: Marek Renner

    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
  • Obsługa klawisza RESET

    RESET jest przyciskiem zerującym procesor, co nie oznacza jednak, że nie można jego obsługi programować z poziomu kodu maszynowego.

     
    Procedura taka, w odróżnieniu od procedury wywoływanej rozkazem USR, nie może zawierać rozkazu PLA, a podobnie jak procedura USR, powinna się kończyć rozkazem RTS. Po napisaniu programu maszynowego i umieszczeniu go w pamięci trzeba zmienić zawartość komórek 12 (młodszy bajt) i 13 (starszy bajt adresu procedury) oraz wpisać do komórki 9 wartość zezwalającą na wykonanie procedury (POKE 9,1). Radziłbym jednak procedurę taką wypróbować instrukcją USR, gdyż błąd w niej spowoduje zawieszenie się komputera i utratę danych.
    Przykładem wykorzystania tych informacji jest poniższy program, który powoduje, że naciśnięcie klawisza RESET nie przerywa działania programu, a jest jednoznaczne z rozkazem RUN.
    Litery przed numerem linii to sumy kontrolne Edytora BASICa, nie należą one do programu i nie należy je wpisywać.
    Program ten należy zapisać na taśmie rozkazem LIST "C", co umożliwi dołączenie tej procedury do innych programów rozkazem ENTER "C":

     

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

    Autor listingu: Jakub Cebula

    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
  • Grafika w DLI

    Atari posiada bardzo duże możliwości graficzne. Niestety z poziomu BASIC-a ilość kolorów dostępna jednocześnie na ekranie wynosi w najlepszym przypadku 16.

    Przedstawiony w artykule program wykorzystujący przerwania niemaskowalne DLI generowane przez ANTIC umożliwia zmianę zawartości rejestrów koloru w poszczególnych liniach. Daje to maksymalną ilość 256 kolorów na ekranie.

    Przerwania DLI są wywoływane przy czytaniu programu ANTIC-a. Bliższe informacje dotyczące programowania tego układu zawarte są w „Komputerze” 8/86. Przerwania są wywoływane przy dowolnym rozkazie ANTIC-a, który ma ustawiony najstarszy, siódmy bit. Adres programu obsługującego przerwania wskazywany jest przez wektor DLIVKT (512, 513).

    Wróćmy do programu. Niżej przestawione są cztery wydruki. Po przepisaniu pierwszego i uruchomieniu otrzymujemy program, który przedstawia wydruk drugi. Są to dwa programy w języku wewnętrznym. Pierwszy modyfikuje i lokuje program przerwań w odpowiednim miejscu oraz ustawia wektor. Jest on wywoływany przez: 

    A = USR (ADR (OB$) + 52, ADR (OB$), ADPR, ILO, ADDA)

    gdzie:

    ADPR — adres, od którego ma być umieszczony program obsługi przerwań 

    DLI — program o długości 52 bajtów; 

    LO — ilość uaktywnionych przerwań; 

    ADDA — obszar początku danych dla programu. 

    (...)

    Drugi program w języku wewnętrznym jest wywoływany przez:

    POKE ADDA,0:A = USR(ADR(OB$) + 156, ADR(OB$) + 171)

    i uaktywnia przerwania DLI w momencie przerwania synchronizacji pionowej.

    Wydruk trzeci to procedura zmieniająca program ANTIC-a i uruchamiająca przerwania. Działa w dowolnej grafice. Przed uruchomieniem jej w pamięci musi się znajdować program, który przedstawia drugi wydruk. Jedynki w ciągu C1$ reprezentują linie na ekranie, w których mają wystąpić przerwania, zera — linie, w których nie będzie przerwań. Przed uruchomieniem procedury trzeba umieścić w pamięci, poczynając od ADDA + 1 kolory poszczególnych linii. W przeciwnym razie większość ekranu po uruchomieniu procedury zmieni kolor na czarny. 

    UWAGI:

    1. Program obsługi przerwań DLI jest wywoływany zawsze po zakończeniu rysowania przez ANTIC linii na ekranie i np. przy włączonym przerwaniu w pierwszej linii zmiana koloru nastąpi w drugiej.
    2. Zmiana koloru w jednej linii powoduje zmianę koloru także w następnych, w których nie ma uaktywnionych przerwań
    3. Przed wywołaniem drugiego programu w języku wewnętrznym program ANTIC-a powinien być już zmieniony.
    4. Chcąc wyłączyć przerwania trzeba albo zmienić tryb graficzny, albo wpisać instrukcję POKE 54286,127, albo nacisnąć RESET.

    Czwarty wydruk jest krótkim programikiem demonstrującym możliwości, jakie daje zastosowanie opisywanych przerwań DLI.

     

     

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

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

    Autor listingu: Wojciech Wylon

    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
  • Przesuwanie kursora

    Program, który chciałbym zaproponować powstał w wyniku wykorzystania wiadomości zawartych w cyklu pt. „Nie bój się przerwań”.

    Służy on do przesuwania kursora przy pomocy joysticka, a także umożliwia usuwanie z ekranu tekstu, który znajduje się po prawej stronie kursora. Naciśnięcie przycisku FIRE spełnia funkcję CTRL-DELETE. Procedura w języku maszynowym wykonywana jest co trzy przerwania VBLK. Sprawdza ona położenie joysticka i stosownie do niego umieszcza w komórce 764 wartość kodu wewnętrznego oznaczającego wciśnięcie CTRL i odpowiedniego klawisza przesuwania kursora. Gdy nie poruszamy joystickiem wszystkie funkcje klawiatury działają normalnie.

    Procedura ta może mieć zastosowanie np. podczas pisania, sprawdzania i poprawiania listingów programów w języku Basic, ponieważ pozwala na szybkie umieszczenie kursora w dowolnym miejscu ekranu i wpisanie tam odpowiednich znaków. Po dokonaniu korekty naciśnięcie RETURN umieszcza w pamięci poprawioną linię.

    Wciśnięcie RESET przerywa działanie procedury. Ponowne jej uruchomienie następuje przez podanie instrukcji X = USR(1619).

     

    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:KURSOR.BAS"
    • RUN

     

    Autor listingu: Andrzej Holanowski

    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
  • XIO Demo

    Dołączona do komputera instrukcja Atari Basic wspomina o instrukcji XIO zaledwie tyle, że jest używana przy operacjach dyskowych i w grafice. Z tak lakonicznej informacji trudno cokolwiek zrozumieć, przybliżę więc Czytelnikom znaczenie tej ciekawej i pożytecznej instrukcji.

    Dwie operacje XIO mogą być wykonywane wyłącznie na ekranie: rysowanie linii (XIO 17 = DRAWTO) i wypełnianie obszaru (XIO 18). Pierwszej z nich odpowiada instrukcja Basica DRAWTO i nie będzie ona nas interesować. Druga, nie mająca odpowiednika w Basicu, udostępnia dodatkową interesującą funkcję graficzną. Ponieważ jest to najczęściej stosowana instrukcja XIO, to jej format podam osobno:

    XIO 18,#6,0,0,”S:”

    Użycie jej nie jest proste, więc zademonstrowane zostanie na przykładzie. Najpierw należy narysować linię ograniczającą z prawej strony wypełniany obszar i umieścić kursor instrukcją PLOT lub DRAWTO w miejscu, z którego rozpoczniemy wypełnianie (linie 90 i 100). Następnie do rejestru FiLDAT (765) wpisujemy numer koloru, który ma zostać użyty do wypełniania i umieszczamy kursor instrukcją POSITION w miejscu zakończenia wypełniania (linia 110). Dopiero teraz można wywołać instrukcję XIO 18 (linia 120). W liniach 20—80 ustalany jest kolor i losowo wybierane jest miejsce rysowania. Cała procedura jest powtarzana po naciśnięciu klawisza START.

    Należy pamiętać, że XIO 18 wypełnia każdą linię obrazu, aż do napotkania punktu o kolorze różnym od koloru tła.

    Nie można więc wypełniać obszarów wypełnionych już wcześniej.

    Jak zaladować (najprostsza metoda)

    ALTIRRA: 

    • Włączyć SYSTEM->INTERNAL BASIC (Basic Without OPTION Key)
    • Cold Reset (Powinien wejść do Basica)
    • LOAD "D:XIO.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
  • 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
  • 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
  • Edytor Basica

    Przy przepisywaniu programów w BASIC-u. szczególnie zawierających dużo liczb w instrukcjach DATA, nie sposób ustrzec się błędów. Aby uniknąć żmudnego wyszukiwania popełnionych omyłek wszystkie programy w BASIC-u będą zamieszczane wraz z kodami kontrolnymi. Poniższy program „Edytor BASIC-a” umożliwia obliczanie i kontrole kodów wpisywanych linii...

    Najpierw należy dokładnie przepisać zamieszczony tu wydruk i zapisać go na kasecie lub dysku. Przystępując do wpisywania dowolnego programu z naszego pisma trzeba wczytać i uruchomić „Edytor BASIC-a”. Następnie należy wpisywać linie programu. Po wpisaniu linii i naciśnięciu RETURN pojawia się ona w dolnej części ekranu wraz z obliczonym kodem kontrolnym Jeżeli wyświetlony kod jest taki sam jak wydrukowany przed numerem linii, można wpisywać następną linię. Jeśli kody są różne, to ponowne naciśnięcie RETURN powoduje wyświetlenie wpisanej linii w górnej części ekranu i umożliwia dokonanie poprawek. Wpisanie samego numeru linii powoduje wymazanie z pamięci komputera linii programu o tym numerze. Naciśnięcie RETURN wywołuje zawsze ostatnio wpisaną linię. Aby wywołać inną, wcześniej wpisaną linię należy napisać numer tej linii z gwiazdką przed nim (np. *140) i nacisnąć RETURN.
    Po wpisaniu całego programu trzeba przerwać pracę „Edytora” naciśnięciem klawisza BREAK lub RESET. Następnie w celu usunięcia „Edytora” zapisujemy program na taśmie instrukcją LIST „C:”,0,31999 lub na dysku instrukcją LIST „D:nazwa,”0,31999. Teraz trzeba wpisać rozkaz NEW i odczytać program instrukcją ENTER „C:” lub ENTER „D:nazwa”. Po tej operacji w pamięci komputera znajduje się wpisany program bez „Edytora BASIC-a’ i można go już ostatecznie zapisać na nośnik.

    Autor listingu: ???

    Listing nadesłał: Faust

    Język programu: Atari Basic

    Stan listingu:

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

    Przypuszczam, że wielu początkujących muzyków czy też muzykantów ma pewne kłopoty z utrzymaniem rytmu. Sądzę tak, ponieważ sam jestem (i zapewne już zostanę) takim właśnie muzykantem. A do tego dźwięk przedstawionej tu „elektronicznej perkusji” jest ciekawszy, bardziej inspirujący niż tupanie noga, czy suchy stukot metronomu.

    Dla zapisu rytmów dysponujemy polem o szerokości 39 kolumn i wysokości 2 wierszy. Początek pola wskazuje znak „?”. Tam też pojawia się kursor. Każdy wiersz określa rytm jednego bębenka. Górny wiersz — małego, dolny — większego. Cyfry widoczne nad polem rytmów to numery kolumn. Numery są dwucyfrowe — czytamy je z góry w dół. Poszczególne kolumny definiują kolejne elementarne jednostki czasu, w których może zabrzmieć dźwięk. Programowanie generatora polega na umieszczeniu w polu rytmów znaczków wskazujących, kiedy dany bębenek ma grać. Mogą być użyte dowolne znaki z wyjątkiem „Q”, „ ” i „I”. Spacja definiuje bowiem ciszę, pauzę czyli brak dźwięku, pionowa kreska zaś (klawisze <SHIFT> i < = >) użyta w zapisie górnego bębenka oznacza koniec cyklu, to znaczy, że jako następna będzie interpretowana kolumna nr 1. Jeśli nie użyjemy takiej kreski, to cykl będzie trwał całe 39 jednostek. Po wpisaniu rytmu naciskamy RETURN i perkusja gra. Powtórne naciśnięcie RETURN — i cisza. Można poprawić zapis, itd. Aby opuścić program należy tuż za pytajnikiem wprowadzić <Q> (quit). Zwracam uwagę, że każdy kulturalny program powinien kończyć się w kontrolowany sposób, a nie tylko przez BREAK czy też wyciągnięcie wtyczki z kontaktu.
    Kilka słów na temat programu. To mocna strona komputerów ATARI, że z ich nieprzebranego bogactwa dźwięków można korzystać tak prosto! Tu konwencjonalna pętelka cichnącego szumu w liniach 260..290 doskonale spełnia swe zadanie. Szumy są dwa: cieńszy (linia 270) i grubszy (linia 280). Głośność dźwięku w każdym momencie jest mnożona przez 0, jeśli kolejne miejsce na ekranie jest puste, zaś przez 1 w przeciwnym wypadku Wyrażenie logiczne bowiem, a takim jest np. (PEEK (EKR + I)>0), przyjmuje zgodnie z konwencją Atari BASIC-a jedną z dwu wartości: 1 (prawda) lub 0 (fałsz). Prostota i szybkość tego sposobu zasadza się na bezpośrednim spoglądaniu w pamięć ekranu. Zmienna CS ma tu znaczenie uboczne, a sama instrukcja INPUT służy tylko do zatrzymania programu, gdy trzeba dokonać zmian. Przed podjęciem nowego rytmu bada w liniach 210..230, czy wprowadzono ograniczenie długości cyklu i stosownie do tego ustala N.
    Wyjaśnienie niektórych PEEK'ów i POKE'ów. Komórka 82 (linie 100 i 300) ustala lewy margines ekranu. W komórkach 88 i 89 (linia 130) znajduje się dwubajtowy adres pamięci ekranu. Zmienna EKR będzie więc wskazywać na nasze pole rytmów Pod adresem 752 można (w linii 180) zgodzić się, by kursor przebywał na ekranie, lub (w następnej) zabronić mu tego. W komórce 764 (linie 170, 240) jest kod ostatnio naciśniętego klawisza, lub — gdy niczego się nie naciska — liczba 255.

    Autor listingu: Janusz B.Wiśniewski

    Listing nadesłał: Faust

    Język programu: Atari Basic

    Stan listingu:

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

    Przedstawiony program umożliwia wykorzystanie klawiszy funkcyjnych komputera ATARI do wypisywania najczęściej używanych słów kluczowych BASIC-a.

    Wykorzystuje on wektor przerwania VBLK mającego miejsce w czasie wygaszania promienia elektronów pod czas jego przemieszczania do pierwszej linii obrazu. Hasła RUN, LIST, CONT uzyskujemy poprzez wciśnięcie klawiszy START, SELECT lub OPTION. Pozostałe trzy hasła otrzymuje się przez poprzedzenie tej czynności naciśnięciem klawisza HELP. Program nie koliduje z wykorzystaniem konsoli przez programy napisane w BASIC-u — jest blokowany w czasie ich wykonywania.
    Opisany program może wypisywać na ekranie dowolny tekst zapisany w liniach poprzedzonych komentarzem „DANE DLA TEKSTU”. Pierwsza liczba jest zawartością komórki 53279 w momencie wciśnięcia wybranego klawi sza. Jeśli wykorzystujemy również klawisz HELP — do liczby tej należy dodać 17. Można również wykorzystać zmianę zawartości komórki 53279 przy równoczesnym wciśnięciu kilku klawiszy konsoli, jest to jednak niewygodne w użyciu. Pozostałe liczby to wartości liczbowe pisane go tekstu w kodzie ASCII. Po wprowadzeniu zmian w liniach „DATA” należy zmodyfikować również wartość sumy kontrolnej (zmienna SUM) oraz odpowiednio zmienić długość pętli czytających dane. Należy pamiętać, że cały program nie może mieć więcej niż 256 bajtów (jedna strona pamięci).
    Po przepisaniu programu należy przygotować magnetofon do zapisu i uruchomić program poprzez RUN. Jeśli był poprawnie przepisany, to zostanie zapisany na taśmie w formie BOOT przeznaczonej do ładowania poprzez wciśnięcie klawisza START w momencie włączenia komputera.
     

    Autor listingu: Tomasz Bigaj

    Listing nadesłał: Faust

    Język programu: Atari Basic

    Stan listingu:

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

    Przedstawiony program jest procedura zapisana w języku maszynowym służąca do przemieszczania danych w pamięci komputera.
    Istotna cecha programu to możliwość składowania zbiorów bajtów w obszarze wyłączonym z użycia przez ROM z interpreterem BASIC-a i systemem operacyjnym, a więc możliwość przechowywana danych w obszarach 40960-53247,
    55296—66529 (ostatnie sześć bajtów pamięć 65530—65535 jest zajęte przez wektory przerwań RESET). Procedurę wywołuje się przy użyciu następującej instrukcji:
    X = USR(1536,APD,APZ,IL), gdzie:
    APD - adres początku danych do przesłania,
    APZ - adres   początku    obszaru   zapisywania danych,
    IL - ilość bajtów do przesłania.
    Procedura SPEED TRANS może być wykorzystywana do różnych celów np. przechowywania kilku ekranów graficznych, składowanie informacji w bazach danych itd. W przypadku podania złej ilości parametrów lub wciśnięcia klawisza RESET podczas przesyłania bloku bajtów następuje powrót do BASIC-a. Z uwagi na możliwość działania w całej przestrzeni adresowej procedury tej należy używać rozważnie. Przesłanie przypadkowych danych do obszaru zmiennych systemowych lub do portów wejścia/wyjścia może spowodować zawieszenie pracy komputera. Procedura jest relokowalna, jej umieszczenie na szóstej stronie pamięci podytkowane było względami bezpieczeństwa. Jeśli po wpisaniu kodu do pamięci użyjemy POKE 1538,253, to podczas pracy program nie będzie odłączał pamięci ROM; POKE 1538.254 powoduje powrót do normalnego działania.
     

    Autor listingu: Marek Drążkiewicz

    Listing nadesłał: Faust

    Język programu: Atari Basic

    Stan listingu:

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

    Przedstawiony program służy do wglądania w pamięć komputera ATARI. Dzięki szybkości, z jaką działa, odzwierciedla na ekranie bieżący stan pamięci, a więc także wszystkie zmiany. Nareszcie możemy podejrzeć nerwowa pracę stosu (strona 1). na którym procedury obsługi przerwań mrowia się w nieustannej pracy, działalność zegarów POKEY'a (strona D2), czy sposób, w jaki PIA (strona D3) obsługuje drążki sterowe..

    Autor listingu: Janusz B.Wiśniewski

    Listing nadesłał: Faust

    Język programu: Atari Basic

    Stan listingu:

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

    Łukasz Knasiecki z Koszalina ma 12 lat i chodzi do VI klasy. Na konkurs „Mikrusek" przystał grę pod tytułem „Wilhelm Tell" napisaną na mikrokomputerze ATARI 800XL. Na ekranie ukazuje się postać strzelca z kuszą i chłopca z jabłkiem na głowie. Należy — przy pomocy drążka sterowego — ustawić strzelca w odpowiedniej pozycji i nacisnąć przycisk FIRE. Strzała powinna trafić w jabłko.
    Łukasz napisał nam, że jego program posiada zdefiniowane znaki graficzne, z których składają się postacie. Wersja przysłana do „Bajtka" wykorzystuje standardowe znaki komputera, gdyż definiowanie znaków zdecydowanie wydłuża program. Nic jednak nie stoi na przeszkodzie, by nasi czytelnicy zrobili to sami.

    Autor listingu: Łukasz Knasicki

    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
  • Zmieniacz napisów BFCH 2.0

    Prawie wszystkie programy dostępne dla mikrokomputerów pochodzą z zagranicy. Z tego powodu wszystkie napisy w takich programach są obcojęzyczne. Oczywiście każdy, kto choć raz miał do czynienia z komputerem, wie co znaczy SCORE. Ale dlaczego nie miałoby być napisane WYNIK.
    Poniższy program umożliwia skopiowanie programu z kasety lub dyskietki, wymianę napisów i ponowne zapisanie na kasecie lub dyskietce.
    Działanie programu jest bardzo proste. Na początku należy podać nazwę zbioru źródłowego i docelowego (dla magnetofonu C, dla stacji dysków D:NAZWA). Program nasz najpierw odczytuje kopiowany program traktując go jako ciąg znaków. Następnie żąda podania tekstu, który ma być usunięty, i tekstu, który ma być wstawiony na jego miejsce. Muszą one być tej samej długości

    Autor listingu: Wojciech Zientara

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Płynący napis

    Czytelnicy "IKS-a", będący posiadaczami mikrokomputera Atari, zauważyli zapewne w numerze 2/87 tego czasopisma program "Komputerowy teleexpress".
    Realizuje on uatrakcyjnienie posiadanych wcześniej programów przez dołączenie do nich strony tytułowej, czy też winiety. Ci Czytelnicy, którzy "wpalcowali" go na swoje Atari, stwierdzili z pewnością ograniczenia w wykorzystaniu tego programu, wynikające stąd, że został on napisany całkowicie w BASIC-u. Wyświetlany na ekranie tekst przeskakuje po literze, a nie jest płynnie przewijany. Ponadto w czasie, gdy program jest wykonywany, komputer nie może realizować innych działań, co jest istotnym mankamentem.
    Program, którego wydruk znajduje się obok, jest pozbawiony tych dwóch niedoskonałości. Pracuje on w kodzie maszynowym 6502 wykorzystując dostępne na Atari przerwania. Prawdziwie płynny przesuw tekstu jest możliwy do osiągnięcia dzięki sprzętowemu wspomaganiu przewijania obrazu.
     

    Autor listingu: Andrzej Błazik

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    0
    Listing niesprawdzony - świeżo po OCR lub przepisaniu
  • Kasetowy System Operacyjny

    Wady standardowych procedur obsługi magnetofonu kasetowego komputerów ATARI XL/XE sa dość kłopotliwe. Przypomnę tylko kilka z nich:
    1. Nie można nadawać nazw zbiorom zapisanym na taśmie.
    2. W trybie z długimi przerwami między rekordowymi taśma jest słabo wykorzystana — czas trwania przerw jest porównywalny z cza sem trwania rekordów
    3. Przy odczycie należy ustawić taśmę dokładnie na początek pliku, w przeciwnym razie wystąpi błąd transmisji.
    4. Po wykonaniu instrukcji OPEN przy zapisie niezależnie od rodzaju przerw taśma jest zapisywana tonem synchronizującym aż do emisji pierwszego bloku.
    5. Mała szybkość transmisji.
    Opracowany przeze mnie program eliminuje pierwsze cztery wady. Ponadto znacznie wzrasta szybkość transmisji w trybie z długimi przerwami (do dwóch razy). Użytkownik może samodzielnie regulować prędkość transmisji, która określana jest przez wartości wpisane do komórek 69 i 70. Prędkość transmisji określona jest wzorem
    V=895000((PEEK(69)+256xPEEK(70)) [bit/sek] (bez uwzględnienia wpływu przerw).

    Wartość tę można zmieniać, lecz naciśnięcie klawisza RESET spowoduje przywrócenie standardowej prędkości (około 700 bodów — standardowo 600 bodów).
    Zwiększenie efektywnej prędkości transmisji osiągnięto przez wprowadzenie rekordów zawierających 1024 bajty zamiast 128 jak dotychczas, co zmniejszyło wpływ przerw.
    K.S.O. może współpracować z językami ATARI BASIC, TURBO BASIC XL, ASSEMBLER-EDITOR

    Autor listingu: Wojciech Zabołotny

    Listing nadesłał: Dely

    Język programu: Atari Basic

    Stan listingu:

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

    Polacy nie gęsi i lubią gdy się do nich po ludzku gada. Dotyczy to też komputerów, które trzeba w tym celu przekonać, aby zaaprobowały kilka dodatkowych liter.
    Nowo narodzony ATARI XL/XE zna dwa zestawy znakowe. Oba liczą po 128 znaków i zajmują po 1 KB pamięci. Zestaw standardowy — ten, którego używasz na codzień — zajmuje adresy od 57344 do 58367 (EOOO-E3FF hex). Drugi 52224-53247 (czyli CCOO-CFFF hex) zwany jest międzynarodowym, gdyż zamiast znaków graficznych ATARI zawiera litery niemieckie, francuskie czy skandynawskie. Dla nas pociecha stąd żadna.
    Jedyne wyjście to zakasać rękawy i nauczyć ATARI czegoś nowego, czyli przedefiniować część znaków w zestawie. Ba — ale oba zestawy znajdują się w ROMie i żadne POKE nie pomoże. Trzeba zatem poświęcić 1 KB wolnej pamięci, przenieść całość z ROMu do RAMu i teraz dopiero zabrać się za rysowanie nowych znaków.

    Plik w formacie cas - pierwszy pierwotny listing, drugi z kodem wynikowym.
     

    Autor listingu: Krzysztof Leski

    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
  • Spis zawartości dyskietki i usuwanie plików bez dos-u

    Uzyskiwanie spisu zawartości dyskietki i usuwanie z niej zbędnych plików jest dość czasochłonne. Można tę pracę usprawnić przy pomocy poniższego programu. Po pierwsze nie trzeba wczytywać DOS-u. Po drugie spis zawartości dyskietki jest wyświetlany w dwóch kolumnach, można więc wyświetlić dwa razy więcej nazw plików zanim obraz zacznie się przesuwać. Po trzecie szybsze jest wybieranie zbiorów do usunięcia.
    Program zapisany jest w dwóch oddzielnych częściach. Część A zapisujemy na każdej dyskietce przez SAVE"D:DIR". Gdy chcemy uzyskać spis zawartości dyskietki, wystarczy podać instrukcję RUN"D:DIR".
    Oprócz tego można zapisać tę część na jednej dyskietce przez LIST"D:EDIR", co umożliwia dodanie jej potem do dowolnego programu znajdującego się w pamięci komputera (przez ENTER"D:EDIR"). W tym przypadku zawartość dyskietki będzie wyświetlana po instrukcji GOTO 31200. Wysokie numery linii programu mają zabezpieczyć przed ewentualną kolizją z programem aktualnie znajdującym się w pamięci (aby zabezpieczyć się przed takimi przypadkami można przyjąć zasadę, że największy numer linii w każdym programie nie może być większy niż 29999 — numery od 30000 są zarezerwowane dla programów pomocniczych: DIR, RENUM itd.)
    Obie części razem należy zapisać przez SAVE"D:USUW". W celu usunięcia pliku z dyskietki należy wczytać program (LOAD"D:USUW"), włożyć do stacji dyskietkę, z której chcemy usunąć plik i uruchomić program. Kolejno wyświetlane są nazwy plików zawartych na dyskietce. Naciśnięcie RETURN powoduie wyświetlenie następnej nazwy. Gdy chcemy usunąć plik, naciskamy klawisze CONTROL i U. Procedura ta jest kontynuowana, aż do wyświetlenia nazw wszystkich plików. Jeżeli popełnimy błąd, wystarczy tylko nacisnąć BREAK i uruchomić program ponownie. Usuwanie plików następuje dopiero po wyświetleniu wszystkich nazw i naciśnięciu klawisza U. Po zakończeniu usuwania plików ponownie wyświetlany jest spis zawartości dyskietki.

    Wg „COMPUTE!" 11/82
     

    Autor listingu: Wojciech Zientara (ziew)

    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
  • Tekst w trybie graficznym 8

    Przy wykonywaniu wykresów w trybie graficznym "8" często spotykamy się z problemem opisania rysunku. Okno tekstowe w dolnej części ekranu jest zwykle do tego celu niewystarczające. Poniższa procedura umożliwia umieszczenie tekstu w dowolnym miejscu ekranu.
    Po wpisaniu programu według przedstawionego wydruku należy przed uruchomieniem zapisać go na dysku lub kasecie. Program tworzy dwie nowe linie zawierające procedurę w języku maszynowym, a następnie kasuje sam siebie. Otrzymaną procedurę należy zapisać na kasecie przez L."C:" lub na dysku przez L"D:TEKST.LST". Można również do każdego nowego programu generować procedurę od nowa. korzystając z podanego programu.
    Pisząc program, w którym zamierzamy użyć tej procedury, musimy pominąć linie 10 i 20, gdyż numery te mają linie procedury.
    Aby użyć procedury należy podać w programie instrukcję:
    A = USR(ADR(PT$),PX,PY,ADR(T$),LEN(T$))
    gdzie PX oznacza współrzędną x pierwszego znaku, PY — współrzędną y, a T$ — ciąg znaków (tekst), który ma być wyświetlony. Współrzędne x i y są obliczane tak jak w trybie "0" (tzn. x - 9÷39, y = 0÷21(23)).

    Autor listingu: Wojciech Zientara

    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
  • Nie bój się przerwań cz. 1

    Wiele osób, nawet od dłuższego czasu mających kontakt z mikrokomputerami, dostaje "gęsiej skórki" słysząc słowo PRZERWANIE.
    Postaram się udowodnić, że nie jest to nic strasznego. Zaczniemy od najprostszego przerwania wywoływanego przez program ANTIC-a (mikroprocesora tworzącego obraz).
     

    Autor listingu: Wojciech Zientara

    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
  • Nessie

    Bohaterem gry jest wężowe cielsko z małą głową — mieszkaniec słynnego szkockiego jeziora — zwinnie umykające przed naszym celownikiem. Siedzimy w znacznej odległości od gada, więc strzał z nieruchomej pukawki trzeba oddać z wyprzedzeniem, celując w miejsce, gdzie stwór dopiero będzie, gdy kula do niego doleci. Strzelamy naciskając dowolny klawisz (najwygodniej klawisz spacji). Mimo prostych zasad gra nie jest wcale łatwa i ustrzelenie ośmiu potworów dwunastoma pociskami należy uznać za spory sukces.

    Autor listingu: Janusz Wiśniewski

    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.