Mrorao102 Orao Manual

orao_manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 86

DownloadMrorao102 Orao Manual
Open PDF In BrowserView PDF
1

Autori:
PONGRAČIĆ IVAN — ZEBEC BRANKO

MIKRORAČUNALO ORAO 102
PRIRUČNIK

2

SADRŽAJ
UVOD ......................................................................................................................................................................6
POGLAVLJE 1.........................................................................................................................................................7
1.1 PRIKLJUČIVANJE MIKRORAČUNALA "ORAO" ..........................................................................................7
1.2 SLOVIŠTE (tastatura) ....................................................................................................................................9
1.3 PRIMJER BASIC PROGRAMA ...................................................................................................................10
1.4 RAD S KAZETOFONOM .............................................................................................................................11
1.4.1 Snimanje programa na traku (SAVE)....................................................................................................11
1.4.2 Učitavanje programa s trake (LOAD) ....................................................................................................11
1.4.3 Katalogiziranje trake (LOADC) ..............................................................................................................12
1.5 POVEZIVANJE MIKRORAČUNALA SA ŠTAMPAČEM ..............................................................................12
1.6 NAČIN KORIŠTENJA ŠTAMPAČA .............................................................................................................12
1.7 PRIMJER PROGRAMIRANJA U STROJNOM JEZIKU ..............................................................................12
POGLAVLJE 2.......................................................................................................................................................13
2.1 OPĆE KARAKTERISTIKE ...........................................................................................................................13
2.1.1. Računanje u BASIC-u ..........................................................................................................................14
2.1.2 Varijable.................................................................................................................................................15
2.1.3 Planiranje programa: .............................................................................................................................16
2.1.4 Pisanje izvornog programa u BASIC-u .................................................................................................17
2.1.5 Mijenjanje izvornog programa ...............................................................................................................18
2.2 ULAZNO/IZLAZNE naredbe ........................................................................................................................19
2.2.1 INPUT naredba .....................................................................................................................................19
2.2.2 DATA i READ naredbe..........................................................................................................................20
2.2.3 RESTORE naredba...............................................................................................................................20
2.2.4 PRINT naredba .....................................................................................................................................20
2.3 PETLJE I POTPROGRAMI..........................................................................................................................21
2.3.1 FOR...NEXT naredbe ............................................................................................................................21
2.3.2 GOTO naredba......................................................................................................................................22
2.3.3 GOSUB i RETURN naredbe .................................................................................................................23
2.3.4 REM naredba ........................................................................................................................................23
2.3.5 ON naredba ...........................................................................................................................................24
2.3.6 IF...THEN naredba ................................................................................................................................24
2.4 POLJA PODATAKA .....................................................................................................................................25
2.4.1 DIM naredba..........................................................................................................................................26
2.4.2 Pisanje podataka u polje .......................................................................................................................27
2.4.3 Čitanje podataka iz polja .......................................................................................................................27
2.5 STRINGOVI .................................................................................................................................................32
2.5.1 ASC funkcija ..........................................................................................................................................33
2.5.2 CHR$ funkcija........................................................................................................................................33
2.5.3 LBFT$ funkcija ......................................................................................................................................33
2.5.4 RIGHT$ funkcija ....................................................................................................................................33
2.5.5 MID$ funkcija.........................................................................................................................................34
2.5.6 LEN funkcija ..........................................................................................................................................34
2.5.7 STR$ funkcija ........................................................................................................................................34
2.5.8 VAL funkcija...........................................................................................................................................34
2.5.9 Primjeri programa sa STRING funkcijama ............................................................................................34
2.6 ARITMETIČKO/LOGIČKE OPERACIJE......................................................................................................39
2.6.1 Aritmetičke operacije: ............................................................................................................................40
2.6.2 Logičke operacije ..................................................................................................................................41
2.7 FUNKCIJE....................................................................................................................................................43
2.7.1 Numeričke funkcije ................................................................................................................................45
2.7.1.1 ABS(X) funkcija...............................................................................................................................45
2.7.1.2 INT(X) funkcija ................................................................................................................................45
2.7.1.3 RND(X) funkcija ..............................................................................................................................45
2.7.1.4 SGN(X) funkcija ..............................................................................................................................45
2.7.1.5 SQR(X) funkcija ..............................................................................................................................45
2.7.1.6 EXP(X) funkcija...............................................................................................................................46
2.7.1.7 LOG(X) funkcija ..............................................................................................................................46
2.7.1.8 SIN(X) funkcija................................................................................................................................46
2.7.1.9 COS(X) funkcija ..............................................................................................................................46
2.7.1.10 TAN(X) funkcija.............................................................................................................................46
2.7.1.11 ATN(X) funkcija.............................................................................................................................46
2.7.2 Posebne funkcije ...................................................................................................................................46
2.7.2.1 POS(X) funkcija ..............................................................................................................................46

2.7.2.2 SPC(X) funkcija ..............................................................................................................................47
2.7.2.3 TAB(X) funkcija...............................................................................................................................47
2.7.3 Korisnički definirane funkcije .................................................................................................................47
2.8 RAD S MEMORIJOM...................................................................................................................................48
2.8.1 Upisivanje podatka u memorijsku lokaciju ............................................................................................48
2.8.2 Ispisivanje sadržaja memorijske lokacije ..............................................................................................49
2.8.3 Ekran .....................................................................................................................................................50
2.8.3.1 Ograničavanje i pozicioniranje aktivnog djela prikaza....................................................................51
2.8.3.2 Definiranje korisničkog seta znakova .............................................................................................52
2.8.4 Pozivanje strojnih programa iz BASIC-a ...............................................................................................53
2.9 SISTEMSKE KOMANDE .............................................................................................................................56
2.9.1 LOAD I LOADC komande .....................................................................................................................56
2.9.2 SAVE komanda .....................................................................................................................................57
2.9.3 LIST komanda .......................................................................................................................................58
2.10 KONTROLNE KOMANDE/NAREDBE.......................................................................................................58
2.10.1 RUN komanda .....................................................................................................................................58
2.10.2 STOP naredba ....................................................................................................................................58
2.10.3 CONT komanda ..................................................................................................................................58
2.10.4 END naredba.......................................................................................................................................59
2.10.5 NEW komanda ....................................................................................................................................59
2.11 GRAFIKA ...................................................................................................................................................59
2.11.1 MOV naredba ......................................................................................................................................59
2.11.2 DRAW naredba ...................................................................................................................................59
2.11.3 PLOT naredba.....................................................................................................................................60
2.11.4 Animirana grafika ................................................................................................................................60
2.12 GREŠKE PRILIKOM PROGRAMIRANJA .................................................................................................70
POGLAVLJE 3.......................................................................................................................................................70
3.1 ORGANIZACIJA MEMORIJSKIH LOKACIJA (memorijska mapa)..............................................................70
3.2 MONITORSKE NAREDBE ..........................................................................................................................71
3.2.1 Heksadecimalna notacija ......................................................................................................................71
3.3 MINIASSEMBLER [A] ..................................................................................................................................72
3.3.1 Zbrajanje sa prijenosom ........................................................................................................................73
3.3.2 Ispisivanje teksta ...................................................................................................................................74
3.4 DISASSEMBLER [X]....................................................................................................................................75
3.5 ČITANJE MEMORIJSKOG BLOKA [E] .......................................................................................................76
3.6 ČITANJE I MIJENJANJE MEMORIJSKE LOKACIJE [M]............................................................................76
3.7 PROVJERA SUME [C].................................................................................................................................77
3.8 PUNJENJE MEMORIJSKOG BLOKA [F] ....................................................................................................77
3.9 IZVRŠENJE STROJNOG PROGRAMA [U] ................................................................................................77
3.10 KOPIRANJE DIJELA MEMORIJE [Q]........................................................................................................77
3.11 OPIS VAŽNIJIH POTPROGRAMA U MIKRORAČUNALU "ORAO" .........................................................78
3.11.1 Potprogram za unos znaka s tastature (INCH) ...................................................................................78
3.11.2 Unos znaka s prikazom na ekranu (INCHE) .......................................................................................79
3.11.3 Ispis znaka na ekran (OUTCH) ...........................................................................................................79
3.11.4 Skok u MONITOR bez RESET sekvencije..........................................................................................79
3.11.5 Ispisivanje stringa na ekran (STROUT) ..............................................................................................79
3.11.6 Ulazak u BASIC iz MONITOR-a..........................................................................................................79
3.11.7 Generiranje zvuka ...............................................................................................................................79
3.11.8 Crtanje točke iz MONITOR-a (PLOT) .................................................................................................80
3.11.9 Izvlačenje linije (DRAW)......................................................................................................................80
3.11.10 Crtanje kružnice ................................................................................................................................81
3.11.11 Adrese važnijih potprograma u mikroračunalu "ORAO" ...................................................................81
3.12 RAD S KAZETOFONOM U MONITOR-u ..................................................................................................81
3.12.1 Pospremanje strojnih programa SAVE ...............................................................................................81
3.12.2 Pozivanje strojnih programa LOAD.....................................................................................................81
3.12.3 Katalogiranje strojnih programa LOADC.............................................................................................82
POGLAVLJE 4.......................................................................................................................................................82
4.1 OPIS MNEMONIKA ZA MIKROPROCESOR 6502 .....................................................................................82
4.2 NAČINI ADRESIRANJA ZA 6502 ................................................................................................................82
4.2.1 Izravno adresiranje (Immediate Addressing) ........................................................................................82
4.2.2 Akumulatorsko adresiranje (Accumulator Addressing) .........................................................................82
4.2.3
Relativno adresiranje (Relative Addressing)....................................................................................83
4.2.4 Apsolutno adresiranje (Absolute Addressing) .......................................................................................83
4.2.5 Apsolutno indeksno adresiranje (Absolute Indexed Addressing)..........................................................83
4.2.6 Adresiranje nulte stranice (Zero Page Addressing) ..............................................................................83
4

4.2.7 Uključujuće adresiranje (Implied Addressing) .......................................................................................84
4.2.8 Indirektno apsolutno adresiranje (Indirect Absolute Addressing)..........................................................84
4.2.9 Indeksno adresiranje nulte stranice (Zero Page Indexed Addressing) .................................................84
4.2.10 Preindeksno adresiranje (Indexed Indirect Addressing) .....................................................................84
4.2.11 Postindeksno adresiranje (Indirect Indexed Addressing)....................................................................85
5 NAPOMENA .......................................................................................................................................................86

5

UVOD
U ovom priručniku je opisan postupak povezivanja mikroračunala "ORAO" s pripadajućim perifernim jedinicama
(štampač, kazetofon...), te način programiranja u BASIC-u i miniassembleru. Priručnik je organiziran u pet
dijelova:
način početnog korištenja
programiranje u BASIC-u
opis i korištenje MONITOR-a
opis načina adresiranja mikroprocesora 6502
prikaz mnemoničkih instrukcija 6502
Za sve korisnike koji još nisu imali priliku raditi na računalima, preporuča se pažljivo praćenje uvodnog dijela
ovog priručnika, kako bi se izbjegle nepotrebne neugodnosti, koje su posljedica nepravilnog rukovanja.
Mikroračunalo "ORAO" uglavnom je namijenjeno za korištenje u BASIC-u, pa će stoga veći dio priručnika biti
usmjeren na objašnjenje BASIC naredbi, uključujući i načine njihovog korištenja. Za one koje će zanimati
detaljniji rad mikroračunala i mikroprocesora 6502 predviđen je rad u MONITOR-u s mogućnošću korištenja
programiranja u strojnom jeziku.
Zaključno žele autori napomenuti, da ovaj priručnik nije zamišljen kao udžbenik BASIC-a ili ASSEMBLERA, već
samo kao pomagalo prilikom savladavanja osnovne problematike rada na mikroračunalu "ORAO". Za sve one
kojima je sadržaj priručnika suviše skroman, preporučujemo nabavku specijaliziranih knjiga za učenje BASIC-a i
ASSEMBLERA.

6

POGLAVLJE 1
1.1 PRIKLJUČIVANJE MIKRORAČUNALA "ORAO"
Za vizualno praćenje rada na mikroračunalu "ORAO" predviđeno je korištenje kućnog TV-prijemnika ili video
monitora. Ukoliko koristimo TV-prijemnik, potrebno ga je podesiti na područje oko devetog kanala, a zatim ga
priloženim TV-kablom vezati na antenski izlaz mikroračunala (Slika 1.1-2). Korisnici sa većim zahtjevima mogu
koristiti video monitor, koji se spaja na video izlaz,pri je spomenutim kablom (Slika 1.1-1).

1.priključak za video monitor
2.priključak za TV-prijemnik
3.priključak za kazetofon
4.priključak za štampač (printer)
5.konektor za proširenje
6.RESET tipka
7.prekidač mrežnog napona
8.kabel mrežnog napona
Slika 1.1
Za uključenje računala potrebno je potisnuti prekidač mrežnog napona (Slika 1.1-7) prema gore. Pritiskom na
RESET tipku (Slika 1.1-6) pokreće se mikroračunalo. Na TV-prijemniku (ako je upaljen) pojavit će se na vrhu
ekrana poruka:
* * * ORAO * * *
*_

Razlog mogućeg izostanka slike može biti u nepodešenosti TV-prijemnika. Zbog toga je obično potrebno
naknadno podešavanje slike, dok se ne dobije najpovoljnija oštrina prikazanih znakova. Zvjezdica (*) ispod
poruke i zmigajuća crtica (kursor) označuju da se računalo nalazi u MONITOR-u. Kursor pokazuje mjesto na
ekranu, gdje će se upisati slijedeći znak unesen s tastature.
Mikroračunalo "ORAO" je uglavnom predviđeno za korištenje u BASIC-u, pa će zbog toga biti potrebno kontrolu
računala prebaciti u BASIC. Upišemo li
*BC

i pritisnemo tipku [CR], na ekranu će se pojaviti:
MEMORIJA ? pritisnimo [CR]
DULJINA LINIJE ? pritisnimo
7167 LOKACIJA
>
_

[CR]

Dodatna objašnjenja u vezi s ispisanim porukama bit će naknadno opisana. Žmigajući kursor ispod "prompta" (])
označuje da je računalo u BASIC-u. Pritiskom na neku tipku dobit ćemo ispis odgovarajućeg znaka na ekranu.
Pritisnemo li tipku A
>
A

A pojavit ce se znak A na ekranu. Pritiskom na [CR] računalo ispiše:
? SN GREŠKA

7

Naime, računalo ne prepoznaje A,niti kao naredbu, niti kao komandu, što rezultira ispisom greške. Unesimo
slijedeći program:
PRINT"SVAKI POČETAK JE TEŽAK" [CR]

Računalo će ispisati
SVAKI POČETAK JE TEŽAK

Primjećujemo da je svaki znak unutar navodnika pravilno izveden i ispisan bez poruke o grešci. Želimo li da
računalo izvede neku računsku operaciju u izravnom izvođenju, upišimo:
PRINT 23*124 [CR] 2852

Dobiveni broj 2852 predstavlja umnožak između brojeva 23 i 124. Za višekratno ispisivanje istog teksta poslužit
ćemo se slijedećim programom;
FOR 1=0 TO 10:PRINT"JA SAM U PETLJI":NEXT I

pritisnimo [CR]

Slijedi ispis na ekranu:
JA
JA
JA
JA
JA
JA
JA
JA
JA
JA
JA

SAM
SAM
SAM
SAM
SAM
SAM
SAM
SAM
SAM
SAM
SAM

U
U
U
u
u
u
u
u
u
u
u

PETLJI
PETLJI
PETLJI
PETLJI
PETLJI
PETLJI
PETLJI
PETLJI
PETLJI
PETLJI
PETLJI

U ovom programu možemo uočiti mogućnost pisanja više naredaba u s time da su naredbe odvojene
dvotočkom (:).
Beskonačno ispisivanje teksta možemo postići vrlo lako
10 PRINT"BBSKONAČMA PETLJA":GOTO 10

Ovaj program je upisan u instrukcijskoj liniji 10. Za izvođenje programa takvog oblika moramo poslije pritiska na
[CR] unijeti naredbu RUN
RUN

Ispisivanje poruke "BESKONAČNA PETLJA" ispunit će ekran. Zaustavljanje izvođenja omogućuje [CTL]C ili tipka
RESET koja vraća kontrolu u MONITOR. Ponovni ulazak u BASIC postižemo s
*BW

