MSXInício
ApêndicesDisponível

Apêndices

Consulta rápida: erros comuns, mapa de memória, limites conhecidos e a lista resumida dos comandos.

Apêndice A — Erros comuns

  • Type mismatch in expression: Você está misturando tipos incompatíveis.
  • Variable 'X' not declared: Toda variável precisa de um DIM antes do primeiro uso.
  • Array index out of bounds: Um índice constante passa do tamanho declarado.
  • Expected 'END IF' or 'ELSE': Você abriu um IF mas esqueceu o END IF.
  • FOR variable redeclared: Você tem dois FORs aninhados usando a mesma variável.

Apêndice B — Mapa de memória do MSX1

FaixaUso
$0000–$3FFFROM do BIOS do MSX1 (16 KB)
$4000–$BFFFCartucho — sua ROM (até 32 KB)
$C000–$C1FFStack e área de scratch da runtime CSX
$C200–$E7FFVariáveis e arrays do seu programa (~9.5 KB)
$E800–$EFFFReservado para buffers (INPUT, etc)
$F000–$FFFFBIOS work area (não mexer)

DICA

Cartucho > 64 KB

Com PLAYBANK ou USES GRAPHICSBANK, o CrossScript gera uma MegaROM ASCII8 de 64 KB ou mais, até 2 MB. O programa continua limitado a 32 KB; música e gráficos ficam nos bancos adicionais. Não é uma promoção automática de qualquer código grande. Veja o capítulo 17 para gráficos e o 16 para música.

Apêndice C — Limites conhecidos desta versão

ÁreaSituação
RecursãoNão suportada: uma procedure não pode chamar a si mesma, nem direta nem indiretamente, porque parâmetros e variáveis locais ocupam endereços fixos e seriam sobrescritos. Use um laço com um array como pilha. Veja o capítulo 18.
DIM em procedureCompartilha a área global de variáveis.
V9968Disponível na edição gratuita. O giro geométrico da unidade de rotação ainda é parcial; uso comercial exige autorização do autor do chip.
Emulador internoNão reproduz o som FM (MSX-MUSIC). Use o WebMSX para ouvir .PRO.
Paleta no meio do quadroTrocas durante o desenho da tela não têm tempo exato no emulador interno.
Cartucho ASCII8Música e gráficos opt-in nos bancos adicionais; até 2 MB com programa nos primeiros 32 KB. Não segmenta o código.
LOOP / UNTILPalavras reservadas; o laço ainda não existe.

Apêndice D — Referência completa dos comandos

Todos os comandos e funções que o compilador reconhece, em ordem de assunto. Entre colchetes [ ] ficam as partes opcionais; a coluna Cap. indica onde o comando é explicado com exemplos.

Estrutura do programa

ComandoO que fazCap.
USES recurso, ...declara os recursos usados (SCREEN n, SPRITES, TILES, SOUND, MUSIC, KEYBOARD, RANDOM, PAINT, BPRINT, BOBS, PAGES, MAPPER, SCROLL, SCROLL2, SCROLL4, PALETTE, DISK, PT3, PRO, MACHINE MSX2/MSX2+/V9968)2
MEMORY 16K | 32K | AUTO [, MAPPER]tamanho do cartucho e uso do mapper26
MEMORY COM NAME "NOME" [NEXTOR] / MEMORY DSK ...gera programa .COM ou disco .DSK31
CONST nome = valorconstante3
DIM var AS tipo [= valor] / DIM arr(n) AS tipovariável ou array3, 5
VAR nome: ARRAY(n) OF tipo = (v1, v2, ...)array com valores iniciais5
DATA n, ... / READ var, ... / RESTORE [rótulo]tabelas de números5
PROCEDURE nome(p AS tipo, ...) BEGIN ... ENDprocedimento8
FUNCTION nome(p AS tipo) AS tipo BEGIN ... RETURN valor ... ENDfunção8
ASM ... END ASM / ASM "instruções"Z80 escrito à mão (@var = endereço da variável)18
ENDtermina o programa2

Tipos: BYTE, WORD, INT, BOOL (TRUE/FALSE), STRING, XPTR. As palavras TYPE, RECORD, REPEAT, UNTIL, DO e LOOP estão reservadas para versões futuras.

Decisões e repetições

ComandoO que fazCap.
IF c THEN ... ELSEIF c THEN ... ELSE ... END IF (ou ENDIF)decisão6
FOR v = a TO b [STEP s] ... NEXT [v] / FOR v = a DOWNTO bcontagem (STEP negativo conta para trás)7
WHILE c ... WEND (ou END WHILE)repete enquanto c for verdadeiro7
GOTO rótulo / GOSUB rótulo ... RETURNsaltos e sub-rotinas8
LET v = valoratribuição (o LET é opcional; := também vale)3

