Sinclair BASIC - Sinclair BASIC
Paradigma | Imperativo |
---|---|
Projetado por | John Grant, Steve Vickers |
Desenvolvedor | Nine Tiles Networks, Sinclair Research |
Apareceu pela primeira vez | 1979 |
Plataforma | ZX80 , ZX81 , ZX Spectrum |
Licença | Proprietário |
Sinclair BASIC é um dialeto da linguagem de programação BASIC usada nos computadores domésticos de 8 bits da Sinclair Research e Timex Sinclair . O intérprete Sinclair BASIC foi feito por Nine Tiles Networks Ltd.
História
Sinclair BASIC foi originalmente desenvolvido em 1979 para o ZX80 por Nine Tiles. Os programadores eram John Grant, o proprietário da Nine Tiles, e Steve Vickers .
Foi inicialmente uma implementação incompleta do padrão BASIC mínimo do American National Standards Institute (ANSI) de 1978 com aritmética inteira apenas, denominado 4K BASIC (para seu tamanho de ROM) para o ZX80. Ele evoluiu através do 8K BASIC de ponto flutuante para o ZX81 e TS1000 (que também estava disponível como uma atualização para o ZX80) e se tornou uma versão quase completa no ROM ZX Spectrum de 16 KB . Está presente em todos os compatíveis com o ZX Spectrum.
Em 2015, existem intérpretes para sistemas operacionais modernos e sistemas mais antigos que permitem que o Sinclair Basic seja usado facilmente.
Sintaxe
Os novos programadores BASIC podem começar com um programa simples, talvez usando a instrução PRINT da linguagem para exibir uma mensagem na tela; um conhecido e exemplo freqüentemente replicado é Kernighan e Ritchie 's programa mundial Olá :
10 PRINT "Hello, World!"
Palavras-chave
No 16K / 48K ZX Spectrum, há 88 palavras-chave no Sinclair BASIC, denotando comandos (dos quais há 50), funções e operadores lógicos (31) e outras palavras-chave (16, incluindo 9 que também são comandos ou funções):
Palavra-chave | Parâmetros | Inserido usando | Modelo | Resumo |
---|---|---|---|---|
ABS
|
number
|
EXTENDED MODE então G | Função | Retorna o valor absoluto denumber
|
ACS
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+W | Função | Retorna o arco cosseno denumber
|
AND
|
SYMBOL SHIFT+Y | Operador lógico | Retorna verdadeiro se ambas as condições em qualquer lado da AND palavra - chave forem verdadeiras, senão retorna falso
|
|
ASN
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+Q | Função | Retorna o arco seno denumber
|
AT
|
line, column;
|
SYMBOL SHIFT+I | Outro | Usado em uma PRINT instrução para imprimir na linha e coluna especificadas; por exemplo, PRINT AT 5,10;"*" coloca uma estrela na coluna 10 da linha 5.
|
ATN
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+E | Função | Retorna o arco tangente denumber
|
ATTR
|
(line, column)
|
EXTENDED MODEentão SYMBOL SHIFT+L | Função | Retorna um byte contendo informações sobre as cores da célula de texto na tela, correspondendo ao especificado line e column ; observe que, ao contrário da maioria das palavras-chave Sinclair BASIC, os parênteses são obrigatórios; os primeiros três bits indicam a cor da tinta (primeiro plano), o quarto, quinto e sexto bits a cor do papel (fundo), o sétimo bit se as cores são brilhantes ou não, e o oito, se estão piscando
|
BEEP
|
duration, pitch
|
EXTENDED MODEentão SYMBOL SHIFT+Z | Comando | Produz som pelo alto-falante do computador; duration está em segundos, o tom está em semitons acima (valor positivo) ou abaixo (valor negativo) dó médio
|
BIN
|
number
|
EXTENDED MODE então B | Outro | Indica que number está em notação binária
|
BORDER
|
number
|
B | Comando | Define a borda externa da tela com a cor especificada pelo number
|
BRIGHT
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+B | Comando / outro | Torna todas as cores a seguir mais brilhantes se number for 1, ou seu tom normal se for 0
|
CAT
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+9 | Comando | Exibe o conteúdo do ZX Microdrive especificado pornumber
|
CHR$
|
number
|
EXTENDED MODE então W | Função | Retorna o caractere correspondente ao decimal number no conjunto de caracteres do computador
|
CIRCLE
|
x, y, r
|
EXTENDED MODEentão SYMBOL SHIFT+H | Comando | Desenha um círculo com o centro nas coordenadas ( x , y ) e no raior
|
CLEAR
|
address
|
X | Comando | Limpa a tela, todas as variáveis e a GO SUB pilha e, opcionalmente, define o endereço máximo de RAM a ser usado pelo BASIC
|
CLOSE #
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+5 | Comando | Fecha o número do stream especificado para acesso |
CLS
|
V | Comando | Limpa todos os textos e gráficos da tela | |
CODE
|
string
|
EXTENDED MODE então I | Função / outro | Retorna o número correspondente ao primeiro caractere no conjunto de caracteresstring do computador ; também usado para economizar memória pedaços arbitrária a fita, disco, etc. e carregá-los de volta - ver , e para obter mais detalhes
LOAD SAVE VERIFY |
CONTINUE
|
C | Comando | Reinicia um programa depois que ele é interrompido devido a um erro ou quando o usuário pressiona as teclas CAPS SHIFT+ SPACEouBREAK | |
COPY
|
Z | Comando | Envia a tela exibida atualmente para a impressora | |
COS
|
number
|
EXTENDED MODE então W | Função | Retorna o cosseno denumber
|
DATA
|
comma-separated values
|
EXTENDED MODE então D | Comando / outro | Fornece números e / ou strings para usar com o READ comando e permite salvar o conteúdo de uma matriz em fita quando usado com o SAVE comando (comoSAVE filename DATA array name()
|
DEF FN
|
name(variable) = operation
|
EXTENDED MODE então 1 | Comando | Define uma função personalizada que pode ser usada com o FN comando; as definições da função devem ter o formato f(x)=operations , por exemplo, f(x)=x*2 e o nome da função não pode consistir em mais de uma letra, mais um símbolo $ se a função retornar uma string
|
DIM
|
variable(dimensions)
|
D | Comando | Declara uma matriz com o especificado dimensions , que pode ser multidimensional (por exemplo DIM a(10,10) ,; se usado com strings, a última dimensão indica o comprimento de cada uma das strings (portanto, DIM a$(2,5) é uma matriz de duas strings cada uma de cinco caracteres, e DIM b$(5) é uma sequência de cinco caracteres)
|
DRAW
|
x, y [, r]
|
W | Comando | Desenha uma linha na INK cor atual para as coordenadas ( x , y ) a partir das coordenadas usadas pelo comando anterior PLOT ou DRAW ; se o opcional r for fornecido, indica o raio do segmento de círculo a ser desenhado, em radianos
|
ERASE
|
drive;"filename"
|
EXTENDED MODEentão SYMBOL SHIFT+7 | Comando | Exclui o arquivo especificado de um ZX Microdrive |
EXP
|
number
|
EXTENDED MODE então X | Função | Retorna e ao podernumber
|
FLASH
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+V | Comando / outro | Faz com que todo o texto a seguir alterne suas cores de primeiro plano ( INK ) e de fundo ( PAPER )
|
FN
|
function(value)
|
EXTENDED MODEentão SYMBOL SHIFT+2 | Função | Chama o function definido anteriormente no programa usandoDEF FN
|
FORMAT
|
drive;"name"
|
EXTENDED MODEentão SYMBOL SHIFT+0 | Comando | Formata o cartucho no Microdrive indicado e atribui a ele o identificadorname
|
FOR
|
variable = start TO end
|
F | Comando | Inicia um FOR - NEXT loop; o nome da variável pode ter apenas um caractere
|
GO SUB
|
number
|
H | Comando | Faz o programa saltar para a linha BASIC especificada por number ; quando o programa encontrar o comando RETURN , ele voltará para a instrução após oGO SUB
|
GO TO
|
number
|
G | Comando | Faz o programa saltar para a linha BASIC especificada por number
|
IF
|
condition THEN
|
U | Comando | Avalia o condition e, se verdadeiro, executa a instrução que segue a palavra-chave THEN que deve vir após a condição, por exemploIF a=1 THEN LET b=2
|
IN
|
address
|
EXTENDED MODEentão SYMBOL SHIFT+I | Função | Retorna um byte lido da porta de entrada / saída de hardware correspondente aoaddress
|
INK
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+X | Comando / outro | Define a cor do primeiro plano para texto e gráficos |
INKEY$
|
|
EXTENDED MODEentão SYMBOL SHIFT+Z | Função | Retorna uma string representando a tecla que está sendo pressionada no teclado no momento em que a função é chamada, ou uma string vazia se nenhuma for, mas não espera por um pressionamento de tecla |
INPUT
|
[prompt,] variable
|
I | Comando | Interrompe a execução do programa até que o usuário digite algo no teclado e pressione a Enter tecla e, em seguida, armazene o valor inserido no especificado variable ; se o opcional prompt for fornecido, isso será mostrado na tela
|
INT
|
number
|
EXTENDED MODE então R | Função | Retorna o valor inteiro de number , arredondando para baixo para o número inteiro mais próximo (portanto, INT -1.1 retorna −2, não −1)
|
INVERSE
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+M | Comando / outro | Inverte as cores em todo o texto seguinte se number for 1, de modo que use a cor de tinta atual para o fundo e a cor do papel atual para o texto, ou as restaura ao normal se number for 0
|
LEN
|
string
|
EXTENDED MODE então K | Função | Retorna o número de caracteres (bytes) em string
|
LET
|
variable=value
|
L | Comando | Atribui value à variável nomeada
|
LINE
|
|
EXTENDED MODEentão SYMBOL SHIFT+3 | Outro |
|
LIST
|
[number]
|
K | Comando | Exibe o programa BASIC atual na tela; se o opcional number for fornecido, ele omite todas as linhas com um número menor
|
LLIST
|
[number]
|
EXTENDED MODEentão SYMBOL SHIFT+V | Comando | Como LIST exceção a listagem é saída para a impressora
|
LN
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+Z | Função | Retorna o logaritmo natural denumber
|
LOAD
|
"[filename]" [CODE [address[, length]]| DATA variable()]
|
J | Comando | Carrega um programa ou dados em RAM de fita, ZX Microdrive , disco, etc., excluindo qualquer programa BASIC existente e variáveis; se uma string vazia ( "" ) for fornecida, carrega o primeiro programa encontrado, caso contrário, irá procurar na fita o programa nomeado na string; se o opcional CODE for fornecido, irá carregar o programa na memória no endereço que tinha quando foi salvo, ou no especificado address ( length tem a intenção de ser uma segurança, para tentar carregar o programa correto no caso de haver vários na fita com o nome correto, mas de comprimentos diferentes); se o opcional DATA variable() for fornecido, carregará os dados da fita na matriz chamadavariable()
|
LPRINT
|
text
|
EXTENDED MODEentão SYMBOL SHIFT+C | Comando | Como PRINT exceto a saída é enviada para a impressora
|
MERGE
|
"[filename]"
|
EXTENDED MODEentão SYMBOL SHIFT+T | Comando | Como LOAD , exceto que não exclui o programa atual e as variáveis; se houver um número de linha em ambos, o do programa recém-carregado sobrescreve o existente
|
MOVE
|
stream1 TO stream2
|
EXTENDED MODEentão SYMBOL SHIFT+6 | Comando | Move dados de um fluxo (teclado, tela, arquivo, impressora, rede, etc.) para outro |
NEW
|
A | Comando | Apaga o programa BASIC atual e todas as variáveis | |
NEXT
|
variable
|
N | Comando | Fecha um FOR - NEXT loop; a variável deve corresponder ao FOR comando correspondente - "vazios" NEXT para se referir ao imediatamente anterior FOR no programa não são permitidos
|
NOT
|
condition
|
SYMBOL SHIFT+S | Operador lógico | Retorna verdadeiro se o condition for falso, senão retorna falso
|
OPEN #
|
stream
|
EXTENDED MODEentão SYMBOL SHIFT+4 | Comando | Abre um stream para ler e / ou escrever para |
OR
|
SYMBOL SHIFT+Y | Operador lógico | Retorna verdadeiro se qualquer uma das condições em qualquer lado da OR palavra - chave for verdadeira, senão retorna falso
|
|
OUT
|
address, value
|
EXTENDED MODEentão SYMBOL SHIFT+O | Comando | Envia o value (um byte ) para o hardware [E / S mapeada em memória | porta de entrada / saída] correspondente aoaddress
|
OVER
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+N | Comando / outro | Irá fazer com que o texto seguinte seja sobreposto com uma operação XOR o que já está na tela se number for 1, em vez de apagá-lo, ou apagá-lo se number for 0
|
PAPER
|
number
|
EXTENDED MODEentão SYMBOL SHIFT+C | Comando / outro | Define a cor de fundo para texto e gráficos |
PAUSE
|
delay
|
M | Comando | Interrompe a execução do programa pelo atraso especificado, em um segundo na Europa ou na América do Norte (portanto, para por um segundo na Europa)
PAUSE 50 |
PEEK
|
address
|
EXTENDED MODE então O | Função | Retorna um byte que representa o conteúdo do local da memória apontado por address
|
PI
|
|
EXTENDED MODE então M | Função | Retorna o valor de pi |
PLOT
|
x, y
|
Q | Comando | Desenha um pixel na INK cor atual da tela nas coordenadas ( x , y )
|
POINT
|
(x,y)
|
EXTENDED MODEentão SYMBOL SHIFT+8 | Função | Retorna 1 se o pixel apontado para as coordenadas gráficas ( x , y ) está atualmente na cor de tinta (primeiro plano); caso contrário, retorna 0
|
POKE
|
address, value
|
O | Comando | Define o conteúdo da address RAM paravalue
|
PRINT
|
[AT x,y;] text
|
P | Comando | Imprime text (que deve ser uma string ou um número) na tela; se usado com AT , irá imprimir nas coordenadas de texto especificadas, senão na primeira coluna da linha após aquela usada pela última PRINT instrução
|
RANDOMIZE
|
[number]
|
T | Comando | Inicializa o gerador de números aleatórios ; se usado sem um number (ou com 0), ele faz isso com base no relógio interno do computador, caso contrário, usa o number fornecido, que deve estar na faixa [1.65535]
|
READ
|
variable
|
EXTENDED MODE então A | Comando | Pega um valor de uma DATA instrução e o armazena no nome variable : a primeira vez que READ é usada, obtém o primeiro valor após o primeiro DATA , na segunda vez obtém o próximo e assim por diante
|
REM
|
texto | E | Comando | Começa um comentário no código-fonte, o que significa que tudo após a REM instrução é ignorado, até o final da linha - observe que isso inclui tudo após dois pontos, que normalmente inicia um novo segmento: 10 REM Nothing to see here : PRINT "Unprintable" não produzirá nenhuma saída, por exemplo
|
RESTORE
|
[number]
|
EXTENDED MODE então S | Comando | Reinicia onde os READ comandos procuram por valores em DATA declarações: se usado sem um número, o próximo READ usará o primeiro DATA no programa, com um número ele usará o primeiro DATA na linha ou após a linha cujo número é indicado
|
RETURN
|
Y | Comando | Retorna a execução para a primeira instrução após o último GO SUB comando que foi executado
|
|
RND
|
|
EXTENDED MODE então T | Função | Retorna um número pseudo-aleatório com oito algarismos significativos no intervalo [0,1) |
RUN
|
[number]
|
R | Comando | Inicia o programa BASIC atual, a partir de sua primeira linha se nenhum number for especificado, do contrário a partir da linha com esse número (ou a primeira depois, se ele não existir)
|
SAVE
|
"filename" [DATA variable() | LINE number]
|
S | Comando | Salva o programa BASIC atual em fita ou outro dispositivo de armazenamento, com o filename especificado; se o opcional LINE seguido por um número de linha for usado, o programa iniciará automaticamente no número de linha indicado quando ele for LOAD inserido novamente; com o opcional DATA , o comando salva o conteúdo do array nomeado pela variável em vez do programa BASIC atual
|
SCREEN$
|
[(line, column)]
|
EXTENDED MODEentão SYMBOL SHIFT+ | Função / outro | Como uma função, identifica o caractere na linha e coluna especificadas na tela. Usado após o nome do arquivo em um comando LOAD ou SAVE , indica que o conteúdo da memória de exibição deve ser carregado ou salvo; isso essencialmente o torna um atalho para, CODE 16384,6912 mas não funciona, VERIFY porque o conteúdo da memória de exibição será diferente no momento em que o comando ler de volta os dados salvos;
|
SGN
|
number
|
EXTENDED MODE então F | Função | Devolve 1 se number for positivo, 0 se for 0 e -1 se for negativo
|
SIN
|
number
|
EXTENDED MODE então Q | Função | Retorna o seno denumber
|
STEP
|
number
|
SYMBOL SHIFT+D | Outro | Indica o intervalo usado por uma FOR instrução, por exemplo, FOR n=2 TO 6 STEP 2 irá pular n=3 e n=5 no loop
|
STOP
|
SYMBOL SHIFT+A | Comando | Termina a execução do programa atual, saindo para o editor BASIC; também pode ser fornecido quando o computador está aguardando uma entrada usando o INPUT comando; uma vez que o programa é interrompido, ele pode ser retomado comCONTINUE
|
|
SQR
|
number
|
EXTENDED MODE então H | Função | Retorna a raiz quadrada denumber
|
STR$
|
number
|
EXTENDED MODE então Y | Função | Retorna o caractere do conjunto de caracteres do computador correspondente anumber
|
TAB
|
column
|
EXTENDED MODE então P | Outro | Em uma PRINT instrução, certifique-se de que o texto a ser gerado comece na coluna especificada, quebrando para a próxima linha conforme necessário, mas nunca mais de uma linha
|
TAN
|
number
|
EXTENDED MODE então E | Função | Retorna a tangente denumber
|
THEN
|
statement
|
SYMBOL SHIFT+G | Outro | Segue a condição em uma IF declaração para indicar o que deve acontecer quando a condição for avaliada como verdadeira
|
TO
|
|
SYMBOL SHIFT+F | Outro | Indica um intervalo do número à esquerda de TO até o número à direita dele, inclusive; quando usado com FOR ambos os números deve ser fornecido, enquanto se usado para dividir strings, qualquer um pode ser deixado de fora para indicar o início ou o fim da string
|
USR
|
string or address
|
EXTENDED MODE então L | Função | Quando chamado com uma string de um único caractere, retorna o endereço de memória no qual o glifo do caractere gráfico definido pelo usuário correspondente a esse caractere é definido. Se chamado com um endereço, ele inicia a execução do código de máquina nesse endereço (tornando-se assim uma das poucas funções Sinclair BASIC a ter um efeito colateral ) e retorna o conteúdo do par de registradores BC do Z80 . |
VAL
|
string
|
EXTENDED MODE então J | Função | Avalia o string como um número e retorna o resultado; isso pode realizar cálculos: VAL "1+2" retorna 3, por exemplo, e também avalia variáveis e até mesmo outras VAL instruções: LET a=1: VAL "a+VAL ""2""" também retorna 3
|
VAL$
|
string
|
EXTENDED MODEentão SYMBOL SHIFT+J | Função | Semelhante a, VAL mas avalia a string como uma string
|
VERIFY
|
"[filename]"
|
EXTENDED MODEentão SYMBOL SHIFT+R | Comando | Lê um programa de uma fita ou outro armazenamento, de forma semelhante LOAD , mas em vez de carregá-lo na memória, compara-o ao programa que está atualmente na memória; isso tem como objetivo garantir que o programa tenha sido SAVE executado corretamente
|
Entrada de palavra-chave
Em modelos 48K e mais antigos, as palavras-chave são inseridas por meio do sistema exclusivo de entrada de palavras-chave da Sinclair, conforme indicado na tabela. Os comandos mais comuns precisam apenas de um pressionamento de tecla; por exemplo, pressionar apenas Pno início de uma linha em um Spectrum produz o comando completo PRINT
. Comandos menos frequentes requerem sequências de teclas mais complexas: BEEP
(por exemplo) é pressionado pressionando-se CAPS SHIFTmais SYMBOL SHIFTpara acessar o modo estendido (modelos posteriores incluem uma EXTENDED MODEtecla), mantendo SYMBOL SHIFTpressionado e pressionando Z. As palavras-chave são codificadas por cores no teclado Spectrum original para indicar qual modo é necessário:
- Branco : chave apenas
- Vermelho na própria chave: SYMBOL SHIFTmais a chave
- Verde acima da chave: EXTENDED MODEseguido pela chave
- Vermelho abaixo da chave: EXTENDED MODEseguido por SYMBOL SHIFTmais a chave
O ZX81 8K BASIC usadas as formas mais curtas GOTO
, GOSUB
, CONT
e RAND
, enquanto que o espectro utilizadas as formas mais longas GO TO
, GO SUB
, CONTINUE
e RANDOMIZE
. O ZX80 4K BASIC também usava essas formas mais longas, mas diferia pelo uso da grafia RANDOMISE
. O ZX81 8K BASIC foi a única versão usar FAST
, SCROLL
, SLOW
e UNPLOT
. A ZX80 4K BASIC tinha a função exclusiva TL$()
; era equivalente ao operador de string (2 TO )
em versões posteriores.
Pontos código único são atribuídos no conjunto ZX80 caráter , conjunto de caracteres ZX81 e conjunto de caracteres ZX Spectrum para cada palavra-chave ou do operador multi-caractere, ou seja <=
, >=
, <>
, ""
(indexado apenas no ZX81), **
(substituído com ↑
o Spectrum). Eles são expandidos fazendo referência a uma tabela de tokens na ROM. Assim, uma palavra-chave usa apenas um byte de memória, uma economia significativa em relação ao armazenamento tradicional de letra por letra. Isso também significa que o interpretador BASIC pode determinar rapidamente qualquer comando ou função avaliando um byte, e que as palavras-chave não precisam ser palavras reservadas como em outros dialetos BASIC ou outras linguagens de programação, por exemplo, é permitido definir uma variável nomeada PRINT
e saída seu valor com PRINT PRINT
. Isso também está relacionado ao requisito de sintaxe de que cada linha comece com uma palavra-chave de comando, e pressionar uma tecla para aquele comando no início de uma linha muda o editor do modo de comando para o modo de letra. Assim, a atribuição de variáveis requer LET
(ou seja, não apenas ). Essa prática também é diferente de outros dialetos BASIC. Além disso, significava que, ao contrário de outros dialetos BASIC, o intérprete não precisava de parênteses para identificar funções; era suficiente, não necessário (embora o último fosse permitido). A ROM 4K BASIC do ZX80 teve uma pequena lista de excepções a esta: as funções , , , , , , e não tinha sinais de um byte, mas foram digitados em letra por letra e exigiu que os parênteses. Elas foram listadas como FUNÇÕES INTEGRAIS em uma etiqueta acima e à direita do teclado.
LET a=1
a=1
SIN x
SIN(x)
CHR$()
STR$()
TL$()
PEEK()
CODE()
RND()
USR()
ABS()
Os modelos 128K Spectrum, o ZX Spectrum 128, +2, +3, + 2A e + 2B, também armazenavam palavras-chave internamente em pontos de código de um byte, mas usavam um sistema de entrada BASIC convencional letra por letra. Eles também introduziram dois novos comandos:
-
PLAY
, que operava o chip de música General Instrument AY-3-8910 dos modelos 128k -
SPECTRUM
, que mudou o espectro de 128k para um modo de compatibilidade de espectro de 48k
O ZX Spectrum 128 original em espanhol incluía quatro comandos adicionais em espanhol, um dos quais não estava documentado. Eles podem ser traduzidos como:
-
EDIT
(para editar um número de linha ou chamar o editor de string de tela inteira) -
RENUM
(para renumerar as linhas do programa) -
DELETE
(para deletar linhas de programa) -
WIDTH
(para definir a largura da coluna do dispositivo RS232, mas não documentado porque o código foi quebrado)
Ao contrário das funções LEFT$()
, MID$()
e RIGHT$()
usadas nos onipresentes dialetos Microsoft BASIC para computadores domésticos, partes de strings em Sinclair BASIC são acessadas por faixa numérica. Por exemplo, a$(5 TO 10)
fornece uma substring começando com o 5º e terminando com o 10º caractere da variável a$
. Assim, é possível substituir os comandos LEFT$()
e RIGHT$()
simplesmente omitindo a posição esquerda ou direita do array, respectivamente; por exemplo a$( TO 5)
é equivalente a LEFT$(a$,5)
. Além disso, a$(5)
sozinho é o suficiente para substituir MID$(a$,5,1)
.
Nomes de variáveis
Variáveis contendo valores numéricos podem ter qualquer comprimento, enquanto nomes de variáveis de string e array devem consistir em apenas um caractere alfabético. Assim, , , , e são todos bons, enquanto , e não são.
LET a=5
LET Apples=5
LET a$="Hello"
DIM a(10)
DIM a$(10)
LET Apples$="Fruit"
DIM Apples(10)
DIM Apples$(10)
Os nomes longos de variáveis permitidos para variáveis numéricas podem incluir caracteres alfanuméricos após o primeiro caractere, portanto, são permitidos, mas não . Os nomes de variáveis longos também podem incluir espaços, que são ignorados, então é o mesmo queLET a0=5
LET 0a=5
LET number of apples = 5
LET numberofapples = 5
Versões oficiais
- 4K BASIC é o ZX80 BASIC original com aritmética somente de inteiros, de John Grant of Nine Tiles para o ZX80, assim denominado por residir em 4 KiB de memória somente leitura (ROM).
- 8K BASIC é o ZX81 BASIC (também disponível como uma atualização para o ZX80), atualizado com aritmética de ponto flutuante por Steve Vickers , assim chamado por residir em ROM de 8 KiB.
- 48 BASIC é o BASIC para a memória de acesso aleatório (RAM) original de 16/48 kB ZX Spectrum (e clones), com cores e mais periféricos adicionados por Steve Vickers e John Grant. Ele reside em 16 KiB ROM e começou a ser chamado de 48 BASIC com a introdução do ZX Spectrum 128, momento em que o 16 kB Spectrum não era mais vendido e a maioria dos existentes em uso foram atualizados para 48 kB
- 128 BASIC é o BASIC para o ZX Spectrum 128. Ele oferece comandos extras e usa entrada letra por letra.
- +3 BASIC é o BASIC com suporte de disco para o ZX Spectrum +3.
-
T / S 2000 BASIC foi usado no Timex Sinclair 2068 (TS2068) compatível com Spectrum e tem as seguintes seis palavras-chave e as Sinclair BASIC comuns:
-
DELETE
exclui os intervalos de linha do programa BASIC. CAPS SHIFT+ 0com oK
cursor produz o comandoDELETE
. -
FREE
é uma função que fornece a quantidade de RAM livre.PRINT FREE
mostrará quanta RAM está livre. -
ON ERR
é uma função de tratamento de erros usada principalmente comoON ERR GO TO
ouON ERR CONT
. -
RESET
pode ser usado para redefinir o comportamento deON ERR
. Também se destinava a reinicializar os periféricos. -
SOUND
controla o chip de som AY-3-8192. -
STICK
é uma função que fornece a posição do joystick interno (Timex Sinclair 2090).
-
- BASIC64 da Timex de Portugal , é uma extensão de software que permite uma melhor programação básica com o modo gráfico 512 × 192 disponível apenas nos computadores da série 2000 Timex . Esta extensão adiciona comandos e faz um remapeamento completo da memória para evitar que o sistema sobrescreva a área de memória da tela estendida. Existem duas versões devido a mapas de memória diferentes - uma versão para TC2048 e uma versão para TS / TC2068 .
Outras versões, extensões, derivados e sucessores
Intérpretes para a família ZX Spectrum
Existem vários intérpretes ZX Spectrum.
- Beta BASIC, do Dr. Andy Wright, era originalmente uma extensão do BASIC , mas se tornou um intérprete completo.
- YS MegaBasic de Mike Leaman .
- ZebraOS da Zebra Systems em Nova York, uma versão em cartucho do T / S 2000 BASIC que usava o modo de tela 512 × 192.
- Sea Change ROM de Steve Vickers e Ian Logan, modificado por Geoff Wearmouth, um ROM substituto com um Sinclair BASIC aprimorado.
- Gosh Wonderful de Geoff Wearmouth , uma ROM substituta que corrige bugs e adiciona um tokenizer, stream lister, delete e renumerar comandos.
- OpenSE BASIC (anteriormente SE BASIC) de Andrew Owen , uma ROM substituta com correções de bugs e muitas melhorias, incluindosuporte a ULAplus , publicado como código aberto em 2011
Compiladores para a família ZX Spectrum
Existem vários compiladores ZX Spectrum.
- HiSoft COLT Compiler (também conhecido como HiSoft COLT Integer Compiler)
- HiSoft BASIC (também conhecido como HiSoft BASIC Compiler), um compilador com capacidade de ponto flutuante e inteiro
- Compilador laser
- Compilador Softek 'IS' Integer (sucessor do Softek Integer Compiler)
- Compilador Completo Softek 'FP'
- Compilador ZIP
Derivados e sucessores para outros computadores
- SuperBASIC , um dialeto BASIC muito mais avançado introduzido com ocomputador pessoal Sinclair QL , com algumas semelhanças com os Sinclair BASICs anteriores
- SAM Basic , o BASIC do SAM Coupé , geralmente considerado um clone do ZX Spectrum
- ROMU6 por Cesar e Juan Hernandez - MSX
- Spectrum 48 da Whitby Computers - Commodore 64
- Sparky eSinclair BASIC de Richard Kelsh, um sistema operacional vagamente baseado no ZX Spectrum BASIC - Zilog eZ80
- Sinbas de Pavel Napravnik - DOS
- Básico (e CheckBasic) por Philip Kendall - Unix
- BINSIC de Adrian McMenamin, uma reimplementação em Groovy modelada em ZX81 BASIC - Java
- BASin de Paul Dunn, um ambiente de desenvolvimento integrado (IDE) Sinclair BASIC completo baseado em um emulador ZX Spectrum - Windows
- SpecBAS (também conhecido como SpecOS) de Paul Dunn, um ambiente de desenvolvimento integrado (IDE) que fornece um superconjunto aprimorado de Sinclair BASIC - Windows , Linux , Pandora e Raspberry Pi
- ZX-Basicus de Juan-Antonio Fernández-Madrigal, um sintetizador, analisador, otimizador, interpretador e depurador de Sinclair BASIC 48K para PCs, que pode ser baixado gratuitamente para Linux e Windows .
Veja também
- Lista de emuladores de sistema de computador § Sinclair ZX80
- Lista de emuladores de sistema de computador § Sinclair ZX81
- Lista de emuladores de sistema de computador § Sinclair ZX Spectrum e clones
Notas
Referências
Bibliografia
- Ardley, Neil (1984). Guia do usuário do Sinclair ZX Spectrum + . Dorling Kindersley em associação com Sinclair Research. ISBN 0-86318-080-9.
- Vickers, Steven (1982). Programação BASIC do Sinclair ZX Spectrum . Sinclair Research.
- Vickers, Steven (1983). Sinclair ZX Spectrum BASIC Programming (2 ed.). Sinclair Research.
- Cambridge Communication (1983). Manual do Sinclair ZX Spectrum Microdrive e Interface 1 . Sinclair Research.
links externos
- Sinclair ZX Spectrum BASIC Programming : O manual original de 1982 por Steven Vickers (referenciado acima)
- Sinclair ZX81 Basic Programming : também por Vickers
- A História do Sinclair BASIC : Por Andrew Owen
- Timex Computer World : Manual do usuário básico 64 para Timex Computer 2048
- Gramática Sinclair BASIC : uma especificação de gramática LL (1) para analisar Sinclair BASIC 16 / 48K