Kassetteninterface
Der AC1 benutzt in seiner originalen Ausbaustufe (FA, Monitor 3.1) ein eigenes Aufzeichnungsformat, dass an den ZETBUG angelehnt ist.
Von F.Ludwig (SCCH) stammt ein Turbo-Tape, dass das Aufzeichnungsverfahren des Poly-Computers und des Z1013 nutzt, aber mit abweichenden Zeitkonstanten.
AC1-Standard
Das Prinzip entspricht dem in [12] vorgestellten Kassetteninterface. Die dort angegebene Interfaceschaltung wurde dem Grundmodul des „AC1“ angepaßt. Die Software dazu wurde neu geschrieben, das Aufzeichnungsformat entspricht etwa den in [10] verwendeten.
Achtung: Das Kassettenaufzeichnungsformat des AC1 enthält nicht nur Speicherbereiche. Vielmehr ist es ein Containerformat mit verschiedenen Abschnitten (so gibt es z.B. auch Ladebilder). BASIC-Programme zum großen Basic V1.1 müssen als Audio-Datei geladen werden, ein Laden eines binären Dumps ist nicht direkt möglich.
Aufbau:
- Vorton 512x 00-Bytes
- Synchronisationsmuster E6h
- 'U' [Kennung Name] 6(16) Zeichen Dateiname, mit Leerzeichen aufgefüllt
- Vorton 256x 00-Bytes [Zeit für Namensdarstellung beim Einlesen]
- Datenblöcke: '<' [Kennung Block], je 1 Byte Blocklänge + max. 256 Byte Daten + 1 Byte Prüfsumme, Blocklänge 0 == 256 Byte
- 'x' [Kennung Startadr] 2 Byte startadr.
Die Startadr wird nach Einlesen nur angezeigt und in ARG1 abgelegt, das Programm startet nicht automatisch! Mit J: wird das Programm gestartet.
Datei:
Daten-Block '<':
max 256 Datenbytes. Obwohl jeder Block in der Anzahl variieren kann, hat nur der letzte Block < 256 Bytes
Beispielprogramm CLIST@ von der Musterkassette. Der Datenstrom besteht aus 4 Blöcken (Name + 256×00, 256 Datenbytes, 224 Datenbytes, Startadresse). Das ist Dump des Bytestreams, wie er auf Kassette abgelegt wird, und KEIN Binärdump des Programms im Speicher!
Das 8K-Basic 1.1 verwendet einen eigenen Dateiaufbau !!!
- 512 x 00-Byte Vorton
- E6 Syncbyte
- 6 Byte Name
- D3 Kennung Basic
- 2 Byte Laenge (hi, lo)
- xxx Bytes
Beispielprogramm LOCATO von der Musterkassette, Länge Programmblock 0F92h Bytes. Das ist Dump des Bytestreams, wie er auf Kassette abgelegt wird, und KEIN Binärdump des Programms im Speicher!
Beschreibung aus dem FA:
Die Aufzeichnungsgeschwindigkeit beträgt 1500 bit/s. Das bedeutet, daß bei einer Bandgeschwindigkeit von 4,76 cm/s auf 1 mm Bandmaterial etwa 4 Byte (genau 31,5 Bit) Platz finden. Anders gesagt, auf einer zweiseitig bespielten C-60-Kassette kann man etwa 640 KByte an Daten bzw. Programm unterbringen. Wenn man außerdem in Betracht zieht, daß bei diesem Verfahren ein 16 KByte langes Programm in nur knapp 90 s geladen wird, so wird doch deutlich, daß dies ein ökonomisches und auch einigermaßen schnelles Mittel zur Programmspeicherung ist.
Das Prinzip des hier angewandten Aufzeichnungsverfahrens ist in Bild 32 am Beispiel des zur Synchronisation verwendeten Bitmusters dargestellt. Für die Aufzeichnung eines Bit wird eine Periode einer 1,5-kHz-Rechteckschwingung abgelegt. Mit dem hier verwendeten Bitmuster 0E6H bzw. dessen Negation 19H werden dann die Aufzeichnungen beim Einlesen wieder auf den Byteanfang synchronisiert. Das negierte Synchronisationsmuster muß mit ausgewertet werden, da man nicht einfach voraussetzen kann, daß das aufgezeichnete Signal in der gleichen Phasenlage vom Band kommt, in der es abgespeichert wurde. Schon gar nicht, wenn man auch noch von einem anderen Gerät einlesen will, mit dem die Aufnahme nicht gemacht wurde. Und genau das dürfte ja beim Programmaustausch der Regelfall sein.
Ebenfalls zur Anpassung an die Gegebenheiten der Aufzeichnungsgeräte ist eine zweite Ergänzung notwendig, die mit dem eigentlichen Aufzeichnungsverfahren nichts zu tun hat. Geräten mit einer Aussteuerungsautomatik muß man nämlich etwas Zeit geben, damit diese sich einpegeln können. Zu diesem Zweck werden dem Synchronisationsbyte 512 Nullbytes vorangefügt. Das heißt, für etwa 3 s ist ein 1,5-kHz-Ton zu hören, und dann beginnt erst die eigentliche Information. Dieser charakteristische Ton erleichtert dann gleichzeitig das Auffinden der einzelnen Programmanfänge. Beim Einlesen wird am besten innerhalb dieses Kenntones das Ladeprogramm mit der CR-Taste aktiviert.
Nun muß auch noch etwas für ein Kriterium getan werden, das angibt, ob die eingelesenen Daten richtig sind, da natürlich Störimpulse oder Fehler im Band Fehlauswirkungen zur Folge haben können. Dazu gelangt die Information in Blöcken zu 256 Byte mit einer Prüfsumme je Block auf das Band. Während des Einlesens wird diese Prüfsumme dann wieder aus den gelesenen Bytes berechnet und mit der am Blockende aufgezeichneten verglichen. Sollten beide nicht übereinstimmen, so erfolgen eine Fehleranzeige und Abbruch des Ladeprogramms. Es muß dann erneut ausgeführt werden.
Zur Kontrolle der ordnungsgemäßen Funktion des Einlesens blinkt auf dem Bildschirm hinter dem gelesenen Programmnamen im Blockrhythmus ein Stern. Dieser bis hier beschriebene Aufzeichnungs- bzw. Leseprozeß wird mit Software realisiert. An Hardware ist nur noch ein minimaler Aufwand erforderlich, der die Impulse vom Rechner in Pegel und Form anpaßt, und der die Information vom Band wieder zu einer Rechteckfolge regeneriert. Die dazu erforderliche Schaltung ist im Bild 31 dargestellt. Sie findet auf einer 40 x 70 mm großen Leiterplatte Platz. Die Leiterzugführung und der Bestückungsplan sind in den Bildern 33 und 34 zu sehen (diese Bilder werden im Teil 10 veröffentlicht). Der Aufbau dieser Platine ist unproblematisch. Der OPV im Wiedergabeteil arbeitet als Nulldurchgangskomparator. D1 und R5 schützen den PIO vor negativen Überspannungen, bzw. bei versehentlicher falscher Programmierung den entsprechenden Ausgangstreiber vor der Zerstörung. Bei der Verwendung des B 176 D ist R3 mit zu bestücken. Dieser Schaltungsteil wurde mit beiden angegebenen OPV-Typen erprobt. Die Funktion der Schaltung läßt sich leicht überprüfen, wenn man z.B. den Kennton vom Band an den Eingang anlegt. Das Eingangssignal sollte man dem Lautsprecherausgang des Geräts entnehmen, um eine einwandfreie Begrenzung des Signals zu ermöglichen, da der Pegel des Diodenausgangs bei den meisten Geräten zu gering ist. Das Netzwerk im Aufnahmezweig dient zur Reduzierung des Pegels, um das Kassettenbandgerät nicht zu übersteuern, und zur Unterdrückung der Oberwellen, die mit der Löschfrequenz Interferenzen bilden könnten. Mit R7 stellt man den Ausgangspegel so ein, daß die Aussteuerungsautomatik noch nicht begrenzt. Das sind meist 10 bis 20 mV.
Dieses Kassetteninterface wurde mit mehreren „AC1“ und mit verschiedenen Kassetten- und Magnetbandgeräten unter Verwendung normalen, handelsüblichen Bandmaterials getestet. Der Aufbau der Interfaceschaltung war dabei immer problemlos. Als Kassettenbandgeräte wurden z.B. „Mira“ und „Sonett“ verwendet, auch der Programmaustausch mit verschiedenen Geräten wurde simuliert. Einlesefehler traten so gut wie gar nicht auf, bzw. waren auf fehlerhafte Geräteeinstellung oder zu große Abweichungen in der Tonkopfsteilung zurückzuführen. Bei Geräten mit Tonblende bzw. Höhenregler muß dieser voll aufgedreht werden. Bei Fehlern infolge zu großer Tonkopfabweichungen genügt eine Einstellung des Tonkopfes auf helle Wiedergabe nach Gehör. Selbst relativ extreme Geschwindigkeitsschwankungen, die z.B. die Wiedergabe von Musikaufzeichnungen zur Qual machen würden, haben nicht zu Einlesefehlern geführt. Auch leichte Pegelschwankungen infolge des Bandmaterials konnten durch die Begrenzung des OPV ausgeglichen werden. Gegen vollständige „Drop out's“ (magnetische Fehlstellen) ist natürlich auch dieses Verfahren empfindlich, wobei diese in der Testphase bis jetzt nicht auftraten. Um einigermaßen sicher zu gehen, empfiehlt es sich, jede Aufzeichnung zweimal zu machen oder die gemachte Aufzeichnung mit einem Kontrolleseprogramm zu überprüfen. Ein solches Programm wird für den Monitor des „AC1“ noch erstellt werden.
Zusammenfassend kann gesagt werden, daß dieses Verfahren mit der gewählten Geschwindigkeit wohl einen guten Kompromiß zwischen Schnelligkeit und sicherem Programmaustausch bei minimalen Anforderungen an das Aufzeichnungsgerät darstellt. Bei der Verwendung hochwertiger Geräte sind sicher noch weitaus höhere Bitraten mit der gleichen Sicherheit möglich. Auch ist eine komfortablere Software denkbar, die dann z.B. Namenerkennung und wählbare Geschwindigkeiten gestattet, aber dafür auch weitaus mehr Speicherplatz benötigt und somit erst bei einer Speichererweiterung sinnvoll ist.
[10] Krake, H.: ZETBUG - ein komfortabler Z-80-Monitor, Funkschau 52 (1980), H.11
[11] Klein, R. D.: Basic Interpreter, Franzis Verlag, München
[12] Selenko, G.; Panov, W.; Popov, S.: Mikroprozessoren und Mikrorechner für den Funkamateur, RADIO, Heft 9/1983, Seite 32 bis 35
Turbo-Tape
Von F.Ludwig (SCCH) stammt ein Turbo-Tape, dass das Aufzeichnungsverfahren des Poly-Computers und des Z1013 nutzt, aber mit abweichenden Zeitkonstanten.
Im SCCH-Monitor V8 ist Turbo-Tape neben dem originalen Aufzeichnungsverfahren vorhanden; im SCCH-Monitor 1088 findet sich nur noch Turbo-Tape.
Die Übertragungsrate beträgt ca. 4000 Bit/s.
Im wesentlichen gelten die Ausführungen von Z1013-Kassettenformate. Es gibt einen Kopfblock (Header), der nicht zum Z1013-Headersave kompatibel ist, sondern einen eigenen Aufbau besitzt. Dieser Kopfblock und der erste nachfolgende Datenblock haben einen langen Vorton, die anderen Datenblöcke einen kurzen Vorton.
Datei:
Block:
Kopfblock:
Im Kopfblock ist Dateiname (16 Zeichen), Anfangs- und End-Adresse und der Dateityp (1 Zeichen) enthalten. Eine Startadresse gibt es nicht!
Aufbau des Kopfblocks:
Byte | Bedeutung |
---|---|
0-7 | Turbo-Kennung (8x D'N') |
8-23 | Dateiname, mit Leerzeichen aufgefüllt |
24,25 | ': ' |
26 | Dateityp (z.B. „P“: Ausführbares Maschinencodeprogramm) |
27,28 | Endadresse |
29,30 | Endadresse |
31 | 'L' (für Ludwig ?) |
Es werden 4 Dateitypen unterschieden:
- P Lauffähiges Maschinenprogramm
- D Maschinendatei
- B Basicprogramm
- F Datenfeld (BASIC)
Die Filetypen B und F können nur mit BASIC - Interpreter V.3.2 geladen werden. Im Monitor erfolgt lediglich Anzeige des Namens, Filetyp, Anfangs- und Endadresse.
Im Kopfblock gibt es keine Startadresse. Nach dem Laden überprüft der Computer aber das Programm auf eine Autostart-Sequenz. Ist diese vorhanden, erfolgt der Autostart auf entsprechender Adresse. Die Autostartsequenz muss an der Anfangsadresse stehen (5 Byte):
53 43 48 xx xx ; xx xx = Startadresse.
Autostart-Tape
Speichern eines Programms auf Kassette (mit optionalem Startbild) und selbstständigem Start nach dem Einlesen, B.Nickel, 1988
Es wird nicht nur der reine Speicherbereich auf Kassette gespeichert. Das Aufzeichnungsformat ist ein sog. Container-Format, wo man ein Startbild einbinden und einen Autostart aktivieren kann. Der Autostart war ein effektiver Kassetten-Kopierschutz (nach 5x umkopieren ging nichts mehr) und wurde auch so genutzt.
!TODO!
Super-Tape
E.Ludwig
!TODO!
USB .Z80-Dateien
Von Ralph Hänsel stammt Software zur Nutzung eines VDIP-Moduls + USB-Stick. Hier werden Dateien im Z1013-.Z80-Format abgelegt. Auch der JKCEMU nutzt dieses Format zum Speichern und Laden von AC1-Programmen.
Es gibt einen Kopfblock (Header), der zum Z1013-Headersave kompatibel ist.
Kopfblock:
Im Kopfblock ist Dateiname (16 Zeichen), Anfangs- und End-Adresse und der Dateityp (1 Zeichen) enthalten.
der freie Bereich ist mit „AC1RWTP“ „MO11.0“, „DVU21 “ o.ä. gefüllt.
Es werden 4 Dateitypen unterschieden:
- P Lauffähiges Maschinenprogramm (z1013: C !!)
- D Maschinendatei
- B Basicprogramm
- F Datenfeld (BASIC)