quarta-feira, 26 de janeiro de 2011

Memory Mapper

A Expansão de Memória Oficial do MSX

Quem curte MSX com certeza já ouviu falar da Memory Mapper. Em 1984, quando o MSX foi lançado, o padrão previa que os micros poderiam ter entre 16Kb e 64Kb de memória RAM (este limite de 64Kb era impetrado pelo processador central, o Z80). Entretanto, já em 1986 este limite precisava ser superado, e assim o modelo de memória do MSX foi (re)definido e a Memory Mapper oficializada para o padrão.

Com o advento da Memory Mapper, os novos MSX 2.0 chegaram ao mercado já com 256Kb de RAM, e com a possibilidade de alcançar o incrível montante de 4Mb de RAM (por Mapper), que era algo quase inimaginável naquela época.

Com esta nova capacidade de memória o MSX ganhou jogos muito mais ricos e detalhados, além de programas muito mais poderosos como o MSX-DOS 2, que foi lançado no final de 1988 trazendo suporte a Hard Disk e diversas inovações importantes como Drive Virtual, sub-diretórios e uma estrutura funcional que se assemelhava muito ao MS-DOS 3.3 (lançado para o PC quase na mesma época).

Entretanto, muito misticismo e até alguma confusão sempre se formou em torno da Memory Mapper, e por mais que muito tenha sido dito, pouco realmente foi ensinado sobre ela e seu funcionamento. Curiosamente, o manuseio da Memory Mapper é extremamente simples, rápido e eficiente, e é isso que o artigo aqui apresentado pretende demonstrar.

Para saber mais sobre a Memory Mapper, como programá-la e usá-la (inclusive no Basic), visite o artigo completo com explicações as detalhadas, diagramas de memória e programas exemplo em MSX-ALL Wiki.

Links Importantes:

