Übersetzung der amerikanischen Anleitung zur 1764-REU. Diese Übersetzung läßt die allgemeinen Kapitel aus und soll auch nicht unbedingt Wort für Wort übertragen werden, sondern soll "die Inhalte" vermitteln.

Leider bin ich kein Programmierer, so daß in den betreffenden Kapiteln u.U. "Stuß" übersetzt wurde. Sollte jemandem so etwas auffallen, bitte mit mir Kontakt aufnehmen, damit entsprechend nachgebessert werden kann.

Dieser Text wird als Shareware veröffentlicht, das heißt, daß jeder, der Nutzen daraus zieht, eingeladen ist, dem Autor eine kleine Anerkennung zukommen zu lassen.

Vom gleichen Autor stehen noch viele weitere Übersetzungen zur Verfügung (z.B. Maverick, Big Blue Reader, QWK Offlinereader, CS-DOS, 1581 Tools, Dialogue128)

Die 1764 Test-/Demodiskette

enthält die folgenden Programme:

- RAMDOS (RAM-Floppy)

- DOS wedge (DOS-Werkzeug)

- Datei-Kopierer

- Laufwerksnummern tauschen

- bewegte Bilderreihen

- Diagnoseprogramm

- GEOS Configuration (Rückseite der Diskette)

Das Startprogramm läßt sich mit

LOAD"*",8 (RETURN) und anschließend: RUN (RETURN)

starten.

Die einzelnen Programme können aber auch direkt wie gewohnt geladen werden.

Die anwählbaren Menüpunkte sind:

1. RAM-Laufwerk anlegen

2. DOS-Werkzeug anlegen

3. Dateikopierprogramm

4. Laufwerksnummern ändern

5. REU Testprogramm

6. REU Demoprogramm POUND (Gatter)

7. REU Demoprogramm GLOBE (Globus)

8. Rücksprung nach BASIC

DOS-Werkzeug anlegen ('Installing DOS Wedge')

Das DOS-Werkzeug (DOS Wedge) vereinfacht die Handhabung der BASIC Befehle im Umgang mit Laufwerken (sowohl 'echten' als auch RAM-Disk).

Nach dem Start des Programms erscheint eine Hilfsseite mit den zur Verfügung stehenden Befehlen. Die allgemeine Form ist:

'Befehl Laufwerksnummer Dateiname'

Die Laufwerksnummer ist optional. Wird keine eingegeben, bezieht sich das Programm auf das zuletzt zugegriffene Laufwerk.

Die Befehle im einzelnen:

/Dateiname laden eines BASIC Programmes (entspr. LOAD"Dateiname",8)

/9Dateiname laden eines BASIC Programmes (entspr. LOAD"Dateiname",9)

^Dateiname laden eines BASIC Programmes (entspr. LOAD"Dateiname",8)

%Dateiname laden eines Maschinenspracheprogrammes (LOAD"Datei",8,1)

(Pfeil-links)Datei speichern eines BASIC Programmes (SAVE"Datei",8)

(at)Befehl sendet Diskettenbefehl (entspr. OPEN15,8,15,"Befehl":CLOSE15)

('at' ist das geschweifte a, rechts der Taste 'P')

Aus dem Hilfe-Schirm gelangt man mit irgendeiner Taste zum Startmenü zurück, mit RUN/STOP in den BASIC Modus (natürlich mit den aktivierten neuen Befehlen).

Achtung: die DOS Wedge belegt den gleichen Speicherplatz wie DOS 5.1 ($cc00 bis $cfff), beide sind zueinander inkompatibel.

Dateikopierprogramm ('File Copy Utility')

Das Programm kopiert PRG, SEQ, REL und USR Dateien zwischen beliebigen Laufwerken (auch RAM-Disk) hin und her.

Nach dem Programmstart wird die Nummer des Quell-Laufwerkes ('SOURCE', "Original") und darauf die des Ziel-Laufwerkes ('DESTINATION', "Kopie") eingegeben. Auf die folgende Frage 'enter template or return' kann ein Suchmuster mit den bekannten 'Jokern' (* bzw. ?) eingegeben werden, RETURN liest alle Dateinamen von der Quelldiskette ein. Die gelesenen Dateinamen werden nun einzeln angezeigt und abgefragt, ob sie zu kopieren sind ('y' eingeben), oder nicht ('n'). Am Ende der Liste erscheint 'CONTINUE?' (fortfahren?); mit 'y' beginnt der Kopiervorgang, mit 'n' kehrt man an den Programmbeginn zurück.

Laufwerksadresse(n) ändern ('Change Unit Numbers')

Dieses Programm fordert erst zur Eingabe der zu ändernden Geräteadresse ('OLD . . .') auf, dann der neuen Adresse ('NEW . . .') auf, die für dieses Laufwerk gelten soll. Diese Änderung(en) werden durch einen Reset wieder aufgehoben.

1764 Diagnose ('1764 Diagnostic Test')

