Vo vseobecnosti sa hovori, ze basic, a najme interpretovany
basic je velmi pomaly jazyk a ze robit v nom nejake rychle a
plynule pohyby alebo animacie je proste nemozne.
Ale je to naozaj tak ??? Nasledujuci program vam ukaze, ze aj
basic je schopny animacnych efektov beziacich v realnom case pod
snimkovou frekvenciou zobrazovania televizneho obrazu - a toto
vsetko bez pouzitia akehokolvek kompilera.
Program sa spusta od riadku 20. Po spusteni si mozete vybrat
jeden zo styroch efekov, ktore program dokaze vytvorit. Potom si
program chvilku vytvara datove struktury potrebne k tomuto
efektu a po ich vytvoreni uz nebude otalat a efekt spusti.
V programe su koli efektivnosti pouzite rozne zname i menej
zname programatorske finty. Vam, ktori ste menej skuseni sa moze
na niektorych miestach v programe zdat, ze ide o tlaciarensky
preklep, alebo dokonca o hrubu programatorsku chybu, ale zdanie
moze klamat ! Napriklad na riadku 140 je "minus" namiesto
ktoreho by na prvy pohlad malo byt "rovna sa". Ale nema, pretoze
ten "minus" je tam uplne spravne.
10
PAUSE 1: PRINT z$;: FOR a=130 TO b: PAUSE 1: POKE 23676,a: PRINT z$;:
NEXT a: PAUSE 1: POKE 23676,a: PRINT z$;: POKE 23676,a+1: GO TO 10
20
BORDER 6: POKE 23693,56: POKE 23675,0: CLEAR 33279
30
DIM z$(18): LET r=18: LET s=14: RESTORE 50
40
FOR a=1 TO 18: READ b: LET z$(a)=CHR$ b: NEXT a
50
DATA 22,r,s,144,145,146,22,r+1,s,147,148,149,22,r+2,s,150,151,152
60
CLS : INPUT "Vyber si efekt 1,2,3 alebo 4:";e
70
FOR z=33280 TO 33280 STEP 256: PRINT AT 5,5;"[Maly moment]"
80
PLOT 79,79: DRAW 25,0: DRAW 0,25: DRAW -25,0: DRAW 0,-25
90
POKE 16553,8: POKE 16809,16
100
IF e=1 THEN GO TO 150
110
IF e=2 THEN GO TO 180
120
IF e=3 THEN GO TO 210
130
IF e=4 THEN GO TO 230
140
IF e-1 THEN GO TO 60
150
FOR d=.1 TO 2*PI STEP .1: FOR e=0 TO 2*PI STEP PI/7
160
PLOT 91.5+10*SIN e,91.5+10*COS e: NEXT e: PLOT 91.5,91.5
170
DRAW 12*SIN d,12*COS d: GO SUB 320: NEXT d: GO TO 260
180
FOR d=0 TO 7: FOR e=50+d TO 100+d STEP 8: PLOT e,80
190
DRAW 24,24: PLOT e+2,80: DRAW 24,24: NEXT e: GO SUB 320
200
NEXT d: GO TO 260
210
FOR d=0 TO 3.5 STEP .5: FOR e=d TO d+16 STEP 4
220
CIRCLE 91.5,91.5,e: NEXT e: GO SUB 320: NEXT d: GO TO 260
230
FOR d=.1 TO PI STEP PI/30: LET x=40*SIN d: LET y=40*COS d
240
FOR e=-.5 TO .5 STEP .1: PLOT 91.5-y*e-x/2,91.5+x*e-y/2
250
DRAW x,y: NEXT e: GO SUB 320: NEXT d: GO TO 260
260
INK 2: CLS : PRINT AT 16,10;"Uz to bezi!": POKE 20499,8
270
POKE 20459,36: POKE 20491,24: POKE 20466,36: POKE 20498,24
280
PRINT #0; INK 2;" Restart: BREAK & RUN 20": INK 5
290
PLOT 108,4: DRAW 31,0: DRAW 0,31: DRAW -31,0: DRAW 0,-31
300
PLOT 109,5: DRAW 29,0: DRAW 0,29: DRAW -29,0: DRAW 0,-29
310
INK 0: LET b=z/256-3: GO TO 10
320
FOR m=z TO z: FOR a=18474 TO 18538 STEP 32
330
FOR b=a TO a+2: FOR c=b TO b+1792 STEP 256: POKE m,PEEK c
340
POKE c,0: NEXT m: NEXT c: NEXT b: NEXT a: NEXT z: RETURN
350
SAVE "03.15" LINE 20
Tento program spravne funguje na vsetkych typoch pocitacov,
ktore maju ten isty videoproesor ULA ako originalne ZX Spectrum
48k (ZX Spectrum 48k, ZX Spectrum+, Delta a Didaktik Gama).
Funguje aj na vsetkych originalnych stodvadsatosmickach (128k,
+2, +2A a +3), ale iba v 48 basicu pretoze 128 alebo +3 basic ma
pomalsi interpreter a niektore casovo narocne casti programu by
uz nestihli bezat synchronne so snimkovou frekvenciou
televizora.
Program bez problemov funguje aj na Didktiku M a Kompakt.
Vo vecsine emulatorov ZX Spectra na pocitacoch PC tento program
koli nevhodnemu casovaniu nebezi spravne.
Diakritika v programe je navrhnuta na originalny znakovy subor
zo ZX Spectra. Iny znakovy subor nesposobi ziadnu vaznu chybu,
len vypisy budu trochu "neupravene".