MP: Jahrgang 1, Heft 11 [Reprint 2022 ed.]
 9783112610541, 9783112610534

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Z E I T S C H R I F T FÜR M I K R O E L E K T R O N I K

• COMPUTERTECHNIK - INFORMATIK

Heft 11 • 1987

Mikroprozessortechni VEB Verlag Technik Berlin ISSN 0232-2892

ComputerGrafik

Info ESER-PC Erstmals auf der Leipziger Herbstmesse 1987 vorgestellt und mit Messegold ausgezeichnet wurde der PC EC 1834 von Robotron. Der PC EC 1834 ist kompatibel zum IBM PC XT

und entspricht dem ESER-Standard. Implementiert ist das disketten- bzw. harddiskorientierte Betriebssystem DCP3.1. Der PC wird in verschiedenen Grundvarianten angeboten. Als Mikroprozessor kommt der K 1810 W M 86 (ß086) zum Ein-

Werkfoto

Solidaritätsbasar der Berliner Journalisten 1987 Schon zur Tradition geworden ist der große Solidaritätsbasar der Berliner Journalisten, der jedes Jahr am letzten Freitag im August auf dem Alexanderplatz stattfindet. Auch der Verlag Technik war wieder mit einem eigenen Stand vertreten. Viele Betriebe und Institutionen unterstützten die Kollegen unseres Verlages in ihrem Bemühen, einen hohen Erlös für die inter-

nationale Solidarität zu erzielen. Wir bedanken uns insbesondere beim Computerklub des Berliner Hauses der jungen Talente und bei den Kollegen des Konsultationspunktes Mikrorechentechnik der Humboldt-Universität zu Berlin für deren tatkräftige Unterstützung der Redaktion MP. Unsere Fotos sollen einen kleinen Eindruck von der Atmosphäre und dem Andrang, der am Verlagsstand herrschte, vermitteln. MP Fotos (2): Paszkowsky

satz. Der PC verfügt über 48 K Byte ROM und 256 K Byte bzw. 640 K Byte RAM. Für Erweiterungskarten stehen bis zu acht Steckplätze zur Verfügung. Zwei Diskettenlaufwerke mit je 360/ 720 K Byte bzw. ein Harddisk(bis 40 M Byte) und zwei Diskettenlaufwerke sind Bestandteil der Systemeinheit. Ein schwenk- und drehbarer monochromatischer, alphanumerischer Bildschirm und/oder ein monochromatischer oder ein Color-Grafikbildschirm können angeschlossen werden. Das System kann mit einem Drucker aus der Reihe robotron K 6313/ 14, der über Grafik-Modus verfügt, oder einen anderen Drucker mit Centronics-Interface erweitert werden. Weitere Geräte wie Plotter, Digitalisier- und Meßgeräte können über maximal 4 V24oder IFSS-Schnittstellen angeschlossen werden. Die On-IineVerarbeitung erfolgt nach asynchronem oder synchronem Protokoll (BSCI oder BSCIII) über V.24-Interface. Die Tastatur ist als Flachtastatur für 1 oder 2 Zeichensätze ausgeführt. Als Masse des Gerätes werden etwa 28,5 kg angegeben. Noch in diesem Jahr sollen die ersten 200 Rechner im Robotron Büromaschinenwerk Sömmerda hergestellt werden. MP Anmerkung der Redaktion: In MP 2188 beginnen wir unter der Rubrik MP-Kurs mit einer Beitragsfolge zum System K 1810 WM 86 in Einheit von Hardware und Software. Eingegangen wird u. a. auf: Systemarchitektur, Systemschaltkreise, Interfaceschaltkreise, Befehlstypen und Adressierung, Entwicklungshilfen und Assemblerprogrammierung, Programmentwicklung in einer Hochsprache.

UftOUM fOWW

MR 4 2 0 I

Ì

I ON]

1

MC J'

1

* L

1

M.|

M-|

1

1

1

1

I

I

1

1

\

1

1 + 1

O

1

1

I

Taschenrechner mit Lithiumbatterie Weniger als sechs Millimeter hoch ist ein neuer Taschenrechner aus dem VEB Mikroelektronik „Wilhelm Pieck" Mühlhausen. Das neue Geräte wird erstmals mit einer Lithiumbatterie ausgerüstet, die eine Lebensdauer von mehr als sieben Jahren hat. Die hohe Batterielebensdauer ergibt sich aus der stromsparenden 8stelligen LED-Anzeige in Verbindung mit der automatischen Abschaltung (nach etwa 10 Minuten bei Nichtbenutzung). Weitere Vorhaben zielen auf hohe Zuwachsraten in der Taschenrechner* und Diodenfertigung. Auf rund 180 Prozent wird die Produktion von Schulrechnern - SR 1 - im Vergleich zu 1986 steigen. Zwei Millionen Siliziumdioden, die unter anderem für Computer- und Drucktechnik benötigt werden, sollen den Betrieb zusätzlich verlassen. ADN

Ein Dankeschön

EC 1057 bestand ESER-Test

an alle Leser, die uns auf unseren Aufruf in MP 8/87, S. 228, „Mitarbeit gefragt" geschrieben haben. Wir hatten Spezialisten gesucht, die die vielen „Tips und Tricks", die der Redaktion von Lesern zugesandt werden, begutachten bzw. testen. So viele schrieben uns, daß wir unmöglich in der Lage sind, allen zu antworten. Wir bitten dafür um Verständnis und bedanken uns nochmals herzlich bei den Einsendern für ihre Bereitschaft zur Mitarbeit. Ihre Redaktion MP

Der EC 1057 des Kombinates Robotron hat kürzlich in KarlMarx-Stadt den Abschlußtest erfolgreich bestanden. Ein Gremium von Computerexperten aus Bulgarien, der CSSR, aus Polen, der UdSSR und Ungarn schätzte nach gründlicher Prüfung die Anlage ein und bestätigte die Produktionsreife. Damit sind die Voraussetzungen gegeben, daß die Neuentwicklung im VEB Robotron-Elektronik Dresden in die Serienfertigung übergeleitet und noch 1987 erstmals exportiert werden kann. ADN

Zeitschrift für Mikroelektronik • Computertechnik • Informatik 1. Jahrgang • ISSN 0232-2892

Mikroprozessortechnik, Heft 11 • 87 Herausgeber Kammer der Technik, Fachverband Elektrotechnik Verlag VEB Verlag Technik, Oranienburger Str. 13/14, DDR-1020Berlin;Telegrammadresse: Technikverlag Berlin; Telefon: 28700, Telex: 0112228 techn dd Verlagsdirektor Klaus Hieronimus Redaktion Ingo Paszkowsky, Verantwortlicher Redakteur (Tel.: 2870203); Hans Weiß, Redakteur (Tel.: 2870371); Sekretariat Tel.:2870381 Gestaltung Christina Kaminski (Tel.: 2870288) Titel Tatjana Stephanowitz

Inhalt

t.

tlH

MP-lnfo Hans-Jochen Müller, u. a.:

Seite 322

Beirat Dr. Ludwig Claßen, Prof. Dr. sc. Dietrich Eckhardt, Dr. Heinz Florin, Prof. Dr. sc. Rolf Gieseck'e, Joachim Hahne, Prof. Dr. sc. Dieter Hammer, Dr. sc. Thomas Horn, Prof. Dr. Albert Jugei, Prof. Dr. Bernd Junghans, Dr. Dietmar Keller, Prof. Dr. sc. Gernot Meyer, Prof. Dr. sc. Bernd-Georg Münzer, Prof. Dr. sc. Peter Neubert, Prof. Dr. sc. Rudolf Arthur Pose, Prof. Dr. sc. Michael Roth (Vorsitzender), Dr. Gerhard Schulze, Prof. Dr. sc. Manfred Seifart, Dr. Dieter Simon, Dr. Rolf Wätzig, Prof. Dr. sc. Jürgen Zaremba Lizenz-Nr. 1710 des Presseamtes beim Vorsitzenden des Ministerrates der Deutschen Demokratischen Republik Gesamtherstellung Druckerei Märkische Volksstimme Potsdam ErfüllungsortundGerichtsstand Berlin-Mitte. Der Verlag behält sich alle Rechte an den von ihm veröffentlichten Aufsätzen und Abbildungen, auch das der Übersetzung in fremde Sprachen, vor. Auszüge, Referate und Besprechungen sind nur mit voller Quellenangabe zulässig.

322

Ottmar Vetter: Grafik am A 7100

325

Gerald Tränkner: Grafikprogramm zur Darstellung von Ergebnissen der Aufwärtsübersetzung

328

Christian Hanisch: Druckergrafik für technische Anwendungen

330

Manfred Berner, Dietmar Fürste: Grafikeditor CZGREDIT

332

Uwe Zierott:

AN (EDV) 49837 ORIGINAL 97 Smm * GS S»nt

Erscheinungsweise monatlich 1 Heft Heftpreis 5,-M, Abonnementspreis vierteljährlich 15,-M; Auslandspreise sind den Zeitschriftenkatalogen des Außenhandelsbetriebes BUCHEXPORT zu entnehmen.

Mikroprozessortechnik, Berlin 1 (1987) 11

Pseudografik auf dem PC 1715 und dem A 7100

Erweiterte Zeilenbefehle für den KC-BASIC-lnterpreter

Redaktionsschluß 15. September19B7

Bezugsmöglichkeiten DDR: sämtliche Postämter; SVR Albanien: Direktorije Quendrore e Perhapjes dhe Propagandist te Librit Rruga Konference e Pezes, Tirana; VF) Bulgarien: Direkzia R.E.P., 11a, Rue Paris, Sofia; VR China: China National Publications Import and Export Corporation, West Europe Department, P.O. Box 88, Beijing; ÓSSR: PNS-Ustredni Expedida a DovozTisku Praha, Slezská 11,120 00 Praha2, PNS, Ústredna Expedida a Dovoz Hace, Poäta 022,885 47 Bratislava; SFR Jugoslawien: Jugosiovenska Knjiga, Terazija 27, Beograd; Izdavaöko Knjizarsko Produzece MLADOST, llica 30, Zagreb; Koreanische DVR: CHULPANMUL Korea Publications Export & Import Corporation, Pyongyang; Republik Kuba: Empresa de Comercio Exterior de Publicaciones, O'Reilly No. 407, Ciudad Habana; VR Polen: C.K.P.i.W. Ruch, Towarowa 28,00-958 Warszawa; SR Rumänien: D.E.P. Bucure§t¡, Piaja Scinteii, Bucure§ti; UdSSR: Sämtliche Abteilungen von Sojuzpecat' oder Postämter und Postkontore; Ungarische VR: P.K.H.I., Külföidi ElOfizetési Osztály, P.O. Box 16,1426 Budapest; SR Vietnam: XUNHASABA, 32, Hai Ba Trung, Há Nöi; BRD und Berlin (West): ESKABE Kommissions-Grossobuchhandlung, Postfach 36,8222 Ruhpolding/Obb.; Helios-Literatur-VertriebsGmbH, Eichborndamm 141-167, Berlin (West) 52; Kunst und Wissen Erich Bieber OHG, Postfach 46,7000 Stuttgart 1; Gebrüder Petermann, BUCH + ZEITUNG INTERNATIONAL, Kurfürstenstraße 111, Berlin (West) 30; Österreich: Helios-Literatur-Vertriebs-GmbH & Co. KG, Industriestraße B13,2345 Brunn am Gebirge; Schweiz: Verlagsauslieferung Wissenschaft der Freihofer AG, Welnbergstr. 109, 8033 Zürich; Alle anderen Länder: örtlicher Fachbuchhandel; BUCHEXPORT Volkseigener Außenhandelsbetrieb der Deutschen Demokratischen Republik, Postfach 160, DDR-7010, und Leipzig Book Service, Talstraße 29, DDR7010 Leipzig

2. US

333

MP-Kurs Claus Koler: PASCAL (Teil 2)

335

Rainer Knauf, Harald Killenberg: OUILLE EUABUJ- s irr

Seite 332

Programmieren in PROLOG

339

Lutz Molgedey: Disassembler für den KC 85/2 (/3)

341

Rolf Hiersemann: Entwurf von Steuerungssystemen für die flexible Fertigung

344

MP-Bericht

348

MP-Börse

349

MP-Literatur

350

Tagungsprogramm Fachtagung Computer-

Vorschau In MP12/87 haben wir für Sie u. a. Beiträge zu folgenden Themen vorgesehen: - Wirkprinzipien von Informationsaufzeichnungstechnologlen - Plattenspeicher-Stand und Entwicklungstendenzen - 32-Bit-Mikroprozessoren - 256-KdRAM-Modul für KC 85/3.

und Mikroprozessortechnik 87

351

MP-Computerclub

352

K.-D. Kirves: Funktionsdefinition Im Programm H. Völz: Primzahl-Nachlese zum BASIC-Rundfunklehrgang £ Feige: Bildausschnittverdopplung

321

Pseudografik auf dem PC 1715 und dem A 7100 Dr. Hans-Jochen Müller, Dr. Wolf-Dietrich Fromm, Dr. Karl-Heinz Heinig, Dr. Frank Schwarzenberg Akademie der Wissenschaften der DDR, Zentralinstitut für Kernforschung, Rossendorf 1. Vorbemerkungen Der PC 1715 hat sich aufgrund der einfachen Handhabbarkeit und der vorhandenen Serviceprogramme ein großes Anwendungsgebiet erschlossen. Auch für wissenschaftliche Berechnungen bietet das breite Spektrum verfügbarer Programmiersprachen Einsatzmöglichkeiten. Der A 7100 eignet sich wegen seines leistungsfähigeren Hardwarekonzepts und der Verfügbarkeit von FORTRAN77 ebenfalls für derartige Anwendungen. Der wissenschaftliche Einsatz ist vor allem durch einen überwiegenden Anteil an eigenentwickelter Software gekennzeichnet, die Nutzung von Standardsoftwarelösungen steht dabei etwas im Hintergrund. Ein wesentlicher Nachteil für derartige Anwendungen ist das Fehlen von hochauflösenden grafischen Ausgabemöglichkeiten auf dem PC 1715 und der Standardkonfiguration I des A 7100. Grafische Ausgaben auf dem Monitor sind zum einen notwendig für das schnelle Erfassen und Bewerten numerischer Ergebnisse, zum anderen stellt die Computergrafik einen unverzichtbaren Teil der modernen Methode der Computersimulation dar. Bei dieser Methode kommt es nicht nur schlechthin auf die bildliche Darstellung von Ergebnissen an, die Computergrafik stellt selbst eine wesentliche Arbeitsgrundlage der Computersimulation dar, das heißt, sie wirkt interaktiv mit der Anwendersoftware. Die Gestalt der Grafik wird im Programm abgefragt und durch einen von den jeweils wirkenden Naturgesetzen bestimmten Algorithmus weiterentwickelt. Das geschieht schrittweise, so daß die Grafik erst allmählich und im Verlaufe eines oft komplizierten Evolutionsprozesses entsteht. Die Verarbeitung und Wertung der Grafik durch das Programm bildet dafür die Grundlage.

Bild 1 Beispiele für verfügbare

322

Pseudografiksymbole

sein. Dabei kommt es auf weitestgehende Kompatibilität im Aufruf der Pseudografik vom PC 1715 und vom A 7100 aus an, damit keine Programmänderungen bei Programmtransfer notwendig sind.

Für solche Anwendungen scheiden die von Kleincomputern her bekannten „Grafiken" mittels vorgegebener Grafiksymbole von vornherein aus, da sie für jedes Einsatzgebiet extra und im allgemeinen mit viel Mühe, das heißt sehr uneffektiv zusammengestellt werden müssen. In IM wurde eine Möglichkeit dargestellt, eine Semigrafik auf dem PC 1715 zu installieren. Diese Methode zeichnet sich durch hohe Auflösung, aber auch durch einen entsprechend großen Hardwareaufwand aus, der eine breite Nutzung erschwert /2/. Der freie Steckplatz des PC 1715 geht dafür verloren und steht z. B. für eine RAM-Disk-Erweiterung nicht mehr zur Verfügung 13!. Voraussetzung für die Anwendbarkeit dieses Verfahrens ist, daß sich die Grafiken in höchstens 128 verschiedene, dem Zeichenraster entsprechende Grundelemente zerlegen lassen, was im allgemeinen Fall nicht erfüllt ist. 2. Konzept der Pseudografik Bei dem Konzept einer Pseudografik für den PC 1715 und der alphanumerischen Variante des A 7100 wurde von den folgenden Prinzipien ausgegangen: • Es soll kein zusätzlicher Hardwareaufwand entstehen. Diese Rechnertypen wurden nicht für eine hochauflösende Grafik vorgesehen. Eine nachträgliche Veränderung wäre mit umfangreichem Hardwareaufwand verbunden. • Eine Punktgrafik mittlerer Auflösung auf der Basis von pseudografischen Symbolen stellt eine angepaßte Erweiterung dar. Sie ist eine abgerüstete, aber universelle Grafikvariante, die sich für die interaktive Arbeitsweise eignet. • Wegen der beschränkten Auflösung erscheint eine Perfektionierung (z. B. unterstützte Beschriftung oder maßstäbliche Darstellung) nicht sinnvoll. Der Softwareaufwand soll den vorhandenen Speicherplatz nur unwesentlich beeinflussen. • Die Grafik soll sowohl bei der Arbeit mit Interpretern als auch mit Compilern verfügbar

