CoBra Basic Manual
-
Author
dakrysysins -
Category
Documents
-
view
246 -
download
5
Embed Size (px)
description
Transcript of CoBra Basic Manual
-
INSTITUTUL DE CERCETARE TIIN IFIC I INGINERIE TEHNOLOGIC
PENTRU TEHNICA DE CALCUL I INFORMATICSECTOR TEHNIC DE CALCUL
COBRABASIC
MANUAL DE UTILIZARE
BRAOV
19881
-
2
-
Editat de I.T.C.I. Braov
Bun de tipar: 12.04.1988
Tiparul executat sub comanda nr. 1239ntreprinderea Poligrafic Braov
3
-
4
-
1. INTRODUCERE
Acest manual prezint limbajul BASIC pentru microcalculatorul COBRA.
Numele COBRA, este o pur coinciden cu cel al reptilei indiene NAJA; el a rezultat din asocierea cuvintelor COmputer BRAov.
COBRA este un microcalculator pe 8 bii, din clasa calculatoarelor personal-profesionale, realizat n cadrul Filialei Braov a I.C.S.I.T.-T.C.I. (Institutul de Tehnic de Calcul i Informatic).
Funcie de opiunea utilizatorului, calculatorul se poate configura n maina BASIC-SPECTRUM (100% compatibil din punct de vedere al softului cu calculatorul SINCLAIR ZX SPECTRUM) sau n maina CP/M (detaliile privind organizarea i funcionarea sistemului n acest regim snt date n manualul COBRA CP/M).
Calculatorul este format din urmtoarele blocuri: unitate central cu microprocesor Z80, la frecvena de 3,5 MHz; memorie EPROM de 16 Koctei ce conine interpretorul BASIC; memoria RAM de 64 Koctei; controler video care permite afiarea pe monitor alb-negru, cu 8
nivele de gri sau pe monitor color cu 8 culori i o rezoluie de 194256 de pixeli;
porturi de intrare/ieire ce permit conectarea tastaturii, casetofonului (pentru salvarea i ncrcarea programelor de pe casete magnetice), difuzorului (semnalizri sonore), interfeei seriale RS232 (pentru cuplarea imprimantei etc.), unui joystick Kempston i o serie de linii disponibile pentru alte interfari interfaa pentru uniti de memorie extern cu discuri flexibile de 5 i/sau 8.
5
-
2.1. Tastatura
Prin intermediul tastaturii se pot introduce fie simboluri (litere, cifre etc.), fie comenzi compuse (nume de funcii, cuvinte cheie etc.). Diferitele funcii ale aceleiai taste se obin prin apsarea simultan a unei taste de shiftare (CAPS SHIFT sau SYMBOL SHIFT) mpreun cu tasta respectiv i avnd calculatorul n diferite moduri de lucru.Modul de lucru este specificat de cursor, o liter clipind, care indic semnificaia ce va fi atribuit tastelor, dup cum urmeaz:
K (Keywords = cuvinte cheie).Calculatorul trece automat din modul L n modul K, atunci cnd
trebuie s urmeze introducerea unei comenzi (printr-un cuvnt cheie) sau a unei linii noi de program (printr-un numr). Aceasta se poate ntmpla la nceputul unei linii sau dup comanda THEN sau dup dou puncte (:) (mai puin n interiorul unui string = ir de caractere alfanumerice). n modul K, o tast neshiftat va fi interpretat ca i un cuvnt cheie (comand) sau o cifr.
L (Letters = litere mici).n oricare alt situaie, calculatorul intr n modul L. Neshiftat, o
tast va fi interpretat ca liter (mic) sau cifr (simbolul principal al tastei respective).
C (Capitals = litere mari).Este o variant a modului L, n care literele snt interpretate drept
litere mari.Se poate trece din modul L n modul C i invers tastnd CAPS LOCK
(CAPS SHIFT i 2).n continuare snt prezentate diferitele interpretri ale tastelor,
funcie de modul de lucru i tastele de shiftare:6
-
Modul de lucru
Tasta de shiftare Tasta Interpretare
K fr liter comanda de jos (neagr)
K SYMBOL SHIFT liter comanda de sus (roie)
K fr cifr cifr
K SYMBOL SHIFT cifr simbolul (rou) de pe tast
L fr liter liter mic
L SYMBOL SHIFT liter simbolul (comanda) rou de pe tast de sus
L CAPS SHIFT liter liter mare
L fr cifr cifr
L SYMBOL SHIFT cifr simbolul (rou) de pe tast
E (Extended = extins).Acest mod este utilizat pentru obinerea celorlalte comenzi, din
josul tastelor. Se intr n modul E apsnd tasta EXTENDED MODE i se menine acest mod pn dup prima (oricare) tastare.
n modul E, o tast neshiftat va fi interpretat ca i comanda de deasupra ei, shiftat (cu SYMBOL SHIFT sau CAPS SHIFT) va fi interpretat ca i comanda din josul tastei.
G (Graphics = grafic).Se intr tastnd GRAPHICS (CAPS SHIFT simultan cu cifra 9) i se
menine acest mod pn la repetarea acestei comenzi. n acest mod cifrele (cu excepia lui 9 i 0) vor da simbolurile grafice desenate pe taste iar literele (cu excepia lui V, W, X, Y i Z) vor da simboluri grafice definite de utilizator.
Orice tast meninut apsat mai mult de 23 secunde va fi repetat.
Intrrile de la tastatur apar pe ecranul monitorului TV, n partea de jos, naintea cursorului.
Cursorul poate fi mutat n stnga apsnd tasta (CAPS SHIFT i 5) sau dreapta apsnd tasta (CAPS SHIFT i 8).
Caracterul dinaintea cursorului poate fi ters cu DEL (CAPS SHIFT i 0).
O linie ntreag poate fi tears tastnd EDIT (CAPS SHIFT i 1) urmat de ENTER.
Dup tastarea lui ENTER o linie este fie executat, fie introdus ntr-un program, fie folosit ca date de intrare (ntr-o instruciune INPUT), dac nu conine erori de sintax. Cnd linia conine erori, dup eroare apare un semn de ntrebare (?) clipind.
7
-
Liniile de program deja introduse snt afiate n partea de sus a ecranului. Ultima linie introdus (linia curent) este indicat de simbolul cursor de linie >. Acesta poate fi deplasat n sus cu tasta (CAPS SHIFT i 7) sau n jos cu tasta (CAPS SHIFT i 6), la alte linii. Linia curent poate fi editat, n partea de jos a ecranului, cu EDIT (CAPS SHIFT i 1).
n timpul execuiei unei comenzi sau a unui program mesajele snt afiate n partea de sus a ecranului, unde rmn pn ce este introdus o linie de program sau se tasteaz ENTER dup o linie goal.
n partea de jos a ecranului pot s apar mesaje (litere sau cifre), n situaii normale sau n cazul unor erori. Mesajele conin i numrul liniei pe care se afl ultima instruciune executat i un numr indicnd poziia acelei instruciuni n cadrul liniei respective.
n anumite situaii CAPS SHIFT mpreun cu SPACE acioneaz ca o ntrerupere (BREAK), oprind executarea unui program.
2.2. Ecranul monitorului TV
Ecranul conine 24 de linii, fiecare de cte 32 de caractere.n partea de sus a ecranului (22 de linii) se pot afia liniile unui
program sau diferite mesaje, liniile completndu-se de sus n jos. Cnd toate cele 22 de linii s-au umplut, se face automat o defilare (SCROLL), toate liniile fiind mutate cu o poziie mai sus. Dup defilarea unei pagini, calculatorul ateapt apsarea oricrei taste pentru a continua cu urmtoarea pagin; tastele N, SPACE (BREAK) sau STOP opresc defilarea i se ateapt o comand. Dac se tasteaz N sau SPACE sau STOP programul se ntrerupe i apare mesajul D BREAK-CONT repeats.
Partea de jos a ecranului (2 linii) este utilizat pentru introducerea comenzilor, a liniilor noi de program, pentru introducerea datelor, pentru editarea liniilor de program sau pentru afiarea unor mesaje trimise de calculator.
Fiecare poziie a unui caracter are o serie de atribute care stabilesc culoarea fondului (hrtia=paper) i a caracterelor (cerneala=ink), strlucirea (normal sau mrit) i modul continuu sau intermitent (plpind) de afiare pe ecran.
Culoarea pentru marginea ecranului se stabilete cu instruciunea (declaraie) BORDER n (n=codul asociat culorii, ca i n instruciunile PAPER, INK, prezentate mai jos).
O poziie pentru un caracter este alctuit din 8 8 pixeli. Se poate obine o rezoluie grafic bun, stabilind caracterul fiecrui pixel (ink sau paper), individual.
Atributele fiecrui caracter i/sau pixel se stabilesc prin valorile ce se atribuie parametrilor de tiprire: PAPER, INK, FLASH, BRIGHT,
8
-
INVERSE i OVER. Exist dou seturi de parametri de tiprire: permaneni i temporari.
Cnd PAPER, INK, ... snt utilizai ca i instruciuni BASIC independente, atributele astfel stabilite snt parametrii permaneni, valorile lor rmnnd valabile pn la redefinirea lor.
Valorile iniiale pentru partea superioar a ecranului snt: caractere negre pe fond alb, strlucire normal, fr plpire, video normal, fr supraimprimare.
Valorile iniiale pentru partea de jos a ecranului snt: fondul are aceeai culoare cu borderul (marginea ecranului), caracterele snt negre sau albe, strlucirea normal, fr plpire, video normal, fr supraimprimare.
Cnd PAPER, INK, ... snt folosii ntr-o alt instruciune BASIC, cum ar fi PRINT, INPUT, PLOT, DRAW, atributele stabilite au caracter temporar, fiind valabile doar pe perioada execuiei instruciunii respective (PRINT, INPUT, ...), dup care snt nlocuite cu valorile date de parametrii de tiprire permaneni.
Parametrilor BORDER, PAPER i INK li se pot atribui valori ntre 0 i 9. Valorile ntre 0 i 7 corespund culorilor:
0 negru;1 albastru;2 rou;3 magenta (violet);4 verde;5 cyan (turcoaz);6 galben;7 alb.
Valoarea 8 (transparent) va lsa culoarea ecranului neschimbat (se afieaz un caracter cu aceeai culoare cu cea a fondului).
Valoarea 9 (contrast) produce tiprirea cu negru sau alb, pentru obinerea unui contrast ct mai mare n raport cu celelalte culori.
Parametrilor FLASH i BRIGHT li se pot atribui valorile 0, 1 sau 8.0 produce afiarea normal, 1 produce plpirea, respectiv strlucirea mrit a caracterului, 8 (transparent) nu produce nici o schimbare.
Parametrilor OVER i INVERSE li se pot atribui valorile 0 sau 1:OVER 0 vechile caractere afiate snt terse i n locul lor snt
afiate noile caractere.OVER 1 tiprirea noilor caractere se face peste cele vechi,
acestea fiind pstrate (supraimprimare); se pot afiaastfel caractere compuse, cum ar fi literele cuaccente, trema etc.
9
-
INVERSE 0 (video normal) caracterele snt de culoarea cernelii pe
fond de culoarea hrtiei.INVERSE 1 (video invers) se afieaz caractere de culoarea hrtiei
pe fond de culoarea cerneliiCaracterul de control TAB n produce tiprirea caracterului n
coloana q unde q este restul mpririi lui n la 32 (modulo 32).Caracterul de control virgula produce tiprirea unui numr
suficient de pauze (cel puin una) pentru ca tiprirea s se fac n coloana 0 sau 16.
Caracterul de control ENTER produce tiprirea pe linia urmtoare.
10
-
3. LIMBAJUL BASIC
n acest capitol se prezint particularitile implementrii limbajului BASIC pe microcalculatorul COBRA.
Numerele snt reprezentate extern cu o precizie de 9 sau 10 cifre. Cel mai mare numr acceptat este aprox. 1*E+38 (10 ridicat la puterea 38) i cel mai mic (numr pozitiv) este aprox. 4*E-39 (4*10 la puterea -39).
Numerele snt memorate intern n form binar, virgul mobil, cu un octet pentru exponentul e (1
-
3.1 Funciile BASIC
Argumentul unei funcii nu trebuie pus ntre paranteze, dac este o constant sau o variabil.
Funcia Tipul argumentului: (x) Rezultatul
ABS Numr Valoarea absolut
ACS Numr Arccos n radiani. Eroare A dac x este n afara intervalului [-1,+1].
AND Operandul drept totdeauna un numr
Operaia binar I
Operandul stng este un numr
A AND B = A dac B0A AND B = 0 dac B=0
Operandul stng este un string
A$ AND B = A$ dac B0A$ AND B = A$ dac B=0
ASN Numr Arcsin n radiani. Eroare A dac x nu este n intervalul [-1,+1].
ATN Numr Arctg n radiani
ATTR Dou argumente numerice x i y, nchise n paranteze
Un numr al crui cod binar reprezint atributele caracterului de pe linia x, coloana y, pe ecran. Bitul 7 (cel mai semnificativ) este 1 pentru clipire, 0 pentru continuu. Bitul 6 este 1 pentru strlucire, 0 pentru normal. Biii 5-3 formeaz culoarea hrtiei (paper). Biii 2-0 formeaz culoarea cernelii (ink). Eroare B dac x i y nu snt n intervalele 0
-
Funcia Tipul argumentului: (x) Rezultatul
FN F(x, y, ...) FN urmat de o liter apeleaz o funcie definit-utilizator prin DEF FN. Argumentele funciei trebuie s fie nchise ntre paranteze, chiar n absena argumentelor, parantezele trebuie puse dup numele funciei: FN F().
IN Numr Procesorul citete valoarea din portul x (0
-
Funcia Tipul argumentului: (x) Rezultatul
SGN Numr Semnul lui x: -1 pentru x < 0 0 pentru x = 0 +1 pentru x > 0
SIN Numr (n radiani) Sin x
SQR Numr Radical din x. Eroare A pentru x < 0.
STR$ Numr Caracterul ASCII alfanumeric al lui x.
TAN Numr (n radiani) Tg x (tangenta x).
USR Numr Apelarea unei subrutine n cod main a crei adres de nceput este x. La revenire, rezultatul este coninutul registrului pereche bc.
USR String Adresa irului de bii ai caracterului grafic definit de utilizator, corespunztor stringului x. Eroare A dac x nu este o liter unic ntre a i u sau un caracter grafic definit de utilizator.
VAL String Evaluarea numeric a lui x (mai puin ghilimelele care-l cuprind).Eroare C dac x conine erori de sintax.
VAL$ String Evaluarea lui x (mai puin ghilimelele) ca expresie alfanumeric (string).Eroare C dac x conine erori de sintax.
Numr nmulire cu -1 (schimbarea semnului).
3.1 Operaii binare
+ Adunare (numere sau stringuri) Scdere nmulire / mprire^ Ridicare la putere. Eroare B dac operandul stng este negativ.= Egalitate | Ambii operanzi trebuie s fie de> Mai mare ca | acelai tip.< Mai mic ca | Rezultatul este:= Mai mare cel puin egal | 1 dac condiia este adevrat Inegalitate | 0 n caz contrar14
-
3.3 Prioritile funciilor i operaiilor
Operaia Prioritatea
Indexarea termenilor unui ir i extragerea unui subir dintr-un ir (slicing) . . 12Toate funciile cu excepia lui NOT i a schimbrii semnului . . . . . . . 11^ . . . . . . . . . . . . . . . . . . . . . 10Schimbarea semnului . . . . . . . . . . . . . . . . . 9, / . . . . . . . . . . . . . . . . . . . . . 8+, . . . . . . . . . . . . . . . . . . . . 6=, >,
-
BORDER m
Stabilete culoarea marginii ecranului (border) i a cernelii n partea de jos a ecranului. Eroare K dac m nu este n intervalul [0, 7].
BRIGHT n
Stabilete culoarea caracterelor ce vor fi afiate:n = 0 strlucire normal;n = 1 strlucire mrit;n = 8 transparen.
Eroare K dac n diferit de 0, 1, 8.
CAT
Vezi MON.
CIRCLE x, y, z
Deseneaz pe ecran un arc de cerc cu centrul n punctul (x, y) i de raz z.
Exemplu: Dac dorim trasarea unui cerc avnd centrul n punctul de coordonate (128, 120) i de raz 50, vom folosi instruciunea:
CIRCLE 128, 120, 50
CLEAR
terge toate variabilele, elibernd memoria pe care o ocupau, se execut RESTORE, CLS, se reseteaz poziia de PLOT (se poziioneaz cursorul grafic n punctul stnga-jos al ecranului) i se golete stiva pentru GO SUB.
Nu modific valoarea variabilei de sistem RAMTOP.
CLEAR n
Similar cu CLEAR, n plus se atribuie valoarea n variabilei de sistem RAMTOP, iar stiva pentru GO SUB ncepe de la noul RAMTOP.
Exemplu: Dac dorim ca noul RAMTOP s fie la adresa 32500, vom scrie instruciunea: CLEAR 32500.
CLOSE $
Neutilizabil.
CLS
(Clear Screen) terge ecranul TV.16
-
CONTINUE
CONT pe tastatur. Reluarea unui program din poziia unde rularea a fost ntrerupt, cu mesaj de ntrerupere diferit de 0. Dac mesajul a fost 9 sau L, reluarea se face cu urmtoarea instruciune (incluzndu-se i instruciunile de salt); n celelalte cazuri reluarea se face inclusiv cu instruciunea unde s-a produs ntreruperea. Dac mesajul de ntrerupere apare ntr-o linie de comand atunci CONTINUE va ncerca reluarea din acea linie de comand i se va intra ntr-o bucl dac eroarea a fost 0:1 sau se va afia mesajul 0 dac eroarea a fost 0:2 sau se va afia mesajul N dac eroarea a fost 0:3 sau mai mare.
COPY
Se obine o copie a ecranului (24 linii), cu 8 nivele de gri, la o imprimant grafic de tip RCD 9335.
Listarea poate fi ntrerupt prin apsarea tastei BREAK.
DATA e1, e2, e3
Poriune dintr-o list DATA (cuplat cu instruciunea READ).Exemplu: dup executarea secvenei de program de mai jos
10 READ A, B, C;15 DATA 10, 15, 35
variabilele A, B, C, vor avea valorile 10, 15, respectiv 35.
DEF FN f(a1,...,aK)=e
Definirea unei funcii-utilizator; trebuie s se gseasc ntr-un program. f, a1, ... aK snt litere sau litere urmate de $ pentru argumente i rezultate sub form de stringuri. n cazul n care nu exist argumente se va utiliza forma DEF FN f()=e.
Exemplu: Fie secvena de program de mai jos:10 LET x=10: LET y=5: LET a=50;15 DEF FN f(x, y)=a+x*y20 DEF FN g()=a+x*y25 LET p=FN f(7, 8): LET r=FN g()
Dup executarea acestei secvene de program vom avea p=50+7*8 i r=50+10*5, adic p=106 i r=100, adic n calculul lui p se iau argumentele cu valori 7 i 0 definite n linia 25, iar n calculul lui r rmn argumentele definite n linia 10.
DELETE f
Neutilizabil.
17
-
DIM a(n1,...,nK)
terge toate vechile matrici cu numele a i deschide o matrice numeric a avnd K dimensiuni n1, ... nK. Iniializeaz toate elementele matricii a atribuindu-le valoarea 0.
Exemplu: Dac vrem s folosim matricea A avnd 3 linii i 4 coloane o vom defini prin instruciunea:
10 DIM A(3,4)
DIM a$(n1,...,nK)
terge orice matrice de stringuri sau string avnd numele a$ i deschide o matrice de caractere cu K dimensiuni n1, ... nK. Iniializeaz toate elementele atribuindu-le valoarea stringului gol . Eroare 4 dac se depete memoria RAM. Matricile nu snt complet definite pn cnd nu snt dimensionate printr-o instruciune de tip DIM.
DRAW x, y, z
Deseneaz pe ecran un arc de cerc pornind din poziia actual a cursorului grafic (ultimul punct desenat pe ecran), i pn n punctul deprtat cu x pixeli pe orizontal i y pixeli pe vertical, arc de cerc avnd mrimea de z radiani.
DRAW x, y
Echivalent cu DRAW x, y, 0. Trasarea unei drepte pornind din poziia actual a cursorului grafic pn n punctul deprtat cu x pixeli pe orizontal i y pixeli pe vertical. Eroare B dac se iese de pe ecran.
Exemplu: Dac poziia cursorului este n punctul (100, 100) i dorim s trasm o dreapt pn n punctul (120, 145) vom folosi instruciunea:
10 DRAW 20,45
ERASE
Neutilizabil.
FLASH n
Stabilete modul staionar sau clipind n care s se afieze un caracter pe ecranul TV.
n = 0 staionar;n = 1 clipind;n = 8 nu se face nici o schimbare.
18
-
FOR a=x TO y STEP z
Intrarea ntr-un ciclu indexat de variabila a creia i se atribuie valori ntre x i y cu pasul z. Sfritul instruciunilor ce formeaz ciclul este indicat printr-o instruciune NEXT a.
FOR a=x TO y
La fel ca mai sus dar cu pasul avnd valoarea implicit 1.
Exemplul 1:Fie secvena de mai jos:
10 FOR n=1 TO 19 STEP 2 50 NEXT n
Se vor executa toate liniile de program avnd numerele de secven ntre 10 i 60 pentru n=1,3,5,7,9,11,13,15,17,19, deci se va parcurge secvena de instruciuni cu numerele de ordine ntre 10 i 50 de 10 ori. La ieirea din corpul ciclului variabila n va avea valoarea 21.
Exemplul 2:Fie secvena de program de mai jos:
10 FOR m=1 TO 9 60 NEXT m
Se vor executa toate liniile de program avnd numerele de secven ntre 10 i 60 pentru m=1,2,3,4,5,6,7,8,9, deci se va parcurge secvena de instruciuni cu numerele de ordine ntre 10 i 60 de 9 ori. La ieirea din corpul ciclului variabila m va avea valoarea 10.
FORMAT f
Neutilizabil.
GOSUB n
Se memoreaz numrul liniei pe care se afl instruciunea GOSUB n n stiv, apoi se execut un salt la linia n. Eroare 4 dac nu snt suficiente instruciuni de revenire RETURN.
GOTO n
Salt la linia n. Dac aceasta nu exist, saltul se face la prima linie ntlnit dup n.
19
-
IF x THEN s
Dac condiia x este adevrat (rezultatul diferit de zero) se execut s (s semnific toate instruciunile pn la sfritul liniei; s nu poate fi un numr de linie).
Exemplu de folosire a instruciunilor GOTO, GO SUB i IF.Fie programul de mai jos:
10 DIM a(5)20 FOR i=1 TO 5: READ a(i): NEXT i;30 DATA 6,3,4,2,8;40 FOR n=1 TO 5;50 GO SUB 200;60 PRINT VALOAREA LA IEIRE ESTE:; w;70 NEXT n;80 STOP;200 IF a(n)>10 THEN GO TO 230;210 LET w=a(n)+10;220 GO TO 240;230 LET w=a(n)+20;240 RETURN.
Se vor citi valorile a(1)=6, a(2)=3, a(3)=4, a(4)=2, a(5)=8, apoi pentru fiecare valoare a vectorului a se va parcurge secvena de instruciuni de la 200 la 240, calculndu-se de fiecare dat valoarea variabilei w, dup care se va face o revenire la eticheta 60 i se va afia valoarea lui w. La terminarea acestui program vom avea pentru w pe rnd valorile 16, 13, 14, 12.
INK n
Stabilete culoarea cu care vor fi afiate urmtoarele caractere: n cuprins n intervalul [0, 7] pentru o culoare, n=8 pentru transparen, n=9 pentru contrast. Eroare K dac n nu este n intervalul [0, 9].
INPUT ...
... este o secven de caractere separate ca i n instruciunea PRINT prin virgule, punct-virgule sau apostroafe. Caracterele pot fi:
i) Orice caracter tipribil (acceptat ntr-o instruciune de tip PRINT), care s nu nceap cu o liter.
ii) Numele unei variabile.iii) Instruciunea LINE urmat de numele unei variabile de tip
string (ir de caractere alfanumerice).n continuare snt date detalii pentru fiecare din cele trei cazuri:
20
-
i) Caracterele tipribile i elementele de separare (virgule, punct-virgule, apostroafe) snt tratate exact ca ntr-o instruciune PRINT, exceptnd faptul c snt afiate n partea de jos a ecranului.
ii) Calculatorul se oprete i ateapt introducerea unei expresii de la tastatur. Aceast expresie este apoi atribuit ca valoare variabilei n cauz. Calculatorul semnaleaz c ateapt o intrare prin semnul ntrebrii. n cazul cnd la tastarea unei intrri se face o greeal de sintax apare n dreptul ei semnul ntrebrii clipind. Dac primul caracter care se tasteaz ntr-un INPUT este STOP, execuia programului este oprit i se afieaz eroare H.
Pentru expresii de tip string, bufferul de intrare este iniializat i va conine 2 glilimele afiate i n partea de jos a ecranului cuprinznd cursorul care indic modul de lucru (L, C, G, E) n care se afl calculatorul.
n caz c cele 2 ghilimele snt terse se poate apsa primul caracter STOP i apoi execuia programului. Dar tergnd ghilimelele i introducnd o expresie (corect) de tip string este afiat semnul ntrebrii semnalnd eroare.
iii) Similar cu cazul ii) exceptnd faptul c intrarea este tratat ca un string fr ghilimele iar mecanismul STOP nu funcioneaz.
Pentru oprirea programului trebuie tastat CAPS SHIFT cu 6Exemple: 1. Fie secvena de program de mai jos:
10 DIM a(5)20 FOR n=1 TO 530 INPUT Valoarea lui a(n); a(n)40 NEXT n
La apelarea acestei secvene de program calculatorul va afia mesajul Valoarea lui a(n) dup care se ateapt introducere valorii numerice pentru a(n). Toat aceast secven se va repeta de 5 ori, astfel c la terminarea secvenei vom avea valorile pentru componentele vectorului a.
2. Fie secvena de program de mai jos:10 INPUT a$20 PRINT Eu snt calculatorul; a$30 STOP
La execuia acestei secvene de program, calculatorul va atepta introducerea valorii lui a$ (tip ir) dup care va afia mesajul Eu snt calculatorul i valoarea lui a$. Dac a$=COBRA, atunci mesajul care va aprea va fi Eu snt calculatorul COBRA.
INVERSE n
Controleaz inversarea culorilor pentru caracterele ulterioare. Dac n=0 caracterele se afieaz n video normal. Dac n=1 afiarea se face n video invers: caractere de culoare paper pe fond ink.
Eroare K dac n diferit de 0 sau 1.
21
-
LET v=e
Valoarea e este atribuit variabilei v. Este obligatorie prezena cuvntului LET. Orice variabil simpl trebuie definit printr-o instruciune de tip LET, READ sau INPUT.
Dac v este o variabil de tip ir indexat (string indexat: a$(i)) sau subir indexat (sliced string) atunci se atribuie lui v o valoare e avnd aceleai dimensiuni cu ale variabilei v (irul e va fi sau truncheat sau umplut la dreapta cu spaii).
Exemplu: Dac dorim ca variabila w s aib valoarea 123, vom folosi instruciunea:
LET w=123LIST n
n partea de sus a ecranului se genereaz un listing al programului, ncepnd cu linia n (linia n devine linie curent, indexat de cursor).
LIST
Listarea programului BASIC, pe ecranul TV, ncepnd cu linia 0.
LLIST n
Generarea listingului la imprimant, ncepnd cu linia n.
LLIST
Generarea listingului la imprimant, ncepnd cu linia 0.
LOAD f
(Load File) ncrcarea programului (fiierului) cu numele f i a variabilelor de la unitatea de memorie extern (caseta magnetic).
LOAD f DATA V()
ncrcarea unei matrici numerice.
LOAD f DATA a$()
ncrcarea unei matrici de stringuri (caractere alfanumerice).
LOAD f CODE m n
ncrcarea a cel mult n bii octei ncepnd de la adresa m.
LOAD f CODE m
ncrcarea biilor octeilor ncepnd de la adresa m.22
-
LOAD f CODE
ncrcarea biilor octeilor napoi la adresa de la care au fost salvai.
LOAD f SCREEN$
LOAD f CODE 16384,6912. Cutarea fiierului corespunztor pe ca-set i ncrcarea lui n zona de memorie corespunztoare ecranului TV.
Exemplele se gsesc la pagina 28.
LPRINT
Similar cu PRINT, dar utiliznd imprimanta.
MERGE f
Similar cu LOAD, fr s fie terse liniile de program i variabilele existente n memoria operativ, cu excepia celor care au acelai numr respectiv nume.
MON
Comanda de intrare n programul monitor pentru lucrul n cod main. Este o comand specific calculatorului COBRA.
Monitorul COBRA are urmtoarele comenzi:S adr Substituie la adresa adr. Se poate modifica octetul de
la adresa respectiv sau se poate afia octetul anterior(apsnd SPACE) sau octetul urmtor (apsnd ENTER).Se iese tastnd Q.
M adr1 adr2 adr3 Mut zona de memorie cuprins ntreadresele adr1 i adr2 la adresa adr3.
F adr lg oc Umple zona de memorie de la adresa adr, delungimelg, cu octei avnd valoarea oc.
G adr1 [adr2] Lanseaz execuia programului de la adresa adr1cu oprire opional la adresa adr2.
D adr Afieaz coninutul a 128 de locaii de memoriesuccesive ncepnd cu adresa adr.De asemenea, poate fi afiat pagina de memorieanterioar (tastnd SPACE) sau pagina urmtoare(tastnd ENTER).
R Afiarea coninutului registrelor procesorului.B Rentoarcere la interpretorul BASIC.
23
-
MOVE f1 f2
Neutilizabil.
NEW
Restarteaz sistemul BASIC, dup ce terge programul i variabilele existente. Memoria este utilizat pn la (inclusiv) octetul a crui adres este coninut n variabila de sistem RAMBOT. Snt pstrate valorile variabilelor de sistem UDG, P RAMT, RASP i PIP.
NEXT a
Instruciune utilizat n ciclurile FOR-NEXT. i) Este cutat variabila de control a. ii) Se avanseaz valoarea lui a cu valoarea pasului.iii) Dac pasul are o valoare pozitiv i dac nu s-a atins limita
superioar sau dac pasul are o valoare negativ i nu s-a atins limita inferioar, se reia efectuarea ciclului cu prima sa instruciune.
Eroare 2 dac nu exist variabila a.Eroare 1 dac exist o alt variabil cu acelai nume a dar
aceasta nu este variabil de control a ciclului.
OPEN#
Neutilizabil.
OUT m,n
Coninutul bitului octetului n din memorie este transferat portului m, la nivel de procesor (se ncarc m n perechea de regitri BC, n n regis-trul A i se execut instruciunea OUT(C), A din limbajul de asamblare Z80). Eroare B dac m i n nu snt n intervalele 0
-
PAUSE n
Calculele snt oprite i calculatorul face o pauz, cu durata de n/50 secunde sau pn la apsarea unei taste.
PLOT c,m,n
Tiprete un punct (pixel) avnd coordonatele (|m|, |n|), stabilindu-se aici i noua poziie a cursorului grafic. Originea sistemului de coordonate (0,0) pe ecran este stnga-jos.
Dac valoarea lui c (valoare ntre 0 i 7 asociat culorii pentru cerneal (INK); vezi pag. 9) nu se specific, punctul afiat va fi de culoarea cernelii curente, iar celelalte caracteristici de culoare (culoarea fondului, clipirea i strlucirea) rmn neschimbate.
Eroare B dac m i n nu snt n intervalele 0
-
Dac x = 1*E+13 afiarea se va face utiliznd notaia exponenial. Mantisa poate avea maxim 8 cifre (fr zerouri n partea dreapt), cu punctul zecimal pus dup prima cifr (fr punct zecimal dac mantisa are o singur cifr. Urmeaz un E (semnificnd 10) ridicat la o putere pozitiv sau negativ format din maxim 2 cifre.
Dac x este n intervalul 1*E-5 < x < 1*E+13 el va fi afiat n notaia zecimal obinuit, cu maxim 8 cifre semnificative i fr zerouri dup punctul zecimal.
Zero este afiat ca o singur cifr 0.iii) ir de caractere (string expression).Simbolurile (cu nume formate din unul sau mai multe caractere
alfanumerice) snt nsoite de caracterul pauz, nainte sau dup. Caracterele de control produc efectul lor de control.Caracterele ce nu snt recunoscute snt nlocuite la afiare prin
semnul ntrebrii ?.iv) PRINT AT m,n; ... Mesajul ... este afiat pe ecran ncepnd din linia m, coloana n.[0
-
Eroare C pentru tipuri greite de expresii.Eroare E dac lista variabilelor este mai mare ca cea a datelor.
Vezi exemplul de la instruciunea DATA.
REM ...
Linie de comentariu. Toate caracterele ntre aceast instruciune i ENTER nu snt interpretate. Deci linia de comentariu nu poate cuprinde i alt instruciune chiar dac este separat prin 2 puncte.
RESTORE n
Oblig ca citirea datelor printr-o secven READ DATA s se fac ncepnd cu linia n din tabela de date.
RESTORE
Echivalent cu RESTORE 0.
RETURN
Revenire la prima linie dup cea care conine instruciunea de salt GO SUB, pentru continuarea programului, dup execuia unei subrutine. Instruciune de ncheiere a unei subrutine.
Eroare 7 dac n stiv nu se afl adresa de revenire, din pricina unei erori de programare.
RUN n
Se execut un CLEAR urmat de un GO TO n (start pentru rularea programului, ncepnd cu linia n).
RUN
Echivalent cu RUN 0.
SAVE f
(Save File f) Comanda de salvare a programului i a variabilelor n memoria extern (nregistrare pe caseta magnetic).
SAVE f LINE m
Salvarea programului astfel nct la rencrcarea lui n memoria operativ se execut i un salt automat la linia m.
SAVE f DATA v()
Salvarea unei matrici numerice.27
-
SAVE f DATA a$()
Salvarea unei matrici de stringuri.
SAVE f CODE m,n
Salvarea a n bii octei ncepnd de la adresa m.
SAVE f SCREEN$
SAVE f CODE 16384,6912. Salvarea zonei de memorie corespunz-toare ecranului TV n fiierul f, pe caset.
Eroare F dac f nu cuprinde nici un caracter sau dac f are lungimea mai mare de 10 caractere.
Exemple de folosire a instruciunilor LOAD i SAVE:
1) Fie programul BASIC cu numele TESTE. Acest program se va salva i apoi se va putea reciti de pe banda magnetic folosind instruciunile:
SAVE TESTE i LOAD TESTE
2) Dac programul PROG a fost scris n cod de Z-80, el se va salva i reciti cu instruciunile:
SAVE PROG CODE i LOAD PROG CODE
cu precizarea c trebuie furnizate ca parametri adresa de lacare s se salveze programul i lungimea lui (parametriim i n din SAVE f CODE m,n).
3) Dac folosim instruciunile:
SAVE BASIC LINE 10 i LOAD BASIC
se va salva programul cu numele BASIC, apoi la ncrcarea lui n memorie se va lansa automat n execuie de la linia 10.
STOP
Oprete execuia unui program cu mesajul de eroare 9. CONTINUE provoac reluarea programului, ncepnd cu urmtoarea instruciune.
VERIFY
Similar cu LOAD, doar c datele nu se ncarc de pe caset n RAM, ci snt doar comparate cu datele deja existente n RAM. Servete la verificarea corectitudinii salvrii programelor pe caseta magnetic.
Eroare R dac n urma comparaiei se pun n eviden diferene.28
-
MESAJE DE EROARE
Acestea apar n partea de jos a ecranului TV, n cazul n care calculatorul se oprete din execuia unui program, opriri normale sau cauzate de erori.
Mesajele snt codificate (o cifr sau o liter), snt nsoite de o scurt explicaie i precizeaz numrul liniei i numrul de ordine al instruciunii eronate din linia respectiv, care a cauzat ntreruperea. O comand direct executabil este indicat cu numrul de linie 0. Pe o linie, prima instruciune are numrul de ordine 1, instruciunea 2 este situat dup prima coloan sau dup THEN, .a.m.d.
Comportarea lui CONTINUE depinde foarte mult de mesajul afiat de calculator. n mod normal CONTINUE produce reluarea de la linia i instruciunea specificate n ultimul mesaj aprut, cu excepia mesajelor 0, 9 i D.
n continuare, se prezint o list cu mesaje, artndu-se i circumstanele n care pot ele s apar:
Codul Semnificaia Situaia
0 OK (Totul este n ordine).Marcheaz executarea unui program sau a unei comenzi ori un salt la o linie cu numrul mai mare dect al oricrei linii din program.
Oricare
1 NEXT fr FOR.Variabila de control al unui ciclu FOR-NEXT nu a fost definit printr-o instruciune FOR dar exist o variabil obinuit cu acelai nume.
NEXT
2 Variabil ce nu poate fi gsit.n cazul unei variabile simple, atunci cnd se ncearc utilizarea ei nainte ca variabila s fie definit printr-o instruciune de tip LET, READ, INPUT, FOR sau nainte ca variabila s fie ncrcat de pe caset.n cazul variabilelor indexate, dac acestea snt folosite nainte ca ele s fie dimensionate printr-o instruciune DIM sau ncrcate de pe band.
Oricare
3 Indexare eronat.Indice mai mare ca dimensiunile matricii sau numr eronat de indici. Dac indicele este negativ sau mai mare ca 65535 rezult eroare B.
Variabile indexate. Substringuri.
4 Depirea memoriei.Memoria operativ insuficient pentru programul respectiv.
LET, INPUT, FOR, DIM, GOSUB, LOAD, MERGE sau la efectuarea calculelor
29
-
Codul Semnificaia Situaia
5 Depirea ecranului.ntr-o instruciune INPUT s-a ncercat generarea a mai mult de 23 de linii n partea de jos a ecranului.De asemenea, la ncercarea PRINT AT 22.
INPUTPRINT
6 Numr prea mare.Rezultatul calculelor, mai mare ca 1*E+38.
Calcule aritmetice
7 RETURN folosit fr GO SUB. RETURN
9 Urmare a executrii unei instruciuni STOP.CONTINUE produce reluarea programului cu urmtoarea instruciune.
STOP
A Argumentul unei funcii este necorespunztor. SQR, LN, ASN, ACS, USR cu argument string
B ntreg ce depete domeniul.Cnd se face rotunjirea unui numr la ntregul cel mai apropiat i acesta depete un anumit domeniu.
RUN, RANDOMIZE, POKE, DIM, GOTO, GOSUB, LIST, PAUSE, PLOT, CHR$, PEEK, USR
C Nonsens n BASIC.Textul introdus nu formeaz o expresie valid.
VAL, VAL$
D BREAK-CONT repeats.S-a tastat BREAK n decursul operrii cu un periferic. CONTINUE se comport normal, reluarea fcndu-se cu repetarea instruciunii unde s-a produs ntreruperea.
LOAD, VERIFY, SAVE, MERGE, LLIST, LPRINT, COPY, sau cnd la ntrebarea scroll? s-a tastat N, SPACE sau STOP.
E Date insuficiente.S-a ncercat citirea prin READ a mai multor date dect cuprinde lista DATA.
READ
F Nume eronat de fiier.SAVE fr nume sau cu nume mai lung de 10 caractere.
SAVE
G Memorie prea puin pentru a putea cuprinde linia de program ce se introduce.
Introducerea unei noi linii de program.
H STOP n INPUT.S-a tastat STOP n loc de valori numerice n timpul execuiei unei instruciuni INPUT sau s-a tastat ntr-o instruciuni INPUT LINE. CONTINUE se comport normal relund programul cu instruciunea INPUT (inclusiv), n afar de cazul cnd se afieaz mesajul 9 (n loc de H).
INPUT
30
-
Codul Semnificaia Situaia
I FOR fr NEXT.Bucla FOR de executat de 0 ori (de ex. FOR n=1 TO 0). Instruciunea NEXT corespunztoare ciclului nu poate fi gsit.
FOR
J Dispozitiv de intrare-ieire greit. Operaii de intrare-ieire.
K Caracteristica de culoare greit.Numrul introdus pentru o caracteristic de culoare este incorect.
INK, PAPER, OVER, BORDER, INVERSE, FLASH, BRIGHT
L BREAK (ntrerupere) ntr-un program.Tastarea unui BREAK este detectat ntre execuia a dou instruciuni, pe parcursul rulrii unui program. Numrul liniei i al instruciunii, care apar n mesaj, se refer la instruciunea dinainte ca BREAK s fi fost apsat; CONTINUE produce reluarea programului cu urmtoarea instruciune (permindu-se efecuarea salturilor). n acest mod nu se repet nici o instruciune.
Oricare
M RAMTOP incorect.Numrul atribuit variabilei de sistem RAMTOP este sau prea mare sau prea mic.
CLEAR, RUN
N Pierderea unei instruciuni.Salt la o instruciune care a fost tears din program.
RETURN, NEXT, CONTINUE
P FN fr DEF.Apelarea unei funcii utilizator nedefinit.
FN
Q Parametru eronat.Numr greit de argumente sau tip greit de argument (string n loc de numr sau invers).
FN
R Eroare la ncrcarea unui program de pe banda magnetic. Fiierul cutat pe band a fost gsit, dar nu poate fi citit sau nu poate fi verificat.
VERIFY, LOAD, MERGE
31
-
4. UTILIZAREA PORTURILOR DE INTRARE/IEIRE
Microprocesorul Z80 poate accesa 65536 porturi de intrare/ieire (input/output=I/O ports), pentru a comunica cu exteriorul (tastatura, interfaa serial RS232 (imprimanta)). Prin intermediul interpretorului BASIC se pot controla poriunile de intrare-ieire, astfel:
intrrile, cu funcia IN, n forma:IN adresa
rezultatul fiind valoarea octetului citit din portul a crui adres a fost specificat;
ieirile, cu declaraia OUT, n forma:OUT adresa, valoare
rezultatul fiind nscrierea valorii n portul a crui adres a fost specificat.
Una dintre adresele celor 65536 porturi de intrare/ieire are n binar lungimea de 16 bii (A=Adresa):
A15, A14, A13, ..., A2, A1, A0.Biii A0, A1, A2, A3, A4 au n mod normal valoarea 1.Se poate atribui valoarea 0 doar unuia dintre aceti 5 bii, la un
anumit moment.Biii A6 i A7 snt liberi (pot fi folosii de utilizator).Biii A8, ..., A15 snt folosii uneori pentru informaii suplimentare.O valoare citit din sau nscris ntr-un port de intrare/ieire are
lungimea de 8 bii (D=Data):D7, D6, ..., D1, D0.
n continuare snt prezentate porturile de intrare-ieire utilizate de calculatorul COBRA.
Tastatura este mprit n 8 jumti de linie (8 semirnduri) de cte 5 taste fiecare:
32
-
FEFE 0 IN 65278 citete tastele CAPS SHIFT pn la 7FFE 7 IN 32766 citete tastele SYMBOL SHIFT pn la BFDFE 1 IN 65022 citete tastele A pn la GBFFE 6 IN 49150 citete tastele ENTER pn la HFBFE 2 IN 64510 citete tastele Q pn la TDFFE 5 IN 57342 citete tastele P pn la YF7FE 3 IN 63486 citete tastele 1 pn la 5EFFE 4 IN 61438 citete tastele 0 pn la 6
Valorile acestor adrese snt:
254+256*(255-2n)
cu n variind ntre 0 i 7.
Biii octeilor citii prin funciile IN de la adresele de mai sus reprezint: D0 tasta din exteriorul semirndului, D1 urmtoarea tast; D2, D3, D4 taste din interiorul semirndului i au valoarea 0 dac tasta este apsat i valoarea 1 dac tasta nu este apsat.
Bitul D5 este asociat cu tastele suplimentare: ESC, LINE FEED, NO SCROLL, CTRL, F1, F2, F3, F4.
Bitul D6 este asociat conectorului de casetofon (intrare de casetofon).
Bitul D7 este asociat intrrilor prin interfaa serial (imprimanta).
Prin biii portului de ieire 254 (OUT 254, valoare) se trimit semnalele:
D0, D1, D2 culoarea pentru borderul imaginii pe monitorul TV;D3 ieire pentru casetofon (salvare pe caset);D4 difuzorul calculatorului;D7 ieire prin interfaa serial (imprimanta).
La portul de intrare 223 (IN 223) se poate lega un Joystick compatibil Kempston.
33
-
5. MEMORIA
Orice informaie este memorat de calculator sub form de numere cu valori ntre 0 i 255 (cuvinte de 8 bii = 1 byte = 1 octet). Fiecare octet al memoriei are o adres, care este un numr ntre 0 i FFFFh (deci o adres ocup 2 byte = 16 bii).
Ne putem deci imagina memoria ca us ir de locaii (numerotate ntre 0 i FFFFh, n fiecare locaie putnd fi memorat un nuimr cu valoarea ntre 0 i 255.
Calculatorul COBRA are 64 Koctei (65536) locaii de memorie de tip RAM I 16 Koctei memorie de tip ROM (EPROM).
Coninutul locaiilor ambelor memorii (ROM+RAM) poate fi citit cu funcia PEEK:
PEEK adresa
i rezultatul este coninutul acelei adrese.Se poate modifica coninutul locaiilor (numai n memoria RAM), cu
instruciunea POKE:
POKE adresa, valoare
rezultatul fiind nscrierea valorii n locaia de memorie specificat de adresa (adresa trebuie s fie un numr ntre 0 i 65535, iar valoarea un numr ntre 0 i 255).
n continuare este prezentat harta memoriei:
Adresa Coninutul
0000016383
Interpretorul BASIC
1638422527
Memoria ecran (4000-57FF)
2252823295
Atributele de culoare (5AFF)
2329623551
Memoria tampon pentru imprimant (5B00-5BFF)
34
-
2355223733
Variabile de sistem (5C00-5CB5)
CHAN Informaii de canal80H
PROG Programe BASIC
VARS Variabile BASIC80H
E LINE Comenzi sau linii de program editateNL80H
WORKSP
Date de intrare (INPUT data)NLSpaiu de lucru temporar
STKBOT Stiv pentru calcule aritmetice
STKEND Spaiu liber
SP Stiv de sistemStiv GOSUB7
RAM TOP
3EH
UDG Caractere grafice definite utilizator
P RAMT
386E=144463CFF=15615 FREE
0066=1020072=114 NMI
35
-
6. VARIABILELE DE SISTEM
Locaiile de memorie ntre 23552 i 23733 snt rezervate variabilelor de sistem. Valorile lor pot fi citite (cu PEEK) i unele valori pot fi modificate (cu POKE). n continuare este prezentat o list a acestor variabile.
Abrevierile din prima coloan au semnificaia:X = modificarea valorii variabilei poate deranja (puternic)
funcionarea sistemului;N = valoarea poate fi modificat;n = (numr) = numrul de octei ocupat de variabil.La variabilele de doi octei, primul octet este cel mai puin
semnificativ. Pentru introducerea valorii V, variabilei pe doi octei de la adresa n, se poate folosi secvena:
POKE n, V-256*INT(V/256);POKE n+1, INT(V/256);
iar citirea valorii se face cu:
PEEK n+256*PEEK(n+1)
Adresa Nume Coninut
N8 23552 KSTATE Folosit n citirea tastaturii
N1 23560 LAST K Memoreaz ultima tast apsat
1 23561 REPDEL Durata (n 1/50 sec.) ct trebuie inut o tast apsat pentru a se repeta; iniial 35
1 23562 REPPER Perioada (n 1/50 sec.) de repetiie a unei taste meninut apsat; valoarea iniial 5
N2 23563 DEFADD Adresa argumentelor funciilor definite utilizator; iniial 0
N1 23565 K DATA Al doilea octet pentru controlul culorii introdus de la tastatur
36
-
Adresa Nume Coninut
N2 23566 TVDATA Controlul culorii, al lui AT i TAB pentru TV
X18 23568 STRMS Adresa canalului ataat cii
1 23600 NRCOLMX Numrul maxim de coloane la imprimant.Valoarea iniial 32.
1 23601 NRLINES Numrul de linii care vor fi scrise pe pagina nou.
1 23602 COPY AS Adresa zonei de serializare COPYSCREEN.Valoarea iniial 60H
1 23603 COPY AA Adresa zonei de atribute de culoare COPYSCREEN.Valoarea iniial 53H
2 23604 BAUD Baud Rate RS232. Viteza de transmitere a caracterelor ctre imprimant. Valoarea iniial 006EH 300 . . . . . 01C1H 600 . . . . . 00E4H 1200 . . . . . 006EH 2100 . . . . . 0035H 3800 . . . . . 0019H 9600 . . . . . 000BH19200 . . . . . 0005H
2 23606 CHARS Adresa generatorului de caractere minus 256
1 23608 RAPS Durata sunetului de eroare
1 23609 PIP Durata sunetului la apsarea unei taste
1 23610 ERR NR Codul de mesaje minus 1
X1 23611 FLAGS Diferii indicatori de control ai sistemului BASIC
X1 23612 TVFLAG Indicatori asociai cu televizorul
X2 23613 ERR SP Adresa elementului din stiv utilizat ca adres de ntoarcere n caz de eroare.
N2 23615 LIST SP Adresa de ntoarcere la listrile automate
N1 23617 MODE Specific cursorul (K, L, C, E, G)
2 23618 NEWPPC Linia la care se sare
1 23620 NSPPC Numrul instruciunii n linia la care se sare
2 23621 PPC Numrul liniei pentru instruciunea n execuie
37
-
Adresa Nume Coninut
1 23623 SUBPPC Numrul instruciunii din linie n execuie
1 23624 BORDCR Culoarea border-ului
2 23625 E PPC Numrul liniei curente
X2 23627 VARS Adresa variabilelor
N2 23629 DEST Adresa variabilelor asignate
X2 23631 CHANS Adresa datelor de canal
X2 23633 CURCHL Adresa informaiei curente folosit pentru intrare sau ieire
X2 23635 PROG Adresa programului BASIC
X2 23637 NXTLIN Adresa urmtoarei linii din program
X2 23639 DATADD Adresa ultimului element din lista DATA
X2 23641 E LINE Adresa comenzii introduse
2 23643 K CUR Adresa cursorului
X2 23645 CH ADD Adresa urmtorului caracter care urmeaz s fie interpretat
2 23647 XPTR Adresa caracterului dup semnul ntrebrii
X2 23649 WORKSP Adresa spaiului de lucru temporar
X2 23651 STKBOT Adresa inferioar a stivei calculator
X2 23653 STKEND Adresa de nceput a spaiului liber
N1 23655 BREG Registrul B al calculatorului
N2 23656 MEM Adresa spaiului folosit pentru memoria calculatorului
1 23658 FLAGS2 Ali indicatori
X1 23659 DF SZ Numrul liniilor din partea de jos a ecranului
2 23660 S TOP Numrul liniei de sus a programului la listarea automat
2 23662 OLDPPC Numrul liniei la care sare CONTINUE
1 23664 OSPCC Numrul de linie la care sare CONTINUE
38
-
Adresa Nume Coninut
N1 23665 FLAGX Diveri indicatori
N2 23666 STRLEN Lungimea asignat irului
N2 23668 T ADDR Adresa urmtorului element din tabela sintax
2 23670 SEED Variabila pentru RND
3 23672 FRAMES Contorul de cadre
2 23675 UDG Adresa primului grafic definit de utilizator
1 23677 COORDS Coordonata x a ultimului punct plotat
1 23678 Coordonata y a ultimului punct plotat
1 23679 P POSN Numrul poziiei de scriere pe ecran
1 23680 PR CC Octetul mai puin semnificativ al adresei pentru noua poziie la care se imprim prin LPRINT
1 23681 Nefolosit
2 23682 ECHO E Numrul coloanei i al liniei
2 23684 DF CC Adresa de afiare pe ecran prin PRINT
2 23686 DFCCL Acelai lucru pentru partea de jos a ecranului
X1 23688 S POSN Numrul coloanei pentru PRINT
X1 23689 Numrul liniei pentru PRINT
X2 23690 SPOSNL Ca S POSN pentru partea de jos a ecranului
1 23692 SCR CT Numr defilrile de ecran
1 23693 ATTR P Culoarea curent
1 23694 MASK P Folosit pentru culori transparente
N1 23695 ATTR T Culori temporare
N1 23696 MASK T Ca MASK P dar temporar
1 23697 PFLAG Ali indicatori
39
-
Adresa Nume Coninut
N30 23698 MEMBOT Arie memorie calculator
2 23728 Nefolosit
2 23730 RAMTOP Adresa ultimului octet din aria sistemului BASIC
2 23732 P-RAMT Adresa ultimului octet de RAM
40
-
7. UTILIZAREA CODULUI MAIN
Acest paragraf se adreseaz celor care cunosc setul de instruciuni Z80 de programare n cod main (limbaj de asamblare).
Introducerea programului scris n cod main se face n general cu specificarea adresei de nceput (cel mai bine este ca aceast adres s se afle ntre zona BASIC i zona caracterelor grafice definite de utilizator).
La pornire, limita superioar a memoriei RAM (RAMTOP) se afl la adresa 65366:
00000||65366=RAMTOP65367=UDG|| =Caractere grafice definite de utilizator|65534=P RAMT
Se poate deplasa RAMTOP, rezervndu-se un spaiu de 100 de octei pentru cod main ncepnd cu adresa 65267, cu comanda
CLEAR 65266
||65266=RAMTOP|| =100 de octei liberi|65367=UDG|| =Caractere grafice definite de utilizator|65534=P RAMT
Introducerea unui program n cod main se poate face prin intermediul unui program BASIC, de genul:
41
-
10 LET a=3250020 READ n: POKE a,n30 LET a=a+1: GO TO 2040 DATA 1, 99, 0, 201
Aici s-a introdus programul:LD BC, 99RET
transpus n cod main ca:1, 99, 0 (pentru LD BC, 99) i 201 (pentru RET).
Rularea programului BASIC de mai sus, introduce valorile din linia 40, ncepnd de la adresa 32500.
Execuia unui program n cod main este comandat prin funcia USR cu argument numeric, reprezentnd adresa primului octet al programului:
PRINT USR adresa de nceputDup execuia programului n cod se tiprete valoarea coninut n
perechea de registre BC.n exemplul de mai sus,
PRINT USR 32500produce apariia valorii 99.
Rentoarcerea din cod Z80 n BASIC se face cu instruciunea RET.n rutinele scrise n cod main nu se pot utiliza registrele IY i HL.Un program n cod main poate fi salvat pe caseta magnetic cu:
SAVE nume CODE adr, nunde n reprezint lungimea programului (numr de octei) i adr este adresa de nceput.
Un program n cod main nu se poate autolansa n execuie dup ncrcarea de pe caset.
El poate fi lansat ns de un program nume 1, n BASIC:10 LOAD nume CODE adr, n20 PRINT USR adr
salvat la rndul su (cu autostartare), prin:SAVE nume 1 LINE 10
Pentru execuie se ncarc programul nume 1 ajuttor:LOAD nume 1
care se autostarteaz, ncarc programul nume, n cod main(linia 10) i apoi lanseaz n execuie programul nume n cod main (linia 20).42
-
8. SETUL DE CARACTERE
n continuare este prezentat setul de caractere al calculatorului COBRA, cu codurile n zecimal i hex. Coloanele din dreapta dau mnemonicele corespunztoare n limbaj de asamblare. Anumite instruciuni Z80 snt compuse, ncepnd cu CB sau ED.
Cod Caracterul Hex Z80 L. asamblare -dup CB -dup ED0 00 NOP RLC B1 01 LD BC, nn RLC C2 02 LD (BC), A RLC D3 nefolosite: 03 INC BC RLC E4 04 INC B RLC H5 05 DEC B RLC L6 PRINT virgul 06 LD B, n RLC (HL)7 EDIT 07 RLCA RLC A8 cursor stnga 08 EX AF, AF' RRC B9 cursor dreapta 09 ADD HL, BC RRC C
10 cursor jos 0A LD A, (BC) RRC D11 cursor sus 0B DEC BC RRC E12 DELETE 0C INC C RRC H13 ENTER 0D DEC C RRC L14 numr 0E LD C, n RRC (HL)15 nefolosit 0F RRCA RRC A16 INK control 10 DJNZ dis RL B17 PAPER control 11 LD DE, nn RL C18 FLASH control 12 LD (DE), A RL D19 BRIGHT control 13 INC DE RL E20 INVERSE control 14 INC D RL H21 OVER control 15 DEC D RL L22 AT control 16 LD D, n RL (HL)23 TAB control 17 RL A RL A24 18 JR dis RR B25 19 ADD HL, DE RR C26 1A LD A, (DE) RR D27 nefolosite 1B DEC DE RR E28 1C INC E RR H29 1D DEC E RR L30 1E LDE n RR (HL)31 1F RR A RR A32 Spaiu 20 JR NZ, dis SLA B33 ! 21 LD HL, nn SLA C34 22 LD (nn), HL SLA D35 # 23 INC HL SLA E36 $ 24 INC H SLA H37 % 25 DEC H SLA L
43
-
Cod Caracterul Hex Z80 L. asamblare -dup CB -dup ED38 & 26 LD H, n SLA (HL)39 ' 27 DAA SLA A40 ( 28 JR Z, dis SRA B41 ) 29 ADD HL, HL SRA C42 * 2A LD HL, (nn) SRA D43 + 2B DEC HL SRA E44 , 2C INC L SRA H45 2D DEC L SRA L46 . 2E LD L, n SRA (HL)47 / 2F CPL SRA A48 0 30 JR NC, dis49 1 31 LD SP, nn50 2 32 LD (nn), A51 3 33 INC SP52 4 34 INC (HL)53 5 35 DEC (HL)54 6 36 LD (HL), n55 7 37 SCF56 8 38 JR C, dis SRL B57 9 39 ADD HL, SP SRL C58 : 3A LD A, (nn) SRL D59 ; 3B DEC SP SRL E60 < 3C INC A SRL H61 = 3D DEC A SRL L62 > 3E LD A, n SRL (HL)63 ? 3F CCF SRL A64 40 LD B, B BIT 0, B INB, (C)65 A 41 LD B, C BIT 0, C OUT (C), B66 B 42 LD B, D BIT 0, D SBC HL, BC67 C 43 LD B, E BIT 0, E LD (nn), BC68 D 44 LD B, H BIT 0, H NEG69 E 45 LD B, L BIT 0, L RETN70 F 46 LD B, (HL) BIT 0, (HL) IM 071 G 47 LD B, A BIT 0, A LD I, A72 H 48 LD C, B BIT 1, B IN (C), C73 I 49 LD C, C BIT 1, C OUT (C), C74 J 4A LD C, D BIT 1, D ADC HL, BC75 K 4B LD C, E BIT 1, E LD BC, (nn)76 L 4C LD C, H BIT 1, H77 M 4D LD C, L BIT 1, L RETI78 N 4E LD C, (HL) BIT 1, (HL)79 O 4F LD C, A BIT 1, A LD R, A80 P 50 LD D, B BIT 2, B IN D, (C)81 Q 51 LD D, C BIT 2, C OUT (C), D82 R 52 LD D, D BIT 2, D SBC HL, DE83 S 53 LD D, E BIT 2, E LD (nn), DE
44
-
Cod Caracterul Hex Z80 L. asamblare -dup CB -dup ED84 T 54 LD D, H BIT 2, H85 U 55 LD D, L BIT 2, L86 V 56 LD D, (HL) BIT 2, (HL) IM 187 W 57 LD D, A BIT 2, A LD A, I88 X 58 LD E, B BIT 3, B IN E, (C)89 Y 59 LD E, C BIT 3, C OUT (C), E90 Z 5A LD E, D BIT 3, D ADC HL, DE91 [ 5B LD E, E BIT 3, E LD DE, (nn)92 / 5C LD E, H BIT 3, H93 ] 5D LD E, L BIT 3, L94 ^ 5E LD E, (HL) BIT 3, (HL) IM 295 _ 5F LD E, A BIT 3, A LD A, R96 ` 60 LD H, B BIT 4, B IN H, (C)97 a 61 LD H, C BIT 4, C OUT (C), H98 b 62 LD H, D BIT 4, D SBC HL, HL99 c 63 LD H, E BIT 4, E LD (nn), HL
100 d 64 LD H, H BIT 4, H101 e 65 LD H, L BIT 4, L102 f 66 LD H, (HL) BIT 4, (HL)103 g 67 LD H, A BIT 4, A RRD104 h 68 LD L, B BIT 5, B IN L, (C)105 i 69 LD L, C BIT 5, C OUT (C), L106 j 6A LD L, D BIT 5, D ADC HL, HL107 k 6B LD L, E BIT 5, E LD HL, (nn)108 l 6C LD L, H BIT 5, H109 m 6D LD L, L BIT 5, L110 n 6E LD L, (HL) BIT 5, (HL)111 o 6F LD L, A BIT 5, A RLD112 p 70 LD (HL), B BIT 6, B IN F, (C)113 q 71 LD (HL), C BIT 6, C114 r 72 LD (HL), D BIT 6, D SBC HL, SP115 s 73 LD (HL), E BIT 6, E LD (nn), SP116 t 74 LD (HL), H BIT 6, H117 u 75 LD (HL), L BIT 6, L118 v 76 HALT BIT 6, (HL)119 w 77 LD (HL), A BIT 6, A120 x 78 LD A, B BIT 7, B IN A, (C)121 y 79 LD A, C BIT 7, C OUT (C), A122 z 7A LD A, D BIT 7, D ACD HL, SP123 { 7B LD A, E BIT 7, E LD SP, (nn)124 | 7C LD A, H BIT 7, H125 } 7D LD A, L BIT 7, L126 7E LD A, (HL) BIT 7, (HL)127 7F LD A, A BIT 7, A128 80 ADD A, B RES 0, B129 81 ADD A, C RES 0, C
45
-
Cod Caracterul Hex Z80 L. asamblare -dup CB -dup ED130 82 ADD A, D RES 0, D131 83 ADD A, E RES 0, E132 84 ADD A, H RES 0, H133 85 ADD A, L RES 0, L134 86 ADD A, (HL) RES 0, (HL)135 87 ADD A, A RES 0, A136 88 ADC A, B RES 1, B137 89 ADC A, C RES 1, C138 8A ADC A, D RES 1, D139 8B ADC A, E RES 1, E140 8C ADC A, H RES 1, H141 8D ADC A, L RES 1, L142 8E ADC A, (HL) RES 1, (HL)143 8F ADC A, A RES 1, A144 (a) | 90 SUB B RES 2, B145 (b) | 91 SUB C RES 2, C146 (c) | 92 SUB D RES 2, D147 (d) | 93 SUB E RES 2, E148 (e) | 94 SUB H RES 2, H149 (f) | 95 SUB L RES 2, L150 (g) | 96 SUB (HL) RES 2, (HL)151 (h) | 97 SUB A RES 2, A152 (i) | 98 SBC A, B RES 3, B153 (j) caractere 99 SBC A, C RES 3, C154 (k) grafice 9A SBC A, D RES 3, D155 (l) | 9B SBC A, E RES 3, E156 (m) | 9C SBC A, H RES 3, H157 (n) | 9D SBC A, L RES 3, L158 (o) | 9E SBC A, (HL) RES 3, (HL)159 (p) | 9F SBC A, A RES 3, A160 (q) | A0 AND B RES 4, B LDI161 (r) | A1 AND C RES 4, C CPI162 (s) | A2 AND D RES 4, D INI163 (t) | A3 AND E RES 4, E OUTI164 (u) | A4 AND H RES 4, H165 RND A5 AND L RES 4, L166 INKEY$ A6 AND (HL) RES 4, (HL)167 PI A7 AND A RES 4, A168 FN A8 XOR B RES 5, B LDD169 POINT A9 XOR C RES 5, C CPD170 SCREEN$ AA XOR D RES 5, D IND171 ATTR AB XOR E RES 5, E OUTD172 AT AC XOR H RES 5, H173 TAB AD XOR L RES 5, L174 VAL$ AE XOR (HL) RES 5, (HL)175 CODE AF XOR A RES 5, A
46
-
Cod Caracterul Hex Z80 L. asamblare -dup CB -dup ED176 VAL B0 OR B RES 6, B LDIR177 LEN B1 OR C RES 6, C CPIR178 SIN B2 OR D RES 6, D INIR179 COS B3 OR E RES 6, E OTIR180 TAN B4 OR H RES 6, H181 ASN B5 OR L RES 6, L182 ACS B6 OR (HL) RES 6, (HL)183 ATN B7 OR A RES 6, A184 LN B8 CP B RES 7, B LDDR185 EXP B9 CP C RES 7, C CPDR186 INT BA CP D RES 7, D INDR187 SQR BB CP E RES 7, E OTDR188 SGN BC CP H RES 7, H189 ABS BD CP L RES 7, L190 PEEK BE CP (HL) RES 7, (HL)191 IN BF CP A RES 7, A192 USR C0 RET NZ SET 0, B193 STR$ C1 POP BC SET 0, C194 CHR$ C2 JP NZ, nn SET 0, D195 NOT C3 JP nn SET 0, E196 BIN C4 CALL NZ, nn SET 0, H197 OR C5 PUSH BC SET 0, L198 AND C6 ADD A, n SET 0, (HL)199 = C8 RET Z SET 1, B201 C9 RET SET 1, C202 LINE CA JP Z, nn SET 1, D203 THEN CB operaii pe bii SET 1, E204 TO CC CALL Z, nn SET 1, H205 STEP CD CALL nn SET 1, L206 DEF FN CE ADC A, n SET 1, (HL)207 CAT CF RST 8 SET 1, A208 FORMAT D0 RET NC SET 2, B209 MOVE D1 POP DE SET 2, C210 ERASE D2 JP NC, nn SET 2, D211 OPEN# D3 OUT (n), A SET 2, E212 CLOSE# D4 CALL NC, nn SET 2, H213 MERGE D5 PUSH DE SET 2, L214 VERIFY D6 SUB n SET 2, (HL)215 BEEP D7 RST 10 SET 2, A216 CIRCLE D8 RET C SET 3, B217 INK D9 EXX SET 3, C218 PAPER DA JP C, nn SET 3, D219 FLASH DB IN A, (nn) SET 3, E220 BRIGHT DC CALL C, nn SET 3, H
47
-
Cod Caracterul Hex Z80 L. asamblare -dup CB -dup ED221 INVERSE DD instruciuni care
folosesc IXSET 3, L
222 OVER DE SBC A, n SET 3, (HL)223 OUT DF RST 18 SET 3, A224 LPRINT E0 RET PO SET 4, B225 LLIST E1 POP HL SET 4, C226 STOP E2 JP PO, nn SET 4, D227 READ E3 EX (SP), HL SET 4, E228 DATA E4 CALL PO, nn SET 4, H229 RESTORE E5 PUSH HL SET 4, L230 NEW E6 AND n SET 4, (HL)231 BORDER E7 RST 20 SET 4, A232 CONTINUE E8 RET PE SET 5, B233 DIN E9 JP (HL) SET 5, C234 REM EA JP PE, nn SET 5, D235 FOR EB EX DE, HL SET 5, E236 GO TO EC CALL PE, nn SET 5, H237 GO SUB ED instruciuni OUT SET 5, L238 INPUT EE XOR n SET 5, (HL)239 LOAD EF RST 28 SET 5, A240 LIST F0 RET P SET 6, B241 LET F1 POP AF SET 6, C242 PAUSE F2 JP P, nn SET 6, D243 NEXT F3 DI SET 6, E244 POKE F4 CALL P, nn SET 6, H245 PRINT F5 PUSH AF SET 6, L246 PLOT F6 OR n SET 6, (HL)247 RUN F7 RST 30 SET 6, A248 SAVE F8 RET M SET 7, B249 RANDOMIZE F9 LD P, HL SET 7, C250 IF FA JP M, nn SET 7, D251 CLS FB EI SET 7, E252 DRAW FC CALL M, nn SET 7, H253 CLEAR FD instruciuni care
folosesc IYSET 7, L
254 RETURN FE CP n SET 7, (HL)255 COPY FF RST 38 SET 7, A
48