Cor BASIC - Color BASIC
| Projetado por | Bill Gates |
|---|---|
| Desenvolvedor | Microsoft |
| Apareceu pela primeira vez | 1980 |
| Versão estável | Color BASIC 1.3 (1982) Extended Color BASIC ("ECB") (1984) Disk Extended Color BASIC ("DECB") (1984) |
| Plataforma | TRS-80 Color Computer |
Color BASIC é a implementação do Microsoft BASIC que está incluído no ROM dos computadores Tandy / Radio Shack TRS-80 Color fabricados entre 1980 e 1991. BASIC (Beginner's All-purpose Symbolic Instruction Code) é uma linguagem de alto nível com sintaxe simples que torna mais fácil escrever programas simples. O Color BASIC é interpretado , ou seja, decodificado à medida que é executado.
Fundo
O núcleo do Color BASIC era o Microsoft BASIC-69 que a Tandy licenciou da Microsoft. O Color BASIC 1.0 foi lançado com o computador em cores TRS-80 original de 4k em 1980. Ele reside em 8k bytes de ROM e é responsável por todas as tarefas de 'manutenção' do sistema. Isso inclui inicialização de hardware, gerenciamento de memória, processamento de interrupção, etc. Como a maioria das implementações do BASIC, cada linha de código começa com um número de linha e consiste em uma ou mais instruções com variáveis e operadores. 16k de memória são necessários para o próximo nível de BASIC, Extended Color BASIC. ("ECB") Extended BASIC é necessário para a controladora de disquete, que fornece a você Disk Extended Color BASIC. ("DECB") Emuladores dos Computadores Coloridos que executam este interpretador e os outros estão disponíveis para computadores modernos, alguns dos quais requerem um arquivo "instantâneo" da máquina física.
Variáveis
Color BASIC entende um tipo de variável numérica e variáveis de string. Nomes de variáveis em Color BASIC têm os primeiros dois caracteres significativos. O primeiro caractere do nome da variável deve ser uma letra. O segundo pode ser uma letra ou um número. Variáveis de string são indicadas adicionando um cifrão ($) após o nome da variável.
Exemplos
A=5
A$="THIS IS A STRING"
K7=10
BB$="HELLO!"
ZZ=1.54
Variáveis numéricas têm apenas um tipo, uma implementação de ponto flutuante binário. Cada variável numérica usa 5 bytes de memória e pode estar no intervalo de -1E + 38 a 1E + 37.
Ao contrário da maioria das implementações do Microsoft BASIC, Color BASIC requer que o usuário reserve espaço para variáveis de string por meio da instrução CLEAR.
Matrizes multidimensionais também são suportadas com variáveis numéricas e de string. No caso de uma matriz, o endereço do elemento é colocado entre parênteses:
A(1)=1
A$(1)="BOOKS"
Múltiplas dimensões são separadas por vírgulas
A(1,3)=4
A$(2,2)="XYZ123"
Operadores e símbolos
O Color BASIC fornece vários operadores para operações matemáticas e, em menor grau, para operações de string.
- + pode ser usado para concatenar strings ou para adição matemática
- - é usado para subtração
- * é usado para multiplicação
- / é usado para divisão
Os parênteses () são usados para substituir a ordem matemática de operação
- AND é usado para operações lógicas 'e'
- OR é usado para operações lógicas 'ou'
- NOT é usado para operações lógicas 'não'
Para teste, os seguintes operadores são usados:
- = é igual a
- > é maior que
- <é menor que
- > = é maior ou igual a (também => é aceitável)
- <= é menor ou igual a (também = <é aceitável)
- <> não é igual a (também> <é aceitável)
Outros símbolos usados no BASIC:
- "" indica que os dados da string são constantes (estáticos)
- : separa vários comandos em uma única linha de programa
- Um ponto e vírgula, quando encontrado em uma função PRINT, fará com que a saída permaneça na mesma linha
- Uma vírgula, quando encontrada em uma função PRINT, irá tabular para a próxima coluna
Chave
num indica que uma expressão numérica é necessária. Pode ser um número fixo, uma variável ou outra operação ou função que retorna uma quantidade numérica.
str indica que uma expressão de string é necessária. Pode ser um valor de string estático (entre aspas), uma variável de string ou outra função ou expressão que retorna uma string de caracteres.
o número do dispositivo indica um dispositivo. Por padrão, o dispositivo 0 (tela e teclado) é assumido. No Color BASIC, os dispositivos # -1 (cassete) e # -2 (impressora) estão disponíveis para o programador.
Modo de edição
Se você cometer um erro ao digitar uma linha, pode redigitá-la do zero (ou DEL) .. ou pode EDITÁ-la. Quando no modo EDIT, você obtém uma reimpressão da linha, e uma segunda cópia que você barra de espaço entre os caracteres. Você não pode usar as teclas de seta. backspace leva você para a esquerda, mas não apaga realmente no buffer. 'i' coloca você no modo de inserção. pressionar Return tira você disso. 'c' altera um caractere, 'd' exclui um caractere. 'x' leva você para o final da linha, permitindo que você a envie. 'l' redesenha a linha.
Funções
ABS(num)- retorna o valor absoluto de num
ASC(str)- retorna o código ASCII do primeiro caractere em str
CHR$(num)- retorna um único caractere de string com o código ASCII num
EOF(device number)- retorna 0 se o arquivo tiver dados ou -1 se no final do arquivo
INKEY$- retorna um caractere se uma tecla do teclado for pressionada ou nulo se nada for pressionado
INT(num)- retorna a parte inteira de num
INSTR(startpos,search str,target str)- procura a primeira string, no str de destino. startpos é opcional.
JOYSTK(num)- retorna a posição do eixo do joystick (0-3) com um valor de 0 a 63
LEFT$(str,num)- retorna os primeiros ("esquerdos") caracteres num da string str
LEN(str)- retorna o comprimento (em caracteres) da string str
MEM- retorna a memória livre disponível em bytes
MID$(str,start num,length num)- retorna uma subcadeia de string str começando na posição inicial num e comprimento num caracteres de comprimento. Também pode reatribuir adicionando = "newvalue"
PEEK(num)- retorna o valor da localização da memória num (0-65535)
POINT(x num,y num)- retorna a cor do ponto semigráfico na posição x numm ( 0-63 ) ey num (0-31)
RIGHT$(str,position num)- retorna a porção final ("direita") da string str começando na posição do caractere num
RND(number)- retorna um número aleatório (inteiro) entre 1 e num
SGN(num)- retorna o sinal de um número num , 1 se positivo, -1 se negativo, 0 se 0
SIN(num)- retorna o seno de num em radianos
STR$(num)- retorna uma string do número num
USR(num)- chama uma sub-rotina de linguagem de máquina cujo endereço é armazenado nas localizações de memória 275 e 276. num é passado para a rotina e um valor de retorno é atribuído quando a rotina é concluída
Comandos
AUDIO [ON|OFF]- Conecta ou desconecta o áudio da fita do som da TV
CLEAR variable space[,highest memory location]- reserva memória para variáveis de string e, opcionalmente, um programa de linguagem de máquina
CLOAD ["name"]- carrega o programa BASIC do cassete. Se nenhum nome for especificado, o próximo programa é carregado
CLOADM ["name"]- carrega o programa de linguagem de máquina do cassete. Se nenhum nome for especificado, o próximo programa é carregado
CLOSE [device number]- fecha um dispositivo (em Color BASIC isso só pode ser # -1, o cassete)
CLS(num)- limpa a tela. Um número de cor opcional (0-8) pode ser especificado
CONT- continua um programa após pressionar BREAK ou uma instrução STOP
CSAVE ["name"]- salva um programa BASIC em um cassete com nome opcional
DATA var,var,var...- armazena dados em um programa BASIC para recuperação com o comando READ
DIM variable(dimension[,dimension 2,...]- dimensiona um array e reserva espaço de memória para ele
END- indica o fim de um programa BASIC
EXEC- [ endereço de memória ] executa o programa em linguagem de máquina no endereço de memória . Se nenhum for especificado, o endereço de execução do programa carregado da fita é usado
INPUT [device number] [{prompt text};] variable [,variable 2, variable n]- Aguarda a entrada do número do dispositivo . Se não for especificado, o dispositivo 0 (teclado) é assumido. Um prompt opcional pode ser impresso na tela para a instrução de entrada
LIST [starting line] - [ending line]- lista a (s) linha (s) do seu programa. O início ou o fim podem ser omitidos ou, se ambos forem omitidos, todo o programa será listado
LLIST [starting line] - [ending line]- funciona como LIST, mas sai para a impressora
MOTOR [ON|OFF]- liga ou desliga o motor do cassete
NEW- apaga o conteúdo da memória (programa e variável)
ON {num} GOSUB line 1, line 2, ... line n- avalia a expressão num e chama o numero da sub-rotina listada
ON (num) GOTO line 1, line 2, ... line n- avalia a expressão num e salta para a número da linha listada
OPEN "[I|O]",device number[,"filename"]- abre um dispositivo para comunicação
POKE memory address, data- grava dados (0-255) no endereço de memória (0-65535)
PRINT device number,expression- imprime dados no dispositivo especificado. Se omitido, # 0 (tela) é assumido
PRINT @{screen position} expression- funciona como PRINT, mas imprime no local especificado (0-511)
READ variable[,variable,...]- lê a (s) próxima (s) variável (es) do programa BASIC embutido com instruções DATA
RENUM num- renumera cada linha do programa em múltiplos de num
RESET(x,y)- define o pixel semigráfico na localização x (0-63) ey (0-31) para preto
RESTORE- redefine o ponteiro READ de volta para a primeira instrução DATA
RETURN- retorna de uma sub-rotina
RUN num- executa o programa BASIC, opcionalmente, no número de linha especificado
SET(x,y,color)- define o pixel semigráfico na localização x (0-63) y (0-31) para a cor (0-8)
SKIPF ["filename"]- pula programas BASIC na fita até que o nome do programa especificado seja encontrado
SOUND tone,duration- emite um tom com frequência (1-255) e duração (1-255)
STOP- faz com que o programa pare de executar
TAB(column)- guias para a coluna especificada (usado com PRINT)
VAL(str)- retorna o valor numérico de uma string que contém um número na forma de string
Controle de fluxo
GOSUB {line number}- chama a sub-rotina no número de linha especificado
GOTO {line number}- salta para o número da linha do programa especificado
IF {test} THEN {command(s)} [ELSE {command(s)}]- executa teste condicional. Se o teste for verdadeiro, ENTÃO os comandos serão executados, caso contrário (ELSE) outros comandos serão executados. Se nenhum ELSE for especificado e o teste for falso, a próxima linha do programa será executada
FOR {num} = {number} TO {number} [STEP {number}] ... NEXT (num)
- cria um loop onde a variável numérica (num) vai do número inicial ao número final em incrementos de número (STEP). Se a etapa for omitida, 1 é assumido
Mensagens de erro
/0- divisão por zero
AO- o arquivo especificado já está aberto
BS- subscrito ruim. o subscrito está fora do intervalo DIM
CN- não pode continuar (ver comando CONT)
DD- tentativa de redimensionar uma matriz
DN- número de dispositivo inválido
DS- erro de instrução direta (o programa não tem números de linha)
FC- chamada de função ilegal: a função contém um valor que está fora do intervalo
FD- dados de arquivo inválidos: tentativa de ler um número em um valor de string, etc.
FM- modo de arquivo inválido, tentativa de INPUT de dados para um arquivo aberto para OUTPUT, etc.
ID- ilegal direto: o comando especificado só pode ser executado em um programa
IE- entrada após o final do arquivo. Veja EOF
IO- erro de entrada / saída
LS- string longa: as strings podem ter apenas 255 caracteres
NF- PRÓXIMO sem FOR
NO- arquivo não aberto
OD- fora dos dados: tentativa de ler além dos últimos DATA no programa
OM- fora da memória
OS- fora do espaço da string: veja CLEAR
OV- estouro: o número está fora do intervalo
RG- RETORNAR sem GOSUB
SN- erro de sintaxe
ST- operação de string muito complexa
TM- incompatibilidade de tipo (A $ = 3, A = "CAT")
UL- tentativa de GOTO ou GOSUB para uma linha que não existe
Sub-rotinas de ROM documentadas
Existem algumas sub-rotinas disponíveis para programas em linguagem de máquina no Color BASIC ROM que estão disponíveis para programação de propósito geral.
POLCAT- endereço [$ A000]: pesquisa teclado para um personagem
CHROUT- endereço [$ A002]: retorna um caractere para a tela ou dispositivo
CSRDON- endereço [$ A004]: inicia a cassete e prepara para a leitura
BLKIN- endereço [$ A006]: lê um bloco da cassete
BLKOUT- endereço [$ A008]: grava um bloco na cassete
JOYIN- endereço [$ A00A]: lê os valores do joystick
Referências
- Notas
- Getting Started With Color BASIC , 1980, Tandy Corporation. Publicação # 8749266
- Color Computer Disk System (Tandy) , 1981, Tandy Corporation. Publicação # 8749470-BCo
- Getting Started With Extended Color BASIC , 1984, Tandy Corporation. Publicação # 811013700A
- Color Computer 3 Extended Basic (Tandy) , 1986, Tandy Corporation. Publicação # 81101910A