am PC 1715 (aundb)

und am A 7100

(cundd)

• Zur Auswertung von Grafiken gehört die Möglichkeit, vom Monitorbild eine Hardcopy anzufertigen, die in speziellen Fällen eine gekoppelte Ausgabe von grafischen und alphanumerischen Symbolen gewährleistet. Der alphanumerische Bildschirm umfaßt 80 x 24 (80 x 25) Zeichen (Daten des A7100 im folgenden in Klammern eingeschlossen). Dabei besteht jedes Zeichen aus 8 x 12 (8 x 16) Bildpunkten. Das entspricht einem notwendigen Speicherplatz von 12 (16) Bytes zur Generierung eines Zeichens. Wollte man jeden einzelnen Bildpunkt im Rahmen einer Pseudografik nutzen, würde das einen Zeichensatz von 296 (2128) unterschiedlichen Zeichen erfordern. Eine Reduzierung der Auflösung ist deshalb notwendig. Neben den 128 alphanumerischen Zeichen kann der Computer 128 verschiedene Grafiksymbole ansteuern. Damit ist im Rahmen einer Pseudografik die Grenze der Auflösung gegeben. Unter Berücksichtigung der Symmetrie der Grafiksymbole und des verfügbaren Zeichenumfanges bietet sich eine Zerlegung eines Zeichens in 2 x 3 Felder an. Die Summe aller Kombinationen von belegten und leeren Feldern entspricht einem Umfang von 64 Zeichen. Die Auflösung der Pseudografik beträgt dann 1 6 0 x 7 2 (160x75) „Punkte". Da mit den notwendigen 64 Zeichen nur die Hälfte des ansteuerbaren Vorrates genutzt würde, wurden zwei unterschiedliche Zeichensätze pro Computer implementiert: • Beim PC 1715 besteht jedes Pseudografikfeld aus 4 x 4 Pixel. Der erste Zeichensatz realisiert zentrierte „kleine Punkte", bestehend aus jeweils 2 x 2 Pixel innerhalb der 4 x 4-Matrix, während beim zweiten Zeichensatz das gesamte quadratische Feld ausgefüllt wird („große Punkte"; Bild 1a und b). • Beim A 7100 ist die Situation komplizierter. Die 8 x 16 Pixel eines Zeichens wurden in 4 Felder zu je 4 x 5 Pixel und 2 Felder zu je 4 x 6 Pixel unterteilt. Dementsprechend besteht der kleine Punkt aus 2 x 3 Pixel (wobei dieser Punkt in der 4 x 6-Matrix vertikal nicht zentriert ist), während bei großen Punkten die Fläche eines Feldes voll ausgefüllt ist (siehe Bild 1c und d). Mit Hilfe der beiden Zeichensätze können unterschiedliche Aufgaben gelöst werden. Kleine Punkte eignen sich besonders für die Darstellung gekrümmter Linien, wogegen große Punkte insbesondere für vertikale und horizontale Geraden verwendet werden können (z. B. Koordinatenachsen oder Balkenhistogramme). Beide Zeichensätze sind innerhalb einer Grafik verwendbar. Die sechs Felder eines Zeichens gehören allerdings zu einem Zeichensatz. Eine Mischung großer und kleiner Punkte innerhalb eines Zeichens ist nicht möglich. Wird eine Mischung innerhalb eines Zeichens versucht, so haben kleine Punkte Priorität, das heißt, alle belegten Felder des Zeichens werden als kleine Punkte wiedergegeben.

Mikroprozessortechnik, Berlin 1 (1987) 11

3. Softwarelösung

Tafel 1

3.1. PC 1715

Name

Zur Realisierung der Pseudografik auf dem PC 1715 gehört das Einsetzen eines 2KByte-EPROM auf den vorhandenen freien Steckplatz der Rechnerplatine unterhalb der Diskettenlaufwerke. Dieser EPROM enthält die Information für die Generierung der Pseudografikzeichen. Das Stecken dieses 2. Zeichengenerators stellt die einzige Veränderung am PC 1715 dar. Für die Speicherung der Pseudografik wird der Bildwiederholspeicher des PC 1715 genutzt. Das hat den Vorteil, daß die Dynamik der Grafik auf dem Bildschirm verfolgt werden kann (wichtig für Computersimulation!). Der Bildschirmwiederholspeicher belegt standardmäßig 2 KByte RAM ab Adresse F800H, kann aber innerhalb des TPA in Abständen von 800H zu niedrigeren Adressen verlegt werden. Für eine alternierende Ausgabe von alphanumerischen Daten und Grafik ist es günstiger, für die Grafik einen zusätzlichen Bildspeicher von 2 KByte anzulegen und bei der Ausgabe zwischen beiden umzuschalten /4/. Diese Möglichkeit wurde beim Softwarekonzept berücksichtigt. Wahlweise kann die Grafik im Standardbildspeicher (zugehörige Programme sind PLOTF8 bzw. RUBF8) oder ab B000H (Bezeichnung PLOT bzw. RUB) generiert werden. Allerdings muß der Nutzer gewährleisten, daß dieser Bereich nicht durch ein anderes Programm belegt wird. Die Ansteuerung der Punkte wurde analog zur Organisation einer hochauflösenden Grafik mit Bit-Mapping-Prinzip realisiert. Jedem Feld innerhalb eines Zeichens wurde ein Bit zugeordnet. Der Zeichencode ergibt sich dann aus der entsprechend den gesetzten Bits gebildeten Dualzahl (0...63). Durch diese Zuordnungsvorschrift reduziert sich der Algorithmus zum Setzen, Löschen und Abfragen (als Testen bezeichnet) einzelner Grafikpunkte im wesentlichen auf die Adreßberechnung des Zeichens im Bildspeicher und des aktuellen Feldes im Zeichen. Diese Funktionen wurden innerhalb des U880-Assemblerprogramms PLOT bzw. PLOTF8 realisiert. Das Programm wird als Unterprogramm mit 3 Parametern aufgerufen: X- und Y-Koordinate und ein Steuerparameter (siehe Tafel 1). Bei Bereichsüberschreitung der X- und Y-Koordinate unterdrückt das Programm die Ausführung. Für die Funktionsauswahl sind nur die drei niederwertigen Bits des Steuerparameters relevant. Als Entry RUB bzw. RUBF8 wurde zusätzlich das Löschen des jeweiligen Bildspeichers impliziert. Das Programm liegt als linkbares REL-File (PLOT.REL) vor und ist für alle Compilersprachen verwendbar. Zur Nutzung unter dem BASIC-Interpreter muß das Programm ab einer Absolutadresse geladen werden. Das wird durch den COM-File PLOTSCP.COM realisiert, der vor dem Laden des BASIC-Interpreters aufgerufen werden muß. Zur Vermeidung von Uberschreibungen wurde dabei für die Speicherung des Programms die ungenutzte 25. Zeile des Standardbildwiederholspeichers verwendet (ab Adresse FF81H). Unter dem Betriebssystem CP/A muß das Programm allerdings in einen Adreßbereich im TPA geladen werden. Dafür

RUB RUBF8 SET

Mikroprozessortechnik, Berlin 1 (1987) 11

Darstellung der implizierten Software zur Ansteuerung der Pseudografik Parameter

Typ

SETF8 IX=0...159 IY=0...72 IY=0...74

l*2 l*2 l*2

~ 0 1 2 PLOT l*2

IT=PLOTF8 4 5 6 7 11 HARDC

(A:PC1715;B:A7100)

Funktion

Bern.

Löschen des Grafikspeichers

A+B

Belegen des Grafikspeichers mit Punkten Belegen des Grafikspeichers mit Rechtecken

B

X-Koordinate Y-Koordinate Y-Koordinate

A+B A B

Punkt löschen Setzen Quadratpunkt Punkttest; Rückgabe: I T = 0 leer, I T * 0 gesetzt Darstellung der Grafik auf Display/Hardcopy Punkt löschen Setzen Punkt Punkttest (wie IT=2) Laden Pseudografik Hardcopy Hardcopy

A+B A+B

B

A+B B *) A+B A+B A+B B *) B *) A

Bemerkungen: *) Diese Funktion wurde gegenüber dem PC 1715 erweitert. Beim Aufruf am PC 1715 erfolgt keine Reaktion.

Bild 2 Einsatz der Pseudografik bei der Darstellung von Histogrammen am PC 1715 (Quelle: Jahrbuch der DDR 1986)

wird die 25. Zeile des Zusatzbildspeichers verwendet. Das File PLOTCPA.COM lädt PLOT ab Adresse B781H. Die Verwendung der PLOTRoutinen bei Nutzung von Compilern und unter BASIC ist in den Beschreibungen PLOTCOMP.DOK und PLOTINT.DOK dokumentiert. 3.2. A 7100 Zur Erarbeitung der Software für die Pseudografik am A 7100 war ein anderes Konzept erforderlich. Durch das Datenbus-Prinzip des A 7100 ist ein direkter Zugriff auf den Bildwiederholspeicher in der ABS über die Software nicht möglich. Außerdem können dadurch keine Zeichen aus dem Bildschirmspeicher abgerufen werden. Deshalb ist es notwendig, zwischen die Anwendersoftware und die ABS eine Vermittlungsroutine einzufügen, die alle notwendigen Aufgaben zur Generierung einer Pseudografik übernimmt und diese bei Bedarf auf dem Bildschirm darstellt. Damit ist ein wesentlicher Nachteil der Pseudografik auf dem A 7100 gegenüber dem PC 1715 gegeben: Die dynamische Entwicklung der Pseudografik kann nicht mehr auf dem Bildschirm verfolgt werden. Es ist nur eine intervallweise Darstellung möglich. Zum anderen muß zusätzlich zum Bildwiederhol-

Statistisches

speicher in der ABS ein Grafikzwischenspeicher im TPA angelegt werden, der eine interaktive Arbeit zwischen Anwendersoftware und Grafik realisiert. Bei der Konzipierung dieses Speichers mußte zwischen Speicherbedarf und notwendiger Rechenzeit optimiert werden. Es ergab sich ein Speicherbedarf von etwa 10 KByte. Aus Gründen der Softwarekompatibilität zum PC 1715 wurde eine Subroutine erstellt, die alle Funktionen und Entries der Grafikfunktion des PC 1715 erfüllt. Auch die unterschiedlichen Aufrufe PLOT bzw. PLOTF8 wurden realisiert, obwohl ihnen hier keine Bedeutung zukommt. Einige zusätzliche Funktionen wurden jedoch notwendig, die durch die intervallweise Darstellung der Pseudografik und das Laden der Pseudografiksymbole durch Software bedingt sind. Diese Zusätze sind in Tafel 1 gekennzeichnet. Zur Erweiterung des Service wurden die Funktionen SET bzw. SETF8 in die PLOTRoutine aufgenommen. Zur Verkürzung der Rechenzeit wurde auf eine interne Fehlerbehandlung verzichtet. Bei Grenzwertüberschreitung der X- bzw. YKoordinaten erfolgt ein Programmabbruch mit Feldüberlauf-Hinweis. Zusätzlich ist gewährleistet, daß bei unzulässiger Parametereingabe die Grafik nicht zerstört wird.

323

Bild 3 Pseudografik bei der Computersimulation der Evolution von Schmelzinstabilitäten (PC 1715; mehrere Bilder zusammengefaßt) Bild 4 Simulation von Kristallisationsprozessen mit Hilfe der Pseudografik am A 7100 (Die untere Linie gibt die volle Größe der Grafik an.)

Für die Arbeit unter FORTRAN77 benötigt die Subroutine die Funktion BDOS86 und zum Generieren der Pseudografiksymbole die Subroutine PSEUDO, die beim Linken mit angegeben werden müssen. Zur einfachen Handhabung wurden alle benötigten Files in einer Bibliothek mit der Bezeichnung PGRAF.L86 zusammengefaßt. Vor der ersten Darstellung der Pseudografik (Parameter = 3) muß der Pseudozeichensatz generiert werden (Parameter = 7). Er kann aber auch direkt, durch den Aufruf von PSEUDO.CMD, aktiviert werden. Eine Verwendung der Pseudografik im BASIC-Interpreter des A 7100 ist möglich, erfordert aber das Laden der notwendigen Subroutinen als Assemblerprogramme an feste Programmadressen. Darauf soll hier aus Platzgründen nicht näher eingegangen werden. Dies ist in /5/ beschrieben.

Kyrillischer Druck auf LX-86 Das Programm EPRUSS erlaubt auf dem Drucker LX-86 (z.B. am PC 1715) den wahlweisen Druck kyrillischer bzw. lateinischer Zeichen auf einem Blatt. Das heißt, es kann über eine frei wählbare Spaltenbreite ein russischer Text gedruckt werden, während daneben z. B. die deutsche Übersetzung stehen könnte. Das Schreiben geschieht am besten mit dem Textverarbeitungssystem TP (bzw. WORDSTAR). Voraussetzung ist ein CP/M-kompatibles Betriebssystem. VEB Neptunwerft Rostock, Abt. TN, Karl-Liebknecht-Straße, Rostock, 2500; Tel. 3 84 30 59 (Wesolek). Straub/Wecker

4. Hardcopy der Pseudografik

Installation für LX-86

Zur Weiterverwendung der Grafiken wurden für beide Rechner Hardcopyfunktionen erstellt, die eine schnelle und unkomplizierte Ausgabe der Monitor-Pseudografik mit dem Nadeldrucker LX-86 garantieren. Aufgrund der bisherigen Einsatzgebiete wurden unterschiedliche Ausführungen realisiert. Die Hardcopyfunktion des PC 1715 wurde in PASCAL geschrieben und steht als selbständig aufrufbares File unter der Bezeichnung HARDC.COM zur Verfügung. Realisiert wurde die gemischte Ausgabe von grafischen und alphanumerischen Informationen. Die Hardcopyfunktion des A 7100 ist in die PLOT- bzw. PLOTF8-Funktion eingebunden und kann durch entsprechende Parameterwahl abgerufen werden. Zusätzlich besteht die Möglichkeit, während der Bildschirmdarstellung der Pseudografik durch Drücken einer beliebigen Taste in die Hardcopyfunktion zu verzweigen. Dabei kann zwischen einfacher und doppelter Größe bzw. Dichte der Grafik auf dem Nadeldrucker gewählt werden. Ein externer Aufruf der Hardcopyfunktion ist am A 7100 nicht möglich, da die Pseudografik nur innerhalb der Programmabarbeitung existiert. Zur Schonung des Nadeldruckers wurde eine automatische Bewer-

Um die Möglichkeiten der Druckbildgestaltung des Epson LX-86 am PC 1715 optimal nutzen zu können, ist eine entsprechende Installation des Druckers notwendig. Die Bedienelemente gestatten nur die Einstellung eines geringen Teiles dieser Druckparameter. Mit INSTLX wurde ein Softwarewerkzeug erarbeitet, welches die Änderung weiterer Installationsparameter im Bildschirmdialog gestattet und damit eine optimale Nutzung der Drucktechnik ermöglicht. Folgende Einstellungen können realisiert werden:

324

Seitenlänge - linker Rand • unterer Rand Zeilenabstand • Kombination von Schriftarten • Wahl spezieller Zeichensätze • Ein-ZAusschalten Papierendefühler Ein-/Ausschalten Grafikzeichensatz

Somit lassen sich praxisrelevante Druckfunktionen über Hauptmenü schnell und unkompliziert ändern. Die Programmausführung erfolgt unter SCP bzw. CP/M. Deutsche Post, Studiotechnik Fernsehen, PN, Rudower Chaussee 3, Berlin, 1199; Tel 6 73 73 24 Feustel

