Por que o 1541 foi tão lento?
A unidade de disquete Commodore 1541, vendida para uso com o 64, era notoriamente lenta por razões históricas e técnicas :
O marketing insistia na compatibilidade com o 1540, a unidade de disquete vendida com o Vic-20, que era lento porque o registro de deslocamento no chip 6522 VIA não funcionava, então tinha que transferir um pouco por vez em vez de um byte em um tempo.
Em seguida, ele teve que ir ainda mais lento porque, ao contrário do Vic-20, o chip de vídeo do 64 tem que assumir completamente o barramento uma em cada oito linhas de varredura ativas.
Ok, então dada a combinação de pior caso desses dois fatores, sem tempo de desenvolvimento permitido para aliviar o problema, pode-se ver como o drive poderia acabar sendo capaz de transferir apenas um bit por espaço em branco horizontal = 63 microssegundos. 1 / (63e-6) = 15873 bits / s = 1984 bytes / s.
Mas, aparentemente, a velocidade real era de apenas 400 bytes / s .
Por que a velocidade real era apenas um quinto do que parecia possível, mesmo com a combinação infeliz de problemas históricos e técnicos?
Respostas
a unidade pode acabar sendo capaz de transferir apenas um bit por espaço em branco horizontal = 63 microssegundos. 1 / (63e-6) = 15873 bits / s = 1984 bytes / s.
Essa seria a taxa de bits durante a transmissão dentro de um byte, mas os bytes são enquadrados e recebidos, o que adiciona uma média de 160 µs por byte. Resultando em (63 * 8) + 160 µs
, ou ~ 664 µs por byte. Portanto, a velocidade de transferência superior é igual ou inferior a 1500 bytes / s
Os números acima são o mínimo absoluto, o tempo entre os bytes pode ser de até 1000 µs e ainda dentro das especificações. Tempos de rotação adicionais estão na frente dos comandos e entre blocos / comandos. Em seguida, o 1541 precisa de tempo para reagir e responder. E, finalmente, o lado C64 também precisa de gerenciamento além da transferência de bits pura. Tudo isso se soma.
Mas, aparentemente, a velocidade real era de apenas 400 bytes / s.
Antes de tudo, é importante ter em mente que esses 400 bytes / s se referem à leitura de um drive FD do mundo real. Com movimento real da cabeça, latência de pesquisa, transferências e giro. O teste frequentemente usado é sobre a leitura de um programa de 185 blocos, o que significa pelo menos 10 mudanças de faixa e assim por diante.
Uma boa referência para taxas de transferência do mundo real usando um C64 não modificado (carregador nospeed, todas as rotinas originais usadas) sem um acionamento mecânico pode ser a interface SD2IEC . Ele oferece uma taxa de transferência média de 650 Bytes / s . O SD2IEC é essencialmente um Atmel ATMega rodando a 8 MHz direto, lidando com o IEC serial. Seu tempo de resposta e transferência são próximos ao máximo possível. A leitura do SD / MMC não carrega nenhum movimento mecânico, latência de pesquisa e transferência de dados em alta velocidade do SD / MMC para a RAM do controlador.