Fast loader
# Fast loader

Fast loader es un programa de software para computadoras domésticas, como el Commodore 64 o ZX Spectrum, que acelera la velocidad de carga de archivos desde un disquete o un casete.

## Disquetes

### Antecedentes

Los cargadores rápidos surgieron debido a una discrepancia entre la velocidad real a la que las unidades de disquete podían transferir datos y la velocidad que proporcionaban las rutinas predeterminadas del sistema operativo. Esta discrepancia fue más pronunciada en el Commodore VIC-20 y C64. Mientras que la serie anterior de Commodore PET había utilizado un bus paralelo IEEE-488 industrial estándar, este fue reemplazado por un bus serial Commodore personalizado en el VIC-20. El bus serie estaba destinado a ser casi tan rápido como su predecesor, debido al uso del VIA 6522 como un registro de desplazamiento de hardware tanto en el disco como en la computadora. Sin embargo, se descubrieron errores de hardware en el 6522 que impedían que esta función funcionara de manera consistente. Como resultado, las rutinas de la ROM KERNAL se reescribieron apresuradamente para transferir un solo bit a la vez, utilizando un protocolo de enlace lento de software.

Aunque el C64 reemplazó el VIA 6522 con dos chips CIA 6526, que no sufrieron este error, la unidad de disco complementaria 1541 todavía tenía un VIA 6522. Commodore decidió no rediseñar el hardware del 1541, también para mantener la compatibilidad con los periféricos para el VIC-20; Sin embargo, esto fue a expensas de la velocidad. Debido al protocolo de transferencia, las unidades de disco Commodore 1540 y 1541 pronto ganaron una reputación de extrema lentitud. Solo en la introducción de la computadora Commodore 128 y la unidad de disco Commodore 1571 se puso en práctica el plan original y se utilizó un registro de cambio de hardware, lo que reduce la necesidad de cargadores rápidos especiales.

### Desarrollo

Poco después del lanzamiento del C64, algunos programadores astutos se dieron cuenta de que las rutinas KERNAL seriales de Commodore eran innecesariamente lentas. Dado que la CPU en el C64 corría aproximadamente a la misma velocidad que en la unidad de disco 1541, fue suficiente sincronizar solo al comienzo de cada byte, en lugar de en cada bit individual. Además, este método de transferencia permitió el envío simultáneo de dos bits, uno sobre la línea de DATA estándar y otro sobre la línea CLK (que normalmente se usaba para realizar el protocolo de enlace). En el C64, esto requería una sincronización muy cuidadosa para evitar la interferencia de las interrupciones y del chip gráfico del VIC-II, que podría "robar" los ciclos de la CPU. Algunos cargadores rápidos desactivaron las interrupciones y dejaron la pantalla en blanco por este motivo. Un cargador rápido generalmente se "encajaría" en el vector LOAD a $0330, interceptando así cualquier llamada a la rutina KERNAL LOAD. A continuación, el cargador rápido transfiere el código necesario a la RAM de la unidad y ordenaría su ejecución, luego recibiría el archivo enviado por el código de transferencia alterado. Dependiendo de la naturaleza exacta de las rutinas utilizadas, la velocidad de carga podría mejorarse hasta en un factor de cinco.

Esta técnica se utilizó para algunos de los muchos sistemas de carga rápida creados (como JiffyDOS). Otros fueron simplemente más eficientes en E/S y manejo de archivos, ofreciendo mejoras marginales a buenas. Otros productos agregaron hardware paralelo.

### Cargadores rápidos comerciales

