Segredos do MC-1000

Introdução

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.

A Origem

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.

Hardware

O MC-1000 original contém os seguintes componentes:

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 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0
A/GA/SINT/EXTGM2GM1GM0CSSVRAM

O significado de cada bit é como o descrito abaixo:

Em resumo, os modos possíveis de vídeo são os abaixo:

bit 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0NomeResoluçãoCores
000XXXXXTexto32x162
010XXXXXSG4128x649
011XXXXXSG8128x965
1XX000XXCG164x644
1XX001XXRG1128x642
1XX010XXCG2128x644
1XX011XXRG2128x962
1XX100XXCG3128x964
1XX101XXRG3128x1922
1XX110XXCG4128x1924
1XX111XXRG4256x1922

O BASIC do MC-1000 só tem suporte nativo a três desses modos, que são:

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 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0
linha 0CONTROLSHIFT80XPH@
linha 1CONTROLSHIFT91YQIA
linha 2CONTROLSHIFT:2ZRJB
linha 3CONTROLSHIFT;3RETURNSKC
linha 4CONTROLSHIFT,4SPACETLD
linha 5CONTROLSHIFT-5RUBOUTUME
linha 6CONTROLSHIFT.6^VNF
linha 7CONTROLSHIFT/7WOG

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 AJoystick B
BotãoA@
AcimaIH
AbaixoQP
EsquerdaYX
Direita10

Links e créditos

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!

Copyright © 2004 Ricardo Bittencourt