tung der Grafik implementiert, die gewährleistet, daß immer eine Darstellung mit minimaler Anzahl von zu druckenden Punkten gewählt wird (normale oder inverse Ausgabe). 5. Einschätzung Mit der entwickelten pseudografischen Ausgabemöglichkeit auf dem PC 1715 und der alphanumerischen Variante des A 7100 wurde ein Hilfsmittel geschaffen, das die Einsatzmöglichkeiten der Rechner in Wissenschaft, Forschung und Büroautomatisierung erweitert. Die Grafik wurde von vornherein als Minimalvariante (sowohl vom Hard- als auch vom Softwareaufwand) konzipiert und nicht auf spezielle Anwendungen zugeschnitten. Sie ist aufgebaut wie eine Vollgrafik und daher universell einsetzbar. Weitere Merkmale sind einfache Handhabbarkeit und die Möglichkeit der interaktiven Arbeitsweise zwischen Anwendersoftware und Pseudografik. Der einzige Eingriff in den Rechner besteht im Stecken eines 2-KByte-EPROM auf den vorhandenen Steckplatz im PC 1715. Die Einsatzgebiete sind bei beiden Rechnern durch die generell begrenzte Auflösung der Grafik eingeschränkt. Für den PC 1715 wurde die Adressierung und Zeichengenerierung im Bildspeicher als Assemblerroutine geschrieben, so daß die benötigte Zeit für die Bildschirmdarstellung in der Regel vernachlässigbar ist gegenüber der Rechenzeit des Nutzerprogramms. Demgegenüber schränken für den A 7100 die Zeiten für das Setzen eines Punktes (1 ms) und für einen kompletten Bildaufbau (17 s) die Anwendbarkeit der Pseudografik insbesondere auf dem Gebiet der Computergrafik ein. Hier ist noch eine wesentliche Beschleunigung der Grafik durch Programmierung in C oder Assembler (derzeit FORTRAN77) möglich. Die entwickelte Software (einschließlich Beschreibung) und das Bitmuster für den 2. Zeichengenerator des PC 1715 stehen Interessenten zur Nachnutzung zur Verfügung. Literatur IM Herden, D.; Ludicke, R.; Wippich, K.: Semigrafik für PC 1715. Mikroprozessortechnik, Berlin 1 (1987) 1, S. 19 (2J Leserforum Pseudografik 1715. rechentechnik/ datenverarbeitung, Berlin 24 (1987) 5, S. 4 /3/ Ihlenfeld, A.; Riedel, W.: RAM-Floppy RAF 512 für K 1520. Radio, Ferns., Elektron., Berlin 36 (1987)4, S. 268 /4/ Systemhandbuch SCP. VEB Robotron-Büromaschinenwerk Sömmerda, Stand 31.12.1984 /5/ BASIC-Interpreter, AC A 7100. VEB Robotron Projekt Dresden C 1015-0300-1 M 3030

E l KONTAKT m Akademie der Wissenschaften der DDR, Zentralinstitut für Kernforschung Rossendorf, Postfach 19, Dresden, 8051; Tel.: 591 2445 oder591 2377

Mikroprozessortechnik, Berlin 1 (1987) 11

Grafik am A 7100 Ottmar Vetter

zu verschiedenen Geräten (z. B. grafisches Tablett, Bildschirm) realisieren. Die vorgestellte Grafikimplementierung entstand in Zusammenarbeit mit der Technischen Universität Dresden (Sektion Elektrotechnik, Bereich Automatisierungstechnik) und findet in der digitalen Simulation von Elektroantrieben Anwendung. Die Nachnutzung des TURBO-PASCAL Programmes TURBOGX.PAS einschließlich einer ausführlichen Dokumentation zur Arbeitsweise der Proceduren sowie einiger Beispiele ist über die Kontaktadresse möglich.

VEB Elektroprojekt und Anlagenbau Berlin 1. Vorbemerkungen Besonders bei der Anwendung höherer Programmiersprachen besteht verstärkt die Notwendigkeit, die grafischen Fähigkeiten des vorhandenen Arbeitsplatzcomputers zu nutzen. Der 16-Bit-Arbeitsplatzcomputer A7100 besitzt eine sehr leistungsfähige SchwarzWeiß-Graphik. Das Grafik-Subsystem IM, bestehend aus Grafikkontroller K7070 (KGS) und der Anschlußsteuerung für den Bildschirm K7072 (AGB), ist unter anderem durch die hohe Auflösung von 640x400 Bildpunkten in vier Helligkeitsstufen gekennzeichnet. Für Nutzer des Betriebssystems SCP1700 wird die Grafikenweiterung SCP-GX bereitgestellt 121. Sie besteht aus dem hardwareunabhängigen Teil, dem Graphics Device Operating System (GDOS), und dem hardwareabhängigen Teil, dem Graphics Input/Output System (GIOS). Über das SCP-GX lassen sich grafische Ein- und Ausgaben von und Bild 1

6RAFIK_EIN

KGerät)) (Berät >

Voraussetzung für die Nutzung des SCP-GX ist, daß die ladbare Grafikfirmware in den KGS geladen wurde. Befindet sich die aktuelle Version der Grafikfirmware auf Laufwerk A (z.Z. GRAF5.FRM), erfolgt die Kommandoeingabe. A > L GRAF6.FRM Nun ist es möglich, das Betriebssystem von der Kommandoebene aus in den Grafikmodus zu setzen bzw. rückzusetzen (Unterschied zum Grafikmodus ein- bzw. ausschalten). Mit der Kommandoeingabe

6ftAFlK_AU3

D i e s e s Kommando s c h a l t e t d e n G r a f i k i n a d u s f ü r das mit f e s t g e l e g t e Gerat ein. 'Bildschirm' - B i l d s c h i r m als Ausgabegerat 'Drucker_HR' - K6313 m i t h o h e r Auflösung 'Orucker_LR' - K6313 m i t g e r i n g e r Auflösung

BALKEN

'Plotter'

KREISBOGEN

-

PIotter

K6411

(XI ,Y1,X2,Y2)

übergegangen.

3. Funktion von SCP-GX Der Zugriff zu grafischen Funktionen erfolgt über eine herkömmliche BDOS-Ruffolge. Vom Nutzerprogramm wird GDOS über das Softwareinterrupt 224 mit dem Funktionscode 473H im Register CX aufgerufen. Außerdem wird eine Parameterliste I2J übergeben, wobei deren Adresse mit den Registern DS (Segmet) und DX (Offset) übergeben wird. Die Parameterliste enthält 5 Adressen für spezielle Parameterbereiche, die an das

Rechteck m i t der l i n k e n u n t e r e n Ecke und d e r r e c h t e n o b e r e n Ecke (X2,Y2); < gemäß

-pl fuer • (• " • > : KO! EUELLH l It:.' : 7 FUELLH>T ; 3 iwrEPr^T • :

PROGRAM PROCEDIJRTEST ; TSTRIN6

STRINBC403;

F ART, IND ,MART,RAD 1,RAD2,A,B, AW,EW,X1,X2,Y 1,Y2,X3,Y3 TXT :TSTRING;

: INTEGER;

{.tITURBOBX. PAS} BEG IN X1 :=3000; Y t:=3000 ; X2 ; -1 0000 ; Y2 :=25000 ; X3: J-20000 ; Y3 :=20000 ; CLRSCR;

Koordi n a t e n i e s t 1 egungen }

l i i l i l WÊMïm I !v ; v I ;v ji Ijj> Mmimm

C • Parametereingaber. WRITE*' LINIENSTAERKE 1..500 : '); READLN(A); WRITE(' Eingabe e i n e s kurzen Ten t e s : '); READLN( TXT ) ; WRITE( RADIUS fuer K r e i s < 1..20000 ) : '); READLN(RADI)! WRITE(' RADIUS fuer Kreisbogen < 1 . . 20000 ) : '); READLN GRAF' IK EIN ( BI I..DSCH I RM ) ; CLE'.. GRAFIK; LINIENSTAERKE(A,B); FUELL ..ART (F ART) ; FUELLINDEX(IND); MARKER.. ART (MART) ; LIMIEiXl,Y1,X3,Y2); KREIS(X2,Y2,EAI>1); BALK:EN*X1 ,Y1 ,X2,Y2) ; MARKER; Y3: :"Y3--3000; T E X TAUSGABE< X 3,Y 3,TX T) î KREISBÜGEN(X 3,Y3,RAD2,AW,EW) ; REPEAT UNTIL KEYPRESSED; GRAFIK AUS; END. gestellt. Als grafisches Eingabemedium dient die Tastatur, und grafische Ausgaben können wahlweise auf Bildschirm, Plotter oder Drucker weitergeleitet werden. Das Anwenderprogramm übergibt die grafischen Koordinaten für die X- und Y-Achse jeweils als Normalisierte Gerätekoordination von 0 bis 32767. GDOS wandelt diese Koordinatenangaben in Gerätekoordinaten für das spezielle Grafikgerät um. In Bild 1 sind die wichtigsten Grafikprozeduren, welche in der Include-Datei TURBOGX.PAS enthalten sind, aufgelistet. Es ist zu beachten, daß bestimmte Prozeduren geräteabhängige Besonderheiten aufweisen 121.

6. Beispiele Als Demonstration zur Handhabung der Prozeduren von TURBOGX.PAS sollen die folgenden kleinen Beispiele dienen. In Bild 2a ist der Quelltext eines einfachen Linieneditors dargestellt. Das Editieren erfolgt gemäß

Mikroprozessortechnik, Berlin 1 (1987) 11

i Abbruch bei

Tastendruck

der Prozedurbeschreibung von EINGABE. LOCATOR (Bild 1). Wird der Locator im ENDE-Feld abgeschlossen, erfolgt ein Ergebnisausdruck des Editiervorganges. Bild 2b zeigt ein mögliches Ergebnis des Editiervorganges. Das Programm von Bild 3a bildet eine Periode der Sinusfunktion auf dem Bildschirm ab und erzeugt anschließend eine Hardcopy (Bild 3b). Bild 4a enthält ein Testprogramm für einige Grafikprozeduren, und Bild 4b veranschaulicht die Arbeitsweise der Testroutine. Literatur IM S. Kerst, H. Riegel: Arbeitsplatzcomputer robotron A7100. edv-aspekte 1/1987 121 U. Heckel: Das Betriebssystem SCP1700. edvaspekte 1/1987

E l KONTAKT m VEB Elektroprojekt und Anlagenbau Berlin, Sitz Technische Universität Dresden, Helmholtzstr. 9, Dresden, 8027; Tel.: 4634664

Grafikprogramm für den KC85/3 Der große Vorteil des KC85/3 liegt in der vorhandenen Vollgrafik, welche in BASIC leicht nutzbar ist. In vielen Fällen stört jedoch die - auch vom Programm abhängige - langsame Zeichengeschwindigkeit. Aus diesem Grund wurde das Maschinenprogramm DRAWER entwickelt. Es hat einen Umfang von 4 KByte und liegt im Speicher von 7000H bis 7FFFH. Ein frei wählbarer Bildspeicher liegt auf den Adressen 5000H bis 6FFFH. Es besteht die Möglichkeit, das Programm sowohl von CAOS aus mittels DRAW oder REDRAW (letzter Befehl löscht nicht das Schirmbild) als auch von jedem BASIC-Programm aus mit CALL*7001 zu starten. Das Programm ermöglicht die Bearbeitung jeglicher Grafik auf dem Bildschirm; dazu wird dieser aufgeteilt in ein 256x256 großes Pixelfeld und eine 8 x 32 Zeichen große Spalte für die Anzeige des Menüs, von Informationen, Koordinaten u.ä. Das Programm besteht aus den sechs Befehlsgruppen Steuerbefehle, Kassettenbefehle, Speicherbefehle, logische Bildbefehle, Bildbefehle und Zeichenbefehle. Die Bildbefehle z. B. realisieren ein in den Grenzen frei wählbares Verschieben, Spiegeln, Löschen, Beschriften und Einfärben des Bildes, während die sechste Gruppe das Zeichnen von Linien, Kreisen und Ellipsen entspechend eingegebener Koordinaten sowie als Kernstück die sogenannte Turtlegrafik umfaßt. Über ein zweites Menü können unter anderem alle 11 Options der Turtlegrafik (z.B. das Ausfüllen von Flächen) genutzt werden. Das gesamte Programm ist gegen Falscheingaben gesichert. Es ist universell sowohl als selbständiges Programm als auch als Modul für BASiC geeignet. EOS „Dr. T. Neubauer", Schloßplatz, Arnstadt, 5210 Eckoldt

327

Grafikprogramm zur Darstellung von Ergebnissen der Aufwärtsübersetzung Gerald Tränkner Ingenieurhochschule Mittweida, Sektion Informationselektronik

• Die freien senkrechten Streifen neben den Knoten werden als Verbindungskanäle bezeichnet und beinhalten Steuer- Datenflußlinien, die über mehr als 2 Waagerechtfelder hinausgehen. Auf dem Bildschirm können waagerecht 3 Knoten nebeneinander und senkrecht 8 Knoten untereinander abgebildet werden (Bild 1).

Bildaufbau Möglichkeiten des Programms im einzelnen:

Dap beschriebene Programmsystem GRAPH ist ein Grafikprogramm in Assembler und dient der Darstellung von Programmteilen in PAP-ähnlicher Form. Hardwaremäßig wird der Grafikmodul LC8552 auf Basis von K-1520-Systemen genutzt. Die verwendeten Unterprogramme sind einzeln ansprechbar und können mit geringem Steueraufwand auch für andere Zwecke zusammengestellt werden. Die wesentlichsten Eigenschaften, Funktionsprinzipien und Strukturen werden vorgestellt. Bei der Erarbeitung des Programms wurde vor allem auf die Universalität und eine hohe Arbeitsgeschwindigkeit Wert gelegt. Aus diesem Grund wurde zum Zeichnen nur auf waagerechte und senkrechte Linien zurückgegriffen. Mit geringem Steueraufwand sind allerdings auch Linien beliebiger Anstiegswinkel darstellbar. Grundkonzeption Im Gegensatz zu bekannten Programmen werden keine schrägen Verbindungen genutzt. Die Realisierung der geforderten Zeichengeschwindigkeit wird durch die Zeichnung von ausschließlich waagerechten und senkrechten Linien erreicht. Unterschiedliche Linienarten und -stärken dienen der Darstellung besonderer technischer Sachverhalte. Der gesamte Inhalt des Bildschirmes ist In einem speziellen Telegramm codiert enthalten. Dieses Telegramm wird in einem Host-Rechner generiert und vom Programm entschlüsselt. Die Software ist für eine Erweiterung vorgesehen und ermöglicht die Nutzung für größere Bildschirme. Durch den aufrüstbaren Telegramminhalt sind die Formate flexibel gestaltbar.

• Punkte It. Koordinaten setzen und rücksetzen • zwischen gegebenen Punktkoordinaten waagerechte und senkrechte Zeichnung von: - Linien dreifacher Stärke - einfachen Linien - Strichellinien • Darstellung von Programmknotenpunkten als Rechtecke auf bestimmten, fest definierten Bildschirm-Flächen • Erkennung bestimmter, markanter Übergabefehler Im Telegramm • Realisierung der Schrift im Format 7 x 5 Bit Die darzustellenden Programmteile werden folgendermaßen auf den Bildschirm gebracht: • Jeder Befehl wird entsprechend der Mnemonik ausgeschrieben und von „Balken" oberhalb und unterhalb der Schrift begrenzt - diese Darstellung wird Knoten genannt. • Die Balken können in 4 verschiedenen Arten dargestellt werden, welche die Anzahl der Steuerflüsse beinhalten, die an diesen Balken angeschlossen sind. • Im Programmablauf linear aufeinander folgende Befehle werden als senkrecht untereinander stehende Knoten beschrieben; bei Verzweigungen können bis zu 3 parallele Programmabläufe dargestellt werden. • Die Verbindung der Knoten erfolgt mittels Steuer- und Datenflußlinien, welche als Dreifach- bzw. Strichel-Linlen dargestellt werden. • Ein Knoten wird durch die Steuer- und Datenflüsse angesprochen, die von oben an den oberen Balken anschließen und spricht andere Knoten durch Steuer- und Datenlinien an, die nach unten vom unteren Balken abgehen.

Ldd r0 i r 3

TTfT"

H Z

move a . 12 , -1 BPT

Id c i 1 «1 . rO

I

! Jsr pc, •

rO . ~ 1 ? [ r 5 ] move p, 10 , -(sp)

I

Idf - 12 I r s), r 0