Varias compañías de software lanzaron cargadores rápidos para el C64, generalmente en forma de cartucho. En los Estados Unidos, probablemente el cartucho más popular fue el Epyx Fast Load. La mayoría de los cartuchos de carga rápida también incorporaron otras características para aumentar la facilidad de uso. Se incluyó una implementación de DOS Wedge en la mayoría de los cartuchos de carga rápida. Monitores de lenguaje de máquina, editores de disco y varios comandos de comodidad para Commodore BASIC también fueron adiciones comunes. Algunos cartuchos de carga rápida eran muy sofisticados, incorporando un botón de reinicio, capacidades de "congelación" y una simple GUI integrada. The Final Cartridge III fue quizás el más exitoso de este género. Algunos cargadores comerciales rápidos, especialmente JiffyDOS de CMD, no funcionaban con cartuchos, sino que reemplazaban la ROM KERNAL en el C64 y la ROM DOS en el 1541. Si bien estos fueron más difíciles de instalar, ofrecieron una compatibilidad mucho mayor, siendo casi invisibles para el software que se ejecuta en la máquina. El cartucho, el cargador RAM Action Replay MK6 carga un programa de 202 bloques en aproximadamente 9 segundos. Su cargador Warp es 25 veces más rápido, pero los programas solo se pueden cargar con un cargador guardado en el disco cuando el cartucho no está presente. Mientras que el cargador rápido ARMK6 era compatible con la mayoría del software, se sabía que The Final Cartridge III se bloqueaba con frecuencia, por lo que los programas tuvieron que cargarse en modo C64 normal, desactivando el cartucho, haciéndolo más o menos inútil.

Muchos programas comerciales para el C64, especialmente los juegos, contenían sus propias rutinas de carga rápida en los medios de distribución. El usuario cargaría un pequeño programa "stub" desde el disco con las rutinas lentas estándar, que luego instalaría rutinas de transferencia más rápidas tanto en la computadora como en la unidad antes de proceder a cargar el resto del programa a alta velocidad. De esta forma, el usuario se beneficia del cargador rápido sin tener que comprar un producto dedicado de carga rápida.

### Cargadores rápidos de tipeo

Varias revistas populares de Commodore publicaron software de carga rápida de tipeo. En abril de 1985, Compute! publicó TurboDisk, un cargador rápido que incluía las versiones C64 y VIC-20. Este programa se hizo popular y se volvió a publicar en la edición de julio de 1985 de Compute!.

Se imprimió nuevamente en agosto de 1986, sin la versión VIC-20, pero con varias utilidades que lo acompañan para reubicar el programa en la memoria y crear un software de arranque automático que aprovechó la velocidad de TurboDisk. También se incluyó una versión Commodore 128 para aquellos usuarios de C128 que todavía tenían unidades de disco 1541.

Compute! también publicó varias otras utilidades que aceleran las comunicaciones C64 a 1541, incluyendo Turbo Copy (una copiadora de disco completo de 4 minutos), TurboSave (una utilidad que acelera la velocidad de grabación en el disco) y Quick! (otro cargador rápido).

La revista RUN publicó Sizzle! en diciembre de 1987, un paquete integrado que incluía un cargador rápido reubicable con capacidad de generación de arranque automático.

BYTE publicó Loader, un software de carga rápida en lenguaje máquina para Apple DOS 3.3, en noviembre de 1983. Compute! publicó TurboDisk para DOS 3.3 en octubre de 1986.

La moda del cargador rápido de tipeo continuó en la era de Internet. Krill's Loader (2009) y Spindle (2013) son dos ejemplos de "cargadores IRQ" C64 a 1541, cargadores rápidos que permiten que los programas (principalmente juegos) mantengan sus propios IRQ durante la carga. Con los cargadores modernos, la tasa lenta de decodificación GCR demostró ser el cuello de botella, y todos los cargadores modernos llevan sus propias rutinas optimizadas para ello.

## Cintas de casete

Las rutinas integradas para almacenar y leer datos hacia y desde cintas de casete compacto se realizaron para un almacenamiento seguro en lugar de velocidad. Una mejor calidad de cinta en la década de 1980 permitió almacenar datos de manera más efectiva, reduciendo el tiempo de carga y la longitud de la cinta.

Tales programas existían para varias computadoras, como el Ohio Scientific Challenger. El PET Rabbit fue uno de esos programas para el PET, mientras que TurboTape fue uno para el Commodore Datassette. Turbo 2000 era un sistema similar para los sistemas de Atari.

Invade-a-Load era un cargador rápido para juegos basados en casetes que no solo aceleraba la carga de bloques desde la cinta, sino que también contenía un mini-juego (en este caso, un clon de Space Invaders) que podía jugarse mientras esperaba para que el juego principal termine de cargarse.