Operadores: + - * / MOD, SHL SHR, AND OR XOR NOT, ~ (inverte bits), = <> < <= > >= (capítulo 4).

Texto, tela e tempo

ComandoO que fazCap.
SCREEN nmodo de vídeo (0, 1, 2, 3, 4, 5, 7, 8)10
SCREEN OFF / SCREEN ONapaga e acende a imagem (desenhar com a tela apagada não aparece)10
CLSlimpa a tela10
COLOR frente [, fundo [, borda]]cores10
LOCATE col, linposição do cursor10
PRINT a; b, cescreve (; no fim mantém na mesma linha)2, 9
BPRINT col, lin, texto, cor [, fundo]texto em modos gráficos (SCREEN 2, 4, 5)19
BPRINT SIZE ntamanho da letra do BPRINT em SCREEN 5 (1 a 7)19
DELAY nespera n quadros (1/60 s)10
WAITespera o próximo quadro10
ON VBLANK GOSUB rótulochama a rotina 60 vezes por segundo16
CPU R800 / CPU Z80troca o processador (só Turbo R)28

Gráficos em bancos do cartucho

ComandoO que fazCap.
USES GRAPHICSBANKhabilita dados gráficos em MegaROM ASCII817
GFXDATA nome, bytes...declara um bloco gráfico fora dos 32 KB do programa17
GFXLOAD nome, destino [, offset, quantidade [, página64K]]transfere bytes crus dos bancos para VRAM17
GFXCOPY nome, array [, offset, quantidade]transfere para ARRAY OF BYTE em RAM17

Teclado, joystick e sorteio

Comando / funçãoO que fazCap.
STICK(p)direção do joystick/setas (0 parado, 1 a 8 no sentido do relógio)11
STRIG(p)botão de tiro / espaço11
KEY(tecla)TRUE se a tecla está apertada (KEY("A"), KEY(SPACE)...)11
INPUT ["pergunta";] varlê um número ou texto11
INPUT$(n) (ou INPUTS(n))espera n teclas9
RND(n)número sorteado de 1 a n12
RANDOMIZE [semente]embaralha o sorteio12
LEN(s)tamanho de um texto9

Desenho (USES PAINT)

Comando / funçãoO que fazCap.
PSET (x, y), corum ponto13
POINT(x, y)cor de um ponto13
LINE (x1,y1)-(x2,y2), cor [, B | BF]reta, caixa ou caixa cheia13
CIRCLE (x,y), raio, cor [, CF [, cor2]]círculo vazado, cheio ou quadriculado13
PAINT (x,y) [, cor [, borda]]pinta área fechada13
DRAW "U D L R M C"desenho com caneta13
GET (x1,y1)-(x2,y2), buf / PUT (x,y), buf [, PSET|OR|AND|XOR]copia e cola pedaços da tela13

Blocos (USES TILES)

ComandoO que fazCap.
TILECREATE n, b1..b8desenha o bloco n (16 bytes em SCREEN 2/4 incluem as cores)14
TILE col, lin, n [, cor]põe o bloco n na tela14
TILECOLOR grupo, frente, fundocores de um grupo de 8 blocos14
TILETRANSPARENT ON | OFFcor 0 do bloco deixa ver o fundo (SCREEN 5)14
TILEMAPLOAD inicio, qtd, arraycarrega vários blocos de uma vez14
TILEROLL n, dir, pontosgira o desenho de um bloco14
TILEFX n, efeito [, p]efeitos prontos no desenho do bloco14
BLOCKMOVE orig, trab, dir, submove um objeto de 2×2 blocos14
SCENERY(mapa) / SCENERYRLE(mapa)desenha a tela inteira de um mapa14

Sprites (USES SPRITES)

Comando / funçãoO que fazCap.
SPRITECREATE padrao, b1..b8desenho de um sprite 8×815
SPRITE n, x, y, padrao, corpõe o sprite na tela15
SPRITECOLOR n, cortroca a cor15
SPRITESIZE 0 | 1sprites 8×8 ou 16×1615
SPRITEMAG 0 | 1ampliação em dobro15
METASPRITE n, x, y, padrao, corbloco 32×32 com 4 sprites15
COLLISION()TRUE se dois sprites se tocaram15

Som e música

Comando / funçãoO que fazCap.
SOUND canal, freq, volume [, grosso]toca um tom16
SOUND NOTE canal, nota, volumetoca uma nota16
SOUND NOISE período, volume [, canais] / SOUND ENV período, forma / SOUND MIX tons, ruídosruído, envelope e mixer16
SOUND REG r, v / SOUND OFFregistrador do PSG / silêncio16
PSGREG(r)lê um registrador do PSG32
PLAYMUSIC rótulo | endereço / PAUSEMUSIC / STOPMUSIC / TICKMUSICmúsica embutida (USES MUSIC)16
PLAYPT3 end / TICKPT3 / STOPPT3músicas PT3 (USES PT3)32
PLAYPRO end / TICKPRO / STOPPRO / PRONOTE(c) / PROVOL(c)músicas MSX-MUSIC (USES PRO)32

