Fast loader

Last updated

A emulator screenshot of a program being loaded from disk using a fast loader Turboload commodore 64.gif
A emulator screenshot of a program being loaded from disk using a fast loader

A fast loader is a software program for a home computer, such as the Commodore 64 or ZX Spectrum, that accelerates the speed of file loading from floppy disk or compact cassette.

Contents

Floppy disks

Fast loaders came about because of a discrepancy between the actual speed at which floppy drives could transfer data and the speed that was provided by the operating system's default routines. This discrepancy was most pronounced on the VIC-20 and Commodore 64. While the earlier Commodore PET series had used an industry-standard IEEE-488 parallel bus, this was replaced with a custom Commodore serial bus on the VIC-20. The serial bus was intended to be nearly as fast as its predecessor, due to the use of the 6522 VIA as a hardware shift register on both the drive and computer. However, hardware bugs were discovered in the 6522 that prevented this function from working consistently. As a result, the KERNAL ROM routines were hastily rewritten to transfer a single bit at a time, using a slow software handshaking protocol. [1]

Although the C64 replaced the 6522 VIA with two 6526 CIA chips, which did not suffer from this bug, the companion 1541 disk drive still had a 6522 VIA. Commodore chose not to redesign the 1541 hardware, also in order to retain backward compatibility with VIC-20 peripherals; this however came at the expense of speed. Because of the transfer protocol, the Commodore 1540 and 1541 disk drives soon gained a reputation for extreme slowness. Only at the introduction of the Commodore 128 computer and the Commodore 1571 disk drive was the original plan put into action and a hardware shift register was used, reducing the need for special fast loaders.

Soon after the C64's release, some astute programmers realized that Commodore's bit-banging serial KERNAL routines were unnecessarily sluggish. Since the CPU in the C64 ran at approximately the same speed as that in the 1541 disk drive, it was sufficient to synchronize only at the beginning of each byte, rather than at each individual bit. Moreover, this transfer method allowed two bits to be sent simultaneously, one over the standard DATA line and one over the CLK line (which was normally used to perform the handshaking). On the C64, this required very careful timing to avoid interference from interrupts and from the VIC-II graphics chip, which could "steal" CPU cycles. Some fast loaders disabled interrupts and blanked the screen for this reason. A fast loader would generally "wedge" itself into the LOAD vector at $0330, thus intercepting any calls to the KERNAL LOAD routine. Next, the fast loader would transfer the necessary code into the drive RAM and order its execution, then receive the file sent by the altered transfer code. Depending on the exact nature of the routines used, the loading speed could be improved by as much as a factor of five.

This technique was used for a few of the many fast-load systems made (such as JiffyDOS). Others were simply more efficient in I/O and file handling, offering marginal to good improvement. Other products added parallel hardware.

Various software companies released fast loaders for the C64, usually in cartridge form. In the United States, probably the most popular such cartridge was the Epyx FastLoad. Most fast loader cartridges also incorporated other features to increase ease of use. An on-board implementation of Commodore's DOS Wedge was included in most fast loader cartridges. Machine language monitors, disk editors, and various convenience commands for Commodore BASIC were also common additions. Some fast loader cartridges were very sophisticated, incorporating a reset button, "freeze" capabilities, and a simple onboard GUI. The Final Cartridge III was perhaps the most successful of this genre. A few commercial fast loaders, most notably CMD's JiffyDOS, were not cartridge-driven but instead replaced the KERNAL ROM in the C64 and the DOS ROM in the 1541. While these were more difficult to install, they offered greatly increased compatibility, being almost invisible to software running on the machine. The cartridge, Action Replay MK6 RAM loader loads a 202 block program in around 9 seconds. Its Warp loader is 25 times faster, but programs can only be loaded with a loader saved to disk when the cartridge is not present. Whereas the ARMK6 fastloader was compatible with most software, The Final Cartridge III was known to crash often,[ citation needed ] so programs had to be loaded in normal C64 mode, deactivating the cartridge, making it more or less useless.

Many commercial programs for the C64, especially games, contained their own fast-loading routines on the distribution media. The user would load a small "stub" program from the disk with the standard slow routines, which would then install faster transfer routines in both the computer and the drive before proceeding to load the rest of the program at high speed. This way, the user benefited from the fast loader without having to buy or know about a dedicated fast-loader product.

