★ APPLICATIONS ★ DIVERS ★ TURBO SAVE - Es geht auch schneller! ★ |
Turbosave (CPC Amstrad International) | Applications Divers |
Haben Sie sich auch schon einmal darüber geärgert, wie lange es dauert, bis ein Programm von Cassette geladen ist? Und besonders darüber, daß viel Zeit durch die Pausen zwischen den einzelnen Blöcken verloren geht? Wenn ja, dann schafft das folgende Programm »TurboSave« Abhilfe. Bevor Sie aber weiterblättern, weil Sie denken, die Erhöhung der Baudrate ist ein alter Hut, lesen Sie diesen Artikel! Es gibt schon einige Programme, die die Übertragu ngsge-schwindigkeit (Baudrate) zwischen Cassettenrekorder und dem Computer erhöhen, und damit die Lade- und Speicherzeiten verkürzen. Diese Programme haben bloß den Nachteil, daß für sie eigens ein spezielles Aufzeichnungsverfahren erdacht wurde. Das bedeutet für den Anwender, daß er jedesmal. wenn er etwas speichern oder laden will, eine spezielle Save- bzw. Load-Routine laden muß, wodurch wieder Zeit verloren geht und meistens der Zeitvorteil durch die schnellere Aufzeichnung wieder verliert. Warum aber nicht das eigene Aufzeichnungsverfahren des CPC 464 nutzen? Denn wenn man sich einmal die entsprechenden Routinen im Betriebssystem ansieht, stellt man fest, daß sie bis zu einer Übertragungsrate von 3800 Baud (Bit pro Sekunde) arbeiten können, und daß die Laderoutine auch Blöcke lesen kann, die länger als 2K Byte sind! Man braucht also nur ein Programm, welches die Baudrate hoch setzt und die Abspeichcrroutine so abändert, daß sie die Programme nicht mehr in 2K-Byte-Blöcke »zerstückelt«. Genau diese Aufgabe erfüllt das Programm »TurboSave«. Für die Anwendung müssen Sie also »TurboSave« nur einmal, bevor Sie das Programm, das schnell abgespeichert werden soll, laden und können dann dieses Programm durch ein ganz normales LOAD bzw. RUN" erheblich schneller nach dem Abspeichern wieder laden!!! Diese Kopie besteht dann nämlich nur noch aus 2 Blöcken (der erste Block muß noch 2K-Bytc lang sein, der zweite enthält dann den Rest der Daten), wodurch man die Pausen zwischen den Blöcken spart. Sie kann wahlweise mit 3600 Baud erstellt werden (ca. 1.8 mal zusätzlich schneller als mit SPEED-WRITE 1). Die Handhabung erfolgt nach folgendem Schema:
Allgemeiner Hinweis. TurboSave benutzt den Speicherbereich, in dem sonst die Texte des KEY-Kommandos abgelegt werden. Deshalb darf diese Punktion, während man mit TurboSave arbeitet, nicht benutzt werden, weil sich sonst der Computer »aufhängt« Das Programm kann durch POKE &BC98,&CF:POKE &BC99,&EA:POKE &BC9A,&A4:POKE &AC07,&C9 deaktiviert werden. TurboSave kann auch bei angeschlossenem Diskettenlaufwerk genutzt werden, wenn man folgende regel beachtet: Vor dem Laden des Programms muß ein TAPE-(bzw. CAS bei Vortex) Befehl gegeben werden. Nach dem Laden darf kein derartiges Kommando mehr gegeben werden. Erklärungen zum Assemblerlisting: Damit ein im Speicher befindliches Programm nicht durch das Laden gelöscht wird, hat es einen Autostartmechanismus, der folgendermaßen funktioniert: Zuerst wird durch das Kommando LOAD ein Maschinenprogramm in den Bereich ab &BB00 geladen. An dieser Stelle befinden Sich normalerweise Sprungtabellen (Vektoren), die dazu dienen, es Programmen möglich zu machen, die im RAM laufen, auf Routinen zuzugreifen, die im ROM stehen, der parallel zum RAM hegt. Deshalb wird dieser Bereich von sonst keinem anderen Programm überschrieben. Diese Vektoren werden auch vom Basic genutzt, können aber für den Zeitraum des Einlesens genutzt werden. Nach dem Lesen springt das Basic den Vektor CAS IN CLOSE (&BC7A) an, an dessen Stelle sich jetzt aber ein Sprung zu der Autostartroutine befindet. Nachdem der untere (Lower) ROM eingeschaltet und der Basic-ROM (oberer: Upper ROM) ausgeschaltet worden ist, wird die Routine CAS IN CLOSE nachgeholt. Die Ersatzroutine, die die Routine CAS IN CLOSE ersetzt, wird nun in den KEY-Speicher (&B468) geladen. Diese Ersatzroutine verhindert das »Zerstückeln« in 2K-Byte-Blöcke, was sonst durch die normale Routine geschieht. Der ERROR-Vektor des Basic, der vor jedem Syntax-Error angesprungen wird, wird auf die Routine "baud" »verbogen«, um den USING-Befehl zum Umschalten auf 3600 Baud benutzen zu können. Damit das Basic wieder läuft, wird in das Benutzerfeld des Headers (Vorspann mit Name usw. eines Programms auf Cassette) gesprungen, um von dort die Vektoren wieder herzustellen und den CAS OUT DIRECT-Vektor (&BC98) auf die Ersatzroutine zu legen. Um das Abschlußprogramm im Benutzerfeld des Headers zur Verfügung zu stellen und weil die Vektoren nur kurzzeitig überschrieben werden dürfen, bedarf es einer besonderen Save-Routine ab &8000, die vom Basiclader aus gestartet werden kann. Dieser Routine werden die Autostartroutine ab &6000, die Ersatzroutine ab &7000 und der »künstliche« Header, dem Abschlußteil ab &8100 zur Verfügung gestellt.
|