¿Por qué el 1541 era tan lento?
La unidad de disquete Commodore 1541, vendida para su uso con la 64, era notoriamente lenta por razones históricas y técnicas :
Marketing insistió en la compatibilidad con el 1540, la unidad de disquete vendida con el Vic-20, que era lento porque el registro de desplazamiento en el chip 6522 VIA no funcionaba, por lo que tenía que transferir un bit a la vez en lugar de un byte en un momento.
Luego tuvo que ir aún más lento porque, a diferencia del Vic-20, el chip de video del 64 tiene que tomar el control por completo del bus una de cada ocho líneas de exploración activas.
Bien, dada la combinación del peor de los casos de esos dos factores, sin tiempo de desarrollo permitido para aliviar el problema, se podría ver cómo el disco podría terminar siendo capaz de transferir solo un bit por espacio en blanco horizontal = 63 microsegundos. 1 / (63e-6) = 15873 bits / s = 1984 bytes / s.
Pero aparentemente la velocidad real fue de solo 400 bytes / s .
¿Por qué la velocidad real fue sólo una quinta parte de lo que parecería ser posible incluso con la infeliz combinación de problemas históricos y técnicos?
Respuestas
la unidad podría terminar siendo capaz de transferir solo un bit por espacio en blanco horizontal = 63 microsegundos. 1 / (63e-6) = 15873 bits / s = 1984 bytes / s.
Esa sería la tasa de bits durante la transmisión dentro de un byte, pero los bytes se enmarcan y se aprueban, lo que agrega un promedio de 160 µs por byte. Dando como resultado (63 * 8) + 160 µs
~ 664 µs por byte. Entonces la velocidad de transferencia superior es más bien igual o inferior a 1500 bytes / s
Los números anteriores son el mínimo absoluto, el tiempo entre bytes puede ser de hasta 1000 µs y aún dentro de las especificaciones. Los tiempos de respuesta adicionales están frente a los comandos y entre bloques / comandos. A continuación, el 1541 necesita tiempo para reaccionar y responder. Y finalmente, el lado C64 también necesita una gestión más allá de la transferencia de bits pura. Todo esto suma.
Pero aparentemente la velocidad real fue de solo 400 bytes / s.
Antes que nada, es importante tener en cuenta que estos 400 Bytes / s se refieren a la lectura de una unidad FD del mundo real. Con movimiento de cabeza real, latencia de búsqueda, transferencias y vueltas. La prueba que se usa con frecuencia consiste en leer un programa de 185 bloques, lo que significa al menos 10 cambios de pista, etc.
Un buen punto de referencia para las tasas de transferencia del mundo real utilizando un C64 sin modificar (cargador nospeed, todas las rutinas originales utilizadas) sin una unidad mecánica podría ser la interfaz SD2IEC . Ofrece un rendimiento medio de 650 Bytes / s . El SD2IEC es esencialmente un Atmel ATMega que se ejecuta a 8 MHz directamente manejando el IEC serial. Su respuesta y tiempo de transferencia son cercanos al máximo posible. La lectura desde SD / MMC no conlleva ningún movimiento mecánico, latencia de búsqueda y transferencia de datos a alta velocidad desde SD / MMC a la RAM del controlador.