Several popular Commodore magazines published type-in fast loading software. In April 1985, Compute! published TurboDisk , a fast loader that included C64 and VIC-20 versions. This program proved popular and was republished in the July 1985 issue of Compute!'s Gazette . [2] [3] [4] [5]

It was printed yet again in August 1986, without the VIC-20 version, but with several accompanying utilities to relocate the program in memory and to create auto-booting software that took advantage of TurboDisk's speed. A Commodore 128 version was also included for those C128 users who still had 1541 disk drives. [6] [7] [8] [9] [10] [11]

COMPUTE!'s Gazette also published several other utilities that speed up C64-to-1541 communications, including Turbo Copy (a 4-minute full-disk copier), [12] [13] TurboSave (a utility that accelerated the speed of disk saves) [14] and Quick! (another fast loader). [15] [16]

RUN Magazine published Sizzle! in December 1987, an integrated package that included a relocatable fast loader with autoboot generation capability.

BYTE published Loader, a machine-language fast-loading software for Apple DOS 3.3, in November 1983. [17] Compute! published TurboDisk for DOS 3.3 in October 1986. [18]

The type-in fast loader fashion continued in the age of the Internet. Krill's Loader (2009) and Spindle (2013) are two examples of C64-to-1541 "IRQ loaders", fast loaders that allow programs (mainly games) to keep their own IRQs during loading. With modern loaders the slow rate of GCR decoding proved to be the bottleneck, and modern loaders all carry their own optimized routines for such. [19]

Cassette tapes

Invade-a-Load title screen Invade-a-Load Title Screen.png
Invade-a-Load title screen

The built-in routines for storing and reading data to and from Compact Cassette tapes were made for safe storing rather than speed. Better tape quality in the 1980s made it possible to store data more effectively, reducing loading time and tape length.

Such programs existed for several computers, such as the Ohio Scientific Challenger. [20] The PET Rabbit was one such program for the PET, [21] while TurboTape was one for the Commodore Datassette. [22] [23] [24] Turbo 2000 was a similar system for the Atari. [25]

Speedlock was a software protection system used on the ZX Spectrum and the Amstrad CPC, written by David Aubrey-Jones and David Looker in 1983. The two programmers had become frustrated at the slow loading times of the computer's tape loading system, and realised it would be possible to write a better one. The prototype sat unused for about a year, but was finally picked up by Ocean Software on Daley Thompson's Decathlon , released in late 1984. [26] It was subsequently used by U.S. Gold and for several titles by Ultimate Play the Game, amongst others. [27] Speedlock was also ported to the Amstrad CPC in 1985. The system used several advanced features of the Spectrum's architecture, such as the memory refresh register and parity branch instructions of the Z80 processor, which made it harder to create illegitimate copies without the protection. [28] Early versions used a set of audible "clicking" lead tones when loading a program. Later versions did not include this, but instead had a counter showing the time left to finish loading the program, similar to those of Technician Ted and Fairlight . [26] [27] [29] [30]

Some companies created software to bypass protection schemes, including Speedlock, for the purpose of backing up or transferring to ZX Microdrive, the ZX Spectrum +3, or other proprietary disk systems. [27]

Invade-a-Load was a fast loader for cassette-based games which not only accelerated the loading of blocks from the tape, but also contained a mini-game (in this case, a clone of Space Invaders ) that could be played while waiting for the main game to finish loading. This initial minigame was loaded in under a minute, providing entertainment while waiting for the actual game to load, which could take a further five to ten minutes. On at least one occasion, a reviewer expressed their preference for Invade-a-Load over the main game itself. [31] It mostly appeared in games sold in the United Kingdom, as, by the time it was written, the Commodore market in the United States had mostly switched to floppy disk media. The loader was written by Richard Aplin for Mastertronic's own use. The loader itself has a copyright date of 1987, but the first games that used the loader showed up in 1988. Over the following years, Mastertronic used the loader in dozens of titles. The loader was also memorable for the soundtrack, originally made by Rob Hubbard for the Mastertronic title One Man and His Droid .

