ndr-nkc.de ndr-nbc.de
  
Startseite
News
 
NDR-NKC
Geräte Z80
Geräte 68000
Geräte 8088
 
Z80 Section
Baugruppen
ROM's
Software
68000 Section
Baugruppen
ROM's
PASCAL/S
Software
8088 Section
Baugruppen
Downloads
 
Bussysteme
Stromversorgung
Input / Output
Grafikkarten
Speicherkarten
Massenspeicher
Weitere Baugruppen
 
Projekte
 
Dokumentation
Datenblätter
Glossar
Portraits
Links

Impressum

 

Z80 Grundprogramm

Das Grundprogramm dient als "Betriebssystem" für die ersten Experimente mit der CPU Z80 und stellt grundlegende Funktionen zur Manipulation des Speichers und zum Zugriff auf die Hardware zur Verfügung.

Das Grundprogramm ist menügeführt und bietet die im Bild angegebenen Funktionen. Zur Eingabe von Programmen können einige Funktionen des Grundprogramms über einen symbolischen Namen angesprochen werden. So muss man sich nicht die Adressen merken, an denen die Funktionen im Grundprogramm stehen.

Im Grundprogramm stehen Funktionen zur Ausgabe auf dem Bildschirm (Zeichenfunktionen und Textausgabe), zur Eingabe von Daten über die Tastatur, zur Bedienung der seriellen Schnittstelle sowie der Aufzeichnung von Daten auf einem Cassettenrekorder zur Verfügung. Diese Funktionen sollen im folgenden kurz beschrieben werden.

Unterprogramme

SCHREITE

Dient zum Zeichnen von Linien in eine bestimmte Richtung. Die Länge der zu zeichnenden Linie wird im Registerpaar HL angegeben, die Richtung der Linie muss zuvor mit dem Befehl DREHE festgelegt werden. Negative Zahlenwerte in HL zeichnen entgegen der festgelegten Richtung. Es wird mit einer Auflösung von 512x512 Punkten gerechnet, die Zielposition wird mit 16-facher Genauigkeit gespeichert um eine Kompatiblität mit den Befehl SCHR16TEL zu erreichen.

SCHR16TEL

Die Funktion ist ganz ähnlich dem Befehl SCHREITE. Im Gegensatz dazu muss bei der Angabe der Linienlänge im Registerpaar HL der 16-fache Wert angegeben werden, um eine Linie gleicher Länge zu erzeugen. Bei kleinen Schrittweiten wird so die Genauigkeit erhöht. Dadurch wird zum Beispiel das Zeichnen eines Kreises möglich.

DREHE

Bestimmt die Zeichenrichtung für nachfolgende Ausführungen von SCHREITE oder SCHR16TEL. Der Winkel im Bereich von 0 bis 359 Grad wird als Integer-Zahl im HL-Registerpaar übergeben. Die Richtung wird von nördlicher Richtung entgegen dem Uhrzeigersinn eingestellt. Die Angabe negativer Drehwinkel ist möglich.

HEBE

Die Funktion benötigt keine Eingabeparameter. Nach Aufruf wird der "Schreibstift" abgehoben, so dass nachfolgende Aufrufe von SCHREITE oder SCHR16TEL keine Spur hinterlassen, die Schreibposition aber dennoch weiter bewegen.

SENKE

Senkt den Schreibstift, so dass nachfolgende Aufrufe von SCHREITE oder SCHR16TEL eine sichtbare Ausgabe auf dem Bildschirm hinterlassen.

SET

Setzt den Schreibstift auf eine neue Position. Im HL-Register ist die X-Position im Bereich 0...511, im DE-Register die Y-Position im Bereich 0...511 und im BC-Register der Startwinkel in Grad anzugeben. Wenn der Schreibstift abgesenkt ist, erfolgt durch SET eine sichtbare Ausgabe auf dem Bildschirm.

MOVETO

Erwirkt ein absolutes Positionieren des Schreibstiftes auf dem Bildschirm. Die X-Position und Y-Position sind wie bei SET in den Registern HL und DE anzugeben.

DRAWTO

Dient zum Zeichnen einer Linie zu einer absoluten Position. Die Zielposition in X-Richung und Y-Richtung sind in den Registern HL und DE anzugeben.

SCHLEIFE

Die Befehle SCHLEIFE und ENDSCHLEIFE bieten eine einfache Möglichkeit, Schleifen mit mehr als 256 Durchläufen umzusetzen. Die Anzahl der gewünschen Dürchläufe wird im Registerpaar HL angegeben. Nach Aufruf von SCHLEIFE werden die Rücksprungadresse und die Anzahl der Schleifendurchläufe auf dem Stack gespeichert. Das HL-Register kann danach normal weiterverwendet werden. Zu jedem Schleifenbefehl muss ein korrespondierender Befehl ENDSCHLEIFE vorhanden sein.

ENDSCHLEIFE