To je takozvani vrući start, koji ne uništava postojeći BASIC program prethodno unesen.
Mikroračunalo "ORAO" daje korisniku mogućnost rada u grafici 256x256 (mogućih) točaka na ekranu. U tu
svrhu postoje naredbe u BASIC-u, Koje na jednostavan način omogućavaju crtanje željene slike. Jednostavnim
programom možemo nacrtati dijagonalu na ekranu,
MOV 0,0:DRAW 255,255

[CR]

Želimo li nacrtati samo jednu točku u donjem desnom kutu, dovoljno je upisati
PLOT 255,0

[CR]

8

1.2 SLOVIŠTE (tastatura)
Slovište na mikroračunalu "ORAO" ima standardni raspored tipki uključivši i znakove ć,č,š,ž,đ. Osim uobičajenih
znakova, Slovište sačinjava i nekoliko specijalnih tipki koje su uočljive na slici 1.2.

Slika 1.2
Primjećujemo da se radi o slijedećim tipkama:
[CR]
Return tipka
[CTL] Kontrol tipka
[ ]
Šift tipka
Tipku [CR] smo već upoznali prilikom izvođenja prethodnih programa. Prilikom jednostavnog programiranja (bez
brojeva linije BASIC programa), pomoću tipke [CR] izravno izvodimo napisani program.
[CTL] tipka služi za izvođenje nekih specijalnih operacija. Na primjer, istovremeno pritisnimo [CTL] i tipku L.
Rezultat će biti brisanje ekrana. Slijedeća tabela daje popis svih [CTL] postojećih operacija na mikroračunalu
"ORAO":
[CTL] L
[CTL] G
[CTL] F
[CTL] H
[CTL] K
[CTL] I
[CTL] J
[CTL] V
[CTL] E
[CTL] B
[CTL] U
[CTL] D
[CTL] M
[CTL] C

briše ekran
zvučni signal "beep"
briše tekst od kursora do kraja ekrana
pomiče kursor za jedno mjesto u lijevo
pomiče kursor za jedan redak prema gore
pomiče kursor za jedno mjesto u desno
pomiče kursor za jedan redak prema dolje
zvučni signal "beep" prilikom pritiska na neku tipku
briše tekst od kursora do kraja linije
uključuje štampač (printer)
isključuje štampač
vraća kursor na početak ekrana
vraća kursor na početak reda (carriage return)
prekid izvođenja programa (escape)

Poneke tipke imaju dva znaka. Donji znak ispisuje se izravnim pritiskom na tipku, dok ispis gornjega znaka
dobijemo koristeći tipku šift [ ],
1
ili
!
2
ili
"
3
ili
#
4
ili
$
5
ili
%
6
ili
&
7
ili
'
8
ili
(
9
ili
)
ili
=
:
ili
*
i tako dalje.
Pomicanje kursora možemo izvoditi izravno, bez korištenja [CTL] kodova. U tu svrhu služe četiri tipke smještene
u gornjem desnom kutu slovišta
9

kursor lijevo
kursor dolje

[s][u]
[v][t]

kursor gore
kursor desno

Preostale četiri tipke su tzv. funkcijske tipke.
[PF1] [PF2] [PF3] [PF4]
Pritiskom na [PF1] računalo ispisuje mala slova. Povratak ispisivanja velikih slova postižemo ponovnim
pritiskom na [PF1].
[PF2] služi za startanje štampača (printera)
[PF3] prebacuje ispis znakova u invertiranom obliku
[PF4] je kopi (COPY) tipka
Ukoliko držimo neku tipku pritisnutu dulje vrijeme, ispis znakova će se ponavljati samostalno (autorepeat).

1.3 PRIMJER BASIC PROGRAMA
Pokušajmo napisati program, koji će na ekranu nacrtati funkciju sinus. Za razliku od prethodnih programa, kod
ovoga ćemo svaku instrukcijsku liniju označiti odgovarajućim brojem.
10
20
30
40

FOR 1=0 TO 255
Y=100*SIN(I/40)+128
PLOT I,Y
NEXT

Program ćemo pokrenuti naredbom RUN
>
_
RUN [CR]

Na ekranu će se iscrtati funkcija sinus. Detaljniji opis korištenih BASIC naredbi slijedi kasnije. Dobivenu sliku i
program možemo izbrisati pomoću [CTL]L, međutim, naš program se i dalje nalazi u memoriji računala. U to
ćemo se uvjeriti koristeći komandu LIST.
LIST

[CR]

Prije uneseni program (bez slike) bit će ispisan na ekranu. Za one koji žele imati nacrtanu sinusnu funkciju više
frekvencije, upišimo
LIST 20

pojavit će se
20 Y=100*SIN(I/40)+128

Tipkom [u] dovedemo kursor u liniju 20 i pritisnemo [PF4] (kopi tipku), što će rezultirati pomicanjem kursora u
desno s istim učinkom, kao da smo posebno pritisnuli tipku slovišta. Pomoću kopi tipke pomičemo kursor dok ne
dođemo do broja 40, koji zamijenimo sa 10, a ostatak linije iskopiramo sa [PF4]. Poslije LIST 20 na ekranu se
mora pojaviti:
20 Y=100*SIN(I/10)+128

Poslije RUN dobit ćemo sliku sinusne funkcije više frekvencije.
Prilikom pisanja programa, moguće je unijeti neki pogrešan znak,npr.:
PRINT"ORAOR"

Vidimo da je jedno slovo R suvišno. Problem rješavamo tipkom za pomicanje kursora u lijevo [s] ili tzv. delit
(DELETE) tipkom. Ispod svakog suvišnog znaka dovedemo kursor (u našem slučaju ispod suvišnog R), i znak u
BASIC instrukciji više ne postoji.
PRINT"ORAOR"
_

Na mjestu bivšeg "R" upišemo navodnik i ispravka je gotova.
10

Dakle, koristeći tipke delit (DELETE), kopi (COPY=[PF4]), te tipke za pomicanje kursora, moguće je popravljati
tekst na ekranu,, dok ne dobijemo željeni oblik. Opisana mogućnost popravljanja (editiranja) teksta na ekranu
od izuzetne je važnosti, jer omogućava korisniku da uz jednostavne zahvate popravlja ili mijenja sadržaj bilo
koje instrukcijske linije. Prilikom korištenja grafičkih mogućnosti na mikroračunalu "ORAO", može se dogoditi
slučaj miješanja teksta i grafike. Tako dobivenu "mješavinu" kopi tipka ne prepoznaje, pa na tome mjestu ispiše
"space" (prazno mjesto).

