Dela ROM-Port-Adapter

Aus Atari Wiki
Wechseln zu: Navigation, Suche
Der Dela Romport Adapter - Klick für größeres Bild
Der Dela Romport Adapter

Als Besitzer eines Atari ST Computers sind Sie sicherlich von der immensen Leistungsfähigkeit Ihrer Supermaschine überzeugt. Sie besitzen einen Computer mit einem ungeschlagenen Preis/Leistungsverhältnis. Alles, was ein professioneller Computer benötigt, bringt der Atari mit, hochauflösende Grafik, riesige Speichermengen und nicht zuletzt der phantastische Monochrome-Monitor. Dazu noch der parallele Anschluss für den Printer und einen seriellen Anschluss für Modems etc. und als Zugabe einen schnellen DMA Port.

Ein Einziger kleiner Nachteil lässt sich jedoch nicht verschweigen. Die ST Computer besitzen keinerlei Anschlussmöglichkeiten für eigene Entwicklungen, es gibt keine Slots wie in PC's und auch keine Userport's für ( wie der Name schon sagt ) den Anschluss eigener Interface, wie z.B. beim legendären C64. Genau an dieser Stelle greift DELA-USERPORT ein. Mit Hilfe dieser Preiswerten Interface ist nun jedermann in der Lage, ohne Gefahr für seinen Rechner, eine eigene Schnittstelle zu kreieren.

Mit dem DELA-ATARI-ST-Userport lassen sich jetzt z.B. weitere Centronics Schnittstellen programmieren oder auch ein IEEE-BUS Interface oder zusätzliche serielle Schnittstellen; man kann aber auch z.B. mehrere Ataris mit einer eigenen Software koppeln oder oder oder …

Das wichtigste auf einen Blick

  • je Steckerleiste 2 acht-bit Input Ports
  • je Steckerleiste 2 acht-bit Output Ports
  • alle Ports sind TTL kompatibel
  • alle Ports sind voll gepuffert
  • keine zusätzliche Stromversorgung nötig
  • Parallel-Port, Serial-Port und DMA-Port bleiben frei
  • leichteste Handhabung, in allen gängigen Sprachen
  • insgesamt 32 bit Output
  • insgesamt 32 bit Input

Anschluss der Userport's an den Atari ST

Der DELA-ATARI-ST-Userport kann an alle Atari ST Modelle angeschlossen werden ( auch an den neuen Mega ST Computer ). Der Userport wird in den ROM-Port Ihres Atari gesteckt. ACHTUNG! Der DELA-ATARI-ST-Userport darf nur an den ST angeschlossen oder entfernt werden, wenn der Rechner vorher ausgeschaltet wurde!!!!!

Die Bauteilseite des Userport gehört nach oben, d.h., Sie müssen die Bauteile sehen können, wenn der Userport im ST steckt. Sie sollten den Userport niemals anders in den Rechner stecken, da ansonsten Schäden an Rechner und Userport auftreten können.

Die Belegung der beiden Steckerleisten

Beide Steckerleisteranschlüsse sind identisch belegt, d.h., wenn Sie eine eigene Hardware entwickeln, so lässt sie sich wahlweis am ersten oder zweiten Stecker anschließen. Lediglich die Adressen im Speicher des Atari sind für die Stecker verschieden. Beide Anschlüsse sind völlig unabhängig voneinander. Die folgende Tabelle zeigt die Belegung der Steckerleisten genau aus der Perspektive, die die Anschlüsse haben, wenn Sie den Userport in den ROMPORT Ihres Atari gesteckt haben:

Obere Steckerleiste:

Port A Input   Port C Output
Bit 0 1   18 Bit 0
Bit 1 2   19 Bit 1
Bit 2 3   20 Bit 2
Bit 3 4   21 Bit 3
Bit 4 5   22 Bit 4
Bit 5 6   23 Bit 5
Bit 6 7   24 Bit 6
Bit 7 8   25 Bit 7
             
Port B Input   Port D Output
Bit 0 9   26 Bit 0
Bit 1 10   27 Bit 1
Bit 2 11   28 Bit 2
Bit 3 12   29 Bit 3
Bit 4 13   30 Bit 4
Bit 5 14   31 Bit 5
Bit 6 15   32 Bit 6
Bit 7 16   33 Bit 7
5 Volt 17   34 GND ( Masse )


Untere Steckerleiste

Port A Input   Port C Output
Bit 0 1   18 Bit 0
Bit 1 2   19 Bit 1
Bit 2 3   20 Bit 2
Bit 3 4   21 Bit 3
Bit 4 5   22 Bit 4
Bit 5 6   23 Bit 5
Bit 6 7   24 Bit 6
Bit 7 8   25 Bit 7
             
Port B Input   Port D Output
Bit 0 9   26 Bit 0
Bit 1 10   27 Bit 1
Bit 2 11   28 Bit 2
Bit 3 12   29 Bit 3
Bit 4 13   30 Bit 4
Bit 5 14   31 Bit 5
Bit 6 15   32 Bit 6
Bit 7 16   33 Bit 7
5 Volt 17   34 GND ( Masse )


Das Prinzip Des Userports

Warum wird der Userport an den ROMPORT angeschlossen?

Weil der ROMPORT der unwichtigste Port des Atari ist. Es soll ja Leute geben, die am parallelen Port einen Drucker betreiben eine ein Modem am seriellen Port, ebenso eine Festplatte an der DMA Schnittstelle. Also bleibt nur noch der ROMPORT.

Wie werden Daten vom Port in den Rechner gelesen?