Bild 1 Beispiel eines

328

p n n

Bildaufbaus

T

• byte

tf

Programmeinschränkungen Falls durch einen Programmteil im mittleren Senkrechtfeld eine Verbindungslinie vom rechten zum linken Senkrechtfeld läuft, ist für diese keine gesonderte Darstellung vorgesehen. Dadurch kann es zur Überlagerung von Linien kommen, welche zwar die Auswertung erschwert, aber nicht die Eindeutigkeit der Verbindung beeinträchtigt. Ebenfalls aus Platzgründen wurde die Länge der eingeschriebenen Mnemonik auf 16 Buchstaben begrenzt. Was darüber hinaus geht, wird weggeschnitten. Des weiteren existiert kein Überschreibschutz des aufgebauten Bildes. Inhaltliche Schwerpunkte Das Programm GRAPH wird als Unterprogramm durch ein Hauptprogramm angesprochen und erhält von diesem die notwendigen Angaben über die zu zeichnenden Programmstücke. Die Daten werden vom Hauptprogramm in einem Telegramm formiert übergeben und von einer Startadresse (siehe Bild 2) beginnend im RAM abgelegt. Der Inhalt des Telegramms ist aus Bild 2 ersichtlich. Die Feld-Nummern sind 2 Byte lang, alle anderen Daten 1 Byte. Die Verwaltung des Telegramms, das heißt das Welterzählen der Telegrammadressen, auf die zugegriffen wird, wurde vom Indexregister IY übertragen. In Anpassung an die Telegrammgestaltung ergibt sich der Programmablauf von GRAPH laut Bild 3. Zur Vermeidung von Überlagerungen von Linien im Verbindungskanal wurden dort LaufKoordinaten in x-Richtung definiert, die nach jedem Linien-Zug geändert werden. Um auftretende markante Telegrammübertragungsfehler zu registrieren, ist im RAM ein spezielles Fehlerregister-Byte reserviert, welches je nach Fehlerart geladen wird. Der Inhalt dieser Speicherstelle wird nach erfolgtem Bildaufbau ausgewertet und als Fehlermeldung mit auf den Bildschirm gebracht. Feld-Nummern, die außerhalb des Bildschirmes liegen, initialisieren zwar eine Fehlerausschrift, unterliegen aber ansonsten dem normalen Programmablauf. Das heißt, die auf dem Bildschirm sichtbaren Steuer- und Datenlinien werden so weit gezeichnet, als ob die gezeigte Struktur einen Ausschnitt einer noch größeren Übersicht darstellt. Die 8 Waagerecht- und 3 Senkrechtfelder des Bildschirmes ergeben 24 Felder, welche wie Matrizen nach Zeile und Spalte bezeichnet sind. Für jedes Feld wurden des weiteren noch eine Startadresse (für Zeichnung des Kastens) und xo, yo Koordinaten definiert (für Einschreiben der Mnemonik). Eine möglichst hohe Arbeitsgeschwindigkeit der Programme wurde u. a. durch die Ver-

Mikroprozessortechnik, Berlin 1 (1987) 11

Bildschirm loschen Telegrammstartadresse

r

M Start-Feld-Nr. 1 N1 Mnemonic TO TU i VST

M-mal


-|

-

„programmkopf"

Dem Programmnamen kann eine in runde Klammern eingeschlossene Liste von Bezeichne™ folgen. Sie stellen die Verbindung des PASCAL-Programms zum sogenannten Environment dar. In der Regel sind das Dateien, mit denen das Programm arbeiten kann, ohne sie eröffnen oder anlegen zu

337

müssen. In T U R B O - P A S C A L hat diese Liste keine Bedeutung. A b g e s c h l o s s e n wird ein P A S C A L - P r o g r a m m d u r c h einen Punkt. Der Programmkopf des Beispiels aus Punkt 2.7 ist d e m n a c h P R O G R A M Tabelle

(INPUT,OUTPUT)

Das Programm heißt Tabelle. Das benutzte Environment sind die Dateien INPUT und OUTPUT. Es folgt ein Block, bei d e m der Deklarationsteil nur die Variablendeklaration VAR

x,y,max:INTEGER;

enthält. Der folgende Anweisungsteil BEGIN Readln(INPUT.max); FOR x : = 0 TO max DO BEGIN y : = x * x ; Writeln(OUTPUT, 'x: = ', x , ' y : = ', y) END END besteht aus einer Liste von zwei A n w e i s u n gen, einem noch zu besprechenden Prozeduraufruf und einer For-Anweisung. Das Schleifeninnere ist eine Verbundanweisung. Der Punkt beendet das Programm und damit einen Satz in der Programmiersprache PASCAL. 5.5. Prozeduren 5.5.1.

und Funktionen

'

Einführung

Prozeduren und Funktionen gestatten die Untergliederung eines Programms in relativ selbständige Teile. Das ursprüngliche Motiv war die Einsparung von Programmkode. Gleiche Programmpassagen w e r d e n durch Aufrufe einer Prozedur ersetzt, w e l c h e die erforderlichen A n w e i s u n g e n enthält. Z u n e h m e n d trat aber ein anderer Gesichtspunkt in den Vordergrund: Prozeduren und Funktionen gestatten es, inhaltlich zusamm e n g e h ö r e n d e und eine gewisse abgeschlossene Leistung erbringende Programmteile im Programmtext als solche sichtb a r z u machen. Damit läßt sich die Übersichtlichkeit eines Programms wesentlich verbessern. In den nachfolgenden Unterpunkten wird zunächst die Syntax von Deklaration und Aufruf gezeigt. Danach w e r d e n Gültigkeitsbereiche von Bezeichnern und Speicherplatzzuordnung für lokale Variablen besprochen. Den Abschluß bilden Standardprozeduren und -funktionen. 3.5.2. Deklaration u n d Anruf Ähnlich wie das Hauptprogramm w e r d e n Prozeduren und Funktionen durch den Kopf und den Programmbaustein Block gebildet. Die Bilder 5.24 und 5.26 zeigen das. Die an den reservierten Bezeichner FORWARD geknüpfte Alternative wird später behandelt.

- block •• funktionskopf ——

' c-J—^ausdruck ' - J -FORWARD—

Bild 5.26 Syntaxdiagramm „ funktionsdeklaration "

Bild 5.30 Syntaxdiagramm

Bei Prozeduren wird der Kopf durch den reservierten Bezeichner PROCEDURE eingeleitet. Ihm folgt der Name der Prozedur. Wahlweise kann eine Parameterliste angegeben werden. Die Syntaxdiagramme 5.24 und 5.25 zeigen dies. Bei Funktionen trägt der Funktionsname selbst einen Wert. Sein Typ wird, wie das Bild 5.27 zeigt, der Parameterliste nachgestellt. Erlaubt sind nur einfache Typen.

Der Compiler löst die Aufrufe so auf, daß zuerst die A u s d r ü c k e ausgewertet w e r d e n und danach in die entsprechende Prozedur oder Funktion verzweigt wird. V o m Compiler wird überprüft, ob

- Anzahl und Typ der aktuellen Parameter mit den formalen übereinstimmen - ein aktueller Referenzparameter eine Variable ist und eine - Übereinstimmung zwischen den Parameterlisten der aktuellen und formalen Proze—-FUNCTION —bezeichner-fparamet6rliste—T'l--einfachertyp~•r-^ dur- und Funktionsparameter herrscht.

Bild 5.27 Syntaxdiagramm

J"

„funktionskopf"

Eine genaue Betrachtung der Syntax von Block zeigt, daß der Deklarationsteil weitere Prozeduren und Funktionen enthalten kann. Die Diskussion aller damit z u s a m m e n h ä n g e n d e n Probleme wird jedoch bis z u m nächsten Unterpunkt aufgeschoben. Eine Prozedur kann über sogenannte globale Variablen und Parameter mit ihrer Umwelt kommunizieren. Die Parameter w e r d e n in einer Parameterliste angegeben. Die einzelnen Elemente dieser Liste heißen bei der Deklaration formale Parameter, beim Aufruf aktuelle Parameter.'

bezeichner•chner—:

-typ

• >

VAR— —prozedurkopf funktionskopf Bild 5.28 Syntaxdiagramm

„parameterliste"

Das Bild 5.28 zeigt die Syntax der Parameterliste. Die einzelnen Alternativen repräsentieren die vier möglichen Parametertypen: -

Werteparameter Referenzparameter Prozedurparameter und Funktionsparameter.

Werte- und Referenzparameter übermitteln Datenobjekte. Ihnen wird deshalb eine Typangabe nachgestellt. Während Werteparameter nur die Übertragung von Informationen an die Prozedur oder Funktionen gestatten, wirken Referenzparameter in beiden Richtungen. Die Aktivierung von Prozeduren und Funktionen zeigen die Syntaxdiagramme der Bilder 5.29 und 5.30. Beide Formen sind identisch. Während aber der Prozeduraufruf eine selbständige A n w e i s u n g ist, können Funktionen nur als Faktor in einen A u s d r u c k aufgerufen werden.

-C,

-FORWARC ' Bild 5.24 Syntaxdiagramm „Prozedurdeklaration"

'XL

Bild 5.25 Syntaxdiagramm

338

„prozedurkopf"

c-"—aujdruck-*-~ ) Bild 5.29 Syntaxdiagramm

Es folgen Beispiele: Die Prozedur Max 2 soll v o n zwei Parametern den Wert des größeren ermitteln und zurückgeben. P R O C E D U R E Max2 (A,B:REAL;VAR Max:REAL); BEGIN IF A > B T H E N M a x : = A E L S E Max:=B END. Im Prozedurkopf w e r d e n Name und Parameterliste angegeben. Die Parameterliste enthält die Werteparameter A und B v o m Typ REAL und d e n Referenzparameter Max, der ebenfalls v o m Typ REAL ist. Der Deklarationsteil ist leer. Es w e r d e n zur Ermittlung des Resultates keine Marken, Konstanten, Typen und Variablen benötigt. Der Anweisungsteil besteht aus einer If-Anweisung. Da der Parameter Max Informationen aus der Prozedur zurückübermitteln soll, muß er Referenzparameter sein. Die Prozedur Max2 läßt sich nun wie folgt aufrufen:

Max2 (x,y,z) Max2 (1.5*x,y,z) Max2 (1.5*x,3,z)

- prozedurkopf-

bezeichner -y-parameterfiste—

Junktionsaufruf"

„prozeduraufruf"

Der dritte Parameter von Max2 muß stets eine Variable sein. Die Prozedur Max2 läßt sich auch als Funktion umschreiben:

FUNCTION Max2 (A,B:REAL):REAL; BEGIN IFA>BTHENMax2:=A ELSE Max2:= B END; Im Funktionskopf w e r d e n wieder Name und Parameterliste angegeben. Der Parameter Max fehlt hier. Seine Aufgabe übernimmt der Funktionsname. Die mit d e m Doppelpunkt angefügte Typenangabe erklärt ihn z u m Datenobjekt v o m Typ REAL. wird fortgesetzt Hinweis: In Bild 2.6 des ersten Teils unserer PASCAL-Folge (MP 9/87) sind an Stelle von „T" Apostrophe zu setzen. Red.

Mikroprozessortechnik, Berlin 1 (1987) 11

Programmieren in PROLOG Eine Einführung Rainer Knauf, Dr. Harald Killenberg Technische Hochschule Ilmenau, Sektion Technische und Biomedizinische Kybernetik 1. Vorbemerkungen Die Programmiersprache PROLOG findet seit etwa 1980, als sie in Japan zur Sprache erklärt der Fünften Computer-Generation wurde, ein ständig zunehmendes Interesse bei Informatikern und Anwendern. Aufbauend auf der Prädikatenlogik erster Ordnung wurde PROLOG erstmals 1971/1972 von A. Colmerauer in Marseille implementiert. Im Gegensatz zu den prozeduralen Programmiersprachen (z. B. PASCAL, PL/1, C), in denen beschrieben wird, wie ein Problem zu lösen ist, besteht die Programmierung in der deklarativen Sprache PROLOG in einer logischen Beschreibung eines Sachverhalts (PROLOG = PROgramming in LOGic). Daraus ergibt sich eine prinzipiell andere Herangehensweise beim Entwurf von Programmen, als das bei den prozeduralen Sprachen der Fall ist. Für eine Reihe von Problemstellungen, insbesondere für komplexe „wissensbasierte" Anwendungen, erweist sich PROLOG nach den Erfahrungen der Autoren als besonders leistungsfähige Programmiersprache IM. 2. Logische Grundlagen

/2/131

Der Grundgedanke der Logik-Programmierung besteht darin, daß das Wissen über einen Gegenstandsbereich als Menge logischer Aussagen formuliert werden kann. Die Grundlage dafür bildet der Prädikatenkalkül der ersten Stufe. Diese Aussagen sollen wahre Sachverhalte (Tatsachen) repräsentieren. Sie werden in Form sogenannter Hornklauseln, das sind prädikatenlogische Ausdrücke der Form B i

A A¡ m

notiert. B heißt Klauselkopf, die A¡ bilden den Klauselkörper. B und die A¡ sind Atomformeln, das heißt elementare (nicht logisch zusammengesetzte) Ausdrücke der Form (Prädikatenname) ((Term),(Term),...). Die Terme (Term) symbolisieren dabei Objekte des Gegenstandsbereiches und (Prädikatenname) ein Prädikat (eine Relation, eine Beziehung) über diesen Objekten. Ein nstelliges Prädikat ist eine Abbildung einer Menge von n-Tupeln von Objekten in die Menge {wahr, falsch}. In den Termen auftretende Variablen gelten bezüglich der ganzen Hornklausel als allqualifiziert. Ist die Anzahl der Prämissen A¡ einer Hornklausel null, das heißt der Klauselkörper leer, so spricht man von Fakten (elementaren Aussagen), anderenfalls von Regeln (logisch zusammengesetzten Aussagen, wenndann-Beziehungen). Die als Fakten und Regeln formulierten Aussagen bilden eine Wissensbasis. Anhand dieser Aussagen kann man nun von einer Hypothese (Aussage, von der noch

Mikroprozessortechnik, Berlin 1 (1987) 11

nicht bekannt ist, ob sie wahr oder falsch ist) ermitteln, ob sie Schlußfolgerung der in der Wissensbasis abgelegten Fakten und Regeln ist. Eine Hypothese wird in PROLOG als Frage formuliert und setzt sich aus logisch UND-verknüpften Atomformeln zusammen. Ist beispielsweise {K,,.., K n } die Menge der in einer Wissensbasis enthaltenen Hornklauseln (kurz: Klauseln) und H eine Hypothese, so wird von PROLOG überprüft, ob A K,—> H iSn eine allgemeingültige (immer wahre) Aussage ist. Das dazu von PROLOG verwendete Prinzip ist das Resolutionsprinzip.

Quasi-Standard entwickelt) folgende Konventionen (vereinfacht): Objekte werden u.a. durch Konstanten, das heißt Namen (müller, raum_2,...) oder Zahlen (0,100,-6,...) repräsentiert. Namen sind Zeichenfolgen, beginnend mit einem Kleinbuchstaben, die Buchstaben, Ziffern sowie das Unterstreichungszeichen enthalten können. Weitere mögliche Darstellungen für Objekte sind Listen und strukturierte Terme. PROLOG-Var/ab/en sind Zeichenfolgen, die die gleichen Zeichen wie Namen enthalten, aber mit einem Großbuchstaben oder dem Unterstreichungszeichen beginnen. Innerhalb einer Klausel stehen gleiche Variablen auch für das gleiche Objekt. Prädikatennamen haben gleiche Syntax wie Namen. Klauseln werden mit einem Punkt (".") abgeschlossen. Als Konjunktionssymbol wird das Komma (",") verwendet. Als Implikationssymbol notiert man ":-" bei Regeln. Fakten haben kein Implikationssymbol, der Atomformel folgt sofort der abschließende Punkt.

3. Formulierung einer Wissensbasis Die Formulierung eines Sachverhaltes in PROLOG soll an einem einfachen Beispiel, welches/4/entnommen wurde, erläutert werden. Gegeben seien folgende Aussagen: • Die Kollegen Müllerund Meier arbeiten im Raum 1, Knauf im Raum 2, Otto und Schulze im Raum 3. • Telefone befinden sich in den Räumen 2 und 3. • Ein Kollege ist anrufbar, wenn er in einem Raum arbeitet, in dem sich ein Telefon befindet. • Zwei Kollegen können ein Gespräch miteinander führen, wenn sie in demselben Zimmer arbeiten oder beide anrufbar sind. Es könnten dazu z.B. folgende Prädikate eingeführt werden: arbeiteLin (K,R): Ein Kollege K arbeitet im Raum R. telefonJn (R): Im Raum R befindet sich ein Telefon, anrufbar (K): Ein Kollege K ist anrufbar. gespräch_möglich(K1 ,K2): Zwei Kollegen K1 und K2 können ein Gespräch miteinander führen. Mit Hilfe dieser Prädikate läßt sich obiger Sachverhalt in PROLOG etwa so notieren: (1) (2) (3) (4) (5) (6) (7) (8)