In the UK, where the price of a 1541 disk drive was beyond the means of many of the target audience of C64 owners, there was enormous demand for fast loaders for C64 games. One of the first to use such a loader was Llamasoft where Jeff Minter's classic Revenge of the Mutant Camels came with a fast loading version on one side of the cassette and a conventional loading version on the other. Soon enough other software houses jumped on board. Ocean used "pavloda" and a real breakthrough came with the Novaload software which allowed loading screens and music to play. Daley Thompson's Decathlon was a very visible example of this. U.S. Gold releases became infamous for playing the U.S. National Anthem and showing a character map version of the Stars and Stripes as their games loaded. Other notable releases included Ocean/Imagine's port of Konami's Hyper Sports which had animated sprites of runners as the game loaded and two impressive soundtracks by Martin Galway, including a version of Vangelis' "Chariots of Fire".

Optical discs

In 1995, Yoichi Hayashi of Namco Ltd. invented a variant of the Invade-a-Load technique for use with optical disc based platforms such as PlayStation and applied for a patent. U.S. patent 5,718,632 was granted in February 1998 and assigned to Namco despite the Invade-a-Load prior art. The technique was used for Ridge Racer .

See also

Related Research Articles

<span class="mw-page-title-main">Commodore 1541</span> External 5 1/4-inch floppy disk drive for the Commodore C64 homecomputer

The Commodore 1541 is a floppy disk drive which was made by Commodore International for the Commodore 64 (C64), Commodore's most popular home computer. The best-known floppy disk drive for the C64, the 1541 is a single-sided 170-kilobyte drive for 5¼" disks. The 1541 directly followed the Commodore 1540.

<span class="mw-page-title-main">Commodore 64</span> 8-bit home computer introduced in 1982

The Commodore 64, also known as the C64, is an 8-bit home computer introduced in January 1982 by Commodore International. It has been listed in the Guinness World Records as the highest-selling single computer model of all time, with independent estimates placing the number sold between 12.5 and 17 million units. Volume production started in early 1982, marketing in August for US$595. Preceded by the VIC-20 and Commodore PET, the C64 took its name from its 64 kilobytes(65,536 bytes) of RAM. With support for multicolor sprites and a custom chip for waveform generation, the C64 could create superior visuals and audio compared to systems without such custom hardware.

<span class="mw-page-title-main">Commodore 128</span> Home computer released in 1985

The Commodore 128, also known as the C128, C-128, or C= 128, is the last 8-bit home computer that was commercially released by Commodore Business Machines (CBM). Introduced in January 1985 at the CES in Las Vegas, it appeared three years after its predecessor, the Commodore 64, the bestselling computer of the 1980s. Approximately 2.5 million C128s were sold during its four year production run.

<span class="mw-page-title-main">Commodore 1540</span>

The Commodore 1540 is the companion floppy disk drive for the VIC-20 home computer. It was introduced in 1982. It uses single-sided 5¼" floppy disks, on which it stores roughly 170 kB of data utilizing Commodore's GCR data encoding scheme.

<span class="mw-page-title-main">Commodore Plus/4</span> 1984 home computer by Commodore International

The Commodore Plus/4 is a home computer released by Commodore International in 1984. The "Plus/4" name refers to the four-application ROM-resident office suite ; it was billed as "the productivity computer with software built in".

Commodore BASIC, also known as PET BASIC or CBM-BASIC, is the dialect of the BASIC programming language used in Commodore International's 8-bit home computer line, stretching from the PET (1977) to the Commodore 128 (1985).

KERNAL is Commodore's name for the ROM-resident operating system core in its 8-bit home computers; from the original PET of 1977, followed by the extended but related versions used in its successors: the VIC-20, Commodore 64, Plus/4, Commodore 16, and Commodore 128.

<span class="mw-page-title-main">Commodore Datasette</span> Dedicated magnetic tape data storage device

The Commodore 1530 (C2N) Datasette, later also Datassette, is Commodore's dedicated magnetic-tape data storage device. Using compact cassettes as the storage medium, it provides inexpensive storage to Commodore's 8-bit computers, including the PET, VIC-20, and Commodore 64. A physically similar model, Commodore 1531, was made for the Commodore 16 and Plus/4 series computers.

<span class="mw-page-title-main">The Final Cartridge III</span>