Bildet den Abschluss einer mit dem Befehl SCHLEIFE begonnenen Programmschleife. Rücksprungadresse und Schleifenwert werden vom STACK gelesen und verarbeitet. Nach dem letzten Schleifendurchlauf ist der Stack wieder in seinem originalen Zustand. Die Funktion kann nur in Verbindung mit einem korrespondierenden Befehl SCHLEIFE eingesetzt werden.

WRITE

Dient zur Ausgabe von Texten auf dem Bildschirm. Vor dem Aufruf muss das HL-Register mit einem Pointer auf einen im Speicher angelegten Textblock geladen werden. Im Textblock müssen vor dem Aufruf von WRITE Informationen über die Bildschirmposition und Schriftgröße sowie der auszugebende Text hinterlegt werden. Der Textblock hat einen festen Aufbau und wird weiter unten beschrieben.

READ

Dient zur Eingabe von Texten in einen Puffer im RAM. Im Registerpaar HL ist die Adresse eines Speicherbereiches anzugeben, an der Informationen hinterlegt sind und die eingegebenen Zeichen gespeichert werden können. Bei Übergabe einer 1 im Register C erfolgt die Eingabe in einem umrahmten Eingabefeld. Im Pufferblock müssen vor dem Aufruf Informationen zur Bildschirmposition, Schriftgröße und maximalen Länge hinterlegt werden. Der Aufbau des Pufferblockes wird weiter unten beschrieben.

CI

Dient zur Eingabe eines Zeichens in das Register A. Die Funktion wartet so lange, bis tatsächlich eine Eingabe erfolgt ist. In Register A befindet sich nach Abschluss der ASCII-Code der gedrückten Taste.

CSTS

Prüft, ob ein Zeichen eingegeben wurde. Wenn ja, so wird der Wert 0FFH im Register A übergeben, sonst der Wert 00H. Falls ein Zeichen eingegeben wurde, kann dieses anschließend mit der Funktion CI eingelesen werden.

RI

Einlesen eines Zeichens von der CAS Baugruppe in das Register A Die Funktion wartet so lange, bis tatsächlich ein Zeichen eingelesen wurde.

PO

Ausgabe eines Zeichens vom Register C an die CAS Baugruppe.

CLR

Dient zum Löschen aller 4 Bildschirmseiten der Baugruppe GDP.

CLPG

Löscht die aktuell eingestellte Schreibseite der GDP. Die Schreibseite muss für einen erfolgreichen Löschvorgang nicht sichtbar sein.

WAIT

Wertet, bis der Grafik-Prozessor auf der Baugruppe GDP mit der Abarbeitung eines Befehls fertig ist. Daanch können Werte auch direkt an die GDP-Register ausgegeben werden. Bei allen zuvor beschriebenen Funktionen muss WAIT nicht aufgerufen werden, da die Funktionen selbständig auf die Bereitschaft des Grafik-Prozessors warten.

Weitere Informationen

Aufbau des Textblockes für WRITE

Verwendung Länge Beispiel Beschreibung
X-Position WORD 20.W Absolute X-Position des auszugebenden Textes im Bereich 0...511
Y-Position WORD 50.W Absolute Y-Position des auszugebenden Textes im Bereich 0...511
Bei der Ausgabe wird die Angabe auf die tatsächliche Bildschirmhöhe von 256 Pixeln umgerechnet.
Schriftgröße BYTE 44.B Angabe der Schriftgröße für X und Y-Richtung. 11 entspricht der kleinsten Schriftgröße, 44 einer vierfachen Vergrößerung in horizontaler und vertikaler Richtung.
Schräge BYTE 0.B Definition von kursiver Textausgabe. Ein Wert von 0 entspricht dem Standardtext.
Text BYTES "Hallo" Angabe eines Textes mit maximal 254 Zeichen als ASCII-Codes.
Abschluss BYTE 0.B Zur Erkennung des Textendes muss das letzte Byte mit 0 belegt werden.

Aufbau des Pufferblockes für READ

Verwendung Länge Beispiel Beschreibung
X-Position WORD 20.W Absolute X-Position des auszugebenden Textes im Bereich 0...511
Y-Position WORD 50.W Absolute Y-Position des auszugebenden Textes im Bereich 0...511
Bei der Ausgabe wird die Angabe auf die tatsächliche Bildschirmhöhe von 256 Pixeln umgerechnet.
Schriftgröße BYTE 44.B Angabe der Schriftgröße für X und Y-Richtung. 11 entspricht der kleinsten Schriftgröße, 44 einer vierfachen Vergrößerung in horizontaler und vertikaler Richtung.
Schräge BYTE 0.B Definition von kursiver Textausgabe. Ein Wert von 0 entspricht dem Standardtext.
Länge BYTE 6.B Anzahl der maximal einzugebenden Zeichen.
Aktuell BYTE 0.B Pufferbyte zur Speicherung der aktuellen Eingabeposition. Nach Abschluss der Eingabe steht hier die Länge des tatsächlich eingegeben Textes.
Puffer BYTES 0 0 0 0 0 0 0 Pufferbytes zur Speicherung des eingegeben Textes. Als Puffer muss ein Byte mehr als die maximale Länge des einzugebenden Textes vorgesehen werden.