Samouczek =1498:1466:p(23681\)=01003 p(23681\)  1000 &n(aK\)=a+256*(a+1) *:" SAMOUCZEK SPECTRUM " #'''" LISTA ROZDZIAW" ''"1 Wstp i instrukcja" "2 CPU potrzebuje RAM" "3 Jak komputer liczy" "4 ADRESOWANIE pamici" $"5 Jak jest zorganizowana pami" "6 MONITOR" "7 Atrybuty" "8 Zmienne systemowe-wstp" "9 Statystyka pamii."  "10 Odczyt i zmiana zmiennych" ""11 Podgldanie komrek pamici" /''1;" SAMOUCZEK SPECTRUM " $"  BEYOND HORIZONS & M.I.1985 " 5"Ktry rozdzia? ";a$:1481:(e)1019 +bord=a$:bord8bord=bord-8 a$=1a$=a$+" " bord>11 1019  1466 bord j=160< p$(j)=a$23681\,j:p(j) j  1019 621,0;"n=nastpny p=poprzedni i=instru." 7n(23653e\)-n(23627K\)<2001466 ""1031 =""1032  a$=  "a$"n"a$"p"a$"i"1031  @a$="n"ƾ23681\<59;23681\,23681\+1  ?a$="p"ƾ23681\223681\,23681\-1  a$="i"1003  1483 e=11029 p(23681\) .s=23:bin=a$:r2=0:h$="ABCDEF" 8,1;"HEX" i=012 4 i6s=21 /r1=((bin/16-(bin/16))*16) &r19 8,s-i;1;r1 -r19 bin=(bin/16):1053 r1>9 r2=r1-9  r2=0k$="0":1051 k$=h$(r2r2) 8,s-i;1;k$ bin=(bin/16) i  ':4;"JAK DZIAA SAMOUCZEK"  X'"SAMOUCZEK SPECTRUM dzieli si narozdziay i strony.Ju wiesz jakzmienia rozdziay." !p'"Na kocu kadej strony moesz przej do strony nastpnej lub poprzedniej lub wrci do instrukcji" "C'"Strona";1;" nastpna";0;" nacinij ";1;"n" #F'"Strona ";1;" poprzednia";0;" nacinij ";1;"p" $H'"Powrt do";1;" instrukcji";0;" nacinij ";1;"i" %c'"Sprbuj naisn 'p' i 'n'. Nie moesz zmieni rozdziau nie powrciwszy do instrukcji." & 1029 '*:4;"ZATRZYMYWANIE SAMOUCZKA" (\'"Czasem bdziesz proszony o wpro-wadzenie wasnego programu lub dokonanie pewnej prby." )K'"Wtedy zawsze program zatrzymuje si i pojawia si komunikat STOP." *E'"Jeli chcesz tylko wznowi SAMOUCZEK, nacinij CONTINUE" +'"Ale,gdy uruchomisz wasny program lub dokonasz innych zmian w programie i chcesz powrci do SAMOUCZKA,wykonaj GOTO 999 " ,'"Sprbuj teraz to wykona." -"SAMOUCZEK ZATRZYMA SI": . 1029 / e=0 0(:6;"PROCEDURY 'RATUNKOWE'" 1'''"Czasem, gdy bdziesz wsppracowa z systemem i popenisz bd po ktrym nie bdziesz mg wrci do SAMOUCZKA wykonaj GOTO 999 - zazwyczaj pomaga!Jeli nie, wczytaj SAMOUCZEK SECTRUM raz jeszcze ." 2'''"Uyj GOTO 999 nawet,gdy nie widzisz co piszesz."''"Teraz nacinij ENTER lub 'n' i ENTER aby zmieni stron.) " 3e 4$e=1:z$:z$="n"1029 59236077\,61=:23693\,254:10720 6 1029 74:0,6;"ODCZYT I ZMIANA ZMIENNYCH" 8`'"W BASIC'u PEEKing adres oznacza odczyt zawartoci komrki pamici o zadanym adresie ." 9^'"POKEing adres oznacza zapisanie komrki pamici o podanym adresie zadan wartoci." :='"PEEK and POKE daje ci du przewag nad komputerem." ; 1029 <":" KRTKO O PROCEDURACH" =6,0;"Gdy teraz naciniesz 'n' SAMOUCZEK zatrzyma si."::"Zostaniesz poproszony o napisanie wasnego programu o numerach linii pomidzy 1-990." >S'"Zanim to zrobisz upewnij si,e znasz procedury powrotu opisane w rozdziale 1." ? 1029 @#:6;"PEEK I POKE" A23728\,0 BR'"W tej chwili SAMOUCZEK nie uywakomrki o adresie 23728.Wpisz co nastpuje:" C/"PRINT PEEK 23728 oraz ";1;"CONTINUE" DJ::"Jest tam zapisane zero,wic PEEK 23728=0":22720X,250 E6:"A teraz wprowad:"'" POKE 23728,110 oraz CONT": F2:"A teraz:"::" PRINT PEEK 23728 oraz CONT": Gi=22624`X22626bX:i,250:i:'"Jak widzisz, PEEK 23728 jest teraz rwne 110....poniewa 110 jest liczb ktr wpisae tam poprzez POKE." HF:"Ten sposb jest uywany bardzo czsto w nastpnych rozdziaach." Ic'"Zauwa,e wyraenie""PEEK 23728""jest traktowane jakoliczba."'"Sprbuj ""PRINT PEEK 23728*2""" J K 1029 L:" PROGRAMY ODCZYTUJCE PAMI"''"Wprowad wasny program do odczytu kolejnych komrek pamici."''"Uyj ptli FOR.....NEXT i spowoduj aby komputer zapyta o pierwszy i ostatni adres." MI'"Uyj programu do odczytu pierwszych 20 komrek pamici ROM." N$:"GOTO 999 celem kontynuacji .": O 1029 P:5;"PRZYDATNE PROGRAMY"''"Program odczytu powinien by"'"podobny do podanego poniej."''"10 INPUT ""adres pocztkowy"";x"'"20 INPUT ""adres kocowy"";y"'"30 FOR i=xy: PRINT i,i: NEXT i" Qa::"Jeli nie powiodo ci si wprowad i uruchom ten program. Nie zapomnij o GOTO 999." R:"CONT - kontynuacja": S 1029 T:9 ;"BITY I BAJTY" U:"Najmniejszym elementem pamici jest BIT.Bit jest elementem, ktry przechowuje adunek elektryczny.adunek ten moe by w stanie wysokim (H) lub niskim (L)." Vb:"Jeli BIT jest w stanie wysokim MIKROPROCESOR odczytuje go jako 1.Jeli w niskim to jako 0."; WT" BITY s zorganizowane w grupy po osiem bitw.Grupy te nazywanes BAJTAMI." X:"Tekst,liczby,instrukcje,zmienne,grafika oraz wszystko co wprowadzasz do komputera musi by przetumaczone na BITY pogrupowane w BAJTY." Y 1029 Z=:0,0;"REPREZENTACJA LICZB W BAJTACH " [Z:"Pami moe przechowywa liczb tylko jako kombinacj bitw o wartociach 0 i 1." \3'"BIT moe przyjmowa wartoci tylko 0 lub 1!" ]'"Dlatego wszystkie liczby s poddane konwersji na posta binarn przed zapisaniem do pamici oraz konwersji odwrotnejna posta dziesitn przed wywietleniem." ^m'"Tak wic jeli chcesz zmienia bezporednio zawarto pamici musisz nauczy si liczy binarnie" _ 1029 `*:" CO OZNACZA BINARNIE? " a0:"Oto praktyczny pokaz operacji binarnych." bo:"Nastpna strona pokazuje obliczenia maszynowe poczwszy od 0,zarwno dziesitnie jak i binarnie." cV:"Zajrzyj do podrcznika ""Spectrummanual"",do rozdziau AppendixE (strona 219) ." dL:"Zapamitaj najwiksze wartoci jakie moe zawiera BAJT i dwa BAJTY." e 1029 fb(16): gZ10 ,0;"LSB oznacza najmniej znaczcy MSB najbardziej znaczcy BIT" hS:"UWAGA! Przyjte jest numerowa BITY od 0 do 7 od strony prawej do lewej." i<:"Porwnaj liczb dziesitn z jejreprezentacj binarn." j/:"Nacinij 'n' celem kontynuacji programu." kj=065535 lbin=j:1488 m="n"1166:1029 nj o 1029 p:1488 qd12 ,0;"Czy moesz wskaza najwiksz liczb jak mona zapisa w dwch BAJTACH?" r1157:a$=""1166 sU16,12 ;" ":a$="65535"16,12 ;1;"PRAWIDOWO!" t 1137q u~12 ,0;"Wprowad wasne liczby.Czy moesz przewidzie jak bdzie wygldaa jej reprezentacja binarna?" v1157:a$=""1166 w 1141u x12 ,0;"Wprowad 2^0, 2^1, 2^2...........2^15.(Zajrzyj do podrcznika, str. 65 jeli nie rozumiesz symbolu ""^"")" yB:"Czy rozumiesz teraz dlaczego BITY numeruje si od 0 do 7?" z1157:a$=""1166 { 1144x |R12 ,0;"Podaj najwiksz liczb moliw do zapisania w jednym bajcie" }*1157:16,12 ;" " ~5a$="255"16,12 ;1;"PRAWIDOWO!" a$=""1166  1148| 12 ,0;"Jednym bajtem mona zapisa liczb nie wiksz od 255. Poniewa jednak 0 jest rwnie liczb wic moliwe jest zapisanie 256 rnych liczb." %:"Wprowad 1*256,potem 2*256 itd." 1157:a$=""1166  1153 ="n"1157 4"Wprowad liczb (lub ENTER -kontynuacja)";a$ 619,0;" "  a$="" 1481:(e)1158 Ubin=a$:binɺbin19,0;1;"Tylko liczby cakowite!":1158 Jbin6553619,0;1;bin;" jest liczb zbyt du"  1488  Si=10 21:i,0;" ":i:1029 $:5;"PROCEDURY DLA CPU" '"CPU jest niezwykle inteligentnymurzdzeniem...ale nie myli!."''"Wszystko co moe CPU to ""tylko"" wykonywa kolejno instrukcje zapisane w pamici." <'"W jednej chwili moe wykonywa tylko jedn instrukcj." "Powodem dla ktrego komputer wydaje si by inteligentny jest dobrze napisany program, jaki czyta i wykonuje CPU"''" Podstaw dziaania komputera jest wsppraca CPU z pamici."  1029 :9 ;"RAM I ROM" b:"Gdy wczysz komputer CPU czyta pami od pocztku do koca wykonujc kolejne instrukcje" L'"Rozpoczyna czytanie pamici Sinclair ROM,organizujc System." p:"CPU komunikuje si zarwno z pamici sta ROM jak te z pamici o dostpie swobodnym typu RAM ." {"Pami ROM zachowuje swoj zawarto po wyczeniu zasilania.Zawartoci pamici ROM nie mona zmieni ."  1029 ':"PAMI POMAGA POZNA KOMPUTER" W''"Znajc zawarto pamici jeste na dobrej drodze do zrozumienia Twojego SPECTRUM." '"Poznanie pamici komputera jest pierwszym krokiem do zrozumieniaorganizacji systemu Spectrum."''"SAMOUCZEK SPECTRUM pomoe Ci w tym."  1029 *:" ZAPIS HEKSADECYMALNY " :"Programujc w kodzie maszynowym,programista musi wpisywa swj program kolejno bajt po bajcie. Kada liczba wiksza od 255 musiby rozdzielona na dwie liczby zapisane w dwch kolejnych bajtach." ^:"Bardzo wane jest okrelenie ktry z dwch bajtw jest starszy,a ktry modszy." :"Wpisywanie liczb w postaci binarnej tzn.kombinacji zer i jedynek jest niezwykle pracochonne i uciliwe. Dlatego te powszechnie stosuje si HEKSADECYMALNY system zapisu."  1029 *:" SYSTEM SZESNASTKOWY " "Gdyby Adam i Ewa mieli po osiem palcw u kadej rki, stosowalibymy teraz zapewne system liczenia przy podstawie 16 zamiast 10 ." "16 pisaoby si wic""10""" K"Liczc palce od 9 w gr nazywaliby je kolejno 9,?,?,?,?,?,?,10." U"""HEX ludzie"" maj 16 palcw. Nazywaj je"''"1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10" 3:"Porwnaj zapis dziesitny z szesnastkowym" '"DZIES. 8,9,10,11,12,13,14,15,16" '"HEX 8,9, A, B, C, D, E, F,10"  1029 :bin=0:a$="0"  1488  1041 12 ,0;"Komputer moe liczy do 15 uywajc tylko 4 bitw.Kady 8-bitowy Bajt jest wic zapisywany za pomoc tylko dwchsymboli HEXadecymalnych." 1157:a$=""1029  1198 &:5;"ADRESOWANIE PAMICI" |'"Gdy wczysz Spectrum mikropro- cesor zaczyna odczytywa kolejnekomrki pamici,poczwszy od komrki o adresie zero." '"CPU (w Twoim Spectrum jest nim mikroprocesor Z80A) wykonuje wszystkie przeczytane instrukcje.Nawet ""0"" jest kodem instrukcji ""nic nie rb"", tzn.przeczytaj nastpn insruk- cj." ^'"Mikroprocesor Z80A moe zaadre- sowa dowoln komrk pamici w zakresie od 0 do 65535." A'"Kademu BAJTOWI przyporzdkowanyjest scile okrelony ADRES."  1029 (:" LINIE ADRESOWE I LINIE DANYCH" B'"Jak ju wiesz,16 bitw moe zawiera 65536 rnych liczb." '"Mikroprocesor adresujc 65536 rnych komrek pamici musi mie 16 linii adresujcych pami zwanych LINIAMI ADRESOWYMI" _'"Podanie na linie adresowe liczbypowoduje zaadresowanie komrki pamici o podanym adresie." '"Kolejne 8 kocwek mikroproceso-ra to linie danych.Liniami danych odbywa si transmisja kodw instrukcji i danych pomi-dzy mikroprocesorem,pamici i urzdzeniami zewntrznymi."  1029 :1501 .3,2;"ADRES";4,2;"" 40,1;" ";4,2;" OD " u6,4;"0";9 ,3;"DO";12 ,2;"16383";15,3;"TO";17,3;"ROM" !0,17;" ROM " f2,10 ;"ROM zajmuje";3,10 ;"pierwsze 16384 (16k)";4,10 ;"bajtw." P6,10 ;"Pierwsze 7k zawiera";7,10 ;"SYSTEM OPERACYJNY." R9 ,10 ;"Interpreter Basic'a";10 ,10 ;"zajmuje nastpne 8k" 12 ,10 ;"Ostatnie 1k ROM to ";13 ,10 ;"GENERATOR ZNAKOWY.";14,10 ;"Kademu standartowemu";15,10 ;"znakowi odpowiada";16,10 ;"8 kolejnych komrek";17,10 ;"generatora znakw";18,10 ;"pamici ROM."  1029 :1501 15,1;"" )0,12 ;"PAMI MONITORA" #15,13 ;"ATRYBUTY" J3,2;"16384";9 ,3;"DO";13 ,2;"22527" U16,2;1;"22528";17,3;"DO";18,2;"23296" Σ3,10 ;"Zajmuje pierwsze 6k";4,10 ;"pamici RAM.To jej";5,10 ;" zawarto wywietlana";6,10 ;"jest na monitorze." ϛ8,10 ;"Zapisywana jest przez";9 ,10 ;"CPU,a odczytywana ";10 ,10 ;"ULA,ukad ";11 ,10 ;"tworzcy obraz TV." Й16,10 ;"Ten obszar";17,10 ;"zawiera dane o ";18,10 ;"kolorach (INK,PAPER),";19,10 ;"FLASH, BRIGHT itd."  1029 :1501 7,1;"" (1,10 ;"BUFOR DRUKARKI" ՗2,10 ;"Gdy drukarka jest";3,10 ;"uywana, bufor";4,10 ;"zawiera linie";5,10 ;"tekstu do wydrukowania" +7,10 ;"ZMIENNE SYSTEMOWE" K8,2;"23552";12 ,3;"DO";17,2;"23733" I3,2;"23296";4,3;"DO";5,2;"23551" 9 ,10 ;"Zmienne sys. zawieraj ";10 ,10 ;"informacje zapisane";11 ,10 ;"przez SYSTEM OPERACYJ-";12 ,10 ;"NY.Zmieniaj swoj";13 ,10 ;"zawarto,dlatego s";14,10 ;"zapisywane w pamici";15,10 ;"RAM." ڗ16,10 ;"Zmieniajc zmienne,";17,10 ;"mona spowodowa";18,10 ;"zaamanie systemu";19,10 ;"komputera."  1029 :1501 0:" OPIS PAMICI SPECTRUM " N'"Rozdzia zawiera krtki opis organizacji pamici Twojego SPECTRUM." 010 ,1;"ADRESY STAE I ZMIENNE" 12 ,0;"Cz pierwsza dotyczy obszaru pamici o ustalonych adresach. Cz druga omawia te obszary pamici,ktre s zmiennej wielkoci i zajmuj zmienne lokacje pamici."  1029 2:0,0;" ADRESY STAE" 3,1;"OBSZAR ";4,1;"PAMICI";5,1;" OD ";6,1;"ADRESU ";7,1;" 0 ";8,1;" DO ";9 ,1;" 23733 ";10 ,1;" JEST ";11 ,1;" STAY " .i=12 20:i,1;" ":i 2,10 ;"ADRESY pamici";3,10 ;"ROM, pamici";4,10 ;"monitora, atrybutw,";5,10 ;"bufora drukarki oraz";6,10 ;"zmiennych systemowych";7,10 ;"s USTALONE." 9 ,10 ;"Adresy te s ustalone";10 ,10 ;"konfiguracj systemu,";11 ,10 ;"organizacj monitora ,";12 ,10 ;"oprogramowaniem ";13 ,10 ;"zawartym w pamici ROM" 15,10 ;"Wielko tych";16,10 ;"obszarw pamici";17,10 ;"jest staa. Np.";18,10 ;"pami monitora";19,10 ;"wymaga niezmiennej";20,10 ;"iloci bajtw."  1029 .:i=07:i,1;" ":i !8,1;"OBSZARY";9 ,1;"PAMICI";10 ,1;" OD ";11 ,1;"ADRESU ";12 ,1;" 23734 ";13 ,1;" DO ";14,1;" 65535 ";15,1;" S ";16,1;"ZMIENNE" (0,10 ;"ADRESY ZMIENNE" 2,10 ;"Wielko pamici";3,10 ;"w pozostaej czci";4,10 ;"RAM zaley od rozmiaru";5,10 ;"programu w BASIC'u,";6,10 ;"iloci zmiennych";7,10 ;"itd." 9 ,10 ;"Wolny obszar pamici";10 ,10 ;"zmienia si podczas";11 ,10 ;" wykonywania programu." 12 ,10 ;"SYSTEM OPERACYJNY";13 ,10 ;"przydziela dynamicznie";14,10 ;"obszary pamici";15,10 ;"ledzc ich wielko." 17,10 ;"Kontrolujc system";18,10 ;"zapisuje wci dane o ";19,10 ;"aktualnym stanie w";20,10 ;"Zmiennych Systemowych."  1029 /:i=020:i,1;" ":i 11 ,1;" CHANS ";12 ,1;" ";13 ,1;" ";14,1;" ";15,1;1;"" L12 ,2;"23734";13 ,3;"TO";14,2;"23754" l5,2;"SYST";6,2;"VARS";7,2;1;"kon. ";8,2;"23733" 16,2;"BASIC";17,2;"PROG";18,2;1;"pocz.";19,3;"od";20,2;"23755" ,0,10 ;"MAPA MICRODRIVE'w" 2,10 ;"Gdy microdrive'y";3,10 ;"nie s podczone,";4,10 ;"obszar ten nie jest";5,10 ;"uywany";6,10 ;"Nie zajmuje wic";7,10 ;"pamici." -9 ,10 ;"CHANNEL INFORMATION" 11 ,10 ;"Gdy nie uywasz micro-";12 ,10 ;"drive'w obszar ten";13 ,10 ;"zajmuje zawsze";14,10 ;"21 bajty. Jest uywany";15,10 ;"do kontroli obsugi";16,10 ;"klawiatury,monitora";17,10 ;"i drukarki." -18,23;"";19,10 ;""  1029 :1501 b0,14;"BASIC PROGRAM";14,1;" VARS ";2,1;" PROG " c7,2;"BASIC";9 ,2;"PROG";15,2;"ZMIEN";17,2;"NE" 2,10 ;"Po wczeniu Spectrum,";3,10 ;"obszar ten nie uywa";4,10 ;"pamici.Powiksza si";5,10 ;"gdy wpisujesz program";6,10 ;"i przesuwa inne ";7,10 ;"obszary w gr pamici" |9 ,10 ;"Obszar programu BASIC";10 ,10 ;"zaczyna si zazwyczaj";11 ,10 ;"od adresu 23755." +13 ,13 ;"OBSZAR ZMIENNYCH" 15,10 ;"Zarwno pocztek jak i";16,10 ;"wielko tego obszaru ";17,10 ;"zale od dugoci ";18,10 ;"i treci programu";19,10 ;"w BASIC'u."  1029 :1501 O0,13 ;"OBSZAR EDYCJI ";1,13 ;"I WORKSPACE " -2,10 ;"Oba te obszary";3,10 ;"stanowi obszar robo-";4,10 ;"czy SYSTEMU OPERACYJ-";5,10 ;"NEGO.";6,10 ;"Obszar Edycji zawiera ";7,10 ;"dane o linii programu";8,10 ;"wprowadzanej lub";9 ,10 ;"poprawianej." 11 ,10 ;" WORKSPACE uywa ";12 ,10 ;"pamici tylko w czasie ";13 ,10 ;"wspdziaania ";14,10 ;"z systemem ( np:INPUT)" 15,10 ;"STOS KALKULATORA";16,10 ;"przechowuje";17,10 ;"chwilowe wyniki";18,10 ;"oblicze kalkulatora";19,10 ;"Spectrum."  4,2;"EDIT";5,2;"AREA";8,2;"WORK";9 ,2;"SPACE";13 ,2;"CALC";14,2;"STACK"  s2,1;"E LINE ";7,1;"WORKSP ";11 ,1;"STKBOT ";16,1;"STKEND "  .i=1720:i,1;" ":i  1029  :1501 V0,1;"CALC ";1,1;"STACK";2,1;"STKEND " 6,2;"SPARE";9 ,3;"RAM";15,1;"";16,3;"M/C";17,2;"STACK" 77,1;" ";8,1;" " (0,15;"THE SPARE AREA" @2,10 ;"Po zaczeniu Spectrum";3,10 ;"wikszo RAM'u jest";4,10 ;"pusta.Kady bajt od";5,10 ;"wierzchoka stosu kal-";6,10 ;"kalkulatora do ";7,10 ;"pocztku STOSU";8,10 ;"MASZYNOWEGO jest zapi-";9 ,10 ;"sany wartoci 0." 11 ,10 ;"W miar powikszania";12 ,10 ;"programu i zmiennych";13 ,10 ;"stos kalkulatora jest";14,10 ;"przesuwany w stron ";15,10 ;"stosu maszynowego." 17,10 ;"Stos Maszynowy";18,10 ;"powiksza si kosztem";19,10 ;"wolnego obszaru";20,10 ;"pamici RAM."  1029 .:i=05:i,1;" ":i 76,1;" ";7,1;"" i=813 :i,1;" ":i:11 ,1;"";14,1;" RAMTOP";14,1;1;"_______";15,1;" UDG ";18,1;" P RAMT" K16,1;1;" ";17,1;1;" " 8,3;"M/C";9 ,2;"STACK";12 ,2;"GOSUB";13 ,2;"STACK";16,2;"U-DEF";17,2;"GRAPH" r1,3;"S A";2,3;"P R";3,3;"A E";4,3;"R A";5,3;"E" 19,2;"65535" (0,12 ;"STOS MASZYNOWY" 2,10 ;"Stos Maszynowy uywany ";3,10 ;"jest przez CPU. ";4,10 ;"Musisz zna Kod";5,10 ;"Maszynowy aby uywa";6,10 ;"prawidowo stosu." -7,10 ;" STOS PODPROGRAMOW "  b9 ,10 ;"Przechowuje numery ";10 ,10 ;"linii do ktrych ";11 ,10 ;"nastpuje powrt";12 ,10 ;"z podprogramu (GOSUB) ";13 ,10 ;"ze stosu.";14,10 ;" Dlatego zawsze RETURN";15,10 ;"powraca do instrukcji";16,10 ;"nastpnej po ";17,10 ;"instrukcji GOSUB." !s18,10 ;"GRAFIKA UZYTKOWNIKA";19,10 ;"168 bajtw powyej ";20,10 ;"RAMTOP" " 1029 #:1501 $[0,10 ;"LOKACJE PAMICI ";1,10 ;" ZMIENNE SYSTEMOWE " %W3,1;" CHANS ";7,1;" PROG ";15,1;" VARS " & 3,10 ;"Niektre ZMIENNE ";4,10 ;"SYSTEMOWE s";5,10 ;"uywane do kontroli";6,10 ;"systemu,granic";7,10 ;"obszarw pamici.";8,10 ;"Dla uatwienia,zmienne";9 ,10 ;"systemowe nazwano." '11 ,10 ;"Poniej przedstawiono";12 ,10 ;"przykady zmiennych";13 ,10 ;"kontrolujcych ";14,10 ;"prac systemu." (x16,10 ;"Zajrzyj do podrcznika";17,10 ;"strona 165 po dalsze";18,10 ;"informacje." ) 1029 *":7;"PAMI MONITORA" +'"Kademu bajtowi z pierwszych 6K pamici RAM odpowiada 8 punktw na ekranie monitora. Sprbuj wpisa instrukcj POKE do pamici o adresach od 16384 do 22527 rne liczby."''"CONT kontynuacja" ,::'"Niestety pami monitora nie jest zorganizowana sekwencyjnie.Kolejnym bajtom pamici monitoranie odpowiadaj kolejne linie na ekranie monitora."'"Gdy teraz naciniesz ENTER do kolejnych komrek pamici monitora bdzie zapisana liczba 255." -5:"A o to ten program:"''"i=1638422527:i,255:i" .7"n+ENTER pominicie programu";z$:z$="n"1029 /#21,19;" Adres= " 0Ji=16384@22527W:i,255:21,27;1;i:i 1:1322* 2,:5;" OBSUGA PAMICI MONITORA" 3'"Komendy BASIC'a";216;252;246;169;"s bardzo przydatne. Wpisywanie za pomoc instrukcji POKE bezporednio do pamici monitora jest bardzo uciliwe." 4'"Stosunkowo atwo mona naisa program obsugujcy monitor, ale wymaga on przeprowadzenia duej iloci oblicze."''"Ten program kreli lini w poprzek ekranu:" 5'"k=02:j=07:i=07" 6&"16384+j+k*2056+j*32+i*256,128/2^i" 7 "i:j:k" 8%"ENTER > RUN.n+ENTER > CONT ";z$ 9z$="n"1029 :9k=02:j=07:i=07 ;G16384@+j+k*2056+j*32 +i*256,128/2^i < i:j:k =z16,0;"Kadorazowo musi by zapisany cay bajt,jednoczenie kasujc poprzednio zapisan warto. " > 1029 ?:7;"ATRYBUTY" @'''"Pami o adresach od 22528 do 23296 zawiera informacje o atry-butach tzn.kolory INK,PAPER orazFLASH i BRIGHT.Kolejne bajty odpowiadaj kolejnym polom ekranu, o wymiarach 8*8 punktw." Ab'"Nastpny program zapisuje pami atrybutw dowolnie wybran loczb.Sprbuj!." B+'"Pamitaj! Liczba nie wiksza od 255" C*19,0;"Sprbuj ""(*255)""" D="Podaj liczb (ENTER - kontynuacja)";a$:a$=""1029 Ee=11348D F:10 ,0;"ATRYBUTY zapisywane liczb ";a$:14,12 ;"Adres=":i=22528X23295Z:n=a$:i,n:14,20;i:i G 1343? H(:7;"ORGANIZACJA ATRYBUTOW" Ifi=4182:i,2;"";i+1,2;" ":i:20,2;"" J=i=07:i*2+5,1;1;i:i Kh5,7;"Pierwsze 3 bity";6,7;"okrelaj kolor punktu";7,7;"(INK)." L11 ,7;"Nastpne 3 bity";13 ,7;"kolor ta (PAPER).";16,7;"Bit 6 rwny 1 okrela";17,7;"BRIGHT,a 0 - normalnie. ";18,7;"Bit 7 rwny 1 oznacza ";19,7;"FLASH 0 - normalnie" M<"Podaj liczb(ENTER - kontynuacja)";a$:a$=""1029 N#1481:e=11357M Obin=a$:c=bin PJi=031:2,i;"I":i:j=22592@X22623_X:j,c:j QOb(8):i=18:1476:3+2*i,4;b(i):i R 1357M S$:5;"KOLORY GLOBALNE" T'"Po zapisaniu dowolnej liczby do pamici atrybutw kolor,na ekranie zmienia si do czasu wpisania w dane miejsce ekranu nowej treci." U'"Atrybuty okrelane s przez zmienne systemowe"'"(ATTRP adr. 23693, MASKP adr. 23694 ATTRT adr. 23695 i MASKT adr. 23696)" V/'"Sprbuj zmieni wartoci tych zmiennych." Wd'"Zauwa e zmiana atrybutw widoczna jest dopiero po zapisaniu na ekran nowej treci" X:1029 Y*:"WPROWADZENIE DO ZMIENNYCH SYST. " Z'"System zmiennych jest integralnczci SYSTEMU OPERACYJNEGO. Podczas wykonywania programu SYSTEM stale odwouje si do zmiennych systemowych" [p'"Zmienne zajmuj pami od 23552 do 23733.Po zaczeniu Spectrum przyjmuj standartowe wielkoci pocztkowe." \'"Wszystkie zmienne sstemowe s opisane w podrczniku na str.127-130."''"Kolejne rozdziay ilustruj uy-cie niektrych zmiennych oraz podaj jak eksperymentowa z pozostaymi ." ] 1029 ^":" ZMIENNE WYMAGAJ ZMIANY" _'"Rozwamy dwie zmienne:"'"LAST K (23560) przechowuje kod ostatnio uytego klawisza ."'"PIP (23609) okrela dugo dwiku po naciniciu klawisza." `'"LAST K jest wci zmieniana po kadym naciniciu dowolnego klawisza."'"PIP jest zmienn ktr moe zmienia uytkownik " a'"Zmiana zmiennych systemowych moe spowodowa zaamanie systemu (nie oznacza to oczywicie uszkodzenia Spectrum!). System moe by odnowiony po powtrnym zacz- eniu zasilania komputera." b 1029 c+:;"ZMIENNE SYS. INFORMACYJNE " d'"Uywajc instrukcji PEEK mona ledzi dziaanie SYSTEMU odczy-tujc zmienne systemowe. Najbardziej uyteczne s zmienneokrelajce adresy poszczegl- nych obszarw pamici uywanych przez system ." e'"Moesz dowiedzie si jak duo pamici zuye,jak duy jest program,jak wiele pamici zaj- muj zmienne programu i jak duowolnej pamici pozostao." f'"Pamitaj,e ""23627"" jest traktowane jako liczba i moe by uywane w wyraeniach arytmetycznych i funkcjach." g 1029 h*:" JAK ZMIENIA ZMIENNE SYSTEMOWE " i'"Adresy pamitane s w dwch kolejnych bajtach.Pierwszy jest bajt mniej znaczcy."''"Tak wic,aby znale warto zmiennej VARS o adresach 23627 i 23628 musisz dokona oblicze:" j'" 23627 + (256*23628)" k'"Oblicz teraz warto zmiennej VARS.Prawidowa warto jest okoo 64200,ale zmienia si w czasie wykonywania programu." l:1029 m*:" ODCZYT PAMICI " n'"Uycie DEF FN oszczdza duo czasu (podrcznik,strona 60). Program do odczytu 2-bajtowych zmiennych powinien wyglda nastpujco:"''"10 n(a)=a+(a+1)*256" og'"Gdy chcesz obliczy warto dwch kolejnych komrek pamici,np. VARS, wpisz"''"PRINT n(23627)" pQ'"Napisz program drukujcy wartoci wszystkich zmiennych systemowych." q:1029 r*:" PROGRAM SLEDZCY PAMI " s~'"Twj program ledzcy pami powinien dziaa podobnie do poniszego: Jeli chcesz go obejrze,ENTER LIST 5720 " t'"CHANS = ";n(23631O\)'"PROG = ";n(23635S\)'"VARS = ";n(23627K\)'"ELINE = ";n(23641Y\)'"WORKSP= ";n(23649a\)'"STKBOT= ";n(23651c\)'"STKEND= ";n(23653e\)'"RAMTOP= ";n(23730\)'"UDG = ";n(23675{\)'"P-RAMT= ";n(23732\) u_'"Sprbuj CLEAR i CONT. Zauwa e zmienne pomidzy VARS i ELINE straciy swoje zawartoci." v5n(23641Y\)-n(23627K\)<21029 w:1394r x*:" ZMIANA ORGANIZACJI SYSTEMU " yu'"Zmieniajc te zmienne systemowe moesz zmieni pocztek pamici 'widzianej' przez SYSTEM.Oto krtki przykad:" z'"1 Ustawi RAMTOP (tzn.adres ostatniego dostpnego dla BASIC'a bajtu pamici) na ostatni bajt pamici (P-RAMT) mona poprzez wykonanie albo:"'"POKE 23730,255 albo CLEAR 65535" {'"2 Obszar pamici przeznaczony na grafik definiowan przez uytkownika mona zmieni na inny (np.UDG moe by zapisane w buforze drukarki).Wprowad..." |@'"POKE 23675,0:POKE 23676,91"'"(Bufor drukarki=23296=91*256) " } ~ 1029 *:"NIE TRA KONTROLI NAD PROGRAMEM "  '"Poprzednio przesune UDG do bufora drukarki i ustawie RAMTOP na 65535 powikszajc nieco pami dostpn dla ";  " programu i zmiennych":"Sprawd e adresy UDG i RAMTOP s rzeczywicie zmienione oraz e grafika UDG w dalszym cigu dziaa prawidowo."  "Sprbuj zmieni wartoci innych zmiennych systemowych,np:ustaw zmienn PROG tak aby RUN powodo-wao start programu od linii 1000."  1029 &:6;"PIP,REPDEL i REPPER" _'"Cz zmiennych okrela sposb zachowania systemu. Wprowad:"''"POKE 23609,100 potem CONT"  d'"Sprbuj teraz znale przyjem- niejszy dwik w odpowiedzi na nacinicie dowolnego klawisza." :1029  :9 ;"MODE i FLAGS2" '"Zmienna MODE (23617) okrela mod pracy systemu;(K,L,E,G,C)"'"Gdy zrobisz POKE MODE, nie zmieni to modu pracy w sposb trway.A jak ustawisz wielko liter w instrukcji INPUT ?" '"Jeli ustawisz BIT 3 zmiennej FLAGS2 (adr.23658), SYSTEM pozostanie w modzie 'C' do czasu wyzerowania BITU 3 . Wpisz teraz POKE 23658,8." '"JEST TO BARDZO PRZYDATNE DLA PROGRAMOW KORZYSTAJCYCH Z INSTRUKCJI INPUT,GDY NIE JEST WYMAGANE STOSOWANIE MAYCH LITER."'"C,P,U c,p,u !" :1029 :13 ;"CHARS"''"Zmienna CHARS ( 23606-7) okrelapocztek obszaru generatora znakw uywanego przez SYSTEM."'"Moesz zapisa zestaw wasnych znakw do pamici RAM i zmieni zmienn CHARS aby wskazywaa na ten obszar znakowy." s'"Dla przykadu zmienimy zmienn CHARS,Przesuwajc wskazania o jeden znak (8 bitw). Wpisz..."''"POKE 23606,8" 7''"GOTO 999 spowoduje powrt do stanu normalnego." :1029 :13 ;"SCR CT" '"SCR CT ( 23692 ) kontroluje podsuwanie ekranu (SCROLL). W efekcie zlicza w d od 23 do 1 i zatrzymuje podsuwanie ekranu.Sprbuj..." 0''"10 PRINT 23692;23692;"""""'"30 GOTO 10" t'"Ten program zatrzymuje podsuwa- nie po zliczeniu do 1. A teraz wpisz...."'"20 IF 236921 POKE 23692,32 i RUN." >'"Nieprzerwane podsuwanie ekranumoe by bardzo przydatne" :1029 *:"EKSPERYMENTY ZE ZMIENNYMI SYST. " '"Teraz gdy wiesz ju dostatecznieduo o zmiennych systemowych"'"sprbuj wasnych si i staraj si pozna pozostae zmienne samodzielnie." '""''"Zaznajomienie si ze zmiennymi systemowymi jest wanym krokiem na drodze do penego zrozumieniasystemu Spectrum oraz poznania BASIC'a." p'"Nie zmieniaj jednak zmiennych w czasie wykonywania programu dopki nie poznasz w peni ich dziaania."  1029 *:" PODGLDANIE PAMICI " r'"Stosunkowo atwo mona podgl- dn zawarto komrek pamici i zrozumie znaczenie zapisanychw nich liczb." e'"Wprowad poniszy program,ktry drukuje zawarto pierwszych 40 komrek pamici obszaru BASIC'a." '"10j=02020:" '"20i=23755+j23775+j 25i;6;i" "30i:6150+j" "40j" 7'"(Powrt tutaj po wprowadzeniu linii - GOTO 999)" :1029  z$="" z$""1029  0,10 ;"Dwa pierwsze bajty";1,10 ;"-numer linii,(MSB pierwszy!)";2,10 ;"Nastpne dwa - dugo linii";3,10 ;"w bajtach (LSB pierwszy)" 4,10 ;"FOR kody znakw i komend";5,10 ;"j patrz podrcznik";6,10 ;"= strony 183 do 188)";7,10 ;"0" 8,10 ;"14 znaczy";9 ,10 ;"nastpuje liczba.";10 ,10 ;"";11 ,10 ;"Nastpnie 5 bajtw";12 ,10 ;"liczby(0)";13 ,10 ;"w formie binarnej" g14,10 ;"TO Kolejne";15,10 ;"2 kody";16,10 ;"0 znakowe" w17,10 ;" Chr 14 oraz";18,10 ;" 5 bajtw okrelajcych";19,10 ;" 20 binarnie." 421,0;"CONT kontynuacja"::1000 f0,10 ;" Te 3 s binarn ";1,10 ;" form 20 (cont)";2,10 ;"" d3,10 ;"STEP Kolejne";4,10 ;"2 Kody";5,10 ;"0 Znakowe" si=611 :i,10 ;"":i:8,14;"Chr 14 + 5 bajtw";9 ,14;"liczby,binarnie" 312 ,10 ;": Chr";13 ,10 ;"CLS Kod";14,10 ;"ENTER kod=koniec linii";15,10 ;" Numer nastpnej";16,10 ;" linii";17,10 ;" dugo linii 20";18,10 ;"";19,10 ;"FOR";20,10 ;"i....itd,itd...."  1029 *:" PODGLDANIE PAMICI (kont) " '"Jak ju wiesz pierwsze dwa bajty(23755-6) zawieraj numer pier- wszej linii programu . Sprbuj POKE 23756,0 i LIST. Czy moesz poprawi w modzie edycji lini 0?" '"Czy moesz uywajc tej metody wykreowa lini o numerze wik- szym od 9999? Jaki jest najwik-szy numer linii akceptowany przez LIST i RUN?" +'''" KONIEC SAMOUCZKA SPECTRUM " :1029  1055,"0",1055,"1",1063',"1",1071/,"1",1167,"2",1172,"2",1178,"2",1108T,"3",1114Z,"3",1120`,"3",1126f,"3",1141u,"3",1144x,"3",1148|,"3",1153,"3",1136p,"3",1182,"3",1187,"3",1196,"3" k 1202,"4",1208,"4",10797,"4",1084<,"4",1088@,"4",1100L,"4",1104P,"4" 1245,"5",1250,"5",1257,"5",1315#,"5",1214,"5",1224,"5",1234,"5",1265,"5",1276,"5",1284,"5",1293 ,"5",1302,"5" 1322*,"6",13302,"6",1343?,"7",1352H,"7",1363S,"7",1369Y,"8",1374^,"8",1379c,"9",1384h,"9",1389m,"9",1394r,"9",1400x,"9",1407,"9" 1412,"10",1417,"10",1422,"10",1426,"10",1432,"10",1437,"11",1460,"11",1003,"0" %p(60<):p$(60<,2): N19,0;" ";1;"PROSZ CZEKA";0;" " $i=159;:p(i):p$(i):i %19,8;" "  b(i)=0 2(bin/2-(bin/2))=01479 b(i)=1 bin=(bin/2)  ^e=0:i=1̱a$:(a$(ii)<40(ůa$(ii)>579)Ưa$(ii)94^e=1 i: ke=0:23681\=120,0;1;" Jeste na stronie pierwszej! ":e=1 +23681\=123681\,2 ͞a$="p"p$(23681\)p$(23681\+1)20,0;1;" Jeste na stronie pierwszej! ":23681\,23681\+1:e=1 Ιa$="n"p$(23681\)p$(23681\-1)20,0;" KONIEC ROZDZIAU ":23681\,23681\-1:e=1  B4,9 ;" MSB ";4,19;" LSB " 02,9 ;"DZIES.  = ";bin;" "  x=27:i=116 i9 x=25  1476 7,x-i;1;b(i) 87,1;"Binarnie";6,1;"Bit Nr." *6,9 ;"76543210 76543210":i  ="":23681\,1:23729\,230:1003 l236099\,35#:23561 \,35#:23562 \,5:236066\,0:236077\,60< +23693\,568:23694\,0  [0,1;" ";1,1;" ";2,1;1;"" -i=318:i,1;" ":i `19,1;"":19,1;1;" ":20,1;" "    1003 %23641Y\+23642Z\*256  1"Samouczek"1497:"udgpol""a",168 udgpol X: