Um ensaio rápido sobre o 1541

http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Commodore64_fdd1541_front_demodified.jpg/800px-Commodore64_fdd1541_front_demodified.jpg
“Rápido” e “1541” na mesma frase? Pode isso, Arnaldo?

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).

http://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Commodore_Matrixdrucker_MPS-802.jpg/640px-Commodore_Matrixdrucker_MPS-802.jpg
esta impressora, a MPS-802, era conectada à porta IEC do Commodore 64 (drives, impressoras e todo o resto… lembrou USB?)

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).

http://upload.wikimedia.org/wikipedia/commons/thumb/1/14/Commodore_1581_01.jpg/478px-Commodore_1581_01.jpg
o Commodore 1581, drive de disquetes de 3,5″ de 800KB

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 🙂

https://i0.wp.com/ftp.martnet.com/commie/schematics/misc/iec-protocol.gif?resize=449%2C341
fluxograma do protocolo de comunicação da porta IEC

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.

a SD2IEC, a placa filha (a verde) foi soldada por mim

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!

http://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Epyx-fastload.jpg/415px-Epyx-fastload.jpg
cartucho do Fast Load, quem tem um não vende!

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.

6 pensou em “Um ensaio rápido sobre o 1541

    1. 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.

  1. 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.

  2. 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

Os comentários estão fechados.