The Final Cartridge III was a popular extension cartridge which was created for the Commodore 64 and Commodore 128, produced by the Dutch company Riska B.V. Home & Personal Computers. It offered a fast loader, increasing the speeds of the disk drive, and a freezer, allowing the program execution to be stopped to be resumed later.

The Epyx Fast Load is a floppy disk fast loader cartridge made by American software company Epyx in 1984 for the Commodore 64 home computer. It was programmed by Epyx employee Scott Nelson, who was originally a programmer for Starpath and later designed the Epyx Vorpal fastloading system for the company's games.

The Commodore 64 amassed a large software library of nearly 10,000 commercial titles, covering most genres from games to business applications, and many others.

<span class="mw-page-title-main">Commodore DOS</span>

Commodore DOS, also known as CBM DOS, is the disk operating system used with Commodore's 8-bit computers. Unlike most other DOSes, which are loaded from disk into the computer's own RAM and executed there, CBM DOS is executed internally in the drive: the DOS resides in ROM chips inside the drive, and is run there by one or more dedicated MOS 6502 family CPUs. Thus, data transfer between Commodore 8-bit computers and their disk drives more closely resembles a local area network connection than typical disk/host transfers.

<span class="mw-page-title-main">GEOS (8-bit operating system)</span>

GEOS is a discontinued operating system from Berkeley Softworks. Originally designed for the Commodore 64 with its version being released in 1986, enhanced versions of GEOS later became available in 1987 for the Commodore 128 and in 1988 for the Apple II series of computers. A lesser-known version was also released for the Commodore Plus/4.

<span class="mw-page-title-main">SpeedScript</span>

SpeedScript is a word processor originally printed as a type-in MLX machine language listing in 1984-85 issues of Compute! and Compute!'s Gazette magazines. Approximately 5 KB in length, it provided many of the same features as commercial word processing packages of the 8-bit era, such as PaperClip and Bank Street Writer. Versions were published for the Apple II, Commodore 64 and 128, Atari 8-bit family, VIC-20, and MS-DOS.

The DOS Wedge is a piece of Commodore 64 system software that was popular in its time. It was written by Bob Fairbairn, and was included by Commodore (CBM) on the 1541 disk drive Test/Demo Disk and also packaged with the C64 Macro Assembler. The DOS Wedge was referred to in the 1541 drive manual as DOS Support and on the software startup screen as DOS MANAGER. The original design was developed by Bill Seiler.

<span class="mw-page-title-main">Commodore 64 peripherals</span>

The Commodore 64 home computer used various external peripherals. Due to the backwards compatibility of the Commodore 128, most peripherals would also work on that system. There is also some compatibility with the VIC-20 and Commodore PET.

Blue Board is a bulletin board system software created by Martin Sikes (1968–2007) for the Commodore 64 in the 1980s in Vancouver, British Columbia, Canada, and sold worldwide. Due to optimized code and memory allocation, Blue Board boasted very fast performance for a BBS on that hardware platform. In fact, Blue Board was faster than most if not all BBSs run on 8-bit computers. This speed combined with its use of the ASCII character set and XModem file transfer protocol rather than PETSCII and the Commodore-specific Punter protocol sometimes led users to believe that they were calling a BBS running on a much larger and faster computer.

IDEDOS is a ROM-based disk operating system written in 6502/65816 assembly language for the Commodore 64, 128 and SuperCPU. Its main purpose is to control ATA(PI) devices connected to an IDE64 cartridge and present them like normal Commodore drives. Additionally it supports networked drives (PCLink) and has a built-in machine code monitor and file manager.

Commodore 64 disk/tape emulation and data transfer comprises hardware and software for Commodore 64 disk & tape emulation and for data transfer between either Commodore 64 (C64), Commodore (1541) disk drive or Commodore tape deck and newer computers.

<span class="mw-page-title-main">1541 Ultimate</span>

1541 Ultimate is a peripheral, primarily an emulated floppy disk and cartridge emulator based on the FPGA Xilinx XC3S250E, for the Commodore 64 home computer. It became available in 2008.

