Bajtek 2/1989
Bajtek 2/1989

Czas najwyższy coś tekstowego dodać do tego reduksu;) Bajtek 2/1989 powstawał w bólach i przede wszystkim na raty. Jak zwykle pojawiło się sporo problemów z materiałem graficznym — zwłaszcza z okładką, co niestety widać gołym okiem. ...

Zobacz stronę związaną z tym artykułem w Reduksach Try2emu
Spis treści:

Klan Commodore

Dominik Falkowski

Język maszynowy

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.

Bardzo często zadając pytanie typu „Jakiego języka programowania chciałbyś się nauczyć?” słyszę w odpowiedzi „Języka maszynowego”. Dlaczego właśnie tak duże jest zainteresowanie tym językiem w porównaniu z językami wyższego rzędu typu BASIC, PASCAL, FORTRAN. Otóż jak mi się wydaje są tego trzy przyczyny. Po pierwsze ze względu na szybkość. Programy napisane w języku maszynowym są najszybszymi programami, jakie możemy uruchomić na danym mikrokomputerze. Po drugie ze względu na ich uniwersalność. Każdy język wyższego rzędu nakłada pewne ograniczenia (większe lub mniejsze) natomiast język maszynowy daje pełną swobodę programiście. W tym właśnie celu niektóre języki wyższego rzędu dają możliwość uruchamiania procedur pisanych w języku maszynowym np. instrukcja INLINE w Turbo Pascalu.

Po trzecie ze względu na to, że komputer faktycznie pracuje tylko i wyłącznie w języku maszynowym i kluczem do zrozumienia zasad ]ego działania jest właśnie ten język.

Czy język maszynowy jest trudny? Raczej nie. Poszczególne instrukcje wykonują bardzo proste działania typu: pobierz liczbę, zapamiętaj liczbę, pomnóż daną liczbę przez dwa itp. Dlatego potrzeba wielu takich instrukcji, by zrealizować zadanie, które często w języku wyższego rzędu realizowane jest przez jedną instrukcję. Ponieważ te instrukcje są właśnie tak proste, są one jednocześnie łatwe do zrozumienia i przyswojenia. Niektórzy programiści, którzy zaczynali od programowania w języku maszynowym, uważają np. BASIC za język nie do opanowania. Dla nich instrukcje w języku maszynowym są precyzyjne i jasne w odróżnieniu od BASICa, w którym to instrukcje i polecenia są niezrozumiałe, skomplikowane.

Do czego niniejszy kurs Cię doprowadzi? Zakończysz go mając pojęcie, na czym polega programowanie w języku maszynowym oraz poznasz podstawy tego programowania. Na pewno nie będziesz ekspertem, ale przestaniesz się obawiać tego tajemniczo brzmiącego języka i będziesz w stanie dać sobie radę sam w przyszłości. Czy nabyta wiedza będzie ukierunkowana tylko i wyłącznie na komputery firmy COMMODORE? Kurs bazować będzie na tych komputerach, ale ponieważ wszystkie komputery działają podobnie nie będziesz miał Czytelniku większych problemów przy zgłębianiu języka maszynowego procesorów Zilog, Motorola, Intel. Będzie to już dla Ciebie tak proste i naturalne jak kolejna zmiana magnetofonu czy samochodu Podstawy są wszędzie takie same.

Na koniec tego wstępu chciałem rozwiać wątpliwości tych, którzy nie znają jeszcze żadnego języka programowania, Przystępując do nabywania wiedzy podczas tego kursu nie musisz być wybitnym znawcą BASICa. Takie pojęcia jak podprogram, pętla, instrukcja warunkowa czy rozgałęzienie programu na pewno Ci się przydadzą choć ich znaczenie będzie podczas kursu powtórzone i wyjaśnione. A więc do pracy!

Podstawowe pojęcia

Wszystkie komputery zawierają olbrzymie liczby obwodów elektrycznych. W każdym komputerze binarnym obwody te mogą znajdować się w dwóch stanach — włączony i wyłączony. Elektronik powiedziałby, że napięcie zostało podane (włączone) lub też nie zostało podane (wyłączone) choć w tym drugim wypadku matematyk twierdziłby, że zostało podane napięcie zerowe. W każdym razie operujemy dwoma stanami: włączony i wyłączony, TAK i NIE, PRAWDA i FAŁSZ, 1 i 0. Szczególnie ten ostatni przypadek jest elegancki, wygodny i ma postać numeryczną. Jeżelibyśmy mieli osiem obwodów, z których niektóre byłyby włączone a inne nie, to stan całości moglibyśmy opisać jako np. 11000111. Oznaczałoby to, że pierwsze dwa są pod napięciem, trzy kolejne nie i ostatnie trzy ponownie pod napięciem. Wartość 11000111 przypomina liczbę. Faktycznie jest to liczba binarna, zapisana przy podstawie 2, w której jedynymi cyframi dozwolonymi są 1 i 0. Liczba ta nie ma nic wspólnego z dziesiętną liczbą o wartości trochę większej od 11 milionów i dlatego dla odróżnienia przed liczbą binarną stawiamy znak procenta %11000111. Każdą z cyfr słowa binarnego nazywamy bitem (od Binary digit), natomiast układ ośmiu bitów to bajt (byte). Pozycje bitów w bajcie numerowane są od prawej do lewej poczynając od bitu 0 do bitu 7 czyli od bitów najmniej znaczących do bitów bardziej znaczących. Taka metoda opisu znajdzie swoje uzasadnienie później.