arbeitet_in(müller,raum_1). arbeitet_in(meier,raum_1). arbeitet_in(knauf,raum_2). arbeitet_in(otto,raum_3). arbeitet_in{schulze,raum_3). telefon_in(raum_3). Telefon_in(raum_2). anrufbar(K):arbeitet_in(K,Raum), telefonJn(Raum). (9) gespräch_möglich(K1,K2):arbeitet_in(K1, Raum), arbeitet_in(K2,Raum). (10) gespräch_möglich(K1,K2):~ anrufbar(KI), anrufbar(K2). Für die Syntax gelten nach /5/ (die dort beschriebene Syntax hat sich inzwischen zum

4. Formulierung und Abarbeitung von Fragen PROLOG ist nun in der Lage, anhand der Wissensbasis Fragen zu beantworten, zum Beispiel: Befindet sich im Raum 1 ein Telefon? ?-telefon_in(raum_1). nein Sind in den Räumen 2 und 3 Telefone? ?-telefon_in(raum_2),telefonJn(raum_3). ja Welcher Kollege ist anrufbar? ?-an ruf bar(Kollege). Kollege = knauf Wenn die Frage positiv beantwortet werden konnte, wird mit „ja" geantwortet bzw. mit der zuerst gefundenen Variablenbelegung, für die die formulierte Hypothese wahr ist. Anderenfalls wird mit „nein" geantwortet. Eine Frage (ein Ziel) beginnt mit „?-". Danach folgen, durch Kommata getrennt, die UND-verknüpften Atomformeln (Teilziele). Die Frage wird mit einem Punkt (".") abgeschlossen. Die Abarbeitung letzterer Frage wird im Bild 1 mit Hilfe eines Suchbaumes veranschaulicht. Die Teilziele werden in der Reihenfolge abgearbeitet, wie sie in der Frage notiert sind. Bei der Abarbeitung eines Teilziels wird die Wissensbasis von oben nach unten nach einer Klausel durchsucht, deren Kopf mit dem Teilziel unifizierbar, das heißt „syntaktisch gleichzumachen" ist. Notwendige Bedingung für den Erfolg der Unifikation ist, daß Prädikatenname und Stelligkeit beider Atomformeln gleich und die einander entsprechenden Terme ihrerseits miteinander unifizierbar sind. Dabei können, vereinfacht betrachtet, folgende Fälle auftreten: 1. Beide Terme sind Konstanten. Die Unifikation ist erfolgreich, falls die Konstanten identisch sind. 2. Ein Term ist eine Konstante, ein Term ist eine Variable. Die Unifikation ist erfolgreich, die Variable wird durch die Konstante ersetzt. 3. Beide Terme sind Variablen. Die Unifikation ist erfolgreich. Die Variablen stehen nun für das gleiche Objekt.

339

¿-anrufbar(

Kol lege).

(8) K=müller Roum-raum_1

Kollege-K

¿-arbeitet in (K, Raum), telefonJn (Raum). A

2-teleforün (raumJl).

K-knauf Raum-raum_2

¿-telefonJn (raumJ).

Backtrack

Backtrack

• erste Losung: Kollege-knouf

Dipl -Ing Rainer Knauf (24) studierte von 1982 bis 1987 an der Technischen Hochschule Ilmenau in der Fachrichtung Technische Kybernetik und Automatisierungstechnik mit Spezialisierung Technische Informatik. Er diplomierte im Februar 1987 mit einem Thema über Expertensysteme und deren Implementierung in PROLOG. Seit März dieses Jahres ist er wissenschaftlicher Assistent des Bereiches Technische Informatik. Dez Dr. sc. techn. Harald Kilienberg erwarb 1969 das Diplom an der Technischen Hochschule Ilmenau, Fachrichtung Technische Kybernetik und Automatisierungstechnik; 1974 und 1983 Promotionen zum Dr-Ing und Dr. sc. techn mit Arbeiten zur Beschreibung und einem Entwurf industrieller Steuerungssysteme; 1977-1978 Zusatzstudium am Leningrader Institut für Feinmechanik und Optik; 1984 Berufung zum Hochschuldozenten für das Gebiet Nichtnumer ¡sehe Informationsverarbeitung/Künstliche Intelligenz; tätig als Projektleiter im VEB Robotron-Elektronik Zella-Mehlis (19841986) und als Hochschullehrer im Wissenschafts bereich Technische Informatik der Sektion Techm sehe und Biomedizinische Kybernetik der Technischen Hochschule Ilmenau,

Bild 1 Suchbaum bei der Abarbeitung von „ ?-anrulbar(Kollege)". War die Unifikation eines Teilziels mit einem Klauselkopf erfolgreich, so wird im Ziel dieses Teilziel durch den zugehörigen Klauselkörper ersetzt und das so entstandene aktuelle Ziel auf gleiche Weise weiterbearbeitet. Ein solches Verfahren heißt Tiefensuche. Bei der Unifikation eines Teilziels mit einem Fakt wird dieses, da der Klauselkörper leer ist, aus dem aktuellen Ziel entfernt. Die sich bei der Unifikation ergebenden Variablenbelegungen (der Unifikator) werden in das entstandene Ziel übernommen. Bei dem im Bild dargestellten Beispiel bilden die Knoten des Suchbaumes das jeweils aktuelle Ziel. Die Kanten sind mit der Nummer der jeweils zur Unifikation angewandten Klausel sowie dem Unifikator markiert. Stößt das System auf alternativ anwendbare Klauseln (d. h. auf eine „Weggabelung" im Suchbaum), so richtet es sich einen Entscheidungspunkt (place marker) ein und merkt sich den momentanen Abarbeitungszustand (die Variablenbelegungen). Es wird zunächst die erste der alternativen Klauseln in der Wissensbasis angewandt. Bleibt eine Unifikation erfolglos, so wird ein Backtrack ausgelöst, das heißt, der Algorithmus setzt zum letzten vorausgegangenen Entscheidungspunkt zurück und führt, ausgehend vom dort gekellerten Zustand, die Bearbeitung mit der nächsten alternativen Klausel fort. Die Abarbeitung wird - erfolgreich beendet (Antwort „ja" bzw. eine Variablenbelegung), wenn das aktuelle Ziel leer ist (Symbol " • " im Bild) - erfolglos beendet (Antwort „nein"), wenn für ein Teilziel keine Klausel mehr zur Unifikation angewandt werden kann. Nach einer erfolgreichen Beendigung der Abarbeitung kann auf Wunsch ein Backtrack erzwungen werden, so daß nach weiteren Lösungen gesucht wird. Aus dem von PROLOG verwendeten Suchverfahren (Tiefensuche mit Backtrack) ergeben sich folgende Konsequenzen: 1. Die Reihenfolge der Klauseln in der Wissensbasis ist für die Lösung von Bedeutung. Wären z. B. die Klauseln (3) und (5) vertauscht, ergäbe sich im Beispiel als erste Lösung „Kollege = schulze". 2. Die Reihenfolge der Teilziele in Klausel-

340

körpern ist für die Lösung von Bedeutung. Wäre z. B. diese Reihenfolge in (8) umgekehrt, ergäbe sich im Beispiel als erste Lösung „Kollege = otto". 3. Das Verfahren terminiert nicht zwangsläufig. 5. Listen und Rekursionen Eine in PROLOG oft verwendete Datenstruktur ist die Liste. Definition: 1. [ ] ist eine Liste (die leere Liste). 2. Wenn T ein Term und L eine Liste oder eine Variable ist, dann ist [T|L] eine Liste. der Listenabtrennoperator, teilt die Liste in Listenkopf (links von "|") und Listenkörper bzw. Restliste (rechts von "|"). Alternative Schreibweisen ein und derselben Liste sind [T, [T, [T, [T„

[T2 [T3 | []]]] [T2 [ T a l ] ] [T2 , Tal] T 2 ,T 3 ]

Die Terme T heißen Listenelemente. Mit Hilfe von Listen könnte man z. B. die Unterstellungsverhältnisse in einem Betrieb etwa so darstellen: chef_ von([müller,knauf,schulze],meier). chef_von([lehmann,walter],otto). chef_von([meier,otto],albrecht). Ein in PROLOG vorrangiger Programmierstil ist die Rekursion. Dabei handelt es sich um den Selbstaufruf des Kopfprädikates in Regelkörpern. An einem einfachen Beispiel aus der Listenverarbeitung, der Mitgliedschaft eines Elementes in einer Liste, soll die Rekursion erläutert werden. mitglied(E,[E|L]). mitglied(E1,[E2|L]):mitglied(E1,L). „mitglied" ist ein 2stelliges Prädikat und soll dann „wahr" sein, wenn das erste Argument ein Element der als zweites Argument stehenden Liste ist. Zunächst wird der einfachste Fall einer solchen Mitgliedschaft als Fakt notiert: Ein Element E ist dann Mitglied in ei-

ner Liste, wenn es im Listenkopf steht, d. h. die Liste die Struktur [E|L] hat. List dabei eine beliebige Restliste. Ist dieser Fall für ein konkretes Ziel nicht zutreffend, so wird, da ein Backtrack ausgelöst wird, diezweite Klausel angewandt. Hier wird die Mitgliedschaft eines Elements in einer Liste auf die Mitgliedschaft in der Restliste zurückgeführt. Der Selbstaufruf von „mitglied" wird so lange fortgeführt, bis durch das wiederholte Abspalten des ersten Elements - die erste Klausel zutreffend ist (Ziel erfolgreich bearbeitet) oder - die leere Liste entstanden ist, so daß keine der beiden Klauseln mehr anwendbar ist (Ziel erfolglos bearbeitet). 6. Eingebaute Prädikate Es gibt einige Prädikate, die häufig gebraucht werden und zum Teil mit Hilfe von Fakten und Regeln nur umständlich oder gar nicht definiert werden können. Derartige Prädikate sind oft bereits vordefiniert und werden als eingebaute Prädikate bezeichnet. Anzahl und Sortiment eingebauter Prädikate ist bei verschiedenen PROLOG-Ubersetzern zum Teil recht unterschiedlich. Es handelt sich i. allg. um Prädikate - zum Test von Termen (ob Variable, Konstante, Liste,...) - zum Vergleich von Termen - zur Arithmetik - zur Ein- und Ausgabe - zur Steuerung der Abarbeitung (Manipulation des Abarbeitungsmechanismus) und - zur Veränderung der Wissensbasis während der Programmabarbeitung. Eine Aufstellung dieser Prädikate ist dem Beschreibungsmaterial des jeweils verwendeten Interpreters bzw. Compilers zu entnehmen.

Literatur und Kontaktadresse

auf Seite 341

Mikroprozessortechnik, Berlin 1 (1987) 11

/3/ Gürtzig, K.: Untersuchungen zur Anwendung der Logik-Programmierung für Probleme der Steuerungstechnik. Dissertation A, TH Ilmenau, 1987 /4/ Gürztig, K.;Schumann, H.-D.: E-PROLOG-ein einfacher Experimental-Prolog-Interpreter für die Ausbildung. Wissenschaftliche Zeitschrift der TH Ilmenau 32 (1986) 3, S.71 ff 151 Clocksin, W. F.; Mellish, C. S.: Programming in Prolog. Springer-Verlag, Berlin-HeidelbergNew York, 1981

Literatur /1/ Knauf, R.: Wissensverarbeitung mit der Sprache PROLOG am Beispiel eines Diagnosesystems für technische Geräte. Mikroprocessory - dydaktika i zastosowania, VII. und VIII. wissenschaftliches Seminar, Zieiona Gora, 1987, S.114-120 /2J Asser, G.: Einführung in die mathematische Logik. Teil 1: Aussage"nkalkül, 1982, Teil 2: Prädikatenkalkül der ersten Stufe, 1975; BSB B.G. Teubner Verlagsgesellschaft

16/ Kleine Büning, H.; Schmitgen, S.: Prolog. B.G. Teubner, Stuttgart, 1986 ¡7/ Schnupp, P.: PROLOG - Einführung in die Programmierpraxis. Hanser-Verlag, München Wien, 1986 E l KONTAKT W Technische Hochschule Ilmenau, Sektion Technische und Biomedizinische Kybernetik, Wissenschaftsbereich Technische Informatik, PSF 327, Ilmenau, 6300; Tel. 74561, R. Knauf

Disassembler für den KC85/2 ( 3) Lutz Molgedey, Berlin

ob bestimmte Byte als Befehle oder Daten zu interpretieren sind. Der Disassembler beginnt bei BA00 und ist etwas länger als 0.75 KByte. Arbeitsplatz im RAM wird dabei nicht benötigt. Er ist ohne größere Probleme auf jede integrale 100Grenze verschiebbar; dazu müssen die im Programm (Bild 1) hervorgehobenen Bytes geändert werden. Aus dem Menü erfolgt der Aufruf durch DIS adr. oder DIS adr. ENTER. Mit der Taste Break wird das Programm verlassen, jede andere Taste bewirkt das Auslisten der nächsten Zeile. Der Disassembler führt keine Modulschaltungen durch, der IRM ist also immer eingeschaltet. Damit können in dieser Version Programme, die im Schatten des Bildschirmwiederholspeichers liegen, nicht übersetzt werden. Nach dem Aufruf werden als erstes die Vor-

Will man ein bereits in Maschinensprache geschriebenes Programm analysieren, so stehen dafür nicht immer umfangreiche Programme zur Verfügung, oder diese sind einfach zu lang bzw. stören sich mit dem zu analysierenden Programm. Oft werden auch vom Hersteller nicht definierte Befehle /2, 3/ verwendet. Diese können die meisten herkömmlichen Disassembler nicht übersetzen. Deshalb wurde ein im folgenden beschriebener Disassembler für den KC 85/2 (/3) entwikkelt, der jeder Bytefolge eine Mnemonik zuordnet, ohne das Maschinenprogramm weiter zu analysieren. Es wird also kein Quelltext und keine Symboltabelle erzeugt, sondern der Anwender muß selber entscheiden,

0 1 2 3 4 5 6 7 8 9 A B C D E P

0/8

1/9

LD U RET NOP OUTJJ INCU DEC^j (nn) (dd) dd. ,dd A, ,A b.r' ADDu ADC U SUBjj

SBC^j rot AND,., r XORjj 0eLJ OR^ blo CPo BC n BC nn DE e DE b HL r' HL r CB AP u SP I ariu II qq dd

2/A

#

+

3/B

*/C

5/D

6/E

7/P

%

5 6 7 8

E P G H I J K L H H O P Q R S T

U V w X Y Z

Kw

t é (

) *

9

+

;




?

a A B C D

-SPACE r »8-Bit-Register (Bit 345) r' >8-Bit-Register (Bit 012) dd .16-Bit-Register (BC DE HL SP) qq -16-Bit-Register (BC DE Hl AP) n »8-Bit-Zahl nn »16-Bit-Zahl e »8-Bit-Distanzadresse b «Bitposition (0...7) cc »Bedingung (NZ...M) cc'»Bedingung (NZ...C) ari-Arithmetik (ADD...CP) rot.Rotation (RLC...SRL) blo»Block (I D IR DR)

u

Mikroprozessortechnik, Berlin 1 (1987) 11

Ou 5u Bu *u Ou Hu lu Ju

Tafel 1 Içterner chencode

Zei-

"u Nu Ou Pu «u Ru Su Tu "u Vu Wu Xu Zu Tafel 2 Das Register C wird als Flag-Register benutzt

Register Bit Bit Bit Bit Bit Bit Bit Bit

C 7 6 5 4 3 2 1 0

-

