- Hitech-C
- Aztech-C
- BDS-C
- MSX-C
- Solid-C
Embora todas tem seus méritos e deficiências, aqui vamos focar principalmente no MSX-C, por ser o C oficial da ASCII, que já conta com uma boa biblioteca nativa para MSX 1 e MSX 2, suportando inclusive o MSX-DOS 2.
Entretanto, nem tudo são flores, o MSX-C tem algumas limitações que podem dificultar um pouco a tarefa de programar, principalmente para iniciantes. Apenas para citar um exemplo, nativamente ele suporta apenas o tipo INT (numéricamente falando), nao tendo FLOAT, LONG ou SHORT. Isto pode ser contornado usando a bibilioteca MATH, que suporta os tipos XDOUBLE e SLONG. Na prática isso significa que você não pode ter algo como:
#include <stdio.h>
int main(argc, argv)
int argc;
char *argv[];
{
float x,y,r;
x = 2.45;
y = 0.75;
a = x + y;
printf("Resultado: %3.2f", a);
return 0;
}
que deve ser escrito como:
#include <stdio.h>
#include <math.h>
int main(argc, argv)
int argc;
char *argv[];
{
XDOUBLE x,y,r;
atoxd(&x,"2.45");
atoxd(&y,"0.75");
xdadd(&a,&x,&y);
printf("Resultado: %3.2f", &a);
return 0;
}
XDOUBLE é uma estrutura de 8 bytes e SLONG uma de 4 bytes. As rotinas do MATHPACK são relativamente eficientes, não sendo muito diferentes do que temos no MSX-BASIC, bastando apenas se acostumar com um pouco de malabarismo em contas de ponto flutuante ou inteiros longos.
Perceba que no exemplo ainda temos mais um porém que dificulta um pouco o uso do MSX-C, principalmente para quem está acostumado com C relativamente mais moderno (pós ANSI). O MSX-C foi criado um pouco antes do padrão ANSI ser definido, então ele é o que chamamos de pré-ANSI. Na verdade, algumas pessoas chamam erroneamente de padrão K&R, pois os primeiros compiladores foram baseados no livro "The C Programming Language", de Brian Kernighan e Dennis Ritchie, conhecidos como K&R. Só que isto não era um padrão de fato. A padronização veio pela ANSI apenas em 1989, e as versões do MSX-C tem as seguintes datas de lançamento:
- Versão 1.00, Outubro de 1983. Portada do CP/M e usando instruções do 8080.
- Versão 1.10, Junho de 1987: Nativa de MSX e usando instruções do Z80.
- Versão 1.20, Agosto de 1988: Nativa do MSX-DOS 2.0.
Para finalizar, é claro que estamos falando de programar diretamente no MSX, o que é tortuoso por natureza (embora eu adore), querendo suporte para ferramentas mais modernas, você pode utilizar o SDCC (que aliás, por estes dias, recebeu um ótimo pacote de bibliotecas nativas para MSX, chamdado de FUSION-C, que pode ser baixado AQUI e inclusive acompanha um livro que pode ser adquirido na AMAZON, eu já garanti minha cópia e aguardo ansiosamente a sua chegada).
Ainda existem outros compiladores como o z88dk e o ccz80 / ccz80++, que apesar de não serem diretamente C, são muito próximas e tem bibliotecas para MSX também.
O Hitech-C poderia ser uma opção de cross compiler também, porém a versão mais recente ainda é para MS-DOS, e não está mais disponível para compra, o que gera uma camada a mais de complicação. O saudoso Adriano Cunha também usou um emulador CP/M que permitia usar o Hitech-C de CP/M no MS-DOS, mas hoje também gera uma camada de complicação desnecessária, sendo mais fácil programar diretamente no MSX.
Eu particularmente uso dois ambientes, o MSX real (um Turbo-R GT, com 4Mb de mapper externa, e uma SD/Mapper de 512Kb), uso o MSX-C 1.2, como editor uso o MED (o de MSX 2.0) e o AKID, e jogo tudo em RAMDisk para acelerar o processo de compilação. O outro ambiente é no PC, onde uso o UltraEdit com suporte de sintaxe para Z80 (M80/L80) e MSX-C, e usdo o OpenMSX montando o diretório do arquivos .C, a compilação eu faço com um script que acelera o emulado ao máximo. Em ambos os casos sempre utilizando um mínimo de MSX 2.0 com Mapper e MSX-DOS 2.0, mesmo quando o programa não necessitaria destes recursos.
O objetivo desta série de artigos é simplesmente mostrar que podemos nos divertir programando em C para MSX, já que no geral os usuários tem uma ideia de que tirando ASM e BASIC, temos apenas o Pascal, mas o C é mais eficiente do que o Pascal, permite a compilação por módulos, permite linkar com programas em ASM sem usar INCLUDE, e é uma linguagem mais próxima ao hardware.
Vou comentar sobre outros compiladores, mas no geral os artigos vão ser baseados em MSX-C principalmente e em SDCC secundáriamente.
Não sou EXPERT (sic) em MSX, em C, em BASIC ou em ASM, não confie totalmente nestes artigos, procure mais informações e experimente. Tudo que escrevo é únicamente baseado na minhas experiência e nos equiapmentos que possuo.
Nenhum comentário:
Postar um comentário