Bajtek 9/1986
Bajtek 9/1986 v0.8

To był najdłużej reduksowany numer - ba, nie przez jakieś niesamowite skomplikowanie numeru tylko chroniczny brak czasu jaki mnie dopadł w AD2013 - praca, rodzina, dom... niestety proza życia to największy kat wszelkiej maści dodatkowych zajęć, jak na ...

Zobacz stronę związaną z tym artykułem w Reduksach Try2emu
Spis treści:
Listingi dołączone do numeru w ReadyRun

Klan Commodore

Klaudiusz Dybowski

Poradnik młodego pirata cz. II

Czy wiesz drogi Czytelniku w jaki sposób Twój Commodore rozpoznaje daną konfiguracje pamieci?

 

 

Służą mu do tego celu komórki o adresach 43, 44, 45, 46, 55, 56 ($, 2B, 2C, 2D, 2E, 37 i 38). Tak naprawdę to system operacyjny zbiera dane ze znacznie większej ich ilości, ale wszystkie powyżej wymienione mają kluczowe znaczenie przy rozpoznawaniu konfiguracji. Poniżej zamieszczamy ich skrótowy opis:

43—44 ($2B—2C) — określają początek pamięci RAM przeznaczonej dla użytkownika. Od adresu (zawartego w tych komórkach) będzie przechowywany Twój program.

45—46 ($2D—2E) — określają adres pierwszej komórki pamięci po zakończeniu    Twojego programu (nie mylić z końcem pamięci!) oraz początek   obszaru   pamięci   przeznaczonego dla zmiennych. 

55—56 ($37—38) —  zawierają najwyższy nieprzekraczalny adres pamięci, w której działa interpreter języka BASIC. 

Możliwość regulacji obszaru pamięci, w której działa BASIC jest dla nas bardzo przydatna w wielu przypadkach. Wyobraźmy sobie bardzo długi program, zawierający np. wielką ilość danych np. dla sprite'ów. Wykorzystaliśmy już cały dodatkowy obszar pamięci od adresu 49152 do 53247 ($C000 — CFFF) i potrzebujemy jeszcze 300 bajtów, ale z gwarancją niezakłócania tego obszaru przez np.  BASIC. Wystarczy wtedy tylko obniżyć górną granicę o rzeczone 300 bajtów.

Liczby zawarte w opisywanych komórkach zapisane są w standardowej formie — niższy bajt i wyższy bajt. Odczytać je można za pomocą funkcji PEEK (X). Jak jednak wylicza się z nich adres? Bardzo prosto. W tym celu należy pomnożyć wartość wyższego bajtu przez 256 i do otrzymanego wyniku dodać wartość niższego bajtu.

PRINT PEEK (46) 256 + PEEK (45)
2051
READY.

Komórki o adresach 43, 45 i 55 zawierają zawsze młodszy bajt zaś 44, 46 i 56 starszy. Dla wprawy możesz spróbować wpisać jakiś krótki program i sprawdzić do której komórki w pamięci on sięga. Wystarczy jeżeli po jego wpisaniu napiszesz:

 

PRINT PEEK (43) + PEEK (44) * 256: REM POCZATEK
PRINT PEEK (45) + PEEK (46) * 256: REM KONIEC PROGRAMU
+ 1 PRINT PEEK (55) + PEEK (56) * 256: REM KONIEC PAMIECI

 

Jeżeli chcesz poeksperymentować to usuń teraz z programu którąś linię i wykonaj powyższą operację ponownie; zobaczysz wtedy jak obszar pamięci zajmowany przez Twój program zmniejsza się.

Czy to już wszystko? Oczywiście, że nie. Nie wolno nam przecież zapominać o zmiennych, których wartości komputer musi także gdzieś przechowywać. Wydzielonym do tego miejscem jest obszar pamięci zaczynający się bezpośrednio po końcu Twojego programu + 1. Innymi słowy, jeżeli obliczony z komórek adres wynosi np. 10167 oznacza to, że od tego adresu zaczyna się Twój obszar dla zmiennych, podczas gdy program kończy się w komórce 10166. Podczas wprowadzania poprawek (np. usuwanie czy wpisywanie linii programu) system operacyjny w ogóle się tym obszarem nie zajmuje; rozkaz RUN jest zawsze poprzedzony wykonaniem procedury CLR kasującej wartości wszystkich zadeklarowanych zmiennych.