Jedes der Insgesammt vier INPUT Register des USERPORT'S besitzt eine eigene Adresse im Speicher Ihres Atari. Wird diese Adresse gelesen, so repräsentier das dort gelesene Byte den zustand des dazugehörenden INPUT Port, als alle 8 Bit. Die Wertigkeit dieser Bits ist natürlich identisch mit o.g. Tabelle.

Wie werden Daten aus dem Rechner auf den Port geschrieben?

ANTWORT: Gar nicht!! Bekanntlich erzeugt die MMU des Atari beim Versuch in den Speicherbereich von fa0000h bis fbffffh zu schreiben, einen BUS Error!!! ( Nur Tramiel und die Götter wissen, warum ) Das große Geheimniss, wie man den BUS Error der MMU umgeht soll an dieser Stelle verraten werden. Es kommt der Gedanke auf, die Daten durch gezieltes Lesen von speziellen Adressen im o.g. Speicherbereich aus dem Romport hinauszubekommen, wogegen die MMU nichts einzuwenden hat. Das hört sich komplexer an, als es eigentlich ist. Genau genommen ist es sogar ausgesprochen einfach. Die folgenden BASIC Programm Zeilen verdeutlichen dies.

rem ***********************************
rem * DELA ATARI ST USERPORT
rem ***********************************
rem * Beispiel: Basic ( GFA )
rem ***********************************
rem
rem
rem * vier input register je acht bit *
rem
rem 
	REG_1%=Peek(&HFB0001) rem Leseregister 1
	REG_1%=Peek(&HFB0401) rem Leseregister 2
	REG_1%=Peek(&HFB0801) rem Leseregister 3 
	REG_1%=Peek(&HFB0C01) rem Leseregister 4

rem allgemein variable = Peek(Registeradresse)

rem
rem * vier output register je acht bit *
rem * allen vier registern wird der inhalt der variable "wert" zugewiesen *
rem
	Dummy%=Peek(&HFB0200+2*Wert%)
	Dummy%=Peek(&HFB0200+2*Wert%)
	Dummy%=Peek(&HFB0200+2*Wert%)
	Dummy%=Peek(&HFB0200+2*Wert%)
rem
rem allgemein DumyVariable = Peek(RegisterAdresse + 2*Ausgabewert)

Alle vier Output Ports enthalten nun den Inhalt der Integer Variablenwert. Es dürfen beliebige Integerzahlen von 0 bis 255 ausgegeben werden, denn die Ports haben eine Größe von 8 Bit.

#define REG_1 *((char*)(0xfb0001L)
#define REG_2 *((char*)(0xfb0401L)
#define REG_3 *((char*)(0xfb0801L)
#define REG_4 *((char*)(0xfb0c01L)

/*
	REG_1 bis REG_4 repräsentiert nun die vier INPUT Register des
	DELA Atarai ST Userports
	In beliebigen C Ausdrücken dürfen Sie nun verwendet werden
	jedoch nur lesend, sonst bobmt der Atari
	äh. REG_1 bis REG_4 sind R-Werte Sie dürfen also nur auf der
	rechten Seite von Ausdrücken stehen!!!!
*/

REG_5 (DATA)
char DATA;
{
	char Dummy;
	Dummy=*(char*)(0xfb0200L+(DATA 1));
}

REG_6 (DATA)
char DATA;
{
	char Dummy;
	Dummy=*(char*)(0xfb0600L+(DATA 1));
}

REG_7 (DATA)
char DATA;
{
	char Dummy;
	Dummy=*(char*)(0xfb0a00L+(DATA 1));
}

REG_8 (DATA)
char DATA;
{
	char Dummy;
	Dummy=*(char*)(0xfb0e00L+(DATA 1));
}

/*
	Den Proceduren REG_5 bis REG_8 können nun beliebige 8 BIT Werte
	übergeben werden. Die Procedure schreibt den Wert dann auf das
	entsprechende Register des DELA Atari ST Userport
*/

Der DELA Atari ST USERPORT kann im Prinzip von allen Sprachen aus benutzt werden, die einen Zugriff auf einen konkrete Adresse im Speicher erlaubt.

Die Adressen lauten im einzelnen: ( hexadezimal )

Für die vier LeseRegister:

  • fb0001 für Input Register Nr. 1
  • fb0401 für Input Register Nr. 2
  • fb0801 für Input Register Nr. 3
  • fb0c01 für Input Register Nr. 4

Liest man nun von einer dieser Adressen, so erhält man einen 8 Bit Wert, der den logischen Zusatend ( TTL Pegel ) des entsprechenden Ports wiedergibt.

Für die vier SchreibRegister:

  • fb0200+(AusgabeWert*2) für Output Register Nr. 1
  • fb0600+(AusgabeWert*2) für Output Register Nr. 2
  • fb0a00+(AusgabeWert*2) für Output Register Nr. 3
  • fb0e00+(AusgabeWert*2) für Output Register Nr. 4

Liest man nun von der so berechneten Adressen, so wird das Bit-Muster von AusgabeWert in das dazugehörige Output Register des Userports übertragen und bleibt dort so lange erhalten, bis ein neuer Wert in der Register übertragen wird. Der bei dem Lesezugriff anfallende Wer ist ein Dummy, d.h. Er ist überflüssig und nicht zu gebrauchen. ( Es wurde ja nur deshalb ein Lesezugriff getätigt, damit das BIT-MUSTER von AusgabeWert auf die AdressLeitungen A1 bis A8 des ROMPORTS gelegt werden, dort holt der DELA USERPORT sie dann ab und speichert sie ein einem eigenen Register. Dieser Wert kann dann an der entsprechenden Steckleiste abgegriffen werden).