
Tamanho máximo de uma linha
É do conhecimento geral que o ZX Spectrum usa 2 bytes para armazenar o tamanho de uma linha BASIC. Como 2^16 = 65536, podemos pensar que conseguimos ter uma linha BASIC que ocupe toda a memória disponível. Ora, o ZX Spectrum (versão 48K) tem 48K de RAM, subtraindo a memória de écran e mais algumas coisitas ficamos com cerca de 41K. Mas, se tentarmos escrever a linha no teclado, o editor usará metade da memória disponível como memória temporária e, portanto, apenas conseguiremos escrever uma linha com cerca de 20739 bytes (se não removermos os caracteres UDG da RAM).
No entanto, existe outro limite para uma linha BASIC...
Número máximo de comandos numa linha
Portanto, se quisermos escrever um programa bem grande tal não vai ser possível porque estamos limitados a 127 comandos.
Podemos tentar fazer truques como este mas não iremos muito longe:
Em vez de:
IF win=1 THEN PRINT "You win!"
IF win=-1 THEN PRINT "You lose!"
IF win=0 THEN PRINT "You draw!"
Podemos escrever:
PRINT "You win!" AND win=1;"You lose!" AND win=-1;PRINT "Draw!" AND win=0
Número máximo de linhas
Com o comando LIST podemos obter uma listagem com este aspecto:
0 REM line 0
1 REM line 1
9999 REM line 9999
:000 REM line 10000
;111 REM line 11111
<123 REM line 12123
=555 REM line 13555
>789 REM line 14789
?888 REM line 15888
@383 REM line 16383
Nota: Na tabela ASCII os caracteres têm esta sequência:
0123456789:;<=>?@
Número máximo de caracteres num identificador
No ZX Spectrum podemos usar espaços nos nomes de variáveis.
Exemplo:
LET We have six = 6
Mas, atenção: os espaços são ignorados pelo interpretador BASIC.
Portanto, este comando é equivalente a:
LET WeHaveSix = 6
Exemplo com uma variável comprida:
10 LET This identifier represents a five byte variable capable of storing millions of integers and real numbers enabling large scale numerical data processing in complex computer systems = 12345.6789
20 PRINT This identifier represents a five byte variable capable of storing millions of integers and real numbers enabling large scale numerical data processing in complex computer systems
Identificadores em comandos GO TO / GO SUB
Então, temos que escrever algo como:
100 GO SUB 1000 : REM print list
Pode ser muito útil usar identificadores nas invocações das rotinas.
Mas nós estamos com sorte: no ZX Spectrum, isto é possível e podemos escrever:
10 Let print list = 1000
100 GO SUB print list
Nota: O emulador BASinC fica confundido quando usamos palavras reservadas.
100 GO SUB print list
Nota: O emulador BASinC fica confundido quando usamos palavras reservadas.
Neste caso, ele confunde "print
list" com os comandos "PRINT LIST". Para evitar isto é melhor escrever:
GO SUB PrintList
Podem aqui fazer download de alguns pequenos programas que foram usados para testar estas limitações.
GO SUB PrintList
Download
Podem aqui fazer download de alguns pequenos programas que foram usados para testar estas limitações.
Sem comentários:
Enviar um comentário