


                           SPECCY



         Der ZX-Spectrum-Emulator fuer den Atari ST



           Copyright (c) 1990 Hansjoerg Oppermann


                 Autor:  Hansjoerg Oppermann
                         Rennelbergstr. 15
                         3300 Braunschweig



ZX Spectrum ist ein eingetragenes Warenzeichen der
Firma Sinclair Research Ltd.

---

Unter der Voraussetzung, dass die Dateien

     SPECCY.PRG, SPECCY.RSC,
     SPECTRAN.PRG, SPECTRAN.RSC, SPECTRAN.XXX
     READ_ROM.TOS, SAVE_ROM.XXX, SENDPROG.TTP
     und SPECCY.TXT

zusammen und unveraendert kopiert werden, darf SPECCY fuer 
private Anwender frei kopiert und benutzt werden. 
Kommerzielle Nutzung in jeder Form (dies schliesst auch
den Vertrieb ueber Public-Domain-Sammeldisketten oder
aehnliches ein) ist NICHT gestattet.

---

Nun doch! Diese Projekt laeuft schon seit ueber drei Jahren. 
Ich konnte  mich lange nicht entschliessen den Emulator in 
irgend einer Weise zu beenden. Er war eher eine Studie als 
ein richtiges Produkt. Ich hatte viele Versionen angefangen 
und doch nicht beendet; es gab ihn als GEM-Programm, als 
Entwicklungumgebung mit Monitor und Disassembler und wie 
nun, als Standalone ohne ROM und ohne viel Schnickschnack.

Als grosse Hilfe erwies sich der CPM80-Emulator von 
SoftDesign Muenchen. Dort habe ich viele Anregungen 
gefunden. Als ein Problem erwies sich das Behandeln der 
Interrupts und die Darstellung des Bildschirms, konnte aber 
(auf Kosten der Geschwindigkeit) geloest werden.

Nun, was kann der Emulator? Er verhaelt sich wie ein 
normaler Sinclair ZX-Spectum mit 48 KB RAM, einem Kemston 
Joystick-Interface und ohne Drucker. Die Tastatur ist zu 
einer Rubbel-Gummi-Tastatur zurueck entwickelt worden. Die 
linke Shift-Taste ist CAPS-Shift, die rechte SYMBOL-Shift 
und die grosse Space-Taste nun BREAK-SPACE. Wer damals 
keinen Spectum besessen hat, wird mit diesen Hinweisen nicht 
viel anfangen koenne. Er sollte sich an einen alten 
Spectrum-User wenden und dort die noetigen Hilfen holen.

SPECCY laeuft nur in High- und Low-Resolution. Weiter 
Aufloesungen oder Bildschirmformate werden nicht 
unterstuetzt. Im Monochrombetrieb wird die Farbe in 
Graustufen dargestellt.

Die Geschindigkeit ist nicht berauschend. Leider!

Noch eins, da das Spectum-ROM dem Copyright unterliegt, ist 
es NICHT im Emulator enthalten. Wenn ihr den Emulator also 
benutzen wollt, muesst ihr euch erst einmal ein Spectrum-ROM 
besorgen. Es liegt ein Programm bei, welches dieses Problem 
einfach loest. Ihr braucht einen Spectrum mit Interface I, 
ein Null-Modem-Kabel zwischen Spectum und Atari ST und los 
gehts. Das wie wird weiter unten beschrieben.

Um Programme des Spectums zu nutzen, liegt ein 
Transferprogramm fuer den Atari ST und dem Spectrum bei. Die 
Benutzung der beiden sollte keine Probleme aufwerfen. 
Selbst Baudraten bis 19 KiloBaud sind moeglich.

Beim Starten des Emulators erscheint eine Dialog-Box. Hier 
koennen einige Parameter veraendert werden:

1.   Anzahl der Interrupts pro Sekunde. Wie oft ein Z80-
     Interrupt erzeugt wird. Hiervon ist die 
     Tastaturroutine des Spectrum abhaengig. Durch 
     Verringern der Interrupts kann die Geschwindigkeit 
     gesteigert werden.

2.   Anzahl der Bildschirm-Refreshs pro Sekunde. Die 
     Darstellung des Bildschirm wird periodisch erneuert. 
     Es werden aber nur die Stellen bearbeitet, die sie 
     geaendert haben. Durch Heruntersetzen der Anzahl kann 
     wiederum die Geschwindigkeit gesteigert werden.

3.   Flash. Die Blinkgeschwindigkeit, z.B. des Cursor steht 
     in Abhaengigkeit zur Bildschirm-Refresh-Frequenz.

4.   Beeper. Schaltet die Tonausgabe ein und aus. Es 
     existiert einmal ein Emulation fuer die im Rom 
     eingebaute Ton-Routine und auch die von den meisten 
     Programmen genutzte Moeglichkeit direkt ueber OUT-
     Befehle. Da die Geschwindigkeit des Emulators nicht 
     die seines Orginals (jedenfalls auf einem normalen ST) 
     erreicht, sind die Toene oder Geraeusche ueber den OUT-
     Befehl ein wenig zu tief. Um einen davon zu befreien, 
     gibt es diesen Schalter.

5.   Speecy. Mit diesem Button wird der Emulator gestartet. 
     Es wird kein Reset ausgefuert. Das heisst, dass man an 
     der Stelle, wo man den Emulator ueber UNDO verlassen 
     hat, weiter das Programm fortsetzt.

6.   Reset. Zuruecksetzen und Starten des Emulators. Die 
     Register des Z80 werden geloescht und ein RST 0 
     ausgefuehrt (Kaltstart).