bytes DD bzw. FD abgesucht, dabei erhält nur das letzte Bedeutung. Danach wird nach den Vorbytes CB und ED gefragt, das Auftreten von ED macht die Vorbytes DD bzw. FD wirkungslos. Nun wird das nächste CodeByte mit Masken belegt (AND-Befehle) und dadurch der Befehl festgestellt. Danach wird noch lediglich die entsprechende Mnemonik aus der Tabelle herausgesucht und ausgegeben. Die Befehlsdarstellung weicht in einigen Fällen von der üblichen U880-Mnemonik /1/ ab, z. B. CP statt CMP und JP statt JMP. Die Darstellung der zusätzlichen Befehle entspricht der in 12/ angegebenen. Für den Befehl ED71 wurde die Mnemonik OTCLR verwendet. Bei Relativsprüngen wird die absolute Zieladresse angegeben. Der Disassembler besteht aus zwei wesentlichen Teilen, als erstes aus dem Tabellenteil und dann als zweites aus dem eigentlichen Programm. Innerhalb des Tabellenteils kommt als erstes die Maskentabelle und danach die Mnemoniktabelle. Im Programm selbst werden die Befehle auf die Grundbefehle zurückgeführt. Das betrifft vor allem die Arbeit mit den Indexregistern. Dazu werden im Register C (Tafel 2) Flags gesetzt, und mit ihnen wird dann die weitere Übersetzung gesteuert. Um Speicherplatz zu sparen, wird im Programm ein eigener Zeichensatz (Tafel 1) verwendet, dieser wird nur bei der Ausgabe in den ASCII-Satz umgerechnet. Will man eine andere Mnemonik verwenden, z. B. die Z80-Mnemonik, so muß dementsprechend die Mnemoniktabelle geändert werden. Soll beispielsweise JP cc,nn statt JPcc nn verwendet werden, so muß in der Tabelle D575223726 statt D55B2226 stehen. Dazu muß dann jedoch bei den Bedingungszeichen (NZ...M) das SPACE weggenommen werden (in der Tabelle ab BAC3). Eventuell kann man dann noch die Ausgabe von SPACE (bei BC3E) durch einen Tabulator ersetzen.

1-CB-Befehl + Vorbyte DD/PD 1»(IX+d)/(IY+d) bereits aufgetreten

1-DD/PD-Befehl 0»Torbyte DD 1»Vorbyte PD

341

/3/ Gürtzig, K.: Untersuchungen zur Anwendung der Logik-Programmierung für Probleme der Steuerungstechnik. Dissertation A, TH Ilmenau, 1987 /4/ Gürztig, K.;Schumann, H.-D.: E-PROLOG-ein einfacher Experimental-Prolog-Interpreter für die Ausbildung. Wissenschaftliche Zeitschrift der TH Ilmenau 32 (1986) 3, S.71 ff 151 Clocksin, W. F.; Mellish, C. S.: Programming in Prolog. Springer-Verlag, Berlin-HeidelbergNew York, 1981

Literatur /1/ Knauf, R.: Wissensverarbeitung mit der Sprache PROLOG am Beispiel eines Diagnosesystems für technische Geräte. Mikroprocessory - dydaktika i zastosowania, VII. und VIII. wissenschaftliches Seminar, Zieiona Gora, 1987, S.114-120 /2J Asser, G.: Einführung in die mathematische Logik. Teil 1: Aussage"nkalkül, 1982, Teil 2: Prädikatenkalkül der ersten Stufe, 1975; BSB B.G. Teubner Verlagsgesellschaft

16/ Kleine Büning, H.; Schmitgen, S.: Prolog. B.G. Teubner, Stuttgart, 1986 ¡7/ Schnupp, P.: PROLOG - Einführung in die Programmierpraxis. Hanser-Verlag, München Wien, 1986 E l KONTAKT W Technische Hochschule Ilmenau, Sektion Technische und Biomedizinische Kybernetik, Wissenschaftsbereich Technische Informatik, PSF 327, Ilmenau, 6300; Tel. 74561, R. Knauf

Disassembler für den KC85/2 ( 3) Lutz Molgedey, Berlin

ob bestimmte Byte als Befehle oder Daten zu interpretieren sind. Der Disassembler beginnt bei BA00 und ist etwas länger als 0.75 KByte. Arbeitsplatz im RAM wird dabei nicht benötigt. Er ist ohne größere Probleme auf jede integrale 100Grenze verschiebbar; dazu müssen die im Programm (Bild 1) hervorgehobenen Bytes geändert werden. Aus dem Menü erfolgt der Aufruf durch DIS adr. oder DIS adr. ENTER. Mit der Taste Break wird das Programm verlassen, jede andere Taste bewirkt das Auslisten der nächsten Zeile. Der Disassembler führt keine Modulschaltungen durch, der IRM ist also immer eingeschaltet. Damit können in dieser Version Programme, die im Schatten des Bildschirmwiederholspeichers liegen, nicht übersetzt werden. Nach dem Aufruf werden als erstes die Vor-

Will man ein bereits in Maschinensprache geschriebenes Programm analysieren, so stehen dafür nicht immer umfangreiche Programme zur Verfügung, oder diese sind einfach zu lang bzw. stören sich mit dem zu analysierenden Programm. Oft werden auch vom Hersteller nicht definierte Befehle /2, 3/ verwendet. Diese können die meisten herkömmlichen Disassembler nicht übersetzen. Deshalb wurde ein im folgenden beschriebener Disassembler für den KC 85/2 (/3) entwikkelt, der jeder Bytefolge eine Mnemonik zuordnet, ohne das Maschinenprogramm weiter zu analysieren. Es wird also kein Quelltext und keine Symboltabelle erzeugt, sondern der Anwender muß selber entscheiden,

0 1 2 3 4 5 6 7 8 9 A B C D E P

0/8

1/9

LD U RET NOP OUTJJ INCU DEC^j (nn) (dd) dd. ,dd A, ,A b.r' ADDu ADC U SUBjj

SBC^j rot AND,., r XORjj 0eLJ OR^ blo CPo BC n BC nn DE e DE b HL r' HL r CB AP u SP I ariu II qq dd

2/A

#

+

3/B

*/C

5/D

6/E

7/P

%

5 6 7 8

E P G H I J K L H H O P Q R S T

U V w X Y Z

Kw

t é (

) *

9

+

;




?

a A B C D

-SPACE r »8-Bit-Register (Bit 345) r' >8-Bit-Register (Bit 012) dd .16-Bit-Register (BC DE HL SP) qq -16-Bit-Register (BC DE Hl AP) n »8-Bit-Zahl nn »16-Bit-Zahl e »8-Bit-Distanzadresse b «Bitposition (0...7) cc »Bedingung (NZ...M) cc'»Bedingung (NZ...C) ari-Arithmetik (ADD...CP) rot.Rotation (RLC...SRL) blo»Block (I D IR DR)

u

Mikroprozessortechnik, Berlin 1 (1987) 11

Ou 5u Bu *u Ou Hu lu Ju

Tafel 1 Içterner chencode

Zei-

"u Nu Ou Pu «u Ru Su Tu "u Vu Wu Xu Zu Tafel 2 Das Register C wird als Flag-Register benutzt

Register Bit Bit Bit Bit Bit Bit Bit Bit

C 7 6 5 4 3 2 1 0

-

bytes DD bzw. FD abgesucht, dabei erhält nur das letzte Bedeutung. Danach wird nach den Vorbytes CB und ED gefragt, das Auftreten von ED macht die Vorbytes DD bzw. FD wirkungslos. Nun wird das nächste CodeByte mit Masken belegt (AND-Befehle) und dadurch der Befehl festgestellt. Danach wird noch lediglich die entsprechende Mnemonik aus der Tabelle herausgesucht und ausgegeben. Die Befehlsdarstellung weicht in einigen Fällen von der üblichen U880-Mnemonik /1/ ab, z. B. CP statt CMP und JP statt JMP. Die Darstellung der zusätzlichen Befehle entspricht der in 12/ angegebenen. Für den Befehl ED71 wurde die Mnemonik OTCLR verwendet. Bei Relativsprüngen wird die absolute Zieladresse angegeben. Der Disassembler besteht aus zwei wesentlichen Teilen, als erstes aus dem Tabellenteil und dann als zweites aus dem eigentlichen Programm. Innerhalb des Tabellenteils kommt als erstes die Maskentabelle und danach die Mnemoniktabelle. Im Programm selbst werden die Befehle auf die Grundbefehle zurückgeführt. Das betrifft vor allem die Arbeit mit den Indexregistern. Dazu werden im Register C (Tafel 2) Flags gesetzt, und mit ihnen wird dann die weitere Übersetzung gesteuert. Um Speicherplatz zu sparen, wird im Programm ein eigener Zeichensatz (Tafel 1) verwendet, dieser wird nur bei der Ausgabe in den ASCII-Satz umgerechnet. Will man eine andere Mnemonik verwenden, z. B. die Z80-Mnemonik, so muß dementsprechend die Mnemoniktabelle geändert werden. Soll beispielsweise JP cc,nn statt JPcc nn verwendet werden, so muß in der Tabelle D575223726 statt D55B2226 stehen. Dazu muß dann jedoch bei den Bedingungszeichen (NZ...M) das SPACE weggenommen werden (in der Tabelle ab BAC3). Eventuell kann man dann noch die Ausgabe von SPACE (bei BC3E) durch einen Tabulator ersetzen.

1-CB-Befehl + Vorbyte DD/PD 1»(IX+d)/(IY+d) bereits aufgetreten

1-DD/PD-Befehl 0»Torbyte DD 1»Vorbyte PD

341

¡ D i s a s s e m b l e r f u e r d e n KC85/2 OS! OURS: BEG: BA00 BA00 BA01 BA02 BA03 BA04 BA05 BA06 BA06 BA07 BA08 BA09 BA0A BA0B BA0C BA0D BA0E BA0F BA10 BA11 BA12 BA13 BA14 BA15 BA16 BA17 BA18 BA19

BA1A BA1B BA10 BA1D BA1E BA1F 3A20 BA21 BA22 BA23 BA24 BA25

BA26

6a 3A 39 06 66 35 FF 00 10 22 32 27 37 08 18 2A 3A 2? 3F 76 03 D3 E3 F3 C9 D9 E9 F9 DB EB PB OD FF CP 01 02 03 09 0A 0B 01 C5 PP

