Tanto em micros clássicos como nos “não clássicos”, quando falamos de unidades de leitura de discos flexíveis — no popular: drive de disquetes — temos logo a imagem do computador, de uma interface controladora espetada ao barramento dele e lá, no final, a referida unidade. E esta a visão funciona bem para quase todos. Mas, como em toda regra há sempre uma exceção, existem computadores em que não se conectam controladoras específicas porém, usa-se para tal, uma porta de uso geral (sim, qualquer analogia ao USB não seria mera coincidência).
E justamente um destes caras é o Commodore 64! Nele os drives de disquetes, entre outros dispositivos, conectam-se à porta IEC (uma versão simplificada do padrão IEEE-488). Entre os drives está o muitas vezes citado e quase sempre amadoodiado drive de 5,25″ de face simples, o Commodore 1541! Mas claro que não foi o único drive de disquetes IEC desenvolvido para a plataforma, além dos fabricados por terceiros, da própria Commodore pode-se citar o 1541-II (uma versão mais bonita e revisada do original), o 1571 (unidade de 5,25″ de face dupla!) e o 1581 (unidade de 3,5″, assim como o 1571 lançado juntamente com o C128).
E como estes caras funcionam?
Para começar, esqueça que o drive do C64 é um drive de disquetes, imagine que ele é um dispositivo serial qualquer de E/S. Agora que ele é um dispositivo serial qualquer, pense que ele é como um modem em que você envia e recebe coisas e para tal precisa de um protocolo para estabelecer as regras do vai e vem dos dados. Agora pegue o dispositivo serial e atrele a ele um drive de disquetes ao invés da boa e velha linha telefônica mas mantenha um protocolo bem rudimentar de envio e recepção de arquivos. Pronto, você tem um 1541 🙂
Apenas drives de disquete?
Daí, mantendo o protocolo você espeta qualquer coisa! Como, por exemplo, uma unidade de disco rígido IDE (o C64 chegou a ter unidades de disco rígido específicas para ele, felizmente nenhuma usando IEC), leitores de cartão MMC/SD etc. Em alguns casos você até pode usar um cabo da família X1541 para conectar um PC via porta paralela e emulando o protocolo fazê-lo tanto se comportar como um “computador” quanto um “drive” e, mais recentemente, um Raspberry PI pela porta GPIO conseguindo conversar diretamente com o C64. E tudo isso mantendo o mesmo protocolo tosco inventado pela Commodore no começo da década de 1980.
E é tosco mesmo?
Este é justamente o motivo da existência de soluções de carga rápida como o Fast Load que traz uma outra implementação do protocolo no lado do computador (tanto para o C64 como para o C128 em modo C64) e que já garante um considerável aumento de velocidade. Já o JiffyDOS, é uma solução mais complexa e também mais completa pois mexe nos dois lados, computador e dispositivo, daí ele precisar que você substitua o KERNAL (como a BIOS dos Commodore é carinhosamente chamada) e o firmware dos drives para se conseguir uma velocidade decente (pelo que tudo indica a taxa de transferência bate em torno de 4800 bauds). E a coisa boa disso tudo é que o firmware da SD2IEC já tem implementada compatibilidade com o JiffyDOS, daí basta só trocar o KERNAL!
Firmware do drive?
Por conta de uma bobeira da Commodore em não conseguir usar o protocolo de comunicação entre os 6522 de maneira direta o protocolo de transferêcia de dados precisou ser implementado em software. Sendo assim todo drive da família 1541 tem, além de dois 6522 para controlar a E/S, um 6502 para rodar o código do firmware e 2KB de RAM! (aliás pode-se fazer um clone de 1541 usando um Z80, HD6309, MC68060, AMD K6 etc, basta que fale o protocolo).
E acaba aqui?
Aliás, a existência do 6502 dentro da unidade permitiu o desenvolvimento de soluções bem curiosas — mas que ficarão para um outro ensaio.
pq serial e não paralela para multiplicar por 8x a velocidade? ou isso é mito?
Depende mais da velocidade de transferência do que dela ser serial ou paralela. Veja o exemplo dos HD (P)ATA e dos SATA! Os problema do 1541 nos C64 era de projeto, os Atari 8-bit também tinham drives conectados via porta serial, a Atari SIO, e não tinham a mesma lentidão.
O Atari 800/400 também usava uma porta serial para conversar com os disquetes e outros periféricos.
http://en.wikipedia.org/wiki/Atari_SIO
No Livro “On de Edge” sobre a história da Commodore, o projetista do drive diz que quando o drive foi para a fábrica ser produzido, os projetistas da fábrica eliminaram uma série de linhas de dados “desnecessárias” do modelo final de produção. Segundo ele fala no livro, graças a esta modificação feita para cortar custos, os usuários do Commodore 64 perderam muitas horas de vida aguardando seus drives carregarem.
Muito bom seu artigo!
Mais uma vez a Commodore esmerou-se em remover características “perfunctórias” para ampliar sua margem e competitividade no mercado.
Apesar da costumaz tosqueira final, há sim curiosidades e partes bem criativas nesta solução da Commodore.
Abraços,
e1000