Rotinas da BIOS do MSX 1


  A seguir são listadas as rotinas da BIOS do MSX 1. Utilize o Livro Vermelho do MSX [1] para maiores detalhes sobre cada rotina.


  1. Gerais

Endereço Nome Inicio Descrição
0000H CHKRAM 02D7H Partida, verifica RAM
0004H ...... ...... Dois bytes, endereço do conjunto de caracteres da ROM
0006H ...... ...... Um byte, número da porta de dados do VDP
0007H ...... ...... Um byte, número da porta de dados da VDP
0008H SYNCHR 2683H Verifica o caractere do programa BASIC
000BH ...... ...... NOP
000CH RDSLT 01B6H Lê a RAM em qualquer slot
000FH ...... ...... NOP
0010H CHRGTR 2686H Obtém o próximo caractere do programa BASIC
0013H ...... ...... NOP
0014H WRSLT 01D1H Escreve na RAM em qualquer slot
0017H ...... ...... NOP
0018H OUTDO 1B45H Envia dados para o dispositivo corrente
001BH ...... ...... NOP
001CH CALSLT 0217H Chama rotina em qualquer slot
001FH ...... ...... NOP
0020H DCOMPR 146AH Compara os pares de registradores HL e DE
0023H ...... ...... NOP
0024H ENASLT 025EH Ativa qualquer slot permanentemente
0027H ...... ...... NOP
0028H GETYPR 2689H Obtém o tipo de operando em BASIC
002BH ...... ...... Cinco bytes: número da versão
0030H CALLF 0205H Chama rotina em qualquer slot
0033H ...... ...... Cinco NOPs
0038H KEYINT 0C3CH Controle da interrupção, varredura do teclado


  2. Inicializações de E/S

Endereço Nome Inicio Descrição
003BH INITIO 049DH Inicializa dispositivos de E/S
003EH INIFNK 139DH Inicializa teclas de funções


  3. VDP - Gráficos

Endereço Nome Inicio Descrição
0041H DISSCR 0577H Desabilita a tela
0044H ENASCR 0570H Habilita a tela
0047H WRTVDP 057FH Escreve em qualquer registro do VDP
004AH RDVRM 07D7H Lê um byte da VRAM
004DH WRTVRM 07CDH Escreve um byte na VRAM
0050H SETRD 07ECH Prepara a VDP para leitura
0053H SETWRT 07DFH Prepara a VDP para escrita
0056H FILVRM 0815H Preenche um bloco da VRAM com um byte
0059H LDIRMV 070FH Copia um bloco da VRAM para a memória
005CH LDIRVM 0744H Copia um bloco da memória para a VRAM
005FH CHGMOD 084FH Muda o modo do VDP (screen n)
0062H CHGCLR 07F7H Muda as cores do VDP
0065H ...... ...... NOP
0066H NMI 1398H Controle da interrupção não-mascarada
0069H CLRSPR 06A8H Limpa todos os sprites
006CH INITXT 050EH Inicializa o VDP no modo texto 40x24
006FH INIT32 0538H Inicializa o VDP no modo texto 32x24
0072H INIGRP 05D2H Inicializa o VDP no modo gráfico (screen 2)
0075H INIMLT 061FH Inicializa o VDP no modo multicolour (screen 3)
0078H SETTXT 0594H Ajusta o VDP no modo texto 40x24
007BH SETT32 05B4H Ajusta o VDP no modo texto 32x24
007EH SETGRP 0602H Ajusta o VDP no modo gráfico (screen 2)
0081H SETMLT 0659H Ajusta o VDP no modo multicolour (screen 3)
0084H CALPAT 06E4H Calcula o endereço do padrão do sprite
0087H CALATR 06F9H Calcula o endereço do atributo do sprite
008AH GSPSIZ 0704H Obtém o tamanho do sprite
008DH GRPPRT 1510H Imprime um caractere na tela gráfica


  4. PSG - Sons

Endereço Nome Inicio Descrição
0090H GICINI 04BDH Inicializa o PSG (GI Chip)
0093H WRTPSG 1102H Escreve em qualquer registro do PSG
0096H RDPSG 110EH Lê qualquer registro do PSG
0099H STRTMS 11C4H Começa a desenfileirar a música


  5. Teclado

Endereço Nome Inicio Descrição
009CH CHSNS 0D6AH Testa o estado do buffer de teclado
009FH CHGET 10CBH Obtém um caractere do teclado (espera)
00A2H CHPUT 08BCH Imprime caractere na tela
00A5H LPTOUT 085DH Saída de caractere para a impressora
00A8H LPTSTT 0884H Teste de status para a impressora
00ABH CNVCHR 089DH Converte caractere com cabeçalho gráfico
00AEH PINLIN 23BFH Obtém linha do console (editor)
00B1H INLIN 23D5H Obtém linha do console (line input)
00B4H QINLIN 23CCH Mostra "?", obtém linha do console (input)
00B7H BREAKX 046FH Verifica as teclas CONTROL+STOP diretamente
00BAH ISCNTC 03FBH Verifica as teclas CONTROL+STOP
00BDH CKCNTC 10F9H Verifica as teclas CONTROL+STOP
00C0H BEEP 1113H Dá um BEEP
00C3H CLS 0848H Limpa a tela (CLS)
00C6H POSIT 088EH Posiciona o cursor
00C9H FNKSB 0B26H Verifica se as teclas de função estão ativas
00CCH ERAFNK 0B15H Apaga a exibição das teclas de função
00CFH DSPFNK 0B2BH Mostra as teclas de função
00D2H TOTEXT 083BH Altera o VDP para o modo texto


  6. Joysticks

