BETA.4 ZX ZX SPECTRUM TASWORD TWO
FN M ()
----------------------------------------------------------------
FN M() dava ako vysledok volnu pamat v bytoch. Zatvorky
musia zostat prazdne. Skuste si :
PRINT FN M () : DIM A$(1000) : PRINT FN M ()
Bez Beta Basicu by ste mohli pouzit:
PRINT 65535 - USR 7962
Vsimnite si, ze Spectrum aj s Beta Basicom poskytuje viac
pracovnej pamate ako niektore XX 64 pocitace.FN N (Stringovy vyraz)
----------------------------------------------------------------
Pozri tiez FN C$(ciselny vyraz).
Meni dva znaky dlhy string na cislo medxi 0 a 65535.
Ak string nie je dva znaky dlhy, dostaneme hlasenie
"Invalid argument". Viac sa dozviete pri funkcii FN C$,
ktora je komplementarna. Zodpovedajuci vyraz v Basicu je
LET cislo = 256 * CODE C$(1) + CODE C$(2)FN P (adresa)
----------------------------------------------------------------
Pozri tiez DPOKE.
FN P je "Double PEEK" (dvojnasobny PEEK) danej adresy a
nasledovneho bytu. V Basicu tomu odpoveda :
100 LET NTX = FN P(23637) : PRINT NTX : POKE NTX+5,65
110 REM xxxxx
Tento priklad cita systemovu premennu, "NTXLIN", ktora
ukazuje adresu nasledovneho cisla riadku, v tomto pripade
adresu 110. Potom je prvy byte za rem v dalsom riadku zme-
neny na "A".(Riadok zacina 2 bytmi cisla riadku, 2 byty
dlzka riadku, jeden byte pre "REM".)
Pomocou DPOKE mozete POKE-ovat hodnoty, ktore ste citali
pomocou FN P.FN S$ (cislo, string)
----------------------------------------------------------------
V inych Basic dialektoch sa tato funkcia vola STRING$.
Jej ucinok je "cislo" krat "string" - urcity pocet opako-
vania zadaneho stringu.
PRINT FN S$ (704,"X") = obraxovka plna znakov "X".
PRINT FN S$ (3,"A"+ CHR$ 13) = A
A
A
FN S$ je rychlejsie ako FOR .. NEXT cyklus a ked je vysled-
ny string dlhsi ako 14 znakov, tak aj spori miesto pri
zadavani.FN T$ ()
----------------------------------------------------------------
Pozri tiez CLOCK.
Tato funkcia da aktualny cas. Ked nie je CLOCK zapnuty, tak
je FN T$() = "00:00:00". Ked je CLOCK zapnuty (ci uz sa
zobrazuje, alebo nie), ma FN T$() hodnotu meniacu sa po se-
kundach. Prikl.:
100 CLOCK 1
110 LET N$ = FN T$() : PRINT N$
120 PRINT "hodin = ";N$ (1 to 2);"minut = ";N$ (4 TO 5)
130 GOTO 110
Odporuca sa odlozit si hodnotu FN T$ do stringu, aby sa nam
hodnota pri jeho spracovani nemenila.FN U$ (formatovy string, cislo)
----------------------------------------------------------------
Pozri tiez: USING.
Ma za nasledok string, ktory zodpoveda "cislu", formato-
vanemu vystupu podla "formatoveho stringu". Pocet desa-
tinnych cisel pred a za desatinnou bodkou bude automaticky
zaokruhleny. USING je funkcia rovnakeho vyznamu, ale da sa
pouzit len s PRINT, zatial co FN U$ sa da pouzit s kazdym
prikazom pre string, napr. s LET.
Podrobnejsie vysvetlenie najdete pri USING.Dodatok A
================================================================
Z N A K O V Y S U B O R
-------------------------Pri zapnutom mode "KEYWORDS 1" (pozri tam) sa zmeni vyznam kla-
vesnice Spectra (po zapnuti G-kurzora) nasledovne:
Kod Tlacitko Znak
128 8 KEYWORDS
129 1 DEF PROC
130 2 PROC
131 3 END PROC
132 4 RENUM
133 5 EDIT
134 6 AUTO
135 7 DELETE
136 az po
... nezmenene
143
144 A ALTER
145 B B (ziadna funkcia)
146 C CLOCK
147 D DO
148 E ELSE
149 F F (ziadna funkcia)
150 G GET
151 H H (ziadna funckia)
152 I EXIT IF
153 J WHILE
154 K UNTIL
155 L LOOP
156 M SORT
157 N ON ERROR
158 O ON
159 P DPOKE
160 Q POP
161 R ROL
162 S SCROLL
163 T TRACE
164 U USING
Dodatok B
================================================================
C H Y B O V E H L A S E N I A
-------------------------------Hlasenie G ziskava v Beta Basicu dodatocny vyznam. Okrem Spect-
rum BASIC hlaseni sa pouzivaju este ine.
Kod Vyznam Situacia
G No room for line RENUM
(Niet miesta pre riadok)
Precislovanie daneho bloku by sposobilo prepis neprecis-
lovanych riadkov, alebo by viedlo k cislu riadku vacsie-
mu ako 9999.E Missing LOOP DO, EXIT, IF
(Chyba LOOP)
Po EXIT IF alebo podmienenom DO (t.j. nasledovanom
WHILE alebo UNTIL) nebol najdeny LOOP prikaz.T LOOP without DO LOP
(LOOP bez DO)
Naslo sa LOOP bez zodpovedajuceho DO.U No such line DELETE
(Taky riadok nejestvuje)
V prikaze DELETE sa pouzilo cislo neexistujuceho riadku.V No POP data POP
(Ziadne POP data)
Skusa sa odstranit z prazdneho GOSUB/DO-LOOP/PROC zasob-
nika cislo - takze neboli aktivovane podprogramy ani DO-
cykly.W Mising DEF PROC PROC, END PROC
(Chyba DEF PROC) [
PROC sa zavola bez toho, aby bola prislusna procedura
zadefinovana, alebo sa najde END PROC bez DEF PROC.X No END PROC DEF PROC
(Chyba END PROC)
Program skusa preskocit cez definiciu procedury, ale ne-
nasiel END.Y Too hard RENUM
(Prilis tazke)
Pri precislovani programu sa nasiel riadok, v ktorom sa
skok pocita (napr. GOSUB 500 * a). I N E I N F O R M A C I E
---------------------------Tu nasleduje par dalsich programov. Nie su to priklady vysokeho
programatorskeho umenia,ale budu vam demonstrovat, ako velmi vam
Beta Basic pomoze pri vyvoji vlastnych programov.
ROLL Demo-Program
-----------------
Tento program ukazuje, ze ROLL obsah obrazovky v skutocnosti ne-
nici, iba ho preformuje.
10 LIST : LET W = 8+8+8
20 PLOT 90,70
30 INK 2 : GOSUB 200
40 FOR N=1 TO W
50 ROLL 5; 30,150; 8,80
60 ROLL 7; 50,170; 2,120
70 NEXT N
80 FOR N=1 TO W
90 ROLL 6; 50,170; 2,120
100 ROLL 8; 38,150; 8,80
110 NEXT N
120 LET W = W/8 : IF W >= 1 THEN GOTO 40
130 PLOT 90,70
140 INK 0 : GOSUB 200
150 STOP
200 DRAW OVER 1; 30,20,4977 : RETURN
DRAW Demo-program
-----------------
Ukazuje rozumne pouzitie vlastnej chybovej rutiny.
10 ON ERROR 110
20 BORDER 0 : PAPER 0 : INK 6 : CLS
30 DO
35 LET X = 30
40 LET Y = 50
50 INPUT "Z - (STOP PRI Z=999) ";Z
60 CLS
70 PRINT AT 21,0;Z
75 PLOT 110,80
80 DRAW X,Y,Z
90 LOOP UNTIL Z=999
100 CLS : LIST : STOP
110 IF error=11 AND line=80 THEN RETURN : ELSE POP : CONTINUE
Skuste zadat ako Z napr.: 451, 777, 1E8 atd.
Program pre hru
---------------
Len zaciatok - program mozete lubovolne rozsirovat.
5 REM VARIMAZE 1983 UWE FISCHER
10 PROC init and instruct
20 PROC set maze
30 DO : PROC get move
40 : PROC change maze
50 : PROC prekazka
60 : PROC skore
65 LOOP UNTIL end
70 PROC check win
80 PROC fini
99 ALTER FLASH 1 TO FLASH 0 : STOP
110 DEF PROC init and instruct
115 LET z=22528 : LET sc=0 : LET end=sc
LET zlty=48 : LET cerveny=16 : LET biely=56
118 DIM r(8,5) : REM vytvor 40 policok
120 FOR h=1 TO 8 : FOR v=1 TO 5 : LET r(h,v)=INT(RND*2) : NEXT
v : NEXT h
130 PRINT AT 8,10; "VARIMAZE"
131 PRINT AT 12,2; "Posunuj ""+"" pomocou tlacitok "" 5 az 8 ."
''" Cerveny keks dava 10 bodov - " ' " zlty keks je cisty
zisk"
140 PAUSE 500
150 BORDER 5 : PAPER 5 : CLS : PAPER 7 : CLS
160 PRINT AT 20,0; PAPER 5; FN S$(64," ")
170 END PROC E N D
================================================================
Prelozil: RNDr.Jan FTACNIK, Klub vypoctovej techniky Bratislava
================================================================