Utilizando o SDCC – Small Device C Compiler – Gerando o arquivo executável para o MSX (parte 3 – final)

Finalizando essa série de posts, vamos agora gerar o arquivo executável .COM a partir do arquivo IHX para rodar no MSX-DOS.

A primeira coisa a fazer é instalar as bibliotecas do MSX-DOS no SDCC. Elas podem ser baixadas em http://msx.atlantes.org/index_en.html. Lá você vai encontrar também a descrição de cada uma delas.

  • crt0msx_msxdos.s
  • crt0msx_msxdos_advanced.s
  • types.h
  • putchar.s
  • getchar.s
  • dos.s/dos.h
  • dos2.s/dos2.h
  • interrupt.s/interrupt.h
  • ioport.s/ioport.h
  • conio.c/conio.h
  • heap.c/heap.h
  • keyboard.s/keyboard.h
  • vdp.s/vdp.h
  • mem.c/mem.h

Após o download, será necessário “assemblar” e compilar as bibliotecas antes de copiá-las para os diretórios correspondentes. O SDCC já deverá estar instalado. Basta seguir o procedimento abaixo.

Para os arquivos extensão  .S
– sdasz80 -o nome do arquivo.S
Ex.: sdasz80 -o crt0msx_msxdos.s

Para os arquivos extensão .C
– sdcc -c -o nome do arquivo.C
Ex.: sdcc -mz80 -c -o conio.rel conio.c

Sempre que for feita uma referência a algum comando contido nessas bibliotecas, será necessário referenciá-la através do comando INCLUDE no programa, como nos exemplos abaixo:

#include “conio.h”
#include “dos.h”

Copie todos os arquivos com extensão .H e .REL para dentro do diretório INCLUDE do SDCC.
Será necessário também um pequeno ajuste no Eclipse para ele executar corretamente. Clique no menu Project / Properties / C-C++ Build / SDCC Assembler. Substitua o comando AS51 por S51.

Abaixo temos um exemplo de um programa para testar o compilador.

void main(void)
{
puts(“Hello, world :-)rn”);
exit(0);
}

Para compilá-lo, utilize o linha de comando abaixo no prompt da linha de comandos:

sdcc -mz80 –code-loc 0x0107–data-loc 0 –no-std-crt0 crt0msx_msxdos.rel putchar.rel getchar.rel dos.rel conio.rel <nome do arquivo.C>

Onde:

–no-std-crt0: Indica que o compilador não deve utilizar o código padrão para o Z80
0x0107 : Código de localização do crt0msx_msxdos.rel. Para utilizar o crt0msx_msxdos_advanced utilize o código 0x0178.

Caso você faça referência a outras bibliotecas no seu arquivo-fonte, inclua todas elas na linha de comando do compilador.

Não se esqueça de colocar o nome do arquivo (último parâmetro).

Para finalizar, basta converter o arquivo .IHX para .COM. Será necessário utilizar o programa HEX2BIN. Ele pode ser baixado em http://gnuwin32.sourceforge.net/packages/hex2bin.htm.

Sua sintaxe é simples.

hex2bin <nome do arquivo.ihx>

Ele gerará um arquivo binário no formato (.BIN). Basta renomeá-lo para (.COM) para ele rodar no MSX-DOS.

Mais informações podem ser encontradas em http://msx.atlantes.org/index_en.html

Esta entrada foi publicada em MSX com as tags , , , , . ligação permanente.