Dieser Test prüft den gesamten Speicher der 1764-REU, dabei gehen alle vorher ggf. enthaltenen Daten verloren. Der Test dauert ca. 1 Minute und war erfolgreich, wenn der Text in jeder Zeile 'PASS' lautet. (Im Anhang wird dieses Programm eingehender erläutert.)

Die Animationen

werden mit '6' bzw. '7' aufgerufen. Beide Programme sind dokumentiert und können nach 'LIST' erkundet werden.

POUND besteht aus 32 und GLOBE aus 36 Einzelbildern. Beide Programme benötigen freien Platz in der REU, laufen deshalb nicht, wenn RAM-Disk aktiviert wurde.

Die Programme lassen sich mit <RUN/STOP> abbrechen.

RAMDOS

(A.d.Ü.: dieses ist eine C64-Version, für den 128'er gibt es eigene!)

Mit dem Programm RAMDOS wird die REU wie eine äußerst schnelle Fs

< 3 !

< 3 93

<

erfahrenen Programmierern eingesehen/geändert werden. RAMDOSxxx.BIN wird durch RAMDOSxxx.BAS aufgerufen und enthält den Maschinensprachecode, der zunächst in das RAM des 64'ers und von dort zum REC der REU kopiert wird (REC = RAM Expansion Controller (A.d.Ü.: = DMA?), siehe Abschnitt 4 für genaueres)

Arbeitsweise des DOS (RAMDOS)

Die Installation des DOS überschreibt Systemspeicher, der aber nach erfolgreicher Installation wieder frei zur Verfügung steht - mit zwei Ausnahmen:

1) Vektoren werden auf das neue DOS umgeleitet, jenes enthält die alten Adressen

2) der DOS-Interfaceblock; er kann (fast) überallhin geld

3

9$ 1

'90 0

Speicherbereiche

Für erfolgreiches Arbeiten, müssen stets die Speicheraufteilungen des 64'ers und der REU berücksichtigt werden, um keine Konflikte zu schaffen. Hier hilft der "Commodore 64 Programmer's Reference Guide" mit ausführlichen Erklärungen.

REU Befehle

Es gibt hier 4 wichtige Modi:

1) einen Datenblock vom 64'er zur REU kopieren

2) einen Datenblock von der REU zum 64'er kopieren

3) einen Datenblock zwischen 64'er und REU austauschen

4) einen Datenblock des 64'ers mit einem Block auf der REU vergleichen (VERIFY)

Die REU stellt hierfür verschiedene interne Register zur Verfügung (siehe Tabelle 4-3 in der Originalanleitung). In der Fußnote zu dieser Tabelle steht: Die Basisadresse der REU Register im I/O Bereich des 64'ers ist $df00. Die Adressen der Register erhält man durch aufaddieren der Werte in der 'Address'-Spalte.

DMA-Modus (Direct Memory Access; direkter Speicherzugriff)

Operationen und Datenaustausch über den DMA-Chip bewirken, daß der 64'er Prozessor für diese Zeit angehalten wird.

Es gibt zwei unterschiedliche Methoden, eine Datenaustauschsequenz einzuleiten:

1) ist die ff00 Option im Befehlsregister ($01) deaktiviert, beginnt der DMA sofort, wenn das Ausführbit (execute bit) im Befehlsregister (command register) gesetzt wird.

2) ist die ff00 Option aktiviert, beginnt der DMA sofort, wenn ein Schreibzugriff auf die Adresse ff00 erkannt wird - vorausgesetzt, das Ausführbit (execute bit) wurde früher im Befehlsregister gesetzt.

Der Zweck der ff00 Option ist, der REU den Zugriff auf das RAM neben dem I/O-Bereich zu gestatten. Die REU Register sind auf den C64 Expansionsbus "ge-mapped", was bedeutet, ohne die ff00 Option würden I/O-Bereiche aktiviert, wenn DMA angesprochen (initiiert) wird. Somit erlaubt diese Option, daß der C64 I/O-Bereich ausgelagert und durch RAM ersetzt werden kann, bevor der eigentliche Datenaustausch stattfindet. Die ff00 Option löscht sich selbst nach jeder Benutzung.

Spezielles

AUTOLOAD - wählst Du diese Option im Befehlsregister (command register), so werden die

- C64 Basisadressenregister

- REU Basisadressenregister

- REU Speicherbank und die

- Bytezählregister (byte counter registers)

am Ende eines transfers automatisch wiederhergestellt.

Das ist nützlich, wenn eine Operation wiederholt auf einen speziellen Datenblock ausgeführt werden soll. Beachte: wird AUTOLOAD im Verify-Modus gewählt, geht die Adresse verloren, an der (ggf.) ein verify-error auftrat. Für gewöhnlich läßt sich der verify-error finden, indem in der REU der DMA-cycle, beide Adressenregister und der Bankzeiger auf die Speicherstelle zeigen, die dem Fehler folgt.

