APPLICATIONSDIVERS ★ SuperTape für den Schneider CPC464 ★

SuperTape (Computer Technik)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Der CPC464 hat zwar ein fuverlässiges Kassettenverfahren 'eingebaut', aber das vertrödelt viel Zeit für die Synchronisation und die Abspeicherung in Blöcken. SuperTape funktioniert bei 3600 Baud problemlos mit dem eingebauten Recorder und führt vor allem bei längeren Programmen zu einer erheblichen Zelteinsparung. Außerdem eröffnet sich mit SuperTape eine einfache Möglichkeit, mit all den anderen Rechnern zu kommunizieren, die ebenfalls schon das SuperTape-Format beherrschen.

Obwohl man beim CPC die Datenübertragungsrate mit nur wenigen Maschinensprache-Befehlen:

LD HL,93
LD A,10
JP &BC68

auch auf 3600 Baud hochsetzen kann, ist SuperTape dennoch rund doppelt so schnell, da das CPC-Verfahren alle Daten in 2 KByte großen Blöcken auf die Kassette schreibt und jedem Block ein verhältnismäßig langer Synchronisierungsvorspann vorangeht. SuperTape hingegen überträgt Programme oder Daten in einem Rutsch mit einer kurzen Synchronisation. Wer einen HiFi-Recorder besitzt, kann zudem Uber ein kleines Interface auch mit 7200 Baud arbeiten. Über diesen Anschluß ist auch eine direkte Rechner-Rechner-Kommunikation ähnlich wie mit einer seriellen RS232-Schnittstelle möglich. Auch der eingebaute Recorder wäre prinzipiell in der Lage, die 7200 Baud zu meistern. Dafür müßte allerdings die zuständige Elektronik umgebaut werden, da sie etwas zu langsam (und zu simpel) ist. Beim CPC664 wird ein zusätzliches Interface nicht benötigt, da diese Version bereits für den Betrieb eines externen Recorders eingerichtet ist. Allerdings hat der Hersteller etliche Einsprungadressen geändert, so daß SuperTape in dieser Fassung nicht lauffähig ist; es ist also noch ein 'Updaten' erforderlich.

Kommunizieren mit SuperTape

Das SuperTape-Verfahren, in c't 4/84 vorgestellt und ausführlich beschrieben, macht Computer verschiedenen Fabrikats ‘Datenträger-kompatibel'. Dies bedeutet, daß die im Super-Tape-Format beschriebenen Kassetten von jedem Computer gelesen werden können, für den es SuperTape-Routinen gibt. SuperTape funktioniert mit handelsüblichen Kassetten und Recordern, arbeitet aber um ein Vielfaches schneller als alle anderen Aufzeichnungsverfahren, die sonst bei Homecomputern verwendet werden. Für folgende Rechner hat c't bisher SuperTape-Routinen vorgestellt:

Sincalair ZX81c't 4/84 u 5/84
VC-20c't 5/84 u 10/84
C64c't 5/84 u 10/84
Sinclair Spectrumc't 6/84 u 9/84
Apple II (und kompatible)c't 7/84
6809 Rechner (am beispiel des Eurocom II)c't 8/84
CP/M-Hechnerc't 11/84
Oric 1 und Atmosc't 12/84
Colour Geniec't 1/85
CBM 3000/4000/8000c't 2/85
Sharp PC1500c't 3/85
TRS-80c't 5/85
Sharp MZ 700c't 7/85

Die meisten der Programme sind auf Datenträgern beim Heise-Software-Service (siehe Anzeigenteil) erhältlich. Unsere Leser sind eingela-den, SuperTape-Anpassungen für weitere Rechner (selbstverständlich gegen Honorar) in c't vorzustellen.