1.4 RAD S KAZETOFONOM
Za trajno pohranjivanje nekog programa koristit ćemo kazetofon (vanjska memorija), naravno uz pretpostavku,
da je povezanost kazetofona sa računalom pravilno izvedena. Korištenjem kazetofona riješit ćemo problem
"skladištenja" velikog broja različitih programa koje ćemo kasnije lako pozvati i ponovno koristiti. Potrebno je
naglasiti, da korištene trake moraju bez bilo kakvih oštećenja, jer će svaka greška na traci biti uzrokom kasnijih
teškoća u radu s pozivanjem prije pospremljenih programa.
Na slici 1.3 je prikazano kako se kazetofon priključuje na mikroračunalo ORAO".
1. na ulaz kazetofona (MIC)
2. masa
3. na izlaz kazetofona (PHONO ili EAR

Slika 1.3

1.4.1 Snimanje programa na traku (SAVE)
Poslije pravilnog povezivanja računala sa kazetofonom, možemo početi sa probnim prijenosom podataka iz
računala na traku. Ukoliko se program za crtanje sinusa još uvijek nalazi u računalu, iskoristit ćemo ga za
"probni rad", prilikom kojega ćemo provjeriti pravilnost spajanja i veličinu nivoa koji je potreban za korektno
snimanje i reprodukciju.
Unesimo:
SAVE"SINUS" [CR]
SNIMANJE ?_ [CR]

Poslije prvog pritiska na [CR] pojavit će se poruka SNIMANJE ?, koja obavještava korisnika neka uključi
kazetofon na SNIMANJE (RECORD TAPE). Slijedeći [CR] prouzrokuje zvuk iz mikroračunala koji označava da
je unos podataka iz računala na traku u toku. Istovremeno se kursor privremeno gubi i pojavljuje se tek kada je
prijenos podataka završen. Sada smo naš program trajno pohranili i moći ćemo ga pozvati s trake kada to
zaželimo u potpuno pravilnom obliku.

1.4.2 Učitavanje programa s trake (LOAD)
Proces pozivanja programa s kazete izvodi se na slijedeći način:
LOAD"SINUS" [CR]
REPRODUKCIJA ? [CR]

,

Naredba LOAD omogućava čitanje programa iz kazetofona u memoriju računala. Poslije te naredbe moramo
upisati ime programa pod navodnim znakovima. To je vrlo važno, jer će tijekom vremena biti na traku snimljeno
mnogo različitih programa pod različitim imenima. Dakle, upisano ime programa kojega želimo učitati,
omogućava računalu da nađe upravo onaj program koji želimo. Poslije prvog [CR] pojavit će se poruka
REPRODUKCIJA ? (PLAY TAPE), koja nam govori da moramo pokrenuti kazetofon. Prilikom traženja željenog
programa računalo će nailaziti na imena nekih drugih programa i njihova imena ispisivati na ekranu, ali ih neće
učitavati. Drugim pritiskom na [CR] gubi se kursor i računalo počinje tražiti zadani program. Pojava prompta i
kursora označava, da je program učitan i spreman za korištenje. Dovoljno je upisati LIST i program će biti
ispisan na ekranu, spreman za izvođenje.
Zaustavljanje procesa "loadanja" moguće je postići pritiskom na tipku [CTL].
11

1.4.3 Katalogiziranje trake (LOADC)
Tijekom vremena na traku ćemo pospremiti mnogo programa s različitim imenima. Da bi imali pregled o kojim
programima se radi, koristimo naredbu LOADC:
LOADC [CR]
REPRODUKCIJA ?

[CR]

TEST
SLIKA
FUNKCIJA SINUS
PETLJA. ASS
POTPROGRAM.ASS
POKUS.BAS
SLIKA.DAT

[CTL]

0400
6000
0400
1000
1100
0400
6000

07FE
7FFH
082A
102A
1234
148A
8000

03FE
1FFF
042A
002A
0134
108A
2000

>
_

Ovdje se vidi primjer kataloga trake. U slučaju da želimo zaustaviti daljnje katalogiziranje, dovoljno je pritisnuti
tipku [CTL] koja nas vraća u početno stanje računala.
Upotrebljavajući opisane mogućnosti rada s kazetofonom, korisnici mogu vrlo lako i brzo rukovati sa mnogo
različitih programa. Dodatne mogućnosti korištenja trake bit će naknadno opisane.

1.5 POVEZIVANJE MIKRORAČUNALA SA ŠTAMPAČEM
Na mikroračunalu "ORAO" predviđen je rad sa štampačem (printerom). Na slici 1.4 prikazan je način spajanja
štampača s mikroračunalom.
1.usklađivanje (handshake)
2.ne spaja se
3.masa
4.ne spaja se
5.vrući kraj printera (linija podataka)
Slika 1.4

1.6 NAČIN KORIŠTENJA ŠTAMPAČA
Mikroračunalo "ORAO" je oblikovano tako, da može raditi sa štampačem serijskog prijenosa podataka (riječ je o
serijskom standardu tzv, RS 232 ili V24). Zbog toga je važno poznavati na koju je brzinu prijenosa podešen
priključeni štampač. Uobičajene brzine nogu biti:
300 [bauda] (data frame 8 + 2)
600 [bauda]
1200 [bauda]
2400 [bauda]
4800 [bauda] itd.
Mikroračunalo "ORAO" može raditi s brzinama od 300 do 2400 [bauda]. Određena brzina odabire se
programski,
P0
300
[bauda]
P1
600
[bauda]
P2
1200 [bauda]
P2
2400 [bauda]
Nepravilno unesen podatak o brzini, npr. P6, generirat će:
*NEPRAVILAN UNOS

1.7 PRIMJER PROGRAMIRANJA U STROJNOM JEZIKU
Programiranje a strojnom jeziku izvodivo je pomoću miniassemblera, koji se nalazi u dijelu programske podrške
(SOFTWARE) pod imenom MONITOR. Mogućnost rada u MONITORU dobivamo odmah poslije uključivanja
12

mikroračunala. Ponekad se može dogoditi, da se poslije uključenja računala ne nalazimo u MONITORU. U tom
slučaju dovoljno je pritisnuti tipku RESET (Slika 1.1-6) i računalo će ispisati:
* * * O R A O * * *
*_

uključujući i žmigajući kursor. Sada je sve spremno za unos našeg jednostavnog programa u strojnom kodu, koji
će ispisati 16 uzastopnih znakova A. Unesimo
*A1000 [CR]
1000 LDA #0A
1002 JSR FFF1
1005 LDX #10
1007 LDA #41
1009 JSR FFF1
100C DEX
100D BNE 1007
100F RTS
1010Q [CR]

Unošenjem znaka Q izlazimo iz miniassemblera ponovo u MONITOR. Međutim, naš strojni program se nalazi u
memoriji računala. Da bi se uvjerili u točnost unosa koristimo se monitorskom naredbom X (disassembler), koja
strojni kod pretvara u lakše razumljiv mnemonički
oblik.
*X 1000
1000 A9
1002 20
1005 A2
1007 A9
1009 20
100C CA
100F 60

100F [CR]
CA
LDA #0A
F1 FF JSR FFF1
10
LDX #10
41
LDA #41
F1 FF JSR FFF1
DEX
RTS

Lijeva strana disassemblerskog listinga prikazuje strojni kod, kojeg ustvari mikroprocesor 6502 jedino razumije.
Ostaje nam još samo da prijašnji strojni program izvršimo:
*U1000 [CR]
AAAAAAAAAAAAAAAA
*_

Poslije ovog uvodnog dijela, koji je prije svega namijenjen lakšem savladavanju osnovnih problema rada na
računalu, preći ćemo na rješavanje kompleksnijih problema,, koristeći pri tom dvije izuzetne prednosti računala:
- brzinu
- točnost
Možda će prvi koraci u radu s mikroračunalom "ORAO" (ili nekim drugim) biti malo teži, međutim, svakog dana
naučit ćemo nešto novo, ulazeći tako u jedan izuzetan svijet, svijet računala.

POGLAVLJE 2
2.1 OPĆE KARAKTERISTIKE
Mikroračunalo ORAO, osim strojnog koda za mikroprocesor 6502, razumije i program napisan u BASIC-u.
BASIC spada u grupu viših programskih jezika, tj. za njegovo razumijevanje nije potrebno detaljno poznavanje
hardware-ske strukture računala, kao ni znanje programiranja u strojnom jeziku.
Karakteristike:
- aritmetika kliznog zareza
- točnost na 6 znamenki
- opseg između 10E-38 i 10E38
- 72 znaka u jednoj liniji
- Dužina stringova maksimalno 255 znakova
- Pohranjivanje korisničkih programa na audio kazetu
- Mogućnost pozivanja strojnih programa iz BASIC-a
- Grafika 256*256
- Broj programske linije između 1 i/ili 63999
13

2.1.1. Računanje u BASIC-u
Vrlo često je potrebno saznati rezultat neke računske operacije, a da pri tom ne pišemo program u BASIC-u
nego direktno unesemo željenu računsku operaciju ili izraz.
Primjer 1: Želimo izračunati vrijednost izraza
(7+11)*3.5
Upotrebom naredbe PRINT direktno u liniji napišemo:
PRINT (7+11)*3.5

Nakon pritiska na tipku [CR] na ekranu imamo:
63
>

Primjer 2: Želimo u jednoj liniji izračunati više izraza odjednom
PRINT 3*3,3.14159/2,7*7.2+4/5,SQR(2)

U liniji imamo četiri različita izraza odvojena zarezom. Nakon pritiska na tipku [CR], na ekranu će se pojaviti
četiri rezultata:
9
>

1.5708 51.2

1.41421

Zbog neformatiranog ispisa rezultati nisu pregledno smješteni na ekranu. O formatiranju ispisa bit će govora u
odjeljku 2.7.2.
3*3=9
3.14159/2=1
7*7.2+4/5=51.2
SQR(2)=1.41421

;množenje
;dijeljenje
;aritmetički izraz
;korjenovanje

Primjer 3: Ispisivanje rezultata i teksta
PRINT"REZULTAT=",3ˆ2 [CR]
REZULTAT= 9
>

što je rezultat operacije kvadriranja broja 3.
U primjeru 3 smo pokazali da je moguće naredbom PRINT ispisati uz rezultat željene operacije i popratni tekst.
Tekst koji u BASIC-u napišemo pod navodnicima ima posebno ime STRING.
Primjer 4:Želimo na ekranu imati ispisan izraz i rezultat tog izraza
22*3=66
PRINT"22*3=",22*3 [CR]
22*3= 66
>

U ovom primjeru pod navodnicima imamo isključivo tekst, a iza zareza tek dolazi izraz čiji rezultat tražimo.
Kao zaključak ovog odjeljka upamtimo slijedeće:
- naredbu PRINT direktno koristimo za ispis rezultata računske operacije
- ukoliko imamo više izraza čije rezultate tražimo, izrazi moraju biti odvojeni zarezom
- sve što se u naredbi PRINT nalazi pod navodnicima ispiše se u nepromijenjenom obliku i zove se
STRING
- na kraju unosa komande obavezno pritisnuti [CR]
14

2.1.2 Varijable
Numeričke varijable mogu biti tipa
XY
X - prvi znak obavezno iz ASCII seta (isključena mala slova te velika Č,C,Đ,Š,Ž)
Y - slovo ili broj ASCII seta
Za STRING varijable važe ista ograničenja uz dodatak znaka $ (dolar) na kraju.
Primjer 1:Unesite u liniji X=7 i pritisnite tipku [CR]
X=7 [CR]
>

Sada smo simboličkoj varijabli X priredili numeričku vrijednost 7. Da se u to uvjerimo Unesimo ponovo u liniji:
PRINT X [CR]
7 >

čime smo ispisali numerički iznos simboličke varijable X.
Operacija "=" nema u potpunosti isto značenje kao i znak jednakosti u algebarskim izrazima, već ona ovdje
isključivo služi za to da varijabli na lijevoj strani priredi vrijednost varijable ili izraza desne strane.
Pokušajmo sada
X=X+1 [CR] te nakon toga
PRINT X [CR]
8

što znači,da smo numeričku vrijednost simboličke varijable X uvećali za jedan i ponovo je priredili varijabli X .
Primjer 2: unesite PRINT "X" [CR]
X
>

Na ekranu se pojavilo X !?
ZAKLJUČAK: "X" je STRING varijabla, a X je numerička varijabla, kao što smo već rekli u odjeljku 2.1.1
Primjer 3:
Unesite
X$="X="

te nakon toga
PRINT X$,X

Na ekranu sada imamo:
X= 8

jer je posljednja vrijednost varijable X ostala 8.
Istim postupkom, za vježbu, izvedimo primjer 4 iz prethodnog odjeljka:
X$="22*3=" [CR]
X=22*3 [CR]
PRINT X$,X [CR]

15

22*3= 66

2.1.3 Planiranje programa:
Prvi korak prilikom pisanja programa, koji će eventualno biti kodiran u BASIC-u ili ASSEMBLBR-u, je apstrakcija
problema koji želimo riješiti.
Drugim riječima, problem treba tako pripremiti da ga računalo može obraditi nizom svojih osnovnih naredbi.
Apstrakcija problema obično se izvodi na dva načina:
- opisno
- dijagramom toka (flow chart)
Primjer 1: Načinite apstrakciju problema koju ćemo koristiti za ispis prvih 100 brojeva od 0-99.
OPISNO
KORAK1: postavi varijablu N na nulu
KORAK2: ispiši N
KORAK3: uvećaj varijablu N za jedan
KORAK4: da li je varijabla N veća od 99?
ako nije, idi na KORAK2:
ako je, idi na KORAK5:
KORAK5: kraj (prekid izvođenja)
DIJAGRAM TOKA
Dijagram toka nam omogućava grafičku apstrakciju željenog problema,a pri tom se koriste standardni simboli
koji odgovaraju pojedinoj operaciji sl.1.2
Simbole povezujemo strelicama, čiji smjer označava tok pojedinih informacija iz bloka u blok.
- definiranje početka i kraja problema (dolazi na
početku i na kraju)

- ulazno / izlazne operacije

- definiranje procesa u problemu

- simbol odluke

- veznik

- bušena traka

- bušena kartica

16

Slika 1.2
Grafički simboli za crtanje blok dijagrama
Nacrtajmo sada dijagram toka za problem ispisa 100 brojeva

START

N=0

ISPIŠI N

N=N+1
NE

N>99
DA
STOP

Slika 2.2
Dijagram toka za ispis 100 brojeva

2.1.4 Pisanje izvornog programa u BASIC-u
Pisanje programa u jeziku koje računalo razumije najčešće se u literaturi naziva PROGRAMIRANJE, što nije
pravilno, jer se pojam PROGRAMIRANJE odnosi isključivo na apstrakciju problema koji želimo riješiti
računalom.
Problem svodimo na kreiranje ALGORITMA, tj. postupka ili ključa koji će nas najkraćim putem dovesti do
željenog rješenja. Stoga pisanje programa u BASIC-u i/ili nekom drugom programskom jeziku nije programiranje
već KODIRANJE programa koji je izražen u hipotetičkom obliku (opisno, dijagram toka itd.) .
Primjer 1: Kodirajmo u BASIC-u program iz prethodnog odjeljka za ispis 100 brojeva.
Program kodiran u BASIC-u sastoji se od programskih linija koje sadrže osnovne naredbe.
Svaka programska linija mora obavezno biti numerirana brojem između 1 i 63999, dok svaka slijedeća
programska linija mora imati redni broj veći od prethodne. Program kodiran u BASIC-u MIKRORAČUNALO
"ORAO" interpretira sekvencijalno od linije s manjim rednim brojem prema liniji s većim rednim brojem, ukoliko
programska linija ne sadržava instrukcije grananja koje skreću izvođenje programa.
Prvo unesimo direktno u liniji (bez rednog broja):
LIST

[CR]

Ukoliko se na ekranu pojavi znak > u slijedećoj liniji, znači da u tekstualnom prostoru računala nema nikakvog
programa.
Ukoliko dođe do ispisivanja (listanja) teksta na ekran, pa tek nakon toga znak > tada ponovo direktno u liniji
unesite
NEW

[CR]

Čime ćete obrisati tekstualni prostor predviđen za BASIC programe i na taj način omogućiti pisanje novog
programa.
Vratimo se konačno na naš primjer:
17

10
20
30
40
50

N=0
PRINT N
N=N+1
IF N>99 THEN END
GOTO 20

Napisani program će računalo početi izvoditi kad direktno u liniji napišemo:
RUN

[CR]

što znači IZVRŠI,
Rješenje našeg problema je na ekranu, tj. imat ćemo slijedeći ispis:
0
1
2
3
.
.
.
98
99

2.1.5 Mijenjanje izvornog programa
Izvorni program je potrebno često mijenjati bilo zato, jer smo prilikom pisanja napravili grešku, tj. pogrešno
unesli neku od naredbi, ili želimo isti program koristiti za rješenje još nekog srodnog problema, ali prethodno
moramo dodati neke izmjene.
Kako ne bismo zbog toga ponovo pisali novi program, koristeći neke od tipki sa tastature, modificirat ćemo
postojeći program.Takav postupak naziva se uređivanje programa na ekranu ("screen editing").
Koristimo tipke za pomak kursora: [s], [u], [v], [t] i tipku [PF4]. Smjer strelice na tipki označuje smjer pomaka
kursora. Tipka [PF4] ima funkciju kopiranja teksta ispod kursora, Potpuni opis navedenih tipki je dan u odjeljku
koji opisuje tastaturu.
Navedimo na kraju primjer korištenja "editorskih" tipki.
Primjer 1: Unesimo prvo program za crtanje sinusoide
10
20
30
40
50
60
70
>

PI=3.14 159
K=2*PI/256
FOR X=0 TO 255
Y=127+l 00* SIN(K*X)
PLOTX,Y
NBXT X
END

Program ponovo izvršimo tako da direktno u liniji unesemo
RUN

[CR]

Na ekranu če se pojaviti jedna perioda sinusoide amplitude 100, a ujedno će se na ekranu nalaziti još i
tekstualni dio programa.
Sada bismo željeli da na ekranu bude ista sinusoida, ali da nema tekstualnog djela, odnosno našeg programa.
Drugim riječima, moramo u programu navesti prethodno brisanje ekrana, a tek onda crtanje.
To postižemo tako da između 20 i 30 programske linije umetnemo (insertiramo) naredbu za brisanje ekrana.
Unesimo:
25 PRINT CHR$(12)

[CR] na kraju

i sada ponovo izvršimo program. Na ekranu sada imamo samo graf funkcije.
Sljedeća promjena koju želimo je da nam se nacrta ista funkcija, ali dvije periode, te amplitudom 50.
Unesimo prvo direktno (bez programa), u liniji [CTL] i [L] istovremeno čim obrišemo ekran te nakon toga
LIST

[CR]
18

Za dvije periode moramo mijenjati sadržaj linije 20 tj. umjesto
20 K=2*PI/256

mora biti
20 K=2*PI/128

Postupak izmjena je slijedeći :
tipkom [u] pomaknemo kursor do linije 20
tipkom [PF4] iskopiramo kompletan sadržaj linije do 256
sada se kursor nalazi ispod brojke 2
unesemo umjesto 256, 128 i pritisnemo na tipku [CR]
za promjenu amplitude moramo u liniji 40 faktor 100 promijeniti u 50
tipkom [v] pomaknemo kursor do linije 40
iskopirajmo kompletan sadržaj linije do 100
kursor se sada nalazi ispod brojke 1
umjesto 1 Unesimo [SP] (razmaknica)
umjesto 0 Unesimo 5
tipkom [PF4] iskopiramo sve do kraja linije i pritisnemo tipku [CR]
Sada ponovo obrišemo ekran [CTL] i [L] istovremeno, te nakon toga
LIST

[CR]

Opažamo da naš program sadrži sve izmjene.
Nakon izvršenja programa na ekranu imamo novi graf funkcije sa traženim izmjenama.

2.2 ULAZNO/IZLAZNE naredbe
ULAZNO/IZLAZNE naredbe služe za kontrolu toka podataka između mikroračunala ORAO i ulazno/izlaznih
jedinica.
U osnovnom obliku mikroračunalo ORAO ima za ulaznu jedinicu tastaturu, a kao izlaznu jedinicu prikaz na TV
ekranu ili TV monitoru.

2.2.1 INPUT naredba
INPUT naredba omogućava unos podataka sa tastature pod programskom kontrolom.
Primjer 1:
10 INPUT X

znači unesi jednu numeričku varijablu i priredi je simboličkoj varijabli X
20 INPUT X$

znači unesi jednu string varijablu i priredi je simboličkoj varijabli X$
Nakon što je računalo interpretiralo naredbu INPUT, na ekranu se pojavi znak ? što znači da korisnik može
unijeti podatak (na kraju obavezno pritisnuti tipku [CR]).
Ukoliko se prilikom upisa pojavila greška mikroračunalo odgovara sljedećim ispisom na ekranu:
? PONOVI UPIS

te u novu liniju postavlja znak ?.
Primjer 2 pokazuje istovremeni unos numeričkih i string varijabli.
Svaka varijabla u INPUT naredbi mora biti od druge odvojena zarezom.
Primjer 2:
10 INPUT X,X,Z,A$

višestruki unos podataka
19

20 INPUT"UNESI VRJEDNOST";X

ispis poruke prije unosa

2.2.2 DATA i READ naredbe
Naredbe DATA i READ se koriste uvijek zajedno, da bi se izvršilo priređivanje vrijednosti pojedinim varijablama
(znak "=" služi za istu svrhu).
Naredba READ priređuje sekvencijalno varijablama iz polja argumenta vrijednosti specificirane u polju
argumenta DATA naredbe.
Podaci u polju argumenta DATA naredbe moraju biti odvojeni zarezom.
Primjer 1:
10 DATA 1,2,3,4,5
20 READ A,B,C,D,E

ekvivalentan niz operacija je
10
20
30
40
50

A=1
B=2
C=3
D=4
E=5

Primjer 2:
10 DATA 1,2,ORAO,MIKRORAČUNALO,7
20 READ A,B,C$,D$,C

ekvivalentan niz operacija je
10
20
30
40
50

A=1
S=2
C$="ORAO"
D$="MIKRORAĆUNALO"
C=7

2.2.3 RESTORE naredba
Vraća podatkovnu kazaljku na prvi argument DATA naredbe
Primjer 1:
10
20
30
40
50
60

DATA 1,2,3,4,5,6
READ A,B,C
RESTORE
READ D,E,F
RESTORE
READ G,H

Ekvivalentan niz operacija je
10
20
30
40
50
60
70
80

A=1
B=2
C=3
D=1
E=2
F=3
G=1
H=2

2.2.4 PRINT naredba
PRINT naredba omogućava korisniku da pod kontrolom BASIC programa i/ili direktno u liniji ispiše vrijednost
željene varijable na ekran.
O naredbi PRINT je već bilo govora u odjeljcima 2.1.1 i 2.1.2, pa sada više nećemo navoditi primjere.
Kao specifičnost ovog BASIC-a navedimo da umjesto naredbe PRINT možemo koristiti znak ?.
Primjer 1:
10?"UPiTNIK ZAMJENJUJE PRINT NAREDBU"

20

>
RUN

[CR]

UPITNIK ZAMJENJUJE NAREDBU PRINT
> LIST [CR]
10 PRINT"UPITNIK ZAMJENJUJE NAREDBU PRINT"

Primjer 2: Razmotrimo još slijedeća dva programa
10?"MIKRORAĆUNALO";
20?"ORAO"

odnosno
10?"MIKRORAĆUNALO"
20?"ORAO"

Nakon izvođenja prvog primjera imamo na ekranu ispis:
MIKRORAČUNALO ORAO

a nakon drugog
MIKRORAČUNALO
ORAO

Znak ";" na kraju PRINT naredbe nam nastavlja slijedeći ispis u istoj liniji, dok PRINT bez ";" na kraju automatski
generira ispis u novom retku.

2.3 PETLJE I POTPROGRAMI
Primjer petlje smo upoznali več u odjeljku 2.1.3, tj. 100 puta smo ponavljali operaciju /ISPIŠI N/, /UVEĆAJ N ZA
JEDAN/, te testirali konačni uvjet /DA LI JE N>99/.
U primjeru 1 iz odjeljka 2.1.4 problem iste petlje kodirali smo u BASIC-u.
BASIC mikroračunala ORAO omogućava kodiranje petlje uz automatsko ispitivanje konačnog uvjeta.

2.3.1 FOR...NEXT naredbe
Naredbe FOR i NEXT koriste se zajedno da oi se osnovala programska petlja.
Petlja omogućava izvršenje jedne ili više naredbi određeni broj puta.
FOR naredba sastoji se iz tri dijela: FOR,TO i STEP
-

FOR dio inicijalno postavlja početni iznos varijable s kojim će se petlja početi izvoditi
TO dio specificira konačni iznos varijable s kojim će petlja biti završena
STEP dio definira korak povećavanja varijable prilikom opetovanja (iteracije)

Sve naredbe koje se nalaze unutar petlje izvršavaju se toliko puta kolike i petlja.
Ako ne definiramo vrijednost za STEP, korak iteracije će biti automatski jedan.
NEXT naredba dolazi na kraj petlje i njome se petlja zatvara.
Dozvoljena je upotreba petlje unutar petlje, ali se one ne smiju preklapati (Primjer 1).
Petlje koje završavaju na istom mjestu mogu biti zatvorene jednom NEXT naredbom npr.
NEXT I,J

Primjer 1: Ispis brojeva od 0 do 99
10 FOR N=0 TO 99
20 PRINT N
30 NEXT N

Primjer 2: Nedozvoljena upotreba FOR...NEXT petlje:
21

100
200
210
220
230
240

FOR X=7 TO 20
PRINT X
FOR Y=0.25 TO 2.5
NEXT X
PRINT Y
NEXT Y

Primjer 3: Petlje koje završavaju na istom mjestu:
10
20
30
40

FOR I=0 TO 10 STEP 2
FOR J=0 TO 20 STEP 4
PRINT I,J
NEXT J,I

liniju 40 možemo još napisati:
40 NEXT J:NEXT I

ili samo
40 NEXT:NEXT

Primjer 4: Početni iznos varijable, konačni iznos varijable i korak mogu, također, biti varijable čiji će iznos biti
izračunat unutar programa ili definiran naredbom INPUT:
10
20
30
40

INPUT X, Y,Z
FOR I=X TO Y STEP Z
PRINT 1, 1ˆ2
NEXT

RUN
?10,100,2
10
100
12
144
.
.
.
.
.
.
100 10000

Primjer 5: Izračunavanje faktorijela
10
15
20
30
40
50
60
70

INPUT"N=";N
FA=1
IF N=0 THEN 60
FOR X=N TO 1 STEP -1
FA=FA*X
NEXT X
PRINT"N!=";FA
END

RUN
N = ? 3
N!= 6
>

[CR]

2.3.2 GOTO naredba
Naredba kojom se izvođenje programa bezuvjetno skreće na specificiranu liniju .
Nakon toga program se dalje ponovo izvodi sekvencijalno od linije na koju je skrenut GOTO naredbom.
Primjer 1:
100?"mikroračunalo";
200 GOTO 300
250 A=2:B=3:C=A+B
300?"ORAO"
310?"PEL VARAŽDIN"
320?"LINIJA 250 NEĆE BITI IZVRŠENA"
RUN

22

mikroračunalo ORAO
PEL VARAŽDIN
LINIJA 250 NEĆE BITI IZVRŠENA

2.3.3 GOSUB i RETURN naredbe
Unutar programa često se pojavljuje zahtjev za izvršenje istog zadatka u različitim dijelovima programa.
Svaki takav zadatak tada definiramo kao neovisnu cjelinu programa koja može biti testirana i izvođena odvojeno
od tzv. GLAVNOG DJELA, a nazivamo je SUBRUTINA ili POTPROGRAM.
Svaki POTPROGRAM mora biti zaključen naredbom RETURN, kako bi se kontrola izvođenja ponovo vratila
GLAVNOM DIJELU.
Primjer korištenja GOSUB...RETURN naredbi je opisan u odjeljku 2.3.4

2.3.4 REM naredba
REM naredba omogućava pisanje korisnikovog komentara u program. Preporučuje se što češće korištenje
naredbe REM unutar programa, zbog veće preglednosti i razumljivosti programa.
Primjer 1: Korištenje potprograma
Želimo nacrtati tri sinus funkcije:
1. amplituda 100 bez faznog pomaka s obzirom na ishodište
2. amplituta 50 i fazni pomak pi/4 radijana
3. amplituda 80 i fazni pomak pi/3 radijana
10 REM*
20 REM* GLAVNO TJELO PROGRAMA
30 REM*
35 REM
40 PI=3.141593
50 K=2*PI/256
60 FOR X=0 TO 255
65 REM
66 REM prva funkcija
67 REM
80 A=100:FI=0:GOSUB 1000
90 REM
92 REM druga funkcija
95 REM
100 A=50:FI=PI/4:GOSUB 1000
130 REM
135 REM treča funkcija
138 REM
140 A=80:FI=PI/3:GOSUB 1000
150 NEXT X
160 END:REM* KRAJ GLAVNOG TJELA
1000 REM *
1100 REM * potprogram za računanje
1200 REM * i crtanje točke
1300 REM *
1400 Y=128+A*SIN(K*X+FI)
1500 PLOTX,Y
1600 RETURN:REM* kraj potprograma
RUN

23

Slika 3.2
Kao zaključak navedimo dvije važne značajke SUBRUTINA:
1. Dijeljenje programa u module koji mogu biti testirani i izvođeni odvojeno od glavnog dijela, čime se
povećava razumljivost i preglednost programa
2. Omogućavaju da se isti dio programa koristi za slične i/ili srodne probleme, a da se za svaki problem ne
piše poseban program

2.3.5 ON naredba
Koristi se u kombinaciji sa naredbama GOTO i GOSUB, čime se omogućava razgranjivanje programa iz jednog
mjesta na više.
Sintaksa ON naredbe je:
ON I GOTO 100,200,300

ako je 1=1 izvodi se GOTO100
ako je 1=2 izvodi se GOTO200
ako je 1=3 izvodi se GOTO300
Primjer 1: Upotreba ON naredbe
10
20
30
50
60
70

INPUT L
ON I GOTO 50,60,70
END
PRINT"PRVI SKOK":END
PRINT"DRUGI SKOK":END
PRINT"TREĆI SKOK":END

Ako je I veći od broja navedenih skokova, izvršava se prva slijedeća linija nakon ON...GOTO/GOSUB naredbe.
Ako I ima negativnu vrijednost, korisnik će primiti od računala poruku da se pojavila greška.

2.3.6 IF...THEN naredba
Naredba IF se koristi da bi se kontrola izvršavanja programa prebacila na drugi dio iz glavnog toka, ako je
ispunjen određeni uvjet.
24

Naredba IF se koristi u kombinaciji sa slijedećim operatorima:
1. =
2. <>
3. <
4. >
5. <=
6. >=

; jednako
; različito
; manje
; veće
; manje ili jednako
; veće ili jednako

Navedene operatore nazivamo operatori relacije ili odnosa. Sintaksa naredba IF je slijedeća:
IF xxx THEN yyy

Ukoliko je operacija ili izraz xxx istinit, tada se izvršava naredba yyy, a ukoliko je neistinit, tada se izvršava
naredba u prvoj slijedećoj liniji nakon linije s IF naredbom.
Primjer 1: Upotreba IF naredbe
10
20
30
40
50

INPUT A,B
IF A>B+4 THEN 50
IF A=3 THEN PRINT"TROJKA":END
IF A>B THEN PRINTA,B:END
PRINT(B-4)

Primjer 2: Pogađanje brojeva
10 PRINT CHR$(12)
20 PRINT" POGAĐANJE BROJEVA "
40 Y=INT(100*RND(7))
50 FOR 1=1 TO 10
60 INPUT X
70 IF XY THEN PRINT"PREVELIKI JE":GOTO100
83 PRINT
85 PRINT"BRAVO POGODILI STE U";I;"-om POKUŠAJU":GOTO190
100 NEXT I
120 PRINT:PRINT"NAŽALOST OVAJ PUT NISTE USPJELI"
190 PRINT
200 INPUT"ŽELITE LI JOŠ (DA/NE)";A$
220 IF A$="DA" THEN 10
230 END

2.4 POLJA PODATAKA
Polje podataka u BASIC-u za mikroračunalo ORAO definiramo na slijedeći način:
X(I)
; jednodimenzionalno polje
X(I,J) ; dvodimenzionalno polje
X(I,J,K) ; trodimenzionalno polje
gdje su I,J,K indeksi polja, koji terminiraju određeni element polja za I,J,K=0,l ... (n-1), npr.:
X(3) predstavlja 4-ti element polja
X(l,2) predstavlja element dvodimenzionalnog polja koji je smješten u prvom retku odn. drugom stupcu (vidi
Primjer 1 ovog odjeljka)
Opažamo da svako polje ima svoju dimenziju, kojom je ujedno i definiran broj elemenata u polju.
Npr. X(3,4,2) je polje dimenzije 3 koje ima ukupno: (3+1)x(4+1)x(2+1)=60 elemenata.
POLJE DAKLE PREDSTAVLJA SKUP INDEKSIRANIH VARIJABLI KOJE NAZIVAMO ELEMENTI POLJA.
ELEMENT polja je predstavljen imenom polja i jednim ili više indeksa u zagradi.
Elementi polja mogu biti numeričke i/ili string varijable, što specificiramo za potonje znakom $ u imenu npr.:
X(i)
X$(i)

; i-ti element polja numeričkih varijabli
; i-ti element polja string varijabli

Primjer 1:
a. Formiranje jednodimenzionalnog polja
25

x(i) za i=0,1...9
x(0)
x(1)
x(2)
.
.
.
x(8)
x(9)
b. Formiranje dvodimenzionalnog polja x(i,j) za i=0,1,2 te j=0,1,2,3
x(0,0)
x(1,0)
x(2,0)

x(0,1)
x(0,2)
x(0,3)

x(0,2)
x(1,2)
x(2,2)

x(0,3)
x(1,3)
x(2,3)

Vidimo da dvodimenzionalno polje formiramo prema "brže" rastućem indeksu "i" i "sporije" rastućem indeksu "j".
c. Formiranje trodimenzionalnog polja x(i,j,k) za i=0,1,2 ; j=0,1,2 ; k=0,1,2
x(0,0,0)
x(1,0,0)
x(2,0,0)

x(0,1,0)
x(1,1,0)
x(2,1,0)

x(0,2,0)
x(1,2,0)
x(2,2,0)

x(0,0,1)
x(1,0,1)
x(2,0,1)

x(0,1,1)
x(1,1,1)
x(2,1,1)

x(0,2,1)
x(1,2,1)
x(2,2,1)

x(0,0,2)
x(1,0,2)
x(2,0,2)

x(0,1,2)
x(1,1,2)
x(2,1,2)

x(0,2,2)
x(1,2,2)
x(2,2,2)

2.4.1 DIM naredba
DIM naredbom deklariramo dimenziju polja,odnosno u memoriji rezerviramo prostor za željeno polje, te ujedno
sve elemente polja postavimo na nulu.
Primjer 1:
10 DIM X(10),X2(23,12),X4$(5)

rezerviramo (10+1) elemenata za polje X,(23+1)x(12+1) za polje X2 i (5+1) elemenata za polje X4$
Vratimo se sada na primjer 1 iz odjeljka 2.2.2 Primjer 2:
10 DATA 1,2,3,4,5
20 READ A,B,C,D,E

umjesto da koristimo pet numeričkih varijabli, formirajmo jednodimenzionalno polje od 5 elemenata i priredimo
elementima polja vrijednosti iz polja argumenta DATA naredbe:
10
20
30
40
50

DIM X(4):REM rezerviramo mjesto za 5 elemenata
FOR 1=0 TO 4:REM formiramo indeks pomoću petlje
READ X(I):REM upisivanje podataka u polje
NEXT I
DATA 1,2,3,4,5

Da bi provjerili pravilnost priređivanja vrijednosti pojedinim elementima, izvedimo slijedeće:
direktno u liniji napišimo
PRINT X(0),X(1),X(2),X(3),X(4) [CR]

dobivamo slijedeći ispis
1 2 3 4 5

26

što je potvrda pravilnosti priređivanja.

2.4.2 Pisanje podataka u polje
Na prijašnjem primjeru smo naredbama READ i DATA pokazali mogućnost upisivanja podataka u polje.
Pokažimo još slijedećim primjerom upisivanje podataka u polja pomoću naraedbe INPUT, te matematičkom
funkcijom sinus.
Primjer 1:
10 DIM X(5),Y(255),Z(5)
20 PI=3.141593:K=2*PI/256
30 FOR 1=0 TO 255
40 IF I]=6 THEN 90
50 READ X(I):INPUT Z(I)
90 Y(I)=100*SIN(K*I)+128
100 NEXT I
110 DATA 0,1,2,3,4,5