Jest rzeczą popularną by grupować obwody elektryczne. „Druty” łączą kolejne układy scalone. Tam gdzie grupa przewodów używana jest razem do połączenia kilku różnych punktów mówimy o szynie lub magistrali. W komputerach COMMODORE stosowane są następujące mikroprocesory firmy MOSTEK: VIC-20 = 6502, C-64 = 6510, PLUS/4-7501, C-128 = 8502. Wszystkie one są do siebie bardzo podobne i dlatego będziemy odnosić się do nich jako do rodziny 65xx (wszelkie odstępstwa będą sygnalizowane). Rozważmy przykład szyny używanej w każdym układzie 65xx. Układ ten nie ma prawie wogóle własnej pamięci. Aby wykonać obliczenie czy też kolejny krok programu procesor musi zażądać adczytu informacji z pamięci. W tym celu wysyła on układ napięć po szynie adresowej (16 ścieżek) dających nam adres komórki w pamięci, z którą mikroprocesor chce się porozumieć. Wszystkie układy pamięci podłączone są do tej szyny, ale tylko jedna komórka na dany adres odpowie „To ja” i prześle kopię zawartych w niej informacji poprzez szynę danych. Jak już powiedziałem szyna adresowa jest 16-bitowa natomiast szyna danych, po której przesyłane są dane do i z pamięci jest 8-bitowa.

Zakres liczbowy

Szyna adresowa posiada 16 bitów, z których każdy może przyjmować wartość 0 lub 1. Największa liczba jaką można więc zmieścić w 16 bitach wynosi 216=65536 tzn., że liczby przesyłane po tej szynie są z zakresu 0-65535. Te wielkości tłumaczą dlaczego procesor 8bitowy jest w stanie jednorazowo zaadresować 65536/1024 = 64K pamięci. Szyna danych składa się z 8 bitów co oznacza, że największa liczba jaką można po niej przesłać wynosi 28 = 256 (wartość 0-255).

Inne układy liczenia

Zamiana liczb między systemem dziesiętnym a binarnym jest rzadko stosowana. Programiści częściej i chętnie) posługują się systemem szesnastkowym czyli heksadecymalnym (przy podstawie 16). Dlaczego akurat ten system? Komputer posługuje się systemem czysto binarnym, ale gdyby programiści między sobą mówili np. „adres %1001101011100111” to prowadziłoby to do wielu błędów i nieporozumień szczególnie w dobie komputerów 32bitowych. Dlatego właśnie system szesnastkowy, wywodzący się w prostej linii od binarnego (24=16) okazał się prostszy dla ludzi, a przejście na układ binarny jak się zaraz okaże nie nastręcza żadnych większych problemów. W układzie szesnastkowym posługujemy się cyframi 0,1,2,3,4,5,6,7,8,9 i literami A,B,C,D,E,F gdzie A oznacza 10, B oznacza 11 a F 15.

Aby liczbę binarną przedstawić w postaci szesnastkowe] należy liczbę podzielić na grupy po 4 bity poczynając od prawej strony. Dla podanego powyżej adresu mamy więc 1001 1010 1110 0111 a następnie korzystając z tabelki zamieszczonej poniżej zamieniamy grupy bitów na ich odpowiednik w układzie szesnastkowym.

0000—0 0001—1 0010—2 0011—3 0100—4 0101—5

0110—6 0111—7 1000—8 1001—9 1010—A 1011—B

1100—C 1101—D 1110—E 1111—F

W związku z tym otrzymamy $9AE7. Liczby zapisane w układzie szesnastkowym poprzedzamy umownie znakiem dolara.

Przejście z układu szesnastkowego na dziesiętny jest równie proste. W systemie dziesiętnym 124 jak wiemy oznacza 1 x102+2x101+4x100. Tu postępujemy analogicznie: $9AE7 = 9x163+10x162 + 14x161 + 7x160 = 39655. Do takich przeliczeń można posłużyć się następującym schematem bardzo przydatnym gdy pod ręką jest tylko prosty kalkulator czterodziałaniowy:

  1. Weź pierwszą cyfrę z lewej strony. Jeżeli jest ona literą to zamień ją za równoważną liczbę.
  2. Jeżeli nie ma dalszych cyfr to skończyłeś. STOP.
  3.  Pomnóż otrzymaną wartość przez 16. Dodaj następną cyfrę do wyniku Idź do punktu 2.

W naszym przypadku wygadałoby to następująco:

  1. Bierzemy pierwszą cyfrę, którą jest 9.
    1. Są dalsze cyfry.
    2. 9x16 + 10=154
  2. Są dalsze cyfry
  3. 3. 16x154+14 = 2478
  4. 2. Są dalsze cyfry.
  5. 3. 16x2478 + 76 = 39655
  6. 2. Nie ma cyfr. STOP.

Ostatnim na dzisiaj zadaniem będzie często potrzebne przeliczanie z układu dziesiętnego na szesnastkowy. Polega ono na ciągłym dzieleniu liczby dziesiętnej przez 16. Po każdym dzieleniu reszta z dzielenia jest kolejną cyfrą szesnastkową zapisywaną od prawej strony. Dla tego celu można posłużyć się kalkulatorem lub poniższą tabelką: .0000-0 .0625-1 .1250-2 .1875-3 .2500-4 .3125-5 .3750-6 .4375-7 .5000-8 .5625-9 6250-A .6875-B ,7500-C 8125-D ,8750-E 9375-F

Dla przykładu zamienimy wspólnie liczbę 4780 dziesiętne na jej szesnastkowy odpowiednik. 4780/16=498.75   . 75 = C 298/16=18.625    .625=A 18/16= 1.125    .125=2 Jedności już dalej nie dzielimy, tylko wpisujemy na początku i w wyniku otrzymujemy $12AC

Tyle wiadomości na pierwszy wykład. Za miesiąc przystąpimy do pierwszych instrukcji, ćwiczeń i programów.

 

Dominik Falkowski

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