Kama Basic I ------------ Fue escrito por L. Karrach bajo el sello eslovaco Kamasoft en 1988. Es una coleccion de nuevos comandos para el Spectrum para manejar efectos graficos y de sonido. El programa al cargar, ejecuta el programa de demostración que ofrece dos opciones: 1- DEMO y 2- NAVOD, es decir, correr el demo o ver una lista explicativa de los nuevos comandos ofrecidos. Sintaxis: LPRINT USR comando {parametros} Comandos: SOUND, FILL, NOTE, CLANG, BRIM, ONERROR, WINDOW, CLEAN, VANISH, DISC, SCROLL, TRANS, SIT, EXCHAN, MOTION, ROUND, WATCH, ALARM, RESCALE, ROTARE, ORIENT, DIMENS, TAPETA, INCR. Nota: estas ordenes no pueden ser ejecutadas con RANDOMIZE, debe usarse solo LPRINT. Estos comandos son en realidad nombres de variables asociados a las rutinas en C.M. para ser ejecutados con LPRINT USR. Antes de poder ser usados deben ser definidos en la primera línea del pograma que debe ser convertida a 0, ó tomada del listado del DEMO: 0 CLEAR 61999: LET W=62000: LET SOUND=W: LET FILL=W+72: LET NOTE=W+3: LET CLANG=W+6: LET BRIM=W+9: LET ONERROR=W+12: LET WINDOW=W+15: LET CLEAN=W+18: LET VANISH=W+21: LET DISC=W+24: LET SCROLL=W+27: LET TRANS=W+30: LET SIT=W+33: LET EXCHAN=W+36: LET MOTION=W+39: LET ROUND=W+42: LET WATCH=W+45: LET ALARM=W+51: LET RESCALE=W+54: LET ROTARE=W+57: LET ORIENT=W+60: LET DIMENS=W+63: LET TAPETA=W+66: LET INCR=W+69 Window Sintaxis: LPRINT USR WINDOW, X, A, B, C, D Define la ventana X, con las coordenadas fila A, columna B, con un largo C, y ancho D. Ejemplo: LPRINT USR WINDOW,14,9,3,26,3 Clean Sintaxis: LPRINT USR CLEAN, X Borra la ventana X. Ejemplo: LPRINT USR CLEAN,1 Incr Sintaxis: LPRINT USR INCR, X, Y, B, C, A$ Por INCREMENTO. Imprime A$ en las coordenadas (x, y), con ancho B, y altura C. Manipulando el ancho y la altura se puede imprimir en pantalla textos ampliados o reducidos. Ejemplo: LPRINT USR INCR,0,7,3,1," 1988 " Disc Sintaxis: LPRINT USR DISC, X, Y Da a la ventana X los atributos segun el valor de Y (0 - 255). Ejemplo: LPRINT USR DISC,1,A Trans Sintaxis: LPRINT USR TRANS, X, Y, Z Transfiere contenido de ventana X a la direccion Y si Z=1. Lo opuesto si Z=0. Ejemplo: LPRINT USR TRANS,7,60000,1 Sit Sintaxis: LPRINT USR SIT, X, Y, Z Por SET (fijar). Coloca la ventana X en la fila Y, columna Z de la pantalla. Clang, Sound, Note Estas ordenes sirven para la generación de efectos de sonido Sintaxis: LPRINT USR clang, a, b, c, d LPRINT USR sound, b, a, m, n LPRINT USR note, a, frec.tono_1, frec.tono_2 donde: a = duración y b = frecuencia Ejemplos: LPRINT USR CLANG,65,367,378,25 LPRINT USR SOUND,40,18,50,1 LPRINT USR NOTE,230,G*20,103 Brim Sintaxis: LPRINT USR BRIM, x, y, z Permite generar efectos en el borde (brim), siendo Y hasta 255 y Z = 0 - 7. Ejemplo: LPRINT USR BRIM,100,RND*10+1,RND*7 Fill Sintaxis: LPRINT USR FILL, X genera un interesante rellenado de la ventana X Ejemplo: LPRINT USR FILL,11 Watch Sintaxis: LPRINT USR WATCH, X, Y; A, B, C Muestra un reloj en las coordenadas X, Y; con A-hora, B-minuto y C-segundo. (A, B y C - deben ser tipeados en ese orden); RAND. USR 62048 desactiva el reloj. PEEK para conocer: 65272(segundos), 65273(minutos) y 65274(hora). Es el equivalente a la orden CLOCK del BetaBasic. Ejemplo: LPRINT USR WATCH,7,11;0,0,0 Alarm Sintaxis: LPRINT USR ALARM, A, B, C; X Salta a la linea X en cuanto el reloj marque: A-hora, B-minuto, y C-segundo. Es el equivalente a la sentencia ON TIMER GOSUB del Basic Microsoft. On error Sintaxis: LPRINT USR ONERROR, x Si se detecta un ERROR entonces salta a la linea X. Ejemplo: LPRINT USR ONERROR,9900 Round Sintaxis: LPRINT USR ROUND, A, B, C Mueve el contenido de la ventana A, C pixeles, siendo B la direccion: B = 1 derecha, B = 2 para izquierda, B = 3 para arriba, B = 4 abajo. Ejemplo: LPRINT USR ROUND,5,4,2 Scroll Sintaxis: LPRINT USR SCROLL, x, y, z similar a ROUND pero el contenido de la ventana desaparece permanentemente. Ejemplo: LPRINT USR SCROLL,2,1,2 Motion Sintaxis: LPRINT USR MOTION, A, B mueve toda la ventana A en la direccion B. Exchan Sintaxis: LPRINT USR EXCHAN, X, Y intercambia los contenidos entre las ventanas X e Y. Ejemplo: LPRINT USR EXCHAN,8,9 Rescale Sintaxis: LPRINT USR RESCALE, X, Y, Z Re escala el contenido de la ventana X y loa guarda en la direccion Z. Y = un valor 1 - 3 para ampliar o reducir la escala. Ejemplo: LPRINT USR RESCALE,8,1,58000 Vanish Sintaxis: LPRINT USR VANISH, X, Y Y = un valor 1 - 4 para especificar el tipo de borrado del contenido de la ventana X. Ejemplo: LPRINT USR VANISH,8,1 Rotare Sintaxis: LPRINT USR ROTARe, X, Y, Z Hace que el contenido de la centana X rote segun Y, y lo almacena en la direccion Z. Invierte la figura poniendola cabeza abajo como uno de sus efectos. Ejemplo: LPRINT USR ROTARE,7,F,60000 Orient Sintaxis: LPRINT USR ORIENT, X, Y, Z Almacena en Z, el contenido de una ventana X y la hace dar vueltas segun el valor de Y. Ejemplo: LPRINT USR ORIENT,7,60000 Dimens Sintaxis: LPRINT USR DIMENS, X, Y Da dimensionalidad Y a las letras dentro de una ventana X. Ejemplo: LPRINT USR DIMENS,7,4 Tapeta Sintaxis: LPRINT USR TAPETa, X, Y, Z Literalmente significa tapiz o wallpaper, sirve para definir el fondo de una ventana. X es la ventana, Y la dirección (USR "A") donde se guarda la matriz definida de 8 * 8. Z = 1 genera efecto AND, Z = 2 provoca un efecto OR. Ejemplo: LPRINT USR TAPETA,7,USR "A",2 El sigte es el fragmento del programa DEMO del Kamabasic, en el que se pueden ver, precisamente los comandos con su sintaxis explicados en eslovaco: 1 REM {f1}KAMA BASIC BY KAMASOFT{f0} 1010 PRINT "{vi}WINDOW{vn} X,A,B,C,D-DEFINUJE OKNO CISLO X,KTORE JE NA RIADKU A, STLPCI B,MA SIRKU C,HRUBKU D." 1020 PRINT '"{vi}CLEAN{vn} X-VYMAZE OKNO S CISLOM X" 1030 PRINT '"{vi}INCR{vn} X,Y,B,C,A$-VYPISE RETAZEC A$ NA SURADNICE (X,Y),B,C -KOEFICIENTY ZVACSENIA V SIRKE A VYSKE" 1040 PRINT '"{vi}DISC{vn} X,Y-V OKNE X NASTAVI ATTRIBUTY NA HODNOTY Y" 1050 PRINT '"{vi}TRANS{vn} X,Y,Z-PRE Z=1 ULOZI OKNO X NA ADRESU Y,PRE Z=0 Z ADRESY Y ULOZI OKNO X NA OBRAZOVKU" 1060 PRINT '"{vi}SIT{vn} X,Y,Z-OKNO X PRESUNIE NA RIADOK Y,STLPEC Z" 1070 PRINT '"{vi}CLANG,SOUND,NOTE{vn}-ZVUKOVE EFECTY" 1080 PRINT '"{vi}BRIM{vn}-BORDER EFECT" 1090 PRINT '"{vi}FILL{vn} X-PREVEDIE ZAUJIMAVY FILLING OKNA X" 1100 PRINT '"{vi}WATCH{vn} X,Y;A,B,C-HODINKY,KTORE BUDU ZOBRAZOVANE NA RIADKU X,STLPCIY;A-HODINY,B-MINUTY,C-SEKUNDY.(A,B,C-HODNOTY MUSIA BYT V DAA TVARE); RAND.USR 62048 RUSI HODINY;PRINT PEEK 65272-SEC.,PEEK 65273-MIN.,PEEK 65274-HOD." 1110 PRINT '"{vi}ALARM{vn} A,B,C;X-AK HODINY DOSIAHNU CAS:A-HOD.,B-MIN.,C-SEK. =>BUDE PREVEDENY SKOK NA RIADOK X" 1120 PRINT '"{vi}ON ERROR{vn} X-AK NASTANE CHYBA =>SKOK NA RIADOK X" 1130 PRINT '"{vi}ROUND{vn} A,B,C-SCROLLUJE OKNO A SLALE DOOKOLA O C BODOV. PRE B=1 DOPRAVA,B=2 DOLAVA,B=3 HORE,B=4 DOLE" 1140 PRINT '"{vi}SCROLL{vn} AKO ROUND,ALE OKNO ODIDE NATRVALO" 1150 PRINT '"{vi}MOTION{vn} A,B-OKNO A KOMPLETNE POSUNIE V SMERE B" 1160 PRINT '"{vi}EXCHAN{vn} X,Y-VYMENI NAVZAJOM OKNO X A Y" 1170 PRINT '"{vi}RESCALE{vn} X,Y,Z-OKNO X PRE Y=1 ZVACSI DO SIRKY(POZOR!-PRI NEPARNEJ SIRKE OKNA VZNIKNE SKRESLENIE),PRE Y=2 DO VYSKY,PRE Y=3 HO ZMENSI A ULOZI NA ADRESU Z" 1180 PRINT '"{vi}VANISH{vn} X,Y-OKNO X MIZNE.Y=1-4 DRUH MIZNUTIA" 1190 PRINT '"{vi}ROTARE{vn} X,Y,Z-OKNO X OTOCI O Y STUPNOV.Z-ADRESA OTACANEHO OKNA V PAMATI" 1200 PRINT '"{vi}ORIENT{vn} X,Y-OKNO X,KTORE JE NA ADRESE Y PREVRATI HORE NOHAMI" 1210 PRINT '"{vi}DIMENS{vn} X,Y-OKNO X NATIAHNE DO PRIESTORU O Y BODOV" 1220 PRINT '"{vi}TAPETA{vn} X,Y,Z-VYPLNA OKNO X 8*8 MATICOU,KTORA JE NA ADRESE Y(USR"A").Z=1 MATICA BUDE AND PODKLADOM,Z=2 MATICA BUDE OR PODKLADOM" Francisco Leon zx_if1@hotmail.com