Z80 & TRS80




Especificação de faixas de números aleatórios:

APPLE / MSX TRS Color / TRS80 SINCLAIR números aleatórios entre 0 e 0.9999999 RND(1) RND(0) RND números aleatórios entre 0 e 0.9999999 * N RND(1) * N RND(0) * N N * RND números aleatórios entre -10 e +10 INT(RND(1)*21 ) -10 RND(21) - 11 INT(RND * 21) - 10 números aleatórios entre 0 e 39 INT(RND(1) * 40) INT(RND(0) * 40 INT(RND * 40) números aleatórios entre 1 e 40 INT(RND(1) * 40) + 1 RND(40) INT(RND * 40) + 1





Apelo sonoro:

TRSColor
10 FOR I = 255 TO 155 STEP -1
20 SOUND I,1
30 NEXT I

Spectrum
10 FOR N = 29 TO 10 STEP -1
20 SOUND .015,N
30 NEXT N

MSX
05 SOUND 7.56 : SOUND 8.15
10 FOR I = 255 TO 155 STEP -1
20 SOUND 0,1
30 NEXT I

APPLE
10 FOR N = 1 TO 100
20 PRINT PEEK (-16336)
30 NEXT N

TRS80
10 FOR I = 1 TO 1000
20 OUT 255,0
30 FOR J = 1 TO 10 : NEXT J
40 OUT 255,1
50 NEXT I





Operadores Lógicos:



A = B      a é igual a B
A > B      a é maior que B
A < B      a é menor que B
A >= B    a é maior ou igual a B
A <= B    a é menor ou igual a B
A <> B    a é diferente de B
A # B      a é diferente de B





Para inverter um número negativo de uma raiz SQR(ABS(A)):



ACS(X) = -ATN(X/SQR(-X * X + 1)) + 1.5708
ASN(X) = ATN(X/SQR(-X * X + 1))





CHR$:



PRINT CHR$ (8) - recua e apaga o último caracter na tela
PRINT CHR$ (10) - avança o cursor para o começo da linha seguinte
PRINT CHR$ (14) - liga cursor
PRINT CHR$ (15) - desliga cursor
PRINT CHR$ (23) - converte a tela para a largura de 32 caracteres
PRINT CHR$ (28) - retorna o cursor &aagrave; posição 0,0 sem apagar a tela
PRINT CHR$ (29) - move o cursor para o começo da linha
PRINT CHR$ (30) - apaga a posição do cursor até o final da linha
PRINT CHR$ (31) - apaga o espaço que vai da posição do cursor até o final da tela





Comandos de Impressão

 

Sinclair PRINT AT TRS PRINT @ MSX LOCATE APPLE HTAB e VTAB TRS80 PRINT STRING$(quantidade de vezes, caracterer)





Maísculo e Minúsculo



Para inverter de maiúsculo para minúsculo, basta somar 32 ao código ASCII do caracter maiúsculo





Cartesiana clássica (origem canto inferior esquerdo):



1. converter (X, Y) para uma posição @
P% = 64 * (15 - Y) + X

2. converter uma posição @ para (X, Y):
X = P% - INT (P% / 64) * 64
Y = 15 - INT (P% / 64)

Converter X - 0 e Y - 0 (SET)

1. converter (X, Y) para uma posição @
P% = 64 x Y + X





Variáveis:



Sinclair / Spectrum
Tamanho: sem limites, todas as letras são reconhecidas
Caracteres especiais não permitidos
Espaço no nome permitido, mas não contam
Variável de controle para FOR...NEXT, uma letra apenas
Variável alfanumérica, uma letra apenas, sequida de $

TRS Color / TRS80
Tamanho: máximo de 255 caracteres, mas só as duas primeiras letras são reconhecidas
Caracteres especiais não permitidos
Espaço no nome permitido, mas não contam
Variável de controle para FOR...NEXT, variável numérica inteira ou de precisão simples
Variável alfanumérica, como nas variáveis numéricas sequida de $, ou declarada pela inicial em DEFSTR

MSX
Tamanho: máximo de 255 caracteres, mas só as duas primeiras letras são reconhecidas
Caracteres especiais não permitidos
Espaço no nome permitido, mas não contam
Variável de controle para FOR...NEXT, variável numérica sem restrições
Variável alfanumérica, como nas variáveis numéricas sequida de $, ou declarada pela inicial em DEFSTR

Apple II / TK2000
Tamanho: máximo de 255 caracteres, mas só as duas primeiras letras são reconhecidas
Caracteres especiais não permitidos
Espaço no nome permitido, mas não contam
Variável de controle para FOR...NEXT, variável numérica sem restrições
Variável alfanumérica, como nas variáveis numéricas sequida de $





Tabela ASCII:


Cada caracter que o computador utilza possui um código numérico, e muitos modelos adotam um código padrão denominado código ASCII (American Standard Code for Information Interchange ou código padrão americano para intercâmbio de informação).

Estes códigos são os números usados em CHR$ e ASC ( ou CODE no Spectrum). o CHR$ converte o número em um caracter, enquanto o ASC ou CODE faz o inverso, convertendo um caracter em seu código numérico.

Assim, quando o compudator guarda uma palavra, o que armazena é o código ASCII do caracter.

 
  numérico de código     caracter ASCII          número de código            caracter ASCII
     32                         space                   65                         A
     33                           !                     66                         B
     34                           "                     67                         C
     35                           #                     68                         D
     36                           $                     69                         E
     37                           %                     70                         F
     38                           &                     71                         G
     40                           (                     72                         H
     41                           )                     73                         I
     42                           *                     74                         J 
     43                           +                     75                         K
     44                           ,                     76                         L
     45                           -                     77                         M
     46                           .                     78                         N
     47                           /                     79                         O
     48                           0                     80                         P
     49                           1                     81                         Q
     50                           2                     82                         R
     51                           3                     83                         S 
     52                           4                     84                         T 
     53                           5                     85                         U 
     54                           6                     86                         V 
     55                           7                     87                         W 
     56                           8                     88                         X
     57                           9                     89                         Y
     58                           :                     90                         Z
     59                           ;
     60                           <
     61                           =
     62                           >
     63                           ?
     64                           @ 




Tabela de edição no TRS80 e TRS Color:



L lista a linha C caracteres muda caracter nC caracteres muda os próximos "n" caracteres I insere caracter D apaga um caracter nD apaga "n" caracteres H apaga o resultado da linha e entra em modo de inserção X entra em modo de inserção ao fnal da linha S caracter procura a primeira ocorrencia do caracter nS caracter procura a nésima ocorrencia do caracter ( espaço ) avança o cursor uma posição n ( espaço ) avança o cursor "n" posições <- recua o cursor uma posição n <- recua o cursor "n" posições ( shift ) ^| sai do modo inserção e volta ao modo de edição ( enter ) sai do modo de edição e inserção E sai do editor A retorna ao inicio da edição Q retorna ao inicio da edição e sai do editor





Tabela de edição no MSX:



---> desloca o cursor de texto em uma posição para a direita <--- desloca o cursor de uma posição para a esquerda /|\ desloca o cursor para cima <| apaga o caracter imediatamente anterior ao cursor e recua o cursor de uma posição (retrocesso) \|/ desloca o cursor para baixo INS ativa ou desativa o modo de inserção de caracter DEL apaga um caracter e rejunta o restante da linha ENTER consolida as modificações feitas numa linha CONTROL F desloca o cursor para a primeira letra da próxima palavra da linha CONTROL B desloca o cursor para a primeira letra da palavra anterior da linha CONTROL N desloca o cursor para o final da linha CONTROL E apaga a linha corrente desde o ponto onde esta o cursor até o final CONTROL U apaga toda a linha onde esta o cursor





Tabela de código de tecla no TK2000:



caracter ASCII PEEK(39) CALL 768 nulo - 48 0 espaço 32 12 160 ! 33 151 161 " 34 150 162 # 35 149 163 $ 36 148 164 % 37 147 165 & 38 153 166 ´ 39 154 167 ( 40 155 168 ) 41 156 169 * 42 157 170 + 43 163 171 ´ 44 45 172 - 45 161 173 . 46 46 174 / 47 175 175 0 48 29 176 1 49 23 177 2 50 22 178 3 51 21 179 4 52 20 180 5 53 19 181 6 54 25 182 7 55 26 183 8 56 27 184 9 57 28 185 A 65 11 193 B 66 1 194 C 67 3 195 D 68 9 196 E 69 15 197 F 70 8 198 G 71 7 199 H 72 37 200 I 73 33 201 J 74 38 202 K 75 39 203 L 76 40 204 M 77 44 205 N 78 43 206 O 79 34 207 P 80 35 208 Q 81 17 209 R 82 14 210 S 83 10 211 U 84 32 212 V 85 2 213 W 86 16 214 X 87 4 215 Y 88 31 216 Z 89 5 217 /|\ 112 36 240 \|/ 113 30 241 <-- 8 18 136 --> 21 24 149 FIRE 46 46 174 RETURN 13 42 141





Caracteres do Print Using para TRS80, TRSColor e MSX:



sinal efeito # coloca um dígito numérico " coloca um ponto decimal ´ separa a parte inteira em grupos de três - coloca um sinal negativo após um número negativo ou branco após um positivo + coloca um sinal negativo após um número negativo ou um sinal + após um positivo ** preenche um campo com asteriscos a esquerda $$ coloca um cifrão antes de um valor numérico **$ coloca um cifrão e asterisco a esquerda ! coloca o primeiro caracter de um cadeia % assinala o inicio e o fim de um campo alfanumérico





Melodias - Tabela de conversão:



 

Escala principal Spectrum Apple TK2000 TRSColor MSX 1 -12 192 192 C C 2 -11 182 182 C+ C+ 3 -10 172 172 D D 4 -9 162 162 D+ D+ 5 -8 154 154 E E 6 -7 146 146 F F 7 -6 137 137 F+ F+ 8 -5 128 128 G G 9 -4 121 121 G+ G+ 10 -3 114 114 A A 11 -2 108 108 A+ A+ 12 -1 102 102 B B 13 0 96 96 C C 14 1 90 90 C+ C+ 15 2 85 85 D D 16 3 80 80 D+ D+ 17 4 76 76 E E 18 5 72 72 F F 19 6 67 67 F+ F+ 20 7 64 64 G G 21 8 60 60 G+ G+ 22 9 56 56 A A 23 10 53 53 A+ A+ 24 11 50 50 B B 25 12 47 47 C C 26 13 45 45 C+ C+ 27 14 42 42 D D 28 15 40 40 D+ D+ 29 16 37 37 E E 30 17 35 35 F F 31 18 33 33 F+ F+ 32 19 31 31 G G 33 20 29 29 G+ G+ 34 21 28 28 A A 35 22 26 26 A+ A+ 36 23 25 25 B B 37 24 23 23 C C





Melodias - Tabela de conversão:



 

Escala Byte mais Byte menos geral significativo significativo Número Nota 1 3 85 25 03C 2 3 37 26 C+ 3 2 247 27 D 4 2 205 28 D+ 5 2 165 29 E 6 2 127 30 F 7 2 91 31 F+ 8 2 57 32 G 9 2 25 33 G+ 10 1 251 34 A 11 1 222 35 A+ 12 1 195 36 B 13 1 170 37 04C 14 1 146 38 C+ 15 1 123 39 D 16 1 102 40 D+ 17 1 82 41 E 18 1 63 42 F 19 1 45 43 F+ 20 1 28 44 G 21 1 12 45 G+ 22 0 253 46 A 23 0 239 47 A+ 24 0 225 48 B 25 0 213 49 05C 26 0 201 50 C+ 27 0 189 51 D 28 0 179 52 D+ 29 0 169 53 E 30 0 159 54 F 31 0 150 55 F+ 32 0 142 56 G 33 0 134 57 G+ 34 0 126 58 A 35 0 119 59 A+ 36 0 112 60 B 37 0 106 61 06C





Tabela de operações com funções:



LEN(X$) retorna o comprimento da cadeia X$ (um número inteiro entre 0 e 255); existe para todas as versões do BASIC; no ZX81 e Spectrum não é necessário X$ entre parenteses

ASC(X$) retorna o código ASCII (um número inteiro entre 0 e 255) do primeiro caracterer da cadeia X$; no ZX81 denomina-se CODE

CHR$(X) tem a função inversa de ASC, retorna o caracter correspondente ao código ASCII indicado por X

STRING$(X,Y) retorna uma cadeia com X caracteres iguais com código ASCII estipulado por Y; somente nos computadores TRS80, TRSColor, MSX

LEFT$(X$,N) extrai os N primeiros caracteres da cadeia X$

RIGHT$(X$,N) extrai os N últimos caracteres da cadeia X$

MID$(X$,N,L) extrai L caracteres a partir da posição N da cadeia X$; pode ser utilizado também no formato MID$(X$,N$), extraindo então todos os caracteres que existirem na cadeia X$, a partir de N

STR$(X) retorna a cadeia correspondente ao número X; um espaço em branco é adicionado ao inicio da cadeia

 

VAL(X$) efetua a operação inversa, ou seja, retorna o valor numérico correspondente a cadeia X$; se X$ não contiver um número, não ocorre o erro, será retornado 0 X$(1 TO N) = LEFT$(X$,N) X(LEN X$ - N TO +1) = RIGHT(X$,N) ==> Spectrum e ZX81 X$(N TO N+L-1) = MID$(X$,N,L) X$(N TO) = MID$(X$,N)





Spectrum - as variáveis do sistema:



 

nome endereço n° de bytes utilização LASTK 23560 1 última tecla pressionada REPDEL 23561 1 tempo de pressão a uma tecla para repetir REPPER 23562 1 atraso entre repetições de uma tecla RASP 23608 1 duração do som de alarme PIP 23609 1 duração do "clique" de teclado ERRNR 23610 1 último código de erro, menos 1 MODE 23617 1 modo do cursor (K, L, C, E, ou G) NEWPPC 23618 2 próxima linha a ser executada NSPPC 23620 2 próximo comando da linha a ser executada EPPC 23625 2 número da linha com o cursor do programa VARS 23627 2 endereço do inicio da área de variáveis PROG 23635 2 endereço do inicio do programa BASIC NXTLIN 23637 2 endereço da próxima linha a executar ELINE 23641 2 endereço do buffer de entrada no BASIC KCUR 23643 2 endereço do cursor FLAGS2 23658 1 indicador de minúsculas, maiúsculas DFSZ 23659 1 número de linhas na zona inferior da tela SEED 23670 2 semente de gerador RAND FRAMES 23672 3 contador de quadros de TV COORDX 23677 1 coordenada X do último ponto gráfico COORDY 23678 1 coordenada Y do último ponto gráfico PPOSN 23679 1 coluna de impressão na impressora FREE 23681 1 byte livre para o usuário não afetado por NEW EPOSN 23688 1 número de coluna da última posição PRINT SPOSLN 23689 1 número de linha da última posição PRINT SCRCT 23692 1 contador de linhas para scrool RAMTOP 23730 2 topo da memória livre para BASIC PRAMT 23732 2 topo da memória RAM (física)





As grandes famílias de micros pessoais:



SINCLAIR TRS80 APPLE SPECTRUM Apply 300 CP300 AppleII Plus ZX Spectrum AS-1000 CP500 Apple Tronic Timex/Sinclair 2000 CP-200 DGT101 APII Timex/Sinclair 2048 NE-Z8000 DGT1000 Dactron E Timex/Sinclair 2068 Ringo R-470 D8000 D8100 Sinclair ZX81 D8001 DMII Timex/Sinclair 1000 D8002 ElppaII TK-82C II Maxxi TK-83 JR MC01 TK-85 Naja MC100 TRS80 Mod.III Microengenho TRS80 Mod.IV PC TK2000 Color COLOR COMPUTER IBM Color 64 IBM PC VC50 Ego TRS80 Color Computer NEXUS





SINCLAIR, 61 palavras reservadas:



ABS FAST NEW SAVE ACS FOR NEXT SCROLL AND NOT SGN ASN GOSUB SIN AT GOTO OR SLOW ATN SQR IF PAUSE STEP CHR$ INKEY$ PEEK STOP CLEAR INPUT PL STR$ CLS INT PLOT CODE POKE TAB CONT LEN PRINT TAN COPY LET THEN COS LIST RAND TO LLIST REM DIM LN RETURN UNPLOT LOAD RND USR EXP LPRINT RUN VAL





APPLE, 100 palavras reservadas:



& GOSUB NEXT SCALE= GOTO NORMAL SCRN( ABS GR NOT SGN AND NOTRACE SHLOAD ASC HCOLOR SIN AT HGR ON SPC( ATN HGR2 ONERR SPEED= HIMEM OR SQR CALL HPLOT STEP CHR$ HTAB PDL STOP CLEAR PEEK STORE COLOR= IF PLOT STR$ CONT IN# POKE COS INPUT POP TAB( INT PRINT TAN DATA INVERSE PR# TEXT DEF THEN DEL LEFT$ READ TO DIM LEN RECALL TRACE DRAW LET REM LIST RESTORE USR END LOAD RESUME EXP LOG RETURN VAL LOMEM RIGHT$ VLIN FLASH RND VTAB FN MID$ ROT= FOR RUN WAIT FREE NEW SAVE XPLOT GET XDRAW





TRS80, 121 palavras reservadas:



@ END LPRINT RESET EOF LOAD RESTORE ABS ERL LOC RESUME AND ERR LOF RETURN ASC ERROR LOG RIGHT$ ATN EXP RND AUTO MEM RSET FIELD MERGE RUN CDBL FIX MID$ CHR$ FN MKD$ SAVE CINT FOR MKI$ SET CLEAR FORMAT MKS$ SGN CLOCK FRE SIN CLS FREE NAME SQR CMD NEW STEP CONT GET NEXT STOP COS GOSUB NOT STRING$ CSNG GOTO STR$ CVD ON SYSTEM CVI IF OPEN CVS INKEY$ OR TAB INP OUT TAN DATA INPUT THEN DEFDBL INSTR PEEK TIME$ DEFFN INT POINT TO DEFINT POKE TROFF DEFSNG KILL POS TRON DEFUSR POSN DEFSTR LEFT$ PRINT USING DELETE LET PUT USR DIM LSET EDIT LEN RANDOM VALL ELSE LINE READ VARPTR LIST REM VERIFY LLIST RENAME