Navedenim primjerima smo pokazali kako pojedinom elementu polja priredimo numeričku vrijednost. Potreba za
formiranjem polja pojavljuje se čim imamo skup srodnih vrijednosti koje želimo preparirati za daljnju obradu.

2.4.3 Čitanje podataka iz polja
Poljem formiran skup srodnih podataka možemo sada koristiti pri daljnjoj obradi:
- numeričkih analiza
- statističkih obrada itd.
Vidimo da se pojavljuje zahtjev, da elementima ulaznog polja priredimo elemente novog polja (izlazno polje),ili
da na temelju podataka ulaznog polja odredimo značajke polja (srednja vrijednost elemenata, standardna
devijacija, maksimalna vrijednost elemenata itd.) ili, što je često slučaj, odredimo sortiranje elemenata po nekom
ključu. Već smo rekli da je element polja jednoznačno definiran:
- imenom polja
- indeksom
Drugim riječima, podatak iz polja pročitamo tako, da formiramo varijablu koja nosi ime polja, a indeksom
specificiramo željeni element.
Primjer 1: Suma dvaju elemenata polja:
100X1=X(4)+X(7)
110PRINT X1

Primjer 2: Srednja vrijednost elemenata polja
Polazimo od matematičke definicije srednje vrijednosti
n −1

Xsr = (1 / n )∑ Xi =
i =0

1
( X 0 + X 1 + ..... X n−1 ) = (1 / n) * ( X 0 + X 1 + ..... X n−1 )
n

U memoriji računala već imamo polje X(I) koje sadrži 100 elemenata.
Program koji izračunava srednju vrijednost je:
90 N=100
100 S=0:REM početna parcijalna suma
110 FOR 1=0 TO 99
120 S=S+X(I):REM nova parcijalna suma
130 NEXT I
140 SV=S/N :REM srednja vrijednost
150 PRINT"SREDNJA VRIJEDNOST=";SV

Primjer 3: Generiranje histograma
Program formira ulazno polje "X" koje sadrži 185 slučajnih brojeva između 0 i 36. Praktično simuliramo 185
"bacanja" na ruletu.
Na temelju elemenata ulaznog polja, program generira izlazno polje "Y", čiji elementi predstavljaju učestalost
27

