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
================================================================