Sprawa byłaby prosta, gdyby takie ułożenie obszaru pamięci dla zmiennych dotyczyło wszystkich ich rodzajów. Niestety (ku utrapieniu!) o ile zmienne numeryczne są przechowywane właśnie w ten sposób — czyli zaraz po końcu programu — o tyle zmienne łańcuchowe (np. OK$ = „BAJTEK”) przechowywane są w sposób zgoła odmienny. Wydzielony dla nich obszar zaczyna się zawsze od adresu określonego w komórkach 55 i 56 i zbiega w DÓŁ w miarę deklarowania następnych zmiennych tego typu: Na pewno podczas przegrywania programów na inną kasetę zdarzył Ci się kiedyś taki zabawny przypadek: napisałeś SAVE „nazwa” bądź ←S „nazwa” i... komputer nagle zasygnalizował Ci błąd braku pamięci!

 

?OUT OF MEMORY ERROR
READY.

 

Jeżeli byłeś uparty to już po paru próbach odkryłeś sposób na Twój krnąbrny program — wystarczyło go zapisać bez tytułu. Tym razem odpowiedź komputera brzmiała prawidłowo:

 

PRESS RECORD AND PLAY ON TAPE

 

Co się właściwie stało?

Otóż tytuł każdego programu jest traktowany jako specyficzna zmienna łańcuchowa, która jest przechowywana w obszarze pamięci przeznaczonym dla tego typu zmiennych. Błąd braku wolnej pamięci sygnalizowany był prawidłowo, gdyż widocznie przepisywany program nie pozostawił już miejsca w pamięci na wpisanie jego tytułu. Innymi słowy konfiguracja pamięci wyglądała następująco:

Czasami wystarczy tylko zredukowanie ilości znaków w tytule, czasami zaś program nie da się przepisać w żaden sposób. Warto także zaznaczyć, że wpisanie programu bez tytułu możliwe jest jedynie na taśmie, gdyż system operacyjny dysku w żaden sposób nie pozwoli na wpisanie na dyskietkę programu pozbawionego tytułu. Spróbujmy doświadczalnie zbadać zapis z tytułem i bez niego. W tym celu musimy się posłużyć małym oszustwem, gdyż wpisywanie tak długiego programu byłoby nonsensem; ponieważ już wiesz, które komórki decydują o końcu programu, możesz ich użyć do podstępnego okłamywania komputera:

 

POKE 43,1: POKE 44,8: REM USTAWIANIE POCZĄTKU PAMIĘCI
POKE 44,255: POKE 46,169: REM ADRES KOŃCA PROGRAMU – 40959 
CLR: REM NIEZBĘDNE DO USTAWIENIA POCZĄTKÓW OBSZARÓW DLA ZMIENNYCH

 

Teraz — po upewnieniu się, że kaseta w magnetofonie może być skasowana — spróbuj zapisać swój „program” na taśmie:

 

SAVE "TEST 1" (lub ←S "TEST 1") 
?OUT OF MEMORY ERROR 
READY.

 

Widzisz? Nie ma już miejsca w pamięci, aby Twój „tytuł” zapisać. Spróbujmy więc go odrzucić:

 

SAVE (lub ←S)
PRESS RECORD AND PLAY ON TAPE

 

Tym razem komputer nie sygnalizuje już błędu ...

Klaudiusz Dybowski

Połączone artykuły
„Poradnik młodego pirata cz. I”
Klaudiusz Dybowski, Michał Silski - Bajtek 8/1986

Poniższy artykuł (a właściwie pierwszą jego część) przeznaczamy dla tych wszystkich, którzy myślą o ekonomicznym wykorzystaniu swoich dyskietek zaśmieconych programami działającymi równie dobrze z taśmy. Ponadto autorzy opisują jak uczynić „nieprzegrywałne” przegrywalnym — czyli po prostu jak kopiować programy dyskowe o długości do 207 bloków. Wielokrotnie mieliśmy już okazję spotkać świeżo upieczonych posiadaczy Commodore 64 łamiących sobie głowę nad opracowaniem złotego sposobu umożliwiającego przegrywanie programów dyskowych na taśmę. Najczęściej oczywiście chodziło o tak renomowane gry jak „Kennedy Approach”, „Summer Games” czy też „Silent Service”, rzadziej zaś o jednoczęściowe programy mające po 200 i więcej bloków (1 blok — 256 bajtów). Znajdowali się również chętni do przegrywania programów kilku-częściowych, wgrywanych kolejno do pamięci za pomocą krótkiego programu wczytującego, tzw. loadera.

„Poradnik młodego pirata cz. II”
Klaudiusz Dybowski - Bajtek 9/1986

Czy wiesz drogi Czytelniku w jaki sposób Twój Commodore rozpoznaje daną konfiguracje pamieci?    

Czytaj także w dziale Klan Commodore
„SAM”
(M.S.) - Bajtek 11/1986