Wer stolzer Besitzer einer Diskettenstation ist und überwiegend mit CP/M arbeitet, kann dennoch SuperTape sinnvoll einsetzen. Neben der Kommunikation mit anderen Computern sind damit schnelle und preiswerte 'Backups' möglich. In Verbindung mit einem externen Recorder — den ja der CPC664 erfordert — zeigt sich auch der Nachteil vom Blockbetrieb des Standard-Kassettenverfahrens. Da die Recorder meist nicht mit einem Remote-Eingang für 'Motor ein/aus' ausgestattet sind, muß man nach jedem gelesenen Block den Recorder anhalten und das Ende des Diskettenzugriffs ab-warten. Sonst würde der folgende Block überlesen werden. Für die Zusammenarbeit von CP/M und SuperTape benötigt man eine angepaßte CP/M-Version (ähnlich des CP/M-SuperTape aus c't 11/84), die mit den hier vorgestellen Basisroutinen arbeitet. Falls Sie aber diese Anpassung nicht selber durchführen wollen, müssen Sie noch auf die nächste c't warten...

Beim Arbeiten mit hohen Baudraten über 2000 Baud sollten Sie nur gutes Kassettenmaterial verwenden, um eine sichere Übertragung zu gewährleisten. Sogenannte Datenkassetten sind für den externen Recorder oftmals nicht geeignet.

SYNTAX ERROR

Die hier vorgestellten Super-Tape-Routinen sind voll in das BASIC des Schneider eingebunden. Glücklicherweise hat man für solche Einbindungen ja beim CPC viele Möglichkeiten. Normalerweise dient dazu die RSX-Befehlserweiterung (Resident System Extension). Damit lassen sich allerdings Strings (Dateiname) nur etwas mühsam mittels des Variabien-Pointers übergeben. Deshalb wurde hier ein anderer Weg beschritten, und zwar über den SYNTAX ERROR. Auch hier haben die Entwickler (großes Lob) eine Software-Schnittstelle vorgesehen, so daß bei jedem falschen Token über einen Vektor (&AC07 — leider nicht beim CPC664: großer Tadel) eine gewünschte Routine aufgerufen wird. Normalerweise steht hier nur ein Return. SuperTape ersetzt aber dieses Return durch einen Sprung zu den SuperTape-Verarbeitungsrou-tinen, wo dann die Syntax-Überprüfung stattfindet.

Ein gültiger SuperTape-Befehl muß mit einem '>'-Zeichen beginnen, gefolgt von einem Kassettenbefehl. Die benutzten Kassettenbefehle entsprechen den normalen Schneider-Befehlen. Das bringt den Vorteil mit sich , daß sie vom Betriebssystem als Token abgelegt werden, welche die SuperTape-Syntax-Routine leichter verarbeiten kann.

Verschobene Zeiten...

Die SuperTape-Routinen orientieren sich an den Routinen für den Spectrum und den TRS80. Allerdings mußte das gesamte Timing umgestellt werden, weil die Z80A-CPU beim CPC464 durch WAIT-Zyklen gebremst wird, die das gesamte Timing durcheinanderbringen.

Wie sich diese WAIT-Zyklen auswirken, können Sie in diesem Heft im Artikel ‘Vertrackte Warte-Takte' nachlesen.

Da das einzulesende Bit genau wie beim TRS80 das Portbit D7 ist, können ein Compare-Befehl und eine Ausmaskierung dieses Bits entfallen. Diese Ausmaskierung wäre erforderlich, da auch das VSYNC-Signal an demselben Port anliegt. Mit IN A,(C) werden aber die Flags gesetzt, so daß man mit JP M oder JP P direkt auf das Bit D7 reagieren kann. So erreicht man bei der Flankenerkennung ein hohes Rastermaß von nur sieben Mikrosekunden (entspricht 140 kHz). Das steigert die Lesesicherheit vor allem bei 7200 Baud (sieben Mikrosekunden sind rund 10% der Zeit für eine Halbwelle von 7200 Hz). Außerdem bleibt gegenüber den Spectrum-Routinen ein Register zur freien Verfügung, das sonst zum Speichern des Vergleichswerts benötigt wird.

... und verschiebbare Adressen

Zur Eingabe von SuperTape benutzen Sie am besten einen Assembler oder falls dieser (noch) nicht vorhanden ist, den abgedruckten BASIC-Loader (Programm 1). Dieser enthält eine kleine Besonderheit: Durch Ändern der Zeile 130 können für jede beliebige Speicheradresse SuperTape-Versionen erstellt werden (Relokalisation oder auch Relozierung — der Sprachgebrauch liegt noch nicht ganz fest).

Wenn Sie den BASIC-Loader fertig eingegeben haben, sollten Sie ihn zunächst sichern (versteht sich von selbst, warum).

Danach geben Sie RUN ein und vergleichen die nun angegebenen Prüfsummen mit den abgedruckten. Stimmt alles, so wird SuperTape auf Kassette gesichert und in Zeile 280 initialisiert (durch ‘Verbiegen' des SYNTAX-ERROR-Vektors). Zum Laden des SuperTape-Programms ist folgende Prozedur erforderlich:

MEMORY &9FFF:LOAD "SUPERTAPE":CALL &A000

Nun können Sie mit den beschriebenen SuperTape-Befehlen arbeiten.

Der Adreßbereich ab &A000 ist der Einfachheit halber gewählt, damit auch der Diskettenbetrieb möglich ist (&A280 reicht auch). Wer nur mit dem Recorder arbeitet, kann auch SuperTape in eine höhere Adreßlage bringen (&A780).

>SPEED 8wählt 7200 Baud beim Schreiben
>SPEED 1wählt 3600 Baud beim Schreiben
>SPEED ;LW36setzt Ladekonstante für 3600 Baud
>SAVE “Name.Typ"speichert BASIC-Program
>SAVE "Name.Typ",adr,lenspeichert Maschinenprogramm
adr=Adresse,len=Large
>LOAD “Name,Typ"lädt ein Programm
>LOAD "Name .Typ" ,adrlädt ein Programm und legt es ab
Adresse adr ab
>TEST "Name.Typ"verifiziert ein Programm
>RUN “Name.Typ"ladt und startet ein BASIC-oder Maschinenprogramm

Alle möglichen SuperTape-Befehle sind in Tabelle 1 zusammengestellt. Die Möglichkeit, mittels

|SPEED,Wert zwischen 10 und 38

die Ladezeitkonstante für 3600 Baud zu verändern, ist vorteilhaft, wenn Kassettenaufnahmen von anderen Recordern stammen. Bei eventuellen Schwierigkeiten mit der Spurlage brauchen Sie somit nicht gleich den Tonkopf zu verstellen. Sie können erstmal versuchen, mit einer leicht geänderten Ladezeitkonstante zu arbeiten. Zudem hat sich gezeigt, daß Aufnahmen, die von einem externen Recorder stammen, meist mit einer größeren Konstante zu laden sind. Der für den CPC-Recorder ermittelte optimale Wert von 18 ergibt nämlich eine um einige Mikrosekunden kürzere Zeitkonstante als rechnerisch nötig wäre. Wenn man den SPEED-Wert um eins erhöht, verschiebt sich die Abfragezeitpunkt des gelesenen Signals um vier Mikrosekunden zu längeren Zeiten hin.

Bei den Ladebefehlen LOAD, TEST und RUN ist zu beachten, daß nur Dateien, deren Typ mit einem 'B' beginnt, als BASIC-Programme geladen werden. Bei einem anderen Typ wird das Programm zwar einwandfrei geladen, und es läßt sich auch listen, aber die Betriebssystem-Pointer werden nicht korrigiert: das Programm ist weder lauf- noch editierfähig. Achtung, auch eine Datei "TEST.BIN" wird als BASIC-Programm verstanden und nicht etwa als Binär-Datei.

Bei den Ladebefehlen sind auch Joker (auch Wildcards genannt) für Name und Typ möglich:

'?' steht für einen beliebigen Buchstaben,
'*' steht für den ganzen Rest eines Namens oder Typs.

Der Ladebefehl für eine beliebige Datei lautet demnach:

> LOAD

Und für ein beliebiges BASIC-Programm:

>LOAD "*.B*"

<< Bild 1. Interface für einen externen Recorder.

Für ganz Eilige

Wer mit 7200 Baud abspeichern möchte, muß, wie gesagt, mit einem externen Recorder arbeiten. Das dafür nötige Interface (Bild 1) hat c't bereits in 11/84 beim CP/M-SuperTape vorgestellt. Der Anschluß dieses Interface erfolgt einfach über die achtpolige Steckverbindung, die zum internen Recorder führt. Wenn man diese Steckverbindung an der rechten Platinenseite zieht, schaltet man damit automatisch den Rechner ab, da dieser die Betriebsspannung über die Steckleiste und den Ein/Ausschalter bekommt. Eine Brücke über die Anschlüsse A und C (Pins 1 und 3 von oben) bringt den Rechner wieder zum Laufen. Als Anschluß kann eine achtpolige Buchsenleiste dienen.

Bild 2. Umschaltung zwischen internen und externen Recorder. >>

Es soll hier allerdings keine komplette Einbau-Anweisung gegeben werden. Vielmehr bleibt es der Phantasie und dem Geschick des Lesers überlassen, wo er das Interface unterbringen will. Eine gar nicht so schlechte (Bastel-)Lösung ist: das CMOS-IC 'huckepack' über den 7400 (über der Steckleiste) an Pin 7 und Pin 14 einlöten, die anderen Beinchen abbiegen und gemäß Schaltplan mit den Widerständen und Kondensatoren frei verdrahten. Dann kann man die Steckverbindung zum internen Recorder bestehen lassen und muß lediglich den Recorderausgang, Anschluß E (Pin 5 von oben) auf das Interface umschalten. Zu diesem Zweck trennt man die Leiterbahn, die auf der Oberseite rechtwinklig von dem Anschluß zu einer Durchkontaktierung führt, in der Mitte durch und schließt einen Umschalter entsprechend der Skizze (Bild 2) an. Man kann es sich aussuchen, ob man Schalter und die Buchsen für den Recorder-Anschluß hinten an die Ober- oder Unterseite des Gehäuses anbringt.

Diese Art der Beschaltung hat sogar noch den Vorteil, daß man mit beiden Recordern gleichzeitig aufnehmen kann, wenn man also mit ‘doppelter Sicherheit' abspeichern will.

C'T 8509

★ PUBLISHER: Computer Technik (c't)
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ AUTHORS: Bernd HERD , Andreäs STILLER
★ INFOS:
  • Tabelle 1. Die SuperTape-Befehle für den Schneider. Bei LOAD ist ein BREAK möglich, wenn man ESC und PLAY oder STOP drückt.
  • Programm 1. Mit dem BASIC-Lader läßt sich SuperTape an jede beliebige Adresse laden. Darunter die ausgegebenen Prüfsummen.
  • Programm 2. Das SuperTape-Programm wird ins BASIC des CPC464 eingebunden.

 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» CPM-SuperTape    (Computer  Technik)    (1984-11)    GERMANDATE: 2024-03-08
DL: 46
TYPE: PDF
SiZE: 1652Ko
NOTE: Supplied by archive.org ; 5 pages/PDFlib v1.6

» SuperTape    (Computer  Technik)    (ASM-SOURCE)    GERMAN    LISTINGDATE: 2024-03-08
DL: 44
TYPE: PDF
SiZE: 497Ko
NOTE: Supplied by archive.org ; 6 pages/PDFlib v1.6

» SuperTape    (Computer  Technik)    GERMAN    LISTINGDATE: 2024-03-08
DL: 40
TYPE: PDF
SiZE: 146Ko
NOTE: Supplied by archive.org ; 2 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Tapefile (Compute Mit)
» Applications » Tape-Monitor
» Applications » SuperTape: Von Disk zu Disk (Computer Technik)
» Applications » Tape Dump Utility
» Applications » Tape - Monitor (CPC Amstrad International)
» Applications » Tapecopy (Compute Mit)
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 148 millisecondes et consultée 337 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.