(EXAF

BA27 BA28 BA29 BA2A BA2B BA2C 00 BA2D 04 BA2E 05 06 BA30 BA31 02 BA32 BA33 C6

07

BA2P

BA34 BA35 BA35 BA36 BA37 BA38 BA39 BA3A BA3A BA3B BA3C BA3D BA3E BA3F BA40 BA41 BA42 BA43 BA44 BA45 BA46 BA47 BA48 BA49 BA4A BA4B BA4C BA4D BA4E BA4F BA50 BA51 BA52 BA53 BA54 BA55 BA56 BA57 BA58 BA59 BA5A BA5B BA5C BA5D BA5E BA5P BA60 BA60 BA62 BA65 BA68 BA6B BA6E BA71 BA74 BA77 BA79 BA7B BA7D BA7P

342

(WH

00 04

FF 00 00 40 80 00 FF 70 71 47 57 67 4D 4P 5F 6F FF CP 42 43 4A 4B PP 07 40 41 44 45 FF E7 A0 A1 A2 A3 TP D7 46 PP DP 56 5E PF 00 00 D769 DD505P D95A5B DA6079 D45968 CP5068 B32634 B31P34 9P37 B71P CC37 B74C A83729

(/3)

¡Betriebssystem P7I EQU 0P003H 0B7A0H EQU EQU 05D01H ;Anfangsadres8e/2 + 1 ORG 0BA00H ¡ A d r e s s e n f u e r Masken ;llnemonik-Nr. ED-Vorbyte - 1 DB 06AH DB 03AH ¡Maskenadresse ED-Vorbyte DB 039H ¡Mnemonik-Nr. o . V o r b y t e - 1 DB 00 6H ¡Maskenadresse o . Vorbyte ¡Mnemonik-Nr. CB-Vorbyte - 1 DB 066H DB 035H ¡Maskenadresse CB-Vorbyte ( M a s k e n t a b e l l e ohne V o r b y t e DB 0PPH ¡MaBke ;N0P DB 000H -¡DJNZ e DB 010H ¡LD ( n n ) , H L DB 022H DB 032H ¡LD ( n n ) , A DB 027H ¡DAA 037H ¡SCP DB DB 008H ;JR e DB 018H DB 02AH ¡LD H L , ( n n ) ¡LD A , ( n n ) DB 03AH DB 02PH [CPL DB 03PH ¡OCP DB 076H ¡HALT DB 00 3H ¡ J P nn DB 0D3H ¡OUT n ¡EX ( S P ) , H L DB 0E3H ¡DI DB 0F3H ;HET DB 0C9H DB 0D9H ¡EXX 0E9H ¡JP (HL) DB DB 0P9H |LD SP,HL ¡IN n DB 0DBH DB 0EBH ¡EX DE,HL DB 0FBH ¡EI 0ODH ¡CALL nn DB ¡Ende-Zeichen DB 0FPH DB ¡Maske 0CPH DB 001H ;LD d d , n n DB 002H ¡LD ( d d ) , A DB 00 3H ¡ I N C dd DB 009H ¡ADD H L , d d ¡LD A , ( d d ) DB 00 AH ¡DEC dd DB 00 BH DB 0C1H ¡POP qq 0G5H ¡PUSH qq DB ¡Ende-Zeichen DB 0PPH DB 0G7H ¡Maske ¡JRcc' e DB W4H DB ¡INO r DB W5H ¡DEC r ¡LD r , n DB 006H DB 0C0H ¡Ree 0C2H ¡ J P c c nn DB ¡CAcc nn DB 0O4H DB ¡ADD n . . . OP n 0C6H

BMN3:

DB 0PPH ¡Ende-Zeichen ¡ M a s k e n t a b e l l e ohne V o r b y t e / CB-Vorbyte DB 0C0H (Maske DB 000H ¡ R L C A . . . H R A /RLC r : SRL r " DB 040H ILD r . r ' /BIT b, DB 080H ¡ADD r : . C P r/RES b . V DB 0C0H ¡RST0...RST7/SET b, V ¡Maskentabelle ED-Vorbyte DB 0FFH ¡Maske DB 070H ¡INF DB 071H ¡OTCLR DB ;LD I , A 047H DB 057H ¡LD A . I DB 067H ¡RHD DB 04DH (RETI DB 04ÍH ¡LD R,A DB 05PH • LD A . R 06PH DB (RLD 0PPH ¡Ende-Zeichen DB DB 0CPH (Maske DB 042H ¡SBC H L . d d DB ¡LD ( n n ) , d d 04 3H DB 04AH IADC H L . d d DB 04BH iLD d d . ( n n ) tEnde-Zeichen DB 0PPH DB 0C7H ¡Maske DB ¡IN r 040H DB 041H ¡OUT r DB 044H }NEG ¡RETN DB 04 5H ¡Ende-Zeichen DB 0FFH DB 0E7H ¡Maske DB 0A0H ILDI/LDIR/LDD/LDDR DB 0A1H ¡CPI/CPIR/CPD/CPDR DB 0A2H (INI/INIR/IND/INDR DB 0A3H ¡OTI/OTIR/OTD/OTDR ¡Ende-Zeichen DB 0FFH DB ¡Maske 0D7H DB 04 6H ¡IM0 ¡Ende-Zeichen DB 0FPH DB 0DFH ¡Maske ;IM1 DB 056H 05BH ¡IM2 DB ¡Ende-Zeichen DB 0PPH DB 000H ¡Maske DB 000H ;NOP ¡Macro - T a b e l l e 0D7H.69H (La, DB (00) 0DDH.50H.5PH ¡RET DB (01) 0D9H.5AH.5BH ¡NOP DB (02) 0DAH.60H.79H ¡OUT^j DB (03) DB 0D4H.59H.68H ¡INO,. (04) 0CPH.50H.68H ¡DEC U DB (05) ¡(nn) (06) DB 0B3H, 26h, DB 0B3H, 1PH.34H ¡(dd) (07) (08) DB 09PH. 37H ¡dd, 0B7H 1PH ¡,dd DB (09) 0OOH.37H ¡A, (0A) DB DB 0B7H.4CH ¡,A (0B) (0C) DB 0A8H, 37H.29H ¡b.r"

34H

BA82 BAS5 BA88 BA8B BA8E BA91 BA93 BA95 BA97 BA9S BA9A BA9B BA9D BA9E BAA0 BAA2 BAA4 BAA7 BAAA BAAC BAAE BAB1 BAB4 BAB8 BABB BABC BABD BABE BABF BAO0 BA01 BAC2 BAC3 BAC5 BA06 BAC8 BAC9 BACB BAOD BAOE BAOF BAD0 BAD1 BAD3 BAD5 BADA BADA BADA BADB BAE0 BAE3 BAE6 BAE9 BAEC BAEF BAP2 BAF5 BAF8

CC4P69 CC4P68 DE6067 DE4D68 CC5969 E313 DA77 CE75 96 CD4E 98 CP50 9A D357 CC51 DE5B DD574E DD5D4E DD57 DD5D DE574C DE5D40 DE574C54 DE5D57 CD CE CP D0 D3 D7 D8 CC D97P FF D968 E8 DB74 DB6A P5 F2 D4 CP D45D CP5D ?31A362534

BB02 BB05 BB07 BB0D BB0D BB0F BB10 BB13 BB16 BB19 BB1C BB22 BB22 BB24 BB29 BB2C BB2F BB31 BB34 BB37 BB39 BB3D BB42 BB46 BB48 BB4A BB4E BB50 BB54 BB58 BB5A BB5C BB60 BB62 BB66 BB66 BB6A BB6E BB73 BB78 BB78 BB7B BB80 BB83 BB86 BB89 BB8B BBSS BB91 BB93 BB96 BB99 BB9C BB9F BBA2 BBA4 BBA7 BBA9 BBAC BBAC

D57526 8325 D07D331C3409

82 CP55597P27 800609 80060B CF4C4C DE4E51 D0631B D57727 800806 800A06 CE5B57 CE4E51 BAFE D34C575F

BAFB

CF54 81 D06363 D57507 80081A D47325 D07D18375357 D054 CE4C577126 800826 80070B 841P 8D1A09 800A07 851P DB5A751E DB605E6D1E D55D2327 8421 8521 80213725 DD22 D55B2226 CE4C2226 9D25 A04O 80213729 9D29 DD5E5P2S A02B292A GD54790C DD50780O2A DE50790C2A D45951 DA5P4E575D 80540B 800A54 DD5D4P 8154 805D0B 800A54 DD00 901A09 800609 8E1A09 800806 D47321 8321 D95052 8159 D74P24 CE5324

DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB DB

0CCH.4FH.69H 0OCH.4FH.68H 0DEH,60H,67H 0DEH,4DH,68H 0CCH.59H.69H 0E3H,13H 0DAH.77H 0OEH.75H 096H 0CDH.4EH 098H 0CFH.50H 09AH 0D3H.57H 0COH.51H 0DBH.5BH 0DDH,57H,4EH 0DDH.5DH.4EH 0DDH.57H 0DDH.5DH 0DEH,57H,4CH 0DEH.5DH.4CH 0DEH,57H,4CH,54H 0DEH,5DH,57H 0CDH 0CEH 0CPH 0D0H 0D3H 0D7H 0D8H 00 OH 0D9H.7PH 0FPH 0D9H.68H 0E8H 0DBH.74H 0DBK.6AH 0F5H 0F2H 0D4H 0CFH 0D4H.5DH 0CFB,5DH 0B3H,1AH,36H,25H

(ADD., ¡ADO ISUBL (SBC^ lANI^ |X0I^

(0D) (0E) (0P) (10) (11) (12) (13) (14 ¡BC (15) IBO (16) IDE (17) ¡DE (18) ¡HL (19) ¡HL (1A) lAF (IB) ¡SP (1C) ¡RLC (1D) ¡RRO (IE) ¡RL (IP) ¡RR (20) ISLA (21) ISRA (22) ¡SLAI (23) ISRL (24) |B (25) IC (26) ¡D (27) IE (28) IH (29) (2A) |L (2B) ¡A (2C) (2D) (2E) iÑCtj (2F) ¡C„ (30) (31) ¡P£ (32) (33) (34) (35) |D (36) (37) ¡DR (38) 34H i ( I X + d ) b z w . J(lY+d) (39) ¡ M n e m o n i k - T a b e l l e ohne V o r b y t e DB 082H ¡NOP (3A) DB (3B) 0 O P H , 5 5 H , 5 9 H , 7 P H , 2 7 H ¡DJNZ e 080H,06H,09H |LD ( n n ) , H L DB (3C) DB 080H.06H.0BH ILD ( n n ) , A (3D) DB 0CFH,4CH,4CH ¡DAA (3E) 0DEH,4EH,51H ¡SOF DB (3F) DB 0D0H.63H,1BH ¡EXAF (40) DB 0D5H.77H.27H IJR e (41) DB 080Ht08Ht06H ¡LD HL, ( n n ) (42) ;LD A , ( n n ) DB 080H.0AH.06H (43) DB 0CEH,5BH,57H ¡OPL (44) DB 0CEH.4EH.51H ICCP (45) (46) 0 D 3 H , 4 C H , 5 7 H , 5 P H ¡HALT DB

¡oC

¡M

¡Pf" ¡r" ¡IR

DB DB DB

0D5H.75H.26H ¡ J P nn (47) 083H.25H ¡OUT n (48) 0 D 0 H . 7 D H . 3 3 H , I C H ,>34H.09H IEX ( S P ) , H L (49) DB 0CPH,54H ¡DI (4A) DB 081H ¡RET (4B) DB 0D0H,63H,63H IBXX (40) DB 0D5H.75H.07H ¡JP ( H L ) (4D) DB 080H.08H,1AH ¡LD SP,HL (4E) DB 0D4H.73H.25H ¡IN n (4P) DB 0D0H.7DH,18H.37H,,53H,57H ¡EX DE, HL (50) DB 0D0H,*54H ¡El (51) DB 0 C E H , 4 C H . 5 7 H . 7 1 H . 2 6 H ¡CALL nn ( 5 2 ) DB 080H.08H.26H ¡LD d d , n n (53) DB 080H.07H.0BH ¡LD ( d d ) , A (54) DB 084H.1PH ¡ I N C dd (55) DB 08DH,1AH.09H ¡ADD H L . d d (56) DB 080H.0AH.07H ¡LD A , ( d d ) (57) DB 085H.1PH ¡DE0 dd (58) DB 0DBH,5AH.75H, 1EH ¡POP qq (59) DB 0DBH,60H,5EH,6DH,,1EH ¡PUSH qq ( 5 A ) DB 0D5H,5DH,23H.27H ¡ J R c c * e (5B) DB 084H.21H ¡INC r (5C) DB 085H.21H ¡DEC r (5D) DB 0 8 0 H . 2 1 H . 3 7 H . 2 5 H ¡LD r , n (5E) DB 0DDH.22H ¡Ree (5P) DB 0 D 5 H .5 BH .2 2 H .2 6 H ¡ J P c c nn (60) DB 0CEH,40H,22H,26H ¡CAcc nn (61) DB 09DH.25H ¡ADD n . . . O P n ( 6 2 ) DB 0A0H.4CH ¡RLCA...RRA (63) DB 0 8 0 H . 2 1 H . 3 7 H . 2 9 H ¡LD r , r ' (64) DB 09DH.29H ¡ADD r ' . C P r '' ( 6 5 ) DB 0DDH.5EH.5PH.23H ¡ R S T 0 . . . R S T 7 ( 6 6 ) ¡Mnemonik-Tabelle CB-Vorbyte DB 0A0H.2BH.29H.2AH ¡RLC r . S R L r " ( 6 7 ) DB 0ODH,54H,79H,0CH ( B I T b , r ' (68) DB 0DDH.50H.78H.0CH.2AH ¡RES b . r ' ( 6 9 ) DB 0DEH.50H.79H.0CH,2AH ¡SET b . r ' (6a) ¡Mnemonik-Tabelle ED-Vorbyte DB 0D4H.59H.51H (6b) DB 0 D AH .5 P H .4 EH .5 7 H . 5DH ¡OTCLR (6C) DB 080H.54H.0BH (LD I . A (6D) DB 080H.0AH.54H ¡LD A . I (6E) DB 0DDH,5DH,4FH (RRD (6p) DB 081H.54H ¡RETI (70) DB 080H.5DH.0BH ¡LD R,A (71) DB 080H.0AH.54H ¡LD A . R (72) DB 0DDH.00H ¡RLD (73) DB 090H.1AH.09H ¡SBG HL.dd (74) DB 080H.06H.09H ¡LD ( n n ) . d d (75) DB 08EH,1AH.09H (ADO H L , d d (76) DB 080H.08H.06H ¡LD d d , ( n n ) (77) 0D4H.73H.21H ¡IN r (78) 083H.21H ¡OUT r (79) DB 0D9H.50H.52H ¡NEG (7A) DB 081H.59H DB 0D7H.4PH.24H (70) DB 0CEH.5BH.24H ¡CPI/CPIR

¡INF

DB DB

¡RETN ¡LDI/LDIR ¡LDD/LDDR

(7B)

Mikroprozessortechnik, Berlin 1 (1987) 11

BBAF BBAP BBB2 BBB2 BBB5 BBB5 BBB8 BBBB BBBE BBBP BBB? BBC1 BBC4 BBC6 BBC7 BBC9 BBCB BBCD BBCE BBD0 BBD2 BBD3 BBD5 BBD7 BBD9 BBDB BBDD BBDF BBE1 BBE2 BBE4 BBE6 BBB8 BBE9 BBEB BBEC BBED BBEE BBS? BBF0 BBP1 EBP? BBP3 BBP5 BBP6 BBP7 BBP9 BBPB BBFC BBPE BC00 BC01 BC02 BC03 BC05 BC06 BC07 BC08 BC0A BC0B

D45924

DB

DA5P24

DB

D4583B D4583C D4583D 82 PECB 21BL15J2 201E 20 CB49 2820 CBP9 13 1S1B is00 1A FEDD 2004 0502 1806 PEPD 20E0 0E03 13 18EE FBED 2004 2D 0E00 13 29 46 23 6E 1A A6 23 PD6P 7E 23 PEP? 28P5 04 PDBD 20P5 05 1A 13 PD6P 0P 0F 0P E607 47 F1

BC0C 185A BC0! 1A BC0F 13 BC10 6? BC11 2600 BC13 PS80 BC15 3801 BC17 25 BC18 19 BC19 7C BC1A 0D28BC BC1D 7D BC1E 1808 BC20 1A B021 13 BC22 2E1D BC24 E5 BC25 6? BC26 1A BC27 13 BC28 CD03F0 BC2B 1C BC2C C9 BC2D 063B BC2F PE2B BC31 3812 BC33 D60B B035 FE5B BC37 3807 BC39 D61A BC3B OD40BC BC3E 3F?0~ BC40 C.03P0 BC43 T4 BC44 J9 BC45 E5 BC46 21D6BC BC49 B5 BC4A PB1D BC4C 381A BC4E PE25 BC50 302A B052 PE1P BC54 380C BC56 2002 BC58 CBC0 BC5A 3D BC5B PE22 BC5D 3803 BC5P CB90 BC61 3D BC62 87 BC63 87 BC64 87 BC65 D6DB BC67 80 BC68 CB49 BC6A 28 3E BC6C PE1A BC6E 2027

NIND:

DIS: BLE:

HDD: WE:

NCB ZBYTE: NEDt SUCH: CMP:

¡CPD/CPDR ;INI/INIR ;IND/INDR jOTI/OTIR ¡OTD/OTDR ;IH0 :IM1 ;IH2 ;NOP

(7D) (7E)

0DAH.5FH,24H (7P) DB 0D4H.58H, 3BH (80) DB 0D4H.58H * 3CH (81) DB 0D4H.58H.3DH (82) DB 082H (83) ¡Nukleua 0P 0CBH ¡Vorbyte CB ? LD HI,BEO ¡Anfangaadrease/2 + 1 JRNZ NCB INO L ¡CB-Maakentabelle BIT 1.C ¡DD/FD 7 JRZ ZBYTE SET 7,C jCB + DD/PD me DE ¡Uebersprlnge Ablage JS ZBYTE LD C,00H ;Start Nukleus LD A,(DE) ¡hole Byte OP 0DDH ;Vorbyte DD 7 JRNZ NDD LD C.02H ;Plag-Reg* auf DD-Vorbyte JR WE CP 0PDH ¡Vorbyte PD ? JRNZ NIND LD C.03H ¡Flag-Reg. auf PD-Vorbyte DE INC ¡Zeiger erboehen JR BLE CP 0EDH ¡Vorbyte ED 7 JRNZ NED DEC L ;ED-Maakentabelle LD C.00H ¡DD/PD rueckgaenglg ¡Zeiger auf Code-Byte INC DE ADD HL.HL LD B,M ¡Mnemonik-Nr. - 1 HL INC LD L,M ¡Maskenadresse LD A,(DE) ¡hole Code-Byte M AND ¡Maske INC HL LD LY,A LD A,M ¡Befehl In Teiltabelle ¡enthalten INC HL OP 0FFH ¡Ende-Zeichen Teiltabelle ? JRZ SUCH INC B ¡erhoehe Mnemonik-Nr. OP LY ¡Befehl gefunden ? CMP JRNZ ¡aonat «elterauchen PUSH BC LD A,(DE) ¡hole Code-Byte ¡Zeiger auf naechates Byte INC DE LD LY,A ¡Code-Byte apelchem RRCA RBC A RRCA AND 07H LD B,A ¡Operandenteil speichern ;Unemonik-Nr. im A-Register POP AP

JR LD INC LD LD CP JRC DEC NCOR: ADD LD CALL PLHi LD JR NN: LD INC LD PUSH LD N: LD INC PAH: CALL DB RET B: ADD PRIA: CP JRC SUB CP JRC SUB CALL LD FRA: CALL DB RET MACRO: PUSH LD PUSH CP JRC CP JRNC CP JRC JRNZ SET M1 : DEC CP JRC RES DEC •2: ADD ADD ADD SUB ADD PLA; BIT JRZ OP JRNZ E:

0D4H,59H ,24H

PLA A,(DE) DE L,A H,00H 80H NCOR H HL.DI A.H PAH A,L PAH A,(DE) SE L, 1DH HL L,A A,(DE) DE OS 1CH 3BH 2BH •ACRO 0BH 5BH PRA 1AH PRA A.20H OS 24H HL HL.RET HL 1DH PLA 25H MA 1PH M2 Ml 0, B A 22H M2 2,B A A A A 0DBH B

1,0 NM 1AH NHL

Mikroprozessortechnik, Berlin 1 (1987) 11

¡Adresaumreohnung fuer ¡Relativapruenge ¡Sprung vor o. surueck 7 ¡rueckwaerts ¡aba. Adresse

¡16-Blt-Zahl ¡LOW(FLH) ¡8-Blt-Zahl ¡Ausgabe von Reg. A in HEX ¡Bitposition (0...7) ¡internen Zeichencode in ¡ASCII-Code umwandeln und ¡ausgeben

¡SPACE ¡ASCII-Zeichen auageben

¡nur aus Tab. herauaauchen? ¡Macro-Programm anapringen?

BO70 BC72 BC75 BC76 BC7S BC7A BC7C BC7E BC7P BC80 BC81 BC83 BC84 BC86 BC88 BC8A BC8B BC8D BC8F BC90 B092 BC95 BC97

3E54 CD27BC — 79 E601 C663 18B3 C6B3 6P

LD CALL LD AND ADD JR ADD LD LD LD BIT JP JRNZ LD AND LD LD

XY: MA:

6E

78 CB79 E9 2015 PD7D E607 47 3E20 18D3 C8 3E37 CD2PBC 18EP PE2B BC99 200P BC9B 0BP1 BC9D 3E39 B09P CB79 BCA1 2807 BCA3 1B BCA4 1B BCA5 CDAABC BOAS 13 ~~ BCA9 C9 BCAA 30 BCAB 215PBA BOAE 23 ~ BCAP CB7E BCB1 28PB BCB3 3D BCB4 20P8 BCB6 7E BCB7 E67P BCB9 CD2PBC BCBC 23 BCBD CB7E BCBP 28P5 BCC1 7D BCC2 E6PE BCC4 PEC0 BCC6 00 BCC7 CB49 BCC9 08 BCCA CB71 BCCC C0 BCCD PD7D BCCF E6C7 BCD1 FE46 BCD 3 08 BCD4 189F BCD6 E1

BCD7 09 BCD8 B0D8 26 BCD9 20 BCDA 0E BCDB 2D BCDC 84 BCDD 8F BODE BCDE 7F7F BCE0 444953 BCE3 01 BCS4 3E10 BCE6 32A0B7 BCB9 EB BOBA D5 BCEB CDD0BB BCEE El BCEF 3E0D BCF1 CD408C BCF4 OD03F0 BCF7 1A BCF8 EB BCF9 ED52 BCFB 45 BCFC EB BCPD 7E BOFE 23 BOPF CD28BS BD02 10F9 BD04 CD03F0 BD07 2C BD08 CD03P0 BD0B 16 BD0C FE03 BD0E C8 BD0F 18D3 BD11

RI RA:

JR

DZ

R1 :

LD CALL JR CP

NHL:

JRNZ SET

M:

LD

BIT JRZ DEC DEC CALL INO RET INO LD INC BIT JRZ DEC JRNZ LD AND CALL INC

NM: SCH:

PRST:

Bild 1 Assemblerlisting

RA

2BH NI)

6,C A.39H 7,C

NU DE DE NM DE

¡8-Blt-Regiater fuer ¡CB-Befehle ¡Komma ;M 7 ¡(IX+d)/(IY+d) aufgetreten I(IX+d)/(IY+d) auageben ¡OB + DD/PD ? ¡Zeiger auf Ablage ¡Zeiger wieder surueck

A HL,BUN! ¡Zeichentabelle HL ¡Zeichenkette suchen 7,M SCH

¡gefunden 7

BIT

AND CP

0FEH 0C0H

RZ BIT RNZ LD AND OP RZ JR POP

PHEX:

A.37H PRIA

¡CB + DD/PD 7 ¡Ansprung ¡8-Blt-Regiater ¡Code-Byte ¡Bit 012

¡Zeichenkette auageben

BIT

MAIN:

A.LY 07H B.A A.20H 112

¡Maero-UP-Anap rung ¡B3H.L0W(MAC)-25H ¡Adreaae aua Tabelle

A, M 7PH PRIA HL 7.M

RNZ

MAC:

II

¡Buohataben I ¡ausgeben ¡X/Y auageben

A

JRZ LD

RET:

A.54H PRIA A,0 01H 63H PRIA 0B3H L,A L,M A.B 7,0 (HL)

SCH

PRST A,L

1,0 6, C A,LY 0C7H 46H XY HL

¡Ende Zeichenkette 7 ¡letztes Zeichen H- oder ¡L-Register 7 ¡DD/PD 7 ¡(IX+d)/(IY+d) bereits ¡aufgetreten 7 ¡Code-Byte ¡LD r, (IX+d)/(IY+d) 7 ¡X/Y anhaengen

RET ¡Macro-Ansprungtabelle ¡LOW(N) DB 26H ¡LOW(NN) DB 20H DB 0BH |L0W(E) DB 2DH ¡LOW(B) ¡LOTI(R) DB 84H ¡LOH(R1) DB 8FH ¡Hauptprogramm ¡Prolog 7F7PH DA DB "DIS" ¡Epilog DB 01H A.10H LD LD (CURS) A EX DE,HL PUSH DE ¡Mnemonik auageben CALL DIS POP HL ¡alte Adresse LD A,0DH ¡CR CALL PRA CALL OS DB 1AH ¡HL in HEX + SPACE ausgeben DE,HL EX SBC HL,DE LD B,L ¡Laenge dea Befehls EX DE,HL A,M ¡HEX-Code des Befehls LD HL ¡auageben INC PAH ¡A in HEX ausgeben CALL DJNZ PHEX CALL OS DB 2CH ¡CRLF CALL OS ¡Tastatur abfragen 16H DB ¡"Break" 7 03H OP RZ MAIN ¡weiter JR ¡Ende

des

Disassemblers

¡Macro umrechnen und aus ¡Tabelle hersussuchsn

Literatur

¡Zeichenkette aus Tabelle ¡herauaauchen ¡Register IX/IY 7

/1/ Kieser, H.; Meder, M.: Mikroprozessortechnik. 3. Auflage, Berlin: VEB Verlag Technik 1985 121 Maudrich, G.: Weitere U-880-Befehle. Radio, Ferns., Elektron., Berlin 32 (1983) 11, S. 726 /3/ Thiel, W.: Befehlsstruktur des U880. Radio, Ferns., Elektron., Berlin 33 (1984) 7, S. 419—421

343

Entwurf von Steuerungssystemen für die flexible Fertigung Rolf Hiersemann Forschungszentrum des Werkzeugmaschinenbaues im VEB Werkzeugmaschinenkombinat „Fritz Heckert" Karl-Marx-Stadt 1. Entwurfsphasen Die Steuerungsentwicklung kann in die Phasen 1. 2. 3. 4.

Problemanalyse Spezifikation Entwurf und Implementierung,

die sequentiell und teilweise iterativ ablaufen, unterteilt werden. Während in der Probiemanaiyse bisher vorrangig informale und verbale Darstellungen zur Anforderungsspezifikation (Pflichtenheft) wie - technologische Prozeßmodelle, - Steuerungs- und Bedienkonzeptionen und - Auflistungen von Nebenbedingungen angewandt wurden, ist in 7 /1/ ein Trend zu formalen Darstellungen zu erkennen. Auf der Grundlage der Aussagen des Pflichtenheftes sind in der Spezifikationsphase die Grobstruktur des Steuerungssystems, der Einzelsteuerungen und deren funktionale Komplexe sowie die Art der Kommunikation zwischen den Einzelsteuerungen zu entwerfen. Prinzipiell sollte die Aufgabenaufteilung auf eine Leitebene und eine prozeßnahe Ebene (industrielle Steuerungen) erfolgen. Aufgabenspektrum und -umfang bestimmen dann Art, Anzahl und Ausbaustufe der einzusetzenden Steuerungen. In der Phase Entwurf sind die Funktionen der einzelnen Steuerungskomponenten zu entwerfen. Dabei ist eine durchgängige hierarchische Gliederung anzustreben. Bei der Gliederung in Funktionsbausteine (FB) ist die Art und Weise der Wechselbziehungen zwischen diesen entscheidend. Anzustreben, jedoch praktisch kaum realisierbar, ist die reine Baumstruktur, bei der FB niederer Hierarchieebenen nur von einem FB der direkt

- Die Schnittstellen zwischen den FB sind zu minimieren. - Zeitkritische Abläufe und parallele Prozesse sind in Abhängigkeit vom angewendeten Entwurfsverfahren auf einzelne FB abzubilden.

übergeordneten Ebene benutzt werden können. Horizontale Wechselbeziehungen (auf gleicher Ebene) von FB sollten generell vermieden werden. Praktikabel sind Strukturen nach Bild 1, bei denen einige FB als Ressourcen übergeordneter Hierarchieebenen fungieren. Prinzipiell ist eine Einteilung der FB in eine Koordinations- und eine Modulebene anzustreben. Die genaue Strukturierung und Unterteilung in verschiedene Ebenen ist das Ergebnis der Anwendung von Verfeinerungs(top-down) und Vergröberungsstrategie (bottom-up) im Entwurfsprozeß: Praktikabel ist die Anwendung beider Strategien, das heißt, nach dem Entwerfen von Elementarfunktionen werden diese zu Abläufen (Teilmoduln) vergröbert, und ein grob entworfener Koordinator wird in Richtung Teilmoduln verfeinert. Dieses Vorgehen wird so oft wiederholt, bis nach mehreren Anläufen die letztendlich gültige Struktur und Funktion geschaffen wurde. Dabei sollten folgende Gesichtspunkte beachtet werden: - Konstruktiv-technologische Zusammenhänge sind in entsprechenden Funktionsbausteinen widerzuspiegeln. Bild 2 Physische Strukturen von Kommunikationssteuerungen bei serieller und paralleler Kopplung

Bild 1 Zusammenhang Modularisierungsstrategien und Hierarchie, unterteilt in Funktionsbausteine (FB). FB 21, 31, 41, 22, 23 und 44 sind Moduln, FB 32, 42 und 43 sind Ressourcen des Programmsystem.

Besondere Beachtung ist in der Entwurfsphase dem frühzeitigen Test einzelner Funktionen zu widmen, um funktionale und logische Fehler zu orten und zu beheben. Die Implementierung stellt die Umsetzung der entworfenen Funktionen in die der Steuerung verständliche Sprache und deren Inbetriebnahme dar. In dieser Phase sind Wiederholungen der Entwurfsphasen 2 bis 4 oft unumgänglich, um eine optimale Steuerungsfunktion zu erreichen. 2. Entwurf der Kommunikationssteuerung Für den Zusammenschluß von Einzelsteuerungen zu Verbundsystemen existiert eine Reihe von Möglichkeiten. Prinzipiell ist die Verbindungsart in serielle und parallele Kopplung und die Speicherkopplung (Nutzung gemeinsamer externer Speicher oder Arbeitsspeicherbereiche) unterteilbar, wobei folgende physische Strukturen realisierbar sind (vgl. Bild 2): • parallele Kopplung - Punkt-zu-Punkt-(Kanal-Kanal-) Kopplung (direkt, Adapter) - parallele Busse Kopplungsart

I

serielle Kopplung (über S 10) -Punkt-zu-Punkt-Koppiuna •3tern direkt

¿Kh

• Stern über Vorrechner (Multiplexer, Konzentratorj

ma

dïïb

parallele Kopplung (über PIO) -Punkt-zu-Punkt-Kopptunq (Kanal-Kanal- Kopplung) •direkt

'Adapter damit sind folgende realisierbar:

Strukturen

• Stern

• Ring

•Kette(offen\• Schleife

schlossen) j H w r f f l w J f f f

zentrale„ Steuerung

.Hi

duln

- serielle

-parallele Busse

Busse

LO A ¿KV z »ET ,« LO LO •:HOÜt> LO

LO LO LO

-iL,H DUT

0E,vS?v5u EC.^

ÎT* ÙV-J cçr

ù, u NI i

i-

LO

•_0

—..•"Ov T

**

BF»s rï: 22BES" 2rv5 "Er"

-»EN-JE . AvS 3. HERKEN IN PROÖR. HEUtE »U55. EINRHGEN »-TASTEN ^EüE BEL.

RET :LI va^EUS®^ i RL?ECÀSE"EN •jDvDOÛEFM 'LISTGN'

B^ 3" = - 3i BF3-2 3E0; = " 3E

sz

LI5T 3

S£T

=r

= re = : 30000 5r :r E~ 3E2C c B~5* 3255s c~50 29

CS 2 SQi

?!?E

S2 !

:

l

15 T ' ->E*vt

W tr

, •jC'-. i - i - ,-L

5

fcjr.w

.

HERt S£I*C - «

>

jR C? J*

2,Ni

EOO •-D '_0 srr

• -2

Z.N2

LI5"OK" - •«'JSC-.ML7' =«DRE55E = 5£T EINTRAGE*«

«.OC3"

^ r o ^ - E ^BELEOvNCzr Bild 1 Assemblerlisting zum Programm Listensteuerung

Druckertreibern, mit allen Druckertreibern zusammen, die über den USER-Kanal 2 arbeiten. Das Programm kann auch auf andere Speicherbereiche übersetzt werden, es ist jedoch nur im Bereich BAOOH bis BFFFFH nutzbar. K.-D. Kirves

"00

UC^-iO».

Literatur IM Domschke, W.: Das Softwarekonzept des KC 85/3. Mikroprozessortechnik, Berlin 1 (1987) 3, S. 89-91 121 Kirves, K.-D.: Modul M027 Development - Assemblerprogrammierung für KC 85/3. Mikroprozessortechnik, Berlin 1 (1987) 8, S. 247-249

Bildausschnittverdopplung Das vorgestellte Maschinenprogramm verdoppelt beim KC 85/(/3) die Zeilen 0 bis 15 und die Spalten 0 bis 15. Das Programm wird auf den Adressen 0000 bis 0103 abgelegt. Da dieser Speicherbereich nur bedingt frei ist, kann es passieren, daß Adressen überschrieben werden. Danach ist das Programm zu korrigieren oder neu einzuladen. Um das Programm nicht unnötig zu komplizieren, wurde auf die Spalten 16 bis 19 verzichtet. Das Programm wird aus dem BASIC-Modus über CALL 0 aufgerufen. Es ist von Vorteil, das maximale Fenster einzustellen. Achtung! Das Programm belegt während der Abarbeitung jeweils 16 Adressen beginnend bei BAOO, BBOO, BCOO, BDOO und BEOO. Für einen Test kann das Programm in Bild 2 genutzt werden. E.Feige

ADR. OOOÜ •010 0020 0030 0040 0050 0060 0070 OOBO 0090 OOAO OOBO OOCO OODO OOEO OOFO 0100

CD DB 16 2C 2C IC uu 06 CA 3F 5E 23

1D

CD FO BO 20

18 OE 8F 15 1D 10 f-D 10 87 CB DD DD 1D 1B F3 00 20

FO 10 IE 72 73 F8 21 7E 00 3F 73 23 1D FO FC 80 00

21 ED 9F 2C 2C 06 80 08 OC CB 00 FD 1D C9 FF 00 00

D4 BO 06 72 IC 10 00 7E C3 3F DD 23 C3 00 EO 60

00 11 08 2C 10 OE DD CB 7F OE 72 FD CA 03 60 60

11 00 D5 14 FB 00 19 BF 00 00 Ol 23 00 OC EO 40

00 BD CS BD 1D 26 FD CB E5 B9 FD 10 C3 OF 60 40

BA OE 21 10 1D BE 19 B7 26 CA 73 B9 26 30 CO 20

Ol 10 00 F3 06 69 25 CB BA 9F 00 Cl 00 33 40 20

10 ED BC 21 04 56 56 AF 69 00 FD 10 10 3C CO 00

00 BO 06 00 73 25 25 CP 56 on 72 9B FP 3F 40 00

ED DD 04 PF 2C 5F 5E A7 •8

r.r.

•i Cl FD nn AO 60

en 1 1 0 0 FS FD E5 72 73 1D 2C DD 7\ 0 0 EB on C5 OF nn B9 CP 3F CB 97 nn 69 El 73 DD Dl 15 15 Fl DD El n^: nn CF 20 AO 2 0 60 40 40

Bildausschnitt-

17 ?r. rih •4

Bild 2

Testprogramm

TEST-PROGRAMM IG 20 30 40 50 60

WINDOW 0,31,0,39:CLS FOR X=0 TO 25 ?AT(0,0); CHRiE*vt

W tr

, •jC'-. i - i - ,-L

5

fcjr.w

.

HERt S£I*C - «

>

jR C? J*

2,Ni

EOO •-D '_0 srr

• -2

Z.N2

LI5"OK" - •«'JSC-.ML7' =«DRE55E = 5£T EINTRAGE*«

«.OC3"

^ r o ^ - E ^BELEOvNCzr Bild 1 Assemblerlisting zum Programm Listensteuerung

Druckertreibern, mit allen Druckertreibern zusammen, die über den USER-Kanal 2 arbeiten. Das Programm kann auch auf andere Speicherbereiche übersetzt werden, es ist jedoch nur im Bereich BAOOH bis BFFFFH nutzbar. K.-D. Kirves

"00

UC^-iO».

Literatur IM Domschke, W.: Das Softwarekonzept des KC 85/3. Mikroprozessortechnik, Berlin 1 (1987) 3, S. 89-91 121 Kirves, K.-D.: Modul M027 Development - Assemblerprogrammierung für KC 85/3. Mikroprozessortechnik, Berlin 1 (1987) 8, S. 247-249

ISSN 0232-2892 Mikroprozessortechnik, Berlin 1 (1987) 11 S. 321-352

Arbeitsplatz für Konstruktion und Technologie A 6454 Der Arbeitsplatz robotron A 6454 ist ein interaktives grafisches System zur Rationalisierung der Entwurfs-, Konstruktions-, Technologie-, Fertigungs- und Projektierungsaufgaben mit einem oder mehreren Arbeitsplätzen sowie Kopplung an überoder nebengeordnete Systeme. Das modular aufgebaute CAD/CAM-System bietet ein breites Spektrum von Anwendungsmöglichkeiten: - Rechnergestütztes Herstellen von Zeichnungen - Rechnergestütztes Programmieren von Maschinen und Anlagen - Rechnergestütztes Ausarbeiten von APSK, Stücklisten, Arbeitsunterweisungen für Maschinenbedienung - Berechnen von Einzelteilen - Rechnergestützte Arbeitsplätze für Konstrukteure und Technologen - Rationalisierung der Projektierung und Offertentätigkeit im Großmaschinen- und Anlagenbau - Entwicklung von Gleichstrom-Stellmotoren - Entwicklung und Herstellung von Leiterplatten - Projektierung von Energieverbundnetzen

robotron VEB Robotron-Vertrieb Berlin Mohrenstraße 62 Berlin DDR-1080 Exporteur: Robotron Export-Import Volkseigener Außenhandelsbetrieb der Deutschen Demokratischen Republik Allee der Kosmonauten 24 Berlin DDR-1140

DEWMG LEIPZIG