ponavljanja pojedinih brojeva kroz 185 bacanja.
Broj, čiju učestalost tražimo jednostavno je specificiran indeksom izlaznog polja, npr. Y(7) sadrži učestalost
"sedmice" u nizu od 185 bacanja. Program obuhvaća i crtanje histograma pomoću grafičkih naredbi, kojih je
način korištenja opisan u poglavlju 2.11. Za generiranje slučajnih brojeva koristimo funkciju RND(X) o kojoj će
biti govora u odjeljku 2.7.2 .
LIST
10 REM:
20 REM: HISTOGRAM
30 REM:
35 PRINTCHR$[(12)
40 DIMX(184):REM ULAZNI PODACI
45 DIMY(36):REM IZLAZNI PODACI
46 A=0
48 PRINT"GENERIRANJE ULAZNE TABELE*
50 F0RI=0TO184
60 X(I) = INT(37*RND(7))
70 NEXTI
74 PRINT“GENERIRANJE HISTOGRAMA“
75 REM:
76 REM: GENERIRANJE HISTOGRAMA
77 REM:
78 PRINT
80 F0RJ=0TO36
70 FORI=0TO184
100 IFX(I)=JTHENA=A+1
110 NEXT I
115 Y(J)=A:A=0
120 NEXT J
125 GOSUB1000
127 PRINTCHR$(4);TAB(10)"HIST0GRAM"
130 END
1000 REM:
1100 REM: CRTANJE
1200 REM:
1230 PRINTCHR$(12);CHR*(4)
1260 GOSUB2000
1300 FORI=0TO36
1400 MOV5*I+53,0
1500 DRAW5*I+53,Y(I)*16
1600 NEXT I
1700 RETURN
2000 REM:
2100 REM: SKALA
2200 REM:
2250 GOSUB3000
2300 FORY=0TO210STEP16
2400 MOV30,Y:DRAW32,Y
2450 MOW 253,Y:DRAW255,Y
2500 NEXT Y
2600 RETURN
3000 FORX=0TO31
3100 PRINT:NEXT
3200 FORX=0TO13
3300 PRINTX;CHR$(11);CHR$(11);CHR$(11)
3400 NEXT:RETURN
>

28

29

Slika 4.2 HISTOGRAM
Primjer 4: Sortiranje brojeva po veličini
Algoritam, prema kojem se sortiranje provodi, u literaturi je poznat pod imenom "BUBBLE SORT".
Dijagram toka je prikazan na slici 6.2., dok je mehanizam sortiranja po navedenom algoritmu prikazan na slici
5.2..
I=1
I+1=2

5
3
4

I=2
I+2=3

6

I=1
I+1=2

3

4

4
6

I=3
I+1=4

3
6

5>3

3<4

3<6

ZAMJENA

ZAMJENA

5

5

5

4

6

4

I=2
I+2=3

3

I+1=2

5

NEMA ZAMJENE

6

I=1

5

6
3

I=3
I+1=4

4
3

5>4

4<6

4>3

NEMA ZAMJENE

ZAMJENA

NEMA ZAMJENE

5

6

6

5

5

6
4

I=2
I+2=3

4

I=3
I+1=4

4

3

3

5<6

5>4

4>3

ZAMJENA

NEMA ZAMJENE

NEMA ZAMJENE

3

Slika 5.2. BUBBLE SORT mehanizam
Vidimo daše princip sortiranja bazira na zamjeni mjesta broja sljedbenika s prethodnikom, ukoliko je sljedbenik
veći. Drugim riječima, brojevi koji su u polju veći, kao "mjehurići" putuju prema vrhu tabele, zato je i takav način
sortiranja dobio ime BUBBLE SORT, jer riječ "bubble" na engleskom znači mjehurić.
Opažamo da, osim indeksa I koji nam služi kao kazaljka elementa polja, imamo još jednu varijablu EX koja nam
daje kriterij odluke.
Na početku sortiranja je EX=0 koji odmah pri prvoj zamjeni poprima vrijednost "1" i zadržava je sve dok kazaljka
ne dostigne dno tabele. Ukoliko je EX=1, tada postupak ponavljamo tako dugo dok EX ne postane "0" i kazaljka
istovremeno pokazuje na dno tabele.
Zamjenu dvaju elemenata u polju provedemo uz pomoć još jedne varijable T.
KORAK1: T=X(I-1)
KORAK2: X(I-1)=X(I)
KORAK3: X(I)=T
KORAK4: kraj

;X(I-1) spremamo na T
;X(I) spremamo na X(I-1)
;T VRATIMO NA X(I)

30

START

I=0
EX=0

X(I+1)>X(I)
NE

I=I+1

DA

EX=1

X(I+1)↔X(I)

NE
I=END I

NE

EX=0

DA
END

31

Slika 6.2 Dijagram toka BUBBLE SORT-a
10 REM:
20 REM: BUBBLE SORT
30 REM:
40 PRINTCHR*(12)
50 T=0
60 INPUT"KOLIKO BROJEVA ŽELITE SORTIRATI";N
65 PRINT
68 DIMX(N)
70 REM:
72 REM: UNOS PODATAKA
74 REM:
76 FORI=0TON-1
78 PRINTI+1;:INPUTX(I)
79 NEXT I
80 REM:
90 REM: POČETAK SORTIRANJA
95 REM:
100 EX=0
110 FORI=0TON-1
120 IF X(I + 1)>X(I)THENGOSUB500
130 NEXT i
140 IFEX<>0THEN100
145 GOSUB600
150 END
500 REM:
510 REM: ZAMJENA
520 REM:
540 EX=1
550 T=X(I):X(I)=X(I+1):X(I+1)=T
560 RETURN
600 REM:
610 REM: POTPROGRAM ZA ISPIS
620 REM:
625 PRINT:PRINT
650 FORI=0TON-1
660 PRINTI+1;". ";X(I)
670 NEXT I
680 RETURN
>
RUN KOLIKO BROJEVA ŽELITE SORTIRATI? 8
1
2
3
4
5
6
7
8

?
?
?
?
?
?
?
?

123.456
3456,45
23
678.345
12.9090
453
22234
.034

1
2
3
4
5
6
7
8

.
.
.
.
.
.
.
.

22234
3456.45
678.345
453
123.456
23
12.909
.034

2.5 STRINGOVI
Pojam STRING-a smo već upoznali u odjeljku 2.1.1,tj. rekli smo da je STRING niz znakova koji mogu biti:
- slova
- brojevi
- znakovi interpunkcija
a nalaze se pod znakovima navodnika.
Stringovi jedino ne mogu biti kontrolni znakovi npr. "[CTL][L]","[CR]" itd.
String može biti uključen u kontekstu naredbi PRINT ili INPUT dok string varijable moraju obavezno na kraju
sadržavati znak "$". Stringovi mogu, također, biti elementi polja i tada ime polja mora također sadržavati znak
"$".
Znak "$", dakle, predstavlja identifikacijski znak za stringove, odnosno string operator.
Stringove možemo uspoređivati u smislu određivanja njihove jednakosti.
32

Primjer 1: Uspoređivanje stringova
10
20
30
40
50

A$ = "LIJEPO":B$ = "LIJEPO"
C$ = "RIJETKO":D$ = "ISTI SU"
IF A$=B$ THEN PRINT D$
IF A$=C$ THEN PRINT D$
PRINT"RAZLIČITI SU ! "

Primjer 2: Zbrajanje stringova
10
20
30
40
50
90
95

READ A$,B$,C$,D$,E$,F$,G$
S1$=A$+" "+B$+" "+F$+" "+G$
S2$=A$+" "+B$+" "+C$+" "+D$+" "+E$
PRINTS1$:PRINTS2$
END
DATA SVAKI,POČETAK,IMA,SVOJE
DATA ČARI,JE,TEŽAK

U slijedećim odjeljcima su opisane daljnje moguće operacije sa stringovima pomoću tzv. string funkcija.

2.5.1 ASC funkcija
Funkcijom ASC(X$) priredimo nekoj numeričkoj varijabli decimalnu vrijednost prvog znaka u stringu koja
odgovara YU (ASCII) kodu.
Primjer 1:
10
20
30
40

D=ASC("?")
E=ASC("A")
X$="ORAO":X=ASC(X$)
PRINT D;E;X

RUN
63 65 79

Vrijednosti kodova za pojedine znakove dane su u tablici YU (ASCII) kodova na kraju priručnika.

2.5.2 CHR$ funkcija
Funkcija CHR$(X) pretvara decimalnu vrijednost YU (ASCII) koda u alfanumerički znak, odnosno tvori string od
jednog karaktera.
CHR$(X) funkcija ja dakle inverzna funkcija od ASC(X$) funkcije.
Primjer 1:
10 PRINT CHR$(63);CHR$(65);CHR$(79)
RUN
? A O

2.5.3 LBFT$ funkcija
Funkcijom LEFT$(X$,N) tvorimo podstring od-stringa X$ dužine N znakova, počevši s lijeve strane.
Primjer 1:
10 X$="TELEVIZIJA"
20 X4$=LEFT$(X$,4)
30 PRINT X4$
RUN
TELE
>

2.5.4 RIGHT$ funkcija
Funkcijom RIGHT$(X$,N) tvorimo podstring od stringa X$ dužine N znakova počevši s desne strane.
Primjer 1:
33

10 X$="TELEVIZIJA"
20 X6$=RIGHT$(X$,6)
30 PRINT X6$
RUN
VIZIJA
>

2.5.5 MID$ funkcija
Funkcijom MID$(X$,I,J), tvorimo podstring funkciju od stringa X$ dugačak J znakova, počevši s I-tim znakom.
Primjer 1:
10 X$="TELEVIZIJA"
20 A$=MID$(X$,3,4)
30 PRINT A$
RUN
LEVI
>

2.5.6 LEN funkcija
Funkcijom LEN(X$) priredimo nekoj numeričkoj varijabli dužinu stringa X$.
Primjer 1;
10 A$="RAĆUNALO"
20 X=LEN(A$)
30 PRINT X
RUN
8
>

jer string "RAČUNALO" ima 8 znakova.

2.5.7 STR$ funkcija
Funkcijom STR$(X) pretvaramo numeričku vrijednost varijable X u string.
Primjer 1:
10 INPUT X: REM X je numerička varijabla
20 X$=STR$(X)
30 PRINT X$
RUN
? 25
25

2.5.8 VAL funkcija
Funkcijom VAL(X$) priredimo numeričkoj varijabli numeričku vrijednost string X$.
10 A$="3.141593"
20 A=VAL(A$)
30 PRINT A
RUN
3.141593
>

2.5.9 Primjeri programa sa STRING funkcijama
Primjer 1: Pretvorba binarnog broja u decimalni
LIST
10 REM:

34

20 REM: BINARNO-DECIMALNA PRETVORBA
30 REM:
40 INPUT "BINARNI BROJ=";B$
50 L=LEN(B$):D=0
60 FORI=1TOL
70 A=VAL(MID$(B$,I,1))
80 IFA>1THENPRINT"BROJ NIJE BINARNI":END
90 D=D+A*2ˆ(L-I)
92 D=INT(D)
95 NEXT I
100 PRINT"DECIMALNI EKVIVALENT=";D
>

35

RUN
BINARNI BR0J=? 1111111111111111
DECIMALNI EKVIVALENT= 65535
>
RUN
BINARNI BR0J=? 1010
DECIMALNI EKVIVALENT= 10
>
RUN
BINARNI BROJ=? 01111111
DECIMALNI EKVIVALENT= 127

Primjer 2: Pretvorba decimalnog broja <=65535 u binarni ekvivalent
LIST
10 REM:
20 REM: DECIMALNO-BINARNA PRETVORBA
30 REM:
35 B$=""
40 INPUT"DECIMALNI BROJ=";D
50 X=INT(D/256):GOSUB80
60 X=D-256*X;GOSUB80
65 PRINT"BINARNI EKVIVALENT=":PRINT
68 PRINTB$
70 END
80 FORI=7TO0STEP-1
90 B=SGN(XAND2ˆI)
100 B$=B$+STR$(B)
120 NEXT I
130 RETURN
>
RUN
DECIMALNI BROJ=? 65535
BINARNI EKVIVALENT=
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>
RUN
DECIMALNI BROJ=? 127
BINARNI EKVIVALENT=
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
>
RUN
DECIMALNI BR0J=? 40960
BINARNI EKVIVALENT=
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
>
RUN
DECIMALNI BR0J=? 10
BINARNI EKVIVALENT=
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0

Primjer 3: Pretvorba heksadecimalnog broja <=FFFF u decimalni ekvivalent
LIST
10 REM:
11 REM: HEXABECIMALNO U DECIMALNO
12 REM:
15 INPUT"HEXABECIMALNI BROJ=";A$
20 A$=RIGHT$("0000"+A$,4):A=0
30 FORJ1=1TO4:C$=MID$(A$,J1,1)
40 IFC$>="A"ANDC$<="F"THENC=ASC(C$)-ASC("A")+10
50 IFC$>="0"ANDC$<=" 9" THENC=ASC(C$)-ASC("0")
60 A=A*16+C:NEXTJ1
70 PRINT"DECIMALNI EKVIVALENT=";A
>
RUN
HEXADECIMALNI BROJ=? FFFF
DECIMALNI EKVIVALENT= 65535
>
RUN
HEXADECIMALNI BROJ=? DD11
DECIMALNI EKVIVALENT= 56593

36

>
RUN
HEXADECIMALNI BROJ=? C274
DECIMALNI EKVIVALENT= 49780
>
RUN
HEXADECIMALNI BROJ=? 007F
DECIMALNI EKVIVALENT= 127
>
RUN
HEXADECIMALNI BROJ=? 03FF
DECIMALNI EKVIVALENT= 1023
>

Primjer 4: Pretvorba decimalnog broja <=65535 u heksadecimalni ekvivalent
LIST
10 REM:
20 REM: DECIMALNO U HEXADECIMALNO
30 REM*
40 INPUT"DECIMALNI BROJ=";Q
45 GOSUB50:PRINT"HEXADECIMALNI EKVIVALENT=";Q$
46 END
50 B=INT(Q/256):GOSUB90
60 H1$=H$
70 B=Q-B*256:GOSUB90
80 H2$=H$:Q$=Hl$+H2$:RETURN
90 V=BAND15:H=(BAND240)/16
100 IFH>9THENH=H+55*GOTO120
110 H=H+48
120 IFV>9THENV=V+55;GOTO140
130 V=V+48
140 H$=CHR$(H)+CHR$(V);RETURN
>
RUN
DECIMALNI BROJ=? 65535
HEXADECIMALMI EKVIVALENT=FFFF
>
RUN
DECIMALNI RROJ=? 1023
HFXADECIMALNI EKVIVALENT=03FF
>RUN
DECIMALNI BROJ=? 49780
HEXADECIMALNI EKVIVALENT=C274

Primjer 5: Određivanje dana u tjednu iz datuma.
LIST
10 REM:
12 REM: DAN U TJEDNU
15 REM:
20 DIMM$(12),W$(7)
25 REM: FORMIRANJE POLJA
30 FORI=1TO12
40 READ M$(I)
50 NEXT I
60 FORI=1TO7
70 READW$(I)
80 NEXT I
85 REM: OČITAVANJE DATUMA
86 REM: I IZRAČUNAVANJE DANA U TJEDNU
90 GOSUB300:REM UNOS DATUMA
95 M=M1
100 IFM>2 THEN 140
110 M=M+10
120 Y=Y-1
130 GOTO150
140 M=M-2

37

150
160
170
180
190
195
198
200
210
220
230
240
300
310
320
330
400
410
420
430
440
450

I=Y-INT(Y/100)*100
K=INT(Y/100)
J=INT((13*M-l)/5)+INT(I/4)4INT(K/4)
W=J+I+T-2*K
W=W-INT(W/7)%7+l
REM* NEDJELJA=1,PONEDJELJAK=2, ,..
PRINT
PRINTW$(W);" ";T;",';M$(Ml);Yl;"."
DATA JANUAR ,FEBRUAR,MART,APRL,MAJ,JUNI,JULI
DATA AUGUST,SEPTEMBAR,OKTOBAR,NOVEMBAR,DECEMBAR
DATA NEDJELJA,PONEDJELJAK,UTORAK,SRIJEDA,ČETVRTAK,PETAK,SUBOTA
END
INPUTT,M1,Y
Y1=Y
IFM1=2ANDT=29THEN GOSUB400
RETURN
P=Y/4*P1=INT(P)
DP=P-P1
IFDP=0THEN RETURN
PRINT"POGRESAN UNOS !!! "
PRINT"GODINA NIJE PRESTUPNA"
END

>
RUN
? 16,03,1959
PONEDJELJAK 16 .MART 1959
>
RUN
? 01,01,1985
UTORAK 1 .JANUAR 1985 .
>
RUN
? 03,08,1985
SUBOTA 3 .AUGUST 1985 .
>
RUN
? 08,03,1985
PETAK 8 .MART 1985 .
>
RUN
? 24,11,1956
SUBOTA 24,NOVEMRAR 1956
RUN
>
? 29,02,1985
POGREŠAN UNOS !!!
GODIMA NIJE PRESTUPNA
>
RUN
? 29,02,1984
SRIJEDA 29 .FEBRUAR 1984 .

Primjer 6: Sortiranje naziva po abecednom redu QUICK SORT
50 REM:
60 REM: QUICK SORT
70 REM:
110 INPUT"KOLIKO NAZIVA ŽELITE SORTIRATI":N
115 PRINT
120 DIMI$(N),A(N)
130 FORI=1TON
140 A(I)=I
160 PRINTI;:INPUTI$(I)
180 NEXT I
550 DIMS(30,2)
560 Sl=l
570 S(l,l)=l
580 S(1,2)=N
590 L=S(Sl,l)
600 R=S(S1,2)
610 Sl=Sl-1
620 I=L
630 J=R

38

640 H=A(INT(L+R)/2)
650 IFI$(A(1))>=I$(H)THEN680
655 IFI>=RTHEN680
660 I=I+1
670 GOTO650
680 IFI$(A(J)X=I$(H)THEN710
685 IFJ<=LTHEN710
690 J=J-1
700 G0T0680
710 IFI>JGOTO770
720 Z=A(I)
730 A(I)=A(J)
740 A(J)=Z
750 I=I+1
760 J=J-1
770 IFI<=JGOTO650
780 IF(R-I)<=(J-L)GOTO850
790 IFL>=JGOTO830
300 S1=S1+1
810 S(S1,1)=L
820 S(S1,2)=J
830 L=I
840 GOTO900
850 IFI>=RGOTO89O
860 Sl=Sl+l
870 S(S1,1)=I
880 S(S1,2)=R
890 R=J
900 IFR>LGOTO620
910 IFS1<>0G0T0590
950 PRINT
1000 FORI=1TON
1010 PRINTI;".";" ";l$(A(l))
1020 NEXT
1030 END
>
RUN
KOLIKO NAZIVA ŽELITE SORTIRATI? 10
1 ? FALKESTEINERHORSTUIEBER LIMPY
2 ? BOBALEC BJURA
3 ? PETKOVIC FRANE
4 ? FUCEK BJUKA
5 ? PECAROS ISTVAN
6 ? RABIC STIJEPAN
7 ? SCHUNBGLIEBER HANS
8 ? ANIC ROBERT
9 ? ALIC BLAGOJE
10 ? BOROVIC TOMISLAV
1 . ALIC BLAGOJE
2 . ANIC ROBERT
3 . BOBALEC BJURA
4 . BOROVIC TOMISLAV
5 . FALKESTEINERHORSTUIEBER LIMPY
6 . PECAROS ISTVAN
7 . PETKOVIC FRANE
8 . PUCEK BJUKA
9 . RABIC STIJEPAN
10 . SCHUNBGLIEBER HANS

2.6 ARITMETIČKO/LOGIČKE OPERACIJE
U odjeljku 2.1.2 upoznali smo nekoliko osnovnih aritmetičkih operacija: zbrajanje, množenje, potenciranje.
Osim aritmetičkih operacija, BASIC mikroračunala ORAO, ima mogućnost obrade logičkih operacija.
Operacije i pripadajući operatori po prioritetu izvršavanja u aritmetičko/logičkom izrazu su:
OPERACIJA
Potenciranje
negacija
množenje i dijeljenje
zbrajanje i oduzimanje
jednakost

OPERATOR
^
*/
+=
39

različito
manje ili jednake
veće ili
logičko NE
logičko I
logičko ILI

<>
<=
>=
NOT
AND
OR

Ostale aritmetičko/logičke operacije tvorimo pomoću osnovnih, pod uvjetom da pazimo na prioritet izvođenja
osnovnih operacija, jer u protivnom možemo dobiti pogrešan rezultat.
Za pravilno izračunavanje kompleksnijih izraza koristimo operatore za grupiranje:
(
lijeva zagrada
)
desna zagrada

2.6.1 Aritmetičke operacije:
Primjer 1: Kodiranje pojedinih aritmetičkih operacija u BASIC-u

IZRAZ
k
3,14159
a+2,54
b-ca
xy
i:j
c2

a+b
c+2
1
2
x + y2

[(a+b)c-1]d

KODIRANJE U BASIC-U
K
3.14159
A+2.54
B-CA
X*Y
I/J
C^2
(A+B)/(C+2)
1/(X^2+Y*2)
((A+B)*C-1)*D)

U slučaju da izraz u vanjskoj zagradi sadrži još izraz u unutarnjoj zagradi, prvo će se izvršiti izraz u unutarnjoj
zagradi.
Broj lijevih zagrada, mora biti jednak broju desnih zagrada, u protivnom nam računalo šalje poruku o pogrešci.
Primjer 2:
Izraz A^B+C/D -E*F je ekvivalentan izrazu
(A*B)+(C/D)-(E*F) jer su operacije u zagradama većeg prioriteta od zbrajanja i oduzimanja.
Primjer 3:
Izraz A/B*C je ekvivalentan izrazu
(A/D)*C dok je izraz
I-J+K ekvivalenta izvršavanja operacija.
Ponekad je potrebno naglasiti redoslijed izvršavanja prema prioritetu jednako vrijednih operacija s lijeve strane
prema desnoj kod množenja i dijeljenja.
Primjer 4:
8/4*2 nam da rezultat 4 dok
8/(4*2) da rezultat 1
Prilikom pisanja izraza, programer se mora držati slijedećih pravila:
1.
Dva aritmetička operatora se ne smiju pojaviti jedan iza drugoga
A*/B nije dozvoljeno
2.
Sve računske operacije moraju biti izražene eksplicitno
(A+8)*(C+D) a ne (A+B)(C+D)
40

bc

Izraz a je dvosmislen, zato izbjegavamo zapis A^B^C
Nedvosmisleni zapisi su

3.

A^(B^C) što znači a

( bc )

odnosno (A^B)^C što znači ( a

b c

)

Jednostavan primjer pokazuje da je
2^(3^2)=512
dok je (2^3)^2=64

2.6.2 Logičke operacije
Logičkim operacijama tvorimo logičke ili Boole-ove funkcije između operanada.
Osnovne logičke funkcije su:
negacija
NOT
konjukcija
AND
disjunkcija
OR
Navedeni redoslijed je ujedno i nivo prioriteta izvođenja logičkih operacija u BASIC-u.
Kompleksnije logičke funkcije tvorimo pomoću osnovnih.
Primjer 1: Tabela istine osnovnih logičkih operacija
A
0
0
1
1

B
0
1
0
1

A AND B
0
0
0
1

A OR B
0
1
1
1

NOT A
1
1
0
0

NOT B
1
0
1
0

Primjer 2: Tvorba kompleksnijih logičkih operacija pomoću osnovnih
a.) Ekskluzivna disjunkcija: Ekskluzivna disjunkcija je definirana kao