Endereço Nome Inicio Descrição
00D5H GTSTCK 11EEH Obtém o estado do joystick
00D8H GTTRIG 1253H Obtém o estado do botão de tiro
00DBH GTPAD 12ACH Obtém o estado touch pad
00DEH GTPDL 1273H Obtém o estado do paddle


  7. Cassete

Endereço Nome Inicio Descrição
00E1H TAPION 1A63H Dispara o gravador e lê a fita
00E4H TAPIN 1ABCH Lê a fita
00E7H TAPIOF 19E9H Pára de ler a fita
00EAH TAPOON 19F1H Liga o gravador e começa a gravar
00EDH TAPOUT 1A19H Escreve dados na fita
00F0H TAPOOF 19DDH Termina a gravação na fita
00F3H STMOTR 1384H Liga/desliga o motor do gravador


  8. Fila da música

Endereço Nome Inicio Descrição
00F6H LFTQ 14EBH Espaço restante na fila de música
00F9H PUTQ 1492H Insere byte na fila de música


  9. Gráficas

Endereço Nome Inicio Descrição
00FCH RIGHTC 16C5H Move o pixel para a direita
00FFH LEFTC 16EEH Move o pixel para a esquerda
0102H UPC 175DH Move o pixel para cima
0105H TUPC 173CH Testa se UPC é legal
0108H DOWNC 172AH Move o pixel para baixo
010BH TDOWNC 170AH Testa se DOWNC é legal
010EH SCALXY 1599H Reescala as coordenadas gráficas
0111H MAPXYC 15DFH Mapeia coordenadas gráficas para endereço físico
0114H FETCHC 1639H Busca o endereço físico do pixel
0117H STOREC 1640H Armazena o endereço físico do pixel
011AH SETATR 1676H Seleciona a cor da frente (ink)
011DH READC 1647H Lê a cor do pixel
0120H SETC 167EH Muda a cor do pixel atual
0123H NSETCX 1809H Muda a cor de N pixels à direita
0126H GTASPC 18C7H Obtém a proporção
0129H PNTINI 18CFH Inicia a pintura
012CH SCANR 18E4H Escaneia os pixels à direita
012FH SCANL 197AH Escaneia os pixels à esquerda


  10. Misc

Endereço Nome Inicio Descrição
0132H CHGCAP 0F3DH Acende ou apaga a luz do Caps Lock
0135H CHGSND 0F7AH Modifica o som do clique do teclado
0138H RSLREG 144CH Lê o registro do slot primário
013BH WSLREG 144FH Escreve no registro do slot primário
013EH RDVDP 1449H Lê o estado do registro do VDP
0141H SNSMAT 1452H Lê uma linha da matriz do teclado
0144H PHYDIO 148AH E/S de disquete
0147H FORMAT 148EH Formata disquete
014AH ISFLIO 145FH Verifica pela E/S de arquivo
014DH OUTDLP 1B63H Saída formatada para impressora
0150H GETVCP 1470H Obtém o ponteiro para o canal de música
0153H GETVC2 1474H Obtém o ponteiro para o canal de música
0156H KILBUF 0468H Limpa o buffer de teclado
0159H CALBAS 01FFH Chama o BASIC de qualquer slot
015CH ...... ...... NOPs até 01B5H para expansão


  Obs: O apêndice do Livro Técnico do MSX 2 [2] apresenta as subrotinas do MSX 2.



  Sub-rotinas do interpretador Basic do MSX

AUTO	49B5H | DELETE	53E2H | LIST	522EH | READ	4B9FH
BASE	7B5AH | DIM	5E9FH | LLIST	5229H | REM	485DH
BEEP	00C0H | DRAW	5D6EH | LOAD	6B5DH | RENUM	5468H
BLOAD	6EC6H | DSKO$	7C16H | LOCATE	7766H | RESTORE	63C9H
BSAVE	6E92H | ELSE	485DH | LPRINT	4A1DH | RESUME	495DH
CALL	55A8H | END	63EAH | LSET	7C48H | RETURN	4821H
CIRCLE	5B11H | ERASE	6477H | MAX	7E4BH | RSET	7C4DH
CLEAR	64AFH | ERROR	49AAH | MERGE	6B5EH | RUN	479EH
CLOAD	703FH | FIELD	7C52H | MOTOR	73B7H | SAVE	6BA3H
CLOSE	6C14H | FILES	6C2FH | NAME	7C20H | SCREEN	79CCH
CLS	00C3H | FOR	4524H | NEW	6286H | SET	7C1BH
CMD	7C34H | GET	775BH | NEXT	6527H | SOUND	73CAH
COLOR	7980H | GOSUB	47B2H | ON	48E4H | SPRITE	7A48H
CONT	6424H | GOTO	47E8H | OPEN	6AB7H | STOP	63E3H
COPY	7C2FH | IF	49E5H | OUT	4016H | SWAP	643EH
CSAVE	6FB7H | INPUT	4B6CH | PAINT	59C5H | TIME	7911H
DATA	485BH | IPL	7C2AH | PLAY	73E5H | TROFF	6439H
DEF	501DH | KEY	786CH | POKE	5423H | TRON	6438H
DEFDBL	4721H | KILL	7C25H | PRESET	57E5H | VDP	7B37H
DEFINT	471BH | LET	4880H | PRINT	4A24H | VPOKE	7BE2H
DEFSNG	471EH | LFILES	6C2AH | PSET	57EAH | WAIT	401CH
DEFSTR	4718H | LINE	4B0EH | PUT	7758H | WIDTH	51C9H



  Referências:

  [1] - O Livro Vermelho do MSX, Avalon Software, editora McGraw Hill.
  [2] - MSX2 Technical Handbook, ASCII Corporation, 1987.


MarMSX 2018