Memória e portas

Comando / funçãoO que fazCap.
PEEK(end) / POKE end, vlê e grava na RAM17
VPEEK(end) / VPOKE end, vlê e grava na memória de vídeo17
IN(porta) / OUT porta, vportas do Z8017
XPTR(seg, end)endereço além dos 64 KB (USES MAPPER)25

MSX 2: bitmap, BOBs e telas prontas

ComandoO que fazCap.
PALETTE cor, r, g, bmuda uma cor da paleta (0 a 7 cada)19
BOB CREATE slot, dados, w, h / BOB CREATEBIG ...cria um objeto animado20
BOB MOVE slot, x, y / BOB ERASE slot / BOB HFLIP slotmove, apaga, espelha20
BOB PAGEFLIP ON | OFF / BOB FLIP / BOB SYNCduas páginas sem piscar20
PAGELOAD nome [, página]carrega uma tela pronta (USES PAGES)21

Scroll

ComandoO que fazCap.
SCROLL dx, dy / SCROLLCONFIG x, y, w, h / SCROLLMAP w, h, mapajanela e mapa de scroll (MSX 1)22
SCROLLTILE dx, dy [, linhas] / SCROLLTILES qtd, padrões, corescasa a casa e ponto a ponto em SCREEN 122
SMOOTHROLL dir, pontos, l1, l2, modo (ou SCROLLFINE) / SMOOTHROLLMIX ...rola faixas da tela; paralaxe22
BLOCKROLL bloco, dir, pontosgira um objeto 2×222
VSCROLL y / VSCROLL ROW n / VSCROLL FINE INIT + VSCROLL FINE nrolagem vertical22
SCROLL2 VIEWPORT x, y, w, h / HSTRIP id, pág, sx, sy, dy, h, vel / VSCROLL v / HADJUST n / TICK / STOPscroll em SCREEN 523
SCROLL4 MAP mapa, w, h / HSCROLL v / VSCROLL v / HUD n / HUD REFRESH / BAND id, l1, l2, div / BANDOFF / MASK ... / FRAME / TICK / STOPscroll em SCREEN 424
SCROLL4SUB()posição fina atual do SCROLL424

Disco (USES DISK)

Comando / funçãoO que fazCap.
LOADFILE "NOME.EXT", end [, status]carrega um arquivo na memória27
DIRFIRST "*.EXT", nome [, status] / DIRNEXT nome [, status]lista arquivos27
DSKERR() / DSKVER()último erro / versão do DOS32

V9968 (USES MACHINE V9968)

ComandoO que fazCap.
V9968 INIT / V9968 WAIT / V9968 DETECT var / VDPID()liga, espera o chip, detecta28
V9968 FILL / COPY / MOVE / CLEAR / LOAD / SAVEblocos de memória de vídeo28
V9968 PSET / POINT / LINE / BOX [, FILL] / CIRCLEdesenho pelo chip28
V9968 WINDOW / ROTATE / ROTATE ANGLE / ZOOM / ZOOM SEQ / FLIP H|Vgiro, zoom e espelho28
V9968 LOGIC IMP|AND|OR|EOR|NOT|TIMP...modo de desenho28
V9968 PALETTE i, r, g, b / PALETTE LOAD / FADE / CYCLEpaleta28
V9968 PAGE p / SHOW p / SCROLL x, ypáginas e scroll28
V9968 SPRITE MODE n / SPRITE SHEET / SPRITE PUT / SPRITE ENDsprites do modo 328
V9968 INTERRUPT linha GOSUB rótulo / INTERRUPT OFFinterrupção por linha28

GEO3D (coprocessador 3D, junto com o V9968)

ComandoO que fazCap.
GEO3D INITprepara o chip e a câmera28
GEO3D MODEL vértices, nv, arestas, naenvia um modelo28, 29
GEO3D ROTATE ax, ay / GEO3D MOVE tx, ty, tzgira e posiciona28
GEO3D COLOR c / GEO3D LOGIC IMP|AND|OR|XOR|NOTcor e modo das linhas28
GEO3D RUNdesenha o modelo28
Comunidade

Discussão · Apêndices

Curta, marque como lido e comente o que achou deste capítulo.

0 comentários
Entre para participar
Crie uma conta ou faça login para curtir, marcar como lido e comentar.

Carregando comentários…