Od dłuższego czasu wśród użytkowników C-64 krąży program syntezy mowy „SAM”. Program ten dodaje do zbioru komend BASIC-a kilka własnych rozkazów, pozwalających na uzyskanie całkiem poprawnie brzmiącej mowy. Niestety, bardzo niewielu osobom udało się zdobyć informacje o działaniu tego programu, który przez to bardzo rzadko jest wykorzystywany. Poniżej podaje spis komend oraz sposób ich użycia.

„Poradnik młodego pirata cz. 4”
(Ted) - Bajtek 11/1986

Uff! Po tak solidnej dawce teorii warto by było trochę odpocząć i przejść do nieco innej tematyki — jakie programy nadają sie do przepisania na taśmę.    

Poradnik młodego pirata cz. 4
„Przenieść Obraz”
Klaudiusz Dybowski - Bajtek 1/1988

Choć poszczególne modele Commodore różnią sie od siebie, to maja one także jedna cechę wspólna — jest nią grafika o rozdzielczości 320x200 punktów. Dla entuzjastów grafiki mam wiec coś ekstra — sposób przenoszenia obrazów graficznych pomiędzy modelami C-64, C-16 /116/PLUS4 i C-128.

Przenieść Obraz
„C-64 budowa i działanie”
Klaudiusz Dybowski, Michał Silski - Bajtek 3-4/1986

Dobry mikrokomputer to taki, który jest tani, ma bogate oprogramowanie dostępne w kraju, przystępny język programowania i duże możliwości rozbudowy w kierunku małego systemu. Przedstawiamy Commodore 64, mikrokomputer spełniający wszystkie powyższe wymogi, cieszący się w Polsce dużą (i zasłużoną) popularnością. Oczywiście, że określenie „tani", odnosi się do porównania z cenami innych, podobnych urządzeń, a nie do niskiej ceny w ogóle.  

C-64 budowa i działanie
„Poradnik młodego pirata cz. I”
Klaudiusz Dybowski, Michał Silski - Bajtek 8/1986

Poniższy artykuł (a właściwie pierwszą jego część) przeznaczamy dla tych wszystkich, którzy myślą o ekonomicznym wykorzystaniu swoich dyskietek zaśmieconych programami działającymi równie dobrze z taśmy. Ponadto autorzy opisują jak uczynić „nieprzegrywałne” przegrywalnym — czyli po prostu jak kopiować programy dyskowe o długości do 207 bloków. Wielokrotnie mieliśmy już okazję spotkać świeżo upieczonych posiadaczy Commodore 64 łamiących sobie głowę nad opracowaniem złotego sposobu umożliwiającego przegrywanie programów dyskowych na taśmę. Najczęściej oczywiście chodziło o tak renomowane gry jak „Kennedy Approach”, „Summer Games” czy też „Silent Service”, rzadziej zaś o jednoczęściowe programy mające po 200 i więcej bloków (1 blok — 256 bajtów). Znajdowali się również chętni do przegrywania programów kilku-częściowych, wgrywanych kolejno do pamięci za pomocą krótkiego programu wczytującego, tzw. loadera.

„C-128”
Przemysław Koziarski - Bajtek 9/1986

Zaczęło sie w styczniu 1985 w Las Vegas (USA). Wtedy to firma Commodore zaprezentowała 3 nowe mikrokomputery: Commodore PC-128. Commodore PC-128D i Commodore LCO. Commodore LCO jak dotąd nie pokazał się w sklepach, natomiast podróż PC-128 z USA do Europy trwała przeszło pół roku. Na początku lipca 1985 trafił na półki sklepowe i do katalogów domów wysyłkowych, ściślej biorąc miał trafić, bo w sklepach pojawiły się tylko pojedyńcze egzemplarze. Firma milczała, handlowcy i domy wysyłkowe też, a chętni na PC-128 ostrzyli sobie zęby i ... czekali. Krążyły różne plotki: Commodore zbankrutował, cała partia komputerów jest uszkodzona itd. Milczenie i niepewność trwały do początku października 1985. Firma wyjaśniła, że przyczyną opóźnienia w dostawie był bład w pamięci ROM.      

„Poradnik młodego pirata cz. II”
Klaudiusz Dybowski - Bajtek 9/1986

Czy wiesz drogi Czytelniku w jaki sposób Twój Commodore rozpoznaje daną konfiguracje pamieci?    

„Polski alfabet cz.l ”
(ms) - Bajtek 10/1986

Dla przekonania tych, którzy twierdza, że bez polskiej pisowni można sie obejść, zamieszczam przykład zaproponowany przez prof. W. M. Turskiego: „ZADANIE KATA NA LACE”. Sposobów interpretacji tego zdania jest na tyle dużo, aby straciło ono sens w ogóle.    

