O
MC-1000 é um dos computadores mais obscuros já vistos no Brasil.
Dele pouco se sabe, e mesmo os possuidores desta máquina não entendem bem o funcionamento.
Este site é uma tentativa de elucidar alguns mistérios sobre este tão desconhecido item do
passado computacional do Brasil.
O MC-1000 foi lançado pela CCE no ano de 1985,
bem no meio da reserva de mercado. As origens do MC-1000 estão nubladas pelo tempo,
há quem diga que ele seja uma criação original da CCE, mas não há como negar semelhanças
com o micro belga GEM-1000.
Talvez, como era comum na época, o MC-1000 seja apenas mais um clone não-licenciado
pelas empresas originais. Isso aconteceu com várias linhas por aqui, como o ZX-81 e
ZX-Spectrum.
A versão original do MC-1000 saía de fábrica com 16kb de RAM e vídeo com 32x16 caracteres.
A ROM interna do micro suporta até 48kb de RAM, e controlador para 80 colunas, mas não sei
se isso chegou a ser lançado no mercado. O manual cita ainda interfaces de drive com
suporte ao CP/M.
O MC-1000 original contém os seguintes componentes:
- processador Z80 rodando a 3.57MHz
- 16kb de ROM, com BASIC residente e montador de linguagem de máquina
- 16kb de RAM
- controlador de vídeo MC6847 com 6kb de VRAM
- controlador de áudio AY-3-8910
- decodificador de teclado
- interface com fita cassete
Cada um dos módulos opera como descrito abaixo:
ROM
A ROM é mapeada nos endereços do Z80 de C000h a FFFFh. Existe um circuito
adicional na placa para garantir que o Z80 faça o boot no endereço C000h, ao
invés do tradicional 0000h.
RAM
A RAM é mapeada a partir do endereço 0000h, estendendo-se até seu comprimento
total. No caso de RAM com 16kb, ela vai até 3FFFh, e RAM de 48kb vai até BFFFh.
A RAM é testada e habilitada pela ROM durante o boot do micro, sem necessidade
de alteração caso seja feita a expansão para 48kb.
VRAM
Existem dois tipos de VRAM no MC-1000: aquela que suporta o MC6847 nativo,
e aquela que suporta a expansão de 80 colunas MC6845
Para o MC6847 nativo, a VRAM é mapeada de 8000h até 97FFh. Essa faixa de
valores pode dar conflito com RAM expandida para 48kb, por isso há um
mecanismo de mapper. A porta de I/O 80h controla quem está visível para o Z80.
Se o bit 0 for 0, então está ativa a VRAM, e se o bit 0 for 1, então está
ativa a RAM
Na expansão MC6845, a VRAM, de apenas 2kb, é mapeada de 2000h até 27FFh.
Novamente existe uma porta de I/O para controlar o acesso. O bit 0 da porta
12h controla o mapper: se estiver em 0, está ativa a RAM, em 1, está ativa a VRAM.
A lógica de acesso desta porta de I/O é oposta à anterior.
MC6847
O controlador de vídeo MC6847, também usado no TRS Color Computer, é controlado
pela porta de I/O 80h (o manual incorretamente diz que é a porta 00h). Os modos de
operação deste VDP são controlados pelos bits individuais da porta 80h:
bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 |
A/G | A/S | INT/EXT | GM2 | GM1 | GM0 | CSS | VRAM |
O significado de cada bit é como o descrito abaixo:
- A/G: Seleciona modo bitmap (1), ou modo tiled (0).
- A/S: Para o modo tiled, seleciona alfanumérico (0), ou semigráfico (1).
- INT/EXT: Para o modo semigráfico, seleciona 4 pixels/tile (0) ou 6 pixels/tile (1).
- GM0, GM1, GM2: Para o modo bitmap, selecionam a resolução da tela.
- CSS: Em qualquer modo, esse bit seleciona a palette.
- VRAM: Como descrito acima, este bit seleciona se o z80 enxerga a VRAM (0) ou a RAM (1).
Em resumo, os modos possíveis de vídeo são os abaixo:
bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | Nome | Resolução | Cores |
0 | 0 | 0 | X | X | X | X | X | Texto | 32x16 | 2 |
0 | 1 | 0 | X | X | X | X | X | SG4 | 128x64 | 9 |
0 | 1 | 1 | X | X | X | X | X | SG8 | 128x96 | 5 |
1 | X | X | 0 | 0 | 0 | X | X | CG1 | 64x64 | 4 |
1 | X | X | 0 | 0 | 1 | X | X | RG1 | 128x64 | 2 |
1 | X | X | 0 | 1 | 0 | X | X | CG2 | 128x64 | 4 |
1 | X | X | 0 | 1 | 1 | X | X | RG2 | 128x96 | 2 |
1 | X | X | 1 | 0 | 0 | X | X | CG3 | 128x96 | 4 |
1 | X | X | 1 | 0 | 1 | X | X | RG3 | 128x192 | 2 |
1 | X | X | 1 | 1 | 0 | X | X | CG4 | 128x192 | 4 |
1 | X | X | 1 | 1 | 1 | X | X | RG4 | 256x192 | 2 |
O BASIC do MC-1000 só tem suporte nativo a três desses modos, que são:
- TEXT: Corresponde ao modo Texto.
- GR: Corresponde ao modo CG2.
- HGR: Corresponde ao modo RG4.
AY-3-8912
Este gerador de áudio é o mesmo usado no MSX. Ele possui três portas de controle:
a seleção de registrador, que é feita no I/O 20h, a escrita em registrador, feita
no I/O 60h, e a leitura de registrador, no I/O 40h.
O PSG é usado ainda como interface para o decodificador de teclado, através
das portas A e B (registros 14 e 15). Estas portas devem ser programadas por software
de uma maneira específica: a porta A (14) como input, e a porta B (15) como output,
isso é feito no registrador 7.
Teclado
O teclado é matricial 8x8 e ativo baixo. A linha deve ser escrita na
porta A do PSG, já decodificada (isto é, linha 0 deve ser acionada como
11111110b, linha 1 como 11111101b e assim por diante). As colunas são
lidas na porta B. A disposição das teclas na
matriz é como na tabela abaixo:
| bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 |
linha 0 | CONTROL | SHIFT | 8 | 0 | X | P | H | @ |
linha 1 | CONTROL | SHIFT | 9 | 1 | Y | Q | I | A |
linha 2 | CONTROL | SHIFT | : | 2 | Z | R | J | B |
linha 3 | CONTROL | SHIFT | ; | 3 | RETURN | S | K | C |
linha 4 | CONTROL | SHIFT | , | 4 | SPACE | T | L | D |
linha 5 | CONTROL | SHIFT | - | 5 | RUBOUT | U | M | E |
linha 6 | CONTROL | SHIFT | . | 6 | ^ | V | N | F |
linha 7 | CONTROL | SHIFT | / | 7 | | W | O | G |
As teclas CONTROL e SHIFT são curto-circuitadas internamente, de modo que
aparecem como o bit 7 e 6, respectivamente, em todas as linhas da matriz.
Cassete
Toda a comunicação com a fita cassete é feita através de portas de 1 único bit. A leitura é feita através do bit 7 da
porta B do PSG, e a escrita é feita no bit 7 da porta A do PSG. As vias do cassete, teclado e joystick são combinadas
através de junção simples com resistor de pull-up, cujo equivalente lógico é uma porta AND. Dessa maneira,
digitar no teclado ou mexer no joystick irá interferir na manipulação do cassete, caso uma transferência de
dados esteja sendo feita.
Joystick
Existem dois conectores de joystick, que também são ligados na portas do PSG.
Devido à maneira como foi ligado ao PSG, os sinais do joystick comportam-se
como se fossem teclas no teclado. A correspondência entre sinais do joystick
e teclas é a abaixo:
| Joystick A | Joystick B |
Botão | A | @ |
Acima | I | H |
Abaixo | Q | P |
Esquerda | Y | X |
Direita | 1 | 0 |
BrMC-1000: O primeiro emulador de MC-1000. Feito em
java para máxima portabilidade.
Luccas Corp: Site do Eduardo Luccas,
com esquemáticos do MC-1000.
Clube Old Bits: Este site
tem uma página sobre o MC-1000 com várias fotos.
Old Computers:
Este site em inglês possui curiosidades sobre o MC-1000.
Wiki MC-1000:
Criado por Emerson Costa, este wiki em português contém informações detalhadas
e inéditas sobre o MC-1000.
Esta página foi criada por Ricardo Bittencourt com informações tiradas do manual ou
obtidas através de engenharia reversa da ROM do micro. O manual e a ROM foram
gentilmente enviadas pelo correio para mim pelo Giovanni Nunes. O dump eu mesmo fiz em um
leitor de EPROMs. Agradecimentos especiais ao Daniel Ravazzi, Eduardo Luccas,
Muriloq Queiroz, Luciano Sturaro, Leandro Pereira, Emerson Costa e Gildo Bertolo!