Nascom Journal |
September 1982 · Ausgabe 9 |
der Datenblock vollständig übertragen wurde, unabhängig von RDY. Hier muß eine kleine Einschränkung beim Benutzen von dynamischen Rams gemacht werden. Da die Speicherzellen bei Drams alle 2 msec aufgefrischt werden müssen, darf die CPU nicht länger angehalten werden.
Eine Besonderheit des
Z80-DMA
stellt seine Eigenschaft dar, durch
entsprechende Programmierung das Timing-Verhalten bei Zugriffen auf die
Ports zu manipulieren. Das READ/
Eine weitere Eigenschaft ist die Option „Auto Restart“. Der DMA wird nach der Übertragung eines Blocks veranlaßt, die Port-Startadressen und den Blockcounter zurückzusetzen. Der DMA kann ohne Belastung der CPU seine Arbeit erneut aufnehmen. Dies ist für Operationen notwendig, die zyklisch wiederholt werden müssen, wie z.B. der Bildschirmspeicherrefresh. Beim Suchen wird während des Vergleichs bereits das nächste Byte gelesen (Pipeline-Architektur).
Zum Schluß soll nun die Programmierung des DMA anhand von Programmbeispielen gezeigt werden. Das Programm 1 (COPY) zeigt, wie Speicherbereiche kopiert werden, Programm 2 (SEARCH) die Suche nach einem Byte und Programm 3 (TRASEA) wird genauer besprochen, da in diesem Programm fast alle Optionen, die der DMA anbietet, realisiert sind. Es sei folgende Problemstellung gegeben: Der DMA soll von einem Peripherie-Baustein (Input) Daten blockweise (256 Bytes) in den Hauptspeicher laden, bis die „End of Transmission“ Marke erreicht wird. Der CPU wird über Interrupt mitgeteilt, wann ein Block gelesen oder die EOT-Marke erreicht wurde. Das Programm TRASEA wird vom Hauptprogramm aufgerufen und initialisiert den DMA durch Steuerworte. Der DMA wird wie ein I/O-Baustein über eine 8-Bit-Adresse angesprochen.
Der DMA verfügt über insgesamt 27 WRITE-Register, die in je 7
Hauptregister (WR0 – WR6) eingeteilt sind, denen insgesamt 14 weitere
WRITE-Register untergeordnet sind. In TRASEA werden am Anfang die
Register in den Stack gerettet, anschließend die Interruptvektoren
geladen und über den OTIR-Befehl die Steuerworte in der Kommandotabelle
3 zum DMA ausgegeben. Die CPU kehrt dann ins aufrufende Programm
zurück, währen der DMA simultan dazu seine Arbeit aufnimmt. In der
Kommandotabelle sind nun sämtliche Steuerworte abgelegt, mit denen der
DMA programmiert wird. Sie beginnt immer mit einem „RESET
DMA“ , um den DMA in einen definierten Ausgangszustand zu setzen.
In WR0 wird die Funktionsart festgelegt, hier: Übertragung/
| Seite 4 von 28 |
|---|