„Poradnik młodego pirata cz. V”
Klaudiusz Dybowsk, Michał Silski - Bajtek 12/1986

Na zakończenie naszego "Poradnika" chcielibyśmy omówić pokrótce podstawowe sposoby zabezpieczania programów. Ze zrozumiałych względów nie będziemy sie wdawać w szczegóły techniczne - chodzi nam raczej o zasygnalizowanie pewnych metod używanych do zabezpieczania.

„Monitory Ml — Część II”
Klaudiusz Dybowski - Bajtek 1/1989

W poprzedniej części mówiliśmy o monitorach generalnie. Dziś pora na listę instrukcji i pierwsze przykłady.

„Modem I Sprawa Polska”
Artur Bychowski - Bajtek 1/1989

Prywatni użytkownicy, właściciele oraz ci, którzy zamierzają nabyć modem do swego mikrokomputera mają zwykle kilka podstawowych wątpliwości związanych z legalizacją działalności na łączach telefonicznych. Czy dany modem był już w kraju homologowany? Jakie są przepisy dotyczące korzystania z modemów? Gdzie takie urządzenia zarejestrować? — to tylko kilka pytań, na które postaram się w tym artykule odpowiedzieć.

„Zasilacz Do Commodore C64”
Zbigniew Kaszycki - Bajtek 1/1989

Jedną z dość częstych przyczyn unieruchomienia komputera jest uszkodzenie zasilacza. Sprzyjają temu przede wszystkim jego zwarta budowa i związane z nią niekorzystne warunki chłodzenia prowadzące w rezultacie do przegrzewania się stabilizatora i transformatora a ich uszkodzeń.

„Łańcuchowanie Programów”
Krzysztof Gajewski, Bogusław Radziszewski - Bajtek 1/1989

Zmorą małych komputerów jest mała pamięć. W mikrokomputerze Commodore 64 pracującym pod kontrolą firmowego interpretera prowadzi to do pojawienia się błędu OUT OF MEMORY, który bardziej irytuje niż inne, bowiem tylko częściowo winowajcą, w przypadku gdy wystąpi, jest programista.

„EMULATOR C-64 DLA AMIGI”
Jan Jasiński - Bajtek 2/1989

Amiga i jej oprogramowanie jest przedstawiane dość skromnie i sporadycznie w prasie krajowej, czas więc na pierwszy solidny test tego komputera w naszych polskich warunkach. Test ten będzie dotyczył programu emulującego C-64 na Amidze.

„Język maszynowy”
Dominik Falkowski - Bajtek 2/1989

Opisy monitorów, które już się pojawiły w klanie COMMODORE, zasygnalizowały zamiar rozpoczęcia cyklu nauki programowania w języku maszynowym. Zanim kolejne wykłady zyskają w miarę jednostajny rytm, potrzebne będzie wprowadzenie kilku pojęć i terminów, które będą nam potrzebne w następnych wykładach. Umożliwią one pełniejsze zrozumienie metod programowania w powiązaniu z architekturą komputera.

„Bhp Virus Killer”
Klaudiusz Dybowski - Bajtek 3/1989

Wydawać by się mogło, że wirusy komputerowe dotyczą tylko sprzętu "poważnego" — IBM, AMIGI czy Atari ST. Niestety również i poczciwe komputerki 8-bitowe są podatne na tę zarazę i choć działanie wirusów odnosi się do nich w znacznie mniejszym zakresie, to jednak ich uderzenie może być dla użytkownika dość bolesne.  

„Magnetofon Też Człowiek”
Zbigniew Kaszycki{SP8IC} - Bajtek 3/1989

Mimo iż stacje dysków są coraz bardziej popularne, magnetofon długo jeszcze będzie służył wielu użytkownikom jako tania pamięć masowa. Warto więc poświęcić mu nieco uwagi i troski aby jego eksploatacja była długa i bezawaryjna.    

„1750 RAM Expansion Module”
Klaudiusz Dybowski - Bajtek 4/1989

Dzięki uprzejmości jednego ze stałych Czytelników BAJTKA otrzymatem do testowania kartkę rozszerzającą pamięć o 512 KB o nazwie „1750 RAM EXPANSION MODULE“ przeznaczona dla Commodore 128.    

„Porady spod lady”
Klaudiusz Dybowski - Bajtek 4/1989

Po dwóch latach używania mojego C-64 komputer reaguje dość dziwnie na wciśnięcie klawisza RETURN. Czasami zdarza się, że nie reaguje wogóle, czasami natomiast jedno wciśnięcie powoduje przesunięcie kursora nawet o trzy, cztery linie w dól (...