7.   Exit. Verlassen des SPECCY. Tschuess.

Der Emulator kann jederzeit durch die Taste UNDO verlassen 
werden, man kehrt wieder zu Start-Dialog-Box zurueck. Weiter 
sind einige Tasten der Atari-Tastatur mit Funktionen 
belegt, die das Arbeiten mit dem Spectrum erleichtern 
sollen. Die Cursor-Tasten funktionieren ohne das man zwei 
Finger quaelen muss, Insert wie EDIT und das DELETE des 
Spectrums liegt auf Backspace (wo es auch hingehoert).

Beim Laden ohne Dateinamenangabe erscheint ein 
Fileselectorbox, wo beliebige Spectrum-Dateien angewaehlt 
werden koennen.

Fuer Schwerenoeter: ein Spectrum-Datei hat folgendes Format:
     17 Bytes Spectrum-Tape-Header
          1 Byte         Dateitype
          2 - 11 Byte    Dateiname (10 Zeichen)
          12 - 17 Byte   Laengen- und Addressangaben
     anschliessent den Inhalt der Datei

Da ein Dateiname des Spectrums 10 Zeichen lang seinen und 
auch Zeichen enthalten kann, die beim Atari nicht in 
Dateinamen erscheinen duerfen, musste hier ein Einschnitt 
geschehen. Der Name im Spectrum-Tape-Header wird ohne 
Sonderzeichen, bis max. 8 Zeichen als Name fuer die 
Spectrum-Datei verwendet. (Punktum!)

Nun. bertragung des Spectrum-ROMs und der Spectrum-
Programme. Der erste Schritt ist ein geeignetes Null-Modem-
Kabel zu bekommen. Wer hat der hat und wer nicht muss noch.

Der zweite Schritt ist das bertragen der Programme zum 
bertragen von Daten auf der Spectrum-Seite zur Atari-Seite 
(Puh).
Dazu stellt man auf dem Atari die RS-232-Schnittstelle auf 
9600 Baud, 8 Daten-Bit, 1 Stop-Bit ein und schaltet XON-
XOFF aus und RTS-CTS ein. Dann tippt man auf dem Spectrum 
folgende Zeilen ein:

     10 FORMAT "b";9600
     20 LOAD *"b"

(Diese Zeilen stellen einen binaren Stream mit 9600 Baud 
zur Verfuegung und versucht ein Programm (BASIC-HIC) ueber 
diese Stream zu laden)

Mit RUN dieses Programm starten. Nun auf dem Atari das 
Program SENDPROG.TTP mit dem Parameter SAVE_ROM.XXX 
starten. Wenn alles gut gegangen ist, wird auf dem Spectrum 
nun ein kleines BASIC-Programm liegen. Diese kopiert das 
Spectrum-ROM in einen hoeheren Bereich im Spectrum und 
schickt es dann auf die Reise zum Atari. 
Hier noch ein wichtiger Satz zum Spectrum-ROM:
     Das Spectrum-ROM muss ein Orginal Sinclair ZX-Spectrum 
     ROM sein, also kein in irgendeinerweise geaendertes.
Erklaerung:
     Da das ROM im Speccy noch gepatch werden muss und ich 
     nur das Orginal beruecksichtige, werden alle 
     Zuwiderhandlungen leider zum Misserfolg dieser Mission 
     fuehren.

Nun weiter. Also startet das Programm (SAVE_ROM) auf dem 
Spectrum und wartet ein Weilchen, denn BASIC ist kein 
Rennpferdchen. Die Zeit laesst sich nutzen und auf dem Atari 
das Programm READ_ROM.PRG starten. Zu Ende ist diese 
Prozedur, wenn beide Programme sich beendet haben und auf 
dem Atari eine Datei namens SPECCY.ROM vorliegt.

Um das erste Mal den Emulator zu Starten, kopieren sie die 
Dateien SPECCY.PRG, SPECCY.RSC und SPECCY.ROM in einem Pfad 
und starten das Programm SPECCY.PRG.

---

Na, alles klar? (Wenn nicht, weiss ich's auch nicht. Bei mir 
funktionierts)

Nun fehlt noch die bertragung von Daten. Dazu gibt es das 
Programm SPECTRAN(S). Nochmals den BASIC-Zwei-Zeiler von 
oben auf dem Spectrum eingetippt, Starten (RUN) des 
Spectrums und starten des Programms SENDPROG.TTP mit 
SPECTRAN.XXX. Das Programm, welches nun im Spectrum liegen 
sollte, solltet Ihr am Besten nun sichern.

Mit dem Programm SPECTRAN auf dem Atari und auf dem 
Spectrum koennen nun Daten vom Spectrum zum Atari gesendet 
werden. Beide muessen auf die gleiche Baudrate eingestellt 
werden, an sonsten gibt es wohl keine Probleme.

Bisher werden nur Daten, die auf Kassetten vorliegen und 
nicht groesser als ca. 36 KByte sind, uebertragen. Auch nur
in einer Richtung! Dies ist eine Grenze, die noch zu 
Beseitigen ist. Wer sich daran versuchen will, kann von mir 
die noetigen Daten und Sourcen (C) der Atari-Seite bekommen.



Puh! Nun ist alles gesagt, was zu sagen ich in der Lage 
bin. Wahrscheinlich wimmelt dieser Text vor 
Rechtschreibfehlern, die unterliegen aber meinem Copyright 
(Ich habe auch immer viel Spass beim Lesen meiner 
schriftlichen Erguesse).


3.7.90    Viel Spass!