Z = AB + A B = A ⊕ B
dok je ekvivalencija definirana kao negacija ekskluzivne disjunkcije, tj.

Z = AB + A B = A ⊕ B

A

B

A⊕ B

A⊕B

0
0
1
1

0
1
0
1

0
1
1
0

1
0
0
1

Gornja tabela sadrži tabelu istine za ekskluzivnu disjunkciju i ekvivalenciju između jednobitnih varijabli.
Sve logičke operacije možemo koristiti i na nivou višebitnih operanada,npr.:
Primjer 3: Logičke operacije s 8-bitnim operandima
a.) konjukcija :
A= 1010 1111
B= 1111 1010
A AND B= 1010 1010

; 175 decimalno
; 250 decimalno
; 170 decimalno
41

b.) disjunkcija
B=
A OR B=

0100 0001
1000 0000
1100 0001

; 65 decimalno
; 128 decimalno
; 193 decimalno

c.) negacija
A=
NOT A=

1111 1110
0000 0001

; 254 decimalno
; 1 decimalno

d.) ekskluzivna disjunkcija
A= 1100 1011
B= 1010 1101
A EOR B= 0110 0110

; 203 decimalno
; 173 decimalno
; 102 decimalno

e.) ekvivalencija
A= 1100 1011
B= 1010 1101
A ENOR B= 1001 1001

; 173 decimalno
; 45 decimalno
; 153 decimalno

Primjer 4: Kodirajmo sada u BASIC-u logičke operacije iz primjera 3

42

a.) Konjukcija
10 REM: KONJUKCIJA
20 A=175:B=250
30 Z=A AND B
RUN
170

b.) disjunkcija
10REM: DISJUNKCIJA
20 A=65:B=128
30 Z=A OR B
40 PRINTZ
RUN
193

c.) negacija
10
20
30
40
50

REM: NEGACIJA
A=254
Z=NOT A
Z=Z AND 255
PRINTZ

RUN
1

d.) ekskluzivna disjunkcija
10 REM: EOR
20 A=20
30 Z=NOT A AND B OR NOT B AND A
RUN
102

e.) ekvivalencija
10
20
30
40
50

REM: ENOR
A=203:B=173
Z=NOT A AND B OR NOT B AND A
Z=NOT Z AND 255
PRINTZ

RUN
153

Pokažimo slijedećim primjerom kako je moguće alfanumerički znak programski prikazati na ekranu u
invertiranom obliku - (crno na bijeloj pozadini).
Primjer 5: Inverzija znaka
10
20
30
40
50

A$="A"
PRINTA$
A=ASC(A$)
A=A OR 128
AI$=CHR$(A)

RUN
A
A
>

2.7 FUNKCIJE
Funkcije, koje su uključene u BASIC-u mikroračunala ORAO možemo podijeliti u tri osnovne grupe:
numeričke funkcije
posebne funkcije
korisnički definirane funkcije
43

44

2.7.1 Numeričke funkcije
Numerička funkcija je definirana u obliku:
y=f(x)
tj. varijabli "y" priredimo funkcijsku vrijednost "f" od argumenta x". Argument "x" može, također, biti numerički ili
Boole-ov izraz.

2.7.1.1 ABS(X) funkcija
Funkcijom ABS(X) dobivamo apsolutnu vrijednost argumenta X u smislu:
ABS(X)=X ako je X>=0
ABS(X)=-X ako je x<0

2.7.1.2 INT(X) funkcija
Funkcijom INT(X) dobivamo prvu manju cjelobrojnu vrijednost decimalnog argumenta X.
npr.
INT(9.7)=9
INT(-5.1)=-6

2.7.1.3 RND(X) funkcija
Funkcija RND(X) generira slučajni broj između 0 i 1 na šest decimalnih mjesta. Ukoliko je potrebno generirati
slučajni broj u nekom drugom intervalu, tada koristimo jednadžbu:
(B-A)*RND(7)+A
gdje je "B" gornja granica željenog intervala, a "A" donja granica intervala.
Upozorenje: RND(0) generira uvijek isti broj.
Primjer 1: Generiranje slučajnog broja između 0 i 100
10 Y=100"RND(7)
20 PRINTY
30 GOTO10

2.7.1.4 SGN(X) funkcija
Funkcija Y=SGN(X) priredi varijabli Y predznak argumenta X u smislu:
Y=0 za X=0
Y=1 za X>0
Y=-1 za X<0
Primjer 4:
10
20
30
40

A=0.125
B=0
C=-12.74
PRINTSGN(A),SGN(B),SGM(C)

RUN
1

0

-1

2.7.1.5 SQR(X) funkcija
Funkcija Y=SQR(X) priredi varijabli Y kvadratni korijen argumenta X.
npr.
45

PRINT SQR(2)
1.41421

[CR] daje

2.7.1.6 EXP(X) funkcija
Funkcija Y=EXP(X) priredi varijabli Y potenciju broja "e" (e=2.71828). Vrijednost argumenta definira potenciju
broja "e".
Primjer 1: operacija
Y=2.71828*X je ekvivalentna operaciji
Y=EXP(X)

2.7.1.7 LOG(X) funkcija
Funkcija Y=LOG(X) priredi varijabli Y prirodni logaritam argumenta X (po bazi "e").
Za dobivanje logaritma po bazi "b" od nekog broja koristimo jednadžbu:
log x=logx/log b
Primjer 1: Odredite dekadski logaritam od broja 2
10 B=10
20 Y=(LOG(2))/(LOG(10))
30 PRINTY

2.7.1.8 SIN(X) funkcija
Funkcija Y=SIN(X) priredi varijabli Y sinus od argumenta X izraženog u radijanima.

2.7.1.9 COS(X) funkcija
Funkcija Y=COS(X) priredi varijabli Y kosinus od argumenta X izraženog u radijanima.

2.7.1.10 TAN(X) funkcija
Funkcija Y=TAN(X) priredi varijabli Y tangens od argumenta X izraženog u radijanima.

2.7.1.11 ATN(X) funkcija
Funkcija Y=ATN(X) priredi varijabli Y vrijednost arkus tangens.
Na kraju navedimo da BASIC mikroračunala ORAO ne posjeduje funkcije kao:
y=arcsinx i y=arccosx
pa stoga moramo koristiti slijedeće jednadžbe:

 x

2
 1− x


 ; za |x| <1



 1 − x2
 x



 ; za 0

2.7.2.3 TAB(X) funkcija
Funkcija TAB(X) postavlja kursor na X-u kolonu brojeći od početka reda. U slučaju da je trenutačna pozicija
veća od specificirane, tj. X-te, ispis se nastavlja u prvoj slijedećoj koloni.
Primjer 1:
10 PRINTTAB(10);"MIKRORAČUNALO";TAB(15);"ORAO"
ispis počinje od 10-te kolone s MIKRORAČUNALO,a od 15-te s ORAO
Primjer 2:
10 PRINTTAB(10);"MIKRORAČUNALO";TAB(5);"ORAO"
ispis počinje od 10-te kolone s MIKRORAČUNALO i tada se kursor nalazi u 23-oj koloni što je veće od
vrijednosti specificirane u slijedećoj TAB funkciji, tako da će se ispis nastaviti od 23-e kolone s ORAO.
Na kraju napomenimo,da se funkcije POS(X),SPC(X) i TAB(X) koriste isključivo s PRINT naredbom.

2.7.3 Korisnički definirane funkcije
BASIC mikroračunala ORAO omogućava korisniku da sam definira svoju funkciju naredbom
DEF FNy(X)
gdje y može biti znak YU (ASCII) koda, dok X predstavlja argument definirane funkcije.
Primjer 1: Definirajmo funkciju y=exp(x) kao sumu prvih 7 članova Taylor-ovog reda funkcije y=ex. Taylor-ov red
funkcije y=ex je definiran kao:
∞

y = ex = ∑
n =0

xn
x x 2 x3
xn
=1+ +
+
+ ..... +
+ .....
n!
n!
1! 2! 3!
47

Suma privih 7 članova je tada

y = 1+ x +

x 2 x3 x 4 x5
x6
+ +
+
+
2 6 24 120 720

odnosno kodirano u BASIC-u
10
20
30
40

DEFFNE(X)=1+X+(1/2)*Xˆ2+(1/6)*Xˆ3+(1/24)*Xˆ4+(1/120)*Xˆ5+(1/720)*Xˆ6
FOR X=-5 TO 5
PRINT X;FNE(X)
NEXT X

Primjer 2: Definirajte funkciju koja računa površinu kruga
10
20
30
40

PI=3.141593
DEF FNP(R)=R*2*PI
INPUT R
PRINT FNP(R)

RUN
? 2
12.5664

2.8 RAD S MEMORIJOM
Dosadašnjim primjerima pokazali smo kako se simboličkim varijablama u BASIC-u priredi numerička vrijednost.
Sve numeričke varijable su izražene aritmetikom kliznog zareza ("flooating point"), u opsegu od 10E-38 do
10E38 i svaka varijabla tada okupira 4 byte-a memorije.
Slijedećim primjerima ćemo pokazati kako je moguće da nam memorijska lokacija bude varijabla.

2.8.1 Upisivanje podatka u memorijsku lokaciju
Mikroprocesor 6502, koji predstavlja centralni hardware-ski element mikroračunala ORAO, podržava samo 8bitnu aritmetiku, dok aritmetiku kliznog zareza generira BASIC interpreter.
Svaka memorijska lokacija je veličine 8 bita. U jednoj memorijskoj lokaciji je, dakle, moguće pohraniti 8 bitnu
informaciju, tj. broj između:
0 i 255 ; (2^8-1)
Kada želimo da nam neka memorijska lokacija predstavlja 8 bitnu varijablu koristimo naredbu:
POKE I,J

tj. na lokaciju s decimalnom adresom I upišemo dekadski sadržaj J.
0<= I <=65535
0<= J <=255
Primjer 1: Na memorijsku lokaciju 0300 heksadecimalno upišite F0 heksadecimalno
-

0300 hexa =768 decimalno
F0 hexa =240 decimalno

10 1=768:J=240
20 POKE I,J
RUN
>

Da se uvjerimo u ispravnost našeg programa pritisnimo tipku RESET Na ekranu sada imamo ispis:
*** O R A O ***
*
_

Unesimo sada
M0300 [CR]
0300 F0 [@]
48

*
_

Vidimo da je naš program dobro izveden. Vratimo se ponovo u BASIC.
*BW [CR]
>

UPOZORENJE !!!
Naredbom POKE moguće je uništiti korisnički BASIC program, ukoliko upisujete na memorijske lokacije između
0400 i 1FFF heksadecimalno, odnosno 1024 i 8191 decimalno, ako prethodno ne ograničite opseg memorije, o
čemu ce biti govora u odjeljku 2.8.4 (Primjer 2.).

2.8.2 Ispisivanje sadržaja memorijske lokacije
Naredbom POKE upisujemo na memorijsku lokaciju tako, da nam memorijska lokacija može predstavljati 8
bitnu varijablu.
Ako želimo ispisati sadržaj te varijable odnosno memorijske lokacije, služimo se naredbom:
PEEK(X)

gdje je X decimalna adresa željene memorijske lokacije između 0 i 65535.
Primjer 1: Ispišite sadržaj memorijske lokacije 0300 heksadecimalno:
10 PRINT PEEK(768)
RUN
240
>

jer je to bila posljednja vrijednost koju smo upisali na tu memorijsku lokaciju.
Primjer 2: Prikaz sadržaja memorije na ekranu LIST
1 REM:=========================
2 REM:
3 REM: PRIKAZ SADRŽAJA MEMORIJE
4 REM: NA EKRANU HEXADECIMALNO
5 REM:
6 REM:=========================
7 :
10 INPUT"POČETNA ADRESA (dec.) =";S
20 INPUT"KONAČNA ADRESA (dec.) =";E
30 DEFFNM(X)=PEEK(X)
40 FORX=STOE
50 Q=X;GOSUB900
55 X$=Q$
60 Y=FNM(X):Q=Y:GOSUB900
70 Y$=RIGHT$(Q$,2)
80 PRINTX$;SPC(2);Y$
90 NEXT X
100 END
900 REM: DECIMALNO/HEXABECIMALNO
1000 B=INT(Q/256):GOSUB1400
1100 H1$=H$
1200 B=Q-B*256:GOSUB1400
1300 H2$=H$:Q$=H1$+H2$:RETURN
1400 V=BAND15:H=(BAND240)/16
1500 IFH>9THENH=H+55:GOTO1700
1600 H=H+48
1700 IFV>9THENV=V+55:GOTO1900
1800 V=V+48
1900 H$=CHR$(H)+CHR$(V):RETURN
>