ADDRESS CONTROL - ist eine weitere spezielle Eigenschaft der REU. Sie 'merkt' sich die externen Geräteadressen (Quell- und Ziellaufwerk), dazu müssen im "address control register" ($0a) die richtigen Bits gesetzt werden. Voreingestellt ist, daß die Adressen für Quell- und Ziellaufwerk aufaddiert werden. Sind die Adressen aber fest eingestellt, ist es möglich, den DMA mit jedem beliebigen I/O-Gerät stattfinden zu lassen.

INTERRUPTS - ein Interrupt kann an einem "end of block" oder einem "verify error" ausgelöst werden. Dazu muß man die Interrupts einschalten und die entsprechenden "mask bits" im "interrupt mask register" ($09) setzen. In beiden Fällen wird im Statusregister automatisch ge-flag-t. Interrupt flags werden wieder gelöscht, indem das Statusregister ausgelesen wird. Die Bits im "interrupt mask register" bleiben unverändert. Für einen fehlerfreien Datenaustausch (DMA) unter aktiviertem Interrupt sollte vorab mindestens einmal das Statusregister ($00) ausgelesen werden (um evt. vorhandenen 'Müll' von vorhergehenden Operationen zu löschen).

Weitere Einzelheiten

Überschreitet eine angegebene Adresse den zur Verfügung stehenden Bereich einer Bank, so findet ein automatischer "Umbruch" in die nächste Bank statt. Das passiert immer dann, wenn der Wert im Bytezähler die Zahl der restlichen Bytes in der betreffenden Bank übersteigt. Der 64'er macht diesen "Umbruch" in die gleiche Bank (also auf den Anfang).

Unter 'normalen' Bedingungen (kein AUTOLOAD, Adressen hochzählen) zeigen beide Adressenregister auf die nächste Speicherstelle, die dem übertragenen Bereich folgt. Das gilt für jeden Modus und beide Adressenregisterzeiger, außer daß einer fixiert wurde. Der Zeiger auf die Bank wird -soweit nötig- am Ende eines Tranfers aktualisiert. Beachte auch, daß normalerweise der Bytezähler bis auf "1" herunterzählt; deshalb aufpassen und den vollständigen Datenaustausch über das "transfer complete bit" kontrollieren und sich nicht auf den Bytezähler verlassen. Der Bytezähler kann auch den Wert "0" annehmen, wenn volle 64K übertragen wurden (dabei findet auch ein Bank-"Umbruch" statt!).

Anhgang: 1764-Diagnose Programm

Nach dem Start des Diagnoseprogramms erscheint eine Warnung ("this program will destroy . . ."), daß alle Daten, die in der REU stehen, verloren gehen, gefolgt von der Sicherheitsabfrage, ob fortgefahren werden soll ("do you wish to continue?"). Auf RETURN wird abgebrochen, mit "y" weitergemacht.

Der Test dauert ca. 1 Minute lang und zeigt am Bildschirm an, wo er sich gerade befindet. In der zweiten Spalte steht "PASS" für 'Test bestanden', oder "FAIL" für 'durchgefallen'.

Am Programmende kann mit der Leertaste der Prozeß wiederholt werden, mit RUN/STOP wird ein Reset ausgeführt.

Das Diagnoseprogramm führt eine Reihe von Tests aus:

TEST 1 prüft den gesamt vorhandenen Speicher der 1764, indem vier Datenmuster ($00, $aa, $55, $ff) in jeden Speicherplatz geschrieben und mit Verify überprüft werden.

TEST 2 schreibt $aa und $55 in unterschiedliche Stellen der REU und überprüft jene.

TEST 3 und 4 testen den Datenaustausch zwischen C64 und REU. Dazu wird $ff in folgende Speicherbereiche des 64ers geschrieben:

$0002-$004f; $0080-$0136; $0200-$03ff; $0800-$7fff; $c000-$cfff; $e000-$feff

Der Datenaustausch von der REU zum 64er wird die Speicherbereiche des 64ers $1000-$2fff und $3000-$5fff abwechselnd mit $55 und $aa füllen (dabei wird auch das RAM des Computers getestet). Test 4 ist eine Wiederholung von Test 3, lediglich werden nun 500 Bytes aus dem Hintergrund des Bildschirms vorausgesendet, bevor der Datenaustausch stattfindet.

TEST 5 prüft die AUTOLOAD Funktion der REU. Nach einem Datenaustausch müssen sich die REU Register selbst auf den Zustand vor dem Datenaustausch zurücksetzen. Bei diesem Test werden der Basisadressregister ("Base Address Register"), der REU-Basisregister ("RAM Expansion Base Register"), der Längenregister ("Byte Transfer Lenght Register") und der RAM-Bank Register überprüft.

TEST 6 schließlich überprüft den Datenaustausch mit fixierter REU-Adresse, indem 1K Daten nach $3000-$33ff des 64ers übertragen wird. Die Daten sollen in diesem Bereich alle gleich sein, wenn die REU richtig funktioniert hat.

TEST 7 prüft die $ff00-Decodierfunktion, die im Befehlsregister angesprochen wird. Nach einer gewissen Wartezeit prüft das Programm, ob tatsächlich kein