References

  1. Brain, Jim (1996-01-10). "Vic-20/C-64 serial ports - alt.folklore.computers | Google Groups" . Retrieved 2012-09-26.
  2. Lewis, Don (July 1985). "TurboDisk". COMPUTE!'s Gazette. p. 34. Retrieved 2013-01-16.
  3. Lewis, Don (July 1985). "TurboDisk". COMPUTE!'s Gazette. p. 36. Retrieved 2013-01-16.
  4. Lewis, Don (July 1985). "TurboDisk". COMPUTE!'s Gazette. p. 37. Retrieved 2013-01-16.
  5. "Bug-swatter". Compute's Gazette. January 1986. p. 120.
  6. Lewis, Don (August 1986). "TurboDisk 64". COMPUTE!'s Gazette. p. 64. Retrieved 2013-01-16.
  7. Lewis, Don (August 1986). "TurboDisk 64". COMPUTE!'s Gazette. p. 65. Retrieved 2013-01-16.
  8. Lewis, Don (August 1986). "TurboDisk 128". COMPUTE!'s Gazette. p. 68. Retrieved 2013-01-16.
  9. Lewis, Don (August 1986). "TurboDisk 128". COMPUTE!'s Gazette. p. 69. Retrieved 2013-01-16.
  10. Bavaro, Dino (August 1986). "TurboDisk Relocator". COMPUTE!'s Gazette. p. 66. Retrieved 2013-01-16.
  11. Rozenberg, Bert (August 1986). "Turbo BootMaker". COMPUTE!'s Gazette. p. 67. Retrieved 2013-01-16.
  12. Cutrone, A.M. (April 1986). "Turbo Copy". COMPUTE!'s Gazette. p. 81. Retrieved 2013-01-16.
  13. Cutrone, A.M. (April 1986). "Turbo Copy". COMPUTE!'s Gazette. p. 82. Retrieved 2013-01-16.
  14. Voosen, William (April 1987). "TurboSave 64". COMPUTE!'s Gazette. p. 71. Retrieved 2013-01-16.
  15. Zaky, Adib (December 1988). "Quick!". COMPUTE!'s Gazette. p. 82. Retrieved 2013-01-16.
  16. Zaky, Adib (December 1988). "Quick!". COMPUTE!'s Gazette. p. 85. Retrieved 2013-01-16.
  17. Williams, John (November 1983). "Fast Loading with Apple DOS 3.3". BYTE. pp. 502–504. Retrieved 2016-03-19.
  18. Ellerbrock, R. (October 1986). "TurboDisk For DOS 3.3". Compute!. p. 83. Retrieved 2013-11-09.
  19. Åkesson, Linus (2013-03-31). "GCR decoding on the fly". Archived from the original on 2017-03-21. Retrieved 2017-03-21.
  20. Carlson, Edward H. (March–April 1980). "Fast Tape Read/Write Programs For Your OSI". Compute!. pp. 115–117. Retrieved 2013-10-25.
  21. Strasma, James (March–April 1980). "The PET Rabbit". Compute!. p. 94. Retrieved 2013-10-25.
  22. De Ceukelaire, Harrie (January 1985). "TurboTape / High-Speed Tape Utility For Commodore 64 And VIC-20". Compute!. p. 124. Retrieved 2013-10-30.
  23. De Ceukelaire, Harrie (February 1985). "How TurboTape Works". Compute!. p. 112. Retrieved 2013-10-30.
  24. "Capute!". Compute!. March 1985. p. 146. Retrieved 2013-10-30.
  25. "Turbo 2000". AtariMax.
  26. 1 2 Eddy, Richard (1987). "The One David" (44). Crash. Retrieved 2013-01-09.{{cite journal}}: Cite journal requires |journal= (help)
  27. 1 2 3 Lerm Tape Utility D (instruction manual) (PDF). Lerm. 1990. Retrieved 2013-01-09.
  28. North, Jon (1990). "How To Hack : Speedlock" (61pages=66–67). Your Sinclair. Retrieved 2023-07-28.{{cite journal}}: Cite journal requires |journal= (help)
  29. Martin van der Heide, Martin Kopanske and Tomaz Kac (1997–1999). "Tape Decoding : Encoding schemes". World of Spectrum. Archived from the original on 2020-06-02. Retrieved 2013-01-09.
  30. "CRASH review from 1985" . Retrieved 2007-01-29.
  31. "3-D Pinball". Zzap!64 . United Kingdom: Newsfield Publications Ltd. March 1991. Retrieved 2019-06-17.