49

RUN
POČETNA ADRESA (dec.) =? 56593
KONAČNA ADRESA (dec,) =? 56608
DD11 A2
DD12 FF
DD13 86
DD14 88
DD15 9A
DD16 A9
DD17 11
DD18 A0
DD19 BB
DD1A 85
DD1B 01
DD1C 84
DD1D 02
DD1E 85
DD1F 04
DD20 84

2.8.3 Ekran
Mikroračunalo ORAO podržava prikaz 32 alfanumerička znaka u 32 linije na ekranu TV prijemnika ili TV
monitora, i grafiku rezolucije 256 x 256 točaka (o grafici će biti govora u poglavlju 2.11.). Slika prikazuje raster
ekrana u alfanumeričkom modu i grafičkom modu. Korisniku je, također, dozvoljeno da sam definira veličinu
aktivnog dijela prikaza. Ujedno je moguće programski redefinirati osnovni set znakova ("programmable
character generator") mikroračunala ORAO.
0

31

0
s KOLONAt
u
R
E
D
v

31

50

0,255

255,255

u
Y
v

0,0

sXt

255,0

2.8.3.1 Ograničavanje i pozicioniranje aktivnog djela prikaza
Definiramo:
POKE 236,L

početnu kolonu postavimo
na L-tu poziciju
0<=L<=31
na RESET L=0

POKE 237,D

posljednju kolonu postavimo na D-tu poziciju
0<=D<=31
na RESET D=31

Podrazumijeva se da L uvijek mora biti manji od D.
POKE 234, G

prvi redak postavimo na G-tu poziciju
0<=G<=31
na RESET G=0

POKE 235,P

posljednji redak postavimo
0<=P<=31
na RESET P=31

Podrazumijeva se da G uvijek mora biti manji od P.
Primjer 1: Ograničavanje aktivnog dijela prikaza
Želimo aktivni dio prikaza ograničiti na 32 kolone i 4 retka
L=0
D=31
G=0
P=3
10 PRINT CHR$(12)
20 L=0:D=31:G=0:P=3
30 POKE 236,L:POKE237,D
POKE234,G:POKE235,P

51

RUN
>

Unesemo li sada direktno u liniji :
LIST

[CR]

vidimo da je sada moguće listanje samo u ograničenom dijelu prikaza.

2.8.3.2 Definiranje korisničkog seta znakova
Mikroračunalo ORAO,osim standardnog seta YU (ASCII) znakova,nudi korisniku mogućnost da definira svoj
vlastiti set znakova. Takva mogućnost postaje zanimljiva, kada, npr., korisnik želi, umjesto velikih slova latinice,
velika slova ćirilice, ili, npr., umjesto malih slova, set grafičkih simbola itd.
Postupak se svodi na definiranje novog karakter generatora i inicijalizaciju vektora adrese novog seta znakova,
a pri tome važe slijedeća pravila:
1. Novi karakter generator mora biti isključivo lociran na početku memorijske stranice isključivši nultu, prvu
i drugu stranicu
2. Svaki znak okupira blok od 8 byte-a memorije
3. Ukoliko se novi karakter nalazi u memoriji koja je predviđena za tekstualni prostor BASIC-a, memoriju je
potrebno ograničiti (vidi Primjer 2: poglavlja 2.8.4)
4. Vektori adrese su slijedeći:
ZNAKOVI = 513 decimalno
VELIKA SLOVA = 514 decimalno
MALA SLOVA = 515 decimalno
5. Na vektor adrese upišemo stranicu memorije na kojoj se nalazi novi karakter generator
Primjer 1: Izmjena seta znakova malih slova
Želimo da nam se pritiskom na mala slova (uključimo s [PF1] ) pojavljuju grafički simboli novog seta.
Svaki blok okupira blok od 8 byte-a u smislu
$08
$1C
$7F
$7F
$7F
$6B
$49
$41
$41
$5D
$7F
$6B
$3E
$14
$1C
$08

s početak stranice npr. 0300
0=crna točka

1=bijela točka
s drugi znak

20

21

22

23

24

25

26

27

52

Opažamo da su težine bitova u karakter generatoru inverzne težinama binarnog koda, tj. pozicija bita 2^7 ima
težinu 2^0,2^6 t 2^1 itd.
Nakon izmjene svih znakova pritiskom na tipku [PF1] uključimo mala slova. Sada će se pritiskom na tipku
redom:
[^] pojaviti prvi simbol
[A] pojaviti drugi simbol itd.
U priloženom programu izmijenjena su samo prva dva znaka malih slova tj. [^] i [A], a ostale tipke daju neki
slučajni oblik.
LIST
1 REM:
2 REM: IZMJENA SETA ZNAKOVA MALIH SLOVA
3 REM:
5 REM:
10 REM: NOVI SET ZNAKOVA SE NALAZI
11 REM: NA TREĆOJ STRANICI MEMORIJE
12 MP=3:REM STRANICA MEMORIJE
20 VA=515:REM VEKTOR ADRESE MALIH SLOVA
30 POKEVA,MP
40 REM: DEFINICIJA PRVIH DVAJU SIMBOLA
50 FORX=768TO783
60 READ Y:POKE X,Y
70 NEXT X
72 REM: OSTALE ZNAKOVE DEFINIRAMO BIJELO
75 FORX=784TO1023:POKEX,255:NEXT
80 END
90 DATA 8,28,127,127,127,107,73,65
100 DATA 65,93,127,107,62,20,28,8
>

2.8.4 Pozivanje strojnih programa iz BASIC-a
BASIC mikroračunala ORAO nudi nam mogućnost, da osim osnovnih naredbi, pozivamo pod kontrolom BASIC
programa strojne programe koje smo sami napisali ili već postoje u ROM-u.
To postižemo funkcijom : U=USR(U)
Nakon što BASIC interpretira ovu funkciju, počinje izvođenje programa čija je startna adresa upisana na
lokacijama:
11 (decimalno) - niži dio adrese decimalno
12 (decimalno) - viši dio adrese decimalno
Svi strojni programi koje pozivamo iz BASIC-a funkcijom USR moraju završavati naredbom RTS, kako bismo
nakon izvođnja, kontrolu ponovo vratili BASIC interpreteru.
Primjer 1: Crtanje kružnice strojnim programom
U MONITOR ROM-u mikroračunala ORAO se nalazi strojni program za crtanje kružnice. Startna adresa tog
programa je FF06 (heksadecimalno). Za korektno izvođenje navedeni program zahtijeva, tri parametra :
koordinata središta XS,YS
polumjer R
Prije pozivanja programa moramo na memorijske lokacije, kojima su definirani navedeni parametri, upisati
željene numeričke vrijednosti.
ADRESE tih lokacija su :
XS = 226 decimalno
YS = 227 decimalno
R = 248 decimalno
Dalje postupamo na slijedeći način:
1. 1.Inicijaliziramo vektor startne adrese -startna adresa heksadecimalno je
FF
viši dio u

06
u niži dio
viši dio decimalno = 255
niži dio decimalno = 6

-na lokaciju 11 dec. upišemo niži dio adrese 6 t 11
53

-na lokaciju 12 dec. upišemo visi dio adrese 255 t 12
3. Na lokacije XS,YS, i R upišemo željene parametre
4. Funkcijom USR pozovemo željeni program Navedeni postupak kodiran u BASIC-u je:
LIST
10 REM;
20 REM: POZIVANJE STROJNIH PROGRAMA
25 REM: USR funkcijom
30 REM:
50 REM: 1. INICIJALIZACIJA LEKTORA STARTNE ADRESE
60 POKE11,6:POKE12,255
70 REM: 2. INICIJALIZACIJA PARAMETARA
80 INPUT"KOORDINATE SREDIŠTA";XS,YS
90 INPUT"POLUMJER";R
100 POKE224,XS:POKE227,YS:POKE248,R
110 REM: 3. POZIVANJE STROJNOG PROGRAMA
120 U=USR(U)
130 END
>
RUN
KOORDINATE SREDIŠTA? 127,127
POLUMJER? 100
>

Primjer 2: Generiranje zvuka
Program za generiranje zvuka sastoji se od
1. 10-20 upisivanje strojnog programa u memoriju od lokacije 1000-1011 heksadecimalno odnosno 40964113 decimalno
2. 30 inicijalizacija vektora početne adrese
54

početna adresa strojnog programa je 1000 heksadecimalno
niži dio adrese je 00 = 0 decimalno
viši dio adrese je 10 = 16 decimalno
3. 40-50 unos parametara tona i upis na lokacije E0 i E1 heksadecimalno
00E0 = 224 decimalno 00E1 = 225 decimalno
4. 52 pozivanje strojnog programa funkcijom USR
5. 55-80 18 byte-a strojnog programa (strojni kod je izražen decimalno)
UKOLIKO STE NAKON UKLJUČIVANJA RAČUNALA, BASIC POZVALI KAO ŠTO JE OPISANO U
POGLAVLJU 1.1, TJ. BEZ PRETHODNOG OGRANIČAVANJA MEMORIJE, TADA PRIJE UNOSA
PROGRAMA ZA GENERIRANJE ZVUKA PRITISNITE TIPKU "RESET" I IZVEDITE SLIJEDEĆU
SEKVENCIJU:
*BC [CR]
MEMORIJA ? 4095 [CR]
DULJINA LINIJE ? [CR]
3070 LOKACIJA
>
_

Sada smo ponovo u BASIC-u, ali na raspolaganju imamo za BASIC programe samo 3070 lokacija umjesto 7167
kad memorija nije ograničena. Mehanizam ograničavanja memorije funkcionira na slijedeći način:
Na pitanje MEMORIJA ? mi unosimo maksimalnu adresu (decimalno) koja određuje vrh korisničke memorije
("TOP OF MEMORY"), koju BASIC interpreter smije uzeti za memoriranje našeg izvornog programa. U našem
primjeru to je 4095 decimalno, odnosno 0FFF heksadecimalno, te smo na taj način dio memorije mikroračunala
ORAO od 1000 heksadecimalno do 1FFF rezervirali za strojne programe ili u nekom drugom slučaju za podatke
iz npr A/D pretvarača.
Minimalni iznos koji smijemo unijeti na pitanje MEMORIJA ? je 1026, ali u tom slučaju imamo na raspolaganju
samo 1 byte memorije, što nije dovoljno niti za najmanji BASIC program.
Trenutno raspoloživi iznos memorije možemo ispitati funkcijom
PRINT FRE(X) [CR]
PRINT FRE(X$)[CR]

ili

LIST
1 REM:======================
2 REM:
3 REM: GENERIRANJE ZVUKA
4 REM:
5 REM:======================
6 :
7 REM: UPISIVANJE STROJNOG PROGRAMA U MEMORIJU
8 :
10 FORX=4096TO4113
15 READY:POKEX,Y
20 NEXTX
25 REM: INICIJALIZACIJA VEKTORA POČETNE ADRESE $1000
30 POKE11,0:POKE12,16
45 INPUT"VISINA TONA (MAX. 255)";F %
48 T=255/F
49 REM: UPISIVANJE PARAMETARA TONA U MEMORIJU $E0 I $E1
50 POKE224,F:POKE225,T
52 U=USR(U):REM POZIVANJE STROJNOG PROGRAMA
54 END
55 REM: STROJNI PROGRAM ZA ZVUK
60 DATA 162,255,164,224,140,0
70 DATA 136,136,208,253,202,208
80 DATA 245,198,225, 16,239,96
>
*
*
*B*
*B* GENERIRANJE ZVUKA
*B*
*X10001011
1000 A2 FF LDX *FF

55

1002
1004
1007
1008
100A
100B
100D
100F
1011

A4
8C
88
D0
CA
D0
C6
10
60

E0 LDY E0
00 88 STY 8800
DEY
FD BNE 1007
DEX
F5 BNE 1002
E1 DEC E1
EF BPL 1000
RTS

*
*RUN
VISINA TONA (MAX. 255)? 255
>
RUN
VISINA TONA (MAX. 255)? 47

2.9 SISTEMSKE KOMANDE
Komande su naredbe koje BASIC interpreter izvršava, nakon što su unesene preko tastature u računalo,bez
numeriranja programske linije -izravno.
Sistemske komande se koriste za izravan ulaz ili izlaz podataka sa, ili u periferne jedinice.
Pojedine sistemske komande,također, direktno mijenjaju sadržaj tekstualnog prostora BASIC-a.

2.9.1 LOAD I LOADC komande
LOAD komanda briše memoriju tekstualnog prostora i automatski učitava novi korisnički program s audio
kazete. Kompletna sintaksa LOAD komande je :
LOAD"ime programa"početna adresa

1. Ime programa smije sadržavati maksimalno 12 znakova YU (ASCII) koda osim znakova navodnika
2. Početna adresa mora obavezno biti izražena heksadecimalno
3. Za pozivanje BASIC programa s audio kazete početna adresa je uvijek 0400 i nije obavezna u sintaksi
komande LOAD
Primjer 1: Pozivanje BASIC programa s kazete
Pozovimo s demo kazete program pod imenom
LOAD"SORT.BAS"
REPRODUKCIJA ?

uključimo reprodukciju na kazetofonu i [CR]

Sada računalo traži na kazeti program pod imenom SORT.BAS. Ukoliko se program SORT.BAS ne nalazi na
početku kazete računalo će ispisati imena svih programa koji se nalaze ispred traženog. Do pojave prompta ">"
i kursora računalo čita program sa kazete i memorira ga u tekstualni prostor.
Nakon :
>
_

Računalo je učitalo program koji je sada spreman za izvođenje.
Za pozivanje strojnih programa moramo koristiti potpunu sintaksu naredbe LOAD, tj. moramo navesti početnu
lokaciju od koje će program nakon učitavanja biti smješten.
Primjer 2: Pozivanje strojnih programa s kazete
Pozovimo s demo kazete program ZVUK.BIN
LOAD"ZVUK.BIN"1000 [CR]
REPRODUKCIJA ? uključimo

reprodukciju [CR]

>
_

56

Sada je program ZVUK.BIN učitan u memoriji od lokacije 1000.
Budući da je program za zvuk pozicijski neovisan, možemo ga pozvati u memoriju i od lokacije 1500
LOAD"ZVUK.BIN"1500 [CR]
REPRODUKCIJA ? [CR]
>
_

Sada je naš program smješten u memoriji od lokacije 1500.
LOADC komanda služi za ispis kataloga imena programa koji su na kazeti.
LOADC [CR]
REPRODUKCIJA ?

[CR]

Nakon toga na ekranu će nam se sekvencijalno pojavljivati imena svih programa koje je računalo našlo na
kazeti.
LOADC
REPRODUKCIJA ?
TORANJ.BAS 0400 063C 023C
HISTOGRAM.BAS 0400 067D 029B
SORT.BAS 0400 05BC 01BC
DATUM.BAS 0400 072C 032C
HEXADECBAS 0400 0500 0100
DECHEXA,BAS 0400 052E 012E
QUICKSORT,BAS 0400 06C7 02C7
BUTWORTH.BAS 0400 071A 031A
ZVUK.BIN 1000 1011 0011
VURA.BAS 0400 0B13 0913
FILTRIRANJE 0400 0615 0215

Vidimo da je ispis podijeljen u četiri polja:
1.polje
2.polje
3.polje
4.polje

:
:
:
:

IME
početna adresa
konačna adresa
veličina programa (heksadecimalno)

Katalogiranje kazete prekidamo pritiskom na tipku [CTL]

2.9.2 SAVE komanda
SAVE komandu koristimo za pohranjivanje programa koje smo napisali u BASIC-u ili MINIASSEMBLER-u.
Potpuna sintaksa naredbe SAVE je
SAVE"ime programa"početna adresa,konačna adresa

1. Ime programa smije sadržavati 12 znakova YU (ASCII) koda (isključeni znakovi navodnika i kontrolni
kodovi)
2. Početna i konačna adresa moraju obavezno biti izražene heksadecimalno
3. Za pohranjivanje BASIC programa početnu i konačnu adresu ne treba navesti, jer računalo automatski
uzima 0400 za početnu adresu, a konačnu izračuna iz dužine programa
Primjer 1: Pohranjivanje BASIC programa na kazetu
SAVE"TEST"
SNIMANJE ?

[CR]
uključimo snimanje i [CR]

Nakon toga iz zvučnika će se čuti zvuk programa koje računalo kodira u audio signal i šalje prema kazetofonu.
Nakon:
>
_

program je snimljen na kazetu.
57

Primjer 2: Pohranjivanje sadržaja ekrana na kazetu
SAVE"EKRAN"6000,7FFF [CR]
SNIMANJE ? uključimo snimanje

i [CR]

do ponovne pojave prompta i kursora računalo šalje u kazetofon sadržaj memorijskih lokacija od 6000 do 7FFF
koje služe za video prikaz ("VIDEO RAM")
Srednja brzina prijenosa podataka između računala i kazetofona je 1500 baud-a (1500 bita u sekundi ).

2.9.3 LIST komanda
LIST komanda može biti korištena na četiri načina:
1. LIST bez dodatnih specifikacija
2. LIST sa jednom specifikacijom
3. LIST sa dvije specifikacije
4. LIST sa tri specifikacije
Komanda LIST nam služi za ispisivanje izvornog programa (listanje) na ekranu ili štampač.
1. LIST lista cijeli izvorni program
2. LIST n lista samo n-tu programsku liniju
3. LIST-n lista program do n-te linije
LISTn- lista program od n-te linije do kraja
4. LISTn-m lista od n-te do m-te linije uz uvjet da je m>n
Pritiskom na tipke [CTL]i[C] istovremeno, prekidamo listanje programa.

2.10 KONTROLNE KOMANDE/NAREDBE
Kontrolne komande nam služe za kontrolu izvođenja BASIC programa.

2.10.1 RUN komanda
Komanda RUN starta izvođenje BASIC programa počevši s linijom koja ima najmanji redni broj, te ujedno pred
izvođenjem programa sve varijable postavi na nulu. Komandu RUN možemo, također, koristiti sa dodatnom
specifikacijom,tj.:
RUN n

počinje izvoditi program od n-te linije i postavi sve varijable na nulu

Izvođenje BASIC programa prekinemo pritiskom na tipke [CTL] i [C]

2.10.2 STOP naredba
STOP naredba zaustavlja izvođenje programa i ispisuje poruku s rednim brojem linije u kojoj je interpretirana.
Primjer 1:
10 PRINT"MIKRORACUNALO"
20 STOP
30 PRINT"ORAO"
RUN
MIKRORAČUNALO
STOP U 20
>
_

2.10.3 CONT komanda
Kada računalo interpretira komandu CONT,nastavlja s izvođenjem programa od mjesta gdje je bio prekinut
naredbom STOP ili pritiskom na tipke [CTL] [C].
58

2.10.4 END naredba
Naredba END definira kraj programa, ali nije obavezna.

2.10.5 NEW komanda
Komandom NEW brišemo izvorni BASIC program iz memorije 3 postavljamo kazaljku tekstualnog prostora na
početak.

2.11 GRAFIKA
Mikroračunalo ORAO podržava grafiku visoke rezolucije 256 x 256 u pet grafičkih načina. Ekran u svih pet
grafičkih načina predstavlja prvi kvadrant kartezijevog koordinatnog sustava.
Grafički način definiramo tako, da na lokaciju GS=522 (decimalno) upišemo grafički kod M.
M=0 crta bijelo
0
Opažate da se ništa atraktivno nije dogodilo, jer grafički kursor nije vidljiv, iako smo ga prethodnom komandom
postavili u ishodište koordinatnog sustava.

2.11.2 DRAW naredba
Naredbom DRAW X,Y izvučemo liniju X,Y.
unesite direktno u liniji:
DRAM 255,255

[CR]

čime ste izvukli dijagonalu preko ekrana. Grafički kursor se sada nalazi na poziciji 255,255. Da se u to uvjerite
unesite ponovo direktno u liniji:
DRAW 127,0

[CR;]

čime ste izvukli liniju do točke 127,0 relativno od posljednje pozicije grafičkog kursora.
Primjer 1: Crtanje kvadrata
59

10
20
30
40
50

A=0:B=127:C=255
MOVA,B
DRAWB,C
DRAWC,B
DRAWB,A

2.11.3 PLOT naredba
Unesite direktno u liniji
Naredba PLOT X,Y postavlja grafički kursor na poziciju X,Y i na toj poziciji nacrta točku.
[CTLXL]PLOT 127,127 [CR]

Čime ćete nacrtati jednu grafičku točku na sredini ekrana.
Primjer 1: Crtanje eksponencijalne funkcije naredbom PLOT
10
20
30
40

FORX=0TO255
Y=100*(1-EXP(-X/10))
PLOT X,Y
NEXT X

Primjer 2: Crtanje eksponencijalne funkcije naredbama MOV i DRAW
10
20
30
40
50

MOV0,0
FOR X=0 TO 255
Y=100*(1-EXP(-X/10))
DRAW X,Y
NEXT X

Opažamo da nam naredba DRAW vrši linearnu interpolaciju izmedju dvije točke.

2.11.4 Animirana grafika
Pojam animirane grafike se odnosi na crtanje objekata koji se pokreću na grafičkom zaslonu. Da bi objektu na
ekranu dali pokret, postupamo na slijedeći način:
KORAK1: Nacrtamo željeni objekt u prvoj fazi pokreta i prikazujemo ga T1 vremena
KORAK2: Brišemo nacrtani objekt potpuno ili djelomično
KORAK3: Crtamo objekt u drugoj fazi pokreta na istoj ili promijenjenoj poziciji i prikazujemo ga T2
vremena
KORAK4: Da li su sve faze pokreta prikazane:
- ako nisu idi na KORAK2
- ako jesu idi na KORAK5:
KORAK5: Kraj animacije
Brisanje objekta na ekranu mikroračunala ORAO omogućava nam promjena grafičkog načina.
Primjer 1: Gibanje radij vektora po kružnom luku
LIST
1 REM:
2 REM: ANIMACIJA RADIJ VEKTORA
3 REM:
4 PRINTCHR*(12)
10 K=2*3.141593/256
20 GS=522:MO=6:M1=1
30 FORT=0T063STEP5
40 Y=100*SIN(K*T)
50 X=127*C0S(K*T)
60 POKEGS,M0
80 GOSUB100
90 POKEGS,M1:GOSUB200
95 GOSUB100
97 NEXTT
98 POKEGS,M0:GOSUB100
99 END
100 MOV0,0;DRAWX,Y:RETURN
200 FORA=0TO400:NEXTA
210 RETURN
>

60

Analogni sat je slijedeći primjer animirane grafike.
Primjer 2: Analogni sat
Analogni sat je slijedeći primjer animirane grafike.
Primjer 2: Analogni sat
10 REM:==================
15 REM:
18 REM: ANALOGNI SAT
20 REM:
22 REM:==================
25 PRINTCHR$(12)
37 INPUT"TOČNO VRJEME SAT,MIN";A$,B$
38 GOSUB3000:REM* RAČUNANJE POZICIJA KAZALJKI
40 M=522:CR=1:BJ=O
41 REM
42 REM GLAVNO TIJELO
43 REM
45 PRINTCHR$(12)
46 PI=3.14159$K=2*PI/600
47 X0=127*Y0=127
50 GOSUB200:REM* BROJČANIK
51 REM:
52 REM: POČETAK IGRE
53 REM:
54 R=A:REM==POČETNA POZICIJA MALE KAZALJKE
55 F0RT2=600T00STEP-10
56 R1=B+T2
57 POKEM,0
60 GOSUB6500
62 GOSUB800:GOSUB6000
64 GOSUB600
65 GOSUB6800
66 GOSUB800:GOSUB6000
68 GOSUB600:REM=CRTANJE MALE
70 GOSUB400:REM=SEKUNDER
75 POKEM,l:GOSUB6500:GOSUB800:GOSUB6000*GOSUB600
80 W=R1/6O
90 W1=INT(W)
100 DW=W-W1
110 IFDW=.5THENGOSUB1000
190 NEXT
195 GOTO55
199 END
200 REM*
210 REM* CRTANJE BROJCANIKA
220 REM*
222 POKEM,BJ*REM==BIJELO NA CRNOM==
237 C=100
238 POKE11,6:POKE12,255
240 POKE226,X0*POKE227,Y0
250 POKE248,C-1
260 U=USR(U)
280 FORT=0TO599STEP50
290 X=X0+C*COS(K*T):Y=Y0+C*SIN(K*T)
300 MOVX,Y
310 X2=X+10*C0S(T*K):Y2=Y+10*SIN(K*T)
320 DRAWX2,Y2
330 NEXT
350 RETURN
400 REM*
410 REM* SEKUNDER
420 REM*
430 FORT=600TO0STEP-10
435 POKEM,0
440 MOVX0,Y0
445 GOSUB500
450 DRAWXS,YS
460 FORD=0TO330:NEXT
462 POKE11,0:POKE12,3
464 U=USR(U)
470 GOSUB2000:REM*BRISANJE. SEKUNDERA
480 POKEM,0:GOSUB6800:GOSUB800:GOSUB6000:GOSUB600
482 GOSUB6500:GOSUB800:GOSUB6000:GOSUB600
498 NEXT
499 RETURN
500 REM*

61

510 REM* POZICIJA SEKUNDERA
520 REM*
525 T1=T+150
530 XS=X0+90*COS(T1*K)
540 YS=Y0+90*SIN(T1*K)
550 RETURN
600 REM*
610 REM* CRTANJE KAZALJKI
620 REM*
630 MOVX0,Y0:DRAWP1,P2
640 MOVP1,P2:DRAWP3,P4
645 MOVP3,P4:DRAWP5,P6
650 MOVP5,P6:DRAWX0,Y0
660 RETURN
800 REM*
810 REM* POZICIJA KAZALJKI
820 REM*
840 M1=X0+ E*COS((F-G)*K)
845 M2=Y0+ E*SIN((F-G)*K)
850 M3=X0+ H*COS(F*K)
855 M4=Y0+ H*SIN(F*K)
860 M5=X0+ E*COS((F+G)*K)
865 M6=Y0+ E*SIN<(F+G)*K)
870 RETURN
1000 REM*
1100 REM* POMAK MALE
1200 REM*
1300 FOKEM,l:GOSUB6800:GOSUB800:GOSUB6000:GOSUB600
1310 R=R-5:POKEM,0
1320 GOSUB6800:GOSUB800:GOSUB6000:GOSUB600
1400 RETURN
2000 REM*
2100 REM* BRISANJE SEKUNDERA
2200 REM*
2300 POKEM,1
2400 MOVX0,Y0:DRAWXS,YS
2500 RETURN
3000 REM*
3100 REM* RAČUNANJE POČETNIH POZICIJA KAZALJKI
3200 REM*
3300 A=VAL(A$):B=VAL(B$)
3400 B=(60-B)*10+150
3500 A=(12-A)*50+150
3700 I=0
3800 FORX=750TO150STEP-60
3900 IFX
CONT
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