9 comentários:

  1. Parabéns, ficou ótimo, um tema a propor seria uma análise aprofundada sobre o Turbo R, As literaturas estão em japonês. Valeu e até mais.

    ResponderExcluir
  2. É uma ideia interessante explorar o MSX Turbo-R, até porque ainda hoje tem gente que não sabe muito bem o que existe de especial neste MSX.

    Entretanto, uma análise aprofundada seria algo gigantesco de se fazer. Mais fácil será explorar o que cada versão de MSX Trubo-R traz de novo, e assim criar pequenos tópicos explorando cada um destes itens.

    Vou colocar na pauta. Obrigado pela ideia!

    ResponderExcluir
  3. Olá Julio,

    gostaria de saber mais sobre o cartucho de 80 colunas da Gradiente, o CT-80 NET, que tem uma RS-232 incorporada. Havia anúncios nas revistas da época (Micro Sistemas e CPU) sobre uma forma de utilizar o MSX como terminal de um IBM-PC para utilizar o Lotus 1-2-3, Wordstar e outros. Imagino que tenha sido uma estrutura parecida com os consoles seriais do Unix, mas nunca achei informação técnica a respeito. Pode escrever algo a respeito?

    Abraço,

    Marcelo.

    ResponderExcluir
  4. Parabens pela iniciativa. Recebo os emails da Lista MSX-ALL e, embora nao seja muito participativo, gosto de ler assuntos interessantes como esse pro nosso eterno MSX..

    Continue assim!

    abraços

    ResponderExcluir
  5. Valeu Julio Gostei, coloca na pauta ai sobre o futuro o msx 3 com o Z382 .


    Abraço

    ResponderExcluir
  6. Parabéns Julio.

    Minha sugestão é trabalhar um pouco em cima das interfaces de drive por portas e por memória. Quem sabe com análise detalhada do esquema de alguma delas? Um abraço and keep up the good work! :D

    ResponderExcluir
  7. parabens, julio, muito bom. voce sabe se a mapper 256K simplificada do Danjovic e funcional ou tem limitacoes,devido seu reduzido numero de chip.
    ela e bem simples de implementar, sera preciso a rom bios modificada ?
    valeu ate mais.

    ResponderExcluir
  8. Domafero,

    Analizando mais detalhadamente o circuito do Danjovic eu posso te responder que:

    1) É uma Mapper 100% funcional!
    2) O curcuito é simples porque aproveita muita coisa que já existe na placa do MSX 1 para o endereçamento e refresh das RAMs. Em termos gerais, esta Mapper do Danjovic implementa "apenas" o circuito de chaveamento e as memórias extras;
    3) Parece ser simples de adaptar para qualquer MSX 1, mas o desenho das plaquinhas é enfocado no Expert e no HotBit. Ele está praticamente pronto para uso, necessitando apenas uns ajustes finos no que tange ao posicionamento dos componentes para cada caso!

    Observe que, como o circuito da Mapper do Danjovic não elimina o circuito pré-existente de manipulação de memória do MSX 1, é seguro afirmar que este esquema funcionará SEM a necessidade de mudar nada nas ROMs (não vai ser necessário pré-endereçar as memórias ou limpá-las). Por que? Simples: esta Mapper é implementada mais ou menos como um "piggy-back" em cima do circuito de controle das memórias que já existe no MSX 1, e assim sendo, ambos os circuitos coexistem permitindo que a inicialização do MSX funcione sem maiores problemas na hora de preparar as RAMs.

    E como ele usa o hardware do MSX 1 para gerenciar as RAMs, o circuito extra da Mapper "apenas" cuidará do chaveamento dos bancos quando for requisitado. Desta forma o MSX nem notará a presença da tal Mapper, nem o chaveamento dos blocos da mesma. inclusive, o Danjovic teve o cuidado de adicionar um mini-delay para evitar erros de refresh que pudessem eventualmente ocorrer durante o chaveamento dos blocos da RAM.

    Quanto ao fato das "diferenças" entre a Mapper do Danjovic e as outras, pode ficar tranquilo! Não há nenhuma diferença! Ela vai funcionar normalmente em todos os casos! A diferença apenas se dá em termos de custo, pois sairia mais caro produzir um MSX 1 (ou MSX 2) com ambos os circuitos implementados de fábrica, e é por isso que no projeto do MSX 2 um circuito eliminou o outro.

    Inclusive, eu posso garantir que um MSX 1 com esta Mapper interna poderá usar as IDEs sem maiores problemas! Afinal, as IDEs só não funcionam nos MSX 1 pela falta da Memory Mapper (que é uma exigência do MSX-DOS2). No caso dos HD's resta apenas o "inconveniente" do programa IDEFDISK (que prepara o HD) só funcionar em 80 colunas. Mas isso não impede o uso de HD's num MSX 1, até porque este programa só se usa UMA vez, que é na hora de preparar o HD (e nada impede que o HD seja preparado em num MSX 2, por exemplo, para depois ser usado num MSX 1)

    Eu tenho que reconhecer que este projeto do Danjovic foi uma solução muito elegante e inteligente para se implementar Memory Mapper nos MSX 1. Isso sem contar que, com um pouquinho de boa-vontade, dá pra expandir este projeto para 1Mb, 2Mb e talvez até para 4Mb.

    ResponderExcluir
  9. Julio,

    eu fiz um projeto de uma mapper semelhante a do Danjovic, ver msx.gouget.com.br.

    O que aconteceu é que ambas não foi implementada a função de leitura nas portas. Então tem programas que não vão funcionar com elas. Tipo

    EXECROM
    SNATCHER
    Jogos Megarom converitdos pelos Europeus e etc.

    Consegui resolver parte do meu problema criando um carregador para cada jogo. Mas se alguém for implementar uma mapper é melhor que a mesma tenha essa função de leitura nas portas (FC a FF).

    ResponderExcluir

Os comentários neste Blog são moderados. Obrigado por colaborar.

Aproveite para conhecer o Portal MSX-ALL em www.msxall.com.
Inscreva-se também na Lista MSX-ALL no Yahoo Groups e participe!

Escreva seu comentário aqui: