Snellader - Fast loader

Image
Een schermafbeelding van een programma dat van schijf wordt geladen met behulp van een snellader

Een snellader is een softwareprogramma voor een thuiscomputer , zoals de Commodore 64 of ZX Spectrum , dat de snelheid van het laden van bestanden van diskette of compactcassette versnelt .

Diskettes

Fast loaders ontstonden vanwege een discrepantie tussen de werkelijke snelheid waarmee diskettestations gegevens konden overbrengen en de snelheid die werd geboden door de standaardroutines van het besturingssysteem . Deze discrepantie was het meest uitgesproken op de Commodore VIC-20 en 64 . Terwijl de eerdere Commodore PET- serie een industriestandaard IEEE-488 parallelle bus had gebruikt , werd deze vervangen door een aangepaste Commodore seriële bus op de VIC-20. De seriële bus was bedoeld om bijna net zo snel te zijn als zijn voorganger, dankzij het gebruik van de 6522 VIA als hardware- schuifregister op zowel de drive als de computer. Er zijn echter hardwarefouten ontdekt in de 6522 die ervoor zorgden dat deze functie niet consistent werkte. Als gevolg hiervan, de KERNAL ROM werden routines haastig herschreven om een enkele bit over te dragen in een tijd, met behulp van een trage software handshaking protocol.

Hoewel de C64 de 6522 VIA verving door twee 6526 CIA- chips, die geen last hadden van deze bug, had de begeleidende 1541 diskdrive nog steeds een 6522 VIA. Commodore koos ervoor om de 1541 hardware niet opnieuw te ontwerpen, ook om achterwaartse compatibiliteit met VIC-20 randapparatuur te behouden; dit ging echter ten koste van de snelheid. Vanwege het overdrachtsprotocol kregen de Commodore 1540 en 1541 diskdrives al snel een reputatie van extreme traagheid. Pas bij de introductie van de Commodore 128 computer en de Commodore 1571 disk drive werd het oorspronkelijke plan uitgevoerd en werd er gebruik gemaakt van een hardware schuifregister, waardoor er minder speciale snelladers nodig waren.

Kort na de release van de C64 realiseerden enkele scherpzinnige programmeurs zich dat Commodore's bit-bangende seriële KERNAL-routines onnodig traag waren. Aangezien de CPU in de C64 ongeveer dezelfde snelheid had als die in de 1541 diskdrive, was het voldoende om alleen aan het begin van elke byte te synchroniseren , in plaats van bij elke afzonderlijke bit . Bovendien maakte deze overdrachtsmethode het mogelijk om twee bits tegelijk te verzenden, één over de standaardlijn DATAen één over de CLKlijn (die normaal werd gebruikt om de handshake uit te voeren). Op de C64 vereiste dit een zeer zorgvuldige timing om interferentie van interrupts en van de VIC-II grafische chip te voorkomen , die CPU-cycli zou kunnen "stelen". Sommige snelladers hebben om deze reden interrupts uitgeschakeld en het scherm leeggemaakt. Een snellader zou zich over het algemeen in de LOAD vector "vastklampen" bij $0330, en zo alle oproepen naar de KERNAL- LOADroutine onderscheppen. Vervolgens zou de snellader de benodigde code naar het RAM van de schijf overbrengen en de uitvoering ervan opdracht geven, en vervolgens het bestand ontvangen dat door de gewijzigde overdrachtscode is verzonden. Afhankelijk van de exacte aard van de gebruikte routines, kan de laadsnelheid met maar liefst een factor vijf worden verbeterd.

Deze techniek werd gebruikt voor enkele van de vele snellaadsystemen die werden gemaakt (zoals JiffyDOS). Anderen waren gewoon efficiënter in I/O en bestandsverwerking, met een marginale tot goede verbetering. Andere producten voegden parallelle hardware toe.

Verschillende softwarebedrijven hebben snelladers voor de C64 uitgebracht, meestal in cartridgevorm . In de Verenigde Staten was de Epyx FastLoad waarschijnlijk de meest populaire cartridge . De meeste snelladercartridges bevatten ook andere functies om het gebruiksgemak te vergroten. Een ingebouwde implementatie van Commodore's DOS Wedge was opgenomen in de meeste snelladercartridges. Machinetaalmonitors , schijfeditors en verschillende gemakscommando's voor Commodore BASIC waren ook veelvoorkomende toevoegingen. Sommige snelladercartridges waren zeer geavanceerd en bevatten een resetknop , "freeze" -mogelijkheden en een eenvoudige ingebouwde GUI . The Final Cartridge III was misschien wel de meest succesvolle van dit genre. Een paar commerciële snelladers, met name CMD's JiffyDOS , werden niet aangedreven door een cartridge, maar vervingen in plaats daarvan de KERNAL ROM in de C64 en de DOS ROM in de 1541. Hoewel deze moeilijker te installeren waren, boden ze een sterk verhoogde compatibiliteit, omdat ze bijna onzichtbaar waren naar software die op de machine draait. De cartridge, Action Replay MK6 RAM-lader, laadt een programma met 202 blokken in ongeveer 9 seconden. De Warp-loader is 25 keer sneller, maar programma's kunnen alleen worden geladen met een loader die op schijf is opgeslagen als de cartridge niet aanwezig is. Terwijl de ARMK6 fastloader compatibel was met de meeste software, was bekend dat The Final Cartridge III vaak crashte, dus programma's moesten in de normale C64-modus worden geladen, waardoor de cartridge werd gedeactiveerd, waardoor deze min of meer nutteloos werd.

Veel commerciële programma's voor de C64, vooral games, bevatten hun eigen snellaadroutines op de distributiemedia. De gebruiker zou een klein "stub"-programma van de schijf laden met de standaard langzame routines, die dan snellere overdrachtsroutines in zowel de computer als de schijf zouden installeren voordat de rest van het programma met hoge snelheid werd geladen. Op deze manier profiteerde de gebruiker van de snellader zonder dat hij een speciaal snelladerproduct hoefde te kopen of te kennen.

Verschillende populaire Commodore-tijdschriften publiceerden snellaadsoftware voor het typen . In april 1985, Compute! publiceerde TurboDisk , een snellader met C64- en VIC-20-versies. Dit programma bleek populair en werd opnieuw gepubliceerd in de uitgave van Compute!'s Gazette van juli 1985 .

Het werd opnieuw gedrukt in augustus 1986, zonder de VIC-20-versie, maar met verschillende bijbehorende hulpprogramma's om het programma in het geheugen te verplaatsen en om automatisch opstartende software te maken die profiteerde van de snelheid van TurboDisk . Er werd ook een Commodore 128- versie meegeleverd voor die C128-gebruikers die nog 1541 diskdrives hadden.

COMPUTE!'s Gazette publiceerde ook verschillende andere hulpprogramma's die de communicatie tussen C64 en 1541 versnellen, waaronder Turbo Copy (een kopieerapparaat van 4 minuten op volledige schijf), TurboSave (een hulpprogramma dat de snelheid van schijfopslag verhoogt ) en Quick! (nog een snellader).

RUN Magazine publiceerde Sizzle! in december 1987, een geïntegreerd pakket met een verplaatsbare snellader met autoboot-generatiemogelijkheid.

BYTE publiceerdein november 1983Loader, een snellaadsoftware in machinetaal voor Apple DOS 3.3. Compute! publiceerde TurboDisk voor DOS 3.3 in oktober 1986.

De type-in ​​fast loader-mode ging door in het tijdperk van internet. Krill's Loader (2009) en Spindle (2013) zijn twee voorbeelden van C64-naar-1541 "IRQ-laders", snelladers waarmee programma's (voornamelijk games) hun eigen IRQ's kunnen behouden tijdens het laden. Bij moderne laders bleek de lage snelheid van GCR-decodering het knelpunt te zijn, en moderne laders hebben allemaal hun eigen geoptimaliseerde routines hiervoor.

Cassettebandjes

Image
Invade-a-Load titelscherm

De ingebouwde routines voor het opslaan en lezen van gegevens van en naar Compact Cassette- tapes zijn gemaakt voor veilige opslag in plaats van snelheid. Een betere bandkwaliteit in de jaren tachtig maakte het mogelijk om gegevens effectiever op te slaan, waardoor de laadtijd en de bandlengte werden verminderd.

Dergelijke programma's bestonden voor verschillende computers, zoals de Ohio Scientific Challenger . De PET Rabbit was zo'n programma voor de PET, terwijl TurboTape er een was voor de Commodore Datassette . Turbo 2000 was een soortgelijk systeem voor de Atari.

Speedlock was een softwarebeveiligingssysteem dat werd gebruikt op de ZX Spectrum en de Amstrad CPC , geschreven door David Aubrey-Jones en David Looker in 1983. De twee programmeurs waren gefrustreerd geraakt door de trage laadtijden van het tapelaadsysteem van de computer en realiseerden zich dat het mogelijk een betere te schrijven. Het prototype bleef ongeveer een jaar ongebruikt, maar werd uiteindelijk opgepikt door Ocean Software op Daley Thompson's Decathlon , die eind 1984 werd uitgebracht. Het werd vervolgens gebruikt door US Gold en voor verschillende titels door onder meer Ultimate Play the Game . Speedlock werd in 1985 ook overgezet naar de Amstrad CPC .

Het systeem gebruikte verschillende geavanceerde functies van de Spectrum-architectuur, zoals het geheugenverversingsregister en pariteitsvertakkingsinstructies van de Z80- processor, waardoor het moeilijker werd om onwettige kopieën te maken zonder de bescherming. Vroege versies gebruikten een reeks hoorbare "klikkende" leadtonen bij het laden van een programma. Latere versies bevatten dit niet, maar hadden in plaats daarvan een teller die de resterende tijd aangaf om het programma te laden, vergelijkbaar met die van Technician Ted en Fairlight .

Sommige bedrijven hebben software gemaakt om beveiligingsschema's te omzeilen, waaronder Speedlock, voor het maken van back-ups van of het overbrengen naar ZX Microdrive , de ZX Spectrum +3 of andere propriëtaire schijfsystemen.

Invade-a-Load was een snellader voor op cassettes gebaseerde games die niet alleen het laden van blokken van de band versnelde, maar ook een minigame bevatte (in dit geval een kloon van Space Invaders ) die tijdens het wachten kon worden gespeeld om het laden van het hoofdspel te voltooien. Met Invade-a-Load kon de gebruiker een kleine kloon van het beroemde spel Space Invaders spelen terwijl het hoofdspel aan het laden was. Deze eerste minigame was in minder dan een minuut geladen en zorgde voor entertainment in afwachting van het laden van de eigenlijke game, wat nog eens vijf tot tien minuten kon duren. Bij minstens één gelegenheid sprak een recensent zijn voorkeur uit voor Invade-a-Load boven het hoofdspel zelf. Het verscheen meestal in games die in het Verenigd Koninkrijk werden verkocht , aangezien, tegen de tijd dat het werd geschreven, de Commodore-markt in de Verenigde Staten grotendeels was overgestapt op diskettemedia . De lader is geschreven door Richard Aplin voor eigen gebruik door Mastertronic . De loader zelf heeft een copyright-datum van 1987, maar de eerste games die de loader gebruikten, verschenen in 1988. In de daaropvolgende jaren gebruikte Mastertronic de loader in tientallen titels. De lader was ook memorabel vanwege de soundtrack, oorspronkelijk gemaakt door Rob Hubbard voor de Mastertronic-titel One Man and His Droid .

In het Verenigd Koninkrijk, waar de prijs van een 1541 Disk Drive buiten het bereik lag van veel van de doelgroep van CBM 64-bezitters, was er een enorme vraag naar snelladers voor 64 games. Een van de eersten die een dergelijke lader gebruikte, was Llamasoft, waar Jeff Minter's klassieker "Revenge of the Mutant Camels" kwam met een snelladende versie aan de ene kant van de cassette en een conventionele laadversie aan de andere. Al snel sprongen andere softwarehuizen aan boord. Ocean gebruikte "pavloda" en een echte doorbraak kwam met de Novaload-software waarmee laadschermen en muziek konden worden afgespeeld. "Daley Thompson's Decathlon" was daar een zeer zichtbaar voorbeeld van. US Gold-releases werden berucht vanwege het spelen van het Amerikaanse volkslied en het tonen van een personagekaartversie van de Stars and Stripes terwijl hun games werden geladen. Andere opmerkelijke releases waren "Hypersports" van Imagine/Ocean met geanimeerde sprites van hardlopers terwijl het spel werd geladen en twee indrukwekkende soundtracks van Martin Galway, waaronder een versie van Chariots of Fire.

optische schijven

In 1995 bedacht Yoichi Hayashi van Namco Ltd. een variant van de Invade-a-Load-techniek voor gebruik met op optische schijven gebaseerde platforms zoals PlayStation en vroeg een patent aan. Amerikaans octrooi 5.718.632 werd in februari 1998 verleend en toegewezen aan Namco ondanks de stand van de techniek van Invade-a-Load .

Zie ook

Referenties