.998487
.998487
.998487
.998487
.998487
.998487
.998488
.998488
.998488
.998488
.998489
.998489
.998489
.998489
.998489
.998489
.99849
.99849
130
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491
.998491

65

Primjer 2: Filtriranje signala
Ulazni
signal
x(nT)

Diskretni
Buttworth
algoritam

Izlazni
signal
y(nT)

U programu se koristi isti algoritam kao i u primjeru 1
LIST
10 REM:======================
15 REM:
20 REM:
FILTRIRANJE
35 REM:
36 REM:======================
37 :
40 REM:FREKVENCIJA REZANJA=1000Hz
67 REM: T=40E-6 sec ("sampling rate")
95 :
96 PRINTCHR$(12)
98 PRINT"OSNOVNA FREKVENCIJA = 97.65 Hz"
99 PRINT"SUPERPONIRANA FREKVENCIJA=3906.25 Hz"
100 W2=0:W1=0
101 K=2*3.14159/256
102 DEFFNS(N)=SIN(K*N)+.5*SIN(40*K*N)
110 FORN=0TO255
120 W0=FNS(N)+1.649*W1-.702*W2
130 Y=1.323E-2*W0+2.646E-2*Wl+W2*1.323E-2
140 PLOTN,160+50*Y
145 PLOTN,100+50*FNS(N)
150 REM:
155 REM: REALIZACIJA KAŠNJENJA
156 REM:
160 W2=W1:W1=W0
170 NEXT N
180 END

66

>

67

Primjer 3: Crtanje prostorne funkcije z=1/(1+x^2+y^2) na crnoj pozadini
LIST
10 REM***********************
20 REM*
*
30 REM*
T 0 R A N J
*
40 REM*
*
50 REM*
z=1/(l+x^2+y^2)
*
60 REM*
*
70 REM***********************
75 :
80 REM*
81 REM* DEFINICIJA GRAFIKE
82 REM*
97 :
98 P0KE522,0
100 REM*
102 REM* GLAVNO TJELO PROGRAMA
104 REM*
105 PRINTCHR$(12)
110 CZ=30
120 FORX=10TO-6STEP-1
130 FORY=10TO-10STEP-.O125
135 GOSUB800
140 MOVY1,X1
150 Y=Y-.25
160 GOSUB800
170 DRAWY1,X1
190 NEXT:NEXT
200 END
800 REM*
810 REM* RAČUNANJE TOČAKA
820 REM*
830 U=1/(1+X*X+Y*Y):V=1+X/CZ
840 XP=(U*150+30)/V
850 X1=XP*1.35
860 YP=(Y+15)/V
870 Y1=YP*8
880 RETURN
>

68

Primjer 4: Crtanje prostorne funkcije z=exp(sinx+cosy) na bijeloj pozadini
LIST
10 REM***********************
12 REM*
20 REM* G R E B E N I
22 REM*
25 REM* Z=EXP(SIN(X)+C0S(Y))
30 REM*
32 REM***********************
33 :
34 REM: INVERZIJA EKRANA
35 PRINTCHR$(12):GOSUB36:GOTO40
36 FORX=768TO791*READC:POKEX,C:NEXTX
37 POKEll,0:POKE12,3:U=USR(U)
38 RETURN
39 REM* GLAVNO TJELO PROGRAMA
40 CZ=60
50 PI=3.141593
60 K=2*PI/16
80 P0KE522,1
100 FORX=-15TO15STEP,5
110 FORY=-10TO10STEP.03125
115 GOSUB800
116 IFX1>255THENX1=255
200 MOVY1,X1
202 Y=Y+,5
204 GOSUB800
205 IFX1>255THENX1=255
207 DRAWY1,X1
220 NEXT:NEXT
222 END
700 REM:
750 REM: RAČUNANJE TOČAKA
760 REM:
800 L=SIN(K*X)
850 M=COS(K*Y)
860 U=EXP(L+M)
870 V=1+X/CZ
880 XP=(U*50+50)/V
890 X1=XP*.5
900 YP=Y+15/V
910 Y1=YP*8
950 RETURN
955 REM:
956 REM: STROJNI PROGRAM ZA INVERZIJU
957 REM:
EKRANA
960 DATA 169,96,162,127,160,0
962 DATA 133,225,132,224,169,255
964 DATA 145,224,200,208,251,230
966 DATA 225,228,225,176,245,96
B*********************
*B*
*B* INVERZIJA EKRANA
*B*
*B*********************
*B
*X03000317
0300 A9 60
LDA
0302 A2 7F
LDX
0304 A0 00
LDY
0306 85 E1
STA
0308 84 EO
STY
030A A9 FF
LDA
030C 91 EO
STA
030E C8
INY
030F DO FB
BNE
0311 E6 E1
INC
0313 E4 E1
CPX
0315 BO F5
BCS
0317 60
RTS

*60
*7F
*00
E1
EO
*FF

Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : Yes
Create Date                     : 2006:09:06 10:14:22+02:00
Modify Date                     : 2006:09:06 10:14:22+02:00
Page Count                      : 86
Creation Date                   : 2006:09:06 08:14:22Z
Mod Date                        : 2006:09:06 08:14:22Z
Producer                        : Acrobat Distiller 5.0 (Windows)
Author                          : o.boisseau
Metadata Date                   : 2006:09:06 08:14:22Z
Creator                         : o.boisseau
Title                           : Microsoft Word - mrorao102.doc
EXIF Metadata provided by EXIF.tools

Navigation menu