Articulo de referencia

Color BÁSICO

[https://archive.org/stream/80-U.S._Volume_IV_Number_3_1981-05_80-Northwest_Publishing_US#page/n9/mode/2up 80-U-S. Interviews Bill Gates of Microsoft], 80-U.S. - Volume IV Numbe...

Color BASIC es la implementación de Microsoft BASIC que se incluye en la ROM de las computadoras a color Tandy/Radio Shack TRS-80 fabricadas entre 1980 y 1991. BASIC (Beginner's All-purpose Symbolic Instruction Code) es un lenguaje de alto nivel con una sintaxis sencilla que facilita la escritura de programas simples. Color BASIC es interpretado , es decir, se decodifica durante su ejecución.

Fondo

Disco con color extendido BASIC 2.1 en un ordenador Tandy Color Computer 3

El núcleo de Color BASIC fue Microsoft BASIC-69, que Tandy licenció de Microsoft. Color BASIC 1.0 se lanzó con la Color Computer TRS-80 original de 4k en 1980. Reside en 8k bytes de ROM y es responsable de todas las tareas de mantenimiento del sistema. Esto incluye la inicialización del hardware, la gestión de memoria , el procesamiento de interrupciones , etc. Como la mayoría de las implementaciones de BASIC, cada línea de código comienza con un número de línea y consta de una o más instrucciones con variables y operadores. Se requieren 16k de memoria para el siguiente nivel de BASIC, Extended Color BASIC ("ECB"). Extended BASIC es necesario para el controlador de disquete , que a su vez proporciona Disk Extended Color BASIC ("DECB"). Existen emuladores de Color Computers que ejecutan este intérprete y otros para ordenadores modernos, algunos de los cuales requieren un archivo de "instantánea" de la máquina física. [ 2 ]

Variables

Color BASIC reconoce un tipo de variable numérica y variables de cadena . En Color BASIC, los dos primeros caracteres de los nombres de las variables son importantes. El primer carácter debe ser una letra, mientras que el segundo puede ser una letra o un número. Las variables de cadena se indican añadiendo un signo de dólar ($) después del nombre.

Ejemplos

A = 5 A$ = "ESTA ES UNA CADENA" K7 = 10 BB$ = "¡HOLA!" ZZ = 1.54

Las variables numéricas solo tienen un tipo: una implementación de punto flotante binario. Cada variable numérica utiliza 5 bytes de memoria y su valor puede estar comprendido entre -1E+38 y 1E+37.

A diferencia de la mayoría de las implementaciones de Microsoft BASIC, Color BASIC requiere que el usuario reserve espacio para variables de cadena mediante la instrucción CLEAR.

También se admiten matrices multidimensionales con variables numéricas y de cadena. En el caso de una matriz, la dirección del elemento se encierra entre paréntesis:

A ( 1 ) = 1 A$ ( 1 ) = "LIBROS"

Las dimensiones múltiples están separadas por comas.

A ( 1 , 3 ) = 4 A$ ( 2 , 2 ) = "XYZ123"

Operadores y símbolos

Color BASIC proporciona varios operadores tanto para operaciones matemáticas como, en menor medida, para operaciones con cadenas de caracteres.

El signo + se puede usar para concatenar cadenas o para realizar sumas matemáticas.
- se utiliza para restar
* se utiliza para la multiplicación
/ se utiliza para la división

Los paréntesis ( ) se utilizan para anular el orden matemático de las operaciones.

AND se utiliza para operaciones lógicas 'y'.
OR se utiliza para operaciones lógicas 'o'.
NOT se utiliza para operaciones lógicas de 'negación'.

Para realizar las pruebas, se utilizan los siguientes operadores:

= es igual a
> es mayor que
< es menor que
>= significa mayor o igual que (también se acepta =>)
<= significa menor o igual que (también se acepta =<)
<> no es igual a (también >< es aceptable)

Otros símbolos utilizados en BASIC:

" " indica que los datos de cadena son constantes (estáticos)
: separa varios comandos en una sola línea de programa.
Cuando se encuentra un punto y coma en una función PRINT, la salida permanecerá en la misma línea.
Cuando se encuentra una coma en una función PRINT, se salta a la siguiente columna.

Llave

El parámetro `num` indica que se requiere una expresión numérica. Puede ser un número fijo, una variable u otra operación o función que devuelva una cantidad numérica.

str indica que se requiere una expresión de cadena. Puede ser un valor de cadena estático (entre comillas), una variable de cadena u otra función o expresión que devuelva una cadena de caracteres.

El número de dispositivo indica un dispositivo. Por defecto, se asume el dispositivo 0 (pantalla y teclado). En Color BASIC, el programador tiene a su disposición los dispositivos #-1 (cassette) y #-2 (impresora).

Modo de edición

Si cometes un error al escribir una línea, puedes volver a escribirla desde cero (o DEL) o puedes EDITARLA. En el modo EDITAR, obtienes una reimpresión de la línea y una segunda copia que puedes mover con la barra ESPACIADORA a través de los caracteres. No puedes usar las teclas de flecha. Retroceso te lleva a la izquierda, pero no borra realmente el contenido del búfer. 'i' te pone en modo de inserción. Al presionar Intro sales de él. 'c' cambia un carácter, 'd' borra un carácter. 'x' te lleva al final de la línea, permitiéndote extenderla. 'l' vuelve a dibujar la línea. 's' busca la siguiente instancia de un carácter. Para los comandos 's', 'c' y 'd' también puedes ingresar un número (#) antes de presionar cualquiera de ellos, lo que hará: 's' - buscar la instancia # del carácter, 'c' - te permite cambiar # caracteres, 'd' - borrar # cantidad de caracteres.

Funciones

ABS(num)
devuelve el valor absoluto de num
ASC(str)
devuelve el código ASCII del primer carácter en str
CHR$(num)
devuelve un único carácter de cadena con el código ASCII num
EOF(device number)
Devuelve 0 si el archivo contiene datos, o -1 si se encuentra al final del archivo.
INKEY$
Devuelve un carácter si se ha pulsado una tecla del teclado, o null si no se ha pulsado ninguna.
INT(num)
devuelve la parte entera de num
INSTR(startpos,search str,target str)
Busca la primera cadena en la cadena de destino. startpos es opcional.
JOYSTK(num)
Devuelve la posición del eje del joystick (0-3) con un valor de 0 a 63.
LEFT$(str,num)
Devuelve los primeros ("izquierdos") num caracteres de la cadena str
LEN(str)
Devuelve la longitud (en caracteres) de la cadena str.
MEM
Devuelve la memoria libre disponible en bytes.
MID$(str,start num,length num)
Devuelve una subcadena de la cadena ` str` que comienza en la posición `start` `num` y tiene una longitud de `num` caracteres. También se puede reasignar añadiendo `="newvalue"`.
PEEK(num)
Devuelve el valor de la ubicación de memoria num (0-65535)
POINT(x num,y num)
Devuelve el color del punto semigráfico en la posición x numm (0-63) e y num (0-31).
RIGHT$(str,position num)
Devuelve la parte final ("derecha") de la cadena str que comienza en la posición de carácter num
RND(number)
devuelve un número aleatorio (entero) entre 1 y num
SGN(num)
Devuelve el signo de un número num , 1 si es positivo, -1 si es negativo, 0 si es cero.
SIN(num)
Devuelve el seno de num en radianes.
STR$(num)
devuelve una cadena del número num
USR(num)
Se llama a una subrutina en lenguaje máquina cuya dirección está almacenada en las ubicaciones de memoria 275 y 276. Se pasa el valor num a la rutina y se asigna un valor de retorno cuando la rutina finaliza.

Comandos

AUDIO [ON|OFF]
Conecta o desconecta el audio del casete del sonido del televisor.
CLEAR variable space[,highest memory location]
Reserva memoria para variables de cadena y, opcionalmente, para un programa en lenguaje máquina.
CLOAD ["name"]
Carga el programa BASIC desde el casete. Si no se especifica ningún nombre, se carga el siguiente programa.
CLOADM ["name"]
Carga el programa en lenguaje máquina desde el casete. Si no se especifica ningún nombre, se carga el siguiente programa.
CLOSE [device number]
cierra un dispositivo (en Color BASIC esto solo puede ser #-1, el casete)
CLS(num)
Borra la pantalla. Se puede especificar un número de color opcional (0-8).
CONT
Continúa un programa después de presionar INTERRUPCIÓN o una instrucción DETENER.
CSAVE ["name"]
guarda un programa BASIC en un casete con nombre opcional
DATA var,var,var...
Almacena datos en un programa BASIC para su recuperación con el comando READ.
DIM variable(dimension[,dimension 2,...]
dimensiona una matriz y reserva espacio de memoria para ella
END
indica el final de un programa BASIC
EXEC
[ dirección de memoria ] ejecuta el programa en lenguaje máquina en la dirección de memoria . Si no se especifica ninguna, se utiliza la dirección de ejecución del programa cargado desde la cinta.
INPUT [device number] [{prompt text};] variable [,variable 2, variable n]
Espera la entrada del dispositivo número . Si no se especifica, se asume el dispositivo 0 (teclado). Opcionalmente, se puede imprimir un mensaje en la pantalla para la instrucción de entrada.
LIST [starting line] - [ending line]
Enumera las líneas de tu programa. Se puede omitir el inicio o el final, o si se omiten ambos, se mostrará el programa completo.
LLIST [starting line] - [ending line]
Funciona como LIST, pero imprime en la impresora.
MOTOR [ON|OFF]
Enciende o apaga el motor del casete.
NEW
Borra el contenido de la memoria (programa y variable).
ON {num} GOSUB line 1, line 2, ... line n
evalúa la expresión num y llama a la subrutina num que aparece en la lista.
ON (num) GOTO line 1, line 2, ... line n
evalúa la expresión num y salta a la num- ésima línea listada
OPEN "[I|O]",device number[,"filename"]
abre un dispositivo para la comunicación
POKEmemory address, data
Escribe datos (0-255) en la dirección de memoria (0-65535).
PRINT device number,expression
Imprime datos en el dispositivo especificado. Si se omite, se asume #0 (pantalla).
PRINT @{screen position} expression
Funciona como PRINT, pero imprime en la ubicación especificada (0-511).
READ variable[,variable,...]
Lee la(s) siguiente(s) variable(s) del programa BASIC incrustado con instrucciones DATA.
RENUM NewStart num, OldStart num, Increment num
Renumera cada línea (opcional Oldstart) (con opcional NewStart) del programa  : en múltiplos de (opcional num). : Si se omiten todas las opciones, la lista usará 10 para el incremento.  : Con un programa de 10 líneas, con separación de 10. 10,20,30,40,50,60,70,80,90,100: renum 100, 40, 2. Esto renumerará, comenzando en la línea número 40. Cambiará todos los números de línea que siguen al 40 inclusive por 2. Las líneas ahora son 10,20,30,100,102,104,106,108,110, 112
RESET(x,y)
Establece el píxel semigráfico en la ubicación x (0-63) e y (0-31) en negro.
RESTORE
restablece el puntero READ a la primera instrucción DATA.
RETURN
retornos de una subrutina
RUN num
Ejecuta el programa BASIC, opcionalmente, en el número de línea especificado.
SET(x,y,color)
Establece el píxel semigráfico en la ubicación x (0-63) y (0-31) al color (0-8).
SKIPF ["filename"]
omite los programas BASIC en la cinta hasta que se encuentra el nombre del programa especificado.
SOUND tone,duration
emite un tono con frecuencia (1-255) y duración (1-255)
STOP
provoca que el programa deje de ejecutarse.
TAB(column)
tabulaciones a la columna especificada (se usa con IMPRIMIR)
VAL(str)
Devuelve el valor numérico de una cadena que contiene un número en formato de cadena.

Flujo de control

GOSUB{line number}
llama a la subrutina en el número de línea especificado
GOTO{line number}
Salta al número de línea especificado del programa.
IF {test} THEN {command(s)} [ELSE {command(s)}]
Realiza una prueba condicional. Si la prueba es verdadera, se ejecutan los comandos; de lo contrario (ELSE), se ejecutan otros comandos. Si no se especifica ELSE y la prueba es falsa, se ejecutará la siguiente línea del programa.
PARA {num} = {num} HASTA {num} [PASO {num} ] ... SIGUIENTE (num)
crea un bucle donde la variable numérica (num) va desde el número inicial hasta el número final en incrementos de número (STEP). Si se omite step, se asume 1.

Mensajes de error

/0
división por cero
AO
El archivo especificado ya está abierto.
BS
Subíndice incorrecto. El subíndice está fuera del rango de DIM.
CN
No se puede continuar (ver comando CONT)
DD
intentar redimensionar una matriz
DN
Número de dispositivo no válido
DS
Error de instrucción directa (el programa no tiene números de línea)
FC
Llamada a función ilegal: la función contiene un valor fuera de rango.
FD
Datos de archivo incorrectos: intento de leer un número en un valor de cadena, etc.
FM
Modo de archivo incorrecto, intento de INTRODUCIR datos en un archivo abierto para SALIDA, etc.
ID
comando ilegal directo: el comando especificado solo se puede ejecutar en un programa
IE
Entrada posterior al final del archivo. Ver EOF
IO
error de entrada/salida
LS
cadena larga: las cadenas solo pueden tener 255 caracteres.
NF
SIGUIENTE sin PARA
NO
El archivo no se puede abrir.
OD
Sin datos: intento de leer más allá del último dato del programa.
OM
fuera de memoria
OS
Espacio de cadena agotado: consulte CLEAR
OV
Desbordamiento: el número está fuera de rango.
RG
REGRESO sin GOSUB
SN
error de sintaxis
ST
La operación con cadenas es demasiado compleja.
TM
Error de coincidencia de tipos (A$=3, A="CAT")
UL
Intentar usar GOTO o GOSUB para ir a una línea que no existe.

Subrutinas ROM documentadas

En la ROM de Color BASIC hay disponibles algunas subrutinas para programas en lenguaje máquina que pueden utilizarse para programación de propósito general.

POLCAT
dirección [$A000]: sondea el teclado en busca de un carácter
CHROUT
dirección [$A002]: imprime un carácter en la pantalla o dispositivo.
CSRDON
dirección [$A004]: inicia el casete y se prepara para la lectura
BLKIN
dirección [$A006]: lee un bloque del casete
BLKOUT
dirección [$A008]: escribe un bloque en el casete
JOYIN
dirección [$A00A]: lee los valores del joystick

Referencias

  1. 80-US. Entrevistas a Bill Gates de Microsoft , 80-US - Volumen IV Número 3 (1981-05) (80-Northwest Publishing) (EE. UU.), Página 8. Más recientemente, completó el trabajo en la computadora a color de Radio Shack. Está muy entusiasmado con el paquete Extended Color Basic que escribió.
  2. DESASTRE
Notas
  • Introducción a Color BASIC , 1980, Tandy Corporation. Publicación n.° 8749266
  • Sistema de discos para computadora en color (Tandy) , 1981, Tandy Corporation. Publicación n.° 8749470-BCo
  • Introducción a Extended Color BASIC , 1984, Tandy Corporation. Publicación n.° 811013700A
  • Color Computer 3 Extended Basic (Tandy) , 1986, Tandy Corporation. Publicación n.° 81101910A
Obtenido de " https://en.wikipedia.org/w/index.php?title=Color_BASIC&oldid=1255922348 "