Ready/Run

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

Listingi w bazie
Dodaj listing
  • Sprite'y, ramka i Basic

    Ciekawe efekty graficzne, jakie pozwala nam uzyskać układ kontrolera wizji C-64, stały się ostatnio domeną grup młodych ludzi zajmujących się tworzeniem tzw. „demosów”, rozpowszechnianych poprzez duże sieci komputerowe.


    Co ciekawsze efekty wizualne osiągane w tych programikach biją niejednokrotnie na gtowę duże i rozbudowane programy wytwórni-rekinów takich jak Electronic Arts czy Access. Zobaczymy więc jak wygląda taki program od kuchni...
    Sprite'y wyświetlane na ramce są jednym z przykładów wykorzystania przerwań graficznych, W normalnych warunkach pozycję sprite'a możemy określić dowolnie, jednakże, jeśli znajdzie się on na ramce, nie będzie on na ekranie widoczny. Dzięki przerwaniom graficznym ekran można rozszerzyć, co ilustruje program 1. W procedurze RAST2 ekran jest rozszerzany do 25 wierszy. W momencie wyświetlania 25 wiersza generowane jest przerwanie graficzne i wykonywana jest procedura RAST1 zwężająca ekran do 24 wierszy. W ten sposób układ graficzny nie jest w stanie odnaleźć końca ekranu (którym jest normalnie właśnie 25 wiersz; jeśli tylko kolory samej ramki i tła nie są jednakowe, to z pewnością zauważysz wyraźne rozszerzenie się ekranu).
    Dużo trudniejszą, ale nie niemożliwą sprawą jest rozszerzenie poziome ekranu. Wymaga to zmiany liczby kolumn z 40 na 39 w każdej linii, którą chcemy mieć rozszerzoną. W tak rozszerzonym obszarze mogą znajdować się jedynie sprite'y- Ekran możemy teraz wykorzystać w dowolny sposób — wyświetlając dowolny tekst czy np. czas. >
    W programie 2 chciałbym zaprezentować Czytelnikom nieco inny sposób wykorzystania sprite'ów na ramce — wyświetla on zamiast tekstu numer aktualnie wykonywanej linii Basic. Pomimo korzystania ze sprite'ów program przez cały czas „pamięta” ich właściwe pozycje; w naszym programie w BASIC możemy więc korzystać ze sprite'ów, zmieniać tryby graficzne, kolory, itp., i nie będzie to przeszkadzało głównej funkcji wyświetlania numeru linii na ramce. Numer aktualnie wykonywanej linii programu znajduje się w wektorze S39/S3A. Ponieważ BASIC jest na tyle szybki, że czasem numer linii jest nie do odczytania, rozszerzyłem w swoim programie działanie klawisza CTRL — jego wciśnięcie powoduje zatrzymanie wykonywania programu (napisanego w BASIC). Program 2 wykorzystuje pamięć od adresu SC000 do SC6FF oraz komórki SFD, SFF i SFF.


    Od redakcji: Powyższy program (nr 2) stanowi najlepszy przykład, że można połączyć przyjemne z pożytecznym — program ten to po prostu dodatkowe i efektownie wykonane polecenie TRACE... Przy okazji chcielibyśmy sprostować błąd jaki wkradł się z naszej winy do artykułu tego samego autora w numerze specjalnym BAJTKA TYLKO O COMMODORE — przerwania graficzne można zablokować poprzez polecenie LDA #$FF, a nie jak podaliśmy przez LDA S7F (artykuł „Przerwania graficzne”, str. 13). Serdecznie przepraszamy. Wydruk wersji maszynowej programu 1 został sporządzony za pomocą programu Commodore Macroassembler Development System.

    Autor listingu: Jacek Czok

    Listing nadesłał: Faust

    Język programu: Commodore Basic

    Stan listingu:

    4
    Listing gotowy - uruchamia się na emulatorze lub realnej maszynie zgodny z listingiem zamieszczonym w periodyku
  • Drukowanie całego ekranu

    Często widziałeś na pewno gry lub inne programy, w których podczas ładowania można podziwiać obrazek znajdujący się na ekranie.

    Próbowałeś może także skopiować ten obrazek na drukarce, lecz pewnie nie udało ci się to w całości — instrukcja COPY „obcina” dwa dolne wiersze. Jeśli zamiast „COPY” użyjesz przedstawionego poniżej programu, uzyskasz wydruk całego ekranu — razem z zawartością tych dwóch wierszy. Pamiętaj tylko, żeby nie zatrzymywać programu, gdy na ekranie znajduje się obrazek, który chcesz uwiecznić, gdyż komunikat o zatrzymaniu programu skasuje zawartość tych linii i będziesz musiał jeszcze raz wczytywać obrazek z magnetofonu. Ten sam obrazek możesz kopiować wielokrotnie naciskając dowolny klawisz, za wyjątkiem „n”, które spowoduje załadowanie następnego obrazka

    Autor listingu: (ts)

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

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

    Każdy użytkownik Spectrum, który chciał zrobić chociażby komputerowy spis telefonów znajomych i mozolnie wprowadził zaprojektowane przez siebie polskie litery natyka się na problem: jak zmusić komputer aby układał wyrazy według polskiego alfabetu?

    Kłopot jest spowodowany tym, że Spectrum (a także inne komputery) SORTUJE WYRAZY WEDŁUG kodów ASCII POSZCZEGÓLNYCH liter, a polskie znaki nie są w nim umieszczone. Najprostszym rozwiązaniem mogłoby się wydawać przerobienie generatora znaków przez umieszczenie w nim kolejno liter polskiego alfabetu, jednak to utrudniłoby korzystanie z klawiatury. W takim przypadku jednym z lepszych rozwiązań jest dołączenie do programu dwóch poniższych procedur. Mają one też dodatkową zaletę, że można z ich pomocą sortować wyrazy np. po niemiecku czy rosyjsku (po niewielkich przerób-kach dadzą się też przystosować do innych komputerów). Oto one:
    Teraz o praktycznym wykorzystaniu procedur:
    Przed programem głównym należy umieścić w tablicy alfabet, wg którego wyrazy będą sortowane (ze spacją na początku!) a następnie przekodować wyrazy (najlepiej zrobić to zaraz po wczytaniu wyrazu, gdyż program ten działa dosyć wolno, a na taśmie przechowywać wyrazy zakodowane), np.: LET z$ = a$(x): GOSUB 9990: LET a${x)=z$. gdzie tablica ai zawiera wyrazy, a x to zmienna sterująca pętli. Teraz następuje sortowanie (aby je przyspieszyć, pożądane jest użycie programu maszynowego — takiego jak np. z nr 5/ 87 „Komputera") i wysyłanie danych na ekran, np.: LET z$=a$(x):GOSUB 9995:PRINTz$
    Myślę, że teraz nasza „książka telefoniczna” będzie lepiej spełniała swoje zadanie, wykazując przy okazji iż Polacy nie gęsi...
     

    Autor listingu: Andrzej Wawrzyńczyk

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

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

    Prezentowany program umożliwia płynne (a nie skokowe jak w przypadku „scroll") przesuwanie zawartości ekranu do góry.

    Wykorzystana została przy tym procedura z ROM-u zawarta pod adresem 8874 (#22AA), przeliczająca współrzędne punktu na jego adres w pamięci ekranu. Program zamienia współrzędne początku danej linii (przechowywane w rejestrze BC) oraz linii o jedną pozycję wyżej na adresy (umieszczane w rejestrze HL) i przesuwa całą linię (32 bajty) pod nowy adres. Tę procedurę uruchamia RANDOMIZE USR 32000. Procedura, zaczynająca się od adresu 32040, przerzuca zawartość pamięci ekranu wraz z atrybutami pod adres 36384, skąd można ją z powrotem „wsunąć” płynnie na ekran przez RANDOMIZE USR 32052, a następnie pokolorować przez RANDOMIZE USR 32080. Działanie podprogramu, rozpoczynającego się od adresu 32052, oparte jest na podobnej zasadzie z tym, że „nową” linię stanowi zawsze najniższa linia ekranu. Kolorowanie obrazu (RANDOMIZE USR 32040) polega na przemieszczeniu zawartości pamięci ekranu rozkazem ldir. O ile pierwsza z procedur może pracować samodzielnie, to pozostałe wymagają obecności pierwszej. Program może obsługiwać obrazy o długości do 22 wierszy. Wszystkie procedury napisane zostały w kodzie maszynowym, lecz można je wczytać z poziomu BASIC-a korzystając z poniższego programu ładującego, który zawiera również przykład praktycznego zastosowania programu.

     

    Autor listingu: Grzegorz Krupa

    Listing nadesłał: Faust

    Język programu: Basic

    Stan listingu:

    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
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.