DE2262725A1 - Programmierbarer elektronischer rechner - Google Patents

Programmierbarer elektronischer rechner

Info

Publication number
DE2262725A1
DE2262725A1 DE2262725A DE2262725A DE2262725A1 DE 2262725 A1 DE2262725 A1 DE 2262725A1 DE 2262725 A DE2262725 A DE 2262725A DE 2262725 A DE2262725 A DE 2262725A DE 2262725 A1 DE2262725 A1 DE 2262725A1
Authority
DE
Germany
Prior art keywords
program
register
key
computer
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE2262725A
Other languages
English (en)
Inventor
Wayne F Covington
Rex L James
Ivar W Larson
Jun Emil E Olander
Homer C Russell
Jack M Walden
Robert E Watson
Jun Fred Wenninger
Francis J Yockey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE2262725A1 publication Critical patent/DE2262725A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/02Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/02Digital computers in general; Data processing equipment in general manually operated with input through keyboard and computation using a built-in program, e.g. pocket calculators
    • G06F15/0225User interface arrangements, e.g. keyboard, display; Interfaces to other computer systems
    • G06F15/0233User interface arrangements, e.g. keyboard, display; Interfaces to other computer systems with printing provisions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Calculators And Similar Devices (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Digital Computer Display Output (AREA)
  • Document Processing Apparatus (AREA)
  • Complex Calculations (AREA)
  • Debugging And Monitoring (AREA)

Description

Hewlett-Packard Company, 1501 Page Mill Road, Palo Alto
California,USA
PROGRAMMIERBARER ELEKTRONISCHER RECHNER
Die Erfindung bezieht sich auf einen programmierbaren elektronischen Rechner mit einem Eingabe-Tastenfeld zum Eintasten alpha-numerischer Informationen in den Rechner, mit einem Eingabe-Speicherregister zum Zwischenspeichern in den Rechner eingegebener alpha-numerischer Informationen, mit einem Schreib-Lese-Speicher zum Abspeichern vom Eingabe-Speicherregister übertragener alpha-numerischer Informationen, mit einer Logik-Einheit zum Festlegen einer Anzahl Programme und Unterprogramme, welche vom Rechner beim Verarbeiten und Speichern in das Eingabe-Speicherregister eingegebener alpha-numerischer Informationen durchgeführt werden sollen, mit einer Verarbeitungs-Einheit zum wahlweisen Durchführen eines oder mehrerer dieser Programme und Unterprogramme zum Zwecke des Verarbeitens und Speicherns in das Eingabe-Speicherregister eingegebener alpha-numerischer Informationen
309832/0343
Volkebenk Böblingen AG. Kto. 8 458 (DLZ 60 390 220) · Postscheck: Stuttgart 896 SS
und mit einer Ausgabe-Einheit zum Liefern einer Ausgangs-Anzeige der Resultate aus den vom Rechner verarbeiteten alpha-numerischen Informationen.
Die Erfindung betrifft allgemein einen programmierbaren Rechner, der sowohl mit Hilfe einer Tastenfeld-Eingabe-Einheit von Hand als auch automatisch von einem gespeicherten Programm gesteuert werden kann, welches über die Tastenfeld-Eingabe-Einheit oder einen externen Aufzeichnungsträger in den Rechner eingegeben worden ist.
Numerische Berechnungen können mit Hilfe eines Tischrechners, d.h. einer zweckorientierten tastengesteuerten Rechenmaschine, die programmierbar sein kann oder nicht, von Hand durchgeführt werden oder mit Hilfe eines Universalrechners. Die Lösung einer numerischen Aufgabe von Hand ist häufig sehr zeitraubend, und zwar in vielen Fällen in einem solchen Maße, daß sie eine unpraktische, kostspielige und wenig wirkungsvolle Verwendung der menschlichen Fähigkeiten darstellt, insbesondere, wenn andere Möglichkeiten für die Lösung der numerischen Aufgabe bestehen.
Für viele relativ einfache numerische Aufgaben können schon nichtprogrammierbare Rechner wirkungsvoller eingesetzt werden als manuelle Methoden. Die Tastenfeld-Bedienung und die hierfür erforderlichen Regeln sind bei diesen Rechnern in ihrer Struktur jedoch so trivial, daß für die Lösung
309832 /08 43
eines einigermaßen allgemeinen arithmetischen Problemes viele Tastenbetätigungen erforderlich sind. Viele weitere numerische Aufgaben können mit programmierbaren Rechnern in einer Geschwindigkeit gelöst werden, die einige hundertmal größer ist als diejenige von manuellen Rechenverfahren. Die bei solchen Rechnern der Tastenfeld-Bedienung zugrunde liegenden Regeln sind aber in ihrer Struktur immer noch relativ einfach, so daß viele Tasten-Betätigungen nötig werden, um eine allgemeinere arithmetische Aufgabe zu lösen.
Ein weiteres Grundproblem, das bei fast allen Tastenfeld-"Sprachen" auftritt, die bei den üblichen programmierbaren und nichtprogrammierbaren Tischrechnern verwendet werden, liegt darin, daß sie die Eigenheiten der "hardware" des Rechners also seines technischen Aufbaues, dem Benutzer bewußt werden lassen. So muß der Benutzer für gewöhnlich mit Daten-Bewegungen auf der Bauelemente-Stufe arbeiten, und muß z. B. sicherstellen, daß die Daten sich in bestimmten Speicherregistern befinden, bevor er die Operationen angeben darf., die mit den Daten durchgeführt werden sollen. Ihm werden noch weitere solche "housekeeping"-Funktionen zugemutet, also Arbeiten, die mit dem technischen Ablauf im Rechner zusammenhängen.
Bisher hatten programmierbare und nichtprogrammierbare Tischrechner für gewöhnlich sehr begrenzte Speicher, wodurch der Umfang der numerischen Aufgaben erheblich
309832/0843
eingeschränkt war, welche mit ihnen gelöst werden konnten. Wegen dieser erheblichen Einschränkungen waren die relativ einfache Struktur der Tastenfeld-Programmiersprachen dieser Tischrechner und die mit ihren Programmiersprachen verbundenen "housekeeping"-Anforderungen vergleichsweise geringfügige Nachteile. Mit den Fortschritten in der Technologie sind jedoch die Kosten der Speicher so weit gesunken, daß es wirtschaftlich vertretbar wurde, in programmierbaren Tischrechnern auch größere Speicher vorzusehen. Diese größeren Speicher ermöglichten es nun, immer größere Aufgaben mit programmierbaren Tischrechnern zu lösen. Dadurch aber gewannen die Nachteile der üblichen Programmiersprachen dieser Rechner an Gewicht und es entstand ein Bedarf nach Tastenfeld-Programmiersprachen einer höheren Stufe.
Zusätzlich zu den erwähnten Nachteilen besitzen die üblichen programmierbaren Tischrechner für gewöhnlich weniger Möglichkeiten und Flexibilität als sie für die Anforderungen vieler Benutzer benötigt werden. Beispielsweise können diese Rechner meist nicht in einfacher Weise erweitert und von dem Benutzer angepaßt werden, um den Umfang des Programmund Datenspeichers zu vergrößern oder spezielle Tastenfeld-Funktionen durchzuführen, die an den Bedürfnissen des Benutzers orientiert sind.
Bei einigen üblichen programmierbaren Rechnern kann ein in
309832/0843
dem Rechner gespeichertes Programm auf einem externen magnetischen Aufzeichnungsträger festgehalten und später von diesem wieder in den Rechner eingegeben werden. Die in diesen Rechnern gespeicherten Daten und Programme können jedoch für gewöhnlich nicht getrennt auf dem externen magnetischen Aufzeichnungsträger aufgezeichnet und dann später wieder getrennt von diesem in den Rechner zurückgebracht werden. Darüber hinaus besteht bei diesen Rechnern in der Regel keine Möglichkeit, ein Programm gegen unbeabsichtigte oder unbefugte Veränderungen zu sichern, wenn es auf dem externen magnetischen Aufzeichnungsträger gespeichert ist. Das Programm kann auch von jedem beliebigen · Benutzer kopiert oder in seinen einzelnen Programm-Schritten ausgeforscht werden, wenn es wieder in den Rechner eingegeben worden ist.
übliche programmierbare Tischrechner mit eingebauten Ausgabe-Sichtgeräten haben meist nicht die Möglichkeit einer alphabetischen Zeichendarstellung und können meist nur den Inhalt eines oder weniger ausgewählter Register wiedergeben. Sie sind daher im allgemeinen nicht in der Lage, eine Zeile aus ein oder mehreren alpha-numerischen Aussagen bestehende Zeile darzustellen oder eine alphabetische Nachricht, die zum Beispiel dafür verwendet kann, um den Benutzer über die Art und Weise zu informieren, wie er ihm unbekannte Programme verwenden kann. Derartige Möglichkeiten sind sehr nützlich für den Verwender, beispielsweise beim
309832/0843
Edieren oder Überarbeiten von Programmen und beim Vereinfachen ihrer Anwendung.
In ähnlicher Weise haben übliche programmierbare Tischrechner mit eingebautem Ausgabedrucker meist nur eine sehr begrenzte Alphabet-Schreibmöglichkeit mit einigen Wenigen ausgewählten Zeichen, die noch dazu auf bestimmte Spalten des Druckes beschränkt sind. Mit ihnen kann daher im allgemeinen kein für jedes in dem Rechner gespeicherte Programm typisches Merkzeichen ausgedruckt werden. Weiterhin können diese Drucker auch keine Kennzeichnungen für Eingabewerte und Ausgabewerte des Rechners ausdrucken oder Nachrichten für den Benutzer, die ihm sagen, wie er ein ihm unbekanntes Programm anwenden muß. Auch diese Möglichkeit wäre für den Benutzer sowohl beim Edieren als auch beim Vereinfachen von Programmen sehr nützlich.
Um einen programmierbaren Tischrechner wirtschaftlich zur Lösung vieler nicht-trivialer numerischer Aufgaben einsetzen zu können, müssen dem Benutzer Bedienungsbefehle gegeben werden, die bei richtiger Befolgung, eine Auflistung der errechneten Resultate ergibt. Da die üblichen Tischrechner nicht sowohl ein eingebautes Sichtgerät mit wechselnder Anzeige als auch einen eingebauten Ausgabedrucker aufweisen, von denen jede die Möglichkeit einer Alphabet-Darstellung besitzt, werden die Bedienungsbefehle für gewöhnlich entweder als Ziffern auf dem Sichtgerät oder als alpha-
309832/0843
numerische Nachrichten auf der ausgedruckten Liste dargestellt, jedoch zerstreut zwischen den errechneten Resultaten. Die Darstellung der Bedienungsbefehle als Ziffern auf dem Sichtgerät ist jedoch unerwünscht, weil der Be- nutzer diese Ziffern entweder auswendig lernen oder die zugehörigen Bedienungsbefehle nachschlagen muß. In ähnlicher Weise ist die Darstellung der Bedienungsbefehle auf einer ausgedruckten Liste zerstreut zwischen den errechneten Resultaten ebenfalls unerwünscht.
Die üblichen programmierbaren Rechner haben meist wenig oder gar keine Möglichkeit zum Edieren von Tastenfeld-Eingaben oder in dem Rechner gespeicherten Programmen. Beispielsweise haben sie meist keine Möglichkeit zum Entfernen, Ersetzen und Einfügen von Informationen in einem Eingabewert oder einem intern gespeicherten Programm, insbesondere nicht Zeichen für Zeichen oder Zeile für Zeile. Weiterhin haben sie beispielsweise keine Möglichkeit, eine beliebige Zeile eines intern gespeicherten Programmes mit mehreren Zeilen alpha-numerischer Angaben unmittelbar aufzurufen. Diese Möglichkeiten wären für den Benutzer sehr nützlich beim Edieren von Programmen.
Universalrechner haben zwar erheblich größere Möglichkeiten als die üblichen programmierbaren Tischrechner, doch für viele numerische Aufgaben bietet der Universal-'-
309832/0843
Rechner wenig oder gar keine wirtschaftlichen Vorteile gegenüber manuellen Losungsmoglichkeiten, weil Schwierigkeiten in dem "interface" zwischen dem Benutzer und der Maschine auftreten, also Schwierigkeiten in der Kommunikation zwischen beiden. Diese Schwierigkeiten äußern sich in einem geringen Durchsatz bei Massenberechnungen oder, gegen der universellen Natur des Rechners, in einer langen Lernperiode für den Benutzer. Normalerweise wird für den Einsatz eines Universalrechners ein ausgebildeter Programmierer benötigt. Wegen dieser Umstände sind die normalen Universalrechner besser für die Verarbeitung großer Datenmengen geeignet oder für die Lösung stark iterativer oder sehr verwickelter Rechenaufgaben.
In der älteren deutschen Anmeldung P 22 28 742.9 der gleichen Anmelderin ist nun ein programmierbarer elektronischer Rechner der eingangs genannten Art vorgeschlagen worden, der äußerst zufriedenstellend arbeitet. Bei ihm kann jedoch nur jeweils ein einziges Zeichen abgespeichert werden und es ist nur der Modus "Programm" und der Modus "Speichern" möglich.
Der Erfindung liegt nun dem gegenüber die Aufgabe zugrunde, einen programmierbaren elektronischen Rechner dieser Art zu schaffen, der dadurch eine erheblich größere Flexibilität aufweist, daß jeweils ganze Zeilen mit alpha-numerischen Angaben dargestellt werden und sodann gewählt werden kann,
309832/0843
ob die einzelne Zeile verarbeitet oder abgespeichert wird. Dieser Rechner soll insgesamt gesehen eine größere Rechenkapazität und Flexibilität aufweisen, als übliche programmierbare Rechner, kleiner, billiger und leistungsfähiger beim Berechnen elementarer mathematischer Funktionen · sein, als übliche Rechnersysteme und einfacher zu bedienen sein als derartige Rechner und Systeme.
Dies wird erfindungsgemäß dadurch erreicht, daß das Eingabe-Tastenfeld eine Anzahl Datentasten, mit welchen aus jeweils ein oder mehreren alpha-numerischen Aussagen bestehende· Zeilen in den Rechner eintastbar sind, eine Verarbeitungs-'taste, mit welcher der Rechner zum Verarbeiten einer eingegebenen, aus ein oder mehreren alpha-numerischen Aussagen bestehenden.Zeile veranlaßbar ist, und eine Speichertaste aufweist, mit welcher das Abspeichern einer eingegebenen, aus ein oder mehreren alpha-numerischen Aussagen bestehenden Zeile in den Rechner auslösbar ist, daß das Eingabe-Speicherregister eine in den Rechner eingegebene aus ein oder mehreren alpha-numerischen Aussagen bestehenden Zeile zwischenzuspeichern vermag, daß der Schreib-Lese-Speicher von dem Eingabe-Speicherregister übertragene, jeweils aus ein oder mehreren alpha-numerischen Aussagen bestehende Zeilen abzuspeichern vermag, daß die Logik-Einheit eine Anzahl Programme und Unterprogramme festzulegen vermag, welche vom Rechner beim Verarbeiten und Speichern in das Eingabe-Speicherregister eingegebene, Jeweils aus ein oder mehreren alpha-numerischen Aus-
309832/0843
sagen bestehender Zeilen durchgeführt werden sollen, daß die Verarbeitungs-Einheit auf eine Betätigung der Verarbeitungstaste im Anschluß an das Eintasten einer aus ein oder mehreren alpha-numerischen Aussagen bestehenden Zeile in das Eingangs-Speicherregister anzusprechen vermag, um wahlweise eine oder mehrere dieser Programme und Unterprogramme zum Zwecke des Verarbeitens dieser aus ein oder mehreren alpha-numerischen Aussagen bestehenden Zeile durchzuführen und auf eine Betätigung der Speichertaste im Anschluß an das Eintasten einer aus ein oder mehreren alphanumerischen Aussagen bestehenden Zeile in das Eingangs-Speicherregister anzusprechen vermag, um zusätzlich diese aus ein oder mehreren alpha-numerischen Aussagen bestehende Zeile in dem Schreib-Lese-Speicher abzuspeichern, und daß die Ausgabe-Einheit eine alpha-numerische Anzeigeeinheit aufweist, mit welcher jede in das Eingabe-Speicherregister eingegebene aus ein oder mehreren alpha-numerischen Aussagen bestehende Zeile optisch darstellbar ist.
Die Einrichtung gemäß der Erfindung weist eine Reihe von Vorteilen auf, von denen im folgenden einige als Beispiele aufgeführt sind:
Der programmierbare elektronische Rechner nach*der Erfindung verwendet eine unmittelbar anwendbare Tastenfeld-Programmiersprache hohen Niveaus, welche die meisten betriebsbedingten Anforderungen an die Bedienungsperson un~
309832/08 4.3
nötig machen, welche für gewöhnlich mit den Programmiersprachen üblicher programmierbarer elektronischer Rechner und Computer verbunden sind.
In dem Rechner nach der Erfindung kann der Umfang des dem Benutzer zur Verfügung stehenden Programm- und Datenspeichers erweitert werden, und der dem Benutzer zusätzlich zugänglich gemachte Programm- und Datenspeicher wird von dem Rechner automatisch berücksichtigt und der Benutzer wird jedesmal darauf aufmerksam gemacht, wenn die Kapazität des Programmund Datenspeichers überschritten worden ist.
Die von dem Rechner ausgeführten Funktionen können von dem Benutzer leicht erweitert und an seine Anforderungen angepaßt werden, wobei, die zusätzlichen Funktionen von dem Rechner automatisch berücksichtigt werden.
Der Benutzer kann in dem Rechner zusätzliche, von dem Rechner auszuführende Tastenfeld gesteuerte Funktionen definieren und abspeichern. Er kann jeder solchen definierten tastenfeldgesteuerten Funktion eine eigene, wählbare Taste des Tastenfeldes zuordnen und kann jede solche definierte tastenfeldgesteuerte Funktion dadurch ausführen und/oder als Teil eines Programmes abspeichern lassen - entweder je für sich oder als Teil eines arithmetischen Ausdruckes - ., indem er die Verarbeitungstaste bzw. die Speichertaste des Tastenfeldes betätigt/nachdem die zugehörige wählbare Taste
3098 32/0,8 A3
und eine oder mehrere andere zur Eingabe der Parameter der definierten tastenfeldgesteuerten Funktion in den Rechner benötigten Tasten gedrückt worden sind.
Der Anwender kann in dem Rechner von diesem auszuführende Unterprogramme definieren und abspeichern, kann jedem so definierten Unterprogramm eine Aufruffolge zuordnen, die gegebenenfalls eine zugeordnete wählbare Taste des Tastenfeldes und auch Parameter des definierten Unterprogrammes enthalten kann, kann durch Betätigen der Verarbeitungstaste bzw. der Speichertaste des Eingabe-Tastenfeldes unmittelbar im Anschluß an die Aufruffolge jede solche Aufruffolge verarbeiten und/oder als Teil eines Programmes abspeichern und er kann jedes solches einer Aufruffolge zugeordnete definierte Unterprogramm dadurch ausführen lassen, daß er die zugehörige Aufruffolge ausführen läßt.
Der Benutzer kann in dem Rechner von diesem zu verarbeitende Unterprogramme definieren und abspeichern, kann jedem so definierten Unterprogramm, das keine Parameter aufweist, eine eigene wählbare Taste der Tastenfeld-Eingabe-Einheit zuordnen und er kann jedes solche parameterlose Unterprogramm sofort ausführen lassen, indem die zugehörige wählbare Taste betätigt.
In dem Rechner nach der Erfindung wird jedem definierten, in dem Rechner gespeicherten und von dem Benutzer einer
309832/0843
eigenen wählbaren Taste der Tastenfeld-Eingabe-Einheit zugeordneten Unterprogramm eine Folge von Zeilennummern zugeteilt, die unabhängig von den Zeilennummern einer anderen Funktion, eines anderen Unterprogrammes oder eines anderen Programmes ist, das ebenfalls in dem Rechner gespeichert sein kann. .
In' dem Rechner wird jedes Unterprogramm und jede zusätzliche definierte, in dem Rechner gespeicherte und von dem Benutzer einer eigenen wählbaren Taste der Tastenfeld-Ein-
gabeeinheit zugeordnete Tastenfeldfunktion automatisch gegen ein versehentliches Ändern oder Zerstören durch den Benutzer geschützt.
Die für Tastenfeldfunktionen, für Unterprogramme und für vom Benutzer definierte und in dem Rechner gespeicherte zusätzliche Tastenfeldfunktionen vorzusehenen Parameter können aus Eingabedaten bestehen, welche numerische Werte umfassen, Registerbezeichnungen und arithmetische Ausdrücke, oder aus Ausgaberegisterbezeichnungen.
Die von dem Benutzer definierten, in'dem Rechner gespeicherten und einer eigenen wählbaren Taste der Tastenfeld-Eingabe-Einheit zugeordneten Unterprogramme können sowohl lokale als auch überörtliche Variable enthalten.
Datenspeicher-Register können unmittelbar durch den ganzzahligen Wert eines errechneten arithmetischen Ausdruckes
3 09832/0843
adressiert werden, der wiederum den Inhalt eines oder mehrerer in ähnlicher Weise adressierter Datenspeicherregister umfassen kann. Diese Einsatzmöglichkeit kann sowohl zum Aufrufen und Abspeichern von Informationen verwendet werden als auch für eine leistungsfähige Handhabung von Aufreih- und Matrix-Operationen.
Der Benutzer kann jedes in dem Rechner gespeicherte Programm als gesichert bezeichnen, wenn es auf einem externen magnetischen Aufzeichnungsträger für eine spätere Wiedereingabe in den Rechner aufgezeichnet wird. Der Benutzer kann kein gesichertes Programm noch einmal aufzeichnen oder irgendeinen Hinweis auf dessen einzelne Programmschritte erlangen, sobald dieses gesicherte Programm wieder in den Rechner eingegeben worden ist. Der magnetische Aufzeichnungsträger mit dem gesicherten Programm kann auch nichtgesicherte Daten enthalten.
Der Rechner kann jedes alphabetische oder numerische Zeichen und viele andere Symbole einzeln oder im Rahmen von Nachrichten ausdrucken oder in einer alphanumerischen Anzeige darstellen.
Dem Rechner können Fragen gestellt werden, und .es können von einer alphanumerischen Anzeige Bedienungsbefehle und andere Nachrichten gegeben werden. Die Antworten oder Ausgabedaten werden von einem alphanumerischen Drucker mit einer Kennzeichnung, aber ohne die Fragen, Bedienungsbefehle oder Nachrichten ausgedruckt.
309832/0843
Der Rechner kann eine numerische Darstellung für jede numerische Eingabe über das Tastenfeld und für jedes errechnete numerische Ergebnis ausdrucken und dabei die numerische Eingabe von dem numerischen Ergebnis unterscheiden. . . ■ .
Die in dem Rechner gespeicherten Programme können wirkungsvoller ediert und bearbeitet werden als in den üblichen programmierbaren Rechnern.
Der Benutzer kann von dem Tastenfeld eine Zeile mit einer oder mit mehreren alphanumerischen Aussagen in den Rechner eingeben, er kann eine alphanumerische Anzeige eines Teiles der Zeile oder der ganzen Zeile betrachten/ und zwar sowohl bei als auch nach der Eingabe,· um die Eingabe auf Fehler zu überprüfen, und er kann nach Feststellung, daß die eingegebene Zeile fehlerfrei ist, diese wahlweise sofort von dem Rechner ausführen lassen und/oder als ein Programm oder als Teil eines Programmes in dem Rechner abspeichern.
Der Benutzer kann jede aus ein oder mehreren alphanumerischen Aussagen bestehende Zeile, die in dem Rechner als Programm oder als Teil eines Programmes gespeichert ist, wahlweise und ohne sie zu zerstören wieder aufrufen und eine alphanumerische Anzeige eines Teiles der wiederaufgerufenen Zeile oder der ganzen Zeile betrachten, um diese auf Fehler zu überprüfen·.
309832/08A3
Das gleiche gilt für jede in dem Programmspeicher des Rechners gespeicherte Zeile, die weiterhin ediert werden kann, ohne daß das in dem Programmspeicher gespeicherte Programm geändert wird. Diese edierte Zeile kann dann an Stelle der entsprechenden nichtedierten Zeile wieder in dem Programmspeicher abgespeichert werden.
Der Benutzer kann eine Vorwärtstaste und eine Rückwärtstaste des Tastenfeldes verwenden, um in Einzelschritten in Vorwärts- oder Rückwärtsrichtung durch eine aus ein oder mehreren alphanumerischen Aussagen bestehende Zeile zu schreiten, die aus dem Tastenfeld in den Rechner eingegeben oder aus einem in dem Rechner gespeicherten Programm wieder aufgerufen worden ist. Er kann eine alphanumerische Anzeige eines Teiles dieser Zeile oder die ganze Zeile betrachten, wobei das letzte Zeichen der Anzeige das letzte in Einzelschritten erreichte Zeichen des Rechners ist.
Beim Durchschreiten einer aus einem in dem Rechner gespeicherten Programm wieder aufgerufenen Zeile kann beim Erreichen des vorderen oder des hinteren Endes der wieder aufgerufenen Zeile die nächstfolgende bzw. vorhergehende Zeile des Programmes automatisch wieder aufgerufen werden.
In dem programmierbaren elektronischen Rechner nach der Erfindung kann der Benutzer jeden Teil einer aus ein oder mehreren alphanumerischen Zeichen bestehenden Zeile betrachten, die
309832/0843
von dem Tastenfeld in den Rechner eingegeben oder von einem in dem Rechner gespeicherten Programm wieder auf ge-* rufen worden ist. Er kann entweder falsche oder unerwünschte Teile einer betrachteten Zeile wahlweise löschen oder ersetzen oder korrigierte oder zuvor ausgelassene Teile der betrachteten Zeile von dem Tastenfeld aus Zeichen für Zeichen oder Zeile für Zeile wahlweise einfügen.
Bei Entdeckung eines Syntaxfehlers in einer in den Rechner eingegebenen, aus ein oder mehreren alphanumerischen Aussagen bestehenden Zeile hat die Betätigung jeder Taste, die nicht bei der Feststellung, Beseitigung oder Korrektur eines Fehlers verwendbar ist, keinen Einfluß auf den Rechner und die' Ausführung einer von dem Rechner gerade bearbeiteten Zeile wird angehalten und kann erst v/eitergeführt werden, wenn der Fehler beseitigt oder korrigiert ist.
Syntaxfehler in einer durch das Tastenfeld in den Rechner ■ eingegebenen, aus ein oder mehreren alphanumerisehen Aussagen bestehenden Zeile werden automatisch festgestellt und bei ihrem Auftreten sofort dem Benutzer angezeigt.
Semantikfehler in einer durch das Tastenfeld in den Rechner eingegebenen oder in dem Rechner als Teil eines Programmes gespeicherten, aus ein oder mehreren alphanumerischen Aussagen bestehenden Zeile werden automatisch festgestellt, wenn die eingegebene oder gespeicherte Zeile ausgeführt wird. Jeder solche auftretende Fehler wird dem Benutzer ange-
30 9 832/0843
zeigt und im Falle eines in einer als Teil eines Programmes gespeicherten Zeile auftretenden Fehlers wird auch die Nummer der Zeile in dem Programm in welcher der Fehler aufgetreten ist, dem Benutzer angezeigt.
Syntax- und Semantikfehler werden durch alphanumerische Nachrichten angezeigt. Sie können mit Hilfe einer Fehlertabelle bestimmt werden, welche alle solche alphanumerischen Nachrichten und die möglichen Fehler aufführt, welche solche alphanumerischen Nachrichten erzeugen können.
Bei Entdeckung eines Syntaxfehlers in einer durch das Tastenfeld eingegebenen Zeile kann der Benutzer die Vorwärtstaste des Tastenfeldes betätigen, um den Rechner schrittweise bis zu dem fehlerhaften Eingabewert durchzutasten und eine alphanumerische Anzeige des Teiles der eingegebenen Zeile einschließlich des fehlerhaften Eingabewertes zu erhalten·
Der Benutzer kann in diesem Falle aber auch die Rücktaste des Tastenfeldes betätigen, um den Rechner schrittweise bis zu dem Tastenfeld-Eingabewert durchzutasten, der dem fehlerhaften Eingabewert unmittelbar vorangeht, und eine alphanumerische Anzeige des Teiles der eingegebenen Zeile bis zu dem fehlerhaften Eingabewert, aber ohne diesen einzuschließen, zu erhalten.
Bei Entdeckung eines Semantikfehlers in einer von dem Rechner ausgeführten Zeile kann der Benutzer eine Wieder-
309832/08A3
2282725
aufruftaste des Tastenfeldes betätigen, um eine alpha- . numerische Anzeige der Zeile oder eines Teiles der Zeile zu erhalten, in welcher der Fehler aufgetreten ist..
Bei dem Rechner nach der Erfindung kann der Benutzer mehrmals die Wiederaufruftaste des Tastenfeldes betätigen, um Zeile für Zeile durch eine Anzahl von Zeilen aus ein oder mehreren alphanumerischen Aussagen fortzuschreiten, die als Programm oder als Teil eines Programmes in dem Rechner gespeichert sind, und um eine alphanumerische Anzeige jeder Zeile oder eines Teiles jeder Zeile zu erhalten, während diese wieder aufgerufen wird.
Der Benutzer kann in einem in dem Programmspeicher des Rechners gespeicherten Programm mit einer oder mehreren Zeilen alphanumerischer Aussagen zu jeder Zeit vor oder während der Ausführung des Programmes einen Suchbefehl einfügen'oder durch das Tastenfeld eingeben, um ein alphanumerisches Ausdrucken der·Nummer jeder von dem Rechner ausgeführten Zeile, des Wertes jeder dort durchgerechneten numerischen Aufgabe und jedes darin enthaltenen Druckbefehles zu erhalten. Der Benutzer kann in dem Programm an jeder Stelle hinter dem Suchbefehl einen normalen Befehl einfügen oder er kann jederzeit nach dem Suchbefehl durch das Tastenfeld den normalen Befehl eingeben, um den Suchbefehl zu beenden.
309832/0843
-2Dr-
Dor Benutzer kann einen Suchbefehl ausführen, um eine alphanumerische Logbuch-Eintragung jeder von dem Rechner ausgeführten oder als Teil eines Programmes in dem Rechner gespeicherten Zeile aus ein oder mehreren alphanumerischen /\ussagen zu erhalten. Im Falle einer als Teil eines Programmes in dem Rechner gespeicherten Zeile wird auch die Nummer dieser Zeile aufgezeichnet.
Der Benutzer kann eine alphanumerische Programm-Auflistung der Nummer und des Inhaltes jeder als Teil eines Programms, als definierte Funktion oder als Unterprogramm in dem Programmspeicher des Rechners gespeicherten Zeile aus ein oder mehreren alphanumerischen Aussagen erhalten.
Der Benutzer kann entweder unmittelbar oder als Teil einer Programmauflistung einen alphanumerischen Ausdruck der Anzahl der noch nicht verwendeten Datenspeicherregister erhalten , die dem Benutzer jeweils noch zur Verfügung stehen.
In dem Rechner nach der Erfindung wird jede ausgedruckte Programmauflistung automatisch in einem Abstand über einem Papierabschneider angeordnet.
Der Rechner hat eine Anzoigetaste, welche es dom Benutzer ermöglicht, von Hand oder vom Programm her die Ergebnisse eines arithmetischen Ausdruckes, eino alphanumerische Nachricht oder den Inhalt eines beliebigen Datenregisters ont-
309832/0843
COPY
BAD ORIGINAL
v/oder einzeln odor als Folge anzuzeigen, wobei die Datenregistor nicht verändert v/orden.
Die Anzeigetaste kann air, programmierbare Pausentaste verwendet v/erden, indem sie die Ergebnisse eines arithmetischen Ausdruckes, eine alphanumerische Nachricht, den Inhalt eines beliebigen Datenregisters oder irgendeine Kombination hiervon vorübergehend anzeigt, ohne eines der Datenregister zu verändern.
In dom Rechner können sov/ohl a LplKiboLische als auch numerische Informationen ohne Verändern ιΚτ Datenregister angezeigt v/erden.
Dor Kochnor hat. Tasten "Fcnt-N" und "Gleit-N", welche es dem Benutzer ermöglichen, von Hand enk-r vom Programm her für die anzuzeigenden Werte entweder Festkomma- oder Gleitkomma-Darstellung zu fordern. N ist dabei ein Parameter, der die Anzahl der rechts vom Komma darzustellenden Ziffern angibt.
Der Benutzer kann wahrend der Progrrmmausführung durch Betätigen einer einzigen Taste von Festkomma- zu Gleitkomma-Darstellung und zurück wechseln.
Der Hochner nach der Erfindung hält mit Hilfe einer einzigen Procjramnuuseago die Programmausführung an und ermöglicht es dom nonutzor, einen oder mehrere Worte einzugeben. Hierdurch worden dio Werto automatisch in Registern gespeichert, die in dor Progrnminnussage angegeben nind.
309832/0043
COPY BAD ORIGINAL
Der Rechner kann beim Anhalten zum Eingeben von Daten entweder eine Registorbozeichnung odor eine damit zusammenhängende numerische Nachricht darstellen.
Der Rechner setzt beim Anhalten der Programmausführung zum Zwecke der Eingabe von Daten eine Marke, wenn der Benutzer e:ine Fortsetzung des Programmes ohne die Eingabe von Daten wünscht. Hierdurch wird eine Beendigung ■'" nr Eingabe aufeinanderfolgender Daten ermöglicht, deren genaue Anzahl ;;um Zeitpunkt der Programmerstellung noch unbekannt ist.
In dem Rechner kann eine Verarbeitungsfolge eine unbedingt.e Verzweigung zu absoluten, zu symbolisch bezeichneten, zu relativen und zu errechneten relativen Zeilen des gespeicherten Programmes umfassen.
Die Verarbeitungsfolgo des gespeicherten Programmes kann Unterprogramm-Aufrufe zu absoluten, zu symbolisch bezeichneten und zu relativen Zeilen des gespeicherten Programmes umfassen.
Nach Wahl des Benutzers kann die Ausführung einos gespeicherten Programmes mit unbedingter Verzweigung mit Aufnahme von errechneter relativer Verzweigung gegenüber der normalen .Programmausführung !-,geschwindigkeit beschleunigt worden.
Die Ausführung einer unbedingten, nichtorrechnotcn VorzwoigungsauRsage in einem Programm erfolgt nicht eher, bin
309832/0843
COPY
BAD ORIGINAL
andere Aussagen in dor gleichen 'Zeile ausgeführt worden sind, wodurch mehrfache bedingte Verzweigungen erleichtert worden.
In dem Rechner nach der Erfindung steht dem Benutzer eine Vielzahl von Marken als Boole'sehe Veränderliche zum Aufbau beliebiger Programmaussagen zur Verfügung.
In dem Rechner nach der Erfindung wird beim Auftreten eines mathematisch unzulässigen Ausdruckes oder eines arithmetischen Unter- bzw. Überlaufs während der Ausführung eines Programmes eine Marke gesetzt, eine Fehlernachricht in der Anzeigeeinrichtung dargestellt und die ProgrammausfUhrung angehalten. In diesem Falle kann der Benutzer die Fehlernachricht und das Anhalten des Programmes unterdrücken, indem er vorher eine andere Marke setzt.
Eine Marke ist für die Verwendung als Boole'sehe Veränderliche vorgesehen, die zum Aufbau von Programmaussagen dient und während der Programmausführung durch Betätigen einer einzigen Taste von Hand eingestellt werden kann.
In dem Rechner nach der Erfindung ist eine Magnetkarten-Lose- und -Aufzoichen-Einheit zum Transferieren von Programmen Daten und beliebigen Kombinationen davon zwischen dem Rechner und einem externen magnetischen Aufzeichnungsträger in Form einer Magnetkarte vorgesehen.
309832/0843
COPY
BAD ORIGINAL
Zur Steuerung der Magnetkarten-Einheit sind Lade- und Aufzeichen-Tasten vorgesehen, die programmierbar sind.
Zwischen dem Rechner und einer externen Magnetkarte transferierte Programme enthalten eine Angabe über den Aufbau
der steckbaren ROM-(Auslesespeicher-)Modulen des Rechners. Wenn der Benutzer versucht, eine Karte zu lesen, welche
zuvor von einem Rechner mit einer hiermit nicht vereinbaren ROM-Modul-Anordnung aufgezeichnet worden ist, wird eine
Fehlernachricht angezeigt.
Für den Fall, daß ein besonders großer Programm- oder Daten-Block, der mehr als eine Magnetkarte beansprucht, zwischen den Magnetkarten und dem Rechner transferiert werden soll, wird automatisch eine Nachricht angezeigt, die zusätzliche Magnetkarten anfördert.
In dem Rechner nach der Erfindung stehen dem Benutzer programmierbare Operatoren =, ^,r^,^=»- zum Darstellen von Beziehungen zur Verfügung, die in eine beliebige Aussage des Rechners eingefügt werden kann, um einen Boole'sehen Test des Verhältnisses zweier numerischer Konstanten, zweier Registerinhalte oder zweier Resultate von arithmetischen Ausdrücken zur Verfügung zu haben.
In dem Rechner ist eine Anzahl festzugeordneter Datenregister vorgesehen, die feste Bezeichnungen und Speicherplätze besitzen und jeweils durch Betätigen einer einzigen Taste für
309832/0843
einen angezeigten algebraischen Ausdruck aufgerufen werden können. Bei Betätigung der Verarbeitungstaste wird der . · Inhalt dieser Register entsprechend dem algebraischen Ausdruck verarbeitet und das Resultat angezeigt.
Die verschiedenen aufeinanderfolgenden Tastenbetatigungen zugeordneten Merkzeichen erscheinen in einer mehrstelligen alphanumerischen Anzeige und werden automatisch nach links aus der Anzeige herausgeschoben, wenn bei voller Anzeige weitere Tasten betätigt werden.
Eine angezeigte" Folge von Merkzeichen kann dabei durch Betätigen einer von zwei Tasten jeweils um ein Zeichen nach links oder rechts verschoben werden.
Zur Anzeige des /\nfangs und des Endes einer dargestellten Zeile aus einem gespeicherten Programm sind SpezialZeichen "Zwischenraum" und " J-" vorgesehen..
Die Anzeige-Einrichtung kann unabhängig von irgendwelchen Daten- und/oder Programmspeicher-Registern gelöscht werden.
Die Anzeige-Einrichtung dient zum Darstellen der Merkzeichen betätigter Tasten und zum Darstellen numerischer oder alphabetischer Resultate von tastenfeljl·- oder programm-gesteuerten Rechnungen.
30 9.8 32/0843
Das alphabetische Zeichen "E" wird dazu verwendet, die Ziffern des Exponenten zu bezeichnen, wenn Zahlen in Gleitkomma-Darstellung angezeigt werden.
Alle Speichereinrichtungen des Rechners, einschließlich des als Schreib-Lese-Speichers ausgebildeten Hauptspeichers, der steckbaren Au.slesespeicher-(ROM-)Moduln verwendet, des system- und anwender-orientierten Schreib-Lese-Speichers und der wahlfreien Schreib-Lese-Speicher werden mit Hilfe einer gemeinsamen Adressenregister-Technik adressiert. Hierdurch können sowohl Schreib-Lese-Speicher als auch Auslese-Speicher wechselweise als Auslesespeicher verwendet werden und es können Befehle in der Programmiersprache der Mikro-Verarbeitungseinheit als normales Unterprogramm in den anwender-orientierten Schreib-Lese-Speicher für einen Zugriff durch ein vom Tastenfeld zusammengestelltes Programm eingegeben werden.
Die Magnetkarten-Schreib- und -Lese-Einheit dient zum Laden über das Tastenfeld zusammengestellter Programme oder etwaioor Programme in der Sprache der Mikro-Vercirbeitungs-Einheit in den Benutzerteil des Schreib-Lese-Speichers des Rechners.
Für einen Zugriff zu einer Erweiterung des Schreib-Lesc--Speichcrs werden keine neuen Befehle benötigt.
Mit Hilfe einer programmierbaren Ta etc "N-Zwischenräume" kann das Papier des internen Druckers um "K-Schritte" weiter-
309832/0843
1}
bewegt v/erden, wobei N ein Parameter ist.
Vorbestimmte Tasten des Tastenfeldes können dadurch mehrere Funktionen auslösen, daß die Taste entweder einmal oder zweimal gedrückt wird.
Die anwender-orientierten Register und Programme sind gegeneinander gesichert, obwohl sie wechselweise den' gleichen Bereich verwenden können.
Die Eingabe/Ausgabe-Einrichtungen des Rechners sind so ausgebildet, daß externe Einrichtungen die Zentraleinheit des Rechners zu unterbrechen vermögen. - ·
Die Eingabe/Ausgabe-Einrichtungen des Rechners ermöglichen es externen Speichereinrichtungen unmittelbar mit dem internen Speicher zu verkehren, ohne dabei die Zentraleinheit des Rechners benützen zu müssen.
Für den Fall, daß der Anwender versucht, den Ausgabedrucker zu betätigen, wenn dessen Papiervorrat erschöpft ist, wird eine Fehlernachricht angezeigt.
Wenn in dem Rechner unter Programmsteuerung von einer externen Magnetkarte ein Programm geladen worden ist, beginnt die Ausführung automatisch entweder von Zeile 0 oder von der ersten Zeile des gerade geladenen Programmes.
30 9 832/0843
Abhängig von dem Wortlaut einer Aussage löst eine in dem Rechner vorgesehene Minustaste entweder eine Subtraktion
aus oder - bei Funktionen einer einzigen Veränderlichen einen Vorzeichenwechsel.
Der Rechner nach der Erfindung bietet die Möglichkeit für eine implizierte Multiplikation, d.h. für eine Multiplikation ohne die Verwendung des multiplikativen Operators.
Die Ausführung einer Zeile algebraischer Aussagen erfolgt in dem Rechner nach der Erfindung nach vorbestimmten Prioritäten. Diese Prioritäten sind, geordnet von der höchsten zur niedrigsten, wie folgt: Funktionen, Exponenten-Erhebung, implizierte Multiplikation, Vorzeichenwechsel, Multiplikation und Division, Addition und Subtraktion, und die Verhältnisse ausdrückenden Operationen <r,~^. , = , ψ .
In dem Rechner kann ein Zuteilungsoperator beliebig oft in einer Aussage verwendet werden, um Zwischenergebnisse abzuspeichern.
Die Argumente der über das Tastenfeld wählbaren Funktionen, einschließlich derjenigen, die sich auf die steckbaren ROM-Moduln beziehen, können numerische Konstanten/ RegisterInhalte oder arithmetische Ausdrücke sein.
In dem Rechner ist eine vom Tastenfeld steuerbare Funktion vorgesehen, mit der die Zahl 10 in eine beliebige Potenz
309832/08A3
JiS
erhoben werden kann.
In dem Rechner nach der Erfindung können vorgegebenen Funktionen, die sich auf eine steckbare ROM-Modul für vom Anwender wählbare Funktionen beziehen, von dem Anwender mit eigenen Merkzeichen versehen v/erden. Weiterhin können sie beliebigen Tasten zugeordnet werden, die nicht, von anderen steckbaren ROM-Moduln belegt sind.
Im folgenden wird die Erfindung an Hand einiger in der beigefügten Zeichnung dargestellter Ausführungsbexspiele näher erläutert. Der mehr ins einzelne gehenden Beschireibung sind v/eitere Merkmale, Vorteile und Ausgestaltungen der Erfindung zu entnehmen. Es zeigen:
309832/0843
- So -
Fig. 1 eine perspektivische Vorderansicht eines Ausführungsbeispieles für einen programmierbaren elektronischen Rechner nach der Erfindung,
Fig. 2A-B vereinfachte Blockschaltbilder des Rechners nach Fig. 1,
Fig. 3A-B einen Speicherplan der Speichereinheit des Rechners nach den Fig. 1 und 2,
Fig. 4 einen ausführlichen Speicherplan des fest zugeordneten Bereiches des Datenspeicherteils in dem Schreib-Lese-Speicher der Speichereinheit nach den Fig. 2 und 3,
Fig. 5 eine Draufsicht auf die Tastenfeld-Eingabe-Einheit des Rechners nach den Fig. 1 und 2 zur Darstellung, wie die Tastenfeld-Eingabe-Einhoit durch ein steckbares Auslesespeicher-Modul beispielsweise für Alphabetdarstellung, umdefiniert werden kann,
Fig. 6, 7 und 8A-C Draufsichten auf Tastenfeld-Schablonen
für steckbare Auslesespeicher-Moduln zur Durchführung trigonometrischer Funktionen, Steuerfunktionen für Anschlußgeräte und vom Benutzer wählbctre Funktionen, wie sie in einem Rechner nach Fig. 1 und 2 verwendet werden können,
Fig. 9A-B ein funktionelles Blockdiagramm für den programmierbaren elektronischen Rechner,
Fig. 10A-C vereinfachte Flußdiagrammc der gesamten Stouerfolge für die Verarbeitung von Tastensignalen,
Fig. 11 ein Blockdiagramm der Speichcrcinheit nach Fig. 2,
Fig. 12A-D ein ausführliches Schaltbild der Spcioheradro^s-Register nach den Fig. 2 und 3,
309832/0843
Fig. 13A-D ein ausführliches Schaltbild ,der Steuerschaltungen
nach den Fig. 2 und 3,
Fig. 14A-D ein ausführliches Schaltbild der Speicherzugriffs-
Register nach den Fig. 2 und 3 und Fig. 15A-D ein ausführliches Schaltbild der Anzeige-Einheit des prograitimierbaren elektronischen Rechners nach
Fig. 1.
309832/0843
Beschreibung eines Ausführungsbeispiels Allgemeine Beschreibung
In Fig. 1 ist ein anpassungsfähiger programmierbarer elektronischer Rechner 10 dargestellt, der sowohl eine Tastenfeld-Eingabe-Einheit 12 zur Eingabe von Informationen und zur Steuerung der Arbeitsweise des Rechners als auch eine Magnetkarten-Ablese-^ und -Aufzeichen-Einheit 14 enthält zur Aufzeichnung von in dem Rechner gespeicherten Informationen auf eine oder mehrere externe Magnetkarten 16 und zur anschließenden Einspeicherung der auf diesen oder anderen ähnlichen Magnetkarten gespeicherten Informationen zurück in den Rechner. Der Rechner enthält weiterhin eine Festkörper-Anzeigeeinheit 18 zur Darstellung in dem Rechner gespeicherter alphanumerischer Informationen. Er kann auch einen Ausgabedrucker 20 zum Ausdrucken alphanumerischer Informationen auf einem wärmeempfindlichen Papierstreifen 22 enthalten.
Wie aus dem vereinfachten Blockschaltbild nach den Fig. 2A-B hervorgeht, enthält der Rechner weiterhin eine Eingabe-Ausgabe-Steuereinheit 44 (die im folgenden auch als 1/0-Steuereinheit bezeichnet wird) zur Steuerung der Informationsübertragung von und zu den Eingabe- und Ausgabegeräten, eine Speichereinheit 46 zur Speicherung und Bearbeitung von in den Rechner eingegebenen Informationen und zur Speicherung von Programmen und Unterprogrammen aus von dem Rechner auszu-
309832/0843
führenden Grundbefehlen, und weiterhin eine zentrale Verarbeitungseinheit 48 (die im folgenden auch als CPU bezeichnet wird) zur Steuerung der Durchführung von"Programmen und Unterprogrammen der in dem Rechner gespeicherten Grundbefehle wie es zur Verarbeitung der in den Rechner eingegebenen oder in diesem gespeicherten Informationen erforderlich ist. Der Rechner weist weiterhin ein Sammelschienensystem auf, welches eine S-Schiene 50, eine T-Schiene 52 und eine R-Schiene 54 umfaßt', die zur Informationsübertragung aus dem Speicher und der I/O-Steuereinheit an die CPU, von der CPU an den Speicher und die I/O-Steuereinheit und zwischen verschiedenen Bereichen der CPU dienen. Der Rechner enthält ferner eine Energieversorgung zur Versorgung des Rechners und der Anschlußgeräte mit Gleichspannung, und zur Lieferung eines Steuersignales
•POP, wenn Energie an den Rechner geliefert wird.
Die I/O-Steuereinheit 44 umfaßt ein Eingabe-Ausgabe-Register (das im folgenden auch als I/O-Register bezeichnet wird), eine zugeordnete Eingabe-Ausgabe-Steuerschaltung 58 (die im folgenden auch als I/O-Steuerschaltung- bezeichnet wird) und eine Eingabe-Ausgabe-Steuerlogik 60 (die im folgenden auch als I/O-Steuerlogik bezeichnet wird) ·. Das I/O-Register 56 besitzt ein universelles 16-Bit-Schieberegister, in welches Informationen übertragen werden können, und zwar entweder in Bit-Serienform von der CPU 48 über die T-Schiene 52 oder in Bit-Parallelform von dem Tastenfeld 12, der Magnetkarten-Einheit 14 und periphercn Eingabe-Einheiten 28, beispiels-
309832/0843
weise über Eingabe-Vielfache 62 von einem Lesegerät für markierte Karten. Informationen können auch von dem I/O-Register 56 entweder in Bit-Serienform über die S-Schiene 50 an die CPU 48 oder in Bit-Parallelform an die Magnetkarten-Einheit 14, die Anzeige-Einheit 18, den Ausgabedrucker 20 und an periphere Anschlußgeräte 28 übertragen werden, beispielsweise über 16 Ausgabe-Vielfache 64 an ein X-Y-Zeichengerät oder eine Schreibmaschine.
Die I/O-Steuerschaltung 58 besitzt Steuerschaltungen zur Steuerung der Informationsübertragung von und zu dem I/O-Register 56 abhängig von ausgewählten I/O-Qualifizier-Steuersignalen der CPU 48 und von ausgewählten I/O-Steuerbefehlen der I/O-Steuerlogik 60. Sie besitzt weiterhin eine Unterbrechungs-Steuerschaltung 65, eine periphere Steuerschaltung 66, eine Magnetkarten-Steuerschaltung 67, eine Drucker-Steuerschaltung 68 und eine Anzeige-Steuerschaltung 69 zur entsprechenden Steuerung der Eingabe-und Ausgabegeräte und zur Abgabe von Steuersignalen QFG und EBT über zwei Ausgabeleitungen 71 und 7 2 an die I/O-Steuerlogik Diese zuletzt erwähnten Steuerschaltungen führen abhängig von dem Steuersignal POP der Stromversorgung, von den·I/O— Qualifizier-Steuersignalen der CPU 48, von den I/0-Steucrbefehlen der I/O-Steuerlogik 60 und von Steuer-Signalen des Tastenfeldes 12 ihre verschiedenen Steuerfunktionen aus. Die Unterbrechungs-Steuerschaltung 65 löst die Informationsübertragung von dem Tastenfeld 12 in das I/O-Register 56 oder die Unterbrechung der poripheren Anschlußgeräte 28 aus, beispielsweise des Lesegerätes für markierte Karten,
309832/08^3
und liefert über Ausgabeleitungen 73 ein Qualifizier-Steuersignal QNR an die CPU 48. Die periphere Steuerschaltung befähigt in den Rechner eingesteckte Schnittstellen-Module 30, auf Informationen des I/O-Registers 56 zu reagieren, die zugeordneten peripheren Anschlußgeräte 28 zu steuern. Informationen an die zugeordneten peripheren Anschlußgeräte 28 zu übertragen und/oder solche von diesen zu empfangen und in einigen Fällen die Informationsübertragung von den Schnittstellen-Modulen 30 selbst an das I/O-Register 56 einzuleiten. Die Magnetkarten-Steuerschaltung 67 befähigt die Magnetkarten-Einheit 14, auf Informationen in dem I/O-Register 56 zu reagieren und entweder Informationen von einer Magnetkarte 16 in das I/O-Register 56 einzulösen oder Informationen von dem I/O-Register 56 auf einer Magnetkarte aufzuzeichnen. Die Drucker-Steuerschaltung 68 und die Anzeige-Steuerschaltung 69 befähigen die Ausgabe-Anzeige-Einheit bzw. den Ausgabedrucker 20, auf Informationen aus dem I/O-Register 56 anzusprechen.
Wenn ein von der Speichereinheit 46 erhaltener I/0-Grundbefehl auszuführen ist, überträgt die CPU 48 durch Aussendung von 2 I/O-Mikrobefehleh PTR und XTR die Steuerung' an die I/O-Steuerlogik 60. Im Ansprechen auf diese I/0-Mikrobefehle der CPU 48 des Signals POP der Stromversorgung, der Steuersignale QFG und EBT der I/O-Steuerschaltung 58 und der I/O-Qualifizier-Steuersignale der CPU 48 sendet die I/O-Steuer logik 60 selektiv einen od,er mehrere I/O-Steuerbe-
309832/0 8 43
fehle an die I/O-Steuerschaltung 58, wie es zur Durchführung der von der CPU A festgesetzten I/O-Grundbefehle erforderlich ist, und sendet über Ausgabeleitungen 44 bis
77 Steuersignale TTX, XTR, QRD und SCB an die CPU 48. Die von der SPU 48 an die I/O-Steuerlogik 60 und die I/O-Steuerschaltung 58 gesendeten Qualifizier-Steuersignale sind von dem auszuführenden I/O-Grundbefehl abgeleitet. Diejenigen Qualifizier-Steuersignale, welche an die I/O-Steuerlogik abgegeben werden, markieren die von der I/O-Steuerlogik 60 auszusendenden speziellen Ί/0-Steuerbefehle, während die an die I/O-Steuerschaltung 58 abgegebenen Steuersignale ausgewählte Steuerschaltungen bestimmen, die zur Durchführung der I/O-Grundbefehle benutzt werden.
Die Speichereinheit 46 besitzt einen in Modulform aufgebauten Schreib.-Lese-Speicher 78 mit wahlfreiem Zugriff (im folgenden als RWM bezeichnet), einen ebenfalls in Bausteinform aufgebauten Auslesespeicher 80 (im folgenden mit ROM bezeichnet), ein Speicheradressregister 82 (im folgenden als M-Register bezeichnet), ein Speicherzugriffs-Register (im folgenden als T-Register bezeichnet) und eine Steuerschaltung 85 für diese Speicher und Register. Der RWM-Speicher 78 und der ROM-Speicher 80 enthalten MOS-Halbleiter-Speicherelemente. Wie in dem Speicherplan der Fig. 3A-B gezeigt, sind sie in neun "Seiten" zu je 1 024 Worten organisiert. Der RWM-Speicher 78 enthält im Grundausbau einen Zuordnungssystem-Speicherbereich mit 256 Wörtern zu je
309832/0843
16 Bit, die sich auf Seite O von Adresse 1 400 bis zu der Adresse 1 777 erstrecken und einen getrennten Speicherbereich für das Anwenderprogramm und/oder für Datenspexcherung mit 76'8 Wörtern zu je 16 Bit, die sich auf Seite 7 von der Adresse 16 400 bis zu der Adresse 17 777 erstrecken. Alle Adressen auf dem Speicherplan sind in Oktalform dargestellt.
In dem Bereich zwischen den Adressen 20 000 und 21 777 können dem Benutzer auf Wunsch 1 024 Wörter zu je 16 Bit im RWM-Speicher zugänglich gemacht werden. Hierzu wird eine Deckelplatte 90 des in Fig. 1 dargestellten Rechners entfernt und eine zusätzliche Druckschaltungsplatte mit dem zusätzlichen Speicher eingesetzt. Der Zusatz zu dem RWM-Speicher wird von dem Rechner automatisch berücksichtigt.
Wie in dem ausführlicheren Speicherplan der Fig. 4 dargestellt, umfaßt der Zuordnungssystem-Speicherbereich des RWM-Speichers 12 Wörter (an den Adres.sen 1 414-1 427) , die dem Benutzer als vier Wörter fassende^ Arbeitsregister X, Y und Z zur Verfügung stehen, und 12 Wörter (an den Adressen 1 400-1 413), welche dem Benutzer als vier Wörter fassende Speicherregister A, B und C zur Verfügung stehen. Ein' 25. Wort von 16 Bit Länge (an der Adresse 1430) enthält Marken, die dem Benutzer bei der Aufstellung von Programmen für den Rechner zur Verfügung stehen.
Die Adressen 1430-1437 enthalten Speicherbereiche für den Systemstapel und den Eingabepuffer. Das Ende dieses Bereiches
3 09832/0843
mit den höheren Adressen enthält die Tastenkodes wie sie bei dem Aufbauen einer Aussage in dem Rechner von dem Tastenfeld eingegeben werden. Wenn der eingegebene Tastenkode in bezug auf die vorher eingegebenen Tastenkodes die richtige Syntax aufweist, wird dieser Tastenkode in dem Eingabe-Puffer-Bereich abgespeichert. Das Ende dieses Speicherbereiches mit den niedrigeren Adressen ist der System-Stapel-Bereich und wird von der CPU 48 beim Aufbauen von algebraischen Ketten in Boole'sehe Schreibweise benützt. 57 Wörter (an den'Adressen 1540 bis 1626), die jeweils mit einem Merkzeichen benannt sind, enthalten Informationen, die in den "firmware-" bzw. Geräte-Programmen, gemäß den Fig. 9A-B verwendet werden. Ein dem beschriebenen Speicherbereich ähnlicher Bereich besteht an den Adressen 1701 bis 1715. Ein weiterer Speicherbereich (an den Adressen 1627-1647) des RWM-Speichors erhält Informationen, die es den steckbaren· ROM-Speicher-Moduln ermöglicht, mit den Schaltungen des Grundsystems über die sich bildende Schnittstelle zusammenzuarbeiten. Ein Informationsspeicherbereich von 8 Wort Länge (an den Adressen 1650-1657) ist für die Verwendung durch die steckbaren ROM-Speicher-Moduln vorgesehen. Der folgende Speicherbereich von 16 Wort Länge wird in zwei Pufferbereiche aufgeteilt, einem Anzeigepuffer (an den Adressen 1660-1667) und einem 1/0-Puffer (an den Adressen 1670-1677). Diese beiden Bereiche werden dazu verwendet, gemäß ASCII kodierte Informationen zu speichern, die entweder über die Anzeigeeinheit 18 odor den Ausgabedrucker 20 nach Fig. 1 ausgegeben werden sollen.
309832/0843
Di,e Informationen, die ausgedruckt werden sollen, werden zunächst in dem Anzeigepuffer gespeichert und dann mit Hilfe von in dem ROM-Speicher des Rechners gespeicherte Drucker-Geräte-Programmen dem Drucker übermittelt. Gemäß ASCII kodierte Zeichen, welche anzuzeigende Informationen darstellen, können sich entweder in den I/O-Puffer oder in dem Anzeige-Puffer befinden.
Weitere festverdrahtete Programme werden zum Zwecke der Wiedergewinnung von Informationen in Form von ASCII-kodierten Zeichen zum Zwischenspeichern in dem Anzeige- oder dem I/O-Puffer verwendet. 18 Wörter (an den Adressen 1716-1737 in Fig. 4) werden zürn vorübergehenden Speichern von Informationen verwendet, während die Steuerung von einem Programm zu einem anderen übergeht. 8 Wörter (an den Adressen 1744-1747 und 1754-1757) werden als vier Wörter fassende Arbeitsregister ARl und AR2 eingesetzt, um arithmetische Operationen mit binär-kodierten Dezimalzahlen ausführen zu können. Weitere 8 Wörter (an den Adressen 1740-1743 und 1750-1753) dienen als Arbeitsdatenregister Xc und Yc für die Realisierung der trigonometrischen Funktionen in Zusammenarbeit mit dem steckbaren trigonometrischen ROM-Speicher-Modul. Das Wort an der Adresse 1760 wird zum Speichern des Inhaltes eines der Arbeitsregister der CPU 48 während eines Unterbrechungs-Arbeitsspiels verwendet. Ein "System-Unterprogramm-Stapel" variabler Länge (an den Adressen 1761-1776) wird zum Speichern von Wiederkehradressen verwendet, die von
30983270843
7262725
Programmen in dem ROM-Speicher 80 benötigt werden, als auch als Zwischenspeicher für "Haushalts-"Informationen, die von der CPU 48 benötigt werden. Das letzte Wort in dem RWM-Speicher des Systems (an der Adresse 1777) dient zum Speichern eines Zählwertes, der die nächste zur Verfugung stehende Stelle für die Wiederkehradresse für den nächsten Unterprogramm-Aufruf innerhalb des Grundsystems angibt.
Wie in dem Speicherplan der Fig. 3A-B angegeben, enthält der Speicherbereich für das Anwenderprogramm und/oder die Datenspeicherung des RWM-Speichers 78 einmal 692 Wörter (173 Register) die dem Benutzer (an den Benutzeradressen 16 510 und 17 777) zum Speichern von Programmen und/oder Daten zur Verfügung stehen, und zum anderen 72 Wörter, die für die Verwendung durch die CPU 48 vorgesehen sind. Weitere 1024 Programmschritt- und/oder Daten-Wörter (256 Register) können dem Benutzer (an den Benutzeradressen 20 000-21 777) zur Verfügung gestellt werden.
Der ROM-Speicher 80 enthält, wie ebenfalls aus dem Speicherplan der Fig. 3A-B hervorgeht, 7 168 Wörter von 16 Bit Länge, die sich auf Seiten O von den Adressen 0000 bis 1377, auf Seite 3 von den Adressen 2001 bis 7777 und auf Seite 7 von den Adressen 16 000 bis 16 377 erstrecken. In diesen Teilen des ROM-Speichers 80 sind die Programme und Unterprogramme mit Grundbefehlen zum Ausführen der Grundfunktionen des Rechners sowie Konstanten gespeichert, die von diesen Pro-
309832/08^3
grammen und Unterprogrammen verwendet werden. Zusätzliche 3072 Wörter des ROM-Speichers von 16 Bit Länge können auf den Seiten 4, 5 und 6 in Gruppen von 512 und 1024 Wörtern hinzugefügt werden. Dies wird dadurch bewerkstelligt, daß in einfacher Weise steckbare ROM-Speicher-Moduln 9 2 in Fassungen 94 eingesteckt werden, die hierfür in der Deckelplatte 90 des Rechnergehäuses vorgesehen sind, wie in Fig. an Hand des teilweise eingesteckten ROM-Speicher-Moduls auf der linken Seite dargestellt ist. Wenn ein steckbares ROM-Speicher-Modul 92 in eine dieser Fassungen 94 eingeführt wird, klappt eine federbelastete Klappe 95 am"Eintritt der der Fassung nach unten und gestattet den Durchgang des steckbaren ROM-Speicher-Moduls. Wenn das Modul vollständig eingeführt ist, wie in Fig. 1 durch das Modul auf der rechten Seite dargestellt, kommt eine in dem ROM-Speicher-Modul enthaltene Druckschaltungsplatte 96 in Kontakt mit einer Kanten-Steckerfassung, die in dem Rechner befestigt ist,
In jedem "der steckbaren ROM-Speicher-Module 92 sind Programme und Unterprogramme von Grundbefehlen (und die benötigten Konstanten) gespeichert, um den Rechner in die Lage zu versetzen, viele zusätzliche Funktionen auszuführen. Der Benutzer kann den Rechner somit schnell und einfach an viele auf seine speziellen Erfordernisse ausgerichtete zusätzliche Funktionen anpassen, indem er einfach ROM-Speicher-Module seiner Wahl in den Rechner einfügt. Zusätzliche ROM-Speicher-Module werden automatisch durch den Rechner berücksichtigt,
309832/08^3
indem kurzzeitig die Stromzufuhr unterbrochen oder die Taste "Speicherlöschung" betätigt wird. Sie werden einem definierbaren Bereich 91 der Tastenfeld-Eingabe-Einheit 12 zugeordnet oder zur Erweiterung der von diesem und anderen Bereichen des Eingabe-Tastenfeldes durchzuführenden Funktionen benutzt.
Wie aus Fig. 3 ersichtlich, enthält das Speicher-Adressen-Register 82 (das sogenannte M-Register) der Speichereinhe.it ein umfaufendes Serien-Schieberegister von 16 Bit Länge, in welches über die T-Schiene 52 Informationen in Bit-Serienform von der CPU 48 und aus welchem über die S-Schicne 50 Informationen in Bit-Serienform an die CPU 48 übertragen v/erden können. Die in das M-Register 82 hineingeschobene Information kann zur Adressierung eines Wortes in dem RWM-Speicher 78 oder in dem ROM-Speicher 80 über 15 Ausgabeleitungen 106 genutzt werden.
Das Speicher-Zugriffs-Register 84 (das sogenannte T-Register) der Speichcreinheit besitzt ein umlaufendes Serien-Schieberegister von 16 Bit Länge, in welches Informationen entweder in Bit-Serienform von der CPU 48 über die T-Schienc 52 oder in Bit-Parallelform von einem adressierten Wort in dem RWM-Speicher 78 oder dem ROM-Speicher 80 über 16 Parallel· Eingabeleitungen 108 übertreujon werden können. Aus dem T-Register 84 können die Informationen entweder in Bit-Serienform über die S-Schieno 50 an dio CPU 48 oder in
309832/08^3
Bit-Parallelform über 16 Parallel-Ausgabeleitungen 110 an ein addressiertes Wort in dem RWM-Speicher 78 übertragen werden. Die vier Bits mit der geringsten Wertigkeit der in dem T-Register 84 enthaltenen Information können eine binärkodierte Dezimalzahl darstellen- und von dem T-Register über drei Parallele mit der S-Schiene 50 geführte Ausgabeleitungen 112 parallel an die CPU 48 übertragen werden.
Die Steuerschaltung 85 der Speichereinheit steuert diese Informationsübertragungen in und aus dem M-Register 82 und dem T-Register 84, steuert die Adressierung der und den Zugriff zu dem RWM-Speicher 78 und dem ROM-Speicher 80 und erneuert den Inhalt des RWM-Speichers 78. Sie führt diese Funktionen abhängig von Speicher-Mikrobefehlen, Speicher-Taktimpulsen und Schiebeimpulsen der"CPU 48 aus.
1N.
Die CPU 48 besitzt eine Registereinheit 114, eine Arithmetik-Logik-Einheit 116 (die im folgenden als ALU bezeichnet wird), einen programmierbaren Taktgeber 118 und einen Mikrorechner 120. Die Registereinheit 114 umfaßt vier umlaufende Schieberegister 122, 124., 126 und 128 von 16 Bit Länge und ein Schieberegister 130 von 4 Bit Länge. Die Schieberegister 122 und 124 dienen als serielle Akkumulator-Register von 16 Bit Länge (im folgenden als Α-Register und als B-Register bezeichnet), in welche über die T-Schiene 52 in Bit-Serienform Informationen von der ALU und aus welchen über die R-Schiene 54 Informationen in Bit-Serienform an die ALU 116 übertragen werden können.
309832/08A3
Die vier Bit-Stellen des A-Registers 122 mit der geringsten Wertigkeit dienen auch als paralleles Akkumulator-Register von vier Bit Länge, in welches die vier Bits einer binärkodierten Dezimalzahl über vier parallele Eingabeleitungen 132 parallel von der ALU 116 und aus welchen die vier Bits einer binär-kodierten Dezimalzahl über drei Parallele auch zusammen mit der R-Schiene 54 verlaufende Ausgabeleitungen
134 parallel an die ALU 116 übertragen werden können.
Das Schieberegister 126 dient als Programmzähler von 16 Bit Länge (und wird im folgenden als P-Register bezeichnet), in welches Informationen von der ALU 116 in Bit-Serienform über die T-Schiene 52 und aus welchem Informationen an die ALU in Bit-Serienform über die R-Schiene 54 übertragen werden können. Die in den Bit-Stellen des P-Registers 126 mit der geringsten Wertigkeit enthaltenen Informationen können auch als Qualifizier-Steuersignal QPO über eine Ausgabeleitung
135 an den Mikrorechner 120 übertragen werden.
Das Schieberegister 128 dient als Qualifizier-Register von 16 Bit Länge(und wird im folgenden auch Q-Register), in welches Informationen von der ALU 116 in Bit-Serienform über die T-Schiene 52 und aus welchem Informationen in Bit-Serienform über die R-Sammelleitung 54 an die ALU 116 übertragen werden können. Die in den fünf Bit-Stellungen des Q-Registers 128 mit der geringsten Wertigkeit enthaltenen Informationen werden in Form von fünf einstelligen I/O-Qualifizier-Steuersignalen Q00-Q04 über fünf parallele Ausgabeleitungen 136
309832/0843
an die I/O-Steuerschaltung 58 übertragen und die in den sechs Bit-Stellungen des Q-Registers 128 mit der nächst höheren Wertigkeit enthaltenen Informationen werden in Form von sechs einstelligen I/O-Qualifizier-Steuersignalen QO5--QlO an die I/O-Steuerlogik 60 übertragen.
In ähnlicher Weise können die Informationen in den sieben Stellen geringster Bedeutung, in der 9. und 11. Stelle und in den Stellen höchster Bedeutung des Q-Registers 128 sowie aus der 13,, 14. und 15. Bit-Stelle des Q-Registers abgeleitete Informationen als 11 einstellige Mikrorechner-Qualifizier-Steuersignale Q00-Q06, Q08, QlO, Q15 und QMR über Ausgabeleitungen 140 übertragen werden. Die in der 12. bis 15. Bit-Position des Q-Registers 128 enthaltene Informationen können als vierstellige Primäradresse über vier parallele Ausgabeleitungen 142 an den Mikrorechner 120 übertragen werden,
Das Schieberegister 130 dient als vierstelliges Serien-Ausbau-Register (im folgenden auch als Ε-Register bezeichnet), in welches Informationen entweder von der ALU 116 über die T-Schiene 52 oder, von den Bit-Positionen des T-Registers 84 mit der geringsten Wertigkeit über Eingabeleitungen 144 übertragen werden können. Die Infornmtionen können aus dem E-Register 130 auch über die R-Schiene 54 an die ALU 116 übertragen werden.
Die Registereinheit. 114 umfaßt weiterhin eine Steuersclmltung 14 6 zur Steuerung der Übertragung von parallelen binär-ko-
309832/0Ö43
dierten Dezimalzahlen in und aus dem A-Register 122 und zur Steuerung der Übertragung von Serien-Binär-Informationen in und aus dem A-Register 122, dem B-Register 124, dem P-Register 126, dem Q-Register 128 und dem E-Register 130. Dies erfolgt abhängig von Register-Mikrobefehlen des Mikrorechners 120, von Steuersignalen TTX und XTR von der I/O-Steuerlogik 60 und von Schiebeimpulsen des programmierbaren Taktgebers 118. Die Steuerschaltung 146 besitzt ein Flip-Flop 148 (im folgenden auch als A/B-Flip-Flop bezeichnet) zur Ermöglichung einer Informationsübertragung in und aus entweder dem A-Register 122 oder dem B-Register 124, was durch den Zustand des A/B-Flip-Flops festgelegt wird. Der Zustand des A/B-Flip-Flops 148 wird anfänglich durch eine Information Q 11 bestimmt, welche von der zwölften Bit-Stelle des Q-Registers 128 an das A/B-Flip-Flop übertragen wird, und kann dann im folgenden ein oder mehrmals durch einen Mikrobefehl CAB des Mikrorechners 120 komplementiert werden.
Die Arithmetik-Logik-Einheit (ALU) 116 kann entweder seriell
einstellige binäre arithmetische Ope^itionen an Daten auf;
führen, welche sie über die S-Schiene 50 von dem T-Register 84 oder dem M-Register 82 und/oder über die R-Schiene 54 von einem anderen Regj.ster der Registereinhoit · 114 empfangt oder sie kann parallel vierstellige binär-kodierLo Dezimalrechnungen an Daten ausführen, welche sie über die Ausgaboleitungen 112, die mit der S-Schiene !30 geführt worden, von
309832/08^3
den T-Register 84 und/oder über die mit der R-Schiene-54 geführten Ausgabeleitungen 134 von dem A-Register 122 empfängt. Sie kann auch Logik-Operationen an Daten durchführen, welche sie von der Speichereinheit 46 und/oder der Register 114 über eine dieser Leitungen erhalten hat. Die durchgeführten arithmetischen und logischen Operationen werden durch ALU-Mikrobefehle von dem Mikrorechner 120 bestimmt und abhängig von diesen Mikrobefehlen von Schiebeimpulsen des programmierbaren Taktgebers 118 und von einem · Steuersignal SCB der I/0-Steuerlogik 60 ausgeführt. Die Informationen werden auch von der ALU 116 über die Ausgabeleitungen 132 an das- A-Register 122 oder über die T-Schiene 52 an das I/O-Register 56, das M-Register 82, das T-Register 84 oder ein beliebiges Register der Registereinheit 114 abhängig von Mikrobefehlen und Steuersignalen, welche an diese Register angelegt werden, übertragen. Wenn ein Übertrag auftritt, wenn die ALU 116 entweder seriell einstellige binäre arithmetische Operationen oder parallel vierstellige binär-kodierte dezimale Operationen ausführt, gibt die ALU 116 ein entsprechendes Qualifizier-Steuersignal QBC und QDC über eine von zwei Ausgabeleitungen 152 und 154 an den Mikrorechner 120 weiter.
Der programmierbare Taktgeber 118 enthält einen quarzgesteuerten Impulsgeber 156, einen Umsetzer 158 und ein Ausgangstor 160. Der Impulsgeber 156 gibt regelmäßige Taktimpulse über eine Äusgangsleitung 162 an den Umsetzer 158 weiter ab.· Abhängig von diesen Taktimpulsen des Impulsgebers
309832/0843
156 und von einem vierstelligen Taktkode des Mikrorechners 120 gibt der Umsetzer 158 über eine Ausgabeleitung 164 Gruppen von η Schiebeimpulsen an die ALU 116, das M-Register 82, das T-Register 84 und an alle Register der Register-Einheit 114. Diese Gruppen von η Schiebeimpulsen werden zum Verschieben einer entsprechenden Anzahl von Bits einer Serieninformation in eines oder aus einem dieser Register benötigt oder zum Verschieben eines iJbertragsbits in der ALU 116. Die Anzahl η der Impulse jeder dieser Gruppen kann von 1 bis IC schwanken, was von der Anzahl der Bits der Serieninformation abhängt, die zu der auszuführenden Operation erforderlich ist.
Abhängig von einem Steuersignal CCO des Mikrorechners 120 unterbindet das Ausgangstor 160 die Vielter leitung von Schiebeimpulsen an die-ALU oder an eines der Register. Nach Beendigung jeder Gruppe von η Schiebeimpulsen gibt der Umsetzer 158 über eine Ausgabeleitung 166 einen ROM-Taktimpuls an den Mikrorechner 120 und über eine Ausgabeleitung 16 8 einen 1/0-Taktimpuls an die I/O-Steuerlogik 60. Abhängig von den regelmäßigen Taktimpulsen des Impulsgebers 156 gibt der Umsetzer 158 auch entsprechend regelmäßige Speicher-Taktimpulse über eine Ausgabcleitung 170 an die Speichereinheit 46.
Der Mikrorechner 120 sendet selektiv über zwei Ausgabeleitungen 17 2 zwei I/O-Mikrobefehle an die I/O-Steuerlogik 60, über sechs Ausgabeleitungen 174 sechs Speicher-Mikrobefehle an die Speicher-Einheit 46, über 13 Ausgabeleitungen 176
309832/0843
13 Register-Mikrobefehle an die Registereinheit 114 und über fünf Ausgabeleitungen 178 fünf ALU-Mikrobefehle an die ALU 116. Er gibt auch mit jedem dieser Mikrobefehle über vier Ausgabeleitungen 180 einen vierstelligen Taktkode an den Umsetzer· 158. Diese Mikrobefehle und zugehörigen Taktkodes werden erzeugt, wie es durch das Steuersignal POP der Stromversorgung, durch die elf Mikrorechner-Qualifizier-Steuersignale des Q-Registers 128, durch den vierstelligen Primäradressenkode des Q--Registers 128 und den fünf Mikrorechner-Qualifizier-Steuersignalen der I/0--Steuer~ logik 60, der Unterbrechungs-Steuerschaltung 65, der ALU 116 und des P~Registers'126 bestimmt wird.
Die Ablauf-Diagramme nach den Fig. 9K-B der festgespeicherten Programme des Rechners (die im folcfenden im Gegensatz zu den üblichen Bezeichnungen "software" und "hardware" mit "firmware" bezeichnet worden) illustrieren die Grundbestandteile dieser firmware des Rechners. Diese Bestandteile umfassen in den ROM-Speicher 80 des Rechners festgehaltene Programme und dienen dazu, das Betriebssystem des Rechners zu verwirklichen. In de]: Zeichnung sind Stcuerinforrnationen zwischen den einzelnen Programmen durch ausgezogene Linien dargestellt, während gestrichelte Linien eine Informationsübertragung zwischen den System- und Anwender-Teilen des RWM-Spcichers einerseits und den firmware-Programrnen andererseits darstellen.
Wie aus den Fig. 9A-B ersichtlich, wird die hardware des Rechners durch die in dem ROM-Speicher 80 enthaltenen firm-
BAD ORIGINAL 30983 2/0843
ware-Programme gesteuert. Diese hardware-Einheiten des Rechners umfassen einen Netzschalter 182, die Tastenfeld-Eingabe-Einheit 12, die Anzeigeeinheit 18, den Ausgabedrucker 20 und die Magnetkarteneinheit 14.
Der Betrieb des Rechners wird dadurch eingeleitet, daß der Netzschalter in seine Ein--Stellung gebracht wird, wodurch die interne hi\rdware des Rechnern gezwungen wird, den Befehl an der Adresse 0000 des ROM--Speichere CO auszuführen. Dieser Befehl überträgt, die Steuerung an das Startprogramm 200, welches in dem Speicherplan der Fig. 1JA-Vt (an den Adressen 2127-2226) dargestellt ist (und ausführlich beschrieben auf den Seiten 18 und 19 der Aufstellung der firmware des Grundsystems) . Der Zweck dieses Programm;?;7: 1st es, den RWM-Speicher 78 in seinen Aniangszustand zu versetzen, die Adresse des Stapelzühlers auf 1777 cinzusteller;, die Darstellungsweise der numerischen Ausgabe auf "Gleitkomma 9" zu setzen, bestimmte Veränderliche in dem System-Speicherbereich des RVJM- S pe ich er s für eine spätere Verwendung durch andere firmware-Programme in den Anfangszustand zu versetzen, einen Konfigurationskode aufzustellen, der angibt, welche wählbaren Blocke in Verwendung .sind und eine Me.vkzeichen-, Syntax- und Ausf ührungs-Verbi ndimg zu den w.'shlbMiM, Blöcken zu errichten. Diese Verbindungen worden in dem Kl1H--Speicher 78 an den Adressen 1G27 bis 1647 untergebracht, wu> es in dem ausführ Ii clicren Speicherplan der Fig. 4 dargrst ivll L. ist.
3098 3 2/0843
Nach Beendigung des Startprogramms wird die Steuerung an das System-Überwachungsprogramm 202 übertragen (Adressen G221-6235), welches alle Tastenkodes zu ihren richtigen Verarbcitungsprogrammen leitet. Eine ausführliche Beschreibung dieses Programmes ist auf Seite 91 der Aufstellung der firmware des Gruridsystems wiedergegeben.
Fig. 1OA zeigt die oben beschriebenen Folgen von dem Einschalten über das Startprogramm bis zu- dem System-Überwachungsprogramm 202. Weiterhin ist eine ausführlichere Darstellung der Systemüberwachung angegeben. Bei Aufruf der System-Überwachung durch den Start wird auch das Anzeigeprogramm 204 (Fig. 9A-B) aufgerufen. Die Steuerung verbleibt dort, bis auf dem Tastenfeld 12 eine weitere Taste betätigt wird. Während des; oben erwähnten Versetzens in den Anfangszustand bei dem Startprogramm wird dem Eingabepuffer die erste Zeile des Benutzerbereichs des RWM-Speichers 78 zugeteilt. Dadurch erscheint die Anzeige zu Beginn des Anzeigeprogramms als O:END. Die Anzeige wird dazu verwendet, das Auftreten von Rückstellungen beim Betrieb des Rechners darzustellen. "
Wie aus den Fig. 9A-B hervorgeht, liegt nun die Steuerung
bei dem Anzeigeprogramm 7204, nachdem dieses durch den Befehl, den Inhalt des Eingabepuffers anzuzeigen, die Steuerung von dem System-Überwachungsprogramm übernommen hatte. Das Anzeigeprograjimi behält solange die Steuerung, bis eine neue Taste
309832/0843
Sl
betätigt wird und übergibt dann die Steuerung an ein Anzeige-Treibcr-Programm 206, sobald es notwendig ist, eine Anzeige vorzunehmen. Das Anzeige-Treiber-Programm nimmt gemäß ASCII kodierte Information entweder von dem Anzeige;-puffer oder dom I/0-Puffer, wie zuvor beschrieben, entgegen und setzt diese Information in eine Matrix von 5x7 Bit um, wie sie von der mit Licht, aussendenden Dioden (LED) bestückten Anzeigeeinheit 18 benötigt wird. Nach jedem vollständigen Durchgang durch den Anzeigepuffer kehrt die Steuerung wieder an das Anzeigeprogramm 204 zurück, welches wiederum das Wort mit dem Merkzeichen .WMOD überprüft, um festzuotellen, ob eine neue Taste betätigt worden ist. Bei Eingabe eines neuen Tastenwertes geht die Steuerung auf das Unterbrechung.?- Grundprogramm 208 über, welches die Tastenkode-Information in dem RWM-Speicher 78 des Systems abspeichert und gleichzeitig eine Hcirkc setzt, die anzeigt, daß eine neue Taste betätigt worden ist. Wenn das Anzeigeprogramm 204 feststellt, daß eine neue Taste betätigt worden ist, geht die Steuerung wieder auf das Systein-Uberwachungsprograinm 202 über.
Aus Fig. 10Λ ist zu ersehen, daß bei Eingabe eines neuen Tastenwertes die Antwort auf die Frage nach einer neuen Taste "ja" ist und daß die Verarbeitung des Tastenwertes beginnt.
Wie aus den Fig. 10Λ-Β ersieht],ich, ist das Kodieren unterhalb des mit SMON bezeichneten Punktes als Unterprogramm
309832/ 0843
realisiert, welches von dem System bei der Verarbeitung bestimmter Tastenwerte aufgerufen wird. Das Verarbeitungsprogramru für jede Taste wird dadurch bestimmt, daß die Klasse des Tastenkodes, eine vorbeeinflußte Steuernummer CN und ein Tafelstatuswort TSW untersucht werden. Das Statuswort TSW kann Werte zwischen 1 und 6 annehmen und benutzt sein Vorzeichen Bit als Marke. Für TSW gleich 1 wird über das Tastenfeld eine Zeile aufgebaut. TSW gleich 2 zeigt an, daß die vorliegende Zeile aus dem Benutzerteil das RWM-SpeiclKors 78 aufgerufen worden ist. TSW gleich 3 bedeutet, daß ein Tastenkode eingefügt und nicht ersetzt werden soll. Bei TSW gleich 4 besitzt der übersetzer die Steuerung über das System, TSW gleich 5 zeigt den Zwischenmoduszustand an. Bei TSW gleich 6 ist die vorliegende Zeile ausgeführt worden.' Außer bei TSW gleich 3 bedcuLet ein eingestelltes Vorzeichen Bit, daß in der vorliegenden Zeile ein Zeilenendzeichen ( I--) vorhanden int. Bei TSW gleich 3 zeigt ein eingestelltes Vorzeichen Bit einen überlauf in dem Anwonder-Programm-Boroich an. Der Wort von TSW zeigt einen bestimmten Zustand des in den Fig. 9A-B gezeigten System-Überwachungsprogramms 202 an.
Die KlciSfie und die Steuernummer werden durch Daten in MTABL bestimm!:., welches die Adressen 0005-0204 des ROM·-Speichers 80, wie. in dem ausführlichen Speichcrplan den: Fig. 3A-B geneigt, ciiiniiiant. Eine; ausführliche Zusammenstellung der in MTABL gespeicherten Information bezüglich jeder Taste erscheint auf den Seiten 5 bis 7 der Zuriammonste.! lung der
BAD ORIGINAL
309832/08A3
5*
firmware des Grundsystems.
Das Format jedes Wortes von IG Bit Länge in MTABL ist v/ie folgt: Die 6 Bits mit der höchsten Wertigkeit stellen die Steuernummer dar, die dem betreffenden Kastenkode zugeordnet ist; die folgenden 2 Bits bezichen sich auf die Klasse; die nächsten 4 Bits zeigen die Priorität in dem Stapelspeicher oder den wählbaren Block an, aus welchem der Tastenkode herrührt; die 4 Bits mit der geringsten Wertigkeit zeigen den Pr-ioritüLsvergleich oder den relativen Wert des Tasterik^c'es, wenn es sich um eine Tasi.'.· für eine wählbaren 1-1 ock handelt, der einem steckbaren ROM-Modul zugeordnet ist. Wenn ein Tastenkode verarbeitet worden soll, wird das entsprechende 16 Bit lange Wort von MTARl, in das CODE eingegeben. Der Wert des Tastenkcdes wird in SKEY abgespeichert; die Steuortiumnior wird ausgewertet und an die Stelle CW für das Merkzeichen gebracht; d;ie Klasse wird dein Wort nur dann entnommen, wenn sie benötigt wird. Die einzelnen Klar;sen der Tasten sind wie folgt: Klasse O sind die programmierbaren Tasten; Klasse .1. sind die Tasten für die wählbaren Blöcke; Klasse 2 sind die durch ei.n Anwenderprogramm unterbrechbar en Tasten, Klasse 3 sind die Steuertasten, Die Tasten der Klasse 2 umfassen die. Tasten mit den Bezeichnungen STOP, FIXED N (fesL) , FLOa'!1 N (Gleitkoiiiina) , NORMAL, TUACiC (Aufsuchen) und SET-FLAG (rj.ake setzen). Die Tar; I en der Klasse 3 um fass on d.ie Tasten mi.l dem liezeichm.mgon RUN (Lauf) , EX)ICUTK (Ausführen) , LIST (Auflisten) , STORE (Speichern) , INSERT (Einfügen) , rOlU-.'nKl) (Vorwärts), RECALL (Wi ederauirufen) , CLEAR (Löschen) , DIlLE']'!'
309832/0843
SS
(Entfernen) und BACK (Rückwärts) .
Die Adressen der oben erwähnten und in dem Flußdiagramm der Fig. 10/\~-C dargestellten Verarbeitungspirogramme sind zwei-· dimensional eingeordnet, wobei die Stellen in dieser Anordnung durch das Tafelstatuswort TSVi und die vorbeeinflußte Steuernummer CN bestimmt wird. Diese Adressen werden reihenweise abgespeichert. Die Verarbeitungsprograrnme tragen Be*- zeichnungen, die den Wert von TSW und CN angeben. A.12 auf dem Pfad der Speichertasten-Information bedeutet, daß TSW g.leJch 1 und CN gleich 2 iät. Die Verarbeitungsprogramme im unteren Teil des Flußdiagramms veranschaulichen allgemeine Betrachtungen beim Verarbeiten bestimmter Tastenkodes und es sind nicht alle Programme dargestellt. Für eine ausführlichere Erläuterung der Verarbeitungsfolge kann die Aufstellung der firmware des Grundsystems herangezogen werden.
Wie aus den Fig. 9A-B ersichtlich, ist die Steuerung bei dem System-tiberwachungsprogramm 202 verblieben, nachdem sie bei Betätigung einer neuen Taste des Tastenfeldes 12 von dem Anzeigeprogramm 204 an dieses Programm übertragen worden war. Im Falle einer programmierbaren Taste wird die Steuerung an ein Compiler-Programm 210 weitergegeben. Wie ±n dem ausführlichen Speieherplan der Fig. 3A-B dargestellt, befindet sich das Compiler-Programm an den ROM-Adressen 4055-4546; es kann auf den Seiten 50 bis 64 der Aufstellung der firmware des Grundsystems studiert v/erden. Das Compiler-Programm wird zur Umwandlung algebrciischer Ausdrücke von der "infix"-Darstellung
309832/08A3
5*
in die "polnische" Darstellung verwendet, um die Programm-Ausführung zu beschleunigen. Sie dient weiterhin zur Überprüfung der Zulässigkeit von Aussagen, die aus dem Tastenfeld in den Rechner eingegeben werden. Wie in den Fig. 9A-B dargestellt, wird die Steuerung, sobald die Verarbeitung durch das Compiler-Programm 210 beendet worden ist, an das System-Überwachungsprogramm 202 zusammen mit Information über Syntax-Fehler zurückgegeben. Wenn der vorliegende Tastenkode im Rahmen der vorher eingegebenen Tastenwerte richtig ist, ist kein Syntaxfehler aufgetreten und das System-Überwachungsprogramm fährt fort, von den Tastenkodes in dem Eingabepuffer gemäß ASCII kodierte Informationen aufzubauen und sie für eine Anzeige durch das Anzeigeprogramm 204 in den Anzeigepuffer einzugeben. Die Steuerung bleibt dann solange bei dem Anzeigeprogramm, bis eine neue Taste betätigt wird.
Der oben beschriebene Vorgang läuft weiter ab, bis das Zeichen für das Zeilenende ( /-) erreicht ist. Der Benutzer hat dann eine Reihe von Wahlmöglichkeiten. Er kann die vorliegende Zeile als Programmzeile in einem Programm abspeichern; in diesem Fall betätigt er die Speicher-Taste STORE und übergibt damit die Steuerung an das System-Überwachungsprogramm 202. Bei Betätigung der Speichertaste STORE werden die Informationen in dem Compilerbereich von dem Systembereich des RWM-Speichers zu dessen Anwenderbereich gebracht und in das dort befindliche Programm eingefügt. Danach wird die Steuerung an das System-Überwachungsprogramm 202 zurückgegeben, damit
309832/084 3
in dem Anzeigepuffer die richtige Anzeige aufgebaut wird für eine Verwendung durch das Anzeigeprogramm.
Wenn die Programmlauf-Taste RUN-PROGRAM betätigt wird, geht die Steuerung von dem Anzeigeprogramm 204 auf das Systemüberwachungsprogramm 202 über und sodann zu dem Interpreter-Programm 214, welches aus dem Anwenderteil des RWM-Speichers Programminformation in "polnischer" Darstellung herauszieht. Wäre an Stelle der Taste RUN PROGRAM die Ausführungs-Taste EXECUTE betätigt worden, hätte das Interpreter-Programm die Information aus dem Compiler-Ausgabebereich entnommen.. Das Interpreter-Programm 214 nimmt die Adressen 4547-5700 des ROM-Speichers ein, wie es in dem Speicherplan der Fig. 3A-B dargestellt und ausführlich auf den Seiten 65-84 der Aufstellung der firmware des Grundsystems beschrieben ist. Während das Interpreter-Programm die Tastenkodes aus dem Speicher herausholt, werden deren Verarbeitungsp.rogramme aufgerufen. Das System fährt in diesem Zustand fort, bis ein Programmfehler auftritt oder ein Stoppbefehl gegeben wird. Tasten, die bei einem laufenden Programm eine Unterbrechung des Systems bewirken können, sind die oben als Tasten der Klasse 2 erwähnten programm - unterbrechenden Tasten. Sie umfassen die Tasten STOP, FIX N (fest), FLOAT N (Gleitkomma), NORMAL, TRACE (Aufsuchen) und SET FLAG (Marke setzen).
Wie zuvor beschrieben wird das Wort mit dem Merkzeichen TSW (Tafel-Status-Wort) gleich 4 gesetzt, wenn die Steuerung
309 832/084
bei dem Programm-Unterbrechungsprogramm 216 liegt. Wenn in diesem Zustand Tasten betätigt werden, werden nur diese verarbeitet, die zu diesem Zeitpunkt gültig sind. Wenn die betätigte Taste eine unterbrechende Taste der Klases 2 ist, wird die Steuerung von dem Interpreter-Programm an das System-Uberwachungsprogramm und sodann an das Programm-Unterbrechungsprogramm übergeben. Nach Beendigung der Verarbeitung durch dieses Programm kehrt die Steuerung an das System-Überwachungsprogramm 202 und sodann an das Interpreterprogramm 214 zurück, sofern die betätigte unterbrechende Taste nicht die Taste STOP gewesen ist. Nach Beendigung der Verarbeitung durch das Interpreterprograjran geht die Steuerung wieder zu dem System-Überwachungsprogramm zurück. Bei Betätigung der Tasten RUN PROGRAM und EXECUTE ruft das System-Überwachungsprogramm ein Formatprogramm 218 auf, welches sich an den Adressen 2227-2535 des ROM-Speichers befindet und auf den Seiten 20-27 der Aufstellung der firmware des Grundsystems ausführlich beschrieben ist. Das Formatprogramm wandelt numerische Information von der internen Darstellung in gemäß ASCII kodierte Zeichen um und bringt diese in den Anzeigepuffer. Wenn diese Bearbeitung beendet ist, geht die Steuerung an das System-Überwachungsprogramm 202 und sodann an das Anzeigeprogramm 204 über und das Resultat wird angezeigt.
Bei Betätigung der Auflist-Taste LIST übergibt das Systemüberwachungsprogramm die Steuerung an ein Programm-Auflistprogramm 220 weiter, welches ein Entcompiler-Programm 222 zum Zwecke der Umwandlung algebraischer Ausdrücke von
309832/0843
"polnischer" in "infix" Darstellung und der Eingabe des Resultats in den Eingabepuffer aufruft, woraufhin die Steuerung an das Programm-Auflistprogramm zurückgegeben wird. Das Programm-Auflistprogramm 220 wandelt dann die in dem Eingabepuffer enthaltene Information in gemäß ASCII kodierte Information um und bringt diese in den Anzeigepuffer, woraufhin die Steuerung zum Ausdrucken von 16 . Zeichen durch den Ausgabedrucker 20 an ein Drucker-Treiber-Programm 224 weitergegeben wird. Die Steuerung geht dann wieder an das Programm-Auflistprogramm 220 zurück, welches prüft, ob noch mehr Zeichen benötigt werden, um die Ausgabe der Zeile beenden zu können. Wenn noch mehr Zeichen benötigt werden, wird das Drucker-Treiber-Programm 224 noch einmal aufgerufen und das Programmauflisten wird fortgesetzt, bis ein Programmendezeichen (-1) auftritt oder in dem Tastenfeld 12 die Taste STOP betätigt wird. Wenn das Auflisten beendet ist, berechnet das Programm-Auflistprogramm die Anzahl der für das Programm zur Verfügung stehenden Datenregister, ordnet das Druckerpapier so an, daß die darauf befindliche Auflistung von dem Ausgabedrucker 20 abgerissen werden kann und stellt die Programmzähler auf den Anfang des Programms zurück. Die Steuerung wird dann an das System-Überwachungsprogramm 202 und das Anzeigeprogramm 204 weitergegeben.
Ein Magnetkarten-Treiberprogramm 226 wird durch ein Aufzeichen- und Hauptzoilen-Programm aufgerufen, welches ein Teil der Verarbeitungsprogramme ist, die sich im InterpreterrProgramm 214 befinden. Dem Aufzeichen- und Hauptzeilen-Programm wird
309832/08 4 3
ω -
die Steuerung übertragen, wenn das Interpreter-Programm auf einen Lade- und Aufzeichen-Befehl trifft. Das Magnetkarten-Treiberprogramm 226 übernimmt Datenregister- oder Programm-Information von dem Anwenderteil des RWM-Speichers 78 und überträgt Wörter von 16 Bit Länge auf eine externe Magnetkarte.
Ausführliche Informationen über die Anordnungs-Programm-Sprache, die sich auf alle hier beschriebenen firmware-Programme und -Unterprogramme bezieht, kann aus dem Speicherplan der Fig. 3A-B und der Aufstellung der firmware des Grundsystems entnommen werden.
309832/0 8 43
Wirkungsweise der Tasten
Sämtliche von dem Rechner durchzuführenden Operationen lassen sich durch die Tastenfeld-Eingabeeinheit und/oder durch über die Tastenfeld-Eingabeeinheit, die Schreib- und Leseeinheit für Magnetkarten oder periphere Anschlußgeräte, wie die Lese-Einrichtung für markierte Karten, steuern oder einleiten und als Prograinmschritte in dem Programm-Speicherbereich des RWM-Speichers abspeichern. Der Rechner reagiert auf die Tastencodes grundsätzlich in der gleichen Art, ob er diese nun von der Tastenfeld-Eingabeeinheit oder von dem Programm-Speicherbereich des RWM-Speichers erhalten hat. Im folgenden wird nun eine Beschreibung der Wirkungsweise der Tastenfeld-Eingabeeinheit unter spezieller Bezugnahme auf Fig. 1, sofern nichts anderes gesagt wird, gegeben.
Einschalten
Wenn der Netzschalter an der Vorderseite des Rechners in seine Stellung EIN gebracht wird, erscheint folgende Anzeige:
0 : END h
Der Rechner ist dann betriebsbereit.
Anfangszustand des Rechners
Die Lösch-Taste ERASE hat die gleiche Wirkung, wie ein kurzzeitiges Ausschalten des Rechners. Sie löscht alle gespeicherten Daten und Programme aus dem Speicher und beseitigt die Resultate aller vorangegangenen Rechnungen und Operationen.
309832/0843
Die grundlegende Benutzer-Operation
Der Verkehr mit dem Rechner erfolgt über die Anzeigeeinheit. Im allgemeinen müssen zwei grundlegende Schritte ausgeführt werden, wenn Operationen durchgeführt werden sollen:
1. Durch Betätigen der entsprechenden Tasten wird ein Satz von Anweisungen in die Anzeigeeinheit eingeschrieben.
2. Der Rechner hat dann diese Anweisungen zu befolgen, und das Ergebnis einer numerischen Operation wird automatisch angezeigt. Bei tastenfeldgesteuerten Berechnungen besteht dieser Schritt lediglich aus einer Betätigung der Verarbeitungs-Taste EXECTUE.
Diese beiden Schritte bilden die grundlegende Benutzeroperation. Mit wenigen Ausnahmen bilden alle Operationen, wie das Ausführen von Berechnungen, das Laden und Laufenlassen von Programmen, das Geben von Anweisungen an den Ausgabedrucker usw. lediglich in einer Variation dieser grundlegenden Benutzeroperatxon.
Diagnostische Bemerkungen
Zusätzlich zur Anzeige von Zahlen, Anweisungen und Rechenergebnissen zeigt der Rechner auch diagnostische Bemerkungen an, um den Benutzer über aufgetretene Fehler oder über spezielle Situationen zu informieren. Die grundlegenden Bemerkungen sind von 01 bis 16 durchnumeriert (verschiedenen steakbaren ROM-Modulen sind jedoch höher numerierte Bemerkungen zugeordnet). Die Nummer der Bemerkung gibt dabei die Art des Fehlers oder der Situation an. Die Bemerkung NOTE 01 zeigt z. B. an, daß dem Rechner eine Anweisung gegeben worden ist, die dieser
309832/0843
nicht verstehen kann. Die Bemerkung NOTE 16 gibt' an, daß der Papiervorrat des Ausgabedruckers zu Ende gegangen ist. Eine Aufstellung der grundlegenden Bemerkungen und eine kurze Beschreibung ihrer Bedeutung ist im Anhang am Ende dieses Absatzes über die Wirkungsweise der Tasten angegeben.
Wenn bei der Programmausführung der Zustand "Bemerkung" auftritt, wird angehalten. Die Anzeigeeinheit gibt dann die Bemerkung wieder zusammen mit der Nummer der Programmzeile, in der sie aufgetreten ist, z.B.
NOTE 02 ·IN 4
Diese Anzeige gibt an, daß in Zeile 4 die Bemerkung 02 aufgetreten ist.
Eintasten von Anweisungen .und Zahlen
Anweisungen werden durch Betätigen entsprechender Tas.ten in die Anzeigeeinheit eingeschrieben. Wenn der Benutzer beispielsweise 2 zu 4 addieren und das Ergebnis ausdrucken will, werden die Tasten PRINT 2+4 betätigt. Der Rechner befolgt diese /mweisungen jedoch so lange nicht, bis die Verarbeitungs-Taste EXECUTE betätigt wird. Er druckt dann das Resultat 6 aus (und zeigt es gleichzeitig an).
Zahlen werden wie bei einer üblichen Büromaschine dadurch in die Anzeige-Einheit eingetastet, daß in der erforderlichen Reihenfolge die Zifferntasten (0 bis 9) und die Dezimalpunkttaste betätigt werden. Wenn die Zahl negativ ist, muß zuvor das Minuszeichen eingegeben werden. Kommas dürfen nicht ver-
309832/0843
wendet werden, auch nicht zum gruppenweisen Abteilen einer Zahl. Wie in dein Fall einer Anweisung wird eine eingegebene Zahl, obwohl sie angezeigt wird, nicht eher von dem Rechner ausgeführt, als bis die Taste EXECUTE betätigt wird. Normalerweise soll jeweils nur eine einzige Zahl ausgeführt werden. Die Zahl wird für gewöhnlich in einem Satz von Anweisungen untergebracht, und es werden dann die Anweisungen ausgeführt.
Löschen
Die Lösch-Taste CLEAR löscht die Anzeigeeinheit, läßt aber den Speicher unverändert. Sie wirkt unmittelbar und braucht nicht von der Taste EXECUTE gefolgt zu werden. Wenn die Taste CLEAR betätigt wird, erscheint in der Anzeigeeinheit ein Zeilenendzeichen ( h), welches anzeigt, daß der Rechner sich im Leerlauf befindet. Es ist nicht erforderlich, die Anzeigeeinheit vor der Eingabe der nächsten Anweisung zu löschen, sofern die vorhergehende Anweisung ausgeführt worden ist. In diesem Fall ist die Verwendung der Taste CLEAR freigestellt, Wenn jedoch nach der Eingabe der letzten Anweisung keine Programmausführung stattgefunden hat, muß die Lösch-Taste CLEAR betätigt werden.
Arithmetische Berechnungen
Für arithmetische Berechnungen besteht die grundlegende Anwenderoperation im Einschreiben eines arithmetischen
309832/0843
·- 65 -
Ausdruckes in die Anzeigeeinheit und dann im Betätigen der Verarbeitungs-Taste EXECUTE, um den Rechner anzuweisen, diesen Ausdruck auszuwerten. Ein arithmetischer Ausdruck wird dadurch in die Anzeigeeinheit eingegeben, daß die Tasten in der gleichen Reihenfolge betätigt werden, wie wenn auf Papier geschrieben werden soll, d.h. eine Taste pro Zeichen oder Symbol. Der arithmetische Ausdruck kann ■ dann einfach durch Betätigen der Taste EXECUTE ausgeführt werden. Dies wird durch das folgende Beispiel illustriert:
Tastenfolge ■Anzeige
3 + 6 EXECUTE 9.00
9 . 3-6 EXECUTE 3.30
- 7 EXECUTE -7.00
6 * ( - 7 ) EXECUTE ' -42.00
8 . 2 5 * 4 EXECUTE 33.00
6*3/ (11-2) EXECUTE 2.00
3 EXECUTE 1.7.3
4 + 5 EXECUTE 7.00
( 4 + 5 )■ EXECUTE 3.00
Wie in den vorstehenden Beispielen werden Größen in. Klammern wie eine einzige Größe behandelt. So ist V(4+5) äquivalent mit V~9, während V4+5 lediglich 5 zu der Quadratwurzel 4 addiert. Der Ausdruck 4 (3+2) ist äquivalent mit dem Ausdruck 4* (3+2). Der Multiplikationsoperator (. . bzw.-*·). ist impliziert, d. h. stillschweigend vorgesehen, ,und seine Benutzung daher freigestellt. KlcJimnern können ineinandergeschachtelt
309832/0843
werden (entsprechend der üblichen Darstellungsweise Jründe Klammern in eckigen Klammern und diese in geschweiften Klammern), aber diese Klammern müssen ausgewogen sein, d. h. es müssen auf der linken Seite genau so viel Klammern vorhanden sein wie auf der rechten Seite.
Die arithmetische Hierarchie
Wenn arithmetische Ausdrücke mehr als einen Operator aufweisen, wie in einigen der vorstehenden Beispiele, ist eine bestimmte Ausführungsreihenfolge vorgeschrieben. Dabei muß der Ausdruck richtig geschrieben werden, oder es wird eine falsche Antwort erhalten.
Die Reihenfolge der Ausführung, die sobezeichnete Hierarchie, ist wie folgt:
1. Mathematische Funktionen, z. B. Quadratwurzel,
2. Implizierte Multiplikation,
3. Multiplikation und Division und
4. Addition und Subtraktion.
Wenn ein Ausdruck zwei oder mehr Operatoren aus der gleichen Stufe der Hierarchie aufweist, werden diese in der Reihenfolge von links nach rechts ausgeführt. Die Verwendung von Klammern ermöglicht es, die Reihenfolge der Ausführung zu verändern. So wird in dem Ausdruck ^T4+5) der Additionsoperator vor dem Quadratwurzeloperator ausgeführt, obwohl der Additionsoperator auf einer niedrigeren Stufe in der
309832/0843
Hierarchie steht.
Überschreitung der Anzeige
Die Länge eines Ausdruckes ist nicht auf die Länge der Anzeige begrenzt. Beim Eintasten überzähliger Symbole verschiebt sich die Anzeige nach links, um hierfür Platz zu machen. Die maximal zulässige Länge eines Ausdrucks schwankt zwischen 35 und 69 Anschlägen und hängt von der 7vrt des Ausdruckes ab. Wenn zu viele Tasten betätigt v/erden, gibt die Anzeige die Bemerkung NOTE 09 wieder (siehe unten). Abhängig von der Art des Ausdruckes erscheint die Bemerkung entweder bevor oder nachdem die Verarbeitungs-Taste EXECUTE gedrückt wird. In beiden Fällen muß die Bedienungsperson die Lösch-Taste CLEAR tätigen und einen kürzeren Ausdruck angeben.
Korrekturen
Die Tasten BACK und FORWARD (rückwärts und vorwärts) ermöglichen es, einen angezeigten Ausdruck zu ändern oder zu korrigieren, ohne die ganze Folge noch einmal eintasten zu müssen. Wenn beim Schreiben eines Ausdruckes eine falsche Taste gedrückt wird, kann sie sofort anschließend durch Drücken der Rück-Taste BACK und der richtigen Taste korrigiert werden, beispielsweise folgendermaßen:
Tastenfolge . " ■■ Anzeicye
. 2 + BACK .< 4 2 ¥ 4
Ein angezeigter Ausdruck kann gelöscht werden, und zwar Taste
3 Ö 9832/084 3"
für Taste, in umgekehrter Reihenfolge, indem für jedes angezeigte Zeichen die Taste BACK einmal betätigt wird. Die gelöschten Zeichen können dann in die Anzeigeeinheit Zeichen für Zeichen zurückgegeben werden, indem die Taste FORVJARD gedrückt wird. Wenn ein Ausdruck ein falsches Zeichen enthält, wird die Taste BACK gedrückt, bis das Zeichen gelöscht ist, dann die richtige Taste betätigt und sodann die Taste FORWARD gedrückt, um die folgenden Tasten (und gegebenenfalls zusätzliche Tasten) eingeben zu können. Wenn beispielsweise die Zahl 123456789 fälschlicherweise als 123444789 in die Anzeige eingegeben worden war, kann der Fehler durch die folgenden Schritte korrigiert werden:
Tastenfolge Anzeige
BACK BACK BACK BACK BACK 1234
5 6 FORWARD FORWARD FORWARD 123456789
Wenn der falsche Ausdruck bereits ausgeführt worden war, aber seitdem keine weitere Taste betätigt worden ist, kann der Ausdruck (durch Betätigen der Taste BACK) wieder in die Anzeigeeinheit zurückgeholt, wie zuvor korrigiert, und dann wieder ausgeführt werden.
Jede Zeile eines gespeicherten Programmes kann in die Anzeigeeinheit zurückgeholt und dann durch wiederholte Betätigung der Taste BACK vollständig gelöscht werden. Eine weitere Betätigung der Taste BACK bringt die gesamte vorhergehende '/eile
309832/0843
des gespeicherten Programmes in die Anzeigeeinheit. Es ist dann möglich, durch diese Zeile rückwärts zu schreiten und dann deren Vorgänger .in die, Anzeigeeinheit zu holen usw. In analoger Weise kann die Taste FORWARD wiederholt betätigt werden, um die einer vorliegenden Zeile folgenden Zeilen in die Anzeigeeinheit zurückzuholen.
Zur Beseitigung eines Teiles einer Zeile wird die Taste BACK wiederholt betätigt, bis das äußerste, rechte Zeichen, Symbol oder Merkzeichen des zu beseitigenden Teiles zu dem äußersten rechten Bestandteil der Anzeige geworden ist. Sodann wird für jedes zu beseitigende Zeichen, Symbol oder Merkzeichen einmal die Beseitigungs-Taste DELETE betätigt. VJe η η dann der äußerste rechte Bestandteil der Zeile nicht mehr in der Anzeige sichtbar ist, wird wiederholt die Taste FORWARD betätigt. Der Benutzer kann dann mit dem Schreiben der Zeile fortfahren, sie ausführen oder sie abspeichern lassen, wie. es. angebracht erscheint. In dem folgenden Beispiel sei angenommen, daß von der folgenden Zeile der unterstrichene Teil entfernt werden soll:
FXD 2;X4Y;PRT (A+B)/A;GTO 4
Dies wird durch wiederholte Betätigung der Taste BACK bewirkt, bis die Anzeige folgendermaßen aussieht:
;X->Y; PRT (A+B)/A
Anschließend wird die Taste DELETE dreizehn mal betätigt. Zuerst verschiebt sich die Anzeige nach rechts, so daß der erste Teil" der Zeile in Sicht kommt, in diesem Fall FXD 2.
309832/0843
FXD erscheint jedoch nicht eher, als bis in der Anzeige Platz für alle vier Zeichen zuzüglich des Zwischenraumes zwischen D und 2 ist. Nachdem dieser erste Teil-der Zeile in Sicht kommt, scheint sich die Zeile dadurch zu verkürzen, daß sie auf der rechten Seite der Anzeige jedesmal reinen Bestandteil verliert, wenn die Taste DELETE betätigt wird, während der Rest der Zeile stationär bleibt. Nachdem diener Abschnitt entfernt worden ist, wird wiederholt die Tasi: FORVIARD betätigt, bis das Ende der nun modifizierten Zeile wie folgt in Sicht kommt:
FXD 2;GTO 4
Der Benutzer kann nun fortfahren, diese Zeile zu schreiben, und sie ausführen oder abspeichern zu lassen.
Zum Hinzufügen nines Abschnittes in das Innere einer Zeile wird die Taste BACK wiederholt betätigt, bis der äußerste rechte in der. Anzeige sichtbare Bestandteil das Zeichen, Symbol oder Merkzeichen ist, welches dem hinzuzufügenden Abschnitt unmittelbar vorangeht. Dann v/ird die Taste INSERT betätigt, und es werden die Tasten gedrückt, welche' den gewünschten Abschnitt beschreiben. Anschließend wird mehrmals die Taste FORWARD gedrückt, bis das Ende der Zeile in Sicht kommt. Beim Betätigen der auf INSER-T folgenden, aber dem FORWARD vorangehenden Tasten werden deren Merkzeichen in die Zeile eingegeben, ohne daß andere Bestandteile der Zeile verlorengehen. Der rechte Teil der Zeile v/ird nach rechts hinausgeschoben, um Platz für zusätzliche Bestandteile zu schaffen. Dieser Vorgang v/ird fortgeführt, bis eine der
309832/0843
Tasten BACK, FORWARD, DELETE, CLEAR, EXECUTE- oder STORE betätigt wird. Für gewöhnlich wird die Einfügung eines Teiles einer Zeile mit der Taste FORWARD beendet, um an das Ende der Zeile zurückzugelangen. Es sei beispielsweise angenommen, daß der Teil
eingefügt werden soll in die Zeile
10->A;30->C
Zum Durchführen der Einfügung wird mehrmals die Taste BACK betätigt, bis das Semikolon der äußerste rechte Bestandteil in der Anzeige wird. Dann wird die Taste INSERT gedrückt und anschließend die Tastenfolge 20 B eingegeben. Anschließend wird die Taste FORWARD betätigt, bis die ganze Zeile wie folgt sichtbar v/ird:
Wenn bei der Eingabe eines Teiles einer Zeile, der in eine bereits vorhandene Zeile eingefügt werden soll, von dem Benutzer ein Fehler gemacht wird, kann der fehlerhafte Bestandteil durch Betätigen der Taste DELETE wieder entfernt werden. Der Benutzer kann dann mit dem Schreiben des gewünschten Zeilenteiles fortfahren, nachdem die Taste INSERT betätigt worden ist.
Zusätzlich zu dem eben besprochenen Modifizieren einzelner Zeilen eines Programmes ist es auch möglich, ganze Zeilen in das Innere eines in dem Speicher abgespeicherten Programmes einzufügen' oder ganze. Zeilen von diesem zu entfernen. Wenn
309832/0843
beispielsweise zwischen zwei vorhandenen Zeilen 4 und 5 eine Zeile hinzugefügt werden soll, wird die hinzugefügte, Zeile die neue Zeile 5, während die alte Zeile 5 die neue Zeile 6 wird. Wenn in ähnlicher Weise eine Zeile 3 von einem Programm entfernt werden soll, wird die alte Zeile 4 die neue Zeile 3 und die alte Zeile 5 wird die neue Zeile 4 usv/. In beiden Fällen wird nach Durchführung der Änderung die Anzahl der zur Verfügung stehenden R-Register automatisch geändert.
Zum Einfügen einer Zeile in ein Programm wird der Programmzeilenzähler zuerst auf die Nummer der Zeile eingestellt, die der neuen Zeile zugeordnet werden soll. Dies kann beispielsweise durch Betätigen der Taste GO TO bewirkt werden und durch anschließendes Drücken der Zifferntasten, welche die Zeilennummern wiedergeben, sowie der Taste EXECUTE. Die neue Zeile wird dann in die Anzeigeeinheit eingeschrieben, und es werden anschließend die Tasten INSERT und STORE betätigt. Die neue Zeile wird abgespeichert und alle folgenden Zeilen des Programms zusammen mit ihren Zeilennummern werden entsprechend verschoben, uni Platz zu schaffen.
Zum Entfernen einer Zeile eines Programmes wird der Programmzeilenzähler zunächst auf die Nummer der Zeile eingestellt, die entfernt werden soll. Anschließende Betätigung'der Tasten RECALL und DELETE entfernen die Zeile und verschieben alle
309832/0843
folgenden Zeilen und ihre Zeilennummern, um die Lücke zu schließen.
Der Datenspeicher
Der Rechner enthält in seinem Grundausbau 179 Register: sechs Speicher-und Arbeitsregister (A, B, C, X, Y und Z) und 173 Programm- und Datenspeicherregister (RO bis R172). Zusätzliche 256 R-Register (R173 bis R428) können hinzugefügt werden, so daß sich insgesamt 435 Register ergeben.
Die Register A, B, C, X, Y und Z werden durch Betätigender zugehörigen Tasten Ä, B, C, X, Y und Z ausgewählt, während die R-Register durch Betätigen der Taste R( ) und der passenden Zifferntasten 0 bis 172 oder 428 ausgewählt werden. Das Argument der Taste R( ) kann ein Rechenergebnis sein. So wird beispielsweise durch Betätigen der Tasten R( ), (r 7, 0, /, 2, ) das Register R35 bezeichnet. Das Argument der Taste R( ) kann auch eine Veränderliche sein." Wenn beispielsweise das Register A die Zahl 15 enthält, wird durch Betätigen der Tasten R( ) und A das Register R15 bezeichnet. Wenn in ähnlicher Weise das Register R5 die Zahl 10 und das Register C die Zahl 25 enthält, wird durch Betätigen der Tasten R( ), (, R( ), 5, +, C, ) das Register R35 bezeichnet.
Das durch die Tastenfolge R( ), R( \., R( ) . .. R( \ gefolgt von einer oder mehrerer Zifferntasten bezeichnete Register wird «bestimmt durch die von den Zifferntasten angegebene
30 98*32/08^3
Nummer und die. in den verschiedenen Registern enthaltenen Nummern. Beispielsweise bezeichnet die Tastenfolge R( ), R( ), 2 das Register R8, wenn R2 die Zahl 8 enthält.
Wenn die der Taste R( ) folgende Zahl keine ganze Zahl ist, wird der Dezimalbruchanteil der Zahl nicht beachtet. Beispielsweise bezeichnet die Tastenfolge R( ), 3, 5, 6, ., 6 das Register R35. Ein Pluszeichen unmittelbar im Anschluß an die Taste R( ) wird fallen gelassen, wenn die es enthaltende Zeile abgespeichert wird. Beispielsweise wird die Tastenfolge. R( ),+,/,% als R( ) 35 abgespeichert. Ein der Taste R( ) unmittelbar folgendes Minuszeichen ist nicht zulässig und bewirkt einen Syntax-Fehler (Bemerkung NOTE 01) , Wenn der Taste R ( ) eine Quantität folgt, deren Wert entweder negativ oder größer ist als die Anzahl der zur Verfügung stehenden R-Register, tritt bei der Ausführung ein Fehler auf(abhängig von den tatsächlichen Umständen wird dann eine der Bemerkungen NOTE 05 oder NOTE 06 gegeben).
Einige der steckbaren Auslesespeicher-Moduln benötigen für sich einenTeil des Speichers. Wenn eine dieser Moduln eingesteckt wird, beansprucht es automatisch die benötigten Register, wobei mit dem Register mit der höchsten Nummer begonnen und nach unten fortgeschritten wird. Diese Register sind dann solange nicht für die Speicherung von Programmen und Daten verfügbar v/ie das Modul eingesteckt bleibt.
309832/0843
Wenn Programme gespeichert werden, beginnen sie in dem R-Register mit der höchsten zur Verfügung stehenden Nummer und füllen hintereinander den Speicher nach unten. In den Registern A, B, C, X, Y und Z können keine Programme gespeichert werden. Zweckmäßigerweise werden daher Daten zuerst in den Registern A, B, C, X, Y und Z und dann erst in den R-Registern mit niedrigen Nummern gespeichert. Wenn der Speicher kein Programm enthält (d.h. beim Einschalten oder wenn die Taste ERASE betätigt worden ist), stehen alle Register (bis auf die für eingesteckte Auslesespeicher-Modul benötigten) für die Datenspexcherung zur Verfügung. Wenn der Speicher jedoch ein Programm enthält, können die höher numerierton Register nicht für die Datenspexcherung verwendet werden. Falls die Bedienungsperson versuchen sollte, in einem nicht zur Verfügung stehenden Register Daten zu speichern, wird die diagnostische Bemerkung NOTE 06 angezeigt.
Die /anzahl der zur Verfügung stehenden R-Register kann jederzeit durch Betätigen der Tasten CLEAR LIST STOP bestimmt werden. Der Ausgabedrucker beginnt dann das Programm aufzulisten (mit Hilfe der STOP-Taste braucht nicht die Auflistung des gesamten Programmes abgewartet zu werden). Am Ende der Liste erscheint eine Nummer, der der Buchstabe R vorangestellt ist, welche die Anzahl der zur Verfügung stehenden R-Register angibt. (Das Register mit der kleinsten Nummer ist RO; von der ausgedruckten Zahl muß somit 1 abgezogen werden, um die Nummer des höchsten Registers zu erhalten, das für die Datenspexcherung zur Verfügung steht).
3 09832/0843
Datenspeicherung **
Jedes Register kann eine Daten-Zahl enthalten. Es ist nicht erforderlich, ein Register vor dem Eingeben einer Zahl zu löschen, da die zu speichernde Zahl automatisch eine bereits gespeicherte Zahl ersetzt. Beim Einschalten oder beim Betätigen der Taste ERASE wird jedoch der gesamte Speicher gelöscht. Zum Speichern von Daten wird die Taste —> benötigt. Beispielsweise wird durch Betätigen der Tasten
12.6 —> A EXECUTE
in dem A-Register 12.6 gespeichert. In ähnlicher Weise wird durch betätigen der Tasten
6 * X EXECUTE
in den X-Register 6 gespeichert und durch Betätigen der Tasten
1 9 ^ r( ) χ 2 EXECUTE
in dem Register R12 die Zahl 19. Eine gespeicherte Zahl kann betrachtet werden durch Verwendung entweder der Taste DISPLAY oder der Taste PRINT. Zum Beispiel wird durch
DISPLAY A EXECUTE
die derzeit in A gespeicherte Zahl angezeigt (wobei die Zahl in A gespeichert bleibt). In ähnlicher Weise wird durch
PRINT R( ) 12 EXECUTE
der Inhalt von R12 ausgedruckt (wobei die Zahl in R12 gespeichert bleibt) .
309832/0843
Impliziertes Z
Falls eine gespeicherte Zahl langer als hur vorübergehend aufbewahrt werden soll wird diese im allgemeinen nicht in dem Z-Kegister abgespeichert, da das Ergebnis jedes arithmetischen Ausdruckes automatisch in das Z-Register eingegeben wird, wenn keine andere Speicherstelle vorgegeben wird. Der Ausdruck
14.2 EXECUTE ist somit äquivalent mit
14.2 —>Z EXECUTE ·' '
Da bei beiden Ausdrücken der angezeigte Wert 14.2 ebenfalls in dem Z-Register abgespeichert wird. In ähnlicher Weise
3 # 4 + 1 6 / 3 EXECUTE äquivalent mit
3*4 + 16/3 -^Z EXECUTE.
Eine Aussage, die eine numerische Aktivität umfaßt, enthält für gewöhnlich einen Befehl, wie PRT, DSP oder —> . Wenn kein solcher Befehl vorhanden ist, wird für gewöhnlich automatisch die -{Quantität—^Z oder /mathematischer Ausdruck) —> Z angenommen, wenn die Zeile ausgeführt oder abgespeichert wird.. "
Die automatische Hinzufügung von Z an das Ende einer Aussage
wird "impliziertes Speichern in Z" genannt.
Wenn die Bedienungsperson zum Beispiel die Tasten A EXECUTE betätigt, um den Inhalt von A zu betrachten, wird tatsäch-
309832/0843
lieh die Zeile A—>Z ausgeführt. Der Inhalt von A wird sichtbar, weil das die numerische Quantität ist, die dem letzten Zuweisungsbefehl zugeordnet ist, der in der Zeile ausgeführt worden ist. Inzwischen ist der Inhalt von Z durch denjenigen von A ersetzt worden und damit verloren gegangen. Das bevorzugte Verfahren zum Betrachten eines Registerinhaltes ist daher die Verwendung der Tasten PRINT oder DISPLAY, weil diese den Inhalt keines der Register stören.
Wegen der implizierten Speicherung in Z wird das Z-Register für die Speicherung von Daten bei vom Tastenfeld aus durchgeführten Berechnungen nicht empfohlen, außer in bestimmten Situationen. Wenn die Bedienungsperson beispielsweise eine Anzahl von Zahlen n,, n2 n_, ... addieren will, wird durch Ausführung der Zeile 0 —>Z das Register zuerst auf 0 gesetzt. Dann werden die Zahlen folgendermaßen addiert:
Xi1 + Z n2 + Z n3 + Z
Wegen der implizierten Speicherung in Z geschieht tatsächlich folgendes:
nj^ + Z—^Z H1 + 0-»Z ,
n2 + Z -» Z n2 + n.^ —»Z
n- + Z
309832/0843
Register Arithmetik
Arithmetische Ausdrücke können mit Registerbezeichnungen an Stelle von tatsächlichen Zahlen geschrieben werden. Wenn der Ausdruck ausgeführt wird, werden die gerade in diesen Registern gespeicherten Werte automatisch für die .Registerbezeichnungen substituiert, um den Ausdruck auszuwerten. Wenn der Benutzer beispielsweise die folgenden SpeicherZuweisungen gemacht hat:
12.6 6
19
ist die Tastenfolge . ' ·
A + R ( ) 1 2 - X EXECUTE .
äquivalent mit der Tastenfolge
12.6+19-6 EXECUTE
Andere in diesen Registern gespeicherte Werte ergeben für diesen Ausdruck selbstverständlich andere Ergebnisse.
Gemäß folgendem Beispiel:
3 * 1 2 . 6 + 4 - 6 EXECUTE
können Zahlen und Registerbezeichnungen in einem Ausdruck auch gemischt werden.
in A
in X
in R12
309832/0843
Fest- und Gleitkomma-Zahlen
Zahlen können entweder in Festkomma- oder Gleitkomma-Darstellung in das Sichtgerät eingetastet und dort angezeigt werden. In Festkomma-Darstellung erscheint die Zahl in dem Sichtgerät wie sie üblicherweise geschrieben wird, und zwar mit richtig angeordnetem Komma (allerdings wegen der amerikanischen Schreibweise als Dezimalpunkt dargestellt) Gleitkomma-Zahlen werden so dargestellt, daß der Dezimalpunkt auf die erste Stelle folgt (wobei führende Nuinlen unberücksichtigt bleiben) und der erforderliche Faktor durch einen Exponenten angegeben wird. Der Exponent, eine positive oder negative Potenz der Grundzahl zehn, gibt die Richtung und die Anzahl der Stellen an, in welcher bzw. um welche der Dezimalpunkt verschoben werden müßte, um die Zahl als Festkomma-Zahl darzustellen. Der Exponent kann in dem Rechner eine ganze Zahl in dem Bereich von -99 bis +99 sein. Das Folgende sind Beispiele von Festkomma- und Gleitkomma-Darstellung:
Festkomma Gleitkomma 1234.5 = 1.2345 X 103 0.0012345 « 1.2345 X 10~3 (Exponent) 1.2345 = 1.2345 X 10°
Die Taste FIXED N (Fest N) wählt die Festkomma-Darstellung für die anzuzeigenden Ergebnisse aus. Der Buchstabe N gibt dabei an, daß nach Betätigung dieser Taste eine der Zifferntasten (0 bis 9) gedrückt werden muß, um die Anzahl der
309832/0843
rechts vom Komma darzustellenden Stellen auszuwählen.
Die Taste FLOAT N (Gleit N) arbeitet in der gleichen Weise wie die Taste FIXED N, nur daß jetzt eine Gleitkomma-Darstellung ausgewählt wird, wobei N die erforderliche Potenz von zehn angibt. (Wenn der Rechner eingeschaltet wird, ist automatisch FLOAT 9 eingestellt.) Beispielsweise wird die Zahl 123.456789 in der Darstellung FLOAT 9 dargestellt als 1.234567890E02; Der Buchstabe E in der Anzeige gibt an, daß die nächsten beiden Stellen den Exponenten darstellen. Wenn der Exponent negativ ist, folgt dem E ein Minuszeichen:
TastenfolgeAnzeige
.001234. EXECUTE 1.234000000E-03 Es können nicht mehr als zehn geltende Stellen' dargestellt werden. Wenn daher eine Zahl zu groß wird, um richtig als Festkomma-Zahl dargestellt zu werden, wird sie automatisch als Gleitkomma-Zahl angezeigt. Wenn die Zahl zu klein wird, werden nur Nullen angezeigt, aber die Zahl kann dennoch betrachtet werden, wenn dann Gleitkomma-Darstellung gewählt wird.
Die Taste ENTER EXPONENT (Exponenteneingabe) wird dazu benutzt, den Exponenten E zu bestimmen, wenn Zahlen in Gleitkomma-Darstellung eingetastet werden, wie im folgenden dargestellt:
309832/0843
Tastenfolge ^ Anzeige
FLOAT N 4 EXECUTE
2.56 ENTER 2 EXECUTE 2.5600E 02
EXP
4.7 3 ENTER - 2 EXECUTE 4.7300E-02 EXP
Rechenbereich
, -gg , Der Bereich des Rechners geht von ZIlO bis Z. 9.999999999
χ 10 . Wenn dieser Bereich während einer Rechnung überschritten wird, erscheint auf dem Sichtgerät die diagnostische Bemerkung NOTE 10. Rechnungen, die normalerweise eine Null ergeben, wie die Subtraktion einer Zahl von einer ihr gleichen Zahl, bewirken keine Bereichsüberschreitung.
Druckerbetrieb
Die Taste PRINT (Drucken) wird dazu benutzt, sowohl numerische Werte als auch alpha-numerische Nachrichten auszudrucken, wobei die Form des Abdruckes in der gleichen Weise durch die Tasten FIXED N und FLOAT N geändert wird, wie beim Sichtgerät. Dies wird durch die folgenden Beispiele illustriert (bei denen angenommen wird, daß die Tasten FIXED N, 2 und EXECUTE gedrückt wurden, um die Form des Ausdruckes festzulegen):
pruckoperation Tastenfolqe Abdruck
Zahl PRINT 12 3 EXECUTE 123.00
Rechenresultat PRINT 6 + 8 /2 EXECUTE 10.00 Speicherregister- PRINT A EXECUTE (Inhalt von Λ)
inhalt ·
309832 /08 A3
OJ
Zum Ausdrucken einer alpha^numerisehen Nachricht muß zu Beginn und am Ende der Nachricht die Anführungs"Taste (") betätigt werden (das Anführungszeichen wird jedoch nicht ausgedruckt),. wie in dem folgenden Beispiel dargestellt:
Tastenfolge PRINT " MESS A G-E SPACE NO . 2 " EXECUTE
Abdruck MESSAGE NO.. 2
In jeder Zeile einer Nachricht können höchstens 16 Zeichen (einschließlich der Zwischenräume) gedruckt werden und jede Zeile muß in Anführungszeichen eingeschlossen werden. Wenn die Zeilen auf ein und denselben Befehl PRINT folgen, müssen sie durch Komma voneinander getrennt werden, wie folgt ' '
PRINT " " , " *n EXECUTE
Hierdurch werden zwei Zeilen ausgedruckt. Wenn Nachrichten und numerische Werte gemischt ausgedruckt werden sollen, müssen sie durch ein Komma voneinander getrennt werden, wie in dem folgenden Beispiel dargestellt, in welchem angenommen wird, daß in dem Α-Register die'Zahl 456 gespeichert ist:
PRINT " A= " , A EXECUTE A=456.00
Die Taste SPACE N (spationieren) bewirkt, wenn sie von einer oder mehreren Zifferntasten gefolgt wird, Vielehe eine der Zahlen O bis 15 angeben, daß der Drucker in senk-
309832/0843
rechter Richtung spationiert (wobei die angegebene Zahl die Anzahl der Zeilenschaltungen bestimmt). Dies wird durch das folgende Beispiel illustriert:
Tastenfolge Abdruck
PRINT "DAYS" EXECUTE DAYS
SPACE N 2 EXECUTE
PRINT 4 EXECUTE 4.00
Die meisten Tasten bewirken, wenn sie innerhalb einer Nachricht verwendet werden, den Abdruck des Zeichens, das auf der Taste angegeben ist. Die folgenden Tasten bilden jedoch Ausnahmen:
1. SPACE druckt einen Zwischenraum
2. GO TO druckt q)
' 3. R( ) druckt :
4. STOP · druckt 1
5. ENTER druckt t
EXP
Die folgenden Tasten können entweder in einer Nachricht nicht benutzt werden oder sie bewirken den Abdruck eines sinnlosen Zeichens:
1. Alle Halbtasten an der Oberseite des Tastenfeldes und die vier Leertasten im linken Tastenblock.
2. Die Tasten EXECUTE, RUN PROGRAM und STORE.
3. Die Tasten JUMP, END, IF, GO TO/SUB, FLAG N, RETURN und SET/CLEAR FLAG N.
309832/0843
Programme
Ein Programm ermöglicht es dem Rechner, die Tasten-Anweisungen automatisch auszuführen, die zur Lösung eines bestimmten Problemes erforderlich sind. Zuerst muß das Programm in den Speicher des Rechners geladen werden, um dem Rechner anzugeben, welche Tastenfolgen benötigt werden und in welcher Reihenfolge die Anweisungen ausgeführt werden sollen. Wenn ein Programm geladen ist, bewahrt der Rechner dieses Programm bis ein neues Programm an seine Stelle gebracht oder der Rechner abgeschaltet wird. Ein häufig benötigtes Programm braucht nicht jedesmal neu eingetastet zu werden, denn ein gespeichertes Programm kann auf Magnetkarten aufgezeichnet werden. Solche aufgezeichneten Programme können dann jederzeit später neu in den Rechner eingeladen werden. Wenn ein Programm geladen ist, wird es in den Anfangszustand gebracht und sodann durch Betätigung der Taste RUN PROGRAM (Programmablauf) seine Ausführung begonnen.
Ein vollständiges Programm besteht aus Programminformations-Zeilen,von denen jede über das Tastenfeld einzeln in den Speicher des Rechners geladen werden kann, indem nach Beendigung der Zeile die Taste STORE (Speichern) betätigt wird. Das Zeilenend-Symbol f- wird automatisch am Ende jeder Zeile angezeigt, nachdem diese Zeile abgespeichert worden ist. Ein Programmzeilen-Zähler verfolgt laufend, welche Zeile eines Programmes gerade ausgeführt wird oder ausgeführt oder abgespeichert werden soll. Vor dem Abspeichern
309832/0843
einer Zeile in den Speicher des Rechners kann sie mit Hilfe der Tasten BACK, FORWARD, CLEAR, DELETE und die in INSERT ediert, d.h. in die der Dar Stellungsform geändert werden. Nachdem alle Zeilen eines Programmes abgespeichert sind, können einzelne Zeilen zum Edieren oder für andere Zwecke wieder in das Sichtgerät zurückgerufen werden. Ein solcher Rückruf wird dadurch bewirkt, daß nacheinander die Tasten CLEAR und GO TO und daran anschließend die Zifferntasten betätigt werden, welche die Nummer der Zeile angeben, welche zurückgerufen v/erden soll, und schließlich die Taste RECALL gedrückt wird. Zum Wiederabspeichern der rückgerufenen Zeile oder deren edierte Fassung braucht nur die Taste STORE betätigt zu werden.
Magnetische Programmkarten
Zum dauernden oder vorübergehenden Speichern von Programmen und Daten wird eine Magnetkarte 16 benutzt, wie sie in Fig. 1 dargestellt ist. Beide Seiten der Karte können unabhängig voneinander zum Speichern von Daten oder Programmen verwendet werden, es können jedoch auf der gleichen Seite einer Karte keine Daten und Programme gemischt werden. Wenn eine Kartenseite aufgezeichnet worden ist, kann sie dadurch gegen ein versehentliches Löschen geschützt werden, das ein entsprechender Sicherheits-Abriß von der Karte abgetrennt wird. Die Aufzeichnung auf einer so geschützten Kartenseite kann nicht mehr verändert werden.
309832/0843
Ein in den Speicher geladenes Programm· kann dadurch auf einer Magnetkarte aufgezeichnet werden, daß folgende Tasten gedrückt werden:
END EXECUTE RECORD EXECUTE
Hierdurch läuft der Motor des Kartenlesers an und es kann jetzt eine ungeschützte Karte in den Kartenleser eingeführt werden. Das Programm kann aus der Karte wieder in den Speicher zurückgeladen werden, indem nacheinander die Tasten ERASE (zum Löschen des Speichers), END, EXECUTE, LOAD und EXECUTE gedruckt werden und daran anschließend die Karte in den Kartenleser eingeführt wird.
Die Programmzeile
Obwohl die Zeilen eines Programmes in dem gleichen Speicher untergebracht werden wie die Daten, steht die Länge der einzelnen Zeilen in keinem Zusammenhang mit der Länge eines Registers. Der Rechner verwendet einfach so viele Register, wie zur Aufnahme einer bestimmten Zeile erforderlich ist. Die Länge einer Zeile wird durch den Programmierer bestimmt und hängt von den Anforderungen des Programmes ab. Die Zeilenlänge ist jedoch in der gleichen Weise durch den Rechner begrenzt, wie ein einzelner Ausdruck. Wenn eine Zeile zu lang ist, erscheint entweder vor oder nach Betätigung der Taste STORE die diagnostische Bemerkung NOTE 09. Wenn diese Bemerkung auf dem Sichtgerät angezeigt wird, hat die Bedienungsperson die Taste CLEAR zu betätigen und sodann eine vollständige·- aber kürzere - neue Zeile einzutasten.
309832/0843
Die Zeilennununern werden durch den Rechner automatisch in strenger numerischer Reihenfolge zugeteilt, wobei mit Zeile 0 begonnen wird. Die Bedienungsperson muß daher wissen, welche Zeilennummer jeweils zugeteilt wird, wenn in seinem Programm GO TO-Anweisungen enthalten sind. Die Zeilennummern bilden keinen Teil des Programmes, da sie automatisch verändert werden, wenn das Programm an eine andere Stelle des Speichers übertragen wird. Es sei beispielsweise angenommen, daß ein Programm (Mr. 1) zehn Zeilen umfaßt (Zeilen 0 bis 9) und bereits in dem Speicher enthalten ist. Wenn nun ein zweites Programm (Nr. 2) unterhalb Programm Nr. 1 geladen werden soll, dann wird die erste Zeile des Programms Nr. 2 die Zeile 10, wohingegen, wenn das Programm Nr. 2 das einzige Programm in dem Speicher gewesen wäre, seine erste Zeile die Zeile 0 gewesen wäre. Natürlich müssen durch den Programmierer alle GO TO-Anweisungen geändert werden, um solche Zeilennummer-Änderungen zu berücksichtigen.
Eine Zeile kann eine oder mehrere Aussagen enthalten, die jeweils durch Semikolon abzutrennen sind. Die tatsächliche Anzahl der Aussagen in einer Zeile ist für gewöhnlich ohne Bedeutung, weil es wichtiger ist, die Aussagen in der richtigen Reihenfolge als in einer bestimmten Zeile zu haben, Die Lage einer Aussage wird jedoch bedeutsam, wenn eine Zeile eine IF-Aussage enthält oder wenn eine Verzweigung ge-
309832/0843
macht werden soll. Im ersten Fall müssen die bedingt auszuführenden Aussagen in der gleichen Zeile enthalten sein, wie die IF-Aussage und müssen dieser folgen. Im letzteren Fall wird eine Verzweigung stets aum Anfang einer Zeile ge-* macht. Die erste nach einer Verzweigung auszuführende Aussage muß daher die erste Aussage der Zeile sein, zu welcher die Verzweigung gemacht wird. Eine Zeile sollte nicht zuviel Aussagen enthalten, da eine kurze Zeile leichter wieder zu ändern ist als eine lange Zeile.
Dateneingabe .
Programmaussagen, die von der Betätigung der Taste ENTER, herrühren, werden dazu benutzt, das Programm während seiner Ausführung anzuhalten, so daß die Bedienungsperson Daten eintasten kann. Die einfachste Aussage enthält nur die Bezeichnung eines Registers; diese wird angezeigt, wenn'die Programmausführung angehalten wird. Die während des Halts eingetasteten Daten werden in dem bezeichneten Register abgespeichert, wenn anschließend die Taste RUN PROGRAM betätigt wird. Die Tastenfolge ENT A bewirkt z.B. daß die eingetasteten Daten in dem Α-Register abgespeichert werden. Eine solche ENTER-Aussage kann mehrere Registerbezeichnungen enthalten, die durch Komma voneinander getrennt werden müssen. Das Programm wird dann nacheinander für jedes Register anhalten. Beispielsweise ist die Folge ENT A, R13, X; gleichbedeutend mit den drei Aussagen ENT A; ENT R13; ENT X;. Der Registerbezeichnung kann eine Kennzeichnung vorangestellt werden (die von einem Komma gefolgt wird). In diesem Fall wird an .
309832/0843
Stelle der Registerbezeichnung die Kennzeichnung angezeigt, wenn der Programmhalt auftritt. Zum Beispiel wird auf die Folge ENT "A=?",A; die Kennzeichnung A=? angezeigt und die darauffolgende Dateneingabe in das A-Register eingespeichert.
Verzweigung
Programmzeilen werden normalerweise in ihrer numerischen Reihenfolge ausgeführt. Einige Aussagen bewirken jedoch eine Abänderung dieser Ausführungsfolge. Bei einer solchen Verzweigung geht das Programm nicht zu der nächstfolgenden Zeile, sondern verzweigt sich zu einer anderen vorgegebenen Zeile und führt dort die Programmausführung weiter. Es gibt zwei Arten von Verzweigungen, die bedingten und die unbedingten Verzweigungen. Unbedingte Verzweigungen werden durch die Tasten GO TO, JUMP und GO TO SUB ausgelöst und bedingte Verzweigungen werden durch die Taste IF bewirkt.
Bs gibt drei Arten unbedingter Verzweigungen mit der Anweisung GO TO. Bei der ersten Art, dem absoluten GO TO, besitzen die Aussagen die Form GO TO N, wobei N eine ganze Zahl ist, die sich auf eine bestimmte Prograaunzeile bezieht. Die »weite Art ist das relative GO TO. Hier besitzt die Aussage die Form GO TO + N oder GO TO - N, wobei N eine ganze Zahl lit. Diese Aussage gibt die Anweisung, N Programmzeilen vorwärts oder rückwärts zu schreiten. Die dritte Art ist das GO TO mit Kennzeichnung. Bei dieser Art besitzen die Aussagen die Form GO TO "LABEL", wobei LABEL eine ganz be-
309832/0843
stimmte alpha-numerische Zeichengruppe ist und in Anführungszeichen eingeschlossen werden muß. Die Anzahl der Zeichen in der Kennzeichnung ist praktisch unbegrenzt, jedoch wertet der Rechner nur die letzten vier Zeichen einer Kennzeichnung aus. Wenn eine solche GO TO "LABEL"-Anweisung ausgeführt wird, verzweigt das Programm zu einer Programmzeile mit dieser Kennzeichnung als erste Aussage dieser Zeile. Es werden jedoch nur die letzten vier Zeichen der ursprünglichen Kennzeichnung berücksichtigt. Wenn zwei Programmzeilen dieselbe Kennzeichnung aufweisen, verzweigt das Programm stets zu der
ersten solchen Zeile. '■
In einem Programm bewirkt eine GO TO-Anweisung, daß die'Program-Ausführung bei der Zeile fortfährt, deren Zeilennummer angegeben· ist. Wenn eine solche GO TO-Anweisung vom Tastenfeld aus eingegeben und von der Taste RUN PROGRAM gefolgt wird, bewirkt die GO TO-Anweisung, daß die Programmausführung bei der Zeile beginnt, deren Nummer angegeben ist. Wenn jedoch eine GO TO- ' Anweisung vom Tastenfeld aus eingegeben und von der Taste EXECUTE gefolgt wird, läßt die GO TO-Anweisung den Rechner zu der angegebenen Zeile gehen, aber nicht die Programmausführung beginnen. Das folgende Verhalten hängt dann von der nächsten betätigten Taste ab. Eine Zeilennummer ist nur dann
1 . i
gültig, wenn ein gerade gespeichertes Programm eine derartig bezeichnete Zeile besitzt, oder wenn sie die nächst höhere Nummer nach derjenigen der letzten gespeicherten Zeile ist. Alle anderen Zeilennummern sind ungültig und bewirken, wenn . ·
309832/0843
sie in einer GO TO-Anweisung verwendet werden die Anzeige der diagnostischen Bemerkung NOTE 08.
Die Taste JUMP ermöglicht eine relative Verzweigung. Diese Anweisung kannf anders als die GO TO-Anweisung, eine numerische Konstante, eine Registerbezeichnung oder jeden zulässigen Rechnerausdruck als Parameter besitzen. Die Anweisung JUMP-6 bewirkt, daß das Programm sechs Zeilen zurückgeht. Bei JUMP A springt das Programm um soviele Zeilen, wie der ganzzahlige Wert von A angibt, d.h. wenn A den Wert 6.23 enthält, um sechs Zeilen. Wenn A den Wert 6.23 enthält und B den Wert 2, dann ist die Anweisung JUMP (A + B) zulässig und ein Befehl, acht Zeilen in dem Programm zu überspringen.
Es ist häufig erwünscht, die gleichen Operationen an verschiedenen Stellen eines Programmes auszuführen. Man kann natürlich einfach eine Gruppe von Programmzeilen wiederholen, aber dies kann zeitraubend und fehleranfällig sein. Vor allem aber wird durch eine unnötige Wiederholung von Programmzeilen Speicherplatz vergeudet. Der Rechner hat die Möglichkeit, einen Satz Programmzeilen einmal zu speichern und ihn dann vom Programm her beliebig oft aufzurufen. Solch ein Satz Programmzeilen wird Unterprogramm genannt.
Wenn ein Unterprogramm aufgestellt und im Speicher untergebracht ist, kann innerhalb eines Programmes auf das Unterprogramm verzweigt werden. Dieser Vorgang wird Unterprogramm-
309832/0843
Aufruf genannt. Das Programm, welches das Unterprogramm aufruftf wird für gewöhnlich als Hauptprogramm oder als Rufprogramm bezeichnet. Wenn die Unterprogramm-Ausführung beendet ist, wird zu dem Rufprogramm zurückverzweigt und die Ausführung des Hauptprogrammes an der Stelle wieder aufgenommen, an der sie durch den Unterprogramm-Aufruf unterbrochen worden war. Die Verzweigung von dem Unterprogramm zu dem Hauptprogrararri wird Rückkehr genannt. Es ist zu beachten, daß die Rückkehr zu der Zeile N + 1 erfolgt, wenn das Unterprogramm in Zeile N aufgerufen worden ist.
Die Verzweigung zu einem Unterprogramm wird durch die Anweisung GO TO SUB bewirkt. Diese Anweisung wirkt fast genauso wie GO TO und kann für eine Verzweigung zu einer absoluten, 'relativen oder durch eine Kennzeichnung bestimmten Adresse erfolgen. Der Unterschied zwischen den Anweisungen GO T.O und GO TO SUB besteht darin, daß der Rechner die Zeilennummer für die Rückkehradresse abspeichert, wenn die Anweisung GO TO SUB für die Verzweigung verwendet wird. Für die Rückkehr-Verzweigung wird am Ende des Unterprogr amines die Anweisung RETURN gespeichert. Der Rechner liefert dann selbst die Adresse für die Rückkehr-Verzweigung.
Die Anweisung IF ermöglicht die besonders leistungsfähige bedingte Verzweigung, die es dem Rechner gestattet, zu entscheiden, ob er die folgenden Anweisungen in der gleichen Zeile wie diese IF-Anweisung ausführt oder nicht. Die An-
t.
309832/0843
Weisung IF ist noch durch die jeweilige Bedingung zu ergänzen, z.B. zur Anweisung IF A-B;. Die Zeile, in welcher eine IF-Anweisung auftritt, kann dann noch mit weiteren Anweisungen gefüllt werden. Die Arbeitsweise ist dann folgendermaßen. Zuerst wird die Bedingung, welche dem IF folgt, ausgewertet, um zu überprüfen, ob diese Bedingung· erfüllt ist. Wenn dies der Fall ist, wird die auf die IF-Anweisung folgende Anv/eisung ausgeführt. Wenn die Bedingung nicht erfüllt ist, fällt die Programmausführung bei der folgenden Zeile fort. In dem angegebenen Beispiel wird zuerst A-B berechnet, um festzustellen, ob der Inhalt des A-Registers gleich demjenigen des B-Registers ist. Wenn dies der Fall ist, wird der Rest der Zeile ausgeführt. Wenn dies jedoch nicht zutrifft, wird der Rest der Zeile nicht beachtet und die Programmausführung bei der nächsten Zeile forgesetzt.
Die Bedingungen in einer IF-Anweisung verwenden stets eine der folgenden Tasten, um das Verhältnis zweier Werte, Registerinhalte, arithmetische Ausdrücke oder Marken zu prüfen:
1. > (größer als)
2. is (kleiner als oder gleich)
3. = (gleich)
4. φ (ungleich)
Wenn das Verhältnis so ist, wie auf der Taste angegeben, wird die Antwort "richtig" (Eins) gegeben, anderenfalls die Antwort "falsch" (Null). Wenn beispielsweise der Inhalt von A und B gleich 2 ist, speichert
309832/0843
A = B —> C 1 Jfiach C
A φ B —>C O nach C
A + B = A -> C O nach C
Hierfür kann wieder jeder beliebige Ausdruck verwendet werden. Der Ausdruck A + B (A = B) + AB (A ^ B) + (A + B + C) (A > B) ~> C speichert beispielsweise 2 + 2(1) 4-4 (1) + 6(0), d.h. 8 nach C. . .
Die Anweisungen STOP und END
Die Taste STOP hält die Prograiranausführung an, wenn sie als Anweisung in einem Programm verwendet oder während des Programmablauf es -betätigt wird. Sie sollte nur benutzt werden, ! wenn ein Programm beseitigt werden soll, etwa weil es nicht mehr benötigt wird, oder weil die Programmaüsführung noch
einmal von Anfang an begonnen, werden soll.
Die Taste END dient dem doppelten Zweck, die Programmaus-
■ - i führung anzuhalten und den Rechner in seinen Anfangszustand . S
zu bringen, um die Programmausführung bei Zeile 0 zu be- I ginnen. · i
i Die Marken
Der Rechner stellt dem Benutzer 16 Marken zur Verfügung. Sie können durch die Taste FLAG N (Marke N) ausgewählt werden, wenn Zifferntasten folgen, die eine der Marken 0 bis 15 kennzeichnen. Die Anweisung FLAG N 4 wählt beispielsweise die Marke 4 aus. Für gewöhnlich werden Marken
'309832/0843
als Teil einer IF-Anweisung verwendet, um es dem Benutzer zu ermöglichen/ einen speziellen Zustand zu definieren.
Die in dem Rechner zur Beschreibung der Marken verwendete Schreibweise ist recht einfach! Wenn eine Marke gesetzt, also gewissermaßen eine Signalfahne gehoben wird, besitzt die Marke den Wert 1 und wenn die Marke gelöscht, d.h. die Signalfahne gesenkt wird, den Wert 0.
Die Marken werden mit Hilfe der Taste SET/CLEAR FLAG VN gesetzt und gelöscht. Diese Taste wird zum Setzen einer Marke einmal und zum Löschen dieser Marke zweimal betätigt. Beispielsweise bewirkt die einmalige Betätigung der Taste SET/ CLEAR FLAG N gefolgt von den Zifferntasten 1 und 2 das Setzen der Marke 12.- In ähnlicher Weise lös-cht eine doppelte Betätigung der Taste des SET/CLEAR FLAG N gefolgt von der Zifferntaste 7 die Marke 7. Eine einmal gesetzte Marke bleibt solange gesetzt, bis sie ausdrücklich gelöscht wird. Beim Abschalten des Rechners, bei Betätigung der Taste ERASE oder bei Ausführung einer END-Anweisung werden jedoch alle Marken automatisch gelöscht.
Solange kein Programm ausgeführt wird, kann der Zustand jeder Marke dadurch untersucht werden, daß die Taste FLAG N gefolgt von einer Zifferntaste, welche die fragliche Marke bezeichnet, sowie der Taste EXECUTE betätigt wird.
3 09832/0843
Es wird sodann der Zustand der Marke, v*d.h. der zugehörige Wert, angezeigt. Eine solche Prüfung ändert den Zustand der Marke nicht.
Zusätzlich zu ihrer normalen Verwendung dienen die Marken 0 und 13 einem besonderen .Zweck. Die Marke 0 kann vom Tastenfeld aus gesetzt werden, während ein Programm bereits lauft, und zwar durch Betätigen der Taste SET/CLEAR FLAG N. Die Marke 13 wird automatisch gesetzt, wenn das Programm für eine ENTER-Anweisung anhält und sodann die Taste RUN PROGRAM betätigt wird, ohne daß Daten eingetastet werden.
Modus Auflisten
Die Taste LIST (Auflisten) erleichtert das Auflisten eines intern gespeicherten Programmes mit Hilfe des Ausgabedrucker^ des Rechners. Die Auflistung enthält die Zeilennummer jeder Zeile zusammen mit einem alpha-numerischen Merkzeichen dieser Zeile. Am Ende der. Auflistung wird dann eine Angabe über die Anzahl der noch verbleibenden Speicherregister ausgedruckt. · ■
Eine Programmauflistung wird dadurch bewirkt, daß zuerst der Programmzeilenzähler auf die Zeile eingestellt wird, mit der die Auflistung beginnen soll. Dies kann dadurch erfolgen, daß die Taste GO TO gefolgt von Zifferntasten für die Zeilennummer und.der Taste EXECUTE betätigt wird. Anschließend wird die Taste LIST betätigt, um die Auflistung
309832/0843
zu beginnen, welche dann mit der letzten gespeicherten Programmzeile endet.
Modus Verfolgen
Ein Verfolge-Modus des Rechners ermöglicht es dem Benutzer, ein gedrucktes Betriebsprotokoll zu erlangen. Die Form dieses gedruckten Protokolls ist von der Art der durchgeführten Operationen abhängig.
Der Rechner kann durch die Betätigung der Tasten TRACE und EXECUTE oder durch Programmausführung der Anweisung TRACE in den Verfolge-Modus versetzt werden. In seinen Normalzustand kann er dann zurückversetzt werden durch Betätigen der Tasten NORMAL und EXECUTE oder durch Pr ograrnmaus führung der Anweisung NORMAL. Beim Einschalten wird der Rechner automatisch in seinen Normalzustand versetzt.
Im Verfolge-Modus druckt der Rechner eine Darstellung jeder über das Tastenfeld ausgeführten Zeile und das Ergebnis solcher ausgeführten Anweisungen aus, welche einen Betrag erzeugen, der als Resultat betrachtet wird. Einige Tastenanweisungen, wie CLEAR, werden nicht ausgedruckt.
Das folgende Beispiel veranschaulicht den erhaltenen Abdruck, wenn der Rechner in seinem Verfolge-Modus arbeitet:
309832/0843
0.00 w
0.1
Li 10.<
2.00 20.00 ERT11A=",A, "B=",
A= 2.00
B= 2.00
Wenn ein Programm in dem Verfolge-Modus abläuft, druckt der Rechner die Zeilennummer jeder ausgeführten·Zeile und darunter alle Werte, die durch diese Zeile in Register eingespeichert werden. Das Ablaufenlassen eines Programmes in dem Verfolge-Modus kann sehr nützlich bei der Beseitigung von Programmfehlern sein, wenn die bei der Ausführung des zu prüfenden Programmes gespeicherten Zahlen untersucht werden. Ein Programm kann ohne Änderungen dadurch in einfacher Weise in dem Verfolge-Modus ablaufen, das nacheinander die Tasten TRACE und EXECUTE betätigt werden, bevor die Ausführung des Programmes begonnen wird. Weiterhin kann der Rechner während der Ausführung eines Programmes, welches leine Anweisung NORMAL enthält, dadurch in den Verfolge-Modus gebracht, werden, daß einfach die Taste TRACE gedruckt wird.
309 832/0843
ι I . !, I ' ι I ',1
Eft leb nicht erforderlich, vorher die JProgrammausführung anzuhalten.
Zusammenstellung der diagnostischen Bemerkungen
Die folgenden diagnostischen Bemerkungen und zugehörigen Erläuterungen werden angezeigt, wenn bestimmte Programmoder Bedienungsfehler von dem Rechner festgestellt werden. NOTE 01: Im Zusammenhang mit den vorhergehenden Tastenanschlägen ist die zuletzt betätigte Taste für den Rechner unverständlich. Beispiel: Ein Multiplikationsoperator im Anschluß an die Taste R( ). Die Bemerkung NOTE 01 1st die häufigste Bemerkung und wird für gewöhnlich sofort angezeigt, wenn die falsche Taste betätigt wird.
NOTE 02: Versuch, einen Befehl auszuführen, der von einem unzulässigen Wert gefolgt wird. Beispiel: Taste FIX N gefolgt von einer Zahl größer als 9. Die Quadratwurzel ist ein Spezialfall:
a) /tr bewirkt NOTE 01, wenn minus eingegeben wird,
b) y/ (-4) oder νΆ (wobei A eine negative Zahl enthält) bewirkt bei der Ausführung NOTE 02.
NOTE 03: Die Anweisung hat eine überzählige linksseitige Klammer oder eine fehlende rechtsseitige Klammer
NOTE 04: Die Anweisung hat eine überzählige rechtsseitige
Klammer oder eine fehlende linksseitige Klammer
* 309832/0843
- ιοί ■* -' ; ^s , r-i·,. ν;Λ
C Ι,- 0 -- .J . q ■ ' i
0 ') $t-
NOTE 05: a) Versuch der Verwendung eines nichtestiatiöJieiiv* ;
den oder nicht zur Verfügung stehendenR-1Retjlslers als Wert in einem Ausdruck»
b) Versuch eine Marke mit einer Zahl gröBer als 15 zu bezeichnen. . ; ;
NOTE 06: a) Versuch, in ein nicht existierendes odör ein nicht zur Verfügung stehendes R-Register eirtau* speichern. ■ , *
b) Versuch, eine Zahl einzugeben» derenExponent
: ψ
einen Absolutwert größer als 99 besitzt. NOTE 07: Versuch, ein RET auszuführenf 4sii» nicht ein passen4"
des GSB vorangegangen ist. ■
NOTE 08: Versuch, ein GTO auszuführeni das .von einer ungülti* gen Zeilennummer oder Kennzeichnung gefolgt wird.
Trifft ebenfalls auf GSB und JMP zu. NOTE 09: a) Schreiben, Ausführen und Speichern eines zu langen Ausdruckes oder einer au langen Programm-*
b) Zu starke Verschachtelung von Unterprogrammen. NOTE 10: Zwischen- oder Endergebnis einer Rechnung über·*
schreitet den Bereich des Rechners· NOTE 11: a) Betätigung einer Halbtaste in den drei linken
Tastenblöcken .
1, wenn sie nicht Teil eines Anführungsfeldes ist (z.B. PRT"...") und v ■;■:■,
2. wenn sie nicht durch eine ROM-Steckeinheit definiert ist
309832/0843
> } t ι t
1 ' ι" · ' Ί ι
b) Versuch, eine ENTER-Anweisung Über das Tastenfeld und nicht über daa Programm auszuführen.
NOTB 121 a) Überschreitung des Speicherbereiches beim Einspeichern einer Programmzeile oder beim Laden eines Programmes oder von Daten aus einer Magnetkarte.
b) Kein GTO oder GSB vor LOD, wenn unter der
Steuerung eines vorhandenen Programmes ein Programm aus einer Magnetkarte geladen wird.
NOTE 13s Versuch, auf einer geschützten Magnetkarte aufzuzeichnen.
NOTE 141 Beim Aufzeichnen auf oder Lesen von Magnetkarten
wird eine weitere Kartenseite benötigt. Taste EXECUTE betätigen und nächste Kartenseite einfügen.
NOTE 15: Wenn diese Bemerkung auftritt, nachdem ein Programm aus einer Magnetkarte geladen worden ist, zeigt sie an, daß der Rechner nicht die gleichen ROM-Speicher (in den gleichen Aufnahmeschlitzen) aufweist, wie
beim Aufzeichnen der Karte. Dies beeinflußt den Programmablauf so lange nicht, als die für das vorliegende Programm benötigten ROM-Speicher sich in den
gleichen Aufnahmeschlitzen befinden. Taste CLEAR
betätigen und das Programm in der üblictfen Weise ablaufen lassen. ·
Aufzeichnungen ohne eingesetzte ROM-Speicher bewir-
ken keine Bemerkung NOTE 15, wenn sie in Rechner
geladen werden, die solche ROM-Speicher aufweisen.
NOTE 16t Versucht 'den Drucker zu verwenden, wenn der Papierw ] vorrat erschöpft ist. Fortsetzung ohne Druckpapier:
' 309832/08 A3
ι ■ < ι ; ί
* C
I 11
22Β2725
Wenn der Befehl PRINT vom Tastenfeld kam, Taste CLEAR betätigen, wenn er vom £irogramm kam, Tasten STOP und RUN. PROGRAM betätigen.
Symbole und Merkzeichen
Die folgende Tabelle zeigt-die Symbole und Merkzeichen für die Tasten des Rechners sowohl für die Verwendung innerhalb als auch außerhalb eines Anführungsfeldes (einige Tasten haben unter diesen beiden Bedingungen verschiedene Symbole oder Merkzeichen).
Symbole und Merkzeichen für die Tasten des Rechners
Taste Anführungsfeld ja ' Taste AnfÜhruhgsfeld ia
nein 1 nein Uli
1 1 2 R( ) * R 1 S=SS
2 2 3 's=== -:=
3 3 .4 » t
4 4 • 5
.5 ' 5 6 9
6 6 7 GO TO GTO/? BEMER
KUNG 2
7 7 8 GO TO
SUB
GSB^ BEMER
KUNG 2
8 8 9 RETURN R E TP
9 9 0 .•STOP S. T P^ BEMER
KUNG 2
O 0 END E N Oi>
309832/084 3
Taste I
Anführun
nein
tgsfeld
ja
A Taste ** Anführungsfeld
nein la
BEMER
KUNG 2
O JUMP J M Pb BEMER
KUNG 2
ENTER E. B IF I Fb
+ +
' 4
FLAG
IM
F L Gb BEMER
_. _ _ SET S F Gi? KUNG 2
CLEAR
FLAG N
BEMER
KUNG 2
ft ft J λ SET SET
:lear clear
fLAG N FLAG N
C F Gt) BEMER
KUNG 2
/ / / FIXED N F X Db BEMER
KUNG 2
τΓ ιΓ V" FLOAT M PLT6 BEMER
KUNG 2
ί ( ( ENTER E N'T£
) ) ) DISPLAY D S Pi) BEMER
KUNG 2
j PRINT P R Tb BEMER
KUNG 2
SPACE N S P Cb BEMER
KUNG 2
11 η BEMER
KUNG 1
NORMAL N O Rb BEMER- I
KUNG 2
TRACE TRCb S
LOAD L O Db BEMER
KUNG 2
S BEMER
KUNG 3
T
RECORD R E C £ BEMER
KUNG 2
t BEMER
KUNG 3
U
A
ι
A U BEMER
KUNG 3
V
B B •' ν BEMER
KUNG 3
309832/0843
- X05 -
Ot t> ί ο 0
Anführi
nein
mgsfeld
ja
Taste \ 2202725 ngsfald Diese Tasten haben keine.
Merkzeichen oder Syjnbole ;
- · -. ■■*
Tagte C W . AnlUhru
neiji
EXECUTE
C X X B BEMER
KUNG 3
-.-■ · STORB * tm
X Y Y % BEMER
KUNG 3
"1 RUN
PROGRAM
- '·* .-
Y Z Z . ' & BEMER
KUNG 3
ft ■ -■ CLEAR ·♦-
Z BEMER
KUNG 3
D BEMBRf
KÜNÖ 3
* ERASE . ■· -
d BEMER—
KUNG 3
E 7 BEMER—
KUNG 3
BACK - : . -- .
β BEMER
KUNG 3
F SPACE 'BEMER
KUNG 3
FORWARD
f · BEMER
KUNG 3
G BEMER
KUNG 3
DELETE
g BEMER
KUNG 3
H INSERT
H BEMER
KUNG 3
i RECALL
«
I BEMER
KUNG 3
J LIST
j BEMER
KUNG 3
K
K BEMER
KUNG 3
BEMER
KUNG 3
M:
M BEMER
KUNG 3
N
N BEMER
KUNG 3
0
0 BEMER
KUNG 3
P
P BEMER
KUNG 3
Q
• Q BEMER
KUNG 3
R
R
309832/0843
Bemerkungen für die Tabelle
X, Das Anführungszeichen (") tritt niemals innerhalb eines Anführungsfeldes auf; es wird ausschließlich zu Beginn und am Ende eines Anführungsfeldes verwendet.
2. Diese Taste erzeugt ein Zeichen mit willkürlichem Muster. Zuweilen ändert sich dieses Muster abhängig von 'den verwendeten ROM~Speichern·
3 t Wenn diese Taste at Serhalb eines Anführungsfeldes verwendet wird, tritt die Bemerkung NOTE i1 auf, sofern die Taste nicht durch eine ROM-Steckeinheit definiert ist» in diesem Fall wird das Merkzeichen oder Symbol durch den ROM-Speicher bestimmt,
4. Das Zeichen 6 bedeutet Leerraum.
Steckbare Aualeaespeicher-Module
Die Mathematik-Steckeinheit stellt in dem Rechner zusätzliche mathematische Funktionen zu Verfügung. In Fig. 6 ist die zugehörige Tastenfeld-Schablone dargestellt. Die zusätzlichen mathematischen Funktionen umfassen den natürlichen und den gewöhnlichen Logarithmus, Exponentialfunktionen, trigonometrische und inverse-trigonometrische Funktionen (in Grad, Bogenmaß oder Neugrad) und andere. Die, Verwendung dieser Funktionen erfordert keine speziellen Programmiertechniken. Sobald die Steckeinheit eingesetzt ist, werden seine Funktionen ein Teil des Rechners in der gleichen Weise wie beispielsweise die Quadratwurzel-Funktion ein Teil des Rechners ist.
309832/0843
- 107 -■ - .· : ■';..■",
( ι ■ < ι ■ ,
C(Il ill I I I' I I Γ ! ( I1T-
Die Funktionen der Mathematia-Steckeinheit sind einfach anzuwenden; in den meisten Fällen b.enötigen sie nur wenige zusätzliche Erläuterungen. Die Regeln und die Rangfolge*/ ' · die sich auf die bereits beschriebenen mathematischen Operationen bezieht, treffen auch auf die durch die Mathematik-Steckeinheit zur Verfügung stehenden Operationen zu. Die im· folgenden angegebene Rangfolge entspricht genau der bereItB gegebenen Beschreibung:
Erste: Funktionen
,, Exponentenerhebung
Minus mit einer Veränderlichen . . Implizierte Multiplikation
Explizierte Multiplikation und Division
Addition und Subtraktion und Plus mit einer Veränderlichen
Letzte: Ein Verhältnis betreffende Operatoren -
Einige Steckeinheiten verringern den Umfang des programmierbaren Speichers, der dem Benutzer zur Verfügung steht, durch automatische Inanspruchnahme eines Teiles dieses Speichers für ihren internen Gebrauch. Die Mathematik-Steckeinheit stellt keine solchen Anforderungen und beeinflußt nicht den zur Verfügung stehenden Speicherplatz.
Die folgende Tabelle beschreibt alle Funktionen der Mathematik-Steckeinheit. Wie aus der Tabelle ersichtlich, wird eine Vortaste (v) zur Neudefinierung bestimmter anderer Tasten benutzt. Jeder neu zu definierenden Taste muß jedesmal die Vortaste vorangestellt werden, die Vortaste wirkt
30983 2/0843
nicht über eine größere Zeitspanne.
Wenn die Vortaste betätigt wird, erscheint in dem Sichtgerät ein Dreieck. Wenn die nächste Taste gedrückt wird/ wird das untere der beiden Merkzeichen dieser Taste an Stelle des Dreieckes dargestellt (z.B. ASN wenn die Sinus-Taste betätigt wird). Das Dreieck kann nicht durch Betätigen der Rücktaste BACK zurückgeholt werden. Das Merkzeichen für die beiden Tasten (die Vortaste und die folgende Taste) wird, einmal erzeugt, so behandelt, als wäre es von einer einzigen Taste erzeugt worden.
Es ist zu beachten, daß das Argument und sein Vorzeichen in Klammern eingeschlossen werden muß, wenn das Argument einer Funktion negativ ist.
SIN (-40) und nicht SIN -40
Die durch die Mathematik-Steckeinheit zur Verfügung gestellten Funktionen sind in der folgenden Tabelle zusammen mit Angaben über die Syntax und einigen typischen Beispielen dargestellt. Die linke Seite der Tabelle befindet sich dabei auf einer Seite und die rechte Hälfte der Tabelle auf der folgenden Seite.
309832/0843
Funktionsart
Funktion
Syntax
Merkzeichen = Leerraum
Tasten
natürl. log χ
In χ
log
Logarithmen
und inverse
Logarithmen
(. Menge) LN oder
frAus drück))
Mb
log;1 χ antiloge χ
κυρ
EXP
oder
(lAus druck»
ι· 11 D
gewöhnl.log.x x
(Menge) LOG oder
((Ausdruck)]
- LOG/?
logto χ
anti log ίο χ
TNt
((Ausdruck))
TNt/)
UJ
'—--j
cm cm
Auswahl der Kreiseinheiten
TBL
(Menge) Wert = 1-Grad 2-Radian 3-Neugrad
Sin χ
sin χ
SIN
%ef
((Ausdruck))
Kreisfunktionen und
inverse
Kreisfunktionen
sin"·1 x arc sin χ
ASN
(VAus druck))
Cosin χ cos χ
COS
<Menge> der
d
,,oder
((Ausdruck))
cos"* χ arc cos χ
Tangens χ tan χ
ACS
(Menge) oder
,oder
(<Ausdruck)y
oder
((Ausdruck))
tan~l χ arc tan χ
< Menge)
- OQSTC
((Ausdruck))
TBL/)
SIN/) RSN/) COS/)
TRH/) RTN/)
cm
cm cm
' cm
i -ü W
Ganzer Wert von χ :.
int χ
Verschiedene
Funktionen
Absolutwert χ (x)
Exponentenerhebung
((Ausdruck)^
(Menge) ABS oder
((Ausdruck))
(Menge) (Menge)
. oder A/ oder ((Ausdruck)) "((Ausdruck))
pi

3.14159265360
Konstante
IHTb
•n
cm
c—λ
Anfangszustand
Dat ens pe i eher und Marken löschen
TBL Menge
Wert -
4-B-Register
5-Alphab etre gis ter
6-Marken .... .
loschen
TBL δ
θ Θ
309832/0843
Ausgedruckte Anweisung Bereich Bemerkungen - Einheiten bleiben bis
zu bewußtem Wechsel
eingestellt
Beim Einschalten wird
automatisch "GracJ" ge
wählt
LN 6.2; LN A;
LN (X-I); -5LN (4(X-I));
X>0
EXP .4; EXP B; EXP (-1);
3((EXP A-EXP C-A))/2)- X;
-225.65<X
<227.95
Nur Hauptwert:
O-siiT1*;-^«^« +90°
Ähnlich LN X>0
Ähnlich EXP |XK 10* Nur Hauptwert
0=cos~lx;0°*0 st+180°
TBL 1;
TBL 2;
TBL 3;
TBL 0;(laufende Einheiten)
SIN 30; SIN B; SIN (-45);
A 2((1-COS B)t2+(SIN B)f2)-C;
|x| 61 χ id' Nur Hauptwert
O » tan χ;-90°ά 04+90c
ASN .707; ASN (-.3); |XK1 Beseitigt Bruchanteil,
beeinfluß: Zeicnen.u.gan2
zahligen Anteil nicht
Ähnlich SIN I χ lsi χ ίο" Stellt auf positiv ohne
Wert zu verändern
Ähnlich ASN IXlSl -2 t 4 - -16;
(-2)t4 - +16.
Ähnlich SIN iXlfilXlO"
Ähnlich ASN ixi^io11 Siehe "Auswahl der
Kreiseinheiten" für
TBL 0, 1, 2, 3
TBL 7, 8, 9 werden
nicht verwendet
MT 4.6; INT A; INT (-7.2);
INT (A/B+1.03);
AB8 (-4); ABS A; ABS (A/B+1.03); ■ ...
5 t 2; 5f(-2)i (A+B)t (X/Y-3) ; Für "AtB,
A<0, B muß
ganz sein
2rA; 180B/1T+C; ,
TBL 4; löscht alle verfügb.Register
TBL 5; löscht Register A.B.C.X.Y.und Z
TBL 6» löscht Marken 0 bis 15
309832/0843
- Ill -
2162725
Die Zusatzeinrichtung des Rechners für ;yom Benutzer definierbare Funktionen ("User Definable Functions") enthält eine ROM-Steckeinheit mit 1024 Bit und drei Schablonen für je zehn Tasten, die in den Fig. 8A-C dargestellt sind. Fünf Tasten werden für. die Steuerung verwendet und 25 Tasten stehen für die Definierung zur Verfügung, wenn keine weiteren ROM-Steck-
einheiten in den Rechner eingefügt sind. 15 Tasten sind verfügbar, wenn eine weitere RQM-Steckeinheit benutzt wird und fünf, wenn beide der übrigen ROM-Einsteckschlitze ausgenutzt werden. Die Verwendung dieser Zusatzeinrichtung wird im folgenden beschrieben.
In einem Programm tritt häufig die Notwendigkeit auf, einige Grundrechnungen an verschiedenen Stellen auszuführen. Es ist lästig, überflüssig und fehleranfällig, jedesmal die erforderlichen Anweisungen zu wiederholen und erheblich einfacher und angenehmer, sie nur einmal aufzustellen und sich dann, wenn es die Rechnung erfordert, lediglich auf sie zurückzubeziehen. Diese Möglichkeit wird durch Unterprogramme und Funktionen gegeben. Im folgenden werden die grundlegenden Möglichkeiten des Rechners für die Ausführung solcher Unterprogramme und Funktionen beschrieben und wie diese durch die Zusatzeinrichtung für die vom Benutzer definierbaren Funktionen erarbeitet werden können.
Die grundlegende Möglichkeit des Rechners, Unterprogramme ausführen zu können, wird durch die Tasten GO SUB und RETURN ("Verzweigung zum Unterprogramm" und "Rückkehr") gegeben.
309 832/0 843
Diese Tasten ermöglichen es, eine oder mehrere Zeilen des Hauptprogranunes als Unterprogramm aufzurufen, um dem mit einer Anweisung GO SUB zu der ersten Zeile gesprungen und durch eine Anweisung RETURN zum Hauptprogramm zurückgekehrt wird. Beispielsweise kann es notwendig sein, an mehreren Stellen des Programmes die ersten zehn R-Register auf Null zu setzen. Dies kann mit dem folgenden Programm erreicht werden, das ein Unterprogramm ZERO ("Null-Setzung") wie folgt verwendet:
0 : GO SUB "ZERO"
on · . rn srm "7FRn" 20 . GO SUB ZERO
35 : GO SUB "ZERO"
Programm mit drei Aufrufen
40 : "ZERO" ■ Z; O -►RZ;
41 : 10 -> Z ; GTO + O
42 : Z - 1 -»
IF ΖλΟ
43 : RETURN
Unterprogramm ZERO
Die Aufrufe von ZERO in den Zeilen 0, 20 und 35 bewirken, daß die ersten zehn R-Register gelöscht werden und daß sodann zu den Zeilen 1, 21 bzw. 36 zurückgekehrt wird. Die Verwendung des Unterprogrammes ZERO spart eindeutig Speicherplatz ein, weil die Anweisungen in den Zeilen 41 bis 43 nur einmal gespeichert werden müssen. Weiterhin wird ein Programm durch Unterteilung in Unterprogramme leichter zu lesen und zu verstehen. Wenn ein Unterprogramm auch für andere verwendbar ist, kann es in deren Programme
309832/0843
eingefügt werden, nicht nur um Speicherplatz, sondern auch um Zeit für die Programmerstellung zu sparen.
In diesem einfachen Beispiel führt das Unterprogramm ZERO stets genau die gleiche Aufgabe aus: die ersten zehn R-Register auf Null zu setzen. Ein etwas allgemeineres Unterprogramm hätte die Möglichkeit, beliebige aufeinanderfolgende zehn R-Register, beginnend bei einem Register R (J) auf Null zu setzen. Um dies zu bewirken, muß das Unterprogramm geändert werden und der Wert des Parameters J muß bekannt sein oder dem Unterprogramm zugänglich gemacht werden. Dieser Wert kann in dem X-Register vor dem Aufruf des Unterprogrammes gespeichert werden und das Programm könnte wie folgt lauten: 0:. 0-»X; GO SUB "ZERO 1"
20: 40-»X; GO SUB "ZERO 1" " .
35: 30-^X; GO SUB "ZERO 1"
40: "ZERO 1" 41: 10 ■* Ζ 42: Z-I-A-Z; 0 ■* R(XH-Z), if Z>0; GTO + 0 43: RETURN
Das Unterprogramm ZERO lvlöscht R-Register 0-9, 40-49 und 30-39 ausgehend den Zeilen 0, 20 bzw. 35. Der Programmierer muß jedoch beachten, daß die Unterprogramme sowohl das X-
J- :
als auch das Z-Register benutzen. Der Inhalt dieser Register
309832/Q843
muß daher vor dem Aufruf des Unterprogrammes gespeichert werden, wenn er eine irgendwie wertvolle Information darstellt. Diese "Buchhalterarbeit" erschwert die Verwendung des Unterprogrammes, macht es für den Benutzer wenig anziehend und läßt es anfällig für Fehler werden. Dieses Problem wird noch schwerwiegender, je mehr Parameter dem Unterprogramm zugänglich gemacht werden müssen und je mehr Arbeitsregister, wie das Z-Register, zur Verfügung gestellt werden müssen. Diese Probleme werden durch die fortschrittlichen Möglichkeiten der ROM-ßteckeinheit für die durch den Benutzer definierbaren Funktionen vermieden.
Das vom Benutzer definierbare ROM enthält weiterhin den Begriff der "Funktion". Eine Funktion unterscheidet sich dadurch von einem Unterprogramm, daß mit dem Namen einer Funktion ein Wert verbunden ist. Funktionsnamen können daher in beliebigen arithmetischen Ausdrücken auftreten und sich hinsichtlich der ihnen zugeordneten Werte auf die Register A, B, C, X, Y, Z und R beziehen. Zum Beispiel sind
SIN, COS, LN und EXP
Funktionen, mit deren Namen Werte verbunden sind, und der Ausdruck
SIN (LN A) - COS (EXP B) -* X
ist ein gültiger arithmetischer Ausdruck, der mehrere Funktionen enthält.
Während einige Grundfunktionen in dem Rechner fest verdrahtet sind, ist es wünschenswert, andere Funktionen definieren zu
309832/0843
können und sie in der gleichen Weise arbeiten zu lassen, wie die Funktionen sin, cos, In, exp usw.. Wenn z.B. eine Aufgabe die Auswertung hyperbolischer Funktionen benötigt, ist es wünschenswert, diese Funktionen zu definieren und Ausdrücke wie -
SINH (A + B) - COSH (A - B) -* X aufstellen zu können.
Die beim Definieren von Funktionen auftretenden Probleme sind ähnlich denen, die beim Aufstellen von Unterprogrammen auftreten. Die Parameter der Funktionen (deren Argumente) müssen bekannt sein oder der Funktion zugänglich gemacht werden und die Arbeitsregister müssen der Funktion zur Verfügung gestellt werden, so daß bei der Rechnung Zwischenergebnisse abgespeichert werden können. Das Definieren von Funktionen unterscheidet sich vom Aufstellen von Unterprogrammen dadurch, daß der Funktion ein Wert zugeordent werden muß. Der Block mit den vom Benutzer definierbaren Funktionen (USER DEFINABLE FUNKTION) liefert die Möglichkeiten, diese Probleme zu lösen.
Dieser wahlweise verwendbare Block hat die in den Fig.8A-C dargestellten Tastenanardnungen. Die Tasten FA, FB, FC, FD und FE können einem von fünf Unterprogrammen bzw. Funktionen zugeordnet werden. Die Tasten GA bis GJ und HA bis HJ können ebenfalls zugeordnet werden, wenn die beiden anderen ROM-Blöcke nicht verwendet werden, wodurch die Kapa-
309832/0843
zität auf 15 oder 25 Funktionen oder Unterprogramme erhöht werden kann. Die übrigen fünf Tasten ermöglichen die Definierung und den Aufruf dieser Funktionen und Unterprogramme.
Die durch den Block "User Definable Funktion" definierten Unterprogramme und Funktionen ähneln in ihrer Struktur dem Hauptprogramm: Jedes Programm ist eine Liste von einer oder mehreren Anweisungen, die von Null an numeriert sind und von einer Anweisung END gefolgt werden. Zum Definieren eines einfachen Unterprogrammes beispielsweise zur Berechnung des Inhaltes einer Kugel, wobei dieses Unterprogramm der Taste FA zugeordnet wird, sind folgende Schritte auszuführen: Zuerst sind die Tasten zu betätigen
GTO FA EXECUTE
Hierdurch wird der Rechner in den Modus "Unterprogramm definieren", und·zwar hinsichtlich der Taste FA, gebrächt. An Stelle dieser Taste FA kann jede andere zuordnungsfähige Taste verwendet werden. Zur Definierung des Unterprogrammes für die Inhaltsberechnung wird anschließend gedrückt:
STORE -
0: 4/3* TfZZZ-+Z 1: END
Die Anweisung END führt den Rechner wieder in seinen normalen Arbeitsmodus zurück. Für die Verwendung dieses Unterprogrammes zum Berechnen des Inhaltes einer Kugel vom Radius 5 wird gedrückt:
5; FA EXECUTE
309832/0843
was gleichbedeutend ist mit **
5 ·*· Z; GSB FA EXECUTE
Der Inhalt des Z-Registers wird angezeigt. Vom Aufruf des Unterprogramms aus einem Programm wird gedrückt - - .' '
STORE
3: 5. ·* Z; GSB FA.
Die fünf Steuertasten (die linken Tasten in Fig. 8A) erweitern diese grundlegenden Möglichkeiten zum Ausführen von Unterprogrammen dahingehend, daß Unterprogramme für die Sofort aus führung, die ParameterZuweisung und die Ausführung von Funktionen zur Verfügung gestellt werden. Diese Tasten ■ werden im folgenden beschrieben.
Sofortausführung. Die Taste IEX für die Sofortausführung bewirkt, daß der Rechner sofort auf die Betätigung einer Taste anspricht, ohne daß die Taste EXECUTE gedrückt,werden muß. Die Anweisung IEX muß die erste innerhalb des Unterprogrammes sein, damit die Taste in dieser Weise wirkt; Wenn die einem solchen Unterprogramm zugeordnete Taste betätigt wird, läuft das Programm ab, ohne daß die Taste EXECUTE betätigt werden muß. Wenn beispielsweise das vorhergehende Programm folgendermaßen abgeändert wird:
0: IEX
1: 4/3 * ITZZZ Z
2: END,
dann braucht nur
■5 FA
309332/0843
gedrückt zu werden, um dieses Programm ,auszulösen. Dieser spezielle Ausführungsmodus ist bei der Vereinfachung der Tastenfeld-Betätigung sehr wertvoll, um den Wirkungsgrad und den Ausstoß zu erhöhen, wenn unter der Steuerung des Tastenfeldes mehrere ähnliche Rechnungen durchgeführt werden müssen.
Aufruf (CALL). Zum Aufruf eines Unterprogrammes mit Parametern muß die Taste CLL benutzt werden. Sie zeigt an, daß der·Bezeichnung des Unterprogrammes eine Parameterliste folgt. Sonst wird diese Taste genauso verwendet, wie die Taste GSB:
GSB FA (keine Parameter)
CLL FA (A, 5, B+X) (mit Parametern)
Die Anweisung CLL sollte die letzte einer Zeile sein. Die Parameter brauchen nicht in Klammern eingeschlossen zu werden.
Parameter. Die Taste P() dient dem Zugriff zu Parametern, die den Unterprogrammen und Funktionen zugänglich gemacht werden sollen und ist möglicherweise die am häufigsten benutzte Taste dieses ROM-Blockes. Abgesehen von dem Zugriff zu Parametern kann die Taste P() dazu verwendet werden, einen Speicherbereich zu erzeugen und zugänglich zu machen, der vorübergehend für Arbeitsregister benutzt wird, während das Unterprogramm ausgeführt wird. Der Zugriff zu den Parametern und Arbeitsregistern geschieht mit Hilfe der Taste P(), ohne daß die Register A, B, C, X, Y, Z oder R beeinflußt werden.
Die Taste P () wird in genau der gleichen Weise verwendet
309832/0843
wie die Taste R(J, sie bezieht sich lediglich auf eine Folge von Parameter-Registern und nicht auf eine solche von R-Registern. Wenn beispielsweise das Unterprogramm FB mit drei Parametern aufgerufen wird, bezieht.sich Pl auf den ersten Parameter, P2 auf den zweiten usw.,d.h.
CLL FB.(Ä, 5, X-B) i I i Pl P2 Pt3
Bei diesem Aufruf (CLL) bezieht sich Pl auf das A-Register und P2 und P3 beziehen sich auf Speicherstellen, an welchen während der Ausführung des Unterprogrammes FB die Werte 5 bzw. X-B vorübergehend gespeichert sind. Vor Ausführung des Unterprogrammes FB wird jedesmal wenn die Anweisung CLL ausgeführt wird, X-B berechnet und vorübergehend abgespeichert.
Mit Hilfe der Taste P() können vorübergehend Arbeitsregister erzeugt und zugänglich gemacht werden, indem Indizes angegeben werden, deren Wert größer ist als die Anzahl der zugänglich gemachten Parameter. Da beispielsweise das Unterprogramm FB drei Parameter hatte (Pl, P2, P3), können P4, P5 usw als Arbeitsregister benutzt werden. Natürlich ist die Anzahl solcher Register begrenzt/ da der Rechner dann keinen internen Speicher mehr hat. Eine genaue Grenze kann jedoch nicht angegeben werden, da sie von der Verfügbarkeit des Speichers abhängt, wenn das Unterprogramm eingeleitet wird.
Als erstes Beispiel sei das Umschreiben des Unterprogrammes ZERO 1 betrachtet, um die angegebenen zehn R-Register zu
309832/0843
löschen, ohne den Wert des X- oder Z-Registers zu beeinträchtigen, wie es das vorhergehende Unterprogramm getan hat. Ein Parameter Pl muß zur Verfügung gestellt werden, welcher X ersetzt, und an Stelle von Z muß ein Arbeitsregister P2 verwendet werden. Die erforderlichen Anweisungen sind wie folgt:
PRESS GTO FA EXECUTE
STORE 0: "ZERO 1"
1: 10 ·* P2
2: P2-1-*P2; 0-+R(Pl + P2) ; IP P2>0; GTO+0
3: END
Dann wird CLL in der Form
40+X; GO SUB "ZERO 1" ersetzt durch Betätigen von
CLL FA 4 0 STORE
das angezeigt wird als
20: CLL ZERO 1 40
da das Unterprogramm mit der Bezeichnung "ZERO 1" begonnen hatte. Das neue Unterprogramm arbeitet wie vorgeschrieben ohne die Werte in den Registern X und Z zu beeinträchtigen, so daß diese für andere Zwecke zur Verfügung stehen.
Ein anderes Beispiel ist das Unterprogramm zur Erhöhung des Inhaltes eines Registers. Der eine Parameter dieses Unterprogrammes gibt das Register an, dessen Inhalt erhöht werden soll:
309832/0843
PRESS · 1^FC EXECUTE STORE O: "INCR"
1: Pl+l+Pl
2: END
Das Unterprogramm INCR wird aufgerufen durch
10: CLL INCR A um das Α-Register oder
20: CLL INCR R(A+B)
um das R-Register mit der Nummer (A+B) zu erhöhen. Dieses Beispiel zeigt, daß ein Parameter sowohl zum Rückführen" eines Ergebnisses als auch zum Zugänglichmachen eines Wertes verwendet werden kann. Beim Aufruf eines Unterprogrammes kann eine beliebige Anzahl von Parametern verwendet werden«
Definieren (DEFINE), Eine Funktion unterscheidet sich dadurch von einem Unterprogramm, daß sie einen ihrer Bezeichnung zugeordneten Wert besitzt und daher Teil eines Ausdruckes sein kann. Die Taste DEF/-»F ermöglicht es, in dem Rechner Funktionen zu definieren. Sie hat, wie ihre Bezeichnung andeutet, zwei Verwendungsmöglichkeiten. Einmal setzt sie den ' Rechner in den Modus DEF zur Funktions-Definierung, und zum anderen (-*F) ordnet sie der Funktion einen Wert zu, wenn sich der Rechner in diesem Modus zur Funktions-Definierung befindet.
Um den Rechner in den Modus zur Funktions-Definierung zu versetzen,müssen folgende Tasten gedrückt werden: PRESS DEF FA EXECUTE
309 83 2/08 43
Dies entspricht dem Versetzen des Rechners in den Modus
"Unterprogramm-Definierung", d.h. der Betätigung der Tasten
GTO FA EXECUTE
Wenn der Rechner in dem Modus "Funktions-Definierung" ist, wird die Funktion in der gleichen Weise definiert wie ein Unterprogramm mit Parametern, nur daß -*F es ermöglicht, der Funktion einen Wert zuzuordnen.
Als ein Beispiel hierfür soll die Aufstellung einer Funktion betrachtet werden, welche die Funktion "hyperbolischer
Sinus" definieren soll:
χ -x Sinh X = - e
und zwar im Zusammenhang mit der Taste FD. Zuerst wird der Rechner in den Modus "Funktions-Definierung" gebracht:
PRESS DEF FD EXECUTE Zur Definierung der Funktion sinh:
STORE 0: "SINH"
1: (EXP Pl - EXP (-Pl) )/2-*F 2: END
Zur Verwendung dieser Funktion wird auf die Taste FD in der gleichen Weise Bezug genommen, wie auf die Taste SIN. Zum Beispiel
PRESS FD ( 5 ) + FD ( 4 ) EXECUTE was angezeigt wird als
SINH ( 5 ) + SINH ( 4 )
bevor die Taste EXECUTE betätigt wird, da die Definierung mit der Bezeichnung "SINH" begonnen hat. In ähnlicher Weise kann
309832/0843
5: SINH t A+B) / SINH,., ( A-B ) -* A
als Programmzeile gespeichert werden. Der Rechner verhält sich dann so, als hätte er die Möglichkeit, den hyperbolischen. Sinus zu berechnen, fest eingebaut,
· ■
Als »zweites Beispiel hierfür sei die Funktion Maximalwert programmiert. Diese Funktion hat zwei Parameter und nimmt den Wert des größeren dieser beiden Parameter an. Dies geschieht folgendermaßen:
PRESS DEF FE EXECUTE und STORE 0: "MAX"
1: Pl -* F
2: IF P2>P1; P2*F
3: END
Es ist zu beachten, daß hier angenommen worden ist, daß Pl der größere der beiden Parameter in Zeile 1. ist, und daß Zeile 2 eine Korrektur durchführt, wenn dies nicht der Fall ist. Diese Funktion kann dazu verwendet werden, das Produkt zweier Maximalwerte zu berechnen und abzuspeichern:
MAX (6, 9 ) MAX'. ( -5, -4 ) -» RA
Oder MAX ( AB - C, 5 J MAX (Zt3, 5-A) ■* RC
Die Durchführung ähnlicher Aufgaben ohne die Möglichkeit einer solchen Funktionen-Ausführung würde verschiedene Register zum Speichern von Zwischenergebnissen benötigen und würde demgegenüber sehr schwer zu lesen und zu verstehen sein.
309 8 32/0843
Streichen CSCRATCH). Die Taste SCR wird für verschiedene Aufgaben benötigt. Ihre Hauptanwendung besteht darin, ein vom Benutzer definiertes Unterprogramm oder eine solche Funktion vom Speicher zu entfernen und es dadurch zu ermöglichen, daß eine Taste für andere Programme verwendet werden kann, oder daß der für das Hauptprogramm zur Verfügung stehende Speicherplatz wieder entsprechend vergrößert wird. Die Beseitigung der Funktion FA geschieht folgendermaßen:
PRESS SCR FA EXECUTE Die Beseitigung von zwei oder mehr Funktionen durch PRESS SCR FB, FC EXECUTE
Spezielle Funktionen dieser Taste umfassen das Aufzeichnen und Laden von Programmen. Zum Aufzeichnen aller Programme des Speichers in der gespeicherten Reihenfolge müssen folgende Tasten betätigt werden
PRESS GTO SCR; REC EXECUTE Zum Laden dieser Programme PRESS GTO SCR; LOD EXECUTE
Zum Aufzeichnen einer Funktion oder eines Unterprograrames je Halbkarte muß ein Unterprogramm oder eine Funktion in den Rechner gegeben und sodann eingetastet werden:
PRESS GTO FA (oder eine andere definierte Taste);
REC EXECUTE
Um in ähnlicher Weise einen Rechner aus einer in dieser Art gebildeten Programmbibliothek zu strukturieren, müssen die Funktionen und Unterprogramme geordnet und dann folgende
309832/0843
- 125 - ■'.';..
Tasten betätigt werden:
PRESS GTO FAj LOD EXECUTE GTOFB; LOD EXECUTE ETC.
Beim Auflisten der Funktion FA geschieht durch PRESS GTO FA LIST
Die Möglichkeit/ einen Rechner in dieser. Weise zu strukturieren ermöglicht es, einen Rechner von Problem zu Problem neu anzupassen, ohne ihn neu programmieren und ohne die benötigten Funktionen und Unterprogramme neu eingeben und fehlerfrei machen zu müssen. Diese Fähigkeit zusammen mit. der Möglichkeit des Rechners, das Tastenfeld durch eine Anzahl ROM-Steckeinheiten zu modifizieren, ermöglicht eine Wendigkeit, wie sie nie zuvor in einem Tischrechner gefunden worden ist.
Zusammenfassend erweitert die Steckeinheit USER DEFINABLE FUNCTIONS die Fähigkeiten des Rechners ganz erheblich* Wie beschrieben, kann dieser Block dazu verwendet werden,, allgemein verwendbare Unterprogramme und Funktionen aufzustellen Diese trogramme arbeiten derart mit dem Hauptprogramm zu-/ sammen, daß sie Parameter zuweisen und es innerhalb des Unter programmes ermöglichen, Arbeitsregister aufzustellen und auf sie Zugriff zu nehmen. Diese Merkmale ermöglichen es dem Benutzer, Programme aufzustellen, welche keine der Register A, B, C,, Xf Y, Z oder R benötigen oder deren Inhalt beein-
'' 309832/0843
flüssen. Dem Programmierer wird dadurch die ganze "Buchhaltungsarbeit" abgenommen, die mit dem Aufruf eines Unterprogrammes verbunden ist, wenn Parameter in vorgegebene Register eingegeben werden müssen, deren Inhalt vor dem Einspeichern der Parameter sichergestellt und nach dem Ablauf des Unterprogrammes wieder eingespeichert werden muß. Ohne eine solche Möglichkeit werden solche Programme unhandlich, verworren, schv/er fehlerfrei zu machen und ganz allgemein solcher Art, daß sie davor abschrecken, solche Unterprogramme und Funktionen überhaupt zu verwenden.
Ein weiterer Vorteil der ROM-Steckeinheit USER DEFINABLE FUNCTIONS ist ihre Fähigkeit, sogenannte Funktionen zu definieren, also Unterprogramme, die mit ihrer Bezeichnung, wie SIN und LN einen zugehörigen Wert verbunden haben, welche die Wirkung einer fest in den Rechner eingebauten Funktion genau nachbilden. Dies hat die Fähigkeit des Rechners zur Folge, in natürlicher Weise erweitert zu werden, wenn ein Problem auftritt, das auf verschiedene Funktionen basiert.
Dieser wahlweise einsetzbare Block ermöglicht es, eine Programm-Bibliothek allgemein verwendbarer Unterprogramme und Funktionen aufzustellen und in einfacher Weise zu benutzen. Diese Fähigkeit befreit den Programmierer weitgehend von unnötiger Arbeit, weil sie es erlaubt, mit geringem . Aufwand auf Programme Dritter zurückzugreifen.
Di· Zusatzeinrichtung mit den von dem Benutzer definierbaren
309832/0843
Funktionen erweitert die Möglichkeiten des Rechners und macht ihn einfacher und natürlicher zu programmieren. Möglicherweise ist sie die für den Benutzer wertvollste Zusatzeinrichtung des Rechners.
Die Zusatzeinrichtung "Anschlußgeräte-Steuereinrichtung I" umfaßt einen Zusatz zu dem Auslesespeicher von 1024 Bit Länge und eine Tastenfeld-Schablone nach Fig. 7 zur Identifizierung der zu dieser Zusatzeinrichtung gehörenden zehn Tasten. Von diesen zehn Tasten werden fünf für den Betrieb eines X-Y-Zeichengerätes benötigt, zwei für die Schreibmaschine und die restlichen drei für die allgemeine Steuerung von sowohl der Eingabe als auch der Ausgabe dienenden peripheren Anschlußgeräte. Es folgt eine Beschreibung dieser zehn Tasten, und zwar zunächst eine der fünf Zeichengerätetasten.
Maßstab (SCALE). Diese Taste ermöglicht es dem Benutzer, den Maßstab hinsichtlich der physikalischen Begrenzungen des X-Y-Zeichengerätes und der gewünschten-Einheiten zu wählen. Die Syntax dieser Tasten ist wie folgt:
SCL X . , X , Y . , Y'
min' max min max
Die vier Grenzen nach der Anweisung SCL folgen den Regeln des Rechners für alle ParameterIlsten. Nachdem SCL ausgeführt worden ist, kann sich der Verkehr mit dem X-Y-Zeichengerät innerhalb der Bereiche abspiele,n, die durch die Maßstabs-Anwqisungen gegeben sind. Wenn der Benutzer beispiels-
.309832/0843
- 128'- " · ; ■ _ '■ ; ■'■" ■ ' : : ■'■
' · · .' ti" '■' j ■ ■
2262728
Weise Y · 8sinX aufzeichnen will für -2«£ χέΐι und >lo£ Yi: IQ, muß er angeben ι
SCL -2i , 2i , -10, 10
Dieses Beispiel wird auch bei der Beschreibung anderer Tasten verwendet werden.
- Achsen (AXES). Diese Taste ermöglicht es dem Benutzer,
mit einem einzigen Befehl in seiner Zeichnung sowohl die X- ale auch die Y-Achse darzustellen. Die Syntax hierfür ist wie folgt»
AXE X0, Y0, ΑΧ» Ä Y
Hier geben X und YM die Werte in von dem Benutzer vorgege-
" ι ο ο "
benen Einheiten', für den Punkt auf der maßstäblichen Zeichnung an, an welchem sich die Achsen kreuzen. Die frei wählbaren Werte Ax und4Y geben den Abstand zwischen punktförmigen Markierungen auf der X- bzw. Y-Achse an. Diese punktförmigen Markierungen werden vom Nullpunkt ausgehend erzeugt. Für das zuvor angegebene Beispiel glitt
AXE O, 0, n/4, .1
- Stift hoch (PEN UP). Dieser Befehl wird ohne Parameter benutzt und weist das X-Y-Zeichengerät an, den Schreibstift vom Papier abzuheben und in der jeweiligen X- und Y-ßteilung tu verbleiben.
■ Buchstabe (LETTER). Dieser Befehl mit seiner zugehörigen
Ptrameterliste stellt das X-Y-Zeichengerät zur Darstellung ! alpha-numerischer Zeichen ein. Es gilt folgende Syntaxι -
309832/0843
■'. ' - 129 - ■· " ;■ -,
. - - ■ * . ι t . . ί r, (. * οι . ί ν υ ν. ν υ (*
LTR X, V, hw· Γ
Hier geben die Werte X und Y die X- und Y-Btelle in vpro , .... Benutzer vorgegebenen Einheiten an, an welcher die linke r untere Bake des ernten alpha-numeriechen «eichene dargestellt werden soll, hwe ist eine dreistellige Zahl, welche die Seichenhöhe und die Schraibrichtung angibt, h ist eine Ziffer im Bereich 1 - h -9 welche die Zeichenhöhe 'angibt. Die tat* sächliche Höhe ist 0,64h, d.h. 64 % der Oesamthöhe (d.h.
V —Y '
max min, wenn waagerecht geschrieben wird). In ähnlicher Weise ist w eine Ziffer im Bereich 1 - w = 9, welche die" >' Zeichenbreite angibt. Die tatsächliche Breite ist wieder O,64w, d.h. 64 % der Gesamtbreite (d.h. X__ '· Xm4„ wenn waagerecht
IuäX IuX IV ,-
dargestellt wird).
" Der Wert β muß in dem Bereich 1 — θ ~ 4 fallen. Der Wert 1 ermöglicht eine waagerechte Darstellung von links nach, rechtsι der Wert 2 eine senkrechte Darstellung von unten nach oben (von rechts zu lesen), der Wert 3 eine waagerechte Darstellung von rechts nach links (verkehriherum) und der Wert 4 eine . senkrechte Darstellung von oben nach unten (von links ssu lesen). Zur Einstellung einer Bezeichnung für das angegebene Beispiel wird getastet:
, LTR π/2, 8, 321
Die tatsächliche Darstellung des alpha-numerischen Zeichens erfolgt mit dem weiter unten beschriebenen Zeichenschlüssel.
r- Zeichnen (PLOT) . Diese Anweisung bewirkt drei Dinge, sie
309832/0843
ermöglicht daa Aufzeichnen eines Punktee, da· Aufzeichnen einer alpha-numerischen Bezeichnung und das Aufzeichnen numerischer Ergebnisseι
PLT X, Y
Diese Syntax wird für das Aufzeichnen eines Punktee verwendet. Sie muß zwei Parameter aufweisen, für welche die gleichen
Beschränkungen gelten wie für andere Parameter des Rechners. Wenn der Stift des X-Y-Seichengerätes bei Ausführung dieser Anweisung vom Papier abgehoben ist, bleibt der Stift abge-
■ · ■
hoben, läuft zu der angegebenen X-Y-Stelle und geht dann dort auf das Papier hinunter· Wenn der Stift bei Ausführung dieser Anweisung auf dem Papier aufliegt, bleibt er dort während er zu der X-Y-Stelle läuft und zeichnet dadurch eine Linie von der alten Stelle bis zu der angegebenen Stelle. Um die Sinuskurve in dem vorhergehenden Beispiel aufzuzeichnen kann unter der Annahme, daß die Variable X sich in dem X-Register befindet, mit dem folgenden Programm der Maßstab gewählt, jede Achse gezeichnet und die Kurve dargestellt werden:
Oi TBL 2 (setzt den Rechner auf Bogenmaß)
Ii SCL -2k, 2h, -10, 10 2i AXE O, O, */4, .1 3i -2* + X
4: PLT X, 10 sin X 5: -1 + X->X
6: IF X 6 2m GTO 4
309832/0843
- 131 - ·' ' «■'«■".■
J··*·*· , r ( t HI ■ t . . « l'< · (1(1
2282725
Die Anweisung PLT "Aufzeichnen" (PLOT) wird daz-u verwendet, alpha-numerische Bezeichnungen mit einem einzigen Komma in Anführungszeichen eingeschlossenen Parameter darzustellen:
PLT M (alpha-numerische Bezeichnung)41
Die Fortsetzung des obigen Programmes und die Darstellung einer Überschrift benötigt eine Zeichenanweisüng und eine Aufzeichnungsanweisung: ,
7: LTR π/2, 8, 321
8: PLT "SIN X VS. X"
* - ■
Die abschließende Syntak für das Aufzeichnen ist
PLT (numerischer oder arithmetischer Ausdruck)
wo wiederum nur ein Parameter vorhanden ist. Bei der Ausführung wird hierdurch der numerische Wert des arithmetischen Ausdruckes in dem durch die Tasten FIXED N oder FLOAT N des Rechners angegebenen Format aufgezeichnet. Das als Beispiel angegebene Programm kann so erweitert werden, daß eß für die äußerste linke punktförmige Markierung auf der X-Achse eine Bezeichnung aufzeichnet: .
9: FXD 3
10: LTR -2π, -1, 211
11: ' PLT -2π · ·
Dies gibt an der Stelle (r2Tt, -1) die Bezeichnung
-6.283.
Damit wäre die Beschreibung der fünf ZeiehengerHte-Tasten beendet. Es folgen die beiden Schreibmaschinentasten.
309632/0843
FORMAT. Diese Taste ermöglicht die Angabe eines Formates für die Ausgabe von alpha-numerischeη Zeichen. Dieses besitzt die Form:
FMT Spec I, Spec 2 ... Spec n
Worin Spec 1 usw. entweder Umwandlungsanweisungen zur Umwandlung der rechnerinternen Gleitkomma-Zahlen in eine gewünschte Ausgabeform oder Edieranweisungen sind, die eine Veränderung der örtlichen Lage,eine alpha-numerische Ausgabe und die Steuerung spezieller Schreibmaschinenbefehle ermöglichen.
Die Umwandlungsanweisungen können eine von drei Formen annehmen :
r FLT w.d Gleitkommazahl (w - d + 7) r FXD w.d Festkommazahl
r FXD w.ο Ganze Zahl ohne Dezimalpunkt In diesen drei Fällen gibt r die Anzahl an, mit welcher diese Umwandlungsanweisung wiederholt werden soll. FLT oder FXD rührt von der Betätigung der Tasten FLOAT N oder FIXED N des Rechners her. w gibt die gesamte Feldbreite für diese Ausgabe an und d die Anzahl der Stellen rechts vom Dezimalpunkt, r, w und d müssen ganze Zahlen sein.
Edieranweisungen können die folgenden Angaben umfassen:
nX
Diese Angabe schreibt ein Leerfeld von η Zeichenlänge vor. η muß eine ganze Zahl sein, X ist die Taste X des Rechners.
309832/0843 ^^
r/
Diese Angabe schreibt r mal Wagenrücklauf-Zeilenvorschub für die Schreibmaschine vor. r muß eine ganze Zahl sein, / ist die Taste / ("divide" = dividieren) in dem Tastenfeld des Rechners.
Normalerweise wird am Ende jeder Anweisung FMT automatisch ein Waagenrücklauf-Zeilenvorschub gegeben. Wenn in der FMT-Anweisung der Tastenkode Z enthalten ist; wird dieser automatische Wagenrücklauf-Zeilenvorschub unterdrückt. r "(alpha-numerische Bezeichnung &
Schreibmaschinensteuerung)" ; '
Hierin ist r wiederum eine ganze Zahl, welche die Anzahl der Wiederholungen dieser Anweisungen angibt. Innerhalb der Anführungszeichen kann eine Vielzahl von Rechner-Tasten verwendet werden, um mit der Schreibmaschine das Folg. nde ausgeben zu können: * Großbuchstaben des Alphabets Kleinbuchstaben des Alphabets Spezialsymbole
# % * ' 7 Zwischenraum /■*-■+ . ,
Spezielle Steuersignale
Rotschreibung/ Schwarzschreibung, Rücktaste, Tabulator, Zeilenvorschub, Wagenrücklauf, Tabulatorlöschung und Tabulatoreinstellung
Die Tastenzuordnungen für diese Zeichnungen und Steuersignale in dem Tastenfeld des Rechners sind in Fig. 11 darr
309832/Qm
- JLJ4 -
gestellt. Um bei der begrenzten Anzahl von Tasten eine diese Symbole unterbringen zu können, ist es notwendig, die Umschalttaste zu verwenden. Diese Taste ist die normale Taste DISPLAY (Anzeige). Wenn diese Taste innerhalb eines in Anführungsstriche eingeschlossenen Feldes benutzt wird, wird in dem Sichtgerät das SpezialsymbolC angezeigt. Die Umschalttaste ist dabei als Kippschalter ausgebildet. Die Eingabe in ein in Anführungsstriche eingeschlossenes Feld setzt jedesmal das Tastenfeld in den Zustand Großbuchstaben (nicht umgeschaltet). Bei jedem Auftreten des Symbols -C wird dann der Tastnnfeldmodus zwischen Großbuchstaben-Schreibung (nicht umgeschaltet) und Kleinbuchstaben-Schreibung (umgeschaltet) hin und her gekippt. Um beispielsweise den Namen "Bill Hewlett" auf der Schreibmaschine auszugeben, muß folgende Programmzeile ausgeführt werden:
FMT "BHILLC HHEWLETT"; TYP
TYPE (Schreiben). Der Ausdruck FMT gibt zwar die tatsächliche Ausgabeanweisung, aber löst die eigentliche Ausgabe nicht aus. Hierfür wird die Taste TYPE benötigt. Ihr folgt eine ParameterIlste, in welcher die Parameter Zahlen, Registerbezeichnungen oder Ausdrücke sind. Wenn TYP zuerst ausgeführt wird, wird das zuletat angetroffene FMT erhalten. Die Anweisung FMT wird nacheinander von links nach rechts abgetastet, wobei an der äußersten linken Seite begonnen wird. Dann werden an die Schreibmaschine Edieranweisungen ausgegeben, bis die erste Umwandlungsanweisung erreicht ist
309832/014 3
(oder alle Anweisungen ausgeführt worden sind). Dann wird . der erste Parameter in der Anweisung TYP ausgewertet und dies mit der ersten Umwandlungsanweisung von FMT aufgegeben. Die Abtastung der FMT-Anweisung wird dann fortgesetzt/ wobei Edieranweisungen ausgegeben werden, bis die nächste Umwandlungsanweisung erreicht wird. Dann wird wiederum die TYP Parameterliste gefragt und der zweite Parameter ausgewertet und mit dieser Umwandlung an die Schreibmaschine ausgegeben. Dieser Vorgang wird fortgesetzt, bis das Ende entweder der Anweisung FMT oder der TYP-Parameter erreicht ist.
Wenn das Ende der FMT-Ariweisung vor dem Ende der TYP-Anweisung erreicht ist, wird ein Wagenrücklauf-Zeilenvorschub gegeben und der oben beschriebene Vorgang wird fortgesetzt, wobei er wieder mit dem Anfang der FMT-Anweisung beginnt.
Wenn das Ende der Anweisung FMT gleichzeitig mit demjenigen der TYP-Parameterliste erreicht ist, wird Wagenrücklauf-Zeilenvorschub gegeben und das Rechnerprogramm wird bei der nächsten Anweisung fortgesetzt.
Wenn nach dem Auftreten einer Umwandlungsanweisung in der Anweisung FMT kein entsprechender TYP-Parameter mehr vorhanden ist (wegen Beendigung der Parameterliste)> wird ein Wagenrücklauf-Zeilenvorschub gegeben und die Programm-Ausführung bei der nächsten Anweisung fortgesetzt. In diesem Falle beginnt die nächste TYP-Anweisung wiederum mit der
309832/0843. ί I
ersten FMT-Anweisung und nicht dort, wo sie vorher abgebrochen wurde.
Sobald eine Umwandlungsanweisung eine auszugebende Zahl
nicht unterbringen kann, wird zunächst ein Versuch gemacht, auf Gleitkomma-Darstellung überzugehen (mit demselben w.d). Wenn trotzdem noch ein Überfluß auftritt, wird das gesamte
Feld mit dem ^-Zeichen gefüllt.
Das folgende Beispiel illustriert die Anweisungen TYP und FMT, wobei die folgende trigonometrische Tafel ausgegeben werden soll:
Trigonometrische Tafel Grad SIN COS TAN
0 0.000 1.000 0.000
1 .018 1.000 .016
2 .035 .999 .035
89 1.000 .018 57.29
90 1.000 0.000 $$$$$$$ Hierzu wird folgendes Programm benötigt:
0: SFG 14; TBL 1
1: FMT 5X, "TRIGONOMETRISCHE TAFEL",/ 2: TYP
3: FMT "GRAD SIN COS TAN",/
309832/0843
4: TYP . 5: 0-X 6:, FMT FXD 6.0, 2 FXD 8.3, 2X FXD 7.3,/ 7: TYP SIN X, COS X, TAN X 8: 1 + X - X
9: IF X - 90; GTO 7 10: STP
In dem Rechner steht ein frei wählbarer Versäumnis-Zusatz zur Verfügung, wenn keine FMT-Anweisung gegeben wird. Dieser Zusatz hat vier Merkmale:
1. Für die Ausgabe von Daten wird die durch die Tasten FIXED N und FLOAT N des Rechners gegebene Einstellung verwendet. ■ .
2. Für die Feldbreite quer über die Seite werden vier Felder von je 18 Zeichenlänge angenommen.
3. Die Parämeterliste der Anweisung TYP kann nunmehr Bezeichnungsparameter enthalten, d.h. "(alpha-numerische Bezeichnung)". Diese werden dann in den Feldern von 18 Zeichenlänge ausgegeben. Diese Bezeichnungen können nur nicht-umgeschaltete, Zeichen, d.h. solche in Großbuchstaben-Darstellung, enthalten. Sie können soviele Felder von 18 Zeichenlänge umfassen, wie notwendig.
' 4. und letztens werden alle Angaben in den Feldern von 18 Zeichenlänge rechtsbündig ausgedruckt.
Das folgende Beispiel wird dies veranschaulichen;
30983270843
TYP" HEADING"
HEADING
1-A; 2-B; 3-C; FXD O TYP A, B, C
1 2 3
FXD 2
TYP "X=", 1.345
X= 1.35
■ Die. letzten drei Tastenbetätigungen dieser Anordnung sollen gesondert behandelt werden; sie dienen der allgemeinen ■ Steuerung peripherer Anschlußgeräte und verwenden den Begriff der Auswahlkodes. Der Auswahlkode ist eine Zahl, die ■■ einem bestimmten Anschlußgerät zugeordnet ist, um dieses zu identifizieren. So mag ein Analog-Digital-Wandler den Auswahlkode 3 besitzen, ein Papier streifenlocher den Auswahlkode usw. Der Selektkode wird mit SC bezeichnet, er ist für gewöhnlich eine Zahl, eine Registerbezeichnung oder ein arithmetischer Ausdruck. Bei seiner Auswertung wird nur sein ganzzahliger Wert benutzt.
- WRITE (Schreiben). Diese Taste ist die Ausgabetaste und wird wie die Taste TYP zusammen mit der Taste FMT verwendet. Sie besitzt jeodch keinen Versäumniszusatz wie die Taste TYP. Ihre Wirkungsweise ist identisch mit derjenigen der Taste TYP, abgesehen von der genannten Ausnahme. In diesem Falle muß das periphere Anschlußgerät, an welches ausgegeben werden soll, durch SC identifiziert werden. Dies muß der erste
309832/080
Parameter in der WRT-Parameterliste sein. Die tatsächlich aus dem Rechner ausgegebenen Werte sind im ASCII-Kode dargestellt. Wie diese, übersetzt werden, wird von dem Anschlußgerät bestimmt. Die Fernschreiberübersetzung der Tastenfeld-Tastenkodes ist in Fig. 12 dargestellt.
READ (Lesen). Diese Anweisung ermöglicht die Angabe von Daten von externen Peripheriegeräten aus. Die verwendete Syntax ist:
RED SC, A, B, R12
Der erste Parameter muß der Auswahlkode des eingebenden Anschlußgerätes sein. Die folgenden Parameter müssen Registernamen sein, welche die Register bezeichnen, welche die eingegebenen Daten aufnehmen sollen. Bei der Ausführung sendet der Rechner Befehle aus, welche das Anschlußgerät einschalten, und wartet dann auf eingehende Zeichen in ASCII-Kodierung. Er nimmt die Zeichen 0-9 . , / - + E (Exponenteneingabe) und beliebige andere Zeichen entgegen, außer führenden Zwischenräumen. Ein Zwischenraum, welcher der Exponenteneingabe (E) folgt, wird als Begrenzungszeichen betrachtet, das die Abspeicherung der eingegebenen Zahl in das eingegebene Register bewirkt. Die Folge wird für jedes Register der Parameterliste wiederholt.
TRANSFER (Übertragung). Diese Taste wird dazu benutzt, unmittelbar von einem externen Peripheriegerät zu einem anderen zu transferieren: · ' . .
309832/0843
TFR SC1, SC
Dies bewirkt eine unmittelbare Datenübertragung von dem Anschlußgerät mit dem Auswahlkode SC, zu dem Anschlußgerät mit dem Auswahlkode SC„, z.B. von einem Papierstreifenleser zu einer Schreibmaschine. Die übertragung wird eingeleitet, wenn die Anweisung TFR ausgeführt wird, und beendet, wenn der 8-Bit-Kode 00 000 011 übertragen wird.
309832/0843
r- 141 -
Grundbefehlsliste
Jedes Programm und jedes Unterprogramm des Rechners besteht aus einer Folge von einem oder mehreren von 71 Grundbefehlen von jeweils 16 Bit Länge. Diese 71 Befehle werden von der Mikroprogrammeinheit serienmäßig in einer Zeitspanne ausgeführt, deren -Länge von dem jeweiligen Befehl abhängt, ob er indirekt ist und ob Sprungbedingungen er- ' füllt worden sind.
Nach Beendigung der Ausführung jedes Befehls wird der Programmzähler (P-Register) um eins erhöht, bis auf die Befehle JMP, JSM und die Sprungbefehle, bei welchen die Sprungbedingung erfüllt ist. Das M-Register erhält den gleichen Inhalt wie das P-Register. Der Inhalt der adressierten Speicherstelle und die Register A und B bleiben, sofern nicht anders angegeben, unverändert. '
Spexcherbefragungsgruppe
Die 14 Speicherbefragungsbefehle beziehen sich jeweils auf eine bestimmte Adresse im Speicher, die durch daa Adressen- · feld <m>, durch das Bit "Seite Null/laufende Seite" und durch das Bit "DIREKT/INDIREKT" gegeben ist. Das seitenmäßige und das indirekte Adressieren sind dabei im Zusammenhang mit dem Rechner HP 2116 der Anmelderin bereits im einzelnen bekannt.
Das Adressenfeld <m> ist ein Feld von 10 Bit Länge und
309832/0843
enthält die Bits O bis 9. Das Bit "Seite Null/laufende Seite" ist das Bit Nummer 10 und das Bit "DIREKT/INDIREKT" ist das Bit 15, bis auf den Fall des Zugriffes zu den Registern A
und B, wo das Bit Nummer 8 das Bit "DIREKT/INDIREKT" ist.
Ein indirekter Zugriff wird durch <.,I>wie folgt von der
Adresse ^my bezeichnet. :
Zugriff zum A- oder B-Register: Wenn bei einem Speicherzugriffsbefehl anstelle von (Ίη) die Speicherstelle <A> oder (B^ verwendet wird, behandelt der Befehl den Inhalt des A-
oder B-Registers genau so wie den Inhalt der Speicherstelle <m> . Für den direkten Zugriff zu dem A- oder B-Register besteht jedoch eine Einschränkung, auf die weiter unten eingegangen wird.
ADA m,I "addiere zu A". Der Inhalt der adressierten Speicherstelle m wird binär zu dem Inhalt des Α-Registers addiert, die Summe verbleibt im Α-Register. Falls vom Bit 15 ein tibertrag auftritt, wird in das E-Register 0001 eingegeben, sonst bleibt das Ε-Register unverändert.
ADB m,I "addiere zu B". Sonst identisch zu ADA.
CPA m/I "vergleiche mit A und überspringe wenn ungleich".
Der Inhalt der adressierten Speicherstelle wird mit dem Inhalt des Α-Registers verglichen. Wenn die zwei sechzehnstelligen Wörter verschieden sind, wird der nächste Befehl übersprungen, d.h. P- und M-Register werden nicht
309832/0843
um eins, sondern um zwei weitergeschaltet. Sonst wird der nächste Befehl in der normalen Reihenfolge ausgeführt. '
CPB m,I "vergleiche mit B und überspringe wenn ungleich". Sonst identisch mit CPA.
LDA m,I "lade in A". Das Α-Register wird mit dem Inhalt der adressierten Speicherstelle geladen.
LDB m,I "lade in.B". Sonst identisch mit LDA.
STA m,I "speichere A". Der Inhalt des Α-Registers wird in die adressierte Speicherstelle gespeichert. Der frühere Inhalt der adressierten Speicherstelle geht verloren.
STB m,I "speichere B". Sonst identisch mit STA.
IOR m,I "inklusives ODER mit A". Der Inhalt der adressierten Speicherstelle wird gemäß der logischen Operation "INKLUSIVES ODER" mit dem Inhalt des Α-Registers verknüpft.
ISZ m,I "erhöhe und überspringe wenn Null". Zu dem Inhalt der adressierten Speicherstelle wird eins addiert. Wenn das Ergebnis dieser Addition Null ist, wird der nächste Befehl übersprungen, d.h. die Register P und M werden nicht um eins, sondern um zwei weitergeschaltet. Der erhöhte Wert wird an die adressierte Speicherstelle zurückgeschrieben. Die Verwendung des Befehls ISZ im
08832/0843
Zusammenhang mit den Registern A und B ist, wie weiter unten angegeben, auf den indirekten Zugriff beschränkt.
AND m,I "logisches UND mit AM. Der Inhalt der adressierten Speicherstelle wird mit dem Inhalt des Α-Registers gemäß der logischen Operation "UND" verknüpft.
DSZ m,I "vermindere und überspringe wenn Null". Von dem
Inhalt der adressierten Speichefstelle wird eins abgezogen. Wenn das Ergebnis dieser Operation Null ist, wird der nächste Befehl übersprungen. Der verminderte Wert wird in die adressierte Speicherstelle zurückgeschrieben. Die Verwendung des Befehls DSZ im Zusammenhang mit den Registern A und B ist, wie weiter unten Angegeben, auf den indirekten Zugriff beschränkt.
JSM ΐΐι,Ι "springe zu Unterprogramm". Der Befehl JSM ermöglicht den Sprung tu einem Unterprogramm sowohl im Speicher ROM als auch im Speicher RWM. Der Inhalt des P-Registers wird an der Adresse abgespeichert« die an 4er Stell· 1777 enthalten ist (Stapelzeiger). Der Inhalt des Stapelseigere wird um eins erhöht und die Register M und P mit der befragten Speicherstelle beladen .
JMP m,I "Sprung". Dieser Befehl überträgt die Steuerung an den Inhalt der adressierten Speicherstelle. Die befragte Speicherstelle wird ffowohl in das M-Register
3 0 9 8 3 2 / 0 S i 3
als auch in das P-Register geladen, wodurch ein Sprung an diese Stelle bewirkt wird.
Verschiebung und Drehung
Die acht Schiebe-Drehungs-Befehle enthalten jeweils ein vierstelliges Schiebefeld <n>, welches eine Verschiebung von ein bis 16 Bits ermöglicht,, d.h. 1_< η < 16. Wenn die Angabe <n> weggelassen wird, folgt eine Verschiebung um ein Bit.. Der Schiebekode in den Bits 8, 7, 6 und 5 ist der Binärkode für n-1, bis auf SAL und SBL, wo der Komplementärkode für n-1 verwendet wird.
AAR η "arithmetische Rechtsverschiebung von A". Das
Α-Register wird um η Stellen nach rechts verschoben, wobei die. Vorzeichenstelle (Bit 15) alle leer gewordenen Stellen füllt. Dies bedeutet, daß die n+1 bedeutsamsten Stellen gleich der Vorzeichenstelle' werden. . .
ABR η "arithmetische Rechtsverschiebung von B". Sonst identisch zu AAR. . -
SAR η "Rechtsverschiebung von A". Das Α-Register wird um
η Stellen nach rechts verschoben, wobei alle geleerten ' Stellen gelöscht werden. Dies bedeutet, daß die η bedeutsamsten Stellen gleich Null werden.
SBR η "Rechtsverschiebung von B", Sonst identische mit SAR*
309832/08 4 3
SAL η "Linksverschiebung von A". Das Α-Register wird um
η Stellen nach links verschoben, wobei die η unbedeutendsten Stellen gleich Null werden.
SBL η "Linksverschiebung von B". Sonst identisch mit SAL.
RAR η "rotiere A rechts". Das Α-Register wird um η Stellen nach rechts rotiert, wobei das Bit 0 nach Bit 15 eingeschrieben wird.
RBR η "rotiere B rechts". Sonst identisch:.\mit RAR. Ändern - überspringen
Die sechzehn ändern-überspringe Befehle enthalten jeweils ein fünfstelliges Überspringfeld in <.'n> , welches eine relative Verzweigung zu einer von 32 Stellen ermöglicht, wenn die Überspring-Bedingung erfüllt ist. Die Bits 9, 8, 7, 6 und 5 sind für eine positive oder negative relative Verzweigung kodiert, bei welcher die Zahl <n> gleich der zu der laufenden Adresse zu addierenden Zahl ist (überspringen in Vorwärtsrichtung) und die Zahl <-n> diejenige, die von der laufenden Adresse abgezogen werden muß (überspringen in
Rückwärtsrichtung). Wenn der Wert <n> weggelassen wird, wird dieser als eins ausgelegt. -^*
309832/0843
=0 CODE=OOOOO wiederhole den gleichen Befehl
<n> =1 CODE=OOOOl führe nächsten Befehl aus
<n>=2 CODE=OOOlO überspringe einen Befehl
<n> =15 CODE=OlIIl addiere 15 zur Adresse
< n> =-1 . CODE=IIlIl führe vorhergehenden Befehl aus.
<n> =-16 CODE=IOOOO subtrahiere 16 von Adresse
keine Angabe CODE=OOOOl führe nächsten Befehl aus
Die Änderungsstellen bestehen aus den Bits 10 und 4» Ein dem Befehl folgender Buchstabe in(iä> führt in Bit 10 eine Eins ein, wodurch das geprüfte Bit nach der Prüfung eingestellt wird. In ähnlicher Weise bewirkt der Buchstabe Cc> daß in Bit 4 eine eins eingeführt wird, um das Prüf-Bit zu löschen. Falls sowohl ein Setz- als auch ein Lösch-Bit angegeben werden, überwiegt die Setz-Anweisung. Die Anderungs-Bits beziehen sich nicht auf die Befehle SZA, SZB, SIA und SIB.
SZA ft "ttberspringei-wenn A Null41. Wenn alle 16 Bits des
Α-Registers Null sind, wird die durch η angegebene Stelle übersprungen. ;
SZB η "überspringe wenn B Null". Sonst identisch alt
RZA η "überspringe wenn h nicht HuIlVo Gegenteil von*
RZB. N "überspringe wenn B nicht Null". Sonst identisch mit
SIA η "überspringe wenn A Null, dann erhöhe Ä"o Das ^-
018 32/0843
wird auf Null geprüft, dann um eins erhöht. Wenn alle 16 Bits vor der Erhöhung Null waren, überspringe die durch η gegebene Stelle.
SIB η "überspringe wenn B Null, dann erhöhe B". Sonst identisch mit SIA.
RIA η "überspringe wenn A nicht Null, dann erhöhe A". Gegenteil von SIA.
RIB η "überspringe wenn B nicht Null, dann erhöhe B". Sonst identisch mit RIA.
SLA n,S/C "überspringe wenn unbedeutsamstes Bit von A Null", Wenn das unbedeutsamste Bit (Bit Null) des A-Registers Null ist, überspringe die durch η gegebene Stelle. Wenn entweder S oder C vorhanden ist, wird das Prüf-Bit nach der Prüfung entsprechend geändert.
SLB n,S/C "überspringe wenn unbedeutsamstes Bit von B Null", Sonst identisch mit SLA.
SAM n,S/C "überspringe wenn A minus". Wenn die Vorzeichen-, stelle (Bit 15) des Α-Registers eins ist, überspringe die durch η gegebene Stelle. Wenn entweder S oder C . vorhanden ist, wird Bit 15 nach der Prüfung geändert.
SBM n,S/C "überspringe wenn B minus". Sonst identisch mit SAM.
309832/0843
SAP YifS/C "überspringe wenn A positiv". Wenn die Vorzeichenstelle (Bit 15) des Α-Registers Null ist, überspringe die durch η gegebene Stelle. Wenn entweder S oder C vorhanden ist, wird nach der Prüfung Bit geändert.
SBP n,S/C "überspringe wenn B positiv". Sonst identisch
mit SAP. ' : .
SES n,S/C "überspringe wenn unbedeutsamstes Bit von E eingestellt". Wenn das Bit 0 des Ε-Registers eine eins enthält, überspringe die durch η gegebene Stelle. Wenn entweder S oder G vorhanden ist, wird das gesamte Ε-Register eingestellt bzw. gelöscht.
SEC n,S/C "überspringe wenn unbedeutsamstes Bit von E gelöscht". Wenn das Bit 0 des Ε-Registers eine Null enthält, überspringe die durch η gegebene Stelle. Wenn entweder S oder C vorhanden ist, wird das gesamte Ε-Register eingestellt bzw. gelöscht.
Komplement und direkter Speicherzugriff
Die folgenden sieben Befehle umfassen Komplementieroperationen und verschiedene Spezialbefehle, die das Ausdrucken und Operationen mit dem erweiterten Speicher beschleunigen.
CMA "komplementiere A". Das Α-Register wird durch sein Einer-Komplement ersetzt.
309832/0843
CMB "komplementiere B". Das B-Register wird durch sein Einer-Komplement ersetzt.
TCA "Zweier-Komplement von A". Das Α-Register wird durch sein Einer-Komplement ersetzt und um eins erhöht.
TCB "Zweier-Komplement von B". Das B-Register wird durch sein Einer-Komplement ersetzt und um eins erhöht.
EXA "führe A aus". Der Inhalt des Α-Registers wird als
laufender Befehl behandelt und in der üblichen Weise ausgeführt. Das Α-Register bleibt unverändert, sofern nicht der Befehlskode eine Änderung von A bewirkt.
EXB "führe B aus". Sonst identisch mit EXA.
DMA "direkter Speicherzugriff". Der direkte Speicherzugriff im erweiterten Speicher wird dadurch wirksam gemacht, daß das indirekte Bit in M eingestellt und ein Befehl - WTM gegeben wird. Der nächste ROM-Taktimpuls überträgt A nach M und die folgenden beiden Arbeitsspiele B nach M. Der ROM-Taktimpuls bleibt solange gesperrt, bis er von der DMA-Steuerung wieder freigegeben wird.
Spezielle Einschränkung für den direkten Zugriff zu den Registern A und B
Für die fünf Registerzugriffsbefehle, die bei ihrer Ausführung eine Schreiboperation umfassen, muß ein Registerzugriff zum A- oder B-Register auf einen indirekten Zugriff
309832/0843
■ - 151 -
beschränkt werden. Die Befehle sind STA, STB, ISZ, DSZ und JSM. Ein direkter Zugriff zu den Registern A und B bei diesen Befehlen kann einer Programmänderung bewirken.(Dies ist hier anders als beim Rechner HP 2116, bei welchem ein. Speicherzugriff zum A- oder B-Register als Zugriff zu den Speicherstellen 0 bzw. 1 behandelt wird.) Ein Zugriff zu den Speicherstellen 0 oder 1 bezieht sich tatsächlich auf die Speicherstellen 0 oder 1 in dem Auslesespeicher ROM.
Eingabe - Ausgabe (IQG)
Die elf Eingabe- Ausgabe- Befehle werden, wenn sie zusammen mit einem Auswahlkode gegeben werden, zum über-
prüfen, Einstellen oder Löschen von MarkierungsrBits und zum Steuern von Flipflops verwendet, wie zum übertragen von Daten zwischen den Registern A und B und den I/O~Registern.
STF <SC> "Markierungs-Bit einstellen". Es wird das
Markierungs-Flipflop des durch den Auswahlkode <SC> angezeigten Kanals eingestellt.
CLF <SC> "lösche Markierungs-Bit". Es wird das Markierungs-PJLipflop des durch den Auswahlkode ^SC > ange- · zeigten Kanals gelöscht.
SFC <SC> "überspringe wenn Markierungs-Bit gelöscht". Wenn in dem durch <; SC > gegebenen Kanal das Markierungs-Flipflop gelöscht ist, wird der nächste Befehl übersprungen.
309832/08 4 3
SFS <SC> H/C "überspringe wenn Markierungs-Bit gesetzt".
Wenn in dem durch <SC> angegebenen Kanal das Markierungs-Flipflop eingestellt ist, wird der nächste Befehl übersprungen. H/C zeigt dabei an, ob das Markierungs-Flipflop in seiner Stellung belassen oder nach Ausführung des Befehls SFS gelöscht werden soll.
CLC <SC> H/C "lösche Steuerung". In dem durch <SC> angegebenen Kanal wird das Steuer-Flipflop gelöscht. H/C zeigt dabei an, ob das Flipflop in seiner Stellung belassen oder nach Ausführung des Befehls CLC gelöscht werden soll.
STC <SC> H/C "setze Steuerung". In dem durch <SC> angegebenen Kanal wird das Steuer-Flipflop eingestellt. H/C zeigt dabei an, ob das Flipflop in seiner Stellung belassen oder nach Ausführung des Befehls STC gelöscht werden soll.
OT* <SC y H/C "Ausgabe A oder B". Sechzehn Bits des A/B-Registers werden an das I/O-Register ausgegeben. H/C ermöglicht ein Beibehalten der Stellung oder ein Löschen des Markierungs-Flipflops nach Ausführung des Befehls Ot". Die verschiedenen Auswahlkodes ermöglichen es, verschiedene Funktionen ablaufen zu lassen,
309832/0843
nachdem das I/O-Register geladen worden
SC=OO Die Daten vom A- oder B-Register
werden bei jedem auftretenden OT Befehl jeweils zu 8 Bits gleichzeitig ausgegeben. Das A- oder B-Register wird dann um 8 Bits nach rechts rotiert.
SC=Ol Das I/O-Register wird mit 16 Bits vom A/B-Register geladen.
SC=02 Die Daten vom A/B-Register werden zum Zwecke der übertragung an den Magnetkartenleser jeweils ein Bit pro Οτ^-Befehl ausgegeben. I/O-Register bleibt unverändert.
SC=04 Das I/O-Register wird mit 16 Bits vom A/B-Register geladen und sodann das Steuer-Flipflop für den Drucker ein-" gestellt.
SC=08 Das I/O-Register wird mit 16 Bits vom ' A/B-Register geladen und sodann das Steuer-Flipflop für die Anzeige eingestellt. ,
SC=16 Das I/Ö-Register wird mit 16 Bits vom
08832/0143
A/B-Register geladen und sodann der Inhalt der I/O-Register an die Schalter-Verriegelungsschaltungen übertragen.
M* <01> H/C "A oder B laden". Vom I/O-Register werden
16 Daten-Bits in das A/B-Register geladen. H/C ermöglicht ein Halten oder Löschen des
Markierungs-Flipflops, nachdem der Befehl
Jfe
LI ausgeführt worden ist.
LI <*OO> Die unbedeutsamsten 8 Bits des I/O-Registers
werden in die bedeutsamsten Bits des A- oder B-Registers geladen.
MI* <01> H/C "mische in A oder B". Mische 16 Daten-Bits
aus dem I/O-Register in das A/B-Register durch Ausführen des "inklusiven ODER". H/C ermöglicht das Halten oder Löschen des Markierungs-Flipflops nachdem der Befehl MI* ausgeführt worden ist.
MI <OO> Die unbedeutsamsten 8 Bits des I/O-Registers
werden durch das "inklusive ODER" mit den unbedeutsamsten 8 Bits des A- oder B-Registers kombiniert und in die bedeutsamsten Stellen des A- oder B-Registers rotiert.
309832/084 3
MAC-Befehle
Es stehen insgesamt 16 MAC-Befehle für den Betrieb zur Verfügung:
(a) mit den gesamten Gleitkomma-Daten (Transfer, Verschiebung usw.), oder
(b) mit jeweils zwei Gleitkomma-Datenworten, um bei arithmetischen Programmen die Stellen- oder Wort-Schleifen zu beschleunigen.
^A0-3;-' bedeutet dabei Inhalt der Bits 0 bis 3 des A-Registers.
ARIl ist ein Merkzeichen für die arithmetischen Pseudo-Register, die in dem RWM-Speicher an den Adressen 1744 bis 1747 (oktal) angeordnet sind.
AR 2 ist ein Merkzeichen für die arithmetischen Pseudo-Register, die in dem RWM-Speicher an den Adressen 1754 bis 1757 (oktal) angeordnet sind. ■
D. bedeutet: Mantissen der i-ten Dezimalstelle; bedeutsamste Stelle ist D·,, unbedeutsämste Stelle ist D12 und der Dezimalpunkt (das Komma) liegt zwischen Dl Und D2
Jede Operation mit Mantissen, ist eine binär kodierte Dezimaloperation.
309832/0843
- A3O -
RET "Bückkehren".
Die 16-stellige Zahl an der höchsten in Anspruch genommenen Adresse des Stapels wird an die P- und M-Register übertragen. Der Stapelzeiger (=nächste freie Adresse im Stapel) wird um eins erniedrigt. , <B>, <E> bleiben unverändert.
MOV "Bewege überlauf".
Der Inhalt des Ε-Registers wird nach A„__ übertragen. Der Rest des Α-Registers und des Ε-Registers werden mit Nullen gefüllt.
<B>bleibt unverändert.
CLR "Lösche ein Gleitkomma-Datenregister im RWM-Speicher an der Speicherstelle <A>".
<A>, <B>, <E> bleiben unverändert.
XFR "Gleitkornma-Datentransfer innerhalb des RWM-Speichers von Speicherstelle <A> nach Speicherstelle<B>" . Das Programm beginnt mit dem Transfer des Exponentenwortes. Die Daten an der Speicherstelle <;A> bleiben unverändert.
<E> bleibt unverändert.
MRX Die Mantisse ARl wird η-mal nach rechts verschoben. Das Exponentenwort bleibt unverändert.
<BQ _> = η (binär verschlüsselt)
309832/0843
lte Verschiebung: <AQ _>-iö,; Di*Di+i' Di2 9eht verloren j te Verschiebung: θ "* D]/ Di^Di+i' Di2 9eht verloren nte Verschiebung: θ -^ D1; Di^Di+i' Di2 "^ AO-3
θ 4 E, A4-15
jede Verschiebung:<BQ_3 >- 1 "^ B o_3 <B4_,_ > bleiben unverändert
MRY "Die Mantissen AR2 werden η-mal nach rechts verschoben". Sonst identisch zu MRX.
MLS "Die Mantissen AR2 werden einmal nach links verschöben1.1. Das Exponentenwort bleibt unverändert.
θ -VD1; D1 ^D1+1; D1 -> AQ_3 < B > bleibt unverändert
DRS "Die Mantisse ARl wird einmal nach rechts verschoben?. Das Exponentenwort bleibt unverändert. θ ^D1; D1 *Di+1; D12 * AQ_3. NULL ■* E und A4^5 <B> bleibt unverändert
DLS "Mantisse ARl wird um eins nach links verschoben". Das Exponentenwort bleibt unverändert.
<B> bleibt unverändert
309 8 32/084
FXA "Festkomma-Addition".
Die Mantissen in den Pseudo-Registern AR2 und ARl werden aufaddiert und das Ergebnis wird in AR2 eingeschrieben. Beide Exponentenworte bleiben unverändert. Wenn ein überlauf auftritt, wird in das E-Register 0001 eingegeben, andernfalls ist ^E>Null.
< AR2 > + <AR1> + DC ·> AR2
DC = θ wenn vor Ausführung des Programms <E^ = 0000 DC = 1 wenn vor Ausführung des Programms <E >= 1111
< B>, <AR1> unverändert
FMP "Schnelle Multiplikation".
Die Mantissen in den Pseudo-Registern AR2 und ARl werden <"BQ _>-mal aufaddiert und das Ergebnis wird in AR2 eingeschrieben. Der gesamte dezimale überlauf wird in AQ_3 eingegeben. Beide Exponentenworte bleiben unverändert.
<AR2> + <AR1> *<BQ_3>+DC > AR2
DC = 0, wenn vor Ausführung des Programmes <E> = 0000 DC = 1, wenn vor Ausführung des Programmes <E>= 1111 NULL ■> E, A4-15
<AR1> unverändert
FDV "Schnelle Division".
Die Mantissen in den Pseudo-Registern AR2 und ARl werden so oft aufaddiert, bis ein erster dezimaler überlauf auftritt. Das Ergebnis wird in AR2 eingegeben. Beide Exponentenworte bleiben unverändert. Jede Addition ohne
309832/0843
überlauf bewirkt eine Erhöhung von ^B > um +1.
lte Addition: <AR2> + <ARl> + DC ■> AR2
DC = 0, wenn vor Ausführung des Programmes <E > = 0000 DC = 1, wenn vor Ausführung des "Programmes <E > = 1111
nächste Additionen: <AR2 > + < ARl> ■* AR2 NULL ·* E
<AR1> unverändert
CMX Das Zehnerkomplement der Mantisse ARl wird in ARl zurückgeschrieben und das Ε-Register wird auf Null gesetzt. Das Exponentenwort bleibt unverändert. <B> bleibt unverändert.
CMY Das Zehnerkomplement der Mantisse AR2, sonst identisch mit CMY.
MDI "Dezimalerhöhung der Mantisse".
Die Mantisse an der Stelle <A>wird auf der Stufe D12 um eine dezimale Eins erhöht. Das Ergebnis wird an die" gleiche Stelle zurückgeschrieben und in das E-Register wird null eingegeben. Das Exponentenwort bleibt unverändert. Wenn ein Überlauf auftritt, ergibt sich die . Mantisse zu 1,000 0000 0000 (dezimal)
und in das Ε-Register wird 0001 (binär) eingegeben, bleibt unverändert.
NRM "Normalis ation"« - '
Die Mantisse in dem Pseudo-Register AR2 wird nach links
309832/0843
rotiert,- um D, ^ 0 zu erreichen. Die Anzahl dieser vierstelligen Linksverschiebungen wird in binärer Form in BQ_3 gespeichert. (<B4_15>=0)
wenn ^Bo_3>= 0,1,2,. . . ., 11 (dezj -><E>= 0000 wenn<BQ_3>= 12 (dez) *· Mantisse = null und<E>= 0001
Das Exponentenwort bleibt unverändert.
<Ά> bleibt unverändert.
Die Binär-Kodes aller oben angeführten Befehle sind in der folgenden Kodiertabelle angeführt. Hierbei bedeutet ein '
das A- oder B-Register, D/I direkt/indirekt, A/B A-Register/B-
Register, Z/C Seite null (Ausgangsseite) /laufende Seite,
H/S Prüfbit Halten/Einstellen und H/C Prüfbit Halten/Löschen.
Die Werte D/I, A/B, Z/C, H/S, und H/C werden als 0/1 kodiert.
309832/08A3
KODIERTAFEL
GRUPPE
OKTAL
BEFEHL
15
13 12 11 .10 9 8 7 6
2
MEMORY
REFERENCE
GROUP
SPEICHER
ZUGRIFFS
GRUPPE
-O
-1-
-2—— -3
_4
-4
-5
— ζ «·«-*> —
-6
-6
AD* CP* LD*
IOR ISZ AND DSZ JSM JMP
Ψ-
Mi Ψ
ΪΙ
O O O O
1 1 1 1
1 1
ο ■ 1 1 O O O O 1 1
O 1 O 1 O O 1 1 O -
% <r
MEMORY ADDRESS
Vj
ι vc
0 %
1 ^C
SPEICHER ADRESSE
0SHIFT
^ROTATE
SCHIEBEN
-DREHEN
07—
07—
07—
07—
-O -2 -4 -6
A* R S*R
O
O
O
O
1
1
1 1 1 1
1 ^
ι y5
ι Vs
1 K
«■SHIFT— . CODE
SCHIEBE KODE
- O O O
- ο ο ι ο
- O 1 O
- O 1 1
ALTER-
o SKIP
GROUP
< ÄNDERN -
ÜBERSPRINGEN
07— 07— 07— 07— 07— 07— 07— 07— 07—
-O -O -O -O -1 -2 -3 -4
r-5
SZ1K RZ* SI*
SES SEC
O O O O O
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 ^
ι· VJ
1 1
O 1 O 1
—SKIP-CODE
SPRUNG KODE
O O
1' 1
1 1 1 1 1
«£ Yc Vc
0 0
0 0
0 0
0 0
O C O ] 0 10 10
fs) CD
KODIERTAFEL·- Fortsetzung
GRUPPE
OKTAL
BEFEHL
14.. 13 12 11 10 9 8 7 6 5 4 3 2 1 O
REGISTER
REFERENCE
GROUP
REGISTER
ZUGRIFFS
GRUPPE ·
ω ο «ο
07—17 07—37 07—57 07—77 07—17
07-557 07-577 07—17
07—57 07-677 07-717
07—37
ADA ADB CPA CPB LDA
STA STB IOR
AND DSZ JSM
1 1 1 1 1 1 1 1 1 1 1 1 1 1
Hi
rs
1 %
1 %
1 W
0 0
0 0
0 0
0 .0
0 0 0
1 1 1 1
1 1 1 1 0 0 Ό 0
0 0 0 1
0 0
1 1
1 1
1 0
1 1
0 0
0 1
1 1 1
1 0 111 0 0 1
0 11
1 0
1 1
1 1
1 1 1 1
1 1
111
111
111
1 1
1 1
111
111
111
1 11
111
111
111
111
111
> BERECHNEN
^ -AUSFÜHREN
070036 07-056 07-076
DMA CM* TC*
1 1 1?3 -----001110
1 1 1 0 ------011110
ο ι ι ι -Vj -----loiiio
1 1 IV? -----111110
Ν*
2725
KDDIERTAFEL - Fortsetzung
GRUPPI
OKTAL
BEFEHL
15
13 12 11 10 9 8 7 6 5 4 3 2 1
INPUT
OUTPUT
GROUP
I/O
GRUPPE
ω
σ
co
OO IaJ
ro
ο
co
1727— 1737— 17-7— 17-5 — 17-5 — , 17-6 — 17-1— 17-2 — 17-0—
STF
CLF
SFC
SFS
CLC
STC
OT*
LI*
MI*
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
O 1. 1-1.1 11 %' 1 1 1
"L ι ο ίο
1 «—SELECT-CODE
AUSWAHL KODE
*/c
1 1
%. O Vc O
ι. ι ο .ο
1 O
0 0
1 1
MAC
GRUPPE
170402 170002 170000 170004 174430 174470 171400 120410 175400 170560 171460 170420 174400 170400
170540 τ -71 /ι cn
RET
MOV
CLR
XFR
MRX
MRY
MLS
DRS
DLS
FXA
FMP
FDV
CMX
CMY,
MDI
MtJM
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1-
1 ,
0 0 0 0 1 1 0 0 1 0 0 0 1 0 0
0
0
ο
0
ο ο
0
0 0 0
1 0 1
0
0
0
0
0
C
η ι
1 0 0
ο ο
0 0 0 0 0 0 0 0 0 0
1 1
1 1 1 1
0
0
0
0
0
0
Q Q
0
0
1 0
0 0
0 0
0
0
1 1 0
O 0
0
0 1 0 0 0 0
0 0
1 1
σ ο
1 0
0
0
0
0
poo
0 0
ooo
0 1
1 1
0
0
0
0
0
0
0
0
0
0
0
0
0
ο σ
ro -J ro cn
Ausführliche Aufstellung der Programme und Unterprogramme mit den Grundbefehlen
Im folgenden wird eine vollständige Aufstellung aller Programme und Unterprogramme^ mit den von dem Rechner verwendeten Grundbefehlen gegeben sowie alle in diesen Programmen und Unterprogrammen verwendeten Konstanten. Alle diese Programme, Unterprogramme und Konstanten sind entweder in dem Grund-Auslesespeicher ROM oder in den hiermit verwendeten steckbaren ROM-Moduln gespeichert. Jede Seite einer bestimmten Gruppe von Programmen, Unterprogrammen und Konstanten ist an der linken oberen Ecke durchnumeriert und jede Zeile einer Seite ist links in der ersten Spalte getrennt durchnumeriert. Hierdurch soll die Bezugnahme auf bestimmte Teile der Aufstellung erleichtert werden. Weiterhin werden in der Aufstellung Zwischenüberschriften verwendet, um Programme, Unterprogramme, Konstantengruppen, verschiedene Teile des Auswahlspeichers RM, die steckbaren ROM-Moduln usw. näher zu bezeichnen. Jeder Befehl eines Programmes oder Unterprogrammes und jeder in dem Auswahlspeicher ROM oder in einem steckbaren ROM-Modul gespeicherte Konstante wird in der dritten Spalte der Seite sechsstellig in Oktalform dargestellt. Die Adresse der ROM-Speicherstelle, an welcher jeder solche Befehl oder jede solche Konstante gespeichert ist, wird in der zweiten Spalte der Seite in fünfstelliger Oktalform dargestellt.
In der vierten Spalte von links einer jeden Seite werden für die meisten Konstanten und für viele der Befehle Merkzeichen
309832/0843
angegeben, die als symbolische Adressen oder als Kurssbezeichnungen dienen, um die Bezugnahme auf die Konstanten und Befehle sowie auf zugeordnete Befehle zu erleichtern. In der fünften Spalte von links sind die Merkzeichen der Grundbefehle und der Pseudo-Befehle angegeben.. Wie bereits erwähnt, wird jeder Grundbefehl als Programmschritt eines aus mindestens einem Grundbefehl bestehenden Programmes oder Unterprogrammes verwendet und besitzt daher eine ROM-Adresse. Pseudo-Befehle wie ORG, EQU usw., welche nicht unter den oben angegebenen 71 Grundbefehlen auftreten und als Pseudobefehle erkennbar sind, werden zur Steuerung des Assemblers benutzt, der die symbolische Kodierung der Merk-: zeichen in den vierten, fünften und sechsten Spalten in die Adressen und den Inhalt der ROM-Register übersetzt, welche?, in den zweiten und dritten Spalten auftreten. (Näheres ist dem Kapitel des Hewlett-Packard-Anweisungsheftes "Assembler Programmer's Reference Manual" vom April 1970 zu entnehmen.) Pseudo-Befehle werden nicht als Programmschritte in von dem Rechner ausgeführten Programmen und Unterprogrammen verwendet und besitzen daher keine ROM-Adresse. In der sechsten Spalte von links jeder Seite, sind Operanden-Kodes in Merkzeichenform angegeben und rechts davon Bemerkungen mit weiteren Erläuterungen. Das Format, die Anordnung und die Verwendung dieser Aufstellung sind in dem oben erwähnten Änweisungsheft ausführlich beschrieben.
309832/0843
BASE PAGE 205B—554B 1400B--1777B
• 009· •010· «011* •012· «013· •014· «015· •016· •017· 0018· «019·
• 022· •023· 0024· «025· «026· 6027»
ASHBtAtL
B0276 oRG 276B ROUTINE LINKAGES AND SYSTEM CONSTANTS
with the exception or 16 words the (Programm-Anschluß un<l· Systemkon&tanten;
SYMBOL TRANSFORH TABLE TOR THE
SX7 CHARACTER GENERATION FOR THE PRINTER · ·
»no the display uses, (Symbol-Umsetzertafel für die Bildung
285—262 46 words von 5x7-Zeichen für Drucker und
;- .Sichtgerät)
.DSPl OEF 3000B (SEE I/O SUP LINE 133) .DBUF DEF 166UB (SEE I/O SUP LINE 134)
206 207
211 212
225 226
245 246 247 250 251 252 253 254 255 256
.TABl DEF 101564B (SEE I/O SUP LINE .TAB3 DEF 0ΒΛ203Β (SEE I/O SUP LINE
.LOD .REC
.TAB5
.TA06
.TAB7
.PRTl
.DSP
.ΒΓ3Ι
.BF5A
SKCD
LlflA
»TA84
DEF 3171B DEF 3043B
DEF 3470B OEF 2100B DEF 1626B DEF 2536B DEF 27150 DEF 2C323 DEF 2051B DEF 7017B DEF 2227B DEF 000430B
(SEE I/O SUP LINE (SEE I/O SUP LINE
(SEE (SEE (SEE (SEE
ICEE «SEE (SEE (SEE (SEE (SEE
I/O SUP I/O SUP
i/o sup
I/O SUP
i/o sup
I/O St1P
i/o sup
I/O SUP I/O SUP I/O SUP
LINE LINE LINE LINE LINE LIME LINE LINE LINE LINE
136) 137)
140) 141)
144) 145) 146) 147) 148) 149) 150) 151) 152) 153)
LINKAGE TO THF. BASIC ARITHMETIC OPERATORS USES:
263—275
THE NEXT AREA 276—554 175 WORDS IS USED BY THE SYSTEM FOR COMMON CONSTANTS AND NEEOED LINKAGFS. THE ARFA IN WHICH THE CONSTANT IS USED IS INDICATED BY THE FOLLOWING KEYi
COLUHN 1 BASIC ΗλΤΗ AREA tMATH 1·
2 I/O SUPERVISOR
3 MAG CARO LOAO *ND RECORD
4 COMPHER/INTERPRETER
5 CONTROL SUPERVISOR
6 UNCOMPILER
(Allgemeine Konstanten und erforderliche Anschlüsse)
00276 00277 60303 00301
003(13 «0304
02flPf>0 Kl OCT 20060
OP2270 .FHT DEF 2270B
G3?5?5 .BXFP OEF 2525R
C33271 SYNTX OEF 327113
503273 EXEOX DEF 3273B
M3365 OUT DEF 3365B
602241 .FLT DEF 2241B
309832/0843
BASE PAGE 205B---554B 1400B--1777B
«058 603(35 B02251 .rxD DEF 2251B 2 5
6059 6O306 002022 .BF5G DEF 20228 Z 5 -
0060 60307 006226 KY6 DEF 6226B 5 4
«061 £6310 Pß2260 .FMT2 DEF 2260B . 2 CHECKSUM
«062 00311 ©16645 UNCPL' OEF 16045B 6 4
«063 03312 006723 ENT? DEF 6723B 5 5
«064 60313 004ß55 CHSET DEF 4G55B 4 12
«065 C0314 Π04671 CMPLR DEF 407 IB 4 1
«066 C8315 P04547 IHTRP DEF 4547B 4 1
0067 60316 ee5ß47 XEOL DEF 5047B 4 4
«068 60317 607312 .CSIN DEF 7312B 5 1
0069 ßf5320 i5B7712 RGTO DEF 7712B 5 1
607B C6321 ©07346 EKiD DEF 7346B 5 1
0071 6C5322 6163B3 TABl DEF 16303B 1
Θ072 60323 016C36 SMON DEF 16006B 2
0073 0S324 «532470 .PNOl DEF 2470B 12
0074 05325 10P470 CKSl OCT 102470 15
«075 S0326 B05616 RECY DEF 5616B 2
6076 G0327 J5324S3 K2 OCT 2400 2
C077 60330 177762 M14 DEC -14 2456
607B ϋί)331 177431 K3 OCT 177401 4
Ö079 03332 931750 K4 DEF 1750B 25
0000 63333 C0B521 K5 OCT 521 25
«081 CP334 e/i7la(5 K6 OCT 47100 156
0062 0S335 O72S30 K7 OCT 72000 56
λ not 0G336 r»r \ /. r*fX KG OCT £. \.f.nn 46
6084 6S337 013732 RA DEF 6106 5
0065 0(3340 C60141 K9 OCT 60141 245
€086 C0341 P256 DEC 256 34 .
0087 C0342 630377 P255 DEC 255 - 5
0088 ßfi343 CS53220 P144 DEC 144 24
6089 08344 (500203 P128 DEC 128 235
0090 fiO345 600-177 P127 DEC 127 4
«091 G P346 634570 XJ DEF 4570B 4
0892 0(5347 C001?0 P80 DEC 00 245
«093 C0350 OD01O0 P64 DEC 64 24
0094 C0351 OB0ß77 P63 DEC 63 246
C 09 5 {!3352 60Ρ621 P17 DEC 17 2456
C096 ßff353 030364 P52 DEC 52 245
0097 63354 G07436 UNCl DEF 7436B 46
C098 00355 ßßP06O P48 DEC 48 146
C099 G0356 C0P057 P47 DEC 47 4
§100 GS357 C37417 ISTOR DEF 7417B 145
0101 03360 C3O040 P32 DEC 32
ei02 (50361 O0C.O37 P31 "DEC 31
0103 C3362 G04560 XRH DEF 4560B
0104 00363 171464 K10 OCT 171464
0105 0S364 C-00320 P16 DEC 16
©106- G3365 C0iiqi7 P15 DcC 15
Θ107 C 3366 CÖC316 P14 DEC 14
0108 C 3367 C0O-315 P13 DEC 13
C109 (50370 003314 P12 DEC 12
0110 60371 CB3Q13 Pll . DEC 11
«111 00372 OB0312 P10 DEC 10
0112 GB373 030311 P9 DEC 9
0113 6Ö374 S002I10 P8 DEC β
309832/0843
•0375 000007 BASE PAGE 205B—554B 140fiB—1777Θ P7 DEC 7 2345 3
•in 00376 C00006 P6 OEC 6 2345 56
0115 00377 C3000S P5 OEC 5 1245 124 ,-
• 116 00400 PBO004 P4 DEC 4 12345 2 · .. ■ .
• 117 00401 ΟβΒ003 P3 OEC 3 123456
·11β 00402 CO3P02 P2 ' DEC 2 123456 6 "
• 119 00403 000001 Pl DEC 1 123456
0120 00404 £00105 KIl OCT 105 2 2
• 121 00405 177777 Hl DEC -1 123456 124
• 122 80406 177776 M2 OEC -2 24S 2
• 123 03407 177775 H3 DEC -3 1245 2
«124 03410 177774 H4 DEC -4 1245 2
• 125 03411 177773 HS DEC -5 125 25
• 126 • 8412 177772 H6 DEC -6 3 2 .
0127 00413 177771 H7 DEC -7 24 2S
0128 09414 601570 AlSP DEF 1570B 45 2
«129 00415 177766 HlO OEC -10 124
• 130 63416 177765 MIl DEC -11. 1 24
0131 0(5417 C02771 RNTER OEF 2771B 25 2
0132 00420 177760 M16 DEC -16 1*6 2
6133 03421 177715 MSl DEC -51 2 :
βΐ 34 0(542? 177747 M25 OEC -25 2
C135 00423 177740 H32 DEC -32 12
• 136 Cfl424 177700 M64 DEC -64 12
Θ137 03425 176400 H76B DEC -768 4
• 138 60426 177753 M21 DEC -21 46
• 139 Of.427 177400 H256 DEC -256 4
0140 00430 0C2136 .INT2 DEF 2136B 4 '
0141 C3431 PIß 300 OBl OEF 10000B 35
0142 60432 0120(10 082 DEF 120000 4
0143 00433 P14ßO0 0B3 DEF 140009 45
0144 00434 O74302 K12 OCT 74302 5
0145 >Gfl435 1BCG30 K13 OCT 100000 2
0146 0(3436 Π2Θ3Ί0 K14 OCT 20040 46
0147 GC437 600135 P93 DEC 93 2
0148 00440 031761 K15 DEF 17618
0149 00441 C31777 RSTK OEF 17778
O1S0 e 0442 C01400 K16 DEF 1400B
ClSl «0443 C-42131 K17 OCT 42101
0152 69444 (540100 K18 OCT 40100
0153 60445 034000 K19 OCT 34000
0154 C3446 C04090 P2048 DEC 2048
<U05 C3447 031744 K20 DEr' 1744B
0156 03450 Ca 1754 K21 DEF 17S4B
<J157 00451 C3O024 P20 DEC 20
(1158 00452 000025 P21 DEC 21
0159 03453 C03026 P22 DEC 22
0160 00454 Γ-0ΒΡ27 P23 DEC 23
0161 83455 SOiU10 P72 DEC 72
0162 60456 P31757 K22 OEF 1757B
0163 00457 030032 P26 DEC 26
0164 33460 P16373 ENOSR DEF 16373Π
0165 03461 125252 CKßO2 OCT 125252
0166 00462 C3P153 P107 DEC 107
0167 00463 051535 K23 OCT 51505
• 168 00464 000137 GAZ OCT 137
0169
309832/0843
BASE PAGE 205B—554B 1400B--1777B
«170 «0465 000141 EOL OCT 141 S
0171 Ö0466 P33140 BOL OCT 140 5 -
0172 C0467 000122 R OCT 122 5
«173 SJ0470 »0G372 P58 DEC 58 " 5
0174 C0471 177377 M257 DEC -257 5
0175 60472 0376(30 K24· OCT 37600 5
«176 G 0473 Eß26?7 .SPAC DEF 2627B 2
0177 6Ρ474 Gl6367 CNTÄB DEF 16367B 5
«17B 09475 G0Pfl73 ENSTM OCT 73 56
«179 60476 016114 .TABl DEF 16114H S
«180 60477 «J31740 K25 DEF 1740B 56
«181 00500 P01600 APHA DEF 16008 5
«162 00501 001723 K26 DEF 1723B 1
0183 00502 177767 H9 DEC -9 s 246
«184 60503 C30Ö50 P40 DEC 40 46
0185 80504 OS3061 P49 DEC 49 4
β1Β6 C0505 0Ö9132 P90 DEC 90 4
0187 0S506 600150 P104 DEC 104 4
0186 GC507 D3SU52 P106 DEC 106 456
0189 S3510 PS0242 P162 DEC 162 4'
el 90 eo5H C3S154 P103 DEC IBS 46
0191 «S512 K27 OCT 37gg ' 4
βΐ92 £0513 174ß37 K28 OCT 174007 34
«193 00514 12Ö263 K29 OCT 123263 4
0194 C0515 003777 K30 OCT 3777 2
0195 0C516 177770 K8 DEC -8 - 4
5196 fßS17 irss442 K31 OCT 442 4
0197 £0520 003335 K32 DEF 1757 4
0198 60521 106535 K34 OCT 106535 45
0199 00522 G52525 CKGDl OCT 52525' 236
6200 e?.s?.3 P07122 STLN DEF 7122B 5
0201 60524 004561 XRI DEF 4561B 4
«202 60525 C37516 CKSTP DEF 75163 5
0203 00526 C03035 P29 DEC 29 S '
6204 C0527 £5Ö2S55 P45 DEC 45 26
0205 Cß530 G30ß56 P46 DEC 46 26
0206 00531 G32771 RESOP DEF 2771B 2
0207 CP532 S01537 K35 DEF 15378 5
0208 C 0533 G03265 RETl DEF 3265R 2
0209 C0534 C06670 ENTER DEF 6670B 5
0210 C0535 J501432 K36 DEF 1432B 45
021L 06536 (531726 K37 DEF 1726B 4
0212 0C537 COCl-341 P33 DEC 33 235
0213 ί0540 S16'ii*0 BRWM DEF 164008 2
(3214 03541 pi3PC51 P41 DEC 41 6
0215 Ö8542 C01727 K38 DEF 17278 6
0216 E 054 3 P-32731 L2F DEF 2731B 15
0217 Θ0544 003053 P43 DEC 43 26
0210 C0545 000054 P44 DEC 44 56
0219 00546 OB3042 P34 DEC 34 456
0220 C0547 C07453 RECH DEF 7453B 5
022) 50550 177634 M100 DEC -100 24
0222 6P551 016347 OPTN DEF 163478 5
0223 00552 C04575 SXJ DEF 4575B 4
0224 60553 f?0Pll33 RUN OCT 133 5
0225 00554 001670 .IBIJF DEF 1670B 2
309832/0843
#001 MTABL 150000 ASHBtAtL ca ORG END-OF-LINE HARKER ( )
•002» 15COO0 Cl SPECIAL MARKER FOR ENTER TYPE STMTS MULTIPLY ·
0003* «0005 66746Q C2 OCT 5B STORE ADDITION ♦
0004· 6734C0 C3 OCT ] CLEAR t
«005 00(105 1054R0 C4 OCT 150000 LIST SUBTRACT -
«006· PM06 120321 CS OCT 15000η LOAD
«00? ßG007 14P000 C6 OCT 67400 CLEAR FOR OPTION BLOCKS ! DIVIDE /
«00β ßC3l0 150ΟΠ0 C7 OCT 73400 ILLEGAL 0
0009 c ca π 126425 C10 OCT 105400 K15 1
«0)0 00012 126426 CIl oct 120021 K16 : ·-. *
Coil 0C013 C32252 C12 OCT 140000 •(IMP!
•012 Ρ0Θ14 142021 C13 OCT 150600 CLEAR FLAG
«013 ceai5 176CP0 C14 OCT 126425 6OTO FLAG {ROUTE TO OPTION BLOCK)
«014 {■6016 132401 C15 OCT 126426 OPTION #3
«015 eeoiT 126427 C16 OCT 2252 K17
60)6 0)3020 126430 C17 oct 142021 K18 f
«017 flflt»21 075021 C20 OCT 176000 NORMAL ·
caio cea22 O77C21 C21 OCT 132401 TRACE " : " .
C019 CO023 1G1P21 C22 OCT 126427 FIXED
βθ?0 S0324 1B3321 C23 OCT 126430 FLOAT
«021 t'B925 06632t C 24 OCT 7S021 ENTER
fiö22 EO026 116021 C25 OCT 77021 OISPLAY
€023 G0327 H2C21 C26 OCT 101021 .SPACE
eo24 <?O930 114021 C27 OCT 103021 PRINT
0625 PfiZ31 122021 C30 OCT 66021 RECORO
0026 00032 054021 C31 OCT 116021 JMP
• 027 C0333 124021 C32 OCT 112321 END
«028 Ü0334 O7G321 C33 OCT 114021 RETURN · ■
«029 P0035 110021 C34 OCT 122021 IF
0030 CO036 C6B021 C 35 OCT 54021 GOSUB ■ .
0031 C0337 106315 C36 OCT 124021 FLAG
«032 OR040 105021 C37 OCT 70021 SET FLAG
0033 C6P.41 126431 C40 OCT 110021 K19 SPACE
«034 PP042 073321 C41 OCT 60021 STOP
«035 00343 052P03 C42 OCT 106315 ■1
«036 PP044 0BP146 C43 OCT 105021 #
«037 C,"ß4S 126420 C44 OCT 126431 K10 $
0038 C!(5B46 126421 C45 OCT. 73021 KIl %
«039 C0347 126422 C46 OCT 52003 K12 &
0040 00350 126423 C47 OCT 146 K13 ι
0041 Ct?flSl C44035 C50 OCT 126420
«042 0t>052 84^-002 C51 OCT 126421
«043 00953 012210 C52 OCT 126422
• 044 CC654 016167 C53 oct 126423
«045 CC055 050343 C54 OCT 44035
6046 00056 023167 C55 OCT 46002
«047 P0057 036330 C56 OCT 12210
«048 O P(160 014210 C57 OCT 16167
«049 68061 032000 C60 OCT 50043
«050. 0006? 034001 C61 OCT 20167
«051 i?P063 OCT 36000
«052 0PS64 OCT 14210
C053 0P065 32000
0054 ÖB066 34H01
6055
0056
309832/0843
•057 BO067 034002 C62 OCT 34002 3
•058 00070 D34ÖP3 C63 OCT 34003
6059 «JO071 034004 C64 OCT 34004 5
«060 fiP072 034005 C65 OCT 34005 6
•e&i 60.973 B34B36 C66 OCT 34006 7
«062 CB074 034307 C67 ' OCT 34007 8
0063 00075 C34010 C70 OCT 34010 9
4064 P0076 B34311 C71 OCT 34011 R-REG
«065 flß077 C30315 C72 OCT 30315 t
«066 00100 Ö56C31 C73 OCT 56001
#067 013101 004146 C74 OCT 4146 3
«066 00102 S06146 C75 OCT 6146 > -1
«069 00103 010146 C76 OCT 10146 Kl* ?
• 070 eei£>4 126424 C77 OCT 126424 GOTO P;
«071 ßßl05 C62S21 C100 OCT 62021 A
6072 C01G6 04?eC53 C101 OCT 42000 B
• 073 B0107 e-42ce4 C102 OCT 42004 C
«074 00110 Q42310 C103 OCT 42010 K20 D
«075 coin 130440 C104 OCT 13B440 ' KHl E
«076 C'6112 13i?44l C105 OCT 133441 K22 F
6077 ÜB113 133442 C106 OCT 13R442 K23 G-
«07Β 60114 13C443 C107 OCT 130443 K24 H
«079 €0115 13&444 C110 OCT -130444 K25 I
6060 G0116 130445 ClIl OCT 130445 K26 J
0081 eeii7 135446 C112 OCT 130446 K27 K J
Ο0β2 C0120 133447 C113 OCf 13Ö447 K28 L
6083 CC 121 13S450 C114 OCT 130450 K29 M :
«084 00122 13C451 C115 OCT 133451 K30 N
«085 CB123 132460 Cl 16 OCT 132460 K31 O
8086 B0124 132461 C117 OCT 132461 K32 P --i
€087 eei25 132462 C120 OCT 132462 K33 Q '
«088 CCl 26 132463 C121 OCT 132463 K34 R
C089 CB127 132464 C122 OCT 132464 K35 S
«090 e-0130 132465 C123 OCT 132465 K36 T
«091 0ßl3l 132466 C124 OCT 132466 K37 U
€892 G3132 132467 C125 OCT 132467 K38 V
«093 C0133 132470 C126 oct 132470 K39 W
β094 eei34 132471 C127 OCT 132471 X
6095 00135 042214 C130 OCT 42014 Y
0096 00136 C42S?0 C131 OCT 42020 Z
«097 60137 O420?4 C132 OCT 42024 RUN PROGRAH ·
«098 {50140 1974-30 Cl 33 OCT . 107400 SORT
«099 C0141 024315 C134 oCT 24315 EXECUTE
«100 Ö0142 065431 C135 OCT 65401 ENT EXP ♦"
fllßl 00143 04PS33 C136 OCT 40000 GAZIMTA ♦
«102 00144 C26263 C137 OCT 26263 Recall bglne
fllC3 60145 877433 C140 OCT 77400 DELETE ENLNE
ei 04 00146 Ö75403 C141 OCT 75400 INSERT f
«105 flel47 071400 C142 OCT 71400 FORWARD
«106 60150 1014GU C143 OCT 101400 BACK
«107 80151 133400 C144 OCT 103400 RESET
eißo C0152 iSflcna C145 OCT 150000 OPTION «1
«109 C0153 126401 C146 OCT 126401 OPTION #2
flllß 00154 130401 C147 OCT 130401 U-
«111 00155 C22211 C153 OCT 22211 ILCEGAL
• 112 G0156 150000 ClSl OCT 150000
309832/.0843
- X I Δ
• 113 60157 136000 C152 OCT 13600B
ein 00160 150000 C153 OCT 15000H
0U5 £0161 134090 C154 OCT 134000
0116 H0162 126432 C155 OCT 126432
0117 eci63 126433 C156 OCT 126433
011B C0164 126434 C157 OCT 126434
«119 CP165 126435 ci6a OCT 126435
0120 eci66 126436 C161 oct 126436
0121 0P167 1264 37 C162 OCT 126437
0122 60170 13E452 C163 OCT 130452
0123 00171 13:i453 C164 OCT 130453
012* 60172 133454 C165 OCT 130454
0125 00173 1.30455 C166 OCT 130455
0126 60174 13S456 C167 OCT 130456
C127 00175 13C457 C17G OCT 130457
0128 00176 132472 C171 OCT 132472
0129 08177 132473 C172 OCT 132473
0130 C0230 132474 C173 OCT 132474
OJ 31 C0231 13P475 C174 OCT 132475
0132 C02O2 13P476 C175 OCT 132476
0133 GP,203 13?477 C176 OCT 132477
dl 34 00204 140C00 C177 OCT 140000
0135 END
• NO ERRORS» ·
NULL
SKIP NEXT CODE FOR UNCOMPRER ALPHA
THE FOLLOWING ASCII CODES ARE SPARE CODES FOR THE OPTION BLOCKS.
USER PROGRAM BOUNDARY CODE
309832/Q8U
0001 β003· 0004 0005« 0006° <5007* €008 <S009 ß0l0 0011 0012 0013 6014« β015«
©017 601G C019 6020 6021 C022 6023 ©02'» 0025 €026 6027 €028 CB29 C030 0Ö31 • 0032 0033 0034 0035 0036 C037 «038 6039 Ö040 6041 0042 6043 «044 C 04 5 0046 0047 0046 3049 β050
00000
I/O SUPERVISOR
ASHBtAfL
ORG 0Β (Start und Tastenfeld-Anschluß plus Konstante)
START-UP AND KEYBOARD LINKAGE PLUS CONSTANT
00000 60001 {10002 60003 00004 00205
164003 O43ß60 000000 002127
000000
JHP 3BtI OCT 43060 1
.INT 1 ' 20SB
BSS DEF BSS ORG go to initialization routine system constant
link word to the initialization routine
KEYcooE το Symbol table
TRANSFORM. (Umsetzung Tastenkode-Symboltafel)
00205
60210 00211 0B213
B03033 080000 056127
Ö6215 00216 50217 £5 0220 Ö0221 Ö0222
011427
0Ö54H7 Ö35517 Ö37477 031467 C215G7 025347 Q51533 ÖOO057
C0224 6Ρ225 00227 00238
C3O0O3 0553000
C-0232 Ö0233 60234 00235 00236 00237 C024& 60241 00242 60243 00 00245.
30257 Ö3260 00261 80262
(J3Ö0S0 090000 030000
080020 044Ö30 00OiIQO G30BO0 017400 OÖ0OS0
OO00S0 04Ö0O0
.BF5H DEC BSS OCT BSS DEC DEC DEC DEC DEC DEC
- DEC OCT DEC DEC
- BSS DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC BSS DEC DEC DEC DEC
27
56127
4887
2823
15183
3903
13111
9031
10791
51533
47
18432
7936
10
0 0
16384 LOO »I CFG
NOR TRC FXD FLT ENT DSP SPC PRT REC JMP ENO RET IF GS8 FLG SFG
STP ·· #
5 7 9 T
GTO A
B C
X Y Z
E ASSIGN
309832/0843
I/O SUPERVISOR
•052·
«053·
0054·
«055
•056
•057
• 058
• 059 «060 •061 •062 «063
«065
0066
«067
0068
«069
«070
«071
«072
«0/3
«074
0075
«076
«077
C07ß
«079
0080
«081
«082
«083»
«084·'
0085·
0086
«087
«088
«089
«090
«091
«092
0093
«094
«095
«096
0097
0098
«099
«100 '
«101
«102
«103
«104
6105
«106
• 107·
EOU WOROS
«1625 «1626 «0321 «1556 01557 «1546 «1542 61377 01550 «1744 «1754 «1754 01755 «1756 00315 CB316 00320 «1572 «1265 81352 «1351 00314 99525 01544 Ö1561 01575 01620 01702
.SE
.ILl
.ENOl
APl
AP2
CHA
ENDS
MAW
.STPT
ARl
AR2
.REC.
.SYM
.LOD.
INTRP
XEOL
RGTO
NRSLT
XRR
RBAO
BAD
CMPLR
Ul
SKEY
CODE
QUOTE
NCOOE
GTS
EOU EOU EOU EGU LUU EOU EOU EOU EOU EOU EOU EOU ECU ECu EGU EOU EOU EOU EQU EOU EOU EOU EO«J EGU EOu EOU EOU EQU
SHARED R/W STORAGE
01716 81716 01717 G1720 «1721 «1722 Ö1723 «1724 01725 01726 01727 «1730 01731 01732 C1733 «1734 «1735 01736 «1737 «1730 «1731
Il
12
13
14
15
16
17
18
TEMP
WDCNT
EQU EOU EOU EOU EOu EOU EOU EOU EOU EQU EOU EOU EOU EOU EOU EOU EOU EOU EOU EuU EOU
1625* SYSTEM SECURITY WORO
1626« SYSTEM OPTION BLOCK TABLE
321B SYSTEM EnD ROUTINE LINK WORD
1556B STACK POINTER 1
1557B STACK POINTER 2
1546B' PROGRAM MEMORY ADDRESS
1542B PRESENT LOCATION OF THE LAST WORD OF PROGRAM
1377B UPPER LIMIT OF R/W MEMORY
1550B LAST RESULT TO BE PLACED IN THE DISPLAY
1744B MATH REGISTER 1
1754B MATH REGISTER 2
ΑΠ2 LINK WOHO FOR MaG CARD RECORD DRIVER
AR2*1 LINK WORD FOR MAG CARD TURN OFF DRIVER AR2*2 LINK WORD FOR MAG CARD LOAD DRIVER
3153 SETUP ROUTINE FOR RUN TIME STACK
3163 EXECUTE END OF LINE LINK WORD
320B RESET GTO'S AND GSB1S
1572B HOLDS OLD ADDRESS OF .STPT
1265B EXECUTE END-OF-lINE LINK WORD
1352B
1351B ROUTINE TO SET ERROR CODE AND FLAG
3UB COMPLIER ENTRY AOORESS
525B UNCOMPLI EP COMTIH1JE ftODMESS
1S44B CONTAINS ACTUAL KEYCnDE PETNG PROCESSED
1561B CONTAINS CODE WORD FOR KEYCODE BEING PROCESSED
1575B FLAG USED TO INDICATE PRESENTS OF QUOTE FIELD
1620B SWITCH FOR OBTAINING NEXT MNEMONIC CHARACTER
1702B GSB/GTO FLAG
(Gerneinsamer R/\7-Spe icher)
1716B START OF SHARED AREA
D*0 I
DM J
D*2 K
D»3 L
0*4 M
0*5 N
0*6 P
D»7 R
D*8 S
0*9 T
D»10 Il
D»ll 12
D»12 13
D»13 14
0*14 15
D»15 16
D»16 17
0*17 18
11 USED BY THE MAG CaRO FOR ADDRESS POINTER
12 USED BY THE MAQ CARD FOR WORO COUNT
309832/0843
• I/O SUPERVISOR
fll0B* NON-SHARED R/W STORAGE EQU \
«109· EQU
«110 01660 .BUF EQU 1660B
Olli öl 700 .NS EQU 1700B
0112 01701 .WKC EQU .NS«-1
01.13 01703 .WPRT EQU .NS*3
Öll4 ti 1704 .WBUF EQU • NS*4
«115 B1705 .WMOO EOU .NSV5
0116 01706 .POS EQU • NS+6
0117 01710 .END2 EQU '.NS+8
6118 Ö1560 OSW 1560B
€119 01543 LIMl EQU 1543B
<J120* EQU
öl 21 S1563 TSW EQU 1563B
<5122 01604 NMA EQu 1604B
6123 01615 BSTK EQU 1615B
612'» 01554 PCNT EQU 1554B
0125 ßl555 PADD 15550
0126 01250 XSTP 1250B
(Nicht-gemeinsamer R/W-Speicher)
BEGINNING OF 16 WORD BUFFER AREA START OF NON SHARED AREA TEMP STORAGE OF ENERED KEYCODE WORD FOR FXD/FlT FORMAT CONVERSION ADDRESS FOR STORAGE OF NEXT CHARACTER SYSTEM STATUS WORD HI/LO CHARACTER POSITION WORD START OF END LINKAGE SWITCH FOR ROUTING KEYCODES DURNlNG SYNTAX ADDRESS OF THE START OF THE PROGRAM AREA
STATUS WORD
CONTAINS ADDRESS OF NEXT LINE TO BE PROCESSED CONTAINS NUMBER OF WORDS FOR SYSTEM EXECUTION STACK CONTAINS NUMBER OF PARAMETERS DURING RECORD CONTAINS NEXT PARAMETER ADDRESS DURING RECORD STOP ROUTINE. SETS STOP BIT IN «WMÖD
309832/0843
I/O SUPERVISOR
«126«» «129« 0130· «131 «132· «133 «134 0135 6136 «137 0138· «139 «140
ROM ADDRESS CONSTANTS
«142· 0143 «144 0145 0146 6147 «148 «149 0150 0151 0152 0153 «154· 0155 0156 0157 0150 0159 C160 «161 0162 0163 0164 0165 0166 0167· 0168 ©169 0170 0171 (ROM-Adressen, Konstanten)
00206
ORG 206B LED DISPLAY DRIVER START OF DISPLAY BUFFER
80206 003000 - DEF .DSPl G0207 001660 .DBUF DEF .8UF
60210 006000 BSS
60211 101564 .TABl DEF .IL1-42B»I ADJUSTED ADDRESS OF OPTION BLOCK ADDRESS TABLE 80212 600203 .TAB3 DEF .BF5H-2 KEYCoDE TRANSLATION TABLE
00225
00225 C03171
00226 003043
ORG 225B DEF .LOD DEF .REC
00245 G0245 C0246 06247 GO250 C0251 CB252 Ö0253 C0254 C (4255 G0256
C0276
003470
OS 1636 C02536 C02715 OB2S02 032051
GC22H7 Θ0Β430
ORG
.TABS DEF
.ΤΛΒ6 DEF
.TAB7 DEF
DEF
DEF
DEF
OEF
SKCO BSS
DEF
.TAB4 DEF
2458 L4-0« .BF5F-1 .ILl
.OSP
.BF3I
.BF5A
LISA
K2-1
C0277 CO3O0 C0301 CO302 CO303 Ö03H4 ΡΠ3β5 00306 E0307 00310
020060 KlS
C02270
P325P5
033271 .IL2
003273
00-3030
Ü32241
OiWSl
U02Ö22
Ο3ΠΡ30
ß0226ß
00324 CC324 002470 C0473 00473 032627
ORG 276B OCT 20060 DEF .FMT DEF .BXFR DEF SYNTX DEF EXEOX BSS DEF .FLT DEF .FXD DEF .BF5G BSS DEF .FMT2
ORg 324B DEF .RND-I ORG 473D DEF .SPAC MAG CARD LOAD ROUTINE MAG CARD RECORD ROUTINE
5X7 PATTERN TABLE STAfJDARD 3 LETTER KEYS LINKAGE AREA FOR ADD-ON BLOCKS THERMO STRIP PRINTER DRIVER DISPLAY MONITOR · STORE CHARACTER ROUTINE MNEMONIC GENERATOR
CLEAR AND RESET BUFFER POINTERS ADD-ON BLOCK ADDRESSES
ASCII BLANK AND ASCII 0 FORMAT CONVERSION BUFFER TRANSFER REJECT TABLE FOR OPTION BLOCKS
SET FLOAT MODE AND VALUE SET FIXED MODE AND VALUE SET MNEMONIC LENGTH
DISPLAY RESULT - USE .SPST
LINK ADDRESS FOR ROUNDING SPACE STRIP PRINTER
309832/0843
I/O SUPERVISOR
#173» ROM CONSTANTS 177762 DH14' (ROM-Kc 330B
em·
0175*
008000 -14
β176· 60330 660141 BGNLE org 7
8177 60330 G00400 DP256 DEC 060141
C178 C0331 033377 DP255 bSS 430
8179 00340 S00220 0P144 OCT 377
0180 G0341 000200 DP128 OCT 220
0131 60342 Ü00177 DPI 27 OCT 200
0182 C0343 O3S00ß XJ OCT 177
61Β3 Β0344 DP80 oct 1
fllB4 00345 000100 0P64 OCT 120
β185 G0346 000000 8SS 100
β166 C0347 G00B60 0P48 OCT 4
6187 ßß350 C-30000 OCT 60
0188 G0351 G3ß340 DP32 BSS 2
0189 06355 030037 DP31 OCT 40
«190 6G356 030000 BSS 37
0191 C0360 C0PO20 0P16 OCT 2
0192 CP361 630017 DP15 OCT 20
«193 00362 e-ßßßl6. DP14 BSS 17
0194 C 0364 eeaal5 DP 13 OCT 16
β195 BR365 C-0G314 DP12 OCT Ϊ5
β196 Ü0366 000030 oct 14
0197 00367 ß3ß?.07 DP7 OCT 4 -
6iv8 8037β 600000 OCT 7
Ö199 80371 630035 DP5 BSS 1
0200 00375 60R004 DP4 OCT 5
©201 Cß376 G0fl{303 DP3 BSS 4
0202 Θ3377 000392 DP2 OCT 3
C2B3 £6400 CO0001 DPl OCT 2
0204 Gß40l C00lö5 K6 OCT 1
0205 60402 177777 DMl OCT 105
6206 Ö04S3 177776 DM2 OCT 177777
6207 66464 177775 DM3 OCT 177776
€208 60405 177774 DM4 OCT 177775
6209 {50426 177773 D115 OCT 177774
C210 Sß407 £-00000 OCT 177773
0211 C0410 177 771 DM7 OCT 1
6212 G0411 CflflßvJfl OCT 177771
€213 66412 177 766 DM10 BSS. 1
<22Ϊ4 G^413 177 765 DMIl OCT 177766
(-215 60414 032771 BSS 177765
C216 06415 177760 DM16 OCT RNTER
0217 C0416 000030 OCT 177760
0218 60^(17 177740 DM32 DtF 2
C219 eo-!i23 177700 DM64 oct 177740
β220 ÖC421 l764f!0 K16 BSS 177700
0221 «0423 CÖ0000 . OCT 176400
0222 C 64 24 177400 DM256 OCT 1
0223 00425 OCT 17740(5
0224 00426 002136 BSS
6225 Θ0427 OCT .INT2
0226
0227» 00430 DEF
6228
BEGINNING OF LINE CHARACTER
DELAY USED FOR STRIP PRINTER POP MACHINE BUT DO NOT CLEAR MEMORY
309 8 3 2/0843
1/0 SUPERVISOR
0229 fli!431 010000 K2 OCT 10000.
60432 012000
C0433 014000
«230 G 04 34 C74302 KS SOR 7
C231 Ö0435 160000 K7 OCT 100003
0232 C 04 36 020040 K9 OCT 20040
C233 «B437 OiM'135 0P93 OCT 135
0234 P0440 001761 K12 OCT 1761
C235 00441 G01777 K13 OCT 1777
$236 00442 081433 K14 OCT 1400
«237 6Ö443 042101 Kl ASC ItDA
0238 00444 040100 K19 OCT 40100
fl239 68445 (.'34080 K20 OCT 340B0
«240 00446 034000 K21 OCT 4000
02Al CP447 CiH 744 DARl OEF ARl
0242 G0450 001754 DAR2 DEF AR2
0243 BÖ451 eßo00fl BSS 4
0244 E 0455 OCWlI 0 0P72 DEC 72
0245 Ö0456 fcaaoßo BSS 3
0246 C0461 125252 KIlO OCT 125252
0247 6 0462 Cflfi000 BSS 1
0248 60463 051505 K8 OCT 51505
0249 60464 C3ß0O0 BSS 14
(!250 C0502 177767 DH9 ÜEC -9
0251 C-0503 CO6CC0 BSS 10
£>2Γ>2 {30515 •J37777 K22 OCT 37777
0253 C 0516 c.;a30(i0 BSS 4
0254 00522 C52525 KIl OCT 52525
0255 C0523 033000 STLN BSS I
0256 60524 O3f)030 BSS 3
0257 Cu527 C0KO55 DP45 OCT 55
0258 ßS530 GOO056 DP46 OCT 56
ß259 Cß531 CT 2731 ÜEF L2F ■
6260 0ß532 030000 BSS 1
0261 G0533 G03265 DEF L7A
fi262 60534 000000 USS 3
e263 P0537 C?CI041 DP33 OCT 41
0264 0054(1 6164ΘΒ K3 OCT 16400
0265 eesu Gfl00C0 BSS 2
0266 00543 C32731 DEF L2F
0267 00544 (V03053 DP43 OCT 53
0268 00545 O0OÜO0 BSS 3
0269 60550 177634 DM100 OCT 177634
fi270 00551 C30G0O BSS 3
0271 00554 001670 .IBUF DEF .BUF*e
OCT 10000,12000t14000 OPTION BLOCK ADDRESSES
2 ASCII RLANKS
FISRT WORD OF I/O BUFFER 309832/0843
I/O SUPERVISOR
«273»
(SZT*
S275
8276
e277
6276
C279
C280
«281
6282
«283
. 0284
0285
6286
6287
B288
6289
0290
0291
0292
6293
ß294
C295
€296
0297
C29S
£3299
0301
C302
6303
<*3G4
0305
C306
0307
03605
63605 000000
B3610
S3615
ß3622
03627
S3634
63641
03646
63653
G366B
03665
63672
(53677
03704
ß3711
63716
63723
63730
ß3735
0374?
C3747
G3754
Θ37&1
δ 37 66
«3773'
0080<50
Ö0-3B26
311142
033300
O08G30
C'04ßl0
«J37ßfl0
021442
036162
Ö33060
008000
6B4424
64β&5
64012
G4017
G4024
S4031
G4036
G4043
64050
023Θ77
G77476
C540577
077476
677400
nail 77
Ö77577
077476
077476
077462
040176
073176
061540
641410
001020
C1B010
00&177
org rlink bss
SUp
L4 DEC ' DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC OEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC DEC
3605B 3 5X7 BIT PATTERNS" (Bit-Muster) (Ma^netkarten-Treitoer-Anscliluß)
HAG CARD DRIVER LINKAGE AREA
00000, 00000, «0125,00000 ,00!0PlU 00022,24596 **)0n28, ?4596 , 00052 04706,10852»32523,1077l,ß9251 13324,18792,13680,00512,01280 00000,00065,15934,16640,00000 02056,1«760,07230,1p760,02056 00008, «3336, 03592, <*flii08, 00008 0000?, 05)772 , 00776, c* (atf 16 , 00032 15872,17697,18815,20737,15872 08994,17729,13761,18761,12593 03186,05201,09297,32593,01102 07744,10567,13760,10768,01632 13872,18761,18761,18762,13884 00000,13933, 13934,00(300,00903 02324,05396,60930,16660, 0f)020 1668R, 08768, 05139, p. 212.0 t 00048 09791,18760,20043,]6712,15935 32574»]8753,1B753, 1θ753,13358 16767,32585,16713ι16713*15937 32574,1^497,13497,1A581,16455 32512,02113,02175,P2113,32512 {"/{1639, fiw264,.03?76 »00290, 32321 32639,0328Bt 150283, ?S288,00383 32574,04161,02113,01039,32574 32574,13497,1550],19498,12349 32562»!8505,19529,19017,12582 16510,16385,32513,16385,16510 28798,R3B73,«0782,«3»73,28793 25440,fiS136,02063,05136,25440 17160,17695,1870A,20767,24864 0052-8,1 6152, 0H220 ^8216,08208 041«4,08200,32298,00220»04104 00127,00008,00008,00008t00008
BLANK 1
t. »
0 1
2 3
4 5
6 ?
8 9

*
I
<=
> -
β
?
A
B C
D E
F G
H I
J K
L M
N O
P Q - -
R S
T U
V W
X Y
Z PI
SQR INV
+ ASSIGN
BOL EOL
3098 32/0843
I/O SUPERVISOR
BUFFER STORING MNEMONIC TRANSFORM ROUTINES
(Puff erspeicher-Merkse icher)
0311 02001 ORG 20018
β3ΐ 2· Umwandlgs. -Programme)
0314·
0315· .bf3* is used to store the 8 blt character found in Location κ into the next available location of the.i/o» and display buffers respectively.
β2?,01 031723 62082 0257C6 02003 074710 62004 074744 62305 035706 ezaoe 121704 C2P07 02310 02011
0316· «317· «318· «319 «320 «321 0322 0323 6324 0325 0326 0327 0328 0329 0330 C331 C332 0333 C 334 0335 6336·
c337· .r^sg determines the number of letters -1 neeoeo for the «1338· translation of a keycode to a displayed iwemonlc. calling 0339· sequence:
fl340· 0341· LDA KEYCODE
Θ74113 070346 053427
C2C12 041720 02013 C74113 G2Ö14 Q201S
070346 131704 62ÖI6 074153 02317 074112 C2C2G C45704 02021 170402 L6H
STA K
BF3I LOB .POS SZB L6H SBL STB .POS LDA .WOUF.I SBP ·*2 RAR AND 0M256 IOR K SBP »*2 RAR
STA .WDUF,1 S2B »*3 SBH »*2 ISZ .WBUF RET
SAVE CHARACTER
6ET POSITION COOE
IF ZERO EXIT ROUTINE
ELSE SHIFT CODE LEFT ONE
AND SAVE
GET BUFFFR WORD
IF CHARACTER TO BE STORED IH HI PART OF WORD
POSITION BUFFER WORD TO LOW PART MASK OUT LOW PART OF WORD INCLUDE NEW CHARACTER TO BE STORED REPOSITION IF CHARACTER
IS PEING STORED IN THE HIGH PART OF WORO STORE WORD BACK INTO THE SUFFER
IF CHARACTER HAS IN THE LOW PART
INCREMENT BUFFER ADDRESS RETURN
0342· JSH .8F5G IS MADE WITH N-I IN A. SKEY IF TRANSLATION IS NECESSARY
0343· CONTAIN MNEMONIC WORD» 1 ELSE B=0.
β 344· Return .ΤΛΒ3
0345» B WILL KEYCODE CLASS FOR OPTION AtI BLOCK.
0346» SKEY
0347· CHECK 160254 ♦ BF5G JSM SKCOtI GET KEYCODE CLASS
0348· 010403 CPA DPI ♦♦2 OPTION BLOCK?
0349 62022 066645 JMP L6A ö YESt GO TO L6A
035ß 62023 DP255
C351 02324 E IS FOR BASIC MACHINE. A GET COUNT AND MNEMONIC.
0352» DP 3
0353» KEYCOO CI21544 LOA «♦4 GET KEYCODE
0354· 07fS02 SAR DIVlOE RY 2
(1355 02P25 008212 ADA AMD ADD .TAB3 AOORESS
0356 C2026 070517 LDA load symrol information
0357 02327 025544 LDB GET KEYCODE
0358 C2O30 074056 CMB AND SKIP
β 359 G 20 31 074111 SLB IF EVEN
C360 C 2032 070342 SAR REPOSITION SYMBOL WORD
ί»361 B2033 05Π3'.2 ANO MASK OUT HIGH PART
0362 02334 Ö70137 LDD SET SYMBOL LENGTH-I
0363 C2035 Cse401 AND IN A
0364 02036 074210 SZ0 IF B=Hi NO TRANSLATION NECESSARY - RETURN
0365 {12037
0366 02040
309832/0843
226272ί
I/O SUPERVISOR
0367 (52041 074042 SBR 2 021561 KEYCOOE. m CODE GET RELATIVE ADDRESS . CALLING sequence: > KEYCODE TO BE TRANSFORMED JSH .BF5A RE MADE WITH THE NEXT SYMBOL TO,BE STORED IN Κ» Μ IS I 0» CALLING .BF5B Ö21720 .BF5A LDA WILL GIVE K THE NEXT SYMBOL UNTIL M GOES 035717 Ö21717 STB J SAVE MNEMONIC CODE L GET MNEMONIC CODE J SET A«-J
6368 02842 004246 ADB .TAR6 053365 DP15 ADD TABLE ADDRESS SFT TO N-I WHERE N IS THE TOTAL NUMBER OF SYMBOLS TO QE STORED*' Ϊ0 ZERO. 66PC22 JSH «RF5G 074117 LDA B SET A<B Π POSITION NEXT 5 BIT CODE IN LOW PART OF"
0369 02043 074537 LOB B,I Ö04211 L6A LDA .TABl SET R=MNEMONIC CODE IF M i Ö71452 SAH L6A-1 070446 RAR 10 POSITION 1ST 5 BlT CODE IN LOW PART OF A L SAVE MNEMONIC CODE '
Ö370 Β2044 170402 RET Ö74737 AND 8,1 RETURN RETURN WILL P2051 076Ö76 TCA LOAD A WITH KEYCODE 666065 JMp • BF5D CONTINUE DP31 SAVE LOW 5 BITS
0371» ADB C 2852 831722 STA M GET LEWTH AND MNEMONIC CODE DP64 FORM ASCII CODE
0372* transfer control to option block« Takes JMp the a register contains 62Ö53 075310 SZB L6A-1 IF Λ NEGATIVE«RETURN IS THE CONTINUATOR FOR A MULTIPLE CHARACTER SEQUENCE. K AND STORE IN K
β373· THE RELATIVE C2054 SET COUNT NEGITIVE RETURN
0374» 02055 translation AND SAVE IN M 021721 LDA.
0375 G2045 SET RELATIVE KEYCODE FOR 02056 IF B=Bt THEN NO TRANSLATION NECESSARY 070506 RAR M INCREMENT AND CHECK MNEMONIC COUNT
β376 G2046 OPTION BLOCK 031721 .BF5D STA .BF5D-2 NOT DONE, FORM NEXT CHARACTER
Β377 02047 TRANSFER TO MNEMONIC GENERATOR OF OPTION IS NECESSARY. POSITION MNEMONIC WORD AND 050361 AND
(1378 32050 IMPLIED RETURN GET FIRST CHARACTER. 0353=30 ADA ADD A SPACE» ELSE GET LAST
0379» t>31 7?0 STA
6380« .BF5A THE KEY CODE STORED IN K AND GENERATES A 1 02057 170432 RET
0381« TO 4 CHARACTER SEQUENCE O2Ö60
0382« 02361 045722 .BF5R ISZ
0383» 02062 S66R63 JMp
0384» ST» K
0385» .BF5B SPACE SUPPRESION»
C386» CHARACTER
«387» S2063
9388» 02364 02074 LDA
0389* 02Ö6S
0390» 62066
C391 02067
G392 C2070
Ö393 02071
6394
0395 S207?
©396 £»2073
0397*
0398» IF NO
ß399«
0400»
0401
0402
6403
0404
0405»
6406»
6407»
6408
0409
S410
0411
0412
β413
0414
Ö415«
0416
0417
6418»
0419»
0420»
0421»
«422
309832/0843
I/O SUPERVISOR
«423 ·?β75 071312 SAM .BF5D-2 IF A<0 THEN SUPPRESS SPACE AND FORM LAST CHAR DEC • 0F58 FLT
«424 B2076 020360 LOA DP32 ELSE DEC 6548 FXD
0425 «2077 C66070 JHP .BF5DO FORM SPACE DEC 6916 SPC
«426·
0427·
The following is the table containing THF three (Dreistellige Merk ζ ei DEC 19971 NOR
0428· letter nmemonics' for the 5Τανπλ»ο key codes. . für die Standard-Tar: DEC 14Θ34 TRC
0429· DEC 21059 LOD
0430 6210B 002072 KlH DEF DEC 12772 GTO
£-431 02101 014624 .BFSF DEC DEC 7Θ23 END
<J432 fl2102 0154P4 OCT 5572 CSB
0433 fl21P3 C470O3 DEC 7770 IF
0434 021P4 034762 DEC 22300 SJP
0435 02105 051103 OCT 20112 REC
C436 02106 030744 DEC 16595 JHP
0437 «2107 017217 DEC 24660 ENT
0438 P2110 G12704 DEC 5588 PRT
«439 β2111 017142 DEC 16983 E-
0440 B2112 O223ß0 DEC -2764B RET
C441 C2113 C47220 DEC 18612 R
0442 02114 044243 OCT -14336 OSP
«443 32115 024660 DEC •V720 FLG
04 A4 G2116 012724 DEC 14607 CFG
fi445 P2117 041124 3271 SFG
6446 €2120"112Ü33 19655
6447 G2121 044264
C44C C2122 l4<.ßO0
«449 C2123 Ü1H62
6450 P2124 P14fi07
6451 <i?125 C063O7
C452 «2126 D46307
309832/0843
I/O SUPERVISOR
0454*
©455*
INITIATION ROUTINE 172741 .INT- STF SET LIMl LDA 1 K3 020321 LDA" .ENDl "(Start OF SYSTEM R/W MEMORY. - SET LIMl TO POINT TO LINK LINK CODE.
«456· P24442 LDB SET .STPT TO STA K14 LIMl 031710 STa .END2 16400B - START OF USER R/W MEMORY . SET SYNTAX LINK. HAVE ADD-ON BLOCK
<3457· 070742 SAR SET OSW LDA 16 DMl DISABLE KEYBOARO SET FOR NON NUMERIC ANSWER SET EXECUTION
β458· 015377 CPB SET UNCTR STA MAW ' .STPT SET UP LINKAGE FOR 6ET ADDRESS OF 1ST WORD OF SYSTEM R/W MEMORY
0459 066136 JMP SET NCODE •♦3 NRSLT tuen SET A<-0
0460 074557 STa 026540 BiI CMPLR DONE? GET NOMAL COMPILER ENTRY ADDRESS
0461 677670 RIB 031543 *-3 OSW 1. YES. JUMP OUT OF LOOP SET IT INTO SWITCH OSW
C462 DISABLE KEYBOARD AND CLEAR ALL 0284ß5 K10 2. STORE <B>*0 . GET NORMAL MNEMONIC CONTINUE ADDRESS
fi463 JSM STACK POINTER 031550 AND SET NCODE 3. RECYCLE SET IT INTO SWITCH NCODE
0464 62127 031572 DP72 4. BSTK<-72
0465 C2130 020440 »INT2 C52Ö314 K12 BSTK 5. FLOAT 9 AND FIXED 0. SET SYSTEM EXECUTION STACK SIZE DO ITS INITIATION AND RETURN.
β466· Π2131 139441 031560 K13»I
Ö467* G2132 623343 O2?lß0 DP144 AOD DAISY CHAIN END LINK WORD. ELSE SET A«-1761B (FIRST WORD USED BY RET STACK) -
«468« 02133 G31703 Ö31620 .WPRT SAVE IN STACK POINTER (1777)
Ö469 02134 020455 C2155 SET .WPRT TO BE FLOAT 9 GET NORMAL END ENTRY ADDRESS
6470 62135 DO THE FOLLOWING 031615 Ö2156 WHEN THE MACHINE IS TURNED ON SET IT INTO LINK WORO .EMD2
C471
e472 Reset 1. ADD-ON BLOCKS. IF BLOCK IS PRESENT
6473«» 2. ADDRESS OF Ac, DO THE FOLLOWING
C474» C2136 4. -
6475» £2137 5.
ß476* 32140 6. SET CONFIGURATION
G477· 02141 G2142 LDA SET MNEMONIC
6478» S2143 STA
€479* 02144 LDA
0480»
ΛΑ Ο ^ Λ
G2145 STa
C482 C2146 STA
6403 C2147 LDA
6484 62150 STA
0485 C2151 LDA
C486 C2152 STA
6487 62153 LDA
ß488 02154 STA
ß489
«490
C491
C492
C493«
0494*
0495·
ß496
0497
0498»
0499°
O50R»
0501·
G5ß2»
0503«
0504«
«5ßS«
0506»
0507·
0508»
S509»
30 9332/0843
I/O SUPERVISOR
0530 0531 0532 «533 CS34
1. SET REJECT SYNTAX LINK. 3. REJECT MNEMONIC LINK.
THE AOD-ON BLOCK ΜλΥ NOT USfT THE FOLLOWING SHARED R/W MEMORY WORDS DUPNING ITS INITIATIONS: LtMtfc N.
FIRST SET ALL THE REJECT ADORESSES.
62157 C20247 LOA .TAB7 FORM ADDRESS OF OPTION BLOCK
02160 03fi401 ADA DP3 LINKAGE AREA
C2161 031722 STA M AND SAVE IN M
«2162 02G3O1 . LOA .IL2 A*SYNTAX REJECT LINK WORD
Ö2163 062222 JSM .IA STORE A IN THE TABLE
92164 020302 LDa .IL2*1 A*EXECUTION REJECT LINK WORD
B2165 062222 JSM .IA STORE A IN THE TABLE
02166 020303 LDA . IL2»2 A*-MNEMONIC «EJECT LINK WORO
C2167 062222 JSh .IA STORE A IN THE TABLE NOW SET ADO-ON BLOCK LINKAGE WHERE NEEDED.
«2170 «2171 12172 82173 C2174 S2175 C2176 «2177 62200 62201 82202 P2203 P2204 «2205 02206 C2207 «2210 02211 «2212 62213 02214 82215 02216 82217 Ö2220 02221
020247 031722 OP0407 031723 020256 O2C433 Γ/31721 121721 .IB 031720 025722
031717 121720 L6F Ο7Β410 141721 074557 ß457?0 004401 C45717 066204 161720
C45722 L6B 045721 C45723 066177 164317
β2222 024436 .IA «2223 131722 62224 045722
02225 077730
02226 170402
LOA .ΤΑΘ7 STORE ADDRESS OF OPTION BLOCK
STA M TARLE IN M
LOA DM3 SET
STA N N«·-3
LDA .TAB4 SET
ADA DPI L«-.TA94*1
STA L (LINK ADDRESS TO 1ST OPTION BLOCK)
LDA LtI GET BASE ADDRESS OF OPTION BLOCK
STA K ANO SAVE
LOB M SET B*OPTION BLOCK TABLE ADDRESS
LDA DM4 SET J«-4
STA J
LDA KtI READ OPTION BLOCK WORD
SZA L6B IF ZEROi SKIP TO NEXT BLOCK
IOR LtI ELSE AOD RASE ADDRESS
STa BtI AND SAVE IN THE TABLE
ISZ K INCREMENT OPTION BLOCK ADDRESS POINTER
ADB DP3 ADVANCE TABLE ADDRESS BY
ISZ J LINKAGE FINISHED?
JMP L6F NO, CONTINUE TO LOOP
JSM KtI YES» LET OPTION BLOCK DO IT«S INITIALIZATION
ISZ-M INCREMENT TABLE ADDRESS
ISZ L INCREMENT OPTION BLOCK LINK WORO
ISZ N ALL THR(TE BLOCKS DONE?
JMp .IB NO, CONTINUE TO LOOP
JHP 317BtI . YESt GO TO SYSTEM END ROUTINE
LOB DM2 SET B«--2
STa Mtl <M>*(A>
ISZ M INCREMENT M
RIB «-2 IF 000· THFN B«-B»l AND LOOP
RET ELSE RETURN
LIRA IS USED TO RESF.T EITHER THE DISPLAY OR I/O BUFFER WITH BLANKS. CALLING SEQUENCE
309832/0843
I/O SUPERVISOR 031722 U8A STA H
•566· LOA (BUFFER ADDRESS» 031704 STa ♦ WBUF
«567· JSM L18A 020436 ■ ' LDA K9
0568· 024413 LOB DM7
«569 Θ2227 131722 STa M, I
«570 €2230 P45722 ISZ M
Ö571 «2231 077733 RIB •-2
0572 «2232 620522 LDA KIl
C573 G2233 031706 STA .POS
6574 62234 170402 RET
6575 ß 2235
6576 02236
fi577 62237
0578 62240
ffORMAT ROUTINES
SAVE BUFFER ADDRESS
IN M AND .WBUF A«-2 ASCII BLANKS B«~7 STORE BLANKS IN ALL 8
BUFFER WORDS RESET
HI/LOW POINTER (52525) RETURN
226272!
(Formatprogramrae)
309832/0843
I/O SUPERVISOR
«580» 05β1· β5Β2· 0583· «584· «585· 0586· 0587» 6588· 0589» 0590 0591 0592 C593 «594 C595 C596 6597 C598 0599 0630 6601 0602 0603 6604
.flt and .fxo set the display format for the 9000a. calling sequence is:
lda parameter count ldb signle digit, jsm .flt (or' .fxd)
IF B IS NEGITIVE THEN DON'T.CHANGE SETTING OF N. N ACCORDING THE VALUE FOUND IN THE B REGISTER.
OTHERWISE SET
02241
C2242
C2243
02244
C2245
«2246
02247
62250
02251
C2252
02253
Ö2254
S2255
02256
Ö2257
C21703 070073 074552 078146 650420 074217 073546 066256 C217G3 C72C-52 074152 05(5420 074217 031783 17fl402
.FLT
.FXO
L6C
LDA .WPRT CLEAR FIXED FLAG TO L6C
SAP •♦itC
SBM L6C IF NO DIGIT SENTt GO
RAR 4 ELSE POSITION OF .WPRT
AND DM16 AND SET NEW VALUE
ior B N FOR FLOAT PART
RAR 12
JMp L6C GO TO L6C
LDA .WPRT SET FIXED TO L6C
SAH •♦1»S FLAG
SBM L6C IF NO DIGIT SENT» GO .WPRT
ANO 0H16 ELSE SET NEW VALUE OF
IOR B M FOR FIXED PART OF
STA .HPRT SAVE .HPRT
RET RETURN
309832/0843
I/O SUPERVISOR
«606·
5607· .fmt2 is used by the system for rebuilding the previous €608« result, when called» .fmt2 will take the last result of s609« the stack and if it is a nuhfric result* tt will rebuild 6610* the result according to the present format. otherwise» «611» it will transfer the ascii string found in .ibuf for display.
0613 C2260 021550 .FMT2 LDA .STPT
C614 62261 C70744 SAL 1
C615 02262 070132 Sam **2»c
€616 62263 C62267 JSH .FMT-I
P617 Ö2264 020554 LDA .IBUF
0618 62265 024207 LDB .OBUF
6619 62266 066525 JMp .BXFR
A<-ADDRESS OF LAST RESULT SHIFT A LFFT 1 IF A<0 THEN RESULT IS ALPHA - SKIP FMT ROUTINE ELSE CONVERT LAST NUMERIC RESULT TRANSFER I/O BUFFER TO DISPLAY BUFFER IMPLIED RETURN
fl621»
0623«
ß624* THE FORMATTER CONVERTS THE DATA WORD SPECIFIED BY THE ADDRESS §625« FOUND IN THE A REGISTER ACCOROING TO THE FORMAT STORED IN THE e626» 982BA. THE OUTPUT IS PLACED IN THE I/O BUFFER ON RETURN.
G627*
C629» 6630» G631» C632
0633
0634
C636* 0637« 0638* 0639
fi640
G641
€642« €643* 0644« 6645° 0646· 0647» 0648» 6649» 6650» Ö651· Ö652
RESET 1/0 REGISTER.
C2267 O700C2 - SAr
62270 031734 .FMT STA
02271 020554 LDA .IBUF
Θ2272 062227 JSH L18A
CHECK FOR FIXED OF FLOAT FORMAT
C2273 021703 C2274 Ö70113 02275 066353
LDA .WPRT SAP FLOAT JMP FIXED
REPOSTION ADDRESS FOR .FMT2 ROUTINE SAVE ADDRESS OF DATA WORD RESET I/O BUFFER AND IT'S POINTERS
A«·. WPRT
IF A(15)«l THEN FLOAT CONVERSION ROUTINE ELSE FIXED CONVERSION ROUTINE
FLOATING POINT ROUTINE. USE FOLLOWING FORMAT. SX.XXXXXXXXXESXX
IF FLOAT N IS LESS THEN 9» THEN S IS MOVED TO THE RIGHT (9-N) PLACES AND THE HOLE IS FILLED WITH RLANKS.
FIRST ROUND THE <N*2> OIGIT OF THE MANTISSA. 02276 B21703 FLOAT LDA .WPRT A«-.WPRT
3 0 9832/084 3
I/O SUPERVISOR
«653 0Ρ277 C70146 021754 RAR 4 GET VALUE OF FLOAT N AR2 GET AND POSITION EXPONENT
«654 «23P0 C50365 070340 AKD DP15 AND SAVE 8
«655 023CU 031732 070113 STA 13 IN 13 •♦2 IF EXPONENT >*99
«656 02302 030502 O7R076 ADA DH9 STORE 9-(FLOAT N)
0657 02303 062440 G24355 L246 JSM L24A BLANKS IN I/O BUFFER DP48 THEN TRANSFER ORGINAL
«658 023(14 021734 035720 LDA 15 ROUND DATA WORD IS K NUMBER INTO AR2
«659 fl23ß5 025732 031722 LDB 13 IN THE N«2 DIGIT H
0660 023C6 034402 038415 ADB DP2 . DM10 SET E«-0 TO
0661 02307 C62471 070152 jsh .RNO •♦3 STORE SIGN OF MANTISSA IN TO THE BUFFER
0662· 045720 K STORE 1ST DIGlT
0663· CHECK THE VALUE OF 066342 THE EXPONENT AND IF IT IS OUTSIDE OF THE • -4 INTp THE BUFFER
«664· Range OF *99· THEN 062002 USE THE OHIGlNAL NUH-3ER WITHOUT ROUNDING. .BF3I STORE DECIMAL POINT
«665· 021722 M INTO THE BUFFER
0666 02310 Ö21754 033355 LDA ARZ DP48 IF I3«0 THEN
«667 02311 073340 066001 AAR 8 .BF3I-1 STORE N OIGITS
«668 β2312 O3Q550 ADA DM100 INTO THE BUFFER
«669 92313 070212 SAh L24H STORE ASCII E
«670 02314 021734 LDA 15 INTO THE BUFFER
«671 C2315 024450 LDB DAR2 SET E*l TO
6672 02316 170034 XFR STORE SIGN OF THE. EXPONENT INTO THE BUFFER
«673 02317 079075 L24H SEC •♦1»C
«674 02320 062447 JSH L24B
«675 02321 C2E403 LDA DPI
€676 C2322 C62457 JSh L24C GET EXPONENT AND
6677 02323 020530 LDA DP46 POSITION
0678 62324 062001 jsh •BF3I-1 IF EXPONENTS
«679 S2325 021732 LOA 13 THEN A«--A
0680 02326 070110 sza •♦2 STORE ASCII "0"
0681 02327 C62457 JSH L24C IN K
«682 02333 C204 84 LDA K6 SAVE LAST RESULT
6683 β 2331 C620U1 JSm .BF3I-1 DECREMENT A BY 10
«684 62332 072054 SES «♦l.S EXIT LOOP IF A<0
β685 02333 062447 JSh L24B ELSE INCPEHENT κ
0686« ANO COMTINUE TO LOOP
6687° CONVERT AND STORE HANTISSA. STORE 1ST DIGIT OF EXPONENT
C6ß8· FORM 2ND ASCII DIGIT OF
0689 02334 LOA THE EXPONENT AND STORE IT IN THE BUFFER
G690 «2335 AAR IMPLIED RETURN
«691 02336 SAP
0692 C2337 TCA
«693 02340 LOB
0694 02341 SIB-
0695 02342 STA
0696 92343 ADA
0697 C2344 SAH
C698 02345 ISZ
Φ699 C 234 6 JMP
«700 «2347 JSH
«701 02350 LDA
0702 02351 ADA
0703 82352 JMP
309832/0843
■*# ■ ■ ■ 226272!
I/O SUPERVISOR 0705· β706· in fixed mode» the format contains a sign (blank for plus), 0707» a decimal point» and up to tfn digits. lfading zeroes up «708« to the rfcimal point are suppressed· the f.ntire format is «709· rignt justified in the right most 12 columns» the decimal «710· point is in column n»i, where ν is the decimal setting 0711· over the range 0 to
C713» FIRST. CHECK TO SEE THaT DATA WORD HILL FIT INTO FIXED FORMAT.
671'»· IF NOT» USE FLOAT FORMAT.
C715» .
«716 C2353 G50365 FIXED AND DP15 GET FIXED N
6717 C2354 031731 STA 12 AND SAVE IN
C718 62355 121734 LDA I5tl GET AND POSITION
(3719 02356 076340 AAR 8 EXPONENT
C720 02357 Ö30403 ADA DPI ADD 1 TO DETERMINE NUMBER OF DIGITS TO THE
C721 02360 C31733 STA IA LEFT OF THE DECIMAL POINT AND SAVE IN 14
3722 62361 C31731 AOA 12 ADD NUMBER OF DIGITS TO RIGHT OF THE DECIMAL POINT
(5723 62362 031732 STA 13 TO BE DISPLAYED AND SAVE TOTAL DIGITS FOR DISPLAY
{$724 Ö2363 03(3416 ADA OMIl IF THE AROVE NUMBER IS >
e725 G2364 !570112 SAM **2
6726 02365 Ü66276 JMP FLOAT THEN THE FLOAT CONVERSION MUST BE USED
Ö727· - - ,
0728* ROUND THE (N+l) DIGIT AFTER THE DECIMAL POINT. IF MANTISSA 0729* OVERFLOW OCCURES, INCREMENT 13 & 14«
C731 82366 G21734 LDA IS ROUND DATA POINT
(5732 02367 025732 LDB 13 IN DIGIT 13*1
Q733 9237P 0344(33 ADB DPI . .(1ST DIGIT NOT To BE DISPLAYED)
C734 Q2371 G62471 JSm .RND
Ö735 Ö2372 074253 SBP L6D IF NO CARRY OCCURED ON ROUNDING, GO TO L6D
€736 G2373 G45732 ISZ 13 ELSE INCREMENT NUMBER OF DIGITS TO
Ö737 »62374 070855 SEC »«-1 THE LEFT OF THE DECIMAL POINT
0738 «52375 C-45733 ISZ 14 INCREMENT TOTAL NUMBER OF DIGITS TO
S739 82376 070355 SEC ««-1 BE DISPLAYED
6741· SET UP LEFT MOST BLANK FIELD AND STORE SIGN OF MANTISSA.
0743 62377 025733 L6D LDQ 14 B«- NUMBER OF DIGITS TO THE LEFT OF THE DECIMAL POINT
«744 02400 021732 LDA 13 A«-TOTAL NUMBER OF DIGITS TO BE DISPLAYED
5745 ß24ßl 074113 SBP »+2 IF R<0 THEN SET A«-I2
6746 Ö2402 021731 LDA- 12 (NUMBER OF DIGITS TO RIGHT OF DECIMAL POINT)
fl747 02403 C25731 * LDB 12 IF 12=0 (INTEGER DISPLAY)
0740 (52404, 076110 R2B * + 2 THEN DECREMENT VALUE
{$749 G2405 083405 ADA DMl OF THE NUMBER OF CHARACTERS TO BE DISPLAYED
0750 «2406 030330 ADA DM14 DETERMINE THE NUMBER OF LEADING BLANKS
Θ751 «2407 062440 JSM L24A AND THEN STORE THEM IN THE BUFFER
6752 02410 070075 SEC «*1»C SET E«-0 TO
C753 Ö2411 G62447 JSm L24B STORE SIGN OF THE MANTISSA IN THE BUFFER
0755« STORE DIGITS TO RIGHT OF DECIMAL POINT IF ANY. THEN 0756· ADO DECIMAL POINT.
0758 02412 021733 LDA 14 ' IF I4>0
0759 B2413 O7O210 S2A **4 8760 Ö2414 Ö70152 SAM **3
309832/0843
I/O SUPERVISOR
0761 «2415 862*57 021733 JSM LDA L24C THEN STORE IA DIGITS IN TME BUFFER
0762 02416 C6f>423 070413 JMP SAp L6G AND SKIP TUE INTEGER TEST
fl763 t24l7 C21731 C3I721 LDA sta 12 IF 12 H fl (NON-INTEGER MODE)
«764 «12420 072150 021706 RZA LDA L6G THEN GO TO L6G
«765 D2421 02P276 U73650 , LDA SZA K15 ELSE STORE AN INTEGER 0
0766 B2422 1317B4 020355 STa LDA .WBUFtI IN THE BUFFER
0767 82423 C22530 'J62001 L6G LOA JSM DP46 STORE A DECIMAL POINT
C768 «2424 C620O1 C45721 JSM ISZ .BF3I-1 IN THE BUFFER
«769· C66430 JMP
0770» STORE ZEROES 021731 AS NEEDED L6E LDA AND THEN DIGITS TO RIGHT OF
«771· DECIMAL POINT 066457 JMP
0772·
0773 02425 14 IF 14 NOT < 0
0774 02426 L6E THEN GO TO L6E
0775 62427 L SAVE THE VALUE OF THE NUMBER OF ZEROES TO BE STORED
S776 Ö2433 • POS BUFFER FULL?
C777 02431 L24E YESf EXIT ROUTINE
S778 02432 DP48 NO, STORE ANOTHER
C779 02433 .BF3I-1 • ASCII ZEHO IN THE BUFFER
07ßß 02434 L MORE ZEROS NEEDED?
07Sl Ο 2435 •-5 YESt CONTINUE TO LOOP
0782 «2436 12 NO, STORE 12 DIGITS
0783 62437 L24C IMPLIED RETURN
STORE BLANKS. A REGISTER HAS THE MINUS COUNT.
070313 L24A 031723
02440 C2441
02442 O2P360
02443 C6?C6l «2444 «2445 02446
C45723 066442 170402 L24E
SAP L24E
STA N
LOA DP32
JSM
ISZ
JHP
RET
.BF3I-1
•-3
if a not < 0 then ret save count store ascii
blank tn the ruffer kore blanks needed?
yes» continue to loop
no. return
STORE SIGN OF MANTISSA OR EXPONENT AS FOLLOWS.
E=O E=I
MANTICSA EXPONENT
62447 C21754 L24B 02453 070114 62451 070036 C2452 070153 02453 P20527 82454 U66031
B2455 «2456
02fl36fl C660O1
LDA AR2 GET EXPONENT WORD WITH THE SIGN INFORMATION
SES **2 IF En0
HAR 1 THEN SET AC15)«-SIGN OF MANTISSA
SAP ·*3 IF A(IS)=I
LDA DP45 THEN STORE ASCII MINUS SIGN IN THE BUFFER JMP .BF3I-1 implied return LDA DP32 STORE BLANK IN THE BUFFER JKP .BF3I-1 IMPLIED RETURN STORE DIGITS. A REGISTER SET TO NUMBER OF DIGITS TO BE STORED·
«812· BEFORE EACH DIGIT IS STORED, A CHECK IS MADE TO SEE
309832/0843
I/O SUPERVISOR
0813·
0814«
7HAT I/O BUFFER IS NOT FULL.
0816
6817
β819
€821
6823
,6824«
€825*
«826*
6827*
Q2457 031721 L24C 62460 021706 Q2461 671250 S2462 171490 (52463 030355 02464 062001 62465 055721
02466 066460
02467 1764S2
STA L
LDA .POS
SZA L2AE
MLS
ADA DP48
JSH .BF3I-1
DSZ L
JMP L24O1
RET SAVE THE COUNT IF THE BUFFER IS FULL
THEN EXIT THIS ROUTINE GET NEXT DIGIT FORM ASCII CHARACTER BY ADDING THE OFFSET STORE THE CHARACTER IN THE BUFFER MORE DIGITS?
YES CONTINUE TO LOOP NO» RETURN
0829«
0838«
0831*
6832»
0833*
€1834«
€835*
0836
6837
6838
.RNO IS USED TO ROUND DIGIT N OF A DATA WORD STORED 11$ STANDARD INTERNAL MÄCHINE FORM. THE GUARD DIGITS ARE ALSO ROUNDED. THE CALLING SEQUENCE IS:
LDA ADDRESS OF DATA WORD TO BE ROUNDED. LDB DIGIT POSITION TO BE ROUNDED
JSH .RND
IF MANTISSA OVERFLOW OCCURES, BOTH THE MANTISSA AND EXPONENT WILL BE ADJUSTED AND THE A REGISTER SET TO -1.
«840
β 841
C842
Ö843
«844
0845
CB46
G847*
6848*
G2470 82471
Ö2472 B2473 62474 C2475 62476 62477 625 PB E25D1 62502
024367 B3573Ö 075652 S75610 024450 17(3034 02ß447 17OÖ30 02(3377 025730 174430
► RND
LDB DP13 STB Il SBM *-3 SZB »-4 LDB DAR2 XFR
LDA DARl CLR
LDA DPS LDB Il MRX
also round digit
C850 .
C851
CB52
G853
C854
C8556
G2503 G20347
02504 041747
02505 031747 CP.506 i)7fi075 C2507 170560
LDA DP80 IOR AR1*3 STA AR1+3 SEC **1»C FXA.
test for mantissa overflow.
6857»
{!858
C859
0Ö61
€862
C863
(J864
C865
0866
0867
©868
02510 02511 f-2512 82513 02514 02515 62516 02517 02523 P2521 62522
S21757 253427 031757 17C)Cfl2 073350 07CI37 174470 025754 004341 035754 024405
LDA AR2+3
AND DM256
STA AR2*3
MOV
SZA L24F
LDB A
MRY
LDB AR2
ADB DP256
STB AR2
LDfl DHl USED INEQUALITIES SAVE DIGIT POSITION IF B NOT > 0 THEN RETURN TRANSFER DATA WORD TO BE
ROUNDED INTO AR2 CLEAR ARl
SET A 5 INTO DIGIT POSITION OF ARl THAT IS TO BE ROUNDED
INCLUSIWE OR A 5 INTO DIGIT 11 (LEADING GUARD DIGIT) OF ARl
SET E«-0
DO Λ FLOATING ADD
ZERO DIl AND .012
IF A=0 THE RETURN MOVE THE CARRY DIGIT INTO MANTISSA FIELD
INCREMENT EXPONENT VALUE
309832/0843
I/O SUPERVISOR
0869 62523 P2C.50 L24F 031721 .BXFR LDA DAR2 ?DS IN OF BUFFER <A> TO BUFFER <B>.
«870 62524 17C4E2 035720 RET L LENGTH.
6871» 024413 K SAVE L*A
0872» .RXFR TRAMSFERS THE 121721 CONTENTS DM7 AND Κ+β
«873· ALL TRANSFERS ARE. 8 131720 W ΟΓ L,I SET B«-7
0875 452525 G45721 STA KtI TRANSFER ALL 8 WORDS
e876 02526 045720 STB L FROM BUFFER L TO BUFFER K
«877 CP527 077630 LDB K
«878 02530 1704C2 LDA
«879 G2531 STA IF NOT DONE THEN CONTlHUE TO LOOP
«880 «2532 ISZ RETURN
6881 f?2533 ISZ
0882 B2534 RlQ
0883 C2535 RET
309832/0843
I/O SUPERVISOR
226272!
PRINTEHf ROUTINES (Druckerprogramme)
«885»
0887· Θ888·
€889* The bit pattern for the thermo printer is as follows:
0890»
fl891» DDDDDCCCCCXXXSGG 2 ND WO RD . A = 1ST CHARACTER ADVANCE CODE 69 03*** β ♦**♦«*« »**«»*»»«■«·*« **»»*«»β»«*» SET ROW COUNT C3204I3 G62662 » SHIFT COUNTt DM7 021726 C62672 L3 LDA FORM BIT PATTERN S AND MASK. · P REGISTER.
0892» B n 2ND CHARACTER USED 0904* 031727 066554 T 000423 025725 AOA DM32 GET PATTERN INFORMATION FOR NEXT CHARACTER
0893« . BBBBBAAAAAXXXXXX 1ST WORD C = 3RD CHARACTER 0905« C2536 02S434 ,PRTl LDA K5 631726 070742 sta S SET ROW COUNT TO -7 L3B*1 B+BIT MASK·
0894» D = 4TH CHARACTER Ö9S6» 62537 .031726 STA S 025725 LDa R AND SAVE IT IN T R A«-0
6895» where G s 1 OF 4 GROUP -6907 C2540 020444 LDA K19 074092 SBR 1 SET "SGR" 7» INSTRUCTION 16
€896* S = ROW C908 02541 0317-25 STA R £135725 stb R ' AND SAVE IT IN S
S897» X .= NOT 0939 S 2542 LDA 020423 L3A LDA DH16 SET BIT MASK
0898» #910 S 2543 INITIALIZE Il STA 13. 031720 STA K AND SAVE Π IN R
6899» 5911 022207 LDA .DBUF
«900» C'912 C2S44 t I2t AND L3F 031721 sta L
«901* €913» Ö2545 L3A
(1902» 69)4» JSM DO SUBROUTINE AND CLEAR INITIALIZE 11» 12» ANO 13
0915» JHP THEN CONTINUE AT L3A
0916 COUNT» BUFFER 02560 L3C JSm
€917 ADVANCE PRINTER ONE ROW AnO MODIFY SHIFT COUNT 02561 LDB
6918»' SET CHARACTER C2562 SAR ADDRESS» MASK, " ·
0919* 02546
Ö92G» 02547
(«921» C2550 DECREMENT SHIFT
Θ922» C25S1 INSTRUCTION BY 1
6923 G2552 AND SAVE IT "
6924 C 2553 SHIFT BIT MASK RIGHT
0925 C'2554 BY ONE
€926 02555 AND SAVE IT
0927 €2556 SET CHARACTER C0UNT+-16
«928 62557 AND SAVE IT IN K
C929 GET ADDRESS OF CHARACTER BUFFER
0930 AND SAVE IT IN L
C931
C932
C933»
0934*
fl935»
6936
0937
0938
C939»
C940»
309832/0843
I/O SUPERVISOR
«941· C942 »943 0944 «945 «946 «947 C948
«976 <J977» 0978· 0979· C980· €981 C982 ß983 C984 (5985 0986 ß987 C988· 0939· 0990· 0991 «992 «993· C994· 6995· «996·
«2563 «31724 Ll «2564 121722 P2565 074257 B25f)6 041724 «■2567 0707fl6 e2570 045722 62571 P45723 B2572 066563
LOa Μ»! AND B IOR P RAR ISZ M ISZ N JHp Ll SAVE LAST RESULT GET 7 BIT PATTERN MASK PROPER BIT INCLUDE LAST PATTERN RESULT POSITION PESULT LEFT 1 INCRFMEMT ADDRESS TO GET NEXT PATTERN HAVE ALL 5 BITS BEEN GATHERED? NO, CONTINUE TO LOOP
«950· position and mask 5 bits.
«952· β953 C954 β955 <3956 «957 C958 0959 C960* 6961· «!962» «963· 0964 «965 6966 0967 «ι968 6969 0970· C971» 0972* 0973· {1974
02573 C2574 02575 «2576 62577 02600 C2601
070137 073114 074346 021726 070016 074117 050361
LDB A SES «*2 RBR LDA S E*A LDA AND DP31
PATTERN IN HIGH PART OF A?
YES, POSlTIOM IT LOW SET A«-VARIABLE SHIFT INSTRUCTION EXECUTE THE INSTRUCTION FOUND IN A A*B SA.VE ONLY LAST 5 BITS
INCLUDE LAST 5 BITS AND CHECK FOR END OF FIRST PROCESSED. IF DONE STORE IN 14 ΛΝΟ RESET 13.
041732 IOR 13 INCLUDE LAST 5 RIT PATTERN
O7C206 RAR 5 POSITION NEW RESULT
Ö45731 ISZ 12 FIRST UORD FILLED?
066610 JhP *»3 NO. SKJP 2 INSTRUCTIONS
(331733 STa 14 YES» SAVE I'k-a
070742 SAr 16 ANÜ SET Α«·β
02602 02603 02604 C2605 02606 02607 (13=0 OTHERWISE)
CONTINUE PROCESSING. STORE A IN 13 AND TEST TO SEE IF GROUP IS READY FOR OUTPUT.
C2610 031732 P2611 045730 C2612 066622
STa ISZ Il JMP LlA
SECOND WORO FILLED? NO, CONTINUE AT LlA
INCLUDE GROUP COUNT AND OUTPUT PATTERN. INTITI ALI ZE II» 12, AND 13.
THEN
Θ2613 02614 Ρ2Λ15 02616 02617 62623 62621
C21720 C.I (1364 P/0042 0^1732 C25733 C62642 C62662
02622 045720 LlA
02623 066560
LDA K K
ADA DP16 L3C
SAR 2
IOR 13
LDB 14
JSH L3E
JSH L3F
COUNT.
ISZ
JMP
COMPUTE NUMBER OF CHARACTERS
PROCFSSFD SO FAR DIVIDE RY 4 TO GET GROUP CODE INCLUDE SECOND WORD 5 !3IT PATTERNS LOAD fl«-FlRST WORD 5 RIT PATTERNS PRINTER OUTPUT SUBROUTINE RESET II, 12» AND 13
ALL 16 CHARACTERS PROCESSED?
NO, LOOP TO PROCESS NEU CHARACTER AT L3C
check row count. if done advance printer 3 rows, turn on The interrupt systemi and return.
I/O SUPERVISOR
626P4 02625
1004 10Ö5 1006 1C07 1008 1009· 1010* 1011* 1012» 1013 1014 1015* 1016* 1017« 1018 1019 1020 1021 1022 i623 1024 1025 1626 1027 1028 -Ϊ029» 1030» 1031« 1032« 1033 1034 1035 1036 1037
02627 C2630 62631 P?632 S2633 C2634 C2635 S2636 B2637
Θ45727 066546 ß2ß40l S70076 .SPAC 031727 P62640 -
366631 172734 066634 173741 170402
isz t all 7 rows finished?
jmp l3 no, loop to process new line at l3
lda dp3 set a«-3
tca set a«—a
sta t and save in τ
jsm l3d advance printer 1 row
ISZ T DONE?
JMP »τ2 . NO, CONTINUE TO LOOP
SFC 4 ' WAIT FOR PRINT OPERATION TO FINISH
JMP »-1
CLF 1 TURN ON THE INTERRUPT SYSTEM
RET RETURN
L3D SETS UP THE A ANO B REGISTERS TO ADVANCE THE PRINTER ONE ROVi.
62640 Ö20401 L3D 82641 £74742
LDA DP3 A«-6R0UP A CODE AND NON-PRINTING PATTERN SBR 16 B+NON-PRINTING PATTERN
L3E CHECKS THE PRINTER FLAG AND OUTPUTS THE A AND B REGISTERS.
Ö2642 02643 62644 €2645 62646 02647 C 2650 Ö2651 C2652 G 2653 02654
031723 L3E «20425 070470 172794 666644 S21723 173741 172741 176141 172144 176402
STA N LDA K16 SlA L3G SFC JMP *-.2 LDn N CLF STF OTß ΟΤΛ RET
SAVE N<-A
SET A<-TIME COUNT IF A=0 THEN GO TO L3G ELSE Λ<-Λ«·1 IF PRINTER FLAG SET ' THEN CONTINUF TO LOOP ELSE RESTORE Λ<·Ν
TURN ON THE INTERRUPT SYSTEM TURN OFF THE INTERRUPT SYSTEM OUTPUT 1ST WORD
OUTPUT 2ND WORD. IMPLIED STC RETURN
PRINTER OUT OF PAPER. OR EXEC KEYCODE.
SET ERROR MESSAGE AND WAIT FOR STOP
62655 024364 L3G C2656 C55777 C2657 C-63251 C2660 170402 92661 966536
LOB DP16 DSZ 1777B JSM L7 RET ■ JMP .PRTl
1639» L3F SETS UP II» 12» AND 13,
1G41 02662 Ö20410 L3F LDA DM4
1042 C2663 031730 STA Il
1043 (52664 O2G406 LDA DM2
1044 C2665 031731 STA
1045 G2666 070742 SAR
1046 C2667 D31732 STA
1047 02670 170432 RET
SET A«-ERROR
DECREMENT JSM STACK DISPLAY ERROR MESSAGE AND WAlT FOR KEYCODE STOP KEY. EXIT PRINT ROUTIUE EXECUTE KEY· RE-ENTER PRINT ROUTINE
SET Il «--4
13*0 RETURN
309832/08^3
I/O SUPERVISOR
1050· GET BIT PATTERN / 173750 L3B VDORESi 8
1051· INCREMENT BUFFER 025720 5» SET K
1052· 121721 ADDRESS AS L, I
1053 «2671 074151 •♦3
1054 P2672 67034 6 CLF 8
Iß55 02673 04*5721 . LDB L
1056 32674 070346 LDA 8
1057 02675 350345 SLB 0P127
1058 82676 O70C75 RAR •♦ltC
1059 £2677 (170131 ISZ •♦2,C
106 EJ S2703 072054 RAR ♦♦ltS
1061 B2701 070137 AND A
1062 82702 074092 SEC 1
1063 02703 970706 SLA 15
1064 02704 072037 SES Λ
1065 ß27ß5 004245 LOB .TAB5
1066 62706 035722 SBR M
1067 62707 524411 RAR DK5
1068 «32710 035723 ADB N
1069 62711 170402 ADB
1079 02712 STB
1071 P2713 LOB
1072 ß27l4 STB
RET
CLEAR DISPLAY FLAG B*NEGATIVE CHARACTER COUNT GET CHARACTER RUfFER HORO SPECIFIED BY L CHARACTER IN HIGH PART OF WORD? NO, POSITION IT HIGH
AND INCREMENT BUFFER ADDRESS POINTER POSITION CHARACTER FROM HIGH TO LOW PART OF A SAVE ONLY THE LAST 7 BITS OF A SET E+0 IF A{0)=1 (ALSO SET A(0>*0 IN ANY CASE)
THEN SET E«-l COMPUTE A*5*A/2
TO FORM RELATIVE ADDRESS OF THE PATTERN ARRAY
AOD PATTERN ARRAY ADDRESS
AND SAVE M«-A SET N«~5
RETURN
309832/0843
I/O SUPERVISOR
DISPLAY ROUTINES
1074·
1076»
1077· the following is the complete driver for the display 1078* will perform the following functions.
1079»
1080· 1. CHECK For KEYCODES. ViHEN A KEYCoDE IS ENTERED. .WHOD IS RESET AND CONTROL WILL RETURN TO THE CALLING, PROGRAM WITH THE ENTERED KEYCODE IN THE A REGISTER.
(Sichtgerät-Programme)
IT
DRIVE THE DISPLAY AS FOLLOWS
A. THE CONTENTS OF THE DISPLAY BUFFER IF NO ERROR HAS OCCURED.
B.
1081· 1082· 1083* 1084· 1085· ; 1086» 1087· 1088· 1089· 1090· 1091* Ϊ092* 1093»
1095* 1096« ON ENTRY CHECK FOR ERROR.
1097·
1098 02715 062749 .DSP JSH L2B CHECK FOR ERROR
1099 C2716 C66723 JMp L2A
DO A DISPLAY CYCLE AFTER FIRST DETERMING WHETHER TO USE THE.DISPLAY OR I/O REGISTER.
ALTERNATE BETWEET THE ERROR MESSAGE AND THE CONTENTS OF THE DISPLAY REGISTER IF AN ERROR HAS OCCUREO.
1101· 1102* 1103· 1104 1105 1106 1107 1108» 1109» 1110» 1111· 1112·
1126* 1127· 1128·
«2717 021704 L2E 0272? 031721
02721 C63000
02722 666726
LDA .WBUF STA L JSH .DSPl JMP L2A+3
SAVE ADDRESS OF THE BUFFER TO BE DISPLAYED DISPLAY DRIVER SUBROUTINE
CHECK FOR KEYCODE ENTERED. IF ENTERED» RESET .WMOD* .IBUF» AND EXIT WITH KEYCODE IN A REGISTER.
62723 02724 62725 C2726 ß2727 C2733 62731 02732 C2733 -32734 62735 C2736 02737
021704 L2A
D52777
031704
021705
071433
031705
020554 L2F
062227
023340
1317C4
ß2l7ei
G5CJ342
170462 RET
LDA .WBUF AND DH8 STA-.WBUF LDA .WHOD SAP L2E»C STA .WHOD LDA .IBUF JSM LlOA LDA BGNLE STa .WBUF,I LDA .WKC AND DP255 RET
NO ERROR SET UP TO DISPLAY .DBUF
IF .WMODi15)=0 THEN CONTINUE TO DISPLAY AT L2E
FLAG FROM .WMOD RESET .IBUF
STORE A BEGINNING OF LIME
CHARACTER INTO BUFFER SPECIFIED BY .WBUF A4-KEYC00E
SAVE ONLY BITS 0-7
SET-UP ERROR MESSAGE INTO I/O REGISTER. 02740 Θ21705 L2B LDa .WHOD
3 0 9 8 3 27O 8 A 3
- JL3O. -*
.I/O SUPERVISOR 226272:
1130 82741 070102 SAR 062740 RNTFR JSm 3
1131 02742 850342 AND 5545704 JSZ DP255
1132 02743 071610 S2A 022778 LOA RET
1133 02744 331722 SlA 1317C4 STA H
113* 02745 022757 LÜA CI457C4 ISZ L2D
1135 C2746 G24554 ■ LOB 164523 JMP .IBUF
1136 02747 062525 JSm .OXFR
1137 C2753 S20554 LDA 177770 DM8 DEC .IHUF
113G 02751 U334G2 ADA DP2
1139 62752 031704 STA .WBUF
1140 02753 029461 LDA KIlO
1141 62754 O317G6 STA .POS
1142 62755 021722 LOA M
1143 02756 066340 JMP L24G
1144»
1145· ERROR MESSAGE
1146»
1147 02757 032760 L2D DEF «•♦1
1148 C2760 047117 ASC 8,NOTE
1149 02770 044516 IN ASc Ii IN
1150*
1151» RUN TIME ERROR MESSAGE
1152·
1153 02771 L28
1154 C2772 .WBUF
HSS C2773 IN
1156 C2774 .WBUF,I
1157 02775 .WBUF
1158 02776 SfLNtI
1159·
1160 C2777 -8
GET ERROR NUMBER IF ZERO THEN RETURN — NO ERROR
A*AODRESS ASCII MESSAGE TO BE PLACED IN THE DISPLAY B«-ADDRESS OF THE I/O BUFFER DO AN η WORD TRANSFER FORM MIOVESS OF THE OTH
WORD OF THE I/O BUFFER SAVE .WOUF*A
.POS*HI/LO POSITION WORO (52525B) A«-ERROR CODE DO ERROR NUMBER CONVERSION AND STORAGE
ADDRESS OF ERROR MESSAGE
309832/0843
133
I/O SUPERVISOR
1165· 1166*
1162*
the f0ll0win6 is the display sio driver for the system, the bit pattern for the led is:
xxeeeffffbbbbbbb
where b ts the column bit pattern
e is the 1 of 8 code address
f is the bcd address
x are the unused bits.
1168* 1169* 1170«· 1171· 1172* 1173« 1174*
1176· 1177« 1178° 1179· 1180
1182» 1183* 1184» 1185 1186 1187 1188 Ϊ189* 1190* 1191* 1192 1193
1195 1196 1197 1193 1199 .
1200
1202* 1203* 1204» 1205* 1206 1237 1238 1209 1210
1212 1213 1214 1215» 1216· 1217·
ON ENTRY, L MUST HAVE ALREADY BEEN SET TO THE ADDRESS OF THE BUFFER TO BE OUTPUT.
G3000 023420 03001 Ö31720
.DSPl LDA DM16 STA K
SET BCD COUNTER & ADDRESS HORD.
03002 020415 Ö3003 031725 63034 070742 C3S05 531726
LDA DM10 STA R SAR STA S
START PROCESSING NEW CHARACTER.
{13006 03007 03310 S3011 03012 63013 035114 63015 G3C16 03017
C62671 L4D
121722
(370114
078346
050345
C41726
173750
173741
172741
172150
JSM L38 LDA H.I SES **2 RAR AND DP127
I OR CLF CLF STf
OTa SET K*~16
, !NEGATIVE CHARACTER COUNT)
R*—10
. (NEGATIVE BCD COUNT)
(LED ADDRESS INFORMATION)
GET PATTERN INFORMATION FOR NEXT CHARACTER GET 7 BIT PATTERN PATTERN IN HIGH PART OF WORD?
YESt POSITION IT TO LOW PART OF A SAVE ONLY LAST 7 BITS INCLUDE LED ADDRESS INFORMATION CLEAR DISPLAY FLAG TURN OF THE INTERRUPT SYSTEM TURN OFF THE INTERRUPT SYSTEM OUTPUT DISPLAY INFORMATION. IMPLIED STC
CHANGE AODRESS WORD. -INCREMENT BCD COUNT AND IF 0» DO SECOND CHANGE ON ADDRESS WORD AND RESET BCD COUNT.
03020 83021 G3322 63323 03R24 83025 63326 03027 83030
Ö21726
Γ.Β0344
045725-
067039
050445
000446
024415
Ö35725
531726
LDA S INCREMENT BCD ADDRESS PART { SAVE S«-A "
ADA DP128 . OF WORD S
ISZ R BCD OVERFLOW?
JMp •♦5 NO« SKIP 4 INSTRUCTIONS
AND K20 SAVE AND INCREMENT 1 OF 8
ADA K21 CODE PART OF S
LDB DM10 RESET R«—10
STB R
STA S
INCREMENT BUFFER ADDRESS AND CHARACTER COLUMN COUNT. IF DONE CHECK CHARACTER COUNT, ELSE FINISH PRESENT CHARACTER.
3 0 9 8 3 27 0 8 4 3
I/O SUPERVISOR
increment pattern array address pointer all 5 columns done? no, continue to loop at l4d*1
if done then exit» else start
ALL 16 CHARACTERS DONE? NO, CONTINUE TO LOOP AT LAD DELAY FOR LAST
COLUMN THAT WAS OUTPUT TURN OFF OISPLAY TURN ON THE INTERRUPT SYSTEM RETURN 1236·
1216· 03031 045722 045720 ISZ M
1219 03032 045723 C67006 ISZ N
1220 03033 »67007 JMP L4D»1
1221 3FF DISPLAY
1222· increment character COUNT.
1223· new character. 02(3410
1224· 072030
1225· fl3034 173750 ISZ K
1226 03035 173741 JMP L4D
1227 176402
1228» TURN (
1229·
1230· 03036 LOA DM4
1231 G3337 RlA ·
1232 03040 CLF 8
1233 Q3C41 CLF 1
123* 03042 RET
1235
3 u a a j z / O 8 ι* 3 "
MAGNETIC CARD ROUTINES (Magnetkarten-PiOgrammfe) (Lade- und Auf zeichen ^roirramme) ■ . ·
LOAD AND RECORD ROUTINES FOR MAGNETIC CARD» 2 262 / 2. C
ir So»
1239* .REC IS USED FOR RECORDING PROGRAM AND/OR DAlA INFORMATION 1240» ON MAGNETIC CARDS IN EITHER A SECURE OR UnSECURE MODE.
1241»
1245 C3043 C'63146 125555 .REC JSM L5S TO SYSTEM«
1246 B3ß44 670410 P74117 SZA L5D
1247 B3045 074517 07B642 LDA BoI PADDtI
1248 03046 050515 S7fll50 AND K22 B
1249 S3047 07C517 024402 LDA AtI 14
1250 C3050 Gl0463 G671-41 CPA K8 **3
1251 C3S51 C67143 JMP L5H DP2
1252 C3052 01ß443 CPA Kl L5F*1
1253 C3S53 067100 JMP L5R
1254 63ί'.54 063134 L5D JSM L5P
1255 03055 045554 ISZ PCNT
1256 ß 3 056 667101 JMp L5R+1
1257»
1258» SET ADDRESS OF NEXT DATA WORO. I
1259* set error 2 AND RETURN
1260*
1261 03057 L5E LDB
1262 03360 LDA
1263 G3061 SAR
1264 B3S62 S2a
1265 Θ3063 LDB
1266 03064 JMP
1242» FIRST SET UP NECESSARY PARAMETERS AND CHECK TO SEE IF SECURE 1243* OR DATA MODE HAS BEEN SET.
SET LINK WORDS FOR RECORD IF NO PARAMETERS RCORD ONLY PROGRAM B«-AODRESS OF FIRST PARAMETER SAVE BITS 0-13
GET FIRST WORD OF FIRST PARAMETER IF A="SE» (SECURE MODE)
THEN GO TO L5H IF A=«DA» (DATA ONLY) - ·
RECORD PROGRAM
CHECK PARAMETER COUNT FOR DATA
IF TEmP. OR ALPHA INFORMATION* «
A<-ADDRESS OF NEXT DATA WORD B«-A
IF A(15-14)=0 (REGISTER REFERENCE) THEN SKIP 2 INSTRUCTIONS ELSE B«-ERROR NUMBER 2 DISPLAY ERROR NUMBER 1267» 1268* IS ADDRESS OUTSIDE OF SYSTEM MEMORY? IF YESt SET RECORD LENGTH 1269» FOR R REGISTERS FROM MAW TO ADDRESS SPECIFIED. ELSE SET LENGTH 1270» To -4. IN EITHER CASE» LENGTH IS NEGITIVE. 12716
1272 03Π65 020441 LDA K13 A<-1777B - TOP END OF SYSTEM R/W MEMORY
1273 - ß3«66 ß70376 TCA A«--A
1274 63867 074017 · ADA B ADD AODRESS OF DATA WORD
1275 C3070 070153 SAP **3 IF A,B»C*X*Y>OR Z REFERENCE
1276 03071 S32G410 LDA DM4 THEN A«—4 (4W0R0S IN THE DATA MODE)
1277 63372 £67077 JMP »*5 SKIP 4 INSTRUCTIONS
1278 C3073 C-21377 LDA MAH A«-LAST WORD OF MEMORY+1
1279 C3374 C7P.376 TCA A«--A
1280 03375 074017 ADa'B ADD ADDRESS OF DATA WORD TO GET LENGTH
1281 03076 076952 SBM ■»♦ltS ΒΠ5Χ-1 TO INDICATE RFLATIVF ADDRESS STRUCTURE
1282 C3377 C63120 JSH L5B RECORD DATA 1283* 1284& check parameter count and if done return to system.
1285«
1286 03100 055555 L5R DSZ PADD DRECEMENT POINTER TO ADDRESS OF NEXT DATA WORD
1287 03101 055554 DSZ PCNT MORE PARAMETERS?
1288 33102 067057 JMp L5E YESt PROCESS AT L5E , ■ 1209 031Ö3 165755 JHP .SYMtI NOt TURN OFF MAG CARD 1290»
1291· LINK WORD SETUP FOR HAG-CARD 1292· LOAD AND RECORD 1293*
309 832/0843
LOAD ANO RECORD ROUTINES FOR MAGNETIC CARD.
RECORD CONFIGUHATION CODE ANO SECURITY WORD.
226272
03104 3?16?5 LSP Θ3135 070110 G3H16 066136
C3107 E3110 C3111 63112 03113
020410 624447 161754 070110 067122
L50
LOA .SE
SZA •♦2
JMP .INT2
LDA DM4
LOB DAfU
JSM • REC.
S2A •♦2
JMP L5B + 2
GET SECURE WORD IF ZERO ALLOW RECORDING OF CURRENT PROGRAM ELSE RESET SYSTEM
LOAD A-REG WITH WORD COUNT LOAD R-REG WITH AOOKESS OF DATA RECORD CONFIGURATION CODE
Record program information starting at prfsent location of program counter (cha» to enoi. if cma=enos then skip program recording.
03114 021546 63115 C7O076 03116 031542 63117 C25546
LDA CMA TCA
ADA ENDS LOB CHA
L58 IS USED TO CALL THE RECORD DRIVER AND CHECK FOR ERROR CODES ON RETURN. THE CODES ARE! ·
A=O NORMAL
1 S»OPT CfP.O
2 CtRD PROTTCTED
3 CARD NOT IN AND STOP PRESSED
ERROR 14 - CALL .DSP ERROR 13 - RETURN MO ERROR - RETURN -
03120 161754 L5B B3121 071110 0312? 038406 33123 070S53
JSM .RECl CALL MAG CARD RECORD SUBROUTINE
SZA L5P-1 IF A=RiNO ERROR SO RETURN ADA DM? ELSE LOOK FOR CAUSE OF STOP
SAP L5C · IF - SHORT CARD
DISPLAY ERROR MESSAGE 14 AND WAIT FOR STOP OR EXEC KEYCODE.
C3124 03125 03126 G3127 03133 P3131 03132 G3133 C3134 03135
161755 L5T 024366 063251 067136 024405 O3S727 025730 021731 071212 P67107
C3136 055777 L5C P3137 C72150 S3140 024367 L5F 03141 061351 «3142 165755
jsm .sym,ι
LDb 0P14 JSM ι? JMp L5C LOB DMl STb T LDB TEMP LÜA MOCNT SAM L50 JMP L50
DSZ 1777Π RZA LSF*2 LDB 0Ρ13 JSM BAD JMP DISPLAY ERROR 14 AND WAIT FOR KEYCODE STOP KEY. GO TO L5C EXECUTE KEY.
SET T*-l
B*CONTINUATION ADDRESS A «-WORD COUNT
IF COUNT - DATA CONTINUE RECORDING ELSE PROGRAM;PUT CONFIGURATION ON NEXT PASS
IF NOT ZERO STOP PRESSED
ORIGINAL INSPECTED
309832/0843
LOAD AND RECORD ROUTINES FOR MAGNETIC CARD.
1349· SECURITY RECORDING. SET SECURITY WORD» ADJUST PARAMETERS. AND 1350» OO RECORDING OF PROGRAM AND/OR OATA.
1351*
1352 «3143 655744 L5H OSZ ARl SET SECURITY VOVtD
1353 03144 G6310A JSH L5P RECOPD PROGRAM
135'+ β3145 K67100 J»P L5R CHECK FOR MORE PARAMETERS
1356« 1357« 1358* 1359» 1360» 1361» 1362» 1363 1364 1365 1366 1367 1368 1369» 1370 1371 1372 1373 1374 1375« 1376 1377 1378 1379 13B0 ' 1381 1382 1383
RECORD AND LOAD SET UP.
SETUP LINK ADDRESSES TO DRIVERS OF THE MAG-CARD GET PARAMETER COUNT» PARAMETER ADDRESS, AND TRANSFER CONFIGURATION CODE.
03146 623605 L5S
03147 031754 33150 023686 C3151 031755 C3152 023607
03153 031756
03154 02G405 L5A
03155 C31727
03156 63(3247 Θ3157 !Γ/2Λ447 6316«
S3161 S3162 03163 03164 03165 Ö3166 G3167 «3178
G21556 Ö7C076 C315S7 031554 325557 684405 G35555 17B492
LDA RLINK STA .REC. LDA RLINK*1 STA »SYH LDA RLINK*2 SlA «LOD.
LOA DMl STA T ADA .ΤΛΒ7, LDB DARl XFR
LDA API TCA
ADA AP2 STA PCNT LDB AP2 ADB DMl STB PADD RET LINK WORD TO MAG-CARD RECORD LINK WORD TO MAG-CARD SHUTDOWN LINK WORD TO MAG-CARD LOAD
A* ADDRESS OF CONFIGURATION CODE TABLE B«-AODRESS OF ARl " DO A A WORD TRANSFER
COMPUTE # PARAMETERS SAVE COUNT
SET !«-ADDRESS OF 1ST PARAMETER ADDRESS
RETURN
309832/0843
LOAD AND RECORO ROUTINES FOR MAGNETIC CARD.
1385· 13fl6· 1387· 138B· 1389· 1390 1391 1392 1393 139* 1395 1396 1397 1398 1399· 1400·
1412 1413 1414 1415 1416 1417 1MB 1419 1420 1421· 1422· 1423° 1424· 1425· 1426· 1427 1428 1429 1430 1431· 1432 1433 1434 1435· 1436 1437 1438 1439 1440
.LOD WILL LOAD A MAGNETIC CAPD INTO THE 9820A MEMORY AND CHECK FOR PROPER CONFIGURATION CODE.
«3171 C63146 .LOD 63172 021563 C3173 ö7i»152 C 3174 1*21664 03175 073110 83176 067205 «3177 024370 «3200 C61351 «3201 164346
L5S
LDA TSW SAM ·*3 LOA NMA SZA ·*2 JMP L5G LDB DP12 JSM BAD JHP XJ,I IF TSW NOT<0
OR NMA=G
THEN PREVENT LOADING
CALL DPIvER TO LOAD FROM CARD AND CHECK FOR THE FOLLOWING ERRORS ON RETURN.
1402· 1403· 1404* 1485· 1406· 1407* 1408 1439 1410
A=0 NORMAL
1 STOP
2 SHORT CARD
3 MEMORY OVERFLOW
NO ERROR - CONT. NO FRROR - RETURN FRROR 14 - CALL «OSP ERROR 12 - RETURN
03202 C24366 L5J C3203 C-63251 B32C4 C67216
LDQ DP14 JSM L7 JMP LSK
STOP RETUKN B3205 161756 L5G JSM .LOD.,I CALL MAG CARO LOAO SUBROUTINE
C3206 073137 63267 161755 C3210 CC44C6 «3211 074252 03212 075410 B3213 324370 LSN
03214 C61351
03215 067237
LDB A JSM .SYMd ADB DM2 SBM L5K SZb L5J LDB DP JSM DAD JMp L5L*2 LOOK FOR WHY STOP? STOP KEY OR NORMAL RETURN SHORT CAPO
ELSE MEHOPY OVERFLOW OCCURED SET ERROR 12
store security word. if non-zero, system can only run program, check configuration code. if code read fpom the card is a zero 0» matches that of the machine, thfn set ends to The present value of cma. else set error is.
«3216 02S447 L5K 03217 031717
03220 020247
03221 031716
«3222 021744 03223 070110 «3224 Ö31625
63225 024406 Ö3226 045717 L5M 03227 121717 03230 070250 «3231 111716
LOA OARl STa J LOA .TAB7 I
LDA ARl SZa «»2 SiA .SE
LDB 0M2 ISZ J LOA J,I SZA L5L CPA ItI AREA OF CARD LOADED CONFIGURATIOM AREA OF SYSTEM CONFIGURATION
GET SECURE WORD FROM CARD IF ZERO 0ON1T CHANGE SYSTEM WORD
GET WORD FROM CARD CONFIGURATION IF WORD ZERO DON'T CHECK CHECK AGAINST SYSTEM
309832/0843
- 2O5 -
LOAD AND RECORD ROUTINES FOR MAGNETIC CARD.
B67235
JHP LSL
HATCH
83234
03235
83236
03237
93240
«!3241
03242
03243
S3244
024365
S67214
045716 L5L 877430
160320
255702
C45702
831604
160315
164316
LDB JMP
ISZ RIB
DP15 L5NU
I L5M
NO HATCH,ER"OR #15
JSH RGTO,I DSZ GTS ISZ GTS STA NMA JSM INTRP,I JMP XEOLiI reset all gtois and gs8»s,a-reg has mainline add. what type link? gto or gspj if skip—gto;then start where card was loaded not skip—gsbistart at beginning of main lime setup run time stack
LDA ERROR CODE JSM L7
... STOP RETURN ... NORMAL RETURN
«3232
1442*
1443 «3233
1444
1445«
1446
1447
1448»
1449
1459
1451
1452
1453
1454
1455*
1456*
1457* L7 IS THE ERROR MESSAGE ROUTINE THAT WILL CALL THE DISPLAY 1458* ROUTINE ANO WAIT FOR EITHER Λ STOP OR EXEC KEYCODE. THE 1459» CALLING SEQUENCE IS AS FOLLOWS: 1460* 1461* 1462* 1463* 1464Ο 1465*
1466 «33245 e6I25ß JSH XSTP
1467 33246 074742 SBR 16
1468 S3247 061352 JSM RBAO
1469 C3250 C67320 JMP 33208
1470 G3251 061351 L7 JSM BAD Ϊ471 63252 £20207 LDA .DBUF
1472 03253 S62732 JSM L2F*1
1473 -«3254 662715 JSM .DSP
1474 03255 016401 . CPA DP3
1475 C3256 G67245 JMp L7-4
1476 33257 010537 CPA DP33 1477. 02260 067245 JMp L7-4 Ϊ478 i?3261 <?10437 CPA DP93 1479 .03262 067264 JHP «+2 148B 03263 Ö67254 JMP L7+3 1481*
1482 03264 Ö63246 JSH L7-3
1483 63265 025777 L7A LDß' 1777B
1484 33266 034405 ADQ DMl 14B5 03267 D74637 ISZ B,I I486 83273 1704S2 RET 1487*
1488** β **«*■»·» «f»»»**«»»«*««»«»«« 1489Ο ADD ON BLOCK REJECT ROUTINES 1493»
1491 03271 021575 SYNTX LDA QUOTE
1492 03272 073710 R2A °-2 Ö3273 024371 EXEOX LDB 371B 93274 Ö65351 JHP BAD
END 226272!
SET STOP GlT
SET A-RER=3 SET ERROR USING
BAD ROUTINE
1493
CLEAR DISPLAY BUFFER CALL DISPLAY MONITOR
CLEAR KEY IF STOP KEY THEN RETURN IF KEY=EXECUTE THEN SKIP 1 INSTRUCTION
GET THE JSM STACK POINTER DECREMENT THE ADDRESS INCREMENT THE RETURN ADDRESS
FOR SYNTAX AND EXECUTION
IF CODE IS IN QUOTE FIELD ALLOW IT
ERROR
1495
• NO
ERRORS*
309832/0843
00131 0002· 0003» 0304· 0005· 0006· 0007· 0008· «009· 0010· C011* C012» 0013· 0014· ©015· «016· «017· β01Β· C019· «020* 0021· 0022· C023· 0024· 0025·
6027· 0028· 0029· 0030· 0031 6032 0033 0034 0035 0036 C037 0038 0039 0040 6041 0042 C043 0044·
0046 0047 0048 0049 6050· 0051 S052 C053 0054 0055 0056
ASMR,AtL MAGNETIC CARD DRIVER ROUTINE
Ulogne tkar 1 en-Tre i be r-Prograinrn)
ALL OF THE FOl LOWING ARE OUTPUTS FROM THE 9820 TO THE MAG CARD READER AND ARE POSITIVE TRUE LOGIC
BTT 0 (000) IS THE LSB OF THE DATA BYTE «CHANNEL A)
BIT 1 JDOl) IS THE NEXT LSR OF TnE DATA RYTF. (CHANNEL B)
(DO?) IS THE MSB OF-IHF DATA BYTE (CHANNEL C) IS THE STROME DATA BIT
IS THE INHIBIT CONTROL (0/1, OFF/oN)
BIT BIT
8IT 4 „.„ - ... . --
8IT 5 (005) IS THE MOTOR CONTROL (0/1, OFF/ON)
(D03) (D04>
STC fl? (HLS) IS TUE 5 BIT LATCH CLOCK STF 82 (HCR) IS THE STROOE BIT LATCH CLOCK
THE FOLLOWING ARE INPUTS TO THE 9820 FROM THE MAG CARD READER AND ARE NEGATIVE TRUE POLARITY
BIT BIT BIT BIT BIT BIT
BIT
0 (010) (DIl) (DI2) (013) (DU) (015) (016)
IS THE LSB OF THE DATA BYTF (CHANNEL A»
IS THE NEXT LSn OF THE DtTi BYTE (CHANNEL B)
IS THE MSR OF ThE DATA BYTF (CHANNEL C) .
IS THE END CF CARD SIGNAL WHEN RECORDING (SENSOR 1)
IS THE CASD IN SIGNAL (SENSOR 2)
IS THE PROTECTFO CARD SIGNAL (SENSOR 3)
IS THE END OF CAPD SIGNAL VHEK LOADING (SENSOR 4)
THE DATA FLAG (HFL) IS THE DATA SAMPLING MARKER
IF IS
€3306 633B6 «3307 C3316 63311 B3312 03313 03314 β3315 B3316 63317 U3320 Ä3321
THE LIGHT TO A SENSOR IS GROUND OR A LOGICAL
ORG 3366(3
070550 .REC. SZA ·*11 SlA WDCNT STB ADHOO SBM FIX,C STß TEMP ISZ T JHP DOIT LDA DATST
(131731 635733
C74072
035730 FIX
045727
C67331
020356
063500
076150
JSm CRDIN R2ß JMPl
P-204ßl JMP20 LD,V DP3
172432 RET
Ä3322 C70252 JMPl 03323 029425 Λ3324 063553 63325 »120402 JHp2 83326 17ö4fl2
63327 320513 NTYET «333« 072030 IT3331 C21731 DOIT 63332 061523 C3333 021731 §3334 070513
SAM NTYET LDA SETUP JSM 0UT2 LDA 0p2 RET
LDA WAIT RIA · LDA WOCNT JSm WRDST LDA HDCNT SAP JMP3 BLOCKED, THE OUTPUT LEVEL
A-REG « WORDS. IF ♦ PROGRAHiIF - DATA
B-REG ADDRESS OF A«R«C*X*Y»Z IF ADDRESS* IF ADDRESS (B-REG) NEGATIVE DATA IS RO. SET BIT15=0 SAVE ADDRESS
Ttf -1 CAPD IS IN PROCESS AND RECORDING CAN CONTINUE T=-l
CHECK CARD IN
B=BtSTOP KEY ENTERED. ABORT OPERATION ERROR «3 SENT TO CALLING ROUTINE(A-REG)
_ NnT PROTECT,JUMP TO DELAY CARD IS PROTECT
START SHUT DOWN PROCESS
ERROR «2
DELAY CAPD.lINCH.PREVENTS ERRORS WHEN LOADING DUE TO SLIGHT POSITIONAL DIFFERENCES OF THE CARD-IN SENSO
1ST WORD OH CARD IS WORD COUNT. FOUR TYPES OF BLOCKS POSSIBLE! CONFIGURATION,PROGRAM,ABCXYZ,R
CHECK FOP TYPE OF !»LOCK.
WORD COUNT POSITIVE» PROGRAM BLOCK
309832/0843
0=1 IBS
aavo ovH ν 9Niav3a aoj
νο-νηπι 3DVJÜ31UI οι mdino
llä JJO HOIOH QVOl AV130 .
H0SN3S QNOAlH aaVD
313A33a 1Η9Π 9NIX3018 SI UaV3 I=JI STUB 01NI (91Ι8)9ΝΐανθΊ bOJ 0.UV3-J0-C1N3 NOIiISOd
N011VWHQJNI U0SM3S 139
m aoaas 1X3N aaoo3a »aavo jo aN3 0N*i=suia Ji
SI1I8 NI IV) lI8-abV0-J0-GN3 'flOHISOd
vivo aosN3s 139
SQaOH 380H INfIOO QdOH M33H3
-1X3N aoj ss3aoav 13s
3Hl NO OaOM V 3DVId Ol 3NlIOOa 11V3
jo xooiii SNiaaoo3a aoj 3Niinoa Ainim
1X3H aoj
3AlIISOd 1ΝΠ03 (laOM 13S
Aavss3D3N aavQ 3aow
AMVSS333N 3>JV S0bV3 3äüH 0frV JI
(iMno3 Hvaooad wsisas) vwd ni sssyaov sihi iss aaos hv«9oad ixsn jo ssaaaav 139
NOllVWäQJMI JO
iNnoa
3AI1V93N 1ΝΩ03 3»VW*WVa90ad SI MD018
•»3018 NOIIVHMOJNI
3HI JO 9NiaaO33a 3I3ldW03 aOj 03033M 3«' S0dV3 IVNOIHOQV JI AaVSS333N M=Sl ilö dW31 13S*- JI
AVXO dW3l ♦ JI
SS3H0av lVNi9iaO 139
NOIIVWHOJNI JO >I3O~IU 0a033a
•»Dona JO SS3äüüV 3H01S
VIVO SI Χ30ΊΗ SnHI 3AUV93N INOOD
1 vis •αοτ IZLlZQ LOKU zn» 13a HSNIJ 2DV01T S0VC9 «801 ö 13a 13 20V3II ViCCS »9600
91 avs 2VIBiO 90VCÖ IUO JlD IViCiI V0VC9 1019 VOl C8V32a CICCB S60S
•au» Hsr CSSC90 C0VCO 90(9 HVS 2ICU0 21CC0 V609
ff·»«»»*»««··»··*«·«·*·«»»»#»»#601 β ναι I9c02ß 2HVC 9 S01O ava dHQXX 9VlSiS UCCS C60Ö
via oceaiff lovca V0I9 Hsr 9ISC9S 0iCCO 269»
ναι 00VCB C0IO 13a 20V011 I9CC9 1609
χι (\ Art ft
I WVS 2UU0 ÜCC3 20l> aBS 100 2ViVlO 99CC3 VUQUEr
6809
2ΐηο ivs VVCSIQ 9ICC O 1019 avs 2Vi»i0 S9CC9 8900
JJO Hsr *0Ν3· 91SC90 SlCCO 0019 dwr 0iCi9G V9CCS- 1803
« 6609 ZSI IClSVO C9CCS 9809
AV130 «8603 ZSI 0CiSVO 29CCS S&09
•ÜN3· »»β«»·*»»*»*» »*■»»»&*»■»·»»■»»# β »»i600 Hsr dwnax C2SC9Ü 19CC0 V800
6 ναι OtIUl 09fC0 C803
139 HHHHHH Z809
Ida ******* 1^ **#***i »1809
λ ^ Λ Λ j*· ί%
dwnax iaa 2BV9II isceo »»0ÖBV
#6109
ν ais IZLSZO 9iieC3 810&
139 8Di iidnr 9IßVig SSCC5 Ü03
aai ICIS2Q VSGCii 9100
9t vzs 0l20iö CSCCD S10»
91 a is 9VSSC0 2SCC 3 Vi0O
dwaxx aai 0CIS23 iseco C10 9
INOOK Hsr 09CC9O 0SCC(J 2108
dH31 vis EdHr ICilCö iVCC» U00
isaart VDl 9ißßiö 9VCCB 0LQ9
*drt31 6903
3AV31 «8909
13a oa 20V0II sveea »♦1903
♦9909
8iS BCiSCO VVCGS S90O
lNDQft Has 2Sß910 cvcca V909
aai 0C152O 2VC C 8 C909
1Ν3α* das Cl2ViO IVCC3 2909
V+* ,801 CCiS2a 0VCCB 1909
VW3 Hsr SI9CC9Ö iccca 093Ö
dW3l Hsr C2SC9D 9CCC S 6S09
dwoax ναι CC112Ü sccca 8S00
1N3Q« IS0O
»β»»«·
dW3I
s*oa
dW31
3AV31
OOHGV
dWOOX
isaan
QOWQV
- LOZ -
«113 03410 020405 YESCD LOA SETUP fl3451 063556 LOAD DAT IN
0114 P3411 9635CiJ JSH CRDIN 03452 076253 JSh JMP9
«115 B3412 »75050 szb El C3453 C45727 RZb T
«116· C 34 54 C67325 ISZ JMP?
0117 «53413 063556 jsh DATIN C 3455 Ö63472 JHp FIXAO
0118 03414 B76?l« R2B JHPU 03456 067325 JSM JMP2
«119 (»3415 821731 JMPIl LOA WOCNT JMP
«120 P3416 Ö71350 SZA FINSH 03457 025730 JMP9 TEMP
0121 03417 067325 JMP JMPZ 03460 0176(13 LOB ASE
0122· C 3461 067463 CPB •♦2
«123 83420 07H352 SAM JMP8 .03462 131730 JMp TEMP,I
0124 63421 070076 TCA 03463 045730 STA TEMP
0125 E3422 031731 sta WDCNT 113464 045731 ISZ WDCNT
0126 63423 023405 LDA DMl B3465 167451 ISZ LOAD
0127 03424 631727 STA T JMP
«128 83425 021546 JMPB LOA CHA
«129 03426 «67442 JHP MAXAO
«130» f §41140 I
{j ι j ι wi
0132*
«133 03427 031731 STA WDCNT
«134 83430 J563556 JSM DATIN
«135 23431 Ö7C473 SAP MAXAD,C
0136 03432 321731 LDA WOCNT
0137 ß3433 fifll377 ADA MAW
6138 G3434 Ö31730 STA IEMP
C139 S 34 35 376076 TCA
0140 Θ3436 001542 ADA ENOS
«141 33437 S31615 HAXAD ADA BSTK
«142 63440 070413 SAP OVFLO
«143 «3441 867451 JHP LOAD
0144»
0145 ' 03442 Ö31730 sta TEMP
0146 C 344 3 001615 aoa BSTK
0147 03444 B70056 OVFLO CHA
0148 63445 B31377 ADA MAW
0149 83446 U01731 AOA WOCNT
«156 C3447 070113 SAP LOAO
0151 03450 »6732Ö JMP JMP20
0152·
0153·····♦«······»······«···#·····
0154·
0155
0156
«157
«158
0159
0160
0161·
«162
«163
«164
• 165
• 166
«167
• 168
A-REG HAS COHOITION FOR REAOlNG (HOTOR-ONi INHIBIT» IF B=0 STOP KEY
GET FIRST WORD FROM CARD IF B«0IA-pEG HAS WOHD COUNT GET WORO COUNT
IF ZERO RETURN TO CALLING ROUTINE MORE WORDS BUT EOClERROR «2
TEST WORD COUNT TO DETERMINE TYPE OF BLOCK IIF ♦ PROGRAMISET VORD COUNT NEGATIVE
SET T=-l TO DENOTE PROGRAM REING LOADED GET ADDRESS OF WHERE TO START LOAO PROGRAM CHECK IF PROGRAM WILL FIT IN MEMORY
THE CARD TO RC READ HAS DATA NEXT WORD ON CARD IS ADDRESSiGET IT JF BITl5=a DATA IS A,B»C,X.Y»Z CONTINUE WITH READING BIT15=1,ADDWESS NORMALIZED TO SIZE OF MACHINE ADD -COUNT TO MAXIMUM ADDRESS WORD (MAW) SET NEW fiOORESS FOR DATA IN TEMP CHECK TO SEE IF AD0RES5 IS IN SYSTEM INTER STACK
(END$*8STk)-TEMP
IF RESULT POSITIVE ERROR»JUMP TO OVERFLOW REAO BLOCK
CHECK FOR PROGRAM FIT IN MEMORY. SAVE LOAD ADDRESS WORDS NECESSARY FOR INTERPRETER STACK.
MAW>=LOAO AODRESS*#WOROS*BSTK IF TRUE JUHP TO READ CARD ELSE SET ERROR #3
UTILITY ROUTINE V/HICH READS A BLOCK OF INFORMATION GET A WORD. IF B=0»ENO-OF-CARD FOUND
T«-l,RETURN ERROR «2,ALSO MUST BE DATA DON'T FIX ADD· T=-l»READING PROGRAM FIX ADDRESS (CMA AND ENO*I
IS STORE ADDRESS SECURE WORD? YES SKIP STORE CONTINUE TO STORE WORDS
ADJUST POINTER TO NEXT MEMORY LOCATION CHECK WOPD COUNT NOT ZEROt CONTINUE LOADING
309832/0843
226272
βΐ 69 Ö3466 §45727 FlXAD ISZ T ZEROtCHECK T=-l PROGRAMt Τ0-Ϊ DATA
«170 03467 067413 JHP YESCD data;rlock complete
fll71 63470 C63472 JSH FIXAD PROGRAM RLOCK COMPLETEOtFIX CMA AND ENDS
0172 Ö3471 667413 JMP YESCD RETURN
0173*
0174 63472 S21730 LDA TEMP GET NEXT STOREAGE ADDRESS
C175 63473 S31546 HHHHHH STA CHA PLACE IN SYSTEM PROGRAM POINTER
0176 63474 331542 STA ENDS . SET ENDS(PoINTER TO END-OF-PROGRAM AREA)
8177 B3475 i'2ff405 CRDIN LOA DMl
0178 C3476 131542 STa ENDS.I STORE -1 AT END OF PROGRAM
0179 B3477 170402 LOOK RET RETURN TO CALLING ROUTINE
0180·
«Int -j
* -W--M- mi
3182» IHHHHHiiH
0183 03500 172741 STF 1 CHECK FOR CARD-IN. TURN-OFF INTERRUPT
8184 G3501 G63553 jsh 0UT2 SET CONDITION IN A-REG INTO MAG CARD INTERFACE
0185 «3502 S63516 jsh GET GET SENSOR INFORMATION
0186 33503 978146 JMP10 RAR 4 PLACE CARD-IN-BIT (4) IN LSB
fll87 E35P4 870211 SLA JMPl 0 BIT0=0 CARD -NOT IN JUMP TO CHECK IF STOP
€188 P3505 37P046 RAR 2 CHECK IF LEADING EDGE OF CARD
0189 C35B6 079111 SLA JMP10
6190 63507 178402 RET CARD IS IN!
0191 «3510 8257Ö1 LDB .WKC LOAD KEYCOOe - '
6192 «3511 CI4537 CPß STPKY IS IT STOP?
0193 33S12 374742 SBR 16 YES, B-REG=0
0194 63513 C7735B R2b LOOK B«0»RECYCLE (LOOK FOR CARD IM)
0195 33514 622495 LDA SETUP B=O SET UP CONDITION"TO GET CARD THRU CARD READER
0196 33515 067553 JMP 0UT2 INHIBIT AND TURN ON MOTOR
«197·
β 199· C200 03516 820423 GET LDA MASK
6201 63517 172141 OTA 01
0202 Ö3520 172741 STF 01
0203 B3521 172241 LlA 01
6204 B3522 173402 RET
0235· 4|f 11 w Jt ti >C J H* if Φ9Φ
0207» rH Willrft Wi
02ß8 03523 924412 WRDST LDB H 6
0209 03524 535734 STB BTCNT
0210 63525 024522 LDB. FMTOT
0211 C3526 070356 CHA
C212 03527 Ö31732 BTOUT STA HOLD
0213 03530 J55Ä375 AND DP7
C214 03531 043423 IOR MASK
0215 C3532 063550 JSh OUTl
0216 03533 92G422 LDA 422B
0217 C3534 072030 RIA «
0218 P3535 176141 OTB öl
0219 C3536 172742 STF 02
8220 C3537 374036 KBR 1
•221 03540 020422 LDA 422B
0222 ■■ 33541 C72O30 RIA *
•223 03542 045734 ISZ BTCNT
0224 03543 067545 JMP JHP14
ALL l'S IN MOST SIGNIFICANT BITS OF I/O REGISTER ALLO LOADING OF THE SENSOR'S AND DATA INFORMATION FROM THE MAG CARD INTERFACE
MOVE 128IT WORD FROM I/O REGISTER TO A-REG
UTILITY POUTINE USED TO STORE 16 BITS ON A MAG CARD SET BYTE COUNT TO 6 (3BITS/BYTE)
LOAD B-RFG ALTERNATING BIT PATTERN
BECAUSE OF INPUT REOUIREMENTS(PEADING)COHPLEMEnT DATA. SAVE IT
GET 3 BITS
SET MSB FOR ADDRESS OF MAG CARD
OUTPUT WORD TO INTERFACE
-25
DELAY FOP STROBE WHICH PLACES IT .003 INCH FARTHER A SET STRORE BIT INTO RIT3 (ALTERNATING BIT PATTERN) · CLOCK FOR STRORE BIT LATCH
POSITION FOR NEXT STROBE BIT
-25
DELAY FOR NEXT DATA ENTRY.(.003 INCH) CHECK BYTE COUNTER
NOT ZERO, GO POSITION FOR NEXT BYTE
309832/0843
0225 Β3544 170402 JMP14 RET HOLD 03556 070742 OATIN SAr 16
0226 03545 021732 LOA 3 C3557 031732 STA HOLD
0227 Β3546 070106 RAR BTOUT 93560 024412 LDB M6
C22B 83547 G67527 JMp 03561 C35734 STB BTCNT
β229· OUTl' 01 β 3562 173742 WORLD CLF 02
0230 03550 172141 OTA 02 83563 063516 FLAG JSM GET
0231 83551 172602 STC G3564 172502 SFS 02
0232 83552 170402 RET 03565 C676S0 JMP EOCL
<J233· Hi #· H 4 4 ► IHHI ·β #ί 0UT2 }#**! OUTl C3566 £63->ΐ6 JSM GET
0235 83553 «63550 JSM 02 63567 (57? 144 SAL 13
0236 β3554 17?742 STF B357S ίίί.1732 IOR HOLD
8237 03555 170402 RET C3571 245734 ISZ BTCNT
β23β· 0239·····*······»»··*·*··*···*··*· C357? C67575 JMp JMPA
0240· C3573 070646 RAR IA
0241 Ü3574 170402 RET
0242
€243 03575 070106 JMP4 RAR 3
6244 03576 331732 STa HOLD
C245 «3577 667562 JMp WDBLD
6246
0247 03600 070306 EOCL RAR 7
0248 83601 071112 SAM FLAG
ö249 Β3602 067366 JMP OUT*1
025B
C251 «3603 601625 ASE DEF 1625B
C252
G253 03604 000000 BSS 1
0254 03605 Ο033Ε6 DEF .REC.
0255 83606 G33375 DEF .END.
0256· 63607 003406 DEF .LOO.
0257
0258
0259
0260·
0261
0262
0263
0264·
0265
C266·
0267
0268
0269
6270
0271·
0274 00300 DELAY EOU 0
8275 01546 CMA EQu 1546B
0276" ei730 TEMP EOU 1730H
•277 Ö1731 WDCNT EOU 1731B
fl278 81732 HOLO EOU 1732Π
8279 81733 ADMOD EOU 1733B
82Θ8 80513 WAIT EOU 513B
ZEROt RETURN WORD RECORDED
POSITION TO OUTPUT NEXT BYTE RECYCLE
OUTPUT DATA TO I/O REGISTER LATCH DATA INTO INTERFACE CARD
CALL OUTPUT TO I/O REGISTER ROUTINE SET STROBE LATCH
UTILITY ROUTINE FOR GET A 16 BIT WORD FROM CARD CLEAR BUFFER WORD
SE'T BYTE COUNTER TO SIX CLEAR FLAG FLIP-FLOP ON CARD INTERFACE GET DATA WORD IS DATA PRESENT?
NO» GO CHECK FOR END-OF-CARD '.
YES.PLACE DATA BITS (3) IN HSD OR IN DATA BI rs FROM HOLD CHECK BYTE COUNT NOT ZERO, MORE BYTES NECESSARY ZERO,NECESSARY TO OBTAIN CORRECT DATA FORMAT
READY MOLD TO RECEIVED NEXT 3 BIT BYTE SAVE IT
JUMP TO GET NEXT BYTE
POSITION END-OF-CARD BIT INTO BITlS IF BlTlS=I MORE CARD LEFT» CHECK FOR DATA STROBE END-OF-CARD SET 0=0
CHECKSUM
LINKAGE TO MAG CARO ORlVERS
US 8 J i! /1U 84 3
f2Bl C1734 Ö33365 BTCNT EOU 1734B
«282 Cl 727 T EQU 1727H
0283 03356 177772 DATST EQu 3568
0264 C1615 BSTK EQU 1615B
©285» 57 177715
6266 064(55 SETUf> EQU 40SB
β287» 77 S52525
«238 «1377 HAW EQU 1377B
β289 60537 ;* STPKY EQU 537B
0290* 22
6291 60522 FMTOT EQU 522B
G292»
«293 MASK EQU 423B
6291«
€295 M6 EQU 412B
6296*
0297 OFF EQU 361B
0293 DPI EQU 403B
β299 DP2 EQU 462B
6360 0P3 EQU 40 IB
Ε3Θ1 0P4 ECU 4g0B
ö3C2 DP6 EQU 376B
0303 C52525 DP7 EQU 375B
β304 ÖC423 .KKC EQU 1701B
0305 DMl EQU 405B
C306 177743 ENDS EOU 1542B
0307« €0412
0308 ORG 3G3B
6309 177712 DEF OUT
(3310 00361 ORG 412B
0311 COA03 DEC -6
6312 CB402 ORG 421B
C313 66401 OCT 177715
<J3U eS5400 ORG 522B
«315 BS376 OCT 052525
6316 C0375 END
* NO G1701
06405
öl 542
60303
ÖB303
S0412
aC412
GB421
6S421
BE522
S0522
ERROR?
ft OF WORDS REGUIRED FOR INTERPRETER
309832/0843
01266
ASMBtAtL
1266B COMPLIER SUBROUTINES
RECOVERaRLE ERROR (USED BY MftTH ROUTINES ONLY)
(Compiler-Unterprogramme)
ca ie C01i
Cß32 ■■
01266 021430 RECRR LOA FLAG
01267 072053 SAP »*ltS 01270 031430 STA FLAG β 1271 !170744 SAL I C1272 073252 SAM ·*5 01273 065351 JMP BAD
disallow implied storage e1274 025681 disis ldb stat «1275 074071 (11276 035601 C1277 170402
SLO »*ltC STb STAT RET
BUILO COMPILED STRING
Gl300 G14452 CL C1301 C456C2 01302 014457 C 1303 (165317
Cl 01305 01306 C1307 61310 01311 0131? 01313 01314 01315 «1316
021544 CPl
025545 CP2
Ü74233
074617
074557
076230
P70444
074557
076053
035545
Ü65362
01317 O24403 El 61320 065351
CPB CNFO ISZ G CPB CNFY JMp El
LOA SKEY LDB PSP SBP **4»C IOR BtI STA BtI RIB ·*4 SAL STA BtI SBP «*ltS STB PSP JMP EXIT
LOB DPI JMP BAD SET FLAG 15
FOR MATH ERRORS SO USEP CAN TEST LATER
CHECK FLAG 14
AND RETURN IF SET ELSE SET ERROR
(SEE PAGE 5 FOR DETAILS!
ENTER HERE FOR LITERAL STRING INCREMFNT G IF ENO OF QUOTE ERROR IF EOL, SINCE A QUOTE CANNOT BE CARRIED INTO NEXT LINE
USUALLY ENTERS HERE PSP POINTS TO NEXT AVAILABLE MORO SIGN TELLS WHICH HALF TO USE IF SETt USE RIGHT HALF IF CLEARt USE LEFT HALF STORE UPOATEO POINTER AND RETURN THRU NORMAL EXIT SYNTAX ERROR
THESE «!ASE-PAGE »OUTHIES ARE AVAILABLE TO THE REST OF THE SYSlEM FOR UTILITY PURPOSES
309832/0843
226272
0045»
fi046»
Ö047»
004 8
G349
€050
0252
G053
0054
6055
C 056
C063
C 06'*
G0G5
C366
ß068
C269
CONVERT-TO-INTEGER
01321 C1322 01323 ßl324 61325 G1326 C1327 01330 B1331
B1332 61333 β 1334 fll335 01336 Ö1337 01340 61341 0Ϊ342 öl 343 61344 ß 1345 α 1346 61347
121556 (373073 U24453 173034 074742 123450 Ü73712 ÜC5Ö427 031721 074117 Ο0&363 070613 G74744 (535717 0747S4 035717 1714Β3 Ö7VJ037 C21721 071213 «7G111 074076 17S462
FIXPT LDA SAp
• LDB XFR SBR
LDA
SAH
ADA STA LDA ADA SAP SBL STb SBL ADB -LS ADB LDA SAp SLA TCB RET
APItI *+l»C
A0R2
16
ADR2tI
«♦14
DM256
Hl
H3276
»♦12
Tl 2 Tl
A Hl
6071*
β 1350 S24372
LDB OPiB API POINTS TO NUMBFR TO BE CONVERTED CLEAR TEMPORARY BIT ADDRESS OF AR2 .· MOVE THE NUMBER TO AR2 INITIAL FIXED-POINT RESULT = LOOK AT EXPONENT DONE IF 10«S EXPONENT. IS <0 ELSE DECR 10»S EXPONENT AND SAVE IT
TEST FOR INTEGER OVERFLOW SKIP IF OVERFLOV/ MULTIPLY PREVIOUS RESULT BY 2 « RESULT 8 * RESULT
'SHIFT AR2 LEFT ADD IN NEXT DIGIT CURRENT ANSWER IS IN B-REGlSTER
TEST SIGN OF MANTISSA REPRESENT NEGATIVE NUMBER AS 2·S COMPLEMENT RETURN WITH RESULT IN B-REGlSTER
ERROR
ERROR «10 (INTEGER OVERFLOW) WILL USUALLY BE MASKED BY SOME OTHER E^RORt SUCH AS ILLEGAL SUBSCRIPT
C073»
Ö274*
G075»
Ö076«
0077»
0078·
ß079*
0080» FLOATING-POINT NUMBER FORMAT:
0081*
THIS MAY NOT BE THE CASE· IF AN OPTION BLOCK USES THE CONVERT-TO-INTEGER ROUTINE
0083»
«084*
Ö085*
WORD 1: EEEEEEEE S
WORD 2: DDDD DDDD DDDD DDDD
WORO 3: DDDD DDDD DDDD DDDD
WORD 4: DDDD DDDD DDDD DDDD
MOST SIGNIFICANT DIGITS HIGH-CORE END OF U
30983270843
ORIGINAL !NSPECTED
0037· 0088· Error EXIT «089« «090 0391 «092 C093
0095 0096 C097 Ο09β· 0399 0100·
01351 045603 BAD C1352 074644 91353 O217B5 01354 058513 Ö1355 074217 81356 031705 C1357 024405 C1360 17C402
«1361 000000 NORMAL EXIT
0102» β 103 OJ 04 6105 0106
0103 0109 0110 0111 0112 0113
ens 0116 β117· Olle«* C119· 0120· 0121· 0122· fll23· 6124· β125· 0126·
01362 Ö1363 C 1 G1365 G1366 01367 01370 B1371 C1372 C1373 61374
021603 EXIT
073610
025566
074073
021545
073973
Ü7üO56
074017
070152
C7474Ü
170402
ISZ ERRS SBL LDA .WMOD AND ERM2 IOR B STa .WMOO LDB DMl RET
NOp
LDA ERRS
31375 024373 E9A 61376 B65351
LDB CP SBp **1,C LDA PSP SAP *«1»C CHA ADA B SAM ·*3 SBR RET
LDB DP9 JHP BAD SET ERRORS FLAG POSITION THE ERROR BITS FOR INSERTION INTO .WMOD "AND" OUT OLD ERROR NUMBER "OR» IN NEW ERROR NUMBER STORE THE INDICATOR WORD .WMOD INDICATE ERROR
TO CALLING PROGRAM
RESERVED FOR CHECKSUM WORD
ARE THERE ANY PREVIOUS ERRORS?
compare ep and psp for a POSSIOLE OVERLAP OF THE SAME R/W MEMORY AREA BY ARITHMETICALLY COMPARING THE TWO ADDRESSES THEY ARE ABOUT TO OVERLAP ALL OK
ONE OF TWO CIRCUMSTANCES UNDER WHICH AN OVERLAP OCCURS
EXIT FROM THE COMPILER IS ALWAYS THROUGH ONE OF THE AROVE TWO ROUTINES
n0rm4l exit must check for previous errors rather than assume that all is o.k. so far
this is mainly because an error may have occured in a subroutine internal to the compilert in which case the error Return is to the compiler
■WfrfrO 2-Λ0 O * 3-
'. 226272$
cqmph.fr begins here
β128*
6130* CONVERTS
0132» FLAGS:
G134* G
6138» PS
infix notation to polish notation
STAT
β 145« 0146» Öl 47» «148»
0152» the
C155* 6156« 0157* 0158*
0161* 0162» 0163« G164« Cl 65° C166« C167« 0168» 0169» G170«
6175· 0176* 0177· tl78»
IF ZERO* PROCESS INPUT CHARACTER NORMALLY IF NONZERO» GO TO SPECIAL ROUTINE INDICATED IN THE TABLE TT82 (SEE PAGE 40}
STATE VARIABLE FOR SYNTAX CHECKING
GOVERNED BY THE SYNTAX TABLE ON THE NEXT PAGE
CONTROLS USe OF CO«MA» QUOTE» IMPLIED STORAGE
bit 0 set allows implied storage bit 1 set allows comma bit 2 set allows ouote
errs signals at least one error has been detected
dp several flags used at various sd stages of number es syntax checking
conversion algorithm:
all operands are moved directly to the polish output string via the routi1ne cpl <see page 2)
cp2 is a special entry used when a character other than the contents of skey needs to be moved out
each operator is.assigned a compare priority and a stack priority
the compare priority of the newly encountered operator is checked against the stack priority of the operator currently on top of a last-in fi*st-out stack
if the compare priority of the new operator is greater than this stack priority, the new operator is added to the stack
othepwise the operator on top of the stack is removed from the stack and place" in the polish output string and the relative priority test is repeated
in the case of gto or gsn an extrjy (blaw) machine word is placed in thl polish string for use at execution tire when a high-speed access address is filled in by the INTERPRETER
30 98 32/08 A3
• lßS»
• 106· «187· βΙΒβ· 0189· 0190· «191· β 192* β 193· «194· «195· «196» «197» β198· 0199· «200· «2β1·
SYNTAX TABLE:
LECALI
PS IS IHITIALLY SET TO 3(EXECEPT FOR ENTER
HOOE PS=Si
The row coRRrr.pOhniNr, το ps is checked to determine whether
THE NEWLY ENCüUNlENüD CHARACTER IS LEGAL IF SO. PS IS RESET ACCORDINGLY OTHERWISE THE CHARACTER IS REJECTED AS A SYNTAX ERROR
OPND (
FCN
OLO NEXT CHAR STATE
SBO QUOT
OPNO β IM IM IM OK OK OK OK CHK OK ERR 1
0203· «204· «205· 0206· «207· 020β·
0210* •211· «212· 0213· 0214· 021Ε· «216· 0217» 021β· «219» «220· «221· β222· «223· Β224· 0225· «226» 0227· 622Θ· 0229·
OPRTR
INITL STATE
PROC
INITL STATE ENTER
FCN
OK OK
OK OK OK OK
OK
ERR ERR U* U- ERR ERR CHK
OK ERR ERR U* U- ERR ERR ERR OK ERR ERR U* U- ERR DEL OK
OK OK OK £UR ERR U* U- ERR OK CHK ( INITIAL STATE FOR ENTER STMTS-- SOME PROC IN ERROR»
OK
OK ERR ERR ERR ERR ERR ERR ERR IM s IMPLIED MULTIPLY OK β ALL OK SO FAR CHK s CHECK STAT
ERR « ERROR
DEL s DELETE SUPERFLUOUS U* U- a CHANGE TO U-
U* * DEL
A TftRLE OF STACK AND COMPARE PRIORITIES IS PRESENTED ON PAGE 14
309832/0843
β231 84055 024535 CMSET 031606 CM 025540 CMPLR G61274 GAZ ORG 4055B CN 073250 SQO RZA CPS2
β232· 635545 023017 614355 Ö73350 UPARO DP4B 366311 JMP
0233* C24456 C24372 A65373 Ö66305 EXim
«234· 035541 062317 £•14351 DP63
6235 COMPILER SETUP 674742 065373 LOB TOPS exzT+9
«236 035693 COMPILER ENTRY 014353 STB PSP DP52
«237 04055 135541 665317 LOB OPST El
6230 64056 666273 Ö4071 STB OP
6239 {!4357 C4S72 021602 SBr 16 G
0240 C4060 IMPLIED MULTIPLY 04073 G7221Ö STB ERRS
6241 «4061 04074 STb OP, I
Ö242 Ö4062 04S65 β/, 075 021606 JHP CR PS
«243» Θ4063 04066 04076 607720 TABl
0244« 64064 ß4067 04077 S74737 Bsi
0245* C4070
«246 04100 003731 STA PS TÄB2
0247 S4101 670737 LDA IMUL
€248 LDB AMUL
C249 041(52 GAZINTA JSM CCl
0250* C4103
«251· 64104 64107 DISIS
0252« 04110
0253 84105 04111 LDB CPS6
6254 B4106 CPB
C25S JMP STRICTLY BINARY OPERATOR
0256 CPB
C257 JHP S4I12
6258 CPB 64113
6259 JMP
0260*
0261 LDA
«262 RZA
9263*
0264 LDA
«265 ADB
0266 JMP
0267»
6268 ADA
0269 JMP
0270»
0271»
0272*
«273 jsm
6274 rza
0275 JMP
0276«
δ277·
«278»
6279
«289
THIS SECTION INlTIaLlZES CERTAIM FLAGS AND POINTERS.
then initializes the remainder
AN IMPLIED MULTIPLY MUST BE INSERTED IN THE STRING
FIRST LOOK AT THE CONTROL # CONTROL & 48
IGNORE CONTROL »63 ERROR ΪΓ CONTROL Ii
THEM LOOK AT G
EF G is ZERO THEN BRANCH TO A ROUTINE DETERMINED BY CN VIA TABLE TABl
OTHERWISE BRANCH VIA TABLE TAB2 TO A SPECIAL ROUTINE
NO IMPLIED STORAGE IF 6AZINTA
THIS INCLUDES BINARY OPERATORS EXCEPT FOR ο AND -> .
309832/0843
β282· plus 071710 PLU SZA SBO O7C310 (ΠΒ210 FCN SZA •♦6
0283· 066305 i>70742 JMP CPS6
0284· «4114 164303 IGNR. JMP OUT, I £5316(56
C2fi5 OPERAND C653B4
(1286· 64)15
J237 Θ4130 0204 02 OPD SZA »♦4
02Ö8· MINUS 071610 MIN SZA SBO 84131 !566(565 SAR 16
«32>39· 114132 STA PS
0290· 64116 Ö10376 CPA DP6 84133 JMP CPl
0291 065317 JHP El
β292· «4117 154134 LDA DP2 ·
0293 U4120 0?0402 LDA DP2 Ö413S JMp CM
«294 031636 STA PS
<J295· «4121 023155 LDA IUMN
C296 Θ4122 024506 LDB AUMN
C297 C4123 066317 JMp CCl
0298 04124
0299 04125 FUNCTION, SUBSCRIPTED VARIABLE
0300
0301· B4126
C332» 04127
0333»
0304
0305
«306·
C307»
0338»
0309
0310
0311
C312
0313»
«314
§315
IT MAr BE A U«. A=0 THEN BINARY OPERATOR IGNORE ROUTINE.SET AtB-REGS ZER0
IT MAY BE A U-. A=0 THEN BINARY OPERATOR U- CANNOT FOLLOW
CHANGE THE REGULAR - TO A U-BY SWAPPING CODES
THE R-REGISTERS ARE TREATED THE SAME AS THE FUNCTIONS
OPERANDS GO DIRECTLY TO THE POLISH OUTPUT STRING (SEE PAGE 5»
INSERT AN IMPLIED- MULTIPLY ACCORDING TO SYNTAX TABLE
309832/0843
■- 219 -
«317»
#3!Β·
6319»
C328
C321
«322
6323·
8324
C325
0326
C32T,
6323
8329
0330
0331
0332
«333
633*·
©335
B3S&
β337·
C33S»
©339·
6346
6341
0343* C344· 6345 S346 6347 .
«349 δ350 * S351*
6352
84136 Β4137 84140
C4141 Β4142 Β4Ι43 S4i44 &4145 «4146 S4147 04150 S4I51 84152
«4153 64154
S41S5 64156
§4157
64160
64161
€4162.
Θ4163
64164
070650 LBR
020403
Β31606
125541
674604
C74113
Ö20402
62S601
S74404
031601 621561 D66317
G20403 G&6C65
072410 RBR 666315
010403 COM
665317
021601
C76002
B70111
G66313
SZA ·*13 Ll)A DPI STA PS
LDB OP,I SOL 4 SBP «*2 LDA DP2 LDB STAT SBL 8 ADB ALPR STA STAT LDA CODE JMP CCl
LOA OPl JMP CH
AGAIN THERE IS THE POSSIBILITY OF IMPLIED MULTIPLY
WHAT IS INSIDE THE BRACKETS?
«4165 065317
JMp CC
CPA DPI JMP El LDA STAT SAR 1
SLA ·*2 JMp CPSl
JMP El
INSERT AN IMPLIED MULTIPLY ACCORDIHG TO SYNTAX TABLE
THE RIGHT BRACKET MUST FOLLOy &N OPERAND
ERROR IF PS =1 ALSO HAVE TO CHECK STAT BIT I MUST BE SET
THE COMMA IS OK
THE COMMA IS ILLEGAL
«354· FLAGS 924372 STF 662422 IF 024376 LR G62422 RET LDB DP10
«355· Β4166 Ö35602 «566313 1)35631 066307 STB G
«357 β'. 167 062420 JSh CHKOl
C 358 C4170 U66313 METURNtSTOP RETURNtSTOPtEND tDISPLAY JMP CPSl
(J359 R4171 Ö4211 S4213
«360 014546 GE10 G4212 64214 024376 PD CPB CNFG
«361· 6417? 666175 035601 JMP «♦2
«362 04173 C66236 PRINT JMP STZG
«363 β4174 Θ55777 ' tFIXEDtFLOATtl DSZ 1777Π
0364 «!'»ns 163764 84215 JSH DRECPtI
0365*
6366
Ö4176 024371 04216 C62420 SFFNT LDB ACLF
9367 04177 160354 066307 JSH 354BtI
036Β «4203 C45541 SPACE IS2 OP
0369 C4201 073742 SAR 16
0370 64202 031602 C4217 STA G
β37ΐ 64233 Ö2Ö371 04220 LDA ACLF
C372 Β4234 160254 JSh SKCDtI
0373 34205 Ö66315 JMp CC
6374 04206
«375 IF· JUMP
0376*
«377» 04267 JSH CHKB
β37β· 04210 JHP CPSl
0379
038(5
0301· LOB DP6
0332· STB STAT
β JUJ*
6334
6335
«386·1 JSH CHKB
6387»
Λ 'S Q DA
JMP CPS4
β job·
6339
«390
8391·
«392· LDB DP6
0393· STB. STAT
β394
0395 NORH tTRACEtf
β396·
β397· JSH CHKOl
0396· JMp CP S4
0399
«400
SET G=IB SO NEXT KEYCODE CAN BE LOOKED AT
CHECK FOR PROPER SYNTAX KEY OKAY
IF SAME KEYCODE AS LAST TIME CHANGE CODE TO CLF ELSE PROCESS PRESENT KEY
SETUP RETURN TO BUILD DISPLAY MOVE POINTER OVER SFG
STORE CLF IN INPUT BUFFER REMOVE STF FROM STACK
SETUP SKEYtCODEtAND CN
IF AND JMP MUST BE FOLLOWED BY AN ALGEBRAIC EXPRESSION
WHEREAS THESE CODES MAY BE COMPLETE IN THEMSELVES
NO COMMAS APPEAR WITH THESE CODES BUT THEY MAY APPEAR ALONE
0402· ENTER B62422 ENT JSh CHKB
Θ403* 020433 LOA DPI
6404» «4221 C31632 STa G
(*405 04222 065384 JMP CPl
0406 64223
6407 Ö4224 014454 GEl cpb CNFE
{5408 Γ-66232 JMP »♦4
<3409* β4225 G14457 cpb CNFY
C4I0 ί>4226 666233 JMP **2
6411 84227 Ü65304 JMP CPl
t-412 iJ4230
6413 04231 O205O7 SNLL LDA NULL
<!414 061335 jsm CP2
0415· 04232 02(5403 LDA DPI
0416 64233 D61305 JSM CP2
C417 04234 07ί!742 STZG SAR 16
0418 04235 (J31632 STA G
0419 C4236 ß&6ß7l JMP CMPLR
«420 C4237
0421 Ü4240
C422
ENTER DOES A LITERAL TRANSFER OF CHARACTERS TO THE STRING AREA UNTIL THE END OF THE STATEMENT
LOOK ODT FOR EOS OR EOL WHICH SIGNALS THE END OF
THE STATEMENT . ALLOW EOL
KEEP GOING
A NULL CHARACTER AT THE END SIGNALS THE REVERSE COMPILER SIGNALS END OF ENTER STMT
TO DO A LITERAL TRANSLITERATION BACK TO ALGEBRAIC FORM
3 09832/0843
0424· ENO-OF-LINE 062254 EOL JSH EOS
0425·
0426· 04241 12C535 LDA TOPS,I
0427 072G53 SAP •♦1»S
042β· C4242 132535 sta TOPStI
«429 C 424 3 025545 LDB PSP ■
0430 C4244 074133 SBP •♦2,C
0431 C4245 074070 SIB ••1
0432 04246 Ö35545 STb PSP
0433 β 4 247 O2C405 LOA DMl
0434 C4253 131545 STA PSP, I
0435 C4251 665362 JMP EXIT
6436 04252
0437 Ö4253
8438
C439· t 01C401 EOS CPA DP3
0440· 866272 JMP EO
0441· C4254
0442 04255 010377 DPS
0443 066272 JMP EO
0444· 04256
fl445 04257 R7O104 SAL 14
0446 073110 SZA •♦2
0447« 04263 U05317 JMP El
0448 C4261
0449 &4H62 C62315 jsh CC
5';5ß (i2160l LDA STAT
0451* 04263 Ο7Π251 SLA «♦5
0452 C4264 (520505 LDA AZRG
0453 04265 C61305 JSH CP2
0454 (*4?66 'J20464 LDA AGNZ
0455 04267 061305 JSH CP 2
0456 C4270
G457 C4271 061304 EO JSM CPl
f)45ß
0459» 04272 02C401 CR LOa DP3
046ß 025563 LDB TSW
0461· C4273 014377 CPB DP5
6462 S4274 O2fl377 LDA DPS
0463 34275 031636 STA PS
6464 C4276 G20'<03 LDA DPI
B465 B4277 C31601 STa STAT
0466 043?ö 079742 SAR 16
B467 C43iU 031632 sta G
3460 C4302 065362 JMP EXIT
Ϊ.469 643»3
3470 04304
J471
1472«
SAME AS EOS IN MANY MAYS
SET THE SIGM BIT AT THE START OF THE POLISH OUTPUT
MAKE SURE THAT PSP POINTS TO THE BEGINNING OF A LINE
BOUNDARY FOR COHPILER OUTPUT AREA OF THE POLISH STRING
DOES EOS BEGIN THE LINE? YES
NECESSARY BECAUSE ENTER IS IMITAL PS=S
IS THE LlHE COMPLETE AS IT STANDS? NO, ERROR
IS IHPLIEO STORAGE ALLOWEO? INSERT IMPLIED STORAGE USING THE CP2 ENTRY FIRST A Z AND THEN'A GAZINTA NOW STORE THE ENDING RESET INTERNAL FLAGS AND THIS STATEMENT IS DONE
THIS SECTION IS ALSO USED BY THE COMPILER SETUP SEQUENCE
(SEE LINES 228-238)
Requirements on the format of the polish string are !474· further described in other listings
(476· THE HIGHLIGHTS ARE:
(477·
1478» 1) THE LIMITS OF THE PROGRAM AREA ARE BOUNOED BY HACHINE
»479· WORDS CONTAINING -1 309832/0843
i 2) EACH LINE BEGINS WITH A MACHINE HORD WITH THE SIGN (1482· BIT SET till'· 3) THE LAST STATEMENT IN THE MAIN PROGRAM IS END-EOL
309832/0
■-' 224 -
0487· STACK ROUTINE CPS6 Vo t; DP6
0488· • ♦6
0489 «4305 024376 CPS'4 LDB DP4
C490 G4306 066314 JMp »♦4
0491 G4307 (124400 CPS2 LDB DP2
C492 C4310 066314 JMP «♦2
0493 C4311 024402 CPSl LOB DPI
0494 G4312 t)66314 JMp PS
ß495 64313 024403 LDB
0496 04314 035606 CC ST8 CODE
0497· SKEY
0498 64315 021561 LDa
0499 04316 025544 CCl LOB THIS
0500» Tl
0501 C4317 031716 STa
C502 C4320 035717 CCB STB DP15
0503» OP,I
«504 04321 Ö53365 AND 12
C5555 04322 125541 LOB
6506 C4323 G74542 SBR A
6507 ft 4324 074056 CMB OP,I
O50B 04325 07R037 ADB f!H
0509 G4326 121541 LDA «*9
0510 C4327 050345 AND
0511 C4330 974453 SBp ALPR
C512· E3
ß513 04331 010503 CPA CP2
C514 04332 066337 JMP OP
0515 C4333 061305 JSM THIS
0516 »4334 045541 ISZ CCB
0517 G4335 021716 LDA
C518 04336 Ü6J6321 E3 JMP DP3
«519* BAD
0520 04337 024401 LDB
0521 S4340 C65351 JMP THIS
6522* IRPR
C523 04 341 {525716 LDB WRBK
6524 04342 014056 CPB THIS
0525 C4343 066360 JMp 4
0527 54344 P21716 LOA 12
e528 04345 070142 SAR Tl
0529 04346 070204 STSK SAL OP
6530 C4 347 £41717 ior OP, I
0531 04 350 655541 DSZ OP
C532 C 4 351 131541 STa
6533 0435? 021541 LOA OPLM
0534 04353 370376 TCA **?.
0535 P4354 C30536 AOA EXIT
0536 . C4355 Ö7flll3 SAP E9A
0537 C4356 065362 JMP
C538 04357 065375 WRBK JMp ALPR
C539· •♦3
0540 C4360 010503 CPA
0541 04361 066364 JMP
(Stapelspeicher-Programm)
riRST RESET PS PROPERLY
with these initial entry points
SET IT TO It 2» OR h
GET THE INTERNAL AND EXTERNAL FORMS OF THE CODE
AND TEMPORARILY SAVE THEM FOR LATER USE
COMPARE RELATIVE PRIORITIES BY SUBTRACTING ONE FROM THE OTHER
ALSO REMEMBER WHAT IS ON TOP OF THE STACK RIGHT NOW
UNSTACK A CHARACTtR SINCE NEW PRIORITY IS NOT HIGHER THAN TOP OF STACK
LOOP BACK TO REPEAT THE TEST PAREN ERROR — EXTRA <
IS THIS A >?
YES
ADD NEW CHARACTER TO STACK
FIRST DECREMENT THF. POINTER THEN STASH THE CHARACTER
next Check for stack overflow
OPLM-OP<0 OR BAD
IT WAS A )
309832 /Ό843
0542 «4362 024400 Ε4 LD8 DP4
β543 34363 GG5351 JMp BAD
0544 G4364 121541 LDA OPtI
©545 64365 G7fl604 SAL 4
0546 €4366 070542 SAR 12
C547 G4367 031601 STA STAT
ß548 04370 G45541 ISZ OP
C549 S4371 065362 JMP EXIT
PAREN FP-ROR — EXTRA )
0551 64372 600000 NOP 0552* 6553«
0554* PRIORITY TABLE FOR ST/yCK ROUTINE
0555*
6556« STACK COMPARE
C557* SYMBOL PRIORITY PRIORITY RESERVED FOR CHECKSUM HORD
Ö560*
C562* 0563* 0564» 0565» ß566» fi567* «568« 6569» 0570» 0571» 6572« 6573» 6574* fi575» C576» C577» C578* C579O 0560* 0581· 0582* 8583*
OR
AND
NOT RELATIONAL
♦ «
IMP» + FCN PROCEDURE
U 1 2 3 4 5 6 7 8 8
10
11
12
13
10
11
13
see page 5 for a further discussion
important locations:
skey -- contains current keycode in ascii form code ~ contains current keycode in internal form
309832/08U
5585· 0586» 0587· 0588 0589 6590 C591 ©592 C593 «594 0595 Ö596 C597 β59β 0599 0600· C601» €•602·
6T0/6SB
0604 C635 0606 0607· 6608· 0609· «610 0611 β612 0613 0614 C615· 0616« Ö617· G618 0619 0620 C621 0622 Ö623 fl624» 0625» 0626» C627» «628·
(34373 H4374 C 4 C4376 C4377 04400 β4401 04402 Ö44Ö3 «4404 04405 64406
062422 GTO Ö20376 £531632 C61304 025545 Ö74133 'S74070 070742 074557 074070 035545 065362
G=9 GO ff
64407 ei4366 GE9 04410 065334 C4411 014367 R4412 065334
G=O GO END
G 4413 614454 GE8 C4414 1566232
04415 014457
04416 Γ66232 «4417 065317
BEGINS CHECK
JSM CHKB LOA DP6 STA G JSm CPl LDB PSP SBp »*2,C
sia ·*ι
SAR STA B,I SlB »*1 STB PSP JMp EXIT
CPB CNFD JHP CPl CPB CNF2 JMP CPl
CPB CNFE JHP SNLL CPB CNFY JMP SNLL JMP El
04420 010377 CHKBl CPA DPS 04421 C65274 64422 ClL'401 CHKB C4423 065274 84424 055777 04425 C65317
JKP DISIS CPA DP3 JMP DISIS DSZ RSTAK JMP El GTO ANR GSB MUST BEGIN THE STATEMENT
THEIR SYNTAX IS IDENTICAL
ADJUST PSP TO BEGIN A MACHINE WORD
LEAVE Λ BLANK WORD FOR THE FAST-ACCESS AODRESS
GENERAL PROCEDURE!
FIND OUT EXACTLY WHAT KINO OF GTO OR GSB THIS IS BY LOOKING AT THE FIRST CHARACTER
TO BE TERMINATED BY A NULL CHARACTER SO THAT TKE REVERSE COMPILFP CAN SKIP OVER THE LITERAL INFORMATION
ALLOWS CODE TO BE USED FOR ENTER STMTS CODE ALLOWED IF IT BEGINS A STMT
IF THERE IS AN ERROR, THE JSM TO THIS SECTION MUST BE CHUCKED
0630· β631· C632·
the fast-access woi?ds are set by the gto/gsb routines in the course of normal execution
hencc each gto/gsb is executed slowly once and only once
The fast-access words are reset whenever the program could be modified
309832/0843
C634» Ö63S« 0636« «637 0638 Θ639 β 640 0641 0642 G643 0644» 6645 C&46 «647 6648 0649 «650 6651 6652* f,653 6654 «655 0656 C657» C658* G659·
C661 Ö662 6663 G664 C66S β666 C667 6668 6669 6670* 0671« 0672« C673O C674°
QUOTE
04426 910401 OUO «4427 C66444 64438 010463 B4431 066435 84432 61ο4«8
04433 C66435
04434 G65317
Ϊ54435 C21545 CHQ C4436 07B152 04437 623510 64440 C-31544 C4441 0216S1 ß4442 Ö73042 04443 071451
84444 O2P4S0 ROU C4445 £31682 64446 061274 «4447 Ö653S4
G=5 END QUOTE
Ö4450 076742 Gc5
64451 Ü31602
64452 Ö316S6 G4453 514451 G4454 C66071 04455 S14454 64456 C66071 C4457 014457 64460 066S71 04461 065317
S676* 0677* C678* C679« C68Ö» 6681» C682«
CPA DP3 JMP ROU CPA DPI JMP CHQ CPA DP4 JHP CHQ ' JHP El
LDA PSP SAM **3 LDA SQT STft SKEY LDA STAT SAR SLA »-7
LOA DP4 STa JSH DISIS JHP CPl
SAR STA G STA PS CPB CNFC JKP CHPLR CPB CNFE JHP CMPLR CPB CNFY JHP CMPLR JHP El DOES THE " BEGIN A STATEMENT?
yes, it is ok
otherwise check against the syntax table
cpa has the wrong sense
IS CHARACTER TO 8E STORED IN LEFT-HALF? YES.MAKE SKEY SPECIAL "
HAVE TO CHECK STAT
THE QUOTE IS DEFINITELY OK SO SET G TO OO A LITERAL TRANSFER THERE IS K1O IMPLIED STORAGE OF A QUOTE STRING
AT THE CLOSING " RESET G ·
THE STRING MUST BE FOLLOWED BY A COMMA OR THE END OF THE STATEMENT OR LINE
<36B4« 0685·
there are two main uses for quotes:
ij as a label for a line
2) as alphameric information for an output routine such as print oh display
λ larfl for a line is "interpreted·· by building the alphameric cooes in the run-time stack
this is a haste of time» but otherwise does no harm
the gto λνο gs8 routines scan the beginning of each line in search of a label» when necessary for alpha gto or gsb
309832/0843
«687·
β668·
numeric (Ziffern) 072150 NUM RZA 025543 LOB •♦3
«689» C234fl2 LDA U14366 GE2 CFB DP2
©690 «4462 066065 JMP D66521 JMP CM
C691 C4463 023724 LDA 014367 CPB ADPS
«692 «4464 170P30 CLR 066521 JHP
C693 64465 0234(32 LOA 014365 CPB 0P2
0694 C4466 G316C2 STA G66524 JMP C
(J695 §4467 O2C511 LDa G14364 CPß ALPl
0696 04470 061305 JSm U66531 JMP CP2
«697 «4471
6698 64472 6=2 ANALYZE NUMERIC CHA C216J3 LDA RACT
Ö699· 372110 SZA
«700· 04473 066236 JMP CN
0701· 64474 CNFO
C702 04475 021607 LDA CO
8703 04476 070056 . CMA CNFZ
©70ί» C4477 651611 AND CO
€705 C4500 070310 SZA CNFP
C7B6 84501 045657 ISZ CDP
fl707 64502 014374 CPB CNFX
C708 Ö4503 C65304 JMp CE
C709 014375 CPß
C710 245C4 (365362 JMP SD
0711» C45S5 065317 JMp *»2
«712 Ö4506 STZG
€713 020403 CO LDA
«714 04507 031610 STA. DP
0715* 84510 065334 JMp
«716 G4511 ES
C717 04512 021607 COP LDA •♦6
0716 64513 0'-.16Il I OR DP
β719 C4514 C73510 rza CNFS
€720, G4515 045607 ISZ CPl
0721 04516 Ö65334 JMP CNFA
C722 64517 EXIT
0723 04520 021610 CE LDA El
«724 «70056 CMA
«725 G4S21 051607 ANO DPI
«726* 04522 C41611 IOr SD
6727 04523 073150 R2A CPl
«728
0729 04524 DP
9730» C4525 ES
0731 C4526 e-6
0732 «4527 DP
0733 «453(1 CPl
«734·
«735
«736 «4531 SD
«737· 84532
C738 «4533 OP
• 739 04534 ES
«740 «4S3S •-13
«741
«742
CLEAR THE WORK AREAS IN PREPARATION FOR CHECKING
STORE AW ALPHA CHARACTER TO SIGNAL THE BEGINNING OF THIS NUMBER
OOES IT START WITH A DIGIT OR DEC? FIND OUT BY LOOKING AT THE CONTROL NUMBER
OR DOES IT START WITH AN EEX?
IT WAS NOfs'E OF THESE» SO IT MUST BE THE END OF TlC NUMRER STRING OR THE »OR - EXPONENT SIGNS
WRAP IT UP
WERE THERE ANY MANTISSA DIGITS? NO, JUST AN ISOLATED DEC
STORE THE - EXPONENT SIGN SCRAP THE ♦ EXPONENT SIGN
INDICATE AT LEAST ONE MANTISSA DIGIT WAS ENTEREO. THEN STORE THAT DIGIT
CHECK FOR MORE THAN ONE DEC IF ONLY ONE DEC» STORE IT PROCESS THE EXPONENT SPECIFICATION ILLEGAL EXPONENT SPECIFICATION
309832/0843
0743· 0744 0745 0746 C747 0748 0749 3750 ö751 0752 C753» 0754* <J75S· 0756« 0757« 0758* 0759« 0760ο 0761« 0762» 0763« 0764« §765» 0766«»
04536 64537 64540 C 4 04542 04543 C 4544
045611 C70742 031607 025610 031618 076150 020594
C4545 061305 04546 Ö65304
ISZ ES
SAR 16
STA OP
LOB so
STA
D 7 η
SD
KiQ
LOA
**3
AONE
JSM CP2
JHP CPl
DOES THE EXPONENT SPECIFICATION STAND ALONE OR WEFiE THERE MANTISSA DIGITS? IT STANDS ALONE
the numeric routine does no conversion to internal format
ITS MAIN FUNCTIONS
1) CHECK FOR PROPEN NUMBER SYNTAX
2) CHANGE ... EEX TO ... 1 EEX
EXPONENT OVERFLOW/UNDERFLOW IS CHECKED AT RUN TIME
SINCE ADJACENT NUMBERS MAY APPEAR IN THE REVERSE POLISH OUTPUT STRING, A SPECIAL CHARACTER (ALPHA CHARACTER) IS USED TO SEPARATE NUMBERS
309832/0843
6769* 0776» 0772« 0772« 0773' 0774" 0775* £776* 0777» 077ß» 0779* 67C0«
07B3* 0784»
interpreter begins here
interprets the polish notation produced by the compiler
ThE INTERPRETER CONSISTS OF a CONTROL ROUTINE. DESIGNED to fetch codes from the program and route control to the appropriate run-tihe routine
and the run-tihe routines themselves
sohe op* the run-time routines are the math routines which are in a separate listing
The individual run-τικγ routines are numerous rut straightforward
ThE INTERPRETER MAINTAINS A STACK TO HANAGE OPERAND ADDRESSES AND TEMPORARY RESULTS :
0707« 07ßß» 0789* C790« 0791» 079?»
079Ί» 0795« 6796* 0797* 0790» Ö799» ÖÖO0* 0801» 0802» 0803«
3005
0807« O80C« ößCl9» 0810» 0811»
C813« 68U»
TP TEMPORARY RESULT POINTER TEMPORARY RESULTS ARE IN LOW-CORE ENO ADDRESSES ARE IN HIGH-CORE END API TOP OF ADDRESS STACK AP2 CURRENT RETURN ADDRESS BOTTOH CONTAINS A -1
• itoct«
309332/08Λ3
; .· - 231 -
0816* API POINTS TO THE CURRENTLY VALID TOP ADDRESS
0818· THE API SIGN BIT SIGNIFIES!
682β· IF CLEAR - THE ADDRESS IS A PERMANENT REGISTER
0822· IF SET - THE ADDRESS IS A TEMPORARY RESULT IN
0823· THE UPPER STACK
6827* AP2 POINTS TO LINK INFORMATION FOR THE LAST-EXECUTED 6828» GSB
0830· THE ENTIRE SET OF LINK WORDS IS STORED IN A 6831* CHAINED LIST TERMINATED BY THE -1 AT THE BOTTOM OF 0832* THE STACK
6835· v
€836* WHEN A GSB IS EXECUTED A REMINDER FLAG (GTS) IS SET
0838* THEN AT THE END OF THE LINE THE RETURN INFORMATION β839· IS ACTUALLY STORED
es4i* this is done mainly ,because a gto could cancel a
0842* PREVIOUS GSB
§844* (CONSIDER ALTERNATING IF AND GTO OR GSB STATEMENTS)
©848» THE FOLLOWING KEYCODES ARE EXECUTED IN ROUTINES
0849» EXTERNAL TO THE INTERPRETERS
0851« ALL MATH
0852» ENTER
6853* STOP
6854* NORMAL
6855· TRACE
6856° FlXEO
©857· FLOAT
«858· ■ SPACE
β859· PRINT
0866» DISPLAY
Θ861* LOAD
0862* RECORD
6863· END
S864* ALL OPTION BLOCK CODES
309832/0343
«666· INTERPRETER SETUP S21542 INTRP (MAIN JSm ENTRY) IMAtI
«867· CAp/,07 ADA •♦3tC
«668· G4547 631614 LDA LDA ENDS
C869 «4550 031615 ADA EXA DM3 BtI
«870 «4551 C3P401 STA JMP TPP • ♦4
«871 C4552 031557 ADA BSTK BtI
«872 «4553 ß2f!405 ADA DP3 7
«873 64554 131557 STA AP2 " •♦ltS
«874 S 4555 170402 LOA DMl
0875 «4556 0356)35 XRH STA ΛΡ2 ti IMAtI
«876 «4557 RET RH
«877 «4560 STB IMA SKEY
C878 TADD
«879· I 070742 XRI AtI
«880· 031604 code
«881» «4561 031702 SAR 16 10
«882 • 4562 K25614 XR STA NMA CN
«683 «4563 035551 STA GTS
«884 C4564 025557 LDB TPP
«885 «4565 035556 STb TP
«β86 «4566 LDB AP2
0887 «4567 EXECUTE STB API
«888
«889· GO TO C62575 : routine
«890» 033701
«891· €4570 O7S51.7 XJ SXJ
0092 64571 07Pßl6 TA03
«893 6457? 066570 A,I
#894 S4573
«895 «4574 JP NEXT XJ
0696
<»897· PICK < 125605 CODE (SUBROUTINE)
«898» 074173
C899· 64575 SXJ LDB
«96*0 «4576 074517 SBp
«901 076230
«902· «4577 074517 LDA
«903 64600 (370382 RIB
«904 04601 076053 LDA
0906 C4602 SAr
0907 C4603 1356S5 SBP"
«908 C5f>3't5
09Β9· 64604 C315'.4 STB
0910 04605 t?0fl377 ANO
C911 04606 C70517 STA
091? 04607 031561 ADA
0913 046 IC 070442 LDA
«914 04611 931540 STA
0915 0461? 170402 SAR
C916 04613 STA
«917 134614 RET
«918
FIRST SE^ UP THE REOWRED POINTERS FOR THE RUN-TIME STACK
SAVE THE STARTING PROGRAM ADDRESS
RESET THINGS IN PREPARATION FOR A NEW LINE
RESET THINGS IN PREPARATION FOR A NEW STATEMENT
LOOK UP THE NEXT CnOE TO RE EXECUTED AND BRANCH TO AN EXECUTION ROUTINE VIA TABLE TAB3
THIS SUB&OUTINE GETS THE NEXT CODE FROM THE MEMORY ARFA DESIGNATED BY IMA AND EXTRACTS PERTINENT FIELDS OF INFORMATION FOR LATER USE
PERTINENT INFORMATION! SETUP SKEYiCODEtANO CN
309832/0843
•8920» SETUPS 125556 355556 XBSET LOB API,I
0921» 345556 021561 ISZ API
0922» «4615 074473 050345 * SBP «♦9,C
0923 C4616 U80442
3924 04617 035553 131556 stb 0PND2
0925 C21551 lda TP
C926* 04620 125556 025556 lob APIiI
C927 (!'«621 Ö74673 Θ74056 SBp »+13,C
«928 04622 005551
«929 · Ö4623 000410 004374 ADA DM4
G930 (531551 07A113 STA TP
3931» 64624 035555 066570 stb RESLT
«932 £14625 066643 JMP XU2
<3933 64626 024373
«934 64627 035553 066705 stb 0PND2
0935
<5936» Ö4630 125556 XUSET LDB API.I
0937 074173 SBp «♦3tC
»3938» C4631
0939 64632 035555 stb RESLT
0940 066643 JKP »♦7
0941» C4633
0942 04634 521551 LDA TP
Ö943 CQ04SS ADA DP4
0944* «4635 031551 STA TP
6945 04636 031555 sta RESLT
0946 04637 Ö72053 SAp **l9S
0947 C4640 131556 STA APl9I
0948 S4641
«949 G4642 035554 XU2 STB OPNDl
6950 025540 LDB CN
6951« Ö4643 034514 ADB ARITH
0952 64644- 074737 JHP Bo!
0953 04645
0954 04646 OPERAND
0955
3956« C4647 XOPD DS2 API
6957» 04650 LDA CODE
695$· 64651 AND RH
0959 C4652 ADA ADOP
«96* 04653 STA APIfI
096*
0962 04654 OVLP LDB API
Ö963 £14655 CMB
0964· 04656 ADB TP
096S C4657 ADB DPS
«966 G4660 SBP **2
0967 04661 JHP XJ
«968
«969 C4662 E9B LDB 0P9
Ö970 B4663 JMP EXER
0971»
0972
«973
THIS ROUTINE UPDATES THE STACK POINTERS IN PREPARATION FOR A BINARY ARITHMETIC OPERATION
UNARY OPERATOR
THIS ROUTINE UPDATES THE STACK POINTERS IF REQUIRED FOR A UNARY ARITHMETIC OPERATION
THIS ROUTINE BRINGS AN OPERAND TO THE RUN-TIME STACK
MAKE SURE NO OVERLAP OCCURS BETWEEN THE TWO STACKS
ALL OKt SO GET NEXT CODE MEMORY OVERFLOW
30 983 2 /08h3
0975· 6976· GAZINTA 6977· β978 «4664 125556 XGAZ LOB APItI
fl979 (!4665 074153 , SBp »♦! Β4666 024376 Ε6 LOB DP6 C4667 066705 JMp EXER
C981
0983 0984 0985 0906 0987 0988* 0989 0990 β991 6992 0993 0994» «1995· 0996· 0997 6998 0999 jause 1801 1002 1033»
04670 G35550 STß .STPT
04671 045556 ISZ API «Η672 121556 XGAZl LDA APItI G4673 O7C073 ■ SAP **ltC B4674 170004 XFR
1007 1008 1009 1010 1011 1012 1013 1014· 1015 1016
Ö4675 P217C5 C4676 070151 64677 160310 S47«!«l 16Π250 Θ4701 S66570
R-REGISTJTR
LOA .WMOO
JSk .FHTZtI JSh .PRTItI JMP XJ
04702 C51321 SUBSC JSH FIXPT C4703 074213 SBp ·*4 04704 C24377 £5 LOB 0P5
Ö4705 061351 EXER C4766 066570
64707 074704 ß4710 004401
04711 074056
04712 005712
04713 021542 C4714 R01615 04715 070056 C4716 074017 C4717 071252
C4720 135556 04721 0665/0
JSK BAD JHP XJ
SBL ADB DP3 CHB ADB RR
LDA ENDS AOA BSTK CMA ADA B SAM »-I1
STb API ti XJ THIS ROUTIUE STORES AN ARITHMETIC VALUE IN A PERMANENT REGISTER (ONLY» ILLEGAL STORE
RECORO THE STORE FOR TRACE OR DISPLAY PURPOSES
OO THE TRANSFER IS TRACE REQUIRED? YES
GET ADDRESS OF AN R-REGISTER BY FIRST CONVERTING TO INTEGER SUBSCRIPT OUT OF RANGE
ERROR DURING EXECUTION NOW CALCULATE AN ACTUAL CORE ADDRESS CHECK MEMORY PROTECT BOUMDARY SKIP IF OUT OF RANGE FINALLY PLACE ADDRESS IN STACK
309 832/0843
1019* OUOTE C24485 XQUO LDB DMl
1020· C356I3 STb N
1021 •4722 C55556 DSZ APl
1022 - i4723 G21551 LDA TP
1023 §4724 (ΪΡ3400 AOA DP4 -
1024 04725 031612 STA M
1025 C4726 040262 IOR ALPH
1026 €472-7 131556 STA APItI
1027 84730 062575 XGE4 JSM SXJ
1028 Ö4731 01C452 CPA CNFQ
iß30 04732 C66751 JMP XENQ
1®31 §4733
1032 64734 655613 DSz N
1©33* 621544 LDA SKEY
1034 84735 025612 LDB M
1035 «S4736 Ö74233 SBP •♦4»C
1036 64737 074617 IOR B, I
1037 £4740 C74557 STA B»I
1638 64741 G76230 RlB **4
J 039 Ö4742 670404 SAL 8
1040 64743 G74557 STA B*I
1041 Ö4744 C76C53 SBP «♦ItS
1042 Β4745 035612 STB H
1043 64746 C'66732 JMP XGE4
1044 S4747
1645 04750 &25612 XENQ LDB H
1046* C74273 SBp **StC
1047 64751 074517 LDA BtI
1048 04752 OAS360 IOR ABLK
1049 04753 074557 STA BrI
1050 64754 674070 SIB »♦1
1051 04755
1052 04756 621613 LDA N
1053* 074557 STA BtI
1054- C4757 004407 ADB DM3
1655 84760 C35551 STB TP
1056 64761 C66654 JHP OVLP
1057 C4762
105β 34763
THIS ROUTINE PLACES ALPHAMERIC INFORMATION IN THE TEMPORARY STACK FOR USE Br OUTPUT ROUTINES
THE INFORMATION IS PACKED TWO CHARACTERS PER MACHINE WORD
LOOK OUT FOR THE ENDING QUOTE
NO ENDING QUOTE YETt SO PLACE NEXT CHARACTER IN STACK
STACK THE CHARACTERS IN PACKED FORMAT
COUNTER N IS THE CHARACTER COUNT IN 1»S COMPLEMENT FORK
LOOP BACK TO GET NEXT CHARACTER ENDING QUOTE FOUND
PAD THF STRING WITH A BLANK IF REQUIRED TO ELIMINATE GARBAGE
READJUST ALL POINTERS AND GO CHECK FOR OVERLAP
309832/084
1060» SPACE» FIXED» FLOAT LDA FXD
1(561* JMP ·*?.
Ϊ062« «4764 C23305 FIX
1063 €4765 C66767 LDA FLT
1064 STa T2
1065· 04766 C2O304 FLO
1066 B4767 Ö31720 LDB NRSLT
1C67 STß .STPT
1068· 64770 025572 LDB OMl
1069 64771 035550 LDA APl
1270 04772 Ü244C5 CPA AP2
1071 94773 021556 JHP T2»I
1072 <?4774 011557
1073 64775 165720 JSM FIXPT
1074 LDA B
1075· 64776 C61321 SAH o*4
1076 H4777 076117 ADA OM10
1077 65080 O7C?12 SAp •♦2
1078 S5001 088415
1079 85002 070113 JHP T2,I
1080
1061· 05003 165720 LD3 DP2
1082 . JHP BAD
1083· G50E4 C24402 E2
J.t/84 ß5ßß5 055351 LDA OP10
1065 LDB APl
1CG&» 05B06 C20372 SPA CPB AP2
1037 C5O07 025556 JHP SPCtI
1008 C5010 G15557
1089 65011 164473 JSH FIXPT
1090 LDA B
1091· 65012 061321 SAH E2
1092 C5013 074117 SZA • ♦0
1093 05014 071412 ADA DM16
1094 05015 079410 SAP E2
1095 G5G16 Oß0420 SBL 1
1096 05017 071253 LDA B
1097 C5C22 074744 SBL 2
1098 esezi 074117 AD/V O
1099 ti582? C74704 JHP SPCtI
Il CO 65023 074017
llßl 05G24 164 473 RET
lie?
1103· 65025 173402
1104
THESE ROUTINES GET THE PARAMETER FOR FIXED, FLOAT» AND SPACE
THE ACTUAL OPERATION OF THE ROUTINES IS DESCRIBED IN THEIR RESPECTIVE LISTINGS
IN GENFRALt THE PARAMETER IS FETCHED AND CONVERTED TO FIXED-POINT
IF NO PARAMETER IS SUPPLIED» A SUBSTITUTE IS FURNISHED BY DEFAULT
ILLEGAL PARAHETER
309832/0843
1106· IF Ö61321 XIF NONX JSM FIXPT
1107«» 074150 SZß »♦3
1108» C5026 066570 « JMP XJ
1109 C$027
1110 05030 035604 STB NMA ·
1111
1112· Ö5031 121605 LDA IMAfI
1113 07B373 SAp »♦liC
1114* 65032 070070 SIA *+l
1115 G5033 070537 LOB A,I
Π16 C5034 075713 SBP •-2
1117 85035 131605 STA IMA.I
1118 05036 G67047 JMP XEOL
1119 65037
1120 05040
1121
Ϊ122» JUMP 061321 XJMP JSM FIXPT
1123· CJ35613 MOVE STß N
1124» 05041 125605 LDß IHA»I
1125 S5042 C63472 JSM RELG
1126 ß5343 075213 SBP *~12
1127 65344 B65357 JMP BAD+6
1120 C5045
1129 C5046
1130 -
1131» EOL 021705 XEOL LDA .WMOD
1132* G5P512 AND ERMl
1133» 05047 073650 RZA »-3
1134 05050 021732 LDA GTS
1135 C5SS1 073110 SZA »♦2
1136 Ü5352 067164 JMP XGSS
1137 05C53 0216S4 XRR LDA NMA
1138 65054 072210 RZA ««4
Π39 C5055 121605 LDA IMA, I
1140 45056 07Π133 SAP **2tC
1141 05057 07B070 SIA *+l
1142 05060 131605 STA IMAfI
1143 05361
1144 C5062 021705 LDA- .WMOD
1145 072110 RZa «♦2
1146» 05063 G66561 JMP XRI
1147 C5064
1148 C5C65 065373 JMP EXIT*9
1149
1150· C5066 EXECUTION
1151
1152» ABORT 1617.10 JSM XEND»I
1153· 667047 JMP XEOL
1154« 05067
1155 C5070
1156
IF WILL SKIP TO NEXT STATEMENT OR NOT
DEPENDING ON WHETHER ITS PARAMETER IS ZERO OR NONZERO RESPECTIVELY
SKIP TO END OF LINE
JUMP WILL SKIP A VARIABLE NUMBER OF STATEMENTS ACCORDING TO ITS PARAMETER
DID WE SKIP OUT OF RANGE? YES
FIRST DETERMINE IF ANY ERRORS
NEXT DETERMINE IF A GSB MUST BE COMPLETED
NEXT DETERMINE.IF A PREVIOUS GTO OR GSB CAUSED A TRANSFER INSURE THAT NEXT LINE IS BEGUN PROPERLY
NEXT DETERMINE-IF TRACE MODE IS SET NO TRACE SO CONTINUE
PROGRAM HAS NO ENOI
309832/0843
1158·
1159»
PRINT (Drucken) 623725 XPRNT LDA 021557 GMORE LDA .PRTl
1160· JMp 031612 STA •♦2
1161 «5071 020253 031611 011556 CPA
1)62 05072 ß67074 C67110 JMP
1163·
1164· DISPLAY XDISP LDA 026405 GTR LDA ADSP
1165· 031550 STA
1166 05073 STA 055612 DSZ ES
1167· 121612 LDA
1168 Θ5074 GET MIXEO PARAMETERS 031550 STa
1169· C73744 SAL
1170· 65075 C76732 SAH AP2
1171· 05076 160310 JSM M
1172 05077 161611 JSh APl
1173 05100 G21705 LDA GTR
1174 07(5313 SAP
1175 05101 021563 LDA OMl
1176· 05102 CC0410 ADA .STPT
1177 05103 072250 RZA H
1178 051R4 16e525 JSh M, I
1179 05105 C70152 GALPH SAH .STPT
1180 C51B6 Γ21612 LOA 1
1101 G5107 011556 CPA GALPHfC
1182 05)10 066570 JMP .FMT2tI
1103 35111 C67103 JMP ES,I
1185* 05112 .WMOD
1186 85113 . »♦6
1187 G5114 070092 SAR TSW
ηββ (15115 P31717 STA DM4 ■
1189 > 65116 C23554 LDA •♦5
1190 05117 031720 STA CKSTPfI
1191 05120 160255 JSM •♦3
1192 05121 024516 LOQ M
1193 05122 121717 LDA APl
1194 05123 070252 SAH XJ
1)95 «35124 1317P0 STA GMORE
1196 045717 ISZ
1197 04S720 ISZ
1198· «5125 077570 Rin 1
1199· Ö5126 067110 JMP Tl
1200 05127 .IBUF
1201 05130 T2
1202 05131 L18A,I
1203 C5132 DH8
1204 05133 T).I
1205 flSI34 •♦5
1206 05135 T2.I
1207 45136 Tl
1208 05137 T2
1209 05140 •-5
1210 85141 GTR
1211
1212
enter here for print
enter here for display
save address of print or display
these routines get the actual parameters for print and display
skip if no parameter supplied first determine what type of parameter m points to next parameter save address for later display if - alphameric
NEW KEY ENTERED PROGRAM MODEfPROCESS KEY IF INTERRUPTABLE
- IF STOP KEY
DONE WITH THIS PARAMETER PARAMETER LIST EXHAUSTED?
this routine moves alphameric info to .ibuf
Tl s SOURCE
T2 = DESTINATION CLEAR BUFFER
OO THE TRANSFER
309832/0843
1214· 1215*
display routine (Sichtgerät-Programm)
1216»
1217 65142 620516 ROSPY LDA DM8 1218 1219 1220 1221 1222 1223 1224
<25143 Ö316B7 S5144 S2C237 RDSl-
65145 031721
65146 168206
35147 65150 65151
645697 C67144 17B402
STA DP LDA .DBUF
.L
.DSPIiI
DP
RDSl THIS ROUTINE CALLS THE DISPLAY ROUTINE (ALSO WATCH FOR NEH KEY)
STA JSM ISZ JHP RET
NO SO STAY IN DISPLAY LOOP
3098 32/084
1226* RETURN 125557 020333 XRET LDB AP2,1
1227· 014405 025563 CPB DMi
1228» Ρ5152 067162 014400 JMP E7
1229 C5153 0455S7 12)625 ISZ AP2
1230 C51S4 121557 07Ö133 LOA ΛΡ2.Ι
1231 C5155 0316C4 07(1070 SlA HMA
1232 0515t. 035557 SlB AP2
1233 «5157 066570 025556 JHP XJ
123* 05160 G344r,5
1235 05161 C24375 a/4557 E7 LDB DP7
1236 0667öS G344fl5 JHP EXER
1237» 05162 021557
123Θ 05163 GSB SETUP 035556
1239 935557
1240» 05164 131557 XGSS LDä ASTEN
1241· 05165 LOB TSW
1242· C5166 G74056 CPB DP4
1243 05167 C355S1 LDA IMA.Γ
1244 !55170 004400 SAP «♦2tC
1245 Ö5171 C74113 SIA • ♦1
1246 C67055
1247 C5172 B66662 XGSS2 LDB APl
1248 C5173 ΛΟβ DHi
1249· 05174 STA B.l
1250 051 75 ADB DMl
125Ϊ ß5176 LDA AP2
1252 C5177 XGSSl STB APl
1253 G520P, STB AP2
1254 05201 STa AP2tI
1255 ·■ ■
1256 05202 CMB
1257 05203 ADB TP
125Β· G52R4 AOB DP4
1259 55205 SBP »♦2
1260 C52C6 JHP XRR
1261 65207 JMP E9B
1262
1263
1264
THIS ROUTINE OBTAINS THE RETURN ADDRESS FROM THE RUN-TIME STACK
THE R.A.
RET HAS NO MATCHING GSB
THIS ROUTINE STASHES THE RETURN ADDRESS INTO THE RUN-TIME STACK
THIS IS DONE AFTER EOL IS ENCOUNTERED
A "FAKE" RETURN ADORESS IS SUPPLIED IF GSB WAS EXECUTED FROM KEYBOARD
CHECK FOR OVERLAP
ALL OK
1266* GOTO S61253 XGSB JSH XfJSTP
1267« 02i54g3 LDA DPI
1268» 0521(1 067214 JMP »♦2
1269 £■3211 073742 XGTO SAR 16
1270 C5212 031702 STA GTS
1271 C5213 12ΚΌ5 LDA IMA, Ϊ
1272 05214 070133 SAP **2>C
1273 05215 870370 SIA **1
1274 05216 025567 . LOB MPH
1275 C5217 076550 RZB *m
1276 G5220 07B537 LDB A,I
1277 05221 074450 SZB **9
1278 G5222 035604 STb NHA
1279 C5223 035546 STB CMA
1280 05224 CJ7f!G70 SIA *>*1
1281 .05225 131605 STA I HA» I
1282 C5226 062575 JSM SXJ
1283 G5227 010356 CPA CIJFN
1284 CB233 666578 JMP XJ
1205 C'5231 067230 JMP *-3
1206 05232
.1287 05233 031717 STA Tl
1288 07607ß SIA a*l
1289* 0523': !31695 STA I IiA i I
1290 G'5235 062575 JSH SXJ
1291 «5236 Ü74742 SBR 16
1292 S5237 010452 CPA CIJFO
1293 05243 P67313 JMp OGTO
1294 05241 Öl «3351 CPA CUFO
1295 05242 165623 JHp GOTFiI
1296 05243. 035613 STB N
1297 0.5244 «27722 LDB TAB5
1298 - 05245 035720 STB T2
1299 ß5?46 010375 CPA CtJFA
1390 05247 067255 JHP GA
1301 05253 010374 CPA CUFS
1302 65251 G67256 JHP GS
13Β3 05252 067262 JMP XG 4
1304 05553
1305 «5254
1306
ACCORDING TO WHETHER GTO OR GSB
NEXT CHECK FAST-TRANSFER WORD
IF MPH=0 FAST GTO MODE OKAYfELSE NOT
FAST' TRANSFER BEGINS HERE BY UPDATING NMA» CMA» S. IMA
SKIP ALONG TO EHD^OF STATEMENT FOUND IT
SLOW GTO BEGINS-HERE
LOOK AT NEXT CODE'TO DETERMINE TYPE OF GTO OR GSB
IT IS ALPHAMERIC IT IS TO AN OPTION BLOCK IT IS NUMERIC IS IT RELATIVE OR ABSOLUTE?
30 9832/0843
1308· «5255 1545720 GA ISZ T2
1309 C52S6 045720 GS ISZ T2
1310
1311· «5257 G6?575 XGE5 JSM SXJ
131? eS260 IH 0356 CPA CNFN
»313 C5261 165720 JHP Τ2.Ϊ
13H
1315» 05262 025613 XG4 LGB N
1316 «5263 0747Λ4 SfJL 1
1317 05264 035612 STB H
1318 PS265 Ü747C4 SBL 2
1319 Θ5266 035612 AÜB M
1320 C5267 021561 LDA CODE
1321 PS270 C50365 AND OPlS
1322 C5271 070337 AOB A
1323 S5272 •035613 STQ N
132'» 155273 067257 JMp XGE5
1325
IT IS RELATIVE
EXTRACT THE OIGITS
CONVERT TO A DISPLACEMENT BY MULTIPLYING PREVIOUS ANSWER RY 10 AND ADDING IN NEXT DIGIT O^ STATEMENT #
SAVE NFW DISPLACEMENT
309832/0843
1327· ABSOLUTE GOTO R63526 C21613 125605 GABS JSM GTOP
1328· C63472 070076 063472 XGl . JSM RELG
1329* «5274 G74212 031613 075512 XG2 SBM ««4
1330 C5275 035546 135717 STB CMA
1331 C5276 (535604 skip forward G67330 STB NHA
1332 65277 135717 STB TIiI
1333 ß5300 C66570 05306 GOTO JMP XJ
1334 C53S1 053S7
1335 (55302 SKIP BACKWARD S5310 G35721
1336 ß5311 G35722
1337* 65303 «5312 GMNS LOA N
1338» 05304 C62575 TCA
1339· 65305 ALPHA 01(3452 STA N
1340 Ö67333
1341 S5313
1342 C5314 021721
1343ο O7S404 GPLS LOB IHAjI
1344» 65315 Ö25722 JSM RELG
1345« :-«5316 074342 SBM GMNS-I
1346 "05317 074217 STB Tl,I
1347 031721 JMP XG2*2
1348 ß532fl 021722
1349 05321 070404
1350 05322 C41544
1351* G5323 031722 QGTO STB Hl'
1352« 05324 C67315 STB H2
1353· C5325
1354 C5326 663526 XGEl JSM SXJ
1355 65327 0634 öl CPA CNFQ
1356« 65330 014435 JMP GQl
1357 Θ5331 066570
1358 B5332 010517 LDA Hl
1359 667342 SAL 8
1360» ß5333 067334 LDB H2
1361 P5334 074073 SBR 8
1362 e5335 035720 IOR B
1363 C5336 STA Hl
1364 05337 LDA H2
1365 85340 SAL- 8
1366 B5341 IOR SKEY
1367 «5342 STA H2
1368 85343 JMP XGEl
1369
1370 GQl jsm GTOP
1371 GQ2 JSM GAS2
1372» CPB DMl
1373 JMP XJ
1374 cpa BQT
1375 JMp •♦2
1376 JMP *-S
1377 GQ4 SBP «♦l»C
1378 STB T2
1379·
1361
1382
FIRST GO TO TOP OF PROGRAM THEN DO A RELATIVE GTO
IT IS A RELATIVE - GTO SO CHANGE SIGN OF DISPLACEMENT
IT IS A RELATIVE ♦ GTO
IT IS AN ALPHAMERIC GTO
BUILD THF. COMPARISON WORD IM Hl AND H2
SEARCH PROGRAM FOR THIS LABEL FIRST FIND ANY LABEL WHATSOEVER
A LABEL HAS BEEN FOUND
1383 05344 674742 SBR 16
1384 β53'»5 035723 ST0 H3
13B5 «5346 035724 STB H4
1386 f5347 0634(50 GQ3 JSM GASl
1387 0535fl ΟΓ0546 CPA QUOTE
1388 05351 £67366 JHP HATCH
1389 05352 031561 STA CODE
1390 #5353 P21723 LDA H3
1391 05354 070404 SAL 8
1392 C5355 Ö25724 LOB H4
1393 65356 074342 SOR 8
1394 05357 074217 I OR B
1395 65360 331723 STA H3
1396 05361 021724 LOA H4
1397 f536? 070404 SAL 8
1398 e5363 041561 IOR CODE
1399 C5364 031724 STA H4
1400 «5365 S67347 JHP G03
1401·
1402 «5366 C21721 MATCH loa Hl
1403 65367 011723 cpa H3
1404 05379 667372 JMp »♦2
1405 05371 C67334 JMP GQ2
1406 C5372 021722 loa H2
1407 e5373 Γ.11724 CPA H4
14 KB P5374 {167376 JHP •♦2
1409 G5375 067334 JMP G02
1410 65376 C25720 LOB T2
1411 P5377 067276 JMP XG2
1412·
1413 05400 025612 GASl LDB H
1414 B5401 074233 GAS2 SBP »♦4»C
1415·
1416 C5402 074517 LOA BtI ·
1*17 65403 050345 AND RH
1418 054C4 076330 RID «♦6
1419·
1420 05405 074517 LOA BtI
1421 054P6 010405 CPA Owl
1422 05407 067524 JMP EO
1423 »5410 C703G2 SAR 7
1424 05411 076053 SBP •♦1»S
1425·
1426 05412 G35612 STB H
1427 05413 170402 RET
extract the label characters the ending quote has been found build the alphameric field in h3 and h4
CHECK AGAINST THE COMPARISON WORO
ONLY THE LAST FOUR CHARACTERS WILL BE SIGNIFICANT (ALLOWS FOR SUFFIX)
ROUTINE TO GET SYMBOLS FROM PROGRAM
THIS ROUTINE IS -SIMILAR TO THE BASIC ROUTINE SXJ
JUMP IF LABEL CANNOT BE FOUND
309832/0843
1429» FROM FLAG JSM BMSK
1430° CPß DP5
1431» Θ5414 063454 STFF JHP EXER
1432 65415 014377
1433 05416 066705 AND B
1434 LDB A
1435« G54I7 P742S7 LDA AP1»I
1436 65420 070137 SAm **7tC
143? G5421 12T556 LDA TP
1439 05422 070372 ADA DP4
1440 «5423 C21551 STA TP
1441 G5424 030400 SAP *+l»S
1442 05425 031551 STA API,I
1443 G5426 672S53 SAp tt+l »C
1444 Ö5427 131556
1445 £5430 ß7ßO73 CLR
1446 S2ß *+4
1447* C5431 170030 SIA *♦!
144B C 5432 074210 LDB BCOl
1449 05433 070079 STb A,I
1450 Ö5434 024431 JHP XJ
1451 f5435 07(1577
1452 ß 54 3 6 066570
1453 LDB DMl
1454» INTO FLAG . JMP •0+2
1455* C 54 37 624405 STFI.
1457 Ö5440 S67442 SBR 16
1458 STB T2
1459* Ö5441 074742 CLFI
1460 85442 635720 JSk BMSK
1461 CPB DP5
1462» 05443 063454 JMP EXER
1463 65444 014377
1464 C 54 45 C667G5 IOR B
1465 CMB
1466* C 5446 074217 ISZ T2
1467 05447 074056 AND B
1468 <Ϊ5450 «45720 STA FLAG
1469 f:5451 074257 JMp XJ
1470 C5452 031430
1471 05453 C66570
1472
THESE ROUTINES RETURN THE VALUE OF A DESIGNATED FLAG
THESE ROUTINES SET THE VALUE OF A DESIGNATED FLAG
309832/0843
1474· BUILD (T JSM en~bi
1475» MASK V1 SBP
1476» β 54 5 4 LDB
1477 C5455 Ö61321 BHSK RET FIXPT
147Ö ß5456 0741 S3 ADD «*3
1479 C 545 7 024377 SGp DP5
148« P546fl 178402
1481 65461 P044?0 CHB DM16
1482 075653 SOL •-3
1483° 0546? LDA
1484 e5463 C74056 IOR
1485 C5464 074544 LDa 5
I486 C5465 023717 EXA FROT
1487 05466 074217 LOA B
1488 05467 024403 RET DPI
1489 65470 G70316
1490 05471 021430 FLAG
1491 170402
ildunß)
BUILD Λ MASK CONTAINING A "ONE"1 IN BIT POSITION N FOR FLAG N
309832/0843
1493*
1494«*
SKIPPING UTILITIES 074173 RELG 3ρrung-Möglichkeiten) DO A RELATIVE GTO φ '■ -
1495»
1496
65472 e67475 SBP »♦3,C
1497 G5473 JMP ♦+2
1498* (504405
1499 05474 074517 AOB DMl GTO OR GSB OUT OF BOUNDS
15Ö0 65475 071713 LOA B,I ·
1501 £5476 01ß4',')5 SAp *-2 THIS ROUTINE FINDS THE TOP OF
15Z2 £5477 C67524 CPA DMl THE PROGRAM
1583 65500 021613 JMp E8
1504- 65501 070450 LDA N
15S5 65502 Λ70513 SZA «♦9
1506 S5503 SAP «♦10
15B7« 004405
1508 05504 074517 ADB DMl
1509 ß5505 071713 LDA B?I
1510 C5506 G104G5 SAP »-2
1511 E55Ö7 G67524 CPA DMl-
1512 05510 045613 JHp EQ
1513 G5511 067504 ISZ N
1514 05512 170402 JMP «-6
1515 G5513 RET
1516» 674517
1517 25514 S7S313 LDA B..I
1518 P5515 C55613 SAP «*6
1519 65516 C67521 OSZ N .
1520 (35517 170432 JMP «♦2
1521 05520 0184-05 RET
1522 ß5521 067524 CPA DMl
1523 05522 077470 JMP E8
1524 C5523 024374 E8 RIB «.-7
1525*
1526
:-
C 5524
065351 LDB DP8
1527
I Con a
65525 025546 GTOP JMp BAD
1529 05526 074073 LDB CHA
1530 C5527 904405 SBP *«ltC
1531 05530 074517 ADB DMl
1532 05531 074070 LDA BtI
1533 C5532 01Θ465 SI3 »♦1
1534 fc<5533 170402 CPA DMl
1535 C-5534 C34406 RET
1536 S 5535 067531 ADB DM2
1537 Ö5536 JMP
303832/0 8-4 3
1539·
1540» BUILD NUMBER
(Ziffern-Bildung)
1542
1543
1544
1545
1546
1547
1548
1549
1550»
1551
1552
1553
1554
1555
1556
1557
1558
1559
1569
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572·
1573
1574
1575
1576
1577
1578
1579
15RO
1581
1582
1583
1584
1585
1586
1587
1588
1589
15-30
1592
1593
1594·
05537 G 554 3 C5541 C5542 05543 65544 P5545 05546
05547 (55550 C 5551 «5552 C5553 C5554 £5555 B5556 B5557
P5561 C556? C5563 05564 C5565 05566 C5567 05570 05571 C5572 05573
C 5574 C5575 05576 C5577 05602 05601 G5602 <!56ß3 C5604 C5605 05606 65607 C56J0 05611 056 12 65613 05614 05615 05616 C5617 G5620
G2045O XNUM
023724
024370 Ö35613 024405 D35612
C62575 910366 067621 Ο1{1367 067641 010365 (567650 010364 067652 021606 025611 074110 07G076 CO 1612 970137 074113 Γ74 034550 P74152 024372 066705
171450 070154 070404 130450 028450 025551 C044P0 035551
XGE2
E10
STNM
055556 025551 076053 135556 925556 074056 C05551 034400 074153 02154 (166571 066662
RECY
LÜA ADR2
CLR
LDA ADPS
CLR
LDB DP12
SlO N
LDB DMl
STB M
JSM SXJ CPA CNFD JMP XD CPA C(IFZ JHp XZ CPA CNFP JMP XOP CPA CNFX JMP XF.E LDA PS LDO ES SZB TCA ADA M LDB A SBP TCB
ADB OM100 SBM **3 LOB DP10 JMP EXER
NRM SES
STA A0R2tT LOA A0R2 LDB TP ADB OP'* STB TP XFR" DSZ API LOB TP SBP **1»S STB APItI LDB API CHB
ADB TP AOB 0P4 SBP »*3 LOa CN JMP XJtI JMP F.98 this routine converts a string of digits to internal format
GET A DIGIT
NUMERIC OVERFLOW
WRAP IT UP
RECYCLE THE CURRENT CODE WITHOUT PICKING UP A NEW ONE
09832/0843
1595 (55621 025607 XD XZ LDB DP
1596 05622 C76150 PZB **3
1597 05623 D45612 ISZ H
1598 C5624 367625 JHP «♦1
1599 C5625 045610 ISZ SD
160Β S5626 (525613 LDO N
1631 05627 G76110 KZB »♦2
1602 C 563 3 567547 JHP XGE2
1603 C5631 ÖO4405 XOP ADB DHl
1604 65632 035613 STB N
1605 G5633 171480 MLS
1626 β 5634 021561 XEE LDA CODE
1607 Ö5635 05β365 AND DP 15
1638 C5636 140520 IOR ADRNtI
1639 G5637 13C520 XGE3 STA ADRN»I
1618 05640 C67547 JHP XGE2
1611«
1612 €5641 025610 LDD SD
1613 fl 5642 9Τ4110 SZQ **2
1614 65643 Ö67621 JHP XD
1615 05644 025637 LDB DP
1616 05645 £.74110 S.70 »♦2
1617 €■5646 Ö55612 DSZ H
1618 C5647 R67S47 JMP XGE2
1619»
1628 65658 Ö45607 ISZ DP
1621 05651 £6704? JKP XGE2
1622« XK
1623 G5652 C74742 SBR 16
1624 S 5653 035610 STB SD
1625»
1626 «5654 C52575 JSM SXJ
1627 65655 010366 CPA CNrD
1620 G5656 Ρ67666 JMP XK
1629 S5657 010367 CPA CNFZ
1638 05663 Ρ67666 JHP XK
1631*
1632 05661 025610 LDS SD
1633 G 5662 Ö74110 SZ3 «♦2
1634 Ρ5663 Ö6756Ö JHP XF
1635«
1636 65664 045611 ISZ ES
1637 65665 067654 JHP' XGE3
1638»
1639 Ρ5666 (545610 ISZ SO
1640 C5667 025606 LD0 PS
1641 ß567O 074744 SBL 1
1642 C567I 035717 STB Tl
1643 C5672 Ρ7/.7-34 SOL 2
1644 CS 567 3 O0S717 ADB TI
1645 C 5674 G21561 LDA CODE
1646 05675 G50365 ANO DP15
1647 C5676 Π70037 ADB A
1648 05677 D356ß6 STB PS
1649 05700 067654 JHP X6E3
309832/0843
THE INTERPRETER USES THIS TABLE
ADDRESS TABLE FOR INTERPRETER ROUTINES
(Adressentafel für interpreter-Programme)
1651· (55701 005702 ΤΛΒ3 DEF •♦1 0 NOT s
165? 1 IMP ·
1653· Θ5702 062615 JSH XOSET 2 K
1654 05701 062615 JSH XBSET 3 S
1655 C5704 r-62615 jsh XOSET 4 >
1656 C570S C62615 jsm XBSET 5 *
1657 P5706 062615 JSh XOSET 6
1656 Γ5707 £62615 jsh XOSET 7
1659 C571Ö C62615 jsh XBSET β -
1660 85711 D62615 jsh XBSET 9 U-
1661 65712 C62615 jsm XBSET 10 SQRT
1662 05713 G62631 jsh XUSET 11 4-
1663 C5714 C62631 JSh XUSET 12 R
166'» Ö5715 C56664 JHP XGAZ
1665 G5716 066702 JMP SUBSC
1666 G5717 074P36 FROT OCT 074036 *
1667 057?« 1B5767 ΤΛ01 OEF TTBUI
166B 155721 106051 ΤΛΒ2 DEF TTGZ-ItI 17 ABCXYZ
1669 C5722 116353 TAB5 DEr TTP5»I 18 (
167 a C5723 066647 JKP XOPD 19 )
1671 05724 S31606 AOPS DEF PS 20 f
1672 C5725 025142 ADSP DEF RDSPY 21 Il
1673 05726 066570 JHP XJ 22 JUMP
1674 05727 f.66722 JHP XOUO 23 (
1675 C5730 Ü67041 JKP XJMP 24 GSB
1676 «5731 066564 JHP XH. 25 GTO
1677 C5732 C67210 JHP XGSB 26 EOL
1678 05733 C67213 JMP XGTO 27 ENT
1679 05734 057G47 JKP XEOL RET
16ßß 05735 164534 JMP XENT.I 29 STOP
1681 05736 C67152 JHP XRFT 30 NORMAL
1682 05737 061250 jsh XSTOP 31 TRACE
1683 05740 C61256 JSh XNORH 32 FIXED
1684 05741 061262 JSH XTKAC 33 FLOAT
1685 C574? C62764 JSm FIX 34 SET FLAG
1686 0 574 3 062766 JSH FLO 35 FLAG
1687 65744 C67437 JHP STFI 36 IF
16t!8 B574S C67414 JHp STFF 37 SPACE
1689 65746 C67026 JHP XlF 38 PRINT
1690 05747 063ÖP6 JSH SPA 3^ DISPLAY
1691 S5750 Π67071 JHP ■ XPRNT 40 LOAD
169? C5751 067 073 JHP XOISP 41 RECORD
1693 C 575 2 164225 JHP LOAOX1I 42 END
1694 05/53 16Π226 JSH RCROX,I 4 3 OPTION #1
1695 C5754 16171P JSH XENO.I 4'« OPTION »2
1696 P5755 165634 JHP 0PT1.I 45 OPTION «3
1697 05756 165635 JHP 0PT2.I 46 ALPHA
1698 65757 165636 JMP 0PT3»I 47 NULL
1699 C5760 C67537 JMP XNUM 48 ABORT
17BO 05761 C66570 JHP XJ 49 CLF.AR FLAG
17Cl B5762 067067 JMP NONX
170? C5763 C67441 JHP CLFI CHECK SUM
17C3 G5764 Oil/355 ORECP OEF 7355B 1
1704 05765 000000 NOP 52 END OF ENTER STMT
1705 B5766 C66570 JHP XJ
1706
309832/0843
1708·
1709·
1710
C5767 604112 TTBl DEF SBO 0 1 2 NOT = .
1711 65773 604112 OEF SBO 3 IMP »
1712 G5771 C34112 DEF SBO 4
1713 05772 C04112 DEF SBO 5 =
1714 C5773 P04112 DEF srJO 6 >
1715 C5774 £34112 DEF SBO 7
1716 G5775 t'34112 DEF SBO 8
1717 Ö5776 004114 DEF PLU 9
1718 05777 004116 DEF MlN 10 -
1719 C6ß!S<3 094115 DEF IGNR Il U-
1720 G6301 004126 DEF FCN 12 SQRT
1721 06902 £504107 DEF GAZ 13 «-
1722 06003 G04126 DEF FCN 14 R
1723 Q60G4 C04462 DEF NUM 15 0
1724 06205 G04462 DEF NUM 16 1 - 9
1725 66<?06 G04462 DEF NUM 17 *
1726 66007 U04462 DEF NUM 18 EEX
1727 O6P10 004130 DEF OPD 19 abcxy;
1728 S6ßl 1 C-04136 DEF LBR 20 (
1729 06012 094155 DEF RBR 21 )
1730 06Gl 3 004157 DEF COM 22 t
1731 06014 004426 DEF QUO 23 Il
1732 Ö6315 C34207 DEF IF 24 JMP
1733 66316 0i!4254 DEF EOS 25 t
1734 C6S17 034373 DEF GTO 26 GSB
1735 C602O P04373 DEF GTO 27 GTO
1736 06021 CS4241 ' DEF EOL 28- EOL
1737 06022 004221 DEF ENT 29 ENT
1738 • 06023 034213 DEF RET 30 RET
1739 B6324 Γ304213 DEF RET 31 STOP
1740 «6ß25 004217 DEF SFFNT 32 NORMAL
1741 C6026 004217 DEF SFFNT 33 TRACE
1742 06Γ527 C04217 DEF SFFNT 34 FIXED
1743 0633« ÖB4217 DEF SFFNT 35 FLOAT
1744 S6031 «34166 DEF STF 36 SET FLAG
1745 06032 C34126 DEF FCN 42 FLAG
1746 66033 004207 DEF IF 3fl IF
1747 06034 034217 DEF SFFNT 39 : END
1748 {36335 084215 DEF PD 40 ι PRINT
1749 «6636 034215 DEF- PD 41 ' DISPLAY
1750 66(137 fJ0421l DEF LR 42 ι LOAD
1751 C 6040 G34211 DEF LR .43 RECORD
1752 C 6041 Ö04213 DEF RET 44 END
1753 Ö6C542 4Ό1362 DEF EXIT 45 OPTION #1
1754 G6R43 {131362 OEF EXIT 46 OPTION «2
1755 66944 P01362 DEF EXIT 47 OPTION #3
1756 06345 C04115 DEF IGNR 48 ALPHA
1757 06S46 004115 DEF IGNR 4«; NULL
1758 06047 t'84115 DEF IGNR 5f IGNORE
1759 O6B50 GO4170 DEF STF*2 > CLEAR FLAG
1760 C6051 004110 DEF UPARO > *
ADDRESS TABLE FOR COMPLIER ROUTINE»^^^ ' ^
(Adressentafel für Compiler-Programme)
THE COMPILER USES THIS TABLE
09832/0843
1762» 06052 C042?5 014452 TTB2 014366 035274 GE3 DEF GEl ORG 16353Θ
1763 86fl53 604474 0661dl 005303 DEF GE2
1764 C6tt54 (536072 014375 014367 C05306 DEF GE3 DEF GABS
1765 C605S C0133R 066103 C56C77 DEF CL DEF GMNS
1766 Ü6056 O0AAS0 014374 065317 DEF GES DEF GPLS
1767 <5f-e57 066103 DEF GE6
1768 C6G60 031390 024373 SET9 DEF CL
1769 06261 08'f413 S661C4 DEF GE8
1770 C6062 ί?24375 GQT DEF GE9
1771 06863 C24172 C66104 DEF GE10
1772 0244S1 GRL
1773· 6=6 GO TYPE »35602
177«· 065304
1775· C6064 GE6 CPB CNFQ
1776 C6C65 JHP GOT
1777 C6P66 ADDRESS 61C6E CPB CNFA
1778 06067 ARE USEO 8Y 1 JHp GRL
1779 ß 6« 7 a CPB CNFS
1780 C6371 16353 JMP GRL
1781
178?» 6=3 GO η BEGIN 16353
1783» 1635S4
178*· 06072 16355 CPB CNFO
1785 JH.p sett·;
1786 C 60 74 CPB CNFZ
1787 esc75 JHP SET9
1788 06076 JHP El
1789
1790« C6077 LDB DP9
1791 t'Mßfi JMp • ♦4
1792 C6101 LDB DP 7
1793 C61P2 JMp «♦2
179* G6103 LDB DP3
1795 0610Ί STB G
1796 06)05 JMp CPl
1797
1798·
1799· ) THROUGH 6116B
1800· :nequal.ities
1801·
1802·
1803
1884« TTB5
1805
1806
1807
table of g-routines for compiler
INTERPRETER SUBROUTINES (int e rpre te r-Un te rprograrnrne )
309832/08/-3
226272
0255° CONTROL SUPERVISOR
0257» fi/3/79
ÖH58» EEO
6259»
ö260° The: control supervisor β261» loadfd by the keyboard-0262» proper handling routine G263Ö
CONTROL SUPERVISOR SUBROUTINES
(Un t er ρ r ogramme)
(.CS) DIRECTS ALL KEYCODES INTERRUPT ROUTINE TO THE-
6266 16000 177744 M28 ORG . ADB 16000B
0267* stb
3260 16000 P21563 INTRR DEC LOA -28
0269» 006000 CPA
G270 16B01 010430 LOA RET TSW
0271 l6Gß2 C66016 ADB LOB M28
6272 16003 C66014 CPA stb P 4
0273 16C104 JHP LOB PRG* 2
C274 16305 16Ρ,2Γι4 SMON JMP CPB PRG
0275» G02406 CS LDB
G276 16206 071450 JSM STB 254B,I
0277 16007 0355403 ADA LDB M2
0279 16016 Ü70110 SZA JMP INTRR
C2S0 16011 070613 ADA .OEF Pl
0281 16012 SZA PRG
2202 16Θ13 024371 PRG SAP CONTR
0283» 021563
0284 16314 G35717 LDB Pll '
0285 If, β 15 074704 LDA TSW
0286 16016 C35717 STb TEMPI
0287 16017 ß05717 SBL 2
C 2 88 16020 t'50365 ADB TEMPI
0289 · 16C21 073037 ADB TEMPI
{3290 16P22 GS6044 AND MASK7
ß291 16Ö23 021563 ADB A
0292 16024 074737 ADB .ATBL
£293 16025 LDA TSW
6294 16026 [Ι? Ί422 CONTR JHP BtI
{1295« 035717
0296 16027 17.21563 M25
6297 16030 0115400 TEMPI
0298 16C31 17ß4«2 TSW
0299 16032 024 354 P4
ß300 16033 035621
6331 1C034 025563 UNCl
0302 16035 ΰ 14431 KSTOR
0303 16336 024403 TSW
ö304 16337 035563 P3
03.35. 16040 025717 Pl
0306 16041 066017 TSH
0307 16Π42 106110 .ATBL TEMPI
0308 16043 PRGO
ö309 16044 .TB3-7
tsw=4 if running user program if interrupt hodfi ajust cn keycode execution
yes interrupt kode^leave as is not interrupt,set cn=h for programmable key
KEYCLASS IS IN A-REG!^PROGRAMMABLE«I=OPTION 2=PR0GRAM INTERRUP 1 AßLE»3=C0.N fROL IF A-REG=0,CODE IS PROGRAM INTERRUPTABLE
AFTER ADDING *1 A-REG=0 INDICATES OPTION BLOCK A-REG * ,KEYCODE IS CONTROL CLASS
SET CN--11 FOR PROGRAMMABLE KEYS
GET TARLE AnDRESS=BASE+<TSW+6(CN)> THE-CONTENTS OF THE AOOReSS POINTS TO THE PROCESSING ROUTINE. THIS TABLE OF ADDRESSES CAN BE CONSIDERED AS Λ MATRI* OF SIZE (6,1I)WHERE EACH ELLEMENT IS FOUt-JD BY (TSW,CN) WHERE TSW IS THF CONTROLLING FLAG FOR .CS AND CN IS THE MODIFIED CONTROL NUMnER FOUND IN "MTABL"
Fi-REG HAS ADDRESS OF PROCESSING ROUTINE .
jump το the routine
CONTROL KEYS (CN) BIASED BY *26 SAVE MODIFIED CONTROL NUMBER
IN PROGRAM RUNNING MODE?(TSW=4?) YES,00 NOT PROCESS
SET KSTOR SWITCH FOR
REPLACEMENT STORAGE VS INSERT STORAGE
IF INSERT MO0E(TSW=3)
RESET TSW=I
RESTORE CN TO B-REG
GO COMPUTE PROCESS ADDRESS WITH OLD TSW
30 9 832/0843
ORlGWAL INSPECTED
ADDRESS TABLE FOR CONTROL SUPERVISOR ROUTINES
06117 006247 ORG 6117B (Adrensentafel für Contro1-Sudοrvinor 5 6 2 3 4 5 4 5 6 (RECALL HOOF.) Il Il MOOE)(INTR.)" " STOP KEY
06117 636247 .TB3 DEF A.11 Programme) 6 (INSERT CHARACTEP MODE) " » ■1 Il
«311
■ ^t^a
(16120 036247 DEF A.11 1 1 (RUN PROGRAM Il Il
©313 £31253 . DEF Λ.11 TSW=I(KEYnOARD ENTRY HODE) EXECUTE KEY(I) 2 1 2 (ENTFR MODE)
0314 C61?2 036255 DEF STP 2 3 2 3 (EOL MODE) STORE KEY (2)
C315 06123 S36247 DEF A.51 3 4 3 4 ■I H
0316 06124 DEF A.11 4 5 5 Il II'
C317 006272 6 6 Il Il
ö318 861?5 Ρί'6272 DEF A.12
0319« 361 ?6 036265 DEF A.12 1 1 NORMAL KEY Il Il
6320 36127 031256 DEF A.32 2 IGNORE
0321 36130 105)533 DEF 0.72 3 3 INSERT KEY (3)
0322 86131 006272 DEF RETl.I 4 Il Il
β323 06132 DEF A. 12 5 5 H Il
032'» C06461 6 6 Il Il
0325 C6133 036463 DEF A.13
«326· 66134 006460 DEF Ae23 1 TRACE KEY Il Il
0327 «6135 Oil 1262 DEF A. 33
0323 86136 C-M463 DEF D. 73 CLEAR KEY (4)
032-ί 06137 Ü06456 OEF A.23
0330 86143 DEF Λ.63 Il Il
C331 066413
6332 06141 (WM ι ? DEF A. 14 Il Il
0333» «614? 026413 DFF A s ?A Il Il
0334 06143 1 Ηίί3ίϊ5 DEF A.14
C335 Ü6144 006414 OE F FXDiI DELKTE KEY (5)
6336 06145 006413 DEF A. 54 Il II.
0337 06146 DEF A. 14 Il Il
C33B 036537
(3339 66147 C.16523 DEF A, 65
0340» Ο61Β0 00654b DEF A. 25 Il Il
ί)34 1 06151 1«θ3{?4 DEF A.35
0342 «6152 036537 OEF FLTtI RECALL KEY (6)
0343 06153 C36537 DEF A.65 Il Il
C344 G6154 DEF A. 65 Il Il
0345 0Ρ6423 Il Il
C 34 6 06155 C36427 DEF A.16
0347» Ρ6156 f'!16423 DEF 0K4 SFG KEY •I Il
0348 Ü6157 016373 DEF A.16 IGMORE
0349 0616» 103533 DEF B.77 FORWARD (7)
C35Ö «6161 006427 DEF- RET 1«I U
0351 C616? DEF 0K4 Il
0352 C>?6467
C353 C6163 C36504 DEF A.17 Il
0354» Π6164 036467 OEF A.27 Il
C355 C6165 007754 DEF A.17
C 356 06166 C06467 .KBR3 DEF .KBR
0357 06167 006467 DEF A.17
035Β 86170 DEF A.17
0359
0360
309832/08U
5"-
0375»
0382*
8336 '
Ö369»
P6171 C6172 06173 0617/« 66175 £«6176
006435 036437 036434 00(5000 006437 Θ06435
66177 3H6562 G6208 096565 £6201 100533 C6202 016014 C6203 1Ö0533 66204 Θ06565
.PRG
S6205 S06656 CJ62R6 S36655 Ö6207 1SÖ533 ß621ß C2fl0G0 B13 06211 Cß6775 C6212 ßfl666l
06213 037066 £!6214 0S7«66 06215 P07C66 C6216 C'36ii4b C6217 0^7061 S6220 CS7C66 TBLE
16356
16356 101631 TBl
16357 101632 16360 101633
1 2 3
5 6
1 2 3
5 6
1 2 3
5 6
.2 3 RACKSPACE
Il
(O)
LIST.KEY
Il Il
(9)
RUN PROGRAM KEY (10)
OEF A.IG DEF A.28 DEF A.38 BSS DEF A*28 OEF A.18
DEF A.19 DEF L2 DEF RET1,1 DEF PRG OEF RET1»I DEF L2
DEF A.110 DEF Λ.210 OEF RETUI OCT 245000 DEF ASSG DEF A.110*3
DEF P02 DEF P02 DEF P02 DEF RET DEF A„511 DEF ΡΟΗ
ORG 16356B
DEF 1631B,I POINTER TO OPTION BLOCK SYNTAX ROUTINE #f 1
DEF 1632RtI FOR OPTION BLOCK </2
DEF 16338»! FOR OPTION BLOCK #3
CKECKSUM WORD
IGNORE IGNORE
IGNORE
PROGRAMMABLE (11)
Il
0395»
0396*******4*********°************ 0397* THE FOLLOWING IS THE MAINLINE «398·
«399 06221 160251 * .NKK ORG Tf3LE*l
0430· 163323 .CS
0401 06221 C62P25 JSm .DSP»T
0402 86222 Ö66221 ΚΥ5 JSm .SMON,
«403 06223 JSh KY6
6404 C6224 035577 ΚΥ6 JMp .NKK
0405» 021795
6406 06225 970712 STB ERST
«407 Ö6226 LDA .WMOD
C408 66227 07ΡΙ742 CR0 SAH RET
0409· 1331571
G410 06230 C63112 SAr 16
0411 156231 Ö62242 STa LINCT
0412 β6232 06Jl16 CR2 JSm CLDQ
0413 86233 067210 JSh CTSW2
04K C623A JSm .STLN
0415 06235 021542 .10 JMP .LOC.
0416· 063153
0417 06236 G31543 LDA ENDS
0416 06237 072230 JSM FKIl
6419 €624 0 G21563 CTSH2 STA LIHi
0420 06241 050365 κιλ RET
0422* Ο62'»2 010432 LDA TSW
0423 662 A 3 170402 RET AND MASK7
C424 Ρ6244 cpa P2
0425 06245 RET
SYSTEM MONITOR ROUTINE
(System-U'bcrwachun^s-Programm)
FOR THE KEYROARD.I.Ε.».NKK
CALL DTSPtAY «RIVER (ROUTINE IN I/O SUP) PROCESS KFYCODE
SETUP DISPLAY BUFFER(HORMAL RETURN) DISPLAY LINE OR RESULT(ALPHaNUMERIC RESULT RETURN)
B=0 LINE AS COMPILED OKAYl-I AN ERROR OCURRED IF NEW KEY RETURN
ELSE nUILD DISPLAY
2ERO CHARACTER COUNTER OF LINE CLEAR DISPLAY BUFFER
TSW=2?
YEStBUiLD lINE # FOR DISPLAY
BUILD DISPLAY
.18 IS A UTILITY ROUTINE FOR SETTING SYSTEM STACK ROUTINE STARTS AT ENDS LOOKING FOR
NEXT -1 ViHlCII MARKS REGINNIHG OF MAIN PROGtUM ♦ 1 NECESSARY FOR MAG-CARD ROUTINE AND END
«426 '66246 164533
JHP RETl,t 309832/08Λ3
226272
0428»
0430» 0431* 0432« 6433 C434 0435 C436 0437» 0438 0439 0440* ß441 0442 (3443 0444 0445* 6446 0447 6448» 0449 0450
The following routine processes the execute1key.
06247 063646 A.11 P6253 066646 fl6251 062253 Ö6252 1.64533 -
Ö6253 32(3376 T5W6 Ü6254 C67576
C6255 863647 A.51 Ö6256 £566263 G6257 G62261
06260 164533
06261 G20377 TSW5 86262 Ü67576
66263 062261 Ö6264 Ö66647
•JSm RKHUF JMp RU71 JSM TSVf6 JMP RETl»I
LOA P6 JMP EXl
JSh RKBUF+1
JMP TSW5+2
JSH TSW5
JMP RETl,I
LDA PS JMP EXl
JSM TSW5 JMP .A7 EXECUTE KFYBOARD BUFFERJIF NO-STOP USE SAME (STOP RETURN) POINTER IN PROGRAM AREA
SET TSW=6
TSW=(I)6
EXECUTE KEYBOARD BUFFER (NO INTRP) NORMAL RETURN ERROR RETURN
TSW=(I)S
309832/0 8 43 0RlGWAl INSPECTED
6452·
0454»
The following routines process the store
0456· 6457 0458 Ö459 «460 «461 6462» 6463 0464 6465 0466 0467 β468 <J469 ß470 0471 0472 6473 Ö474 0475 C476 0477 Ö478 0479 0480 6481 0402 0403 0484 0405 0486 0487 0488« C409 (5490 0491 0492 C493 0494 G495 C496 f.497« 0498 C499
0501 β532·
36265 063557 A.32' 86266 074453 C'6267 C21563 .11? 3627Ö 041*262 06271 Ü67577
Ö504 6505 0506 0507
06272 C6273 S6274 C6275 Ρ6276 126277 Ö63P3 06331 (16302 C6303 063Ö4 6 63?. «J6306 C6307 Ü6310 £6311 C6312 66313 C6314 C6315 06316 Q6317 0632(1 06321 C6322
S6323 06324 66325 Ö6326 06327 C633B C6331 P6332
66333 G6334 06335 06336
C6337 06340 66341 06342 86343
C63557 A.12
075612
062242
STR2
063472 «45567 07474? C61352 D2C1535 07Ü376 D01545 031542 {!31722 031725 OOU. Ö7!t,e56 031377 O7EM3 S2A37D
063135
020401 Ö63576 164533
025542
Ü66333 07A517 131725
.10
055725 066324
07^517 131725 021722 031542
020535 011545 066402 070537 135546
JSM EXEOT SBP STR2 LDA TSW I OR BT14 JMp EXl»1
JSH EXEQT SBM .112 JSH CTSW2 JSh DRCMA JSH DELT ISZ HPH SBR JSM RBAD LDA TOPS TCA
ADA PSP ADA ENDS STA TEMP2 TEMP3 BSTK CMA
ADA MAW SAP .Iß-1 LDb MXERR JSh BAD JSH DSNO JSh CRZ LDA P3 JSM EXl JMp
LDR ENDS CPQ CMA JMp LDA B.I STA.TEMP3.I ADB Ml DSz TEMPI JMP .If)
LDA B,I STA TEMP3.I LDA TEMP2 STa ENDS
LDA TOPS CPA PSP JHp LDfJ A, I STß CMAiI IF ERROR ON EOL FOR STORE SET BIT14 IN TSW
TSW=2?
yes,store in current line delete old line set for slow gto'S
cohputew-of-words used to compile the CURRENT INPUT LINE. T0PS-PSP=<«OF WORDS
INCREASE END-OF-PROGRAM MARKER THE NECESSARY AMOUNT SAVE NEW ENDS
TEMP3 USfD IN EXPANDING MEMORY FOR INSERTING NEW LIN SYSTEM STACK MOVtS WITH ENOS. SEE IF NEW LINE FITS IN USER MEMORY.
MAW-W;-0F-W0R0S*EN0t*72+l)IF POSITIVE LINE FITS
ELSE ERROR ERROR tt\2 FOR MEMORY OVERFLOW setup .wmoo (Routine on base page) build line number call routine to build line with line numfjer SET TSW=3
SET RIT15 ON TSV)(SAYS ERROr=MEMORY OVERFLOVO RETURN FOR DISPLAY
SET D-REG aS POINTER TO OPEN MEHORV FOR NEW LINE IS OPENING COMPLETE?
YES,PREPaRE TO INSERT NEW LINE GET IT
STORE WORD IN NEW LOCATION
RECYCLE
GET NEW FND-OF-PROGRAM MARK STORE IT IN ENDt AND COMPUTE NEW BSTK
SET A-REG TO FIRST WORD IN COMPILER OUTPUT AREA HAS TRANSFER BEEN COMPLETED? YES
NO,GET WORD
STORE IT IN USER PROGRAM AREA
309832/08A3
0508 06344 045546 .15 < .110 ISZ CMA
0509 fl63'»5 Ö73570 HlA .12
0510«
€511 06346 021546 .17 lda CMA
0512 Ö6347 0705576 TCA
0513 66350 031543 ADA LIMl
«514 C6351 070452 SAM .17
0515 66352 121546 .T6 LDA CMAtI
0516 06353 010405 STRl CPA Ml
ö517 06354 066357 JHP .110
C51B G6355 020406 LDA M2
6519 D6356 131546 STA CMAtI
0520 C6357 161710 JSM .END2,I
6521 C6363 O3160Ö STA PMA
6522 C6361 066413 JKP A.14
0523 Ö6362 £!21546 LDA CMA
es24 06363 G31542 STA ENDS
0525 06364 0253435 LDA Ml
0526 06365 131542 STA EN1DStI
0527 Ö6366 G63406 JSM DRCMA
05H8 C63&7 Üc34ß2 LDA P2
0529 C6370 363044 .13 JSM NWLNE+1
C530 06371 063540 JSM UNCPl-I
6531« .14
ß532 06372 063604 JSM SCANl
C533 G6373 C217B5 LDA .WMOO
C534 C 6374 (373151 SLA «♦3
0535 06375 063Θ55 JSM NWl
ß536 06376 C162616 JSM L5
Ö537 06377 O2C402 LDA P2
6538 664ß0 063576 JSM EXl
C539 S6401 164333 JMP OUT, I
0540»
6541 66402 C63055 JSM NWl
0542 C 6403 Ö62236 JSM .18
6543 C 64 04 063457 JSM FETCH
0544 66405 310465 CPA ENLNE
0545 86406 Ö66366 JMp .16
Cl 546 C64ß7 310457 CPA END.
fl547 Ö6410 066346 JMP .15
6548 G6411 066484 JMP .14
LOOK TO SEE IF IN DEFINE FUNCTION AREA IF TRUE DON'T CHANGE ENDS ELSE CHANGE AT LABEL .17
END WAS STORED IN DEFINE FUNCTION AREA LOOK TO SEE IF CMA IS POINTING TO -1
YEStDON'T STOPE-2 ΛΤ CMA. STORE-2.CLEAN-UP ROUTINE IS CALLED BY END LINK And removes old program from -2 το α -ι
CALL CLEAN-UP VIA END LINK ON RETURN FROM END LINK
CMA IS RACK TO MAIN-PROGRAM. SET PMA BACK ALSO JUMP TO CLEAR ROUTINE
END WAS FOUND IN INPUT AND MAIN-LINE-PROGRAM UPDATE ENDS
MOVE CMA TO POINT TO BEGINNING OF LAST LINE
TRACE MODE PRINT PROGRAM LINE
RESET CP TO BEGINNING OF INPUT STRING ADJUST LIMl POINTER(MECESSaRY IF DEFINE FUNCTION) LOOK TO SEE IF END WAS IN INPUT STRING
YEStSEARCH OF INPUT STRING COMPLETED IS CHARACTER END?
YESt PREPARE To UPDATE ENDS NOtCONTlNUE SEARCH OF INPUT STRING
8 3 2/0843
«55β·
β552·
β553· THE FOLLOWING ROUTINES PROCESS THE CLEAR KEY.
«554*
«555 86412 063406 A.2'4 JSm DRCMA
0556·
β557 86413 020376 A.14 LDA P6
0558·
C559 06414 063044 A.54 JSm NW0-1
«560 06415 667557 JMp EXEOT
0561·
8562 C6416 G20376 CLRl LDA P6
0563 Ö6417 363020 JSM SKCD*1
0564 Ü6420 161560 JSm OSW»I
0565 C6421 021544 LDA SKEY
0566 66422 067020 JMP SKCD*1
SET TSW=6
A-REG INTO TSWICLEAR INPUT AREA PUT EOL IN INPUT
CLEAR CODE TOR OPTION BLOCKS SETUP CODE AND CN SEND CLEAR CODE TO PTlON BLOCKS
RESET CODE AND CN FOR THE PRESENT KtYCODE
309832/0843
-2. CvA
226272
0560»
0569« THE FOLLOWING ROUTINE PROCESS THE-RECALL KEY.
0570·
ß571 06423 063363 A.16 JSh CKERR
eS72 66424 663646 JSm RKBUF
C573 06425 C66427 ■ JMP «♦2
0574 Ö6426 170402 RET
C575 C6427 C61363 0K4 JSM CKERR
fl576 C6430 121546 LDA CMA»I
ß577 06431 C1O405 CPA Ml
C578 Q6432 £66600 JMP SPREG
C579 06433 £66367 RCLL JMp STRl
IF SYNTAX ERROR — NOP EXECUTE INPUT LINE · NORMAL RETURN
ERROR RETURN
ARE WE AT END-OF-PROGRAM YES,OUTPUT ff OF R-REG 06433 066367 RCLL JMP STRl
0580»
C5S1« THE FOLLOWING ROUTINES PROCESS THE BACKSPACE KEY.
0582» (3583* ENTRY IF MEMORY OVERFLOW AND INSERT SAVE BITS 1SS.14 PREPARE TO SET TSW=I CLEAR SIGN BIT. ENTRY FOR RECALL MODE SET TSW
NORMAL DRECREMENT OF CP FOR BACKSPACE BACKSPACE OVER BEGINNING-OF-LINE?
NOiRECOMPILE CORRECTED LINE "
G6445 063367 B4 JSm INCP
66446 66H242 . JSH CTSW2 TS
£6447 C66451 JMP **2
06450 067604 JMp SCANl
66451 C63406 JSH DRCMA
S6452 063406 JSM DRCMA
36453 010405 CPA MI
C6454 (167604 JMp SCANl
Ö6455 066433 JMP RCLL N 0633* 06C 4»* **«*«·*»«#«»«■*» #»****« »*·*■»«·■»* O6C55*
G606* THE FOLLOWING ROUTINES ALLOW INSERTING CHARACTERS
C6ß7« RECALLED LINE.
G608» 0609 06456 670253 A 6610 S6457 066413 0611« G612 06460 G7S3I2 A.33 SAm A.23*3 0613* 0614 86461 04f!40l A.13 G615 66462 031563 6616» 0617 86463 063363 A.23 GET ADDRESS OF INSERT ROUTINE STORE IN STORE LINK WORD
0584 06434 070742 A.38 SAR 16
6585 06435 £·5Π262 A.18 AND 262B
0586 Ö6436 C40403 IOR Pl
0587 G6437 070(573 A.28 SAp **1 »C
«588 S6440 C31563 STA TSW
0589 G 6441 £63355 jsh DRECP
0590 C 64 42 015565 cpb BP
C591 £!6443 066445 JMP 04
C 5Ό 2 C 6444 C67684- 32 JMP SCANl
C593«
{3594 G6445 063367 B4 JSm INCP
G595 66446 66H242 JSH CTSW2
6596 £6447 C66451 JMP »♦2
C597 06450 067604 JMP SCANl
G59B 66451 C63406 JSH DRCMA
eS99 S6452 Ö63406 JSM DRCMA
C600· iJ6453 öl 0405 CPA MI
C6B1 C6454 ('67604 JMP SCANl
C602 Ö6455 066433 JMP RCLL
63
SAP A.23 JMP A.14
IOR P3 STA JSW OF LINE INCREMENT TO FIRST POSITION TSW-2?
YES
NO JUMP TO RESET COMPILER RECALL PRECEEDING PROGRAM LINE
REQUIRES DRECREMENTING CMA TWICE BEGINNING OF PROGRAM AREA YEStJUMP TO RESET COMPILER NOtRECALL NEW PROGRAM LINE ,
IN A
TSW=6 Alir» INSERT KEY. IF POSITIVE SET INSERT MODE ELSE ACT LIKE CLEAR KEY
i=I AND INSERT KEYISET FOR CHARACTER INSERT MODE
Ö6464 020357 «6465 031621 06466 164303
JSH CKERR LDA ISTOR STA KSTOR JMP OUTiI 309832/0843
0622·
0624· THE FOLLOWING ROUTINE JSm PROCESS
0625· stb
0626· 06^67 071752 A .17' SAM STn ♦-1
0627 06473 C-70744 SAL sin 1
0628 06471 C7P252 SAM JSm Λ.27Ρ-
0629 0647? 063361 JSm JMP CKERR-2
0630 ß6473 021566 LDA CP
0631 S 64 74 063367 JSH INCP
0632 06475 (267611 JMp SCAN3
0633
0634· C6476 063361 A .27P JSH CKERR-2
0635 Ö6477 C63457 JSM FETCH
C636 56503 063355 JSH DRECP
C637 06501 C1C465 CPA ENLNE
0638 E650? 066272 JMP A.12
0639 C6503 C66473 JMP A.17*4
C640 C650't 071513 A .27 SAP Λ.27Ρ
0642 C6505 121546 LDA CMA. I
C643 065C6 C10405 CPA Ml
3644 06M7 164 333 JMP OUT»I
0645 06510 tf204fl2 LDA P2
0646 (56511 DÖ7044 JSm NWLNE+1
0647 06512 1)6354β JSm UNCPl-I
0648 S 61Jl 3 063055 JSm NWl
C649 C6514 062416 SCMP JSM CLRl
C650 06515 16-3313 RSCMP,I
P651 06516 035575 QOTE
C652 065)7 035564 ENTSW
C653 C65?O 035577 ERST
t'654 G 6521 Γ/61352 RBAO
0655 06522 164333 OUTfI
C656
EOL IF -
IF BIT14 CHECK FOR STORE LINE
NO ERROR
BRING NEXT CODE INTO SYSTEM
MOVE POINTE» BACK IS CHARACTER FOL?
YES STOPE CURRENT LINE NO PROCESS NEW CHARACTER
TSW NEGATIVE»LOAD FIRST WORD OF NEXT LINE IS IT ENn OF PROGRAM? YESjClEAR A&B REG
RESET OPTION BLOCK COMPILATION RESET COMPILER
309832/0843
6658» 0659»
6661* «662» 6663» «664* C665» G666 C667 ©668 e669 €670 G 671 0672 (5673 C674 C675 0676 C677 0678» «679 C680 0681 0682 »683 Ö6B4* 6685 0686 0687 Θ688 C6B9 β690 ß691 (3692 0693
the following routine processes the delete key
D6523 06524 P6525 06526 06527 «6530 36531 66532 Ö6533 66534 36535 C6536
070653 A.25
G63486
D63472 DELN
121546
010405
D66532
C66433
C63406
Ö39403
073650
1352413
S66277
Dl
06537 071152 A.65 Ö6S4G 070113 A.35 66541 {566277 86542 C62544 A.15 C6543 Ö676Q4
C695 C696 Ö697 0698
06544 G6545 B6546 G 654 06550 06551 06552 66553 06554 06555 Ü6SS6 C6557 C6560 {56561
025566 DELC
035573
Ö63355
Ö35722
C15565
067367
063453
07Gl37
079150
C63436
(/66552
t:63436
025722
C67373
SAP A.35 JSH DRCMA JSM DELT LOA CMA»I CPA Ml JMP Dl JMP RCLL JSM DRCMA ADA Pl RZa Dl-I JSM A.14 JMP STR2
SAM «-13
SAP A.15 JMP STR2 JSM DELC JMP SCANl
LDB CP STB CPl JSm DRECP STB TEMP2 CPB BP JMP INCP JSM FECH LDB A SZA **3 JSm MSTOR JMP »-it JSM MSTOR LDB TEMP2 JMP INCPl IF TSW=H AND öl5=0 THEN DELETE LAST CHAR SHOWN · ELSE MOVE CHA BACK TO F3EGINN1NG oF LINE SHOWN IM
PREPARATION FOR DELETEING LINE HAS ENDS PEEN MOVED OVER THE DELETED LINE?
YES ,
NOiDISPLAY LINE THAT NOH OCCUPPIES THE DELETED LINE
IS MEMORY NULL?
IF NONZERO MO
YEStMAKE PROGRAM SEGMENT NULL
IF - RECALL INPUT
DELETE KEY IN MEMORY OVERFLOW;TAKE NO ACTION .CALL INSERT TO REGENERATE ERROR MESSAGE
RECOMPILE CORRECTED LINE
SET POINTER FOR FETCHING CODES FROM INPUT AREA MOVE STORAGE POINTER ONE POSITION SAVE NEXT VALUE FOR CP DELETTIN6 BEGINNING LINE CHARACTER?
YESfMOVE STORAGE POINTER FORViARD NO»GET CHARACTER TO BF. MOVED BACK MSTOR WORKS WITH CHARACTER IN B-REG LAST CHARACTER IF ZERO STORE CHARACTER IN NEW POSITION CONTINUE MOVING INPUT CHARACTERS STORE LAST CHARACTER
RESET INPUT POINTER
309 832/0843
«700· The following 063646 ROUTINES PROCESS
«701·
0702·
U66S65
0703»
0704·
170402
«735» 66562 A.19 JSM RKBUF ■
0706· 66563 063363 JMP • ♦2
0707 06564 1363135 RET
0708 121546
0709 «6565 010405 L2 JSM CKERR
0710· 66566 C66600 JSH OSNO
0711 6656? Ρ635145 LDA CHAtI
0712 66570 363541 CPA Ml
0713 Β6571 063355 JMP SPREG
0714 06572 C62616 JSH NW0
0715 06573 945547 JSH UNCPl
0716 66574 071413 JSh NWl
0717 0657S JSH L5
0718 06576 06311? ISZ SNO
0719 66577 C63347 SAP L2*2
6720 C2G467
0721 66600 C63114 SPREG JSM CLDP.
0722· 06601 Ü21542 JSH ENO* 1
8723 06602 031615 LDA R
0/24 «6603 (J70H56 JSH .STCD
0725 66604 031712 LDA END'S
6726 Ö6605 C70042 ADA BSTK
0727 66606 U63126 CHA
0723 '06607 160250 ADA RR
0729 216610 02(5347 SAR 2
0730 e6611 160473 JSH .STLlO
0731 Ö6612 (366413 JSH .PRTl,I
0732 Ö6613 L7 · LDA EIGLN
8733 66614 063116 JSM SPACtI
β734 66615 160250 JHP A.14
0735 063112
0736 06616 020400 L5 JSH .STLN
0737· 66617 C63577 JSh .PRTItI
0738 06620 063516 JSH CLDB
0739 66621 D7B752 LDA- P4
0740 06622 U23364 JSH EX1*1
0741 C6623 C31573 JSH CKSTP
β742 66624 G61257 SAM •SC3*?
0743 66625 Ο7Ρ450 LDA P16
0744 06626 CU4405 STA COUNT
6745 «6627 C66636 .SCl JSH .FDCH
0746 66630 063367 SZA .SC3
0747 Β6631 C63234 CPß Ml
074Β «6632 066627 JHP • SC2
0749 06633 (!63376 JSh INCP
0750 66634 160250 jsm TRANS
075Γ 66635 JMP .SCl
0752 66636 •SC2 JSH .OOTE*1
«753 66637 JSH .PRTItI
0754
«755
IF INPUT STATEHENT EXECUTE IT NORMAL RETURN ERROR RETURN
GET STARTING LINE # ARE WE AT ENO-OF-PROGRAH
YEStPRINT «OF R-REGISTERS CLEAR INPUT AREA UNCOMPILE POLISH CODE SET CP TO BEGINNING CHARACTER CALL ROUTINE TO PRINT PROGRAM LINE INCREMENT LINE # IF A ♦ RECYCLEHF- STOP
CLEAR DISPLAY BUFFER
SET CMA TO BEGINNING OF HAIN PROGRAM PLACE "R" IN OUTPUT RUFFER
(RR-(EN0S*RSTKtl))/4=«0F R-REG
CONVERT HINARY NUMBER TO ASCII PRINT «-OF-R-REGISTEPS SET UP FOR 8-LINE SPACE(80) CALL SPACE ROUTINE JUMP TO CLEAR ROUTINE. DISPLAY EOL
CHECK FOR STOP KEY A-REG - IF STOP KEY SET ft OF CHARACTERS PER LINE TO BE
16
ROUTINE COUNTS β OF CHARACTERS PER CODE RETURNS
WITH CODE IN A-REG.IF ZERO ENO OF LINE B-REG INDICATES STATUS OF HUFFERI-I BUFFER OVERFLOW
THUS JUMP TO .SC2
NO OVERFLOW SFT POINTER TO NEXT CODE GET NMEMONIC FOR CODE CONTINUE LOOP OUFFER OVEIiFLOWJWAS OVERFLOW CHARACTER " YES RESET
OOTE. PRINT LINE
309832/0843
226272!
0756 06640 G66620 JMP LS + 2
0757 66641 021573 .SC3 LDA COUNT
0758 C6642 010364 CPA P16
S759 B6643 1704132 RET
0760 06644 164250 JHP .PRT1,1
GET REST OF LTNE ALL CHARACTERS OF LINE-ARE THERE CHARACTERS IN
THE DISPLAY BUFFER? IF COUNT 16 NO CHARACTERS NO MORE CHARACTERS
YES CHARACTERS IM BUFFER;OUTPUT!THEN GET NEXT LINE 3 09832/08A3
«762» 0763» 676A· β765· 0766· fl767· Β768» β769· 8770 «771 β772 β773 077Α C775 0776 6777 β778· 0779 0780 0701 0782 0783
THF FOLLOWING ROUTINE PROCESSES THE RUN-PROGRAM KEY
Θ66Α5 O62A13 RU7 866A6 062253 P.U71 86647 16PI310 .Λ7 06650 02BA05 β6651 025550 0665? 031550
06653 035572
06654 16A533
JSm A.IA ' CLEAR INPUT AND SET TSW=6
JSM TSW6
JSM .FMT2,I CALL FORMAT ROUTINE TO BUILD RESULT
LDA Ml
LDB .STPT
STa .STPT SET FOR OISPLAYING I/O BUFFER STb NRSLT SAVE OLD .STPT JMP RETl,I RETURN TO KY6
G70S
06655 f/6656 ÖM.57 Q6660 06661 06662 06663
O6?413
6707 ß7ö8 8709
(!6665 06666 C 66 6
066661 Ö66251 Ö21546 031630 (Ü2H50O 031605 Ö63656
066251
A.210 JSm A.110 JSM JMP JMp LDA STA LDA STA
RUA JSm JMP JMP
A.IA
RKRUF
•♦2
A. 11*2
CMA
ΡΜΛ
APMA
IMA
RPBUF
RU7
A. 11+2 EXECUTE KEYBOARD BUFFER (STOP RETURN) ERROFi IiETURN
EXECUTE PROGRAM AREA STOP RETURN CHECK TSW=2
309832/0843
β791· β792 «793 (J794 «795 β796· 6797 β798 0799 0800 «801 .ββ02 β803· «804 fl805 0806 0807 fl808 0809 «810· «en 0812 t'813
0815 6816« «817 «818 6019 0820 (3821 S022 <J823* C824 «825 6826
66670 962715 ENTER «6671 067037 66672 062725 06673 Β66705
66674 160251 ΕΝΤ3
66675 010553
66676 t'66702 06677 160323 06700 062225 Ö6701 .066674
06702 025577 C6703 075452 86704 160323 06705 Ö74113 ΕΝΤ4 Θ6706 067035 C6707 Θ71252
06710 Θ2Β400 ENDE S6711 031563 06712 Θ20532 66713 031565 C6714 164326
JSM TENTR JHP Ρ04+5 JSH ENTS JHF ΕΝΤ4
JSM .DSP»1 CPA RUN JHP «*4 JSM.SMON,I JSM KY6 JMP ENT3
LDB ERST SBM ENT3 JSM .SMON,I SBP **2 JMP P04*3 SAM ENT3
LDA P4 STA TSW LDA XB STA BP JHP RECYtI
8828 €829 0830 C831 0832 0833 6834 «835· β836 0837 0838 0839 6840 0841 0842 «843 «844 «845 «646
66715 021624 TENTR LDA DISEN 06716 072210 Ö6717 C21563
66720 010400
66721 164533
Ü6722 164302
66723 062715 ENT2
66724 867034 C6725 121605 ENT5 06726 031600 66727 6205β0 ENTl 66730 031605 06731 063112 66732 020377 £6733 063044 C6734 024532 «6735 (135566
ß6736 16055? STOVl 36737 063375 .06740 Ö74110 Ö6741 666762 Ö6742 010507
06743 066767
06744 010403
06745 170402
06746 010545
06747 066767 «6750 »10546
LDA TSW CPA P4 JMp RETl,I JMP Ell.I
JSM TENTR JHP P04+2 LDA IMA»I STa PMA LDA APMA STA IMA JSM CLDB LDA P5 JSh NW0-1 LOB"XB STB CP
JSm SXJ,I JSm .0OTE SZB **2 JMP ST0V3 CPA ETA JMP ENDV CPA Pl RET
cpa comma
JMP ENDV CPA QUOTE ENTER OKAY TO EXECUTE
NO STMT IS FROM KEYBOARD YES
DATA DELIMITER IS RUN PROGRAM KEY
DISPLAY INPUT
DATA DELIMITER
ERROR RECALL PROGRAM LINE IF A-REG NEGATIVE MORE PARAMETERS
ELSE COMPLETE
IF NONZERO DO NOT ALLOW ENTER MODE
ARE WE IN RUN PROGRAM M0DE?(TSW=4) YES
no set error ii
DON'T EXECUTE ENTER STMT(ERROR RETURN)
SET TSW=5 AND READY INPUT BUFFER SET CP AT BEGINNING OF INPUT AREA
USE INTERPRETER ROUTINE TO FETCH CODES FROM ENTER SETUP TFST FOR OUOTE FIELD • B-REG=I IF IN QUOTE FIELD IF PRESENT CHARACTfR QUOTE GOTO ST0V3
IS CHARACTER END-OF-ENTER STMT MARK? LAST PARAMETER
END-OF-ENTER STRING
YES
IS CHARACTER »?
YES.END OF VARIABLE SETUP FOR DATA IS IT "?
«847 667Sl 066757 ST0V4 JMP ST0V4
«848 «675? 025544 LDB SKEY
β θ 49 06753 063436 JSM MSTOR
0850 06754 625564 STOV3 LDB ENTSW
0Β51 P675S Ö74351 SLB ST0V2
0852 86756 066736 ST0V2 JMP STOVl
β853 «6757 16P552 JSM SXJ,I
0854 C6760 045564 ISZ ENTSW
0Θ55 Β6761 066736 JMP STOVl ■
8856 66762 010546 ENOV CPA QUOTE
«857 66763 866736 JMP STOVl
C85B &6764 021544 LDA SKEY
0Θ59 66765 B63234 JSM TRANS
«860 66766 066736 JMP STOVi
C861·
0862 06767 024475 LOB ENSTM
0863 06770 C363436 ASSG JSm MSTOR
0864 C6771 075712 SBM •-2
0865 C6772 035565 stb BP
0866 06773 C63055 JSm NWl
0867 06774 067566 JMP EX3
β86β·
6869 06775 070253 SAP •♦5
9870 06776 021430 LDA FLG
0871 66777 04?210 ASS63 IOR B13
«872 C7000 031430 STA FLG
β873 97Rfll 066727 JMP ENTl
C874 8700? P20532 LDA XB
C875 C7C33 031573 SlA CPl
C876 C70H4 C24464 LDB ASSM
β877 <!7Cß5 661436 jsm MSTOR
0878 «7006 663453 ASSG2 JSM FECH
C879 07007 C70137 LDB A
0880 07B10 610475 CPA ENSTM
6881 07011 ('67013 JMp ASSG2
C832 «17012 067Ö05 JMP ASSG3
0β83·
0«84 87013 063436 JSM MSTOR
0885 «7014 063647 JSm RKBUF*1
0886 07015 G66727 JMP ENTl
0887 «7016 Ö65357 JMP 1357B
closing quote ignore
Save variable was theke a label field? no,place variable in display yes,get next character comma is next character ignore set label field flag
IT
IF CODE IS OUOTE IGNORE
GET NEXT CODE PLACE CHARACTER IN A-REG GET NMEMONIC AND PLACE IN DISPLAY BUFFER RECYCLE
VARIABLE HAS* BEEN FOUND
STORE I AFTER VARIABLE MAKE CP POINT TO LEFT HALF-OF-WORD STORE POINTER IN ΠΡ THIS PROTECTS SAVING OF VARIABLE STORE BEGIMNING-OF-LTNE CHARACTER AT BP EXECUTE AN EOL AND RETURN FOR OATA ENTRY
CONTINUE ENTRY. IF Λ ♦ STORE DATA IN VARIABLE ELSE SET FLAG 13
GET NEXT PARAMETER IN ENTER STMT
SET POINTFR TO RETRIEVE VARIABLE GAZlNTA FOR END OF KFYBOARD ENTRY STORE CODES AT END OF INPUT STRING FETCH VARIABLE COOES
IS IT J?
YES,ALL VARIABLES RETRIEVED NCRECYClE
STORE »I» NEEDED TO COMPILE LINE PROPERLY EXECUTE INPUT
NORMAL RETURN
ERROR RETURN
309832/0863
226272!
0889· 07017 C31544 SKCD sta SKEY
0890 C7020 000377 ADA MTABL
0891 07021 070517 LDA A, I
«892 Ö7022 63)561 STA COOE
C893 Ö7023 025561 SKCDl LDB CODE
0894 Ö7024 021561 LDA CODE
C895 C7025 070342 SAR 8
flü96 07026 £'50401 ANO MASKl
ft897 67027 674442 SBR 10
0898 07030 035540 STB CN
0899 67031 170402 RET
0930
0901» Ö7032 062514 P04 JSM SCMP
0902 67033 961250 JSM STP
0903 87034 055777 DSZ RSTAK
0904 67035 020500 LDA APMA
C905 «7036 031695 STA IMA
Ö906 07037 160552 JSM SXJ, I
0907 07040 Ö10457 CPA P26
6908 87041 066712 JMP ENDE*2
C909 G7042 067037 P05 JMP «-3
0910
•THIS ROUTINE IS USED TO SETUP SKEY,CODE,AND CN (CONTROL «».ENTER WITH ASCII CODE IN A-REG/ AOD TABLE ADDRESS
GET CODE WORD.lftBIT WORD DIRECTS KEYCODE THRU SYSTEM RE-ENTERED HERE AFTER GOING TO OPTION BLOCKS
POSITION WORD FOR KEYCODE CLASS
CLASS IN A-REG,d=PROGRAM,l-0PTI0N,2=INTER.»3=C0NTR0L POSITION WORD FOR CONTROL #,CN
STORE IM CN <■ .
ERASE RETURN OF CALLING ROUTINE FOR ENTER
GET CODE FROM PROGRAM AREA
IS IT EOL?
YES RETURN TO INTERPRETER
RECYCLE
0.9 832/0843
β912· Ö1J13 ·< «914· 8915· 6916· β917· 0918 «919· 0920
e following routines process all the programmable keys and option rlock keys.
C922
β924· β925 «926* C927 0928 £929 8930
0932 0933 0934 0935 «936 0937 <?938 «939 C 940 0941· 0942 Ö94 3 0944 0945 0946 6947» 0946 C949 3950 0951 0952 0953 0954 0955 0956 0957 0950 0959 0960 «961 0962 0963 ■3964 0965 0966 •967
16347
ORG 16347F)
16347 004322 OPTN ADB TABl
16350 074717 JSM B»I
16351 166352 JHP SKC02.I
16352 B07023 SKCD2 DEF SKCDl
87043
B7043 07(144 G7045 07046 G7047 07053 C7051 07052 C7053 Θ7054 C7055 07356 07057 G7060
020403 031563
C25565 S70742 Ul5545 D67Ü55 074557 304405 C670S0 321565 Ü31566 024466 067437
NWLNE LOA SlA
NW0 JSm
NW3 LOB
SAr
CPr
JHP
NWl
P05*l
Pl
TSW
SCMP
BP
16
PSP
ADfJ JKP LOA STA LDB JMP
B,I
Ml
e-4
BP CP
BGLNE MST0R*l CALL SYNTAX ENTRY ON OPTION BLOCKS ALLOWS OPTION BLOCKS TO CHANGE CODE AND CN FOR PROC.
ROUTINE CALLED TO START A NEW LINE SET TSW=I
RESET COMPILATlOfHB=0 ON RETURN GET ADDRESS OF FIRST WORD IN INPUT STRING
ARE WE UP TO COMPILER OUTPUT AREA? YES»COMPLETEU ZEROING INPUT AREA NO.ZERO WORD IN INPUT AREA MOVE POINTER
RECYCLE
BEGINNING CHARACTER IN INPUT STRING STORE IT
P7061 Π25544 A.511 LDn SKEY ENTFiY FOR USING KEYBOARD IN ENTER MODE
Ü7062 014537 CPß STOP IS CODE STOP.USED TO ABORT ENTER MOOE
67(163 067032 JMP P04 YES
R7064 070233 SAp P02*2,C NO»IF BITl5=ß NOT FIRDT CHARACTER SO CONTINUE
P7065 D63044 JSm NWLNE*! Bins=! RESET FOR NEW LINE.TSW MUST REMAIN 5
07066 C7Ö67 C7070 0 7071 07072 07373 07074 07075 07076 07077
67101 C 710? 07103 67104 07105 €7106 071H7 07110 07111
13 C63043 D63363 C63375 076310 063017 O1C403 160551 Sl4355 067131 161560 Ö35722 C21544 050345 070137 014437 Ö24465 161621 0257?2
P02
SAp **2
JSm NWLNE JSm CKERR JSm .0OTE
JSM. SKCD CPA Pl JSm OPTNl.I CP|3 BYPS
POl
P03
170402 LAST
jsm OSw,ι stb temp?
LDa SKEY AND MASK9 LD» A
CPB EXEC LDB ENLNE JSm KSTOR,I LDl) TEMP2 RET NORMAL ENTRY FOR PROCESSING PROGRAMMABLE KEYS BlTlS=I RESET FOR NEW LINE
IS CHARACTER ΡΛΠΤ OF QUOTE FIELD? IF YES fl = l ALLOW ANY CODE IF NO r? = v). TFST FOR LEGAL CODE
RETUFiN WpH CLASS IN A-REG.IS CODE OPTION BLOCK(A = I) YES CALL OPTION FiLOCK SYNTAX NO,CONTPOL NUMnER=4R? YES,OSW SWITCH BYPASS
SEND CODF TO COmP]LEP(CALL ROUTINE THRU SWITCH OSV/) SAVE B-RFGdF NFGaTIVE -1 COMPILE« RF.JEcTF.O CODE) get phesfnt keycode option block usfs bits in skey to flag compiler
is code fol?
yes change it to code for fol in input string store codf in input area.switch word use for replace or insert. restore status of error to b-reg
309832/08^3
IN dwr 092990 «79218 I00I Iia 33Vai 13S ld aoi Eß^ÖVG C9210 0SBl
aowH* von zl'q sb£I2o 2921s 6660
· .«/.660
•A3» 33Vai 3Hl S3SS330ad 3NlIfIOa 9NIM0110J 3Hl «9669
•C666 13a 20WI 19210 2663
QOWH· vis in saneo 09210 I66»
Iia 33Vai/waON aV313 2W ONV 90^050 iS2la 066Ö
QOW«· Vai 2Λ*Θ S0AI2O 9SZIa 6969
•A3» IVWaON 3Hi S3SS330ad 3NIiOOa ONlMOH^OJ 3Hl ·9Θ69
' " »C86Ö
IN dwr aa 092S9O SS2I9 206» S»SVW ONV 11*059 "?S2la I860
UV313 Ol Q3Sn 3NIlf»0a QOHM· VOI dlSN SBIUo €S2l9 0866
•6I6Ö OiJOH 3U01S 0109 IN dwr 092S9Ö ZS2IS 8Λ6»
(Z iia)iia dois i3s *id3» si *>d aoi 00voyfj iszia
sniVis 3a3Hft aao« i39*a3m dois aoj SNiinoy νοιιΠ33Χ3 oowm* van dis sa/.i2ß 05210
•Si.69 Ö0S2I 9aO · 0S2I» *iLb$
«C/.60
dOlS 3Hl S3SS330ad 3NlIOOa 9NlMOTlOJ 3Hl «2i69-
«••»«••»»«•»»»••••β ••««»»••»••0/.6Ο
1004« 1005« 1006· 1007· THE FOLLOWING ROUTINES PROCESS THE FIXED ANF FLOAT KEYS
1008·
1009 16367 ' OHG 16367R
1010·
1011 16367 154360 .TBA DEC -1000
DEC -1000
OEC -100
DEC -10
1012 1013
16370 176030
16371 177634
16372 177766 DM10 101S·
1017· 1018·
1019· The following routine processes the sfg
1020· 1021· 1022 16373 C21430 B.77 LDA FLG
SLA «H
STa FLG
RET TABLE OF CONSTANTS USED IN CONVERTING BINARY TO ASCII
1023 1024 1025 1026· 1027 1028» 1029 1030 1031 1032· 1033 1034
16373 C21430 B.77
16374 P7P051
16375 Ö31430 BRBl
16376 170402
GET FLAG WORD
SET FLAG ß.INTERRUPT FOR SFG RETURN TO STOREAGE LOCATION
16377 000000
67112 07112 O2PI207 G7113 164255
BSS
ORG LASTM
LOa .DRUF JMP LlBAtI
CHECKSUM WORD
SYSTEM MONITOR ROUTINE (CONT.)
07114 C31720 .STCD STa K C7115 164252
JHP .BF3D,I LOAD AODRFSS OF Ol SPI. AY BUFFER CALL ROUTINE TO CLEAR THIS RUFFER
A-REG HAS CODE TO BE STORFO IN DISPLAY BUFFER
CALL ROUTINE TO STORE THIS CHARACTER IN DISPLAY BUFR
309832/0843
1036» 1037· 1038» 1039» 1040 1041 1042 1043 1044* 1045 1046* 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057» 1058 1059 1060 1061 1062 1063 1064 1065 1066 Iß67.
1068 1069 lß70 1071 1072» 1073 1074 1075 1076 1077
The following routines-are the display and.
printer routines used to output' user system commands.
«711fi'ß63112 67117 063123 67120 »63204 B7121 667114
.STLN JSM CLDB
• JSh .STLl
JSM COLN
JMP .STCD
67122 063135 STLN 'JSm OSNO
£7124 67125 Ö7I26 37127 G7130 67131 S7132 27133 67134
G7135 67136 07137 Ö7140 E7141 (37142 C7143 fJ7144 &7145 37146 Ö7147 S71S0 67151 07152
C71S3 67154 67155 67156 67157
070742 B31571 021547 063160 063114 021725 Ö10460 1.70402 063165 G67127
070742 031^47 G21546 663153 07Co7fl Ul1546 170402 07Po70 078537 R75713 045547 (Jl 4435 170402 £367
.STLl SAR
STA LINCT LDA SNO JSM SBA JSm .STCD LOA TEMP3 CPA ENDSR RET
JSM CBA JMP *-5
DSNO SAR STA LOA JSM SlA
DSl CPA RET
DS2 SIA
ton
S(3P ISZ CPB RET 0S3 JMP
16
SNO CMA FMIl
«-♦1 CMA
»♦1
Λ»Ι DS2 SNO Ml
OSl
FMIl
B70537 ßl44fJ5 170482 C67153
ADA Ml LÜB A,I CPB Ml RET JMP. *-4 ROUTINE USFD TO RUILO LINE H CALL ROUTINE TO CONVERT BINARY U TO ASCII
PLACE COLON WITH ft ' ' STORE : IN DISPLAY
ZERO LOCATION WHICH WILL HOLD « OF CHARACTERS IN
LINE η
GET CURRENT LINE ft
CONVERT IT
STORE AN ASCII CHARACTER
GET POINTE« TO TABLE OF DECIMAL CONSTANTS ARE FINISHED WITH CONVERSION PROCESS?
YES
NO,CONTINUE CONVERSION PROCESS RECYCLE
ROUTINE USED To DETERMINE CURRENT LINE #.CLEAR LINE
ADDRESS OF CURRENT. PROGRAM LINE CALL ROUTINE TO FIND REGINNING OF PROGRAM ADOHESS OF FIRST LINE IS A-REGU ON RETURN " IS'THAT THE CURRENT LINE?
YES RET
INCREMENT SEARCH POINTER
GET NEXT WORD
IF 8IT15=1 THEN BEGIWNING-OF-NEW-LINE ELSE RECYCLE FOUND NEW LINE INCREMENT LINE » COUNTER ARE WE AT END-OF-PROGRAM?
YES RETURN TO- CHECK IF FOUND CORRECT LINE
ROUTINE USED TO FIND REGlNNING OF CURRENT PROGRAM starting address is in a-reg. get word is it -1?<-1 is used as boundary markers for program area).yes-found-it
RECYCLE
309832/0843
1079· 07160 031573 SRA CBA sta COUNT
1080 «7161 Ö20474 LÜA CNTAR
1001 67162 031725 STA TEHP3
1082 «7163 070742 SAR 16
1083 • 7164 867172 JHf ΓϋΒΤΙ-ι
108'»
1085» £71 'C SUBTl LDA 060
Ö7166 C45725 ISZ TEMP3
ΐοβν 87167 025725 LDB TEMP3
1088 • 7170 014460 CPB ENDSR
1089 67171 C67206 JMP LOIGT
1090 C7172 025573 OVFLW LOB COUNT
1091 C7173 105725 ADB TEHP3,I
1092 «7174 074212 SBH OVFLW
1093 67175 035573 STi) COUNT
1094 β7176 000403 COLN ADA Pl
1095 C7177 067173 JMp SUBTl
1096 67200 071310 LOIGT SZA COA *1
1097 G72P1 040355 IOR 060
1090 67202 C45571 ISZ LINCT
1099 07203 170402 .LOC. RET
1130 67204 Q28470 LDA COLLN
1101 €7205 C67201 JHP OVFLW+1
1102 07206 021573 LDA COUNT
1103 87207 C67201 JHp OVFLW+1
1104
1105· Ö72ie 025566 Κ2 LDB CP
1106 G7211 C35574 STB CPE
1107 47212 £•21571 LDA LINCT
1108 37213 070076 TCA
1109 67214 C30364 ADA P16
1110 87215 031573 STA COUNT·
Uli Ρ7216 063355 JSh OHECP
1112 07217 063257 JSh .FDCH
1113 Ö7220 010465 CPA ENLNE
1114 Β7221 067216 JHP K2
11)5 67222 CU 0466 Κ3 CPA BGLNE
1116 87223 C67230 JHP STOl
1117 67224 075513 SBp K2
1118 67225 014407 CPB H3
1119 «7226 067230 JHP STOl
1120
1121· »7227 063367 JSm INCP
1122
CONVERT SET UP ROUTINE.»IN A-REG ADDRESS OF POWERS OF 1 :* CONSTANTS STORE IN POIfJ1ER TO THIS TARLE
Λ-ηεο HERO. USED TO SUPPRESS LEADING ZEROS GOTO GET FIRST CHARACTER
AFTER FINOlNG FIRST NONZERO CHARACTER CONT. ENTRY PT INCREMENT POWERS OF TEN TABLE POINTER
ARE WE COMPUTING LAST DIGIT?
YES LAST DIGIT
NO.GET REMAINDER OF BINARY #
SUBTRACT OUT NUMBER OF CURRENT TENS POSITION DIGIT IF MINUS OVERFLOW.TERMINATE DIVIDE NO OVERFLOW SAVE DIGIT
OVERFLOW OCCURRED.IF ZERO NO NONZERO DIGIT FOUND MAKE DIGIT ASCII
INCREMENT CHARACTER COUNTER
RETURN WITH ASCII DIGIT
SET CHARACTER TO BE COLON
LAST DIGIT» THUS COUNT CONTRAlNS OCD DIGIT MAKE IT ASCII
ROUTINE USED TO DETERMINE CHARACTERS FOR DISPLAY.
SAVE CURRENT INPUT STRING POSITIOfJ(IS NEXT AVIALU) DETERMINE " OF POSITION LINE # WILL TAKE UP 16-LINCT
IS THE ti OF POSITIONS LEFT FOR CHARACTERS IN DISPL STORE RESULT IN COUNT
MOVF. CP RACK TO GET KEYCOt)E FROM INPUT AREA CALL ROUTINE THAT RETPNS WITH STATUS OF DISPLAY BUFR
A-REG HAS CURRENT KEYCoDF R-REG STATUS OF BUFR. EOL CONTINUE SCAN INPUT STRING BACKWARD BOL CHARACTER?
YES START OF INPUTSTRING FOR TRANSLATION HAS BEEN FOUNO.
IF B=-3 PRESENT KEYCODE VHLL FILL BUFFER
POINTER OF TRANSLATION PROCESS
B-REG=-!. THUS LAST CHARACTER WILL OVERFLOW RUFFER
309832/0843
1124» 67230 063634 STOl JSm * .S4
1125 G7P31 063376 JSM TRANS JSm .0OTEvI
1126 G7232 063234 JSM JSM TRANS
1127 07233 067230 JMP LDA STOl
1128 S2A
1129· C7234 063242 JSM .SRB.
1130 C7235 160252 JMP .BF3D,I
1131 (57236 Ö21722 M
1132 67237 070610 .SRB. LOB .5RS3+2
1133 07240 161620 STa NCODE,I
1134 07241 067235 cpa
1135 »«·«««< HHHHHHM JMp
1136·' G7242 025575 CPA OOTE
1137 G7243 031720 JMP K
1138 C7244 Ö10465 SZB ENLNE
1139 07245 067251 .SRB3 SBR .SRB3
1140 G7246 010466 stb BGLNE
1141 G7247 C-67251 RET .SRB3
1142 «7250 074210 JSM » + 4
1143 07251 Ö74742 SAP 16
1144 G7252 G35722 JMp M
1145 C7253 170402
1146 G7254 160253 .BF5A,I
1147 07255 071713 ö-2
1148 67256 074737 B» I
1149
SET INPUT STRING INTO DISPLAY BUFFER
SETUP QUOTE FIELD TRANSLATE CODE RECYCLE.
CALL ROUTINE WHICH RETURNS WITH FIRST CHARACTEK.STORE Π IN OISPLAY BUFFER
IF M//R MOpE CHARACTERS IN MNEMONIC LINK WORD FOR GETTING NEXT CHARACTERS RECYCLE
LOAD CONDITION OF OOTE STORE KEYCODE IN K IS CODE EOL?
YES TRANSLATION NECESSARY IS CODE BOL?
YES TRANSLATION NECESSARY IF B-REG=O NO QUOTE FIELD THUS TRANSLATE
ELSE NO TRANSLATION SET M FOR ONE CHARACTER
CALL ROUTINE To GET FIRST CHARACTER IF B1T15 SET ON A-REG THEN GENERAL MNEMONIC ROUTIN OY OPTION BLOCK.LINK FOR FIRST CHARACTER B-REG.
309832/0843
1151· 67?57 «63457 .FOCH JSh FETCH
1152 87260 P31544 STA SKEY
1153 «7261 06T355 JSm DHECP
1154 «7262 !17(1650 SZa *»13
1155 P7?63 010465 cpa ENLNE
1156 (57P64 £67271 JMP .Fl
1157 0726S 010466 CPA BGLNE
1158 C7266 067271 JHP .Fl
1159 07267 063375 JSm .00TE
1160 C7270 074150 szb «♦3
1161 G7271 070742 .Fl SAR 16
1162 G7272 Ö67274 JMp •♦2
1163
1164· 07273 160306 JSm .BF5G.I
1165 07274 070073 SAp •♦1»C
1166 67275 003403 ADA Pl
1167 67276 G70076 TCA
116Θ 87277 0^1573 AOa COUNT
1169 β730<3 373412 SAM .F2
1170 67301 t)7C250 SZA .F3
1171 0730? 074742 SBR 16
1172 67303 031573 sta COUNT
1173 C73CJ4 021544 .F4 LDA 5KEY
1174 07305 170402 RET
1175
1176· 67306 024407 .F3 LDB M3
1177 07337 C67303 JMp .F4-1
1178
1179· 07310 024405 .F2 LDB Ml
1180 07311 067304 JMP .F4
1181
ROUTINE FOR DETERMINE THE «OF KEYCOOES THAT WILL FIT IN DISPlAY.
FETCH ADVANCE CP. THUS MOVE IT BACK IF KFYCODE IS ZFRO.FIX TO INDICATE NO CHANGE IF EOL OR BOL
SPECIAL ACTION IS TAKEN GET INFORMATION ABOUT QUOTE FIELD
B=fl NO OUOTC FIELD.FIND OUT ABOUT MULTICHARACTER. SPECIAL HANDLING OF EOL AND BOL
CALL ROUTINE FOR DETERMINING « OF CHARACTERS FOR
THIS CODE.REMOVE GIT15 IF SET. · A-REG HAS * OF CHARACTER-1
SUBTRACT #0F CHARACTER FROM COUNT(POSITION LEFT» IF MINUS BUFFER OVERFLOW IF ZERO BUFFER JUST FULL
SOME POSITION LEFT THUS I3-REG=0 ON RETURN UPDATE COUNT MORE ROOM IN DISPLAY BUFFER
DISPLAY FULL
LAST CHARACTER OVERFLOWED DISPLAY BUFFER
309832/0843
1183»
1184· ThF FOLLOWING ROUTINES ARE SYSTEM ROUTINES
1185» FOR THE CONTKOL SUPERVISOR.
1136»
1188· 1199* 1190 07312 024405 .CSIN LDB Hl
1191 €7313 135543 STB LIMItI
1192 67314 035431 ST0 143 IB
1193 67315 021543 LDA LIMl
1194 67316 031715 STA DFUN
1195 G7317 070070 SlA «ti
1196 C7320 031542 STA ENDS
1197 ί!7321 CJ45542 ISZ ENDS
1198 67322 135542 STb, ENDS»I
1199 «37323 024521 LDB STEN
1200 •37324 070577 STB A,I
1201 £7325 031600 STA PMA
1202 07326 021377 LDA MAW
1203 07327 031712 STA RR
1204 €7330 t-)??166 LDA .KBR3
1205 07331 031711 STA ILINK
1206 Β7332 02Θ532 LDA XB
1207 Ö7333 Π31565 STA BP
1208 Ö7334 023354 LDA UNCl
12P9 07335 031552 STA UNCOT
1210 G7336 070742 SAR 16-
1211 G7337 031625 STA 1625B
1212 07340 161710 JSM .END2»
1213 67341 061253 JSH NSTP
1214 G7342 C63055 JSH NWl
1215 . e7343 062433 JSM RCLL ·
1216 67344 063496 JSh DRCMA
1217 67345 Ö66223 JMP .CS+1
1218*
1219 Ö7346 061250 END JSM STP
1220 67347 C63712' JSM RGTO
1221 07350 «31546 STa CMA
1222 Β7351 031604 sta NMA
1223 07352 074742 SBR 16
1224 87353 035430 STB FLG
1225 G73S4 170402 RET
CSIN CONTINUATION
OF THE INITIALIZATION ROUTINE ON PWR UP.-l FOR SET BOUNDARY FOR COMPILER OUTPUT AREA MAIN-PfiOßRAM BOUNDARY MARKER.
INITIALIZE DEFINABLE FUNCTION AREA TO BE MAIN-PRG. A-REG POINTS TO FIRST WORD OF USER-PROGRAM AREA SETUP END$
FIRST WORD IN PROG AR^A .SET TO ENO EOL THUS *1 ENDS SET -1 FOR END-OF-PROGRAM MARKF.R
STORE "ENO EOL" FIRST PROGRAM LINE· SET PMA (INTERPRETER POINTER TO MAIN-PROG.)LINE
SET BEGINNING R-REG POINTER'TO HIGHEST ADDRESS SET INTERRUPT LINKAGE TO NORMAL KEYBOARD RETURN
SET INPUT STRING AREA TO BEGINNING WORD SET UNCOMPILER OUTPUT TO INPUT STRING AREA
CLEAR SECURE PROGRAM PROTECT FLAG EXECUTE "FND"
CLEAR STOP FLAG
NEEDED TO SETUP CP
PECALL LIfJE 0 OF PROGRAM AREA
PUT PROGRAM LINE BACK TO FIRST LINE JMP CONTROL SUPERVISOR
ROUTINE IS ONE OF THE PIECES IN THE TOTAL END LINK
CLEAR ALL "FLAGS"
309832/0843
Ϊ227·
1229·
1230 «7355 »255*6 ORECP LDB CP
1231 C73S6 074672 St)M iNCPltC
1232 «7357 (134403 ADB Pl
1233 07360 076553 SUP lNCPltS 123'»·
C7361 974742 S8R
fl7362 3M352 JSh RBAD
«7363 025577 CKERR LDß ERST
07364 074413 SUP INCP1«1
87365 055777 RET2 OSZ RSTAK
07366 170402 KET
1237 1236 1239 1240 1241 1242 1243· 1244ν·*······«···β«·»»αβαβα···β» 1245* Ö7367 0255*i6 INCP LDR CP
07370 ί'7Μ53 SBP **3»S
07371 074073 SBp «*1,C
07372 OB4405 ADB Ml
1246 1247 1240 1249 1250 1251 1252
07.171 035566 INCPl STß CP 07374 170402
RET
1254· 1255 1256 1257 1258 1259 1260
1262 1263 1264·
1266·
1268 1269 1270
1272 1273
1275
07375 021544 .QOTE LDA SKEY
07376 025575 LDB QOTE P7377 01(1546 CPA QUOTE »7400 Ü674f!2 JMP 07401 170402 RET B7402 076111 SLB E74fi3 074071 SLB (57404 015575 SlB QOTE «7405 170402 RET
«7406 055546 DRCMA DSZ CMA
«7407 021542 LDA ENDS
«7410 Ol1546 CPA CMA
07411 173402 RET
07412 121546 LDA CMAiI C7413 071553 SAP «-5 07414 010405 CPA Ml P7415 045546 ISz CMA 97416 170402 RET
UTILITY ROUTINE FOR DRECEMENT CP
RESET ERROR NUMBER IN .WMOD IF ERROR B-REG=-HIF ♦ RETURN
UTILITY ROUTINE FOR INCREMENT CP
routine: sets flag for presents tor quote fieio present keycode in a-reg.flag (qote) in b-reg
COMPLEMENTS LSB OF D-REG IF A-REG HAS QUOTE KEYCODE
UTILITY ROUTINE USED
IF CMA IS POINTING AT PROGRAM ENO RETURN
TO POINT PROGRAM-LINE-POINTER(CMa)TO PRECEEOING LINE
IF BOUN1OARY MARKER FOUND CORRECT CMA
309832/0843
1277» 07417 G35544 INSTK STb SKEY
87420 C21566 LDA CP
07421 031574 STa CPE
C7422 063457 JSM FETCH
07423 073750 RZA fl-l
07424 063355 JSM DRECP
1278··· ··«·*·*··» ··»«**«·«*·♦«*«»# 07425 C63355 JSM DRECP
1279· 07426 063457 JSM FETCH
1280 Θ7427 070137 LDB A
1281 07430 063436 JSM MSTOR
1282 «7431 063355 JSM DRECP
1283 07432 C15574 CPB CPE
1284 07433 £67435 JHP **2
•1285 07434 067424 JMP ft—A
1286 07435 025544 LDB SKEY
1287 tu ##·&<} ^ HHHHHHM
1288
Ϊ289 87436 021566 MSTOR LOA CP
1290 87437 070133 SAP •♦2,C
1291 87440 076052 SBM **1 tS
1292 87441 031717 STA TEMPI
1293 97442 121717 LDA TEMPItI
1294 07443 074173 S8P ■"•«•3»C
1295» 57444 050472 AND MLMl
I c ύ o w
1297«
07445 067450 JMp »♦3
1298 07446 050345 AND MASK9
1299 C7447 074444 SBL 7
13<*6 S7450 074217 IOR B ·
13»1 C7451 131717 STA TEMPItI
1302 07452 067367 JMP INCP
1303
1304 C7453 025573 FECH LDB ( :pi
1305 G 74 54 C63462 JSM SUQ2
1306 67455 Ö35573 STB CPl
1307 07456 170432 RET
1308 67457 025566 FETCH LDB CP
1309 07460 061462 JSM SUB2
1310 87461 067373 JMP. INCPl
1311·
1312 (37462 874232 SUB2 SBM FECHItC
1313 07463 074517 LDA BtI
1314 Q7464 070302 SAR 7
1315 07465 076213 SBP EXXtS
1316 C7466 G74517 FECHl LDA BtI
1317 B7467 050345 AND MASK9
1318 B7470 004405 ADB Ml
1319· 07471 170402 EXX RET
1320
1321
1322
1323
1324
1325
1326
1327
UTILITY ROUTINE FOR INSERTING'CHARACTERS INTO INPUT STRING
save present address for new keycode move cp to end of input string
move cp back to last character
GET CHARACTER '
STORE IT ONE POSITION FORWARD PARTIAL ADJUSTMENT ON CP
IS ROOM MAKING COMPLETE? YES, STORE NEW CHARACTER
UTILITY ROUTINE USED TO REPLACE-STORE KEYCODES IN THE INPUT BUFFER APEA.GET POINTER IN A-REG. BIT15 USED TO INDICATE WHICH HALF WORD =0 LEFT HALF
ADDRESS OF WORD IN TEMPI GET WORD
b-reg has keycode.bit 15 is now flag for which half right-half storeage.clear the location
left-half storeage.clear the location left adjust
or into word
store word in input ruffer area increment cp to next avialable location
utility routine use to fetch from input area with pointep cpl.determine which half to fetch.
cpl has been increment to next character.(same
scheme of addressing as arove) utility routine use to fetchfrom input area with
pointer cp.
adjust cp to point to next character
if bit15 set fetch right-half left-half fetch.get word right justify
adjust pointer in b-reg right-half fetch.get word-REMOVE LFrT-HALF ■ ADJUST POINTER IN B-REG
•309 832/08 A 3
1330···········*·«······«**· fl7472 021546 DELT LDA ο·»·«··
1331· β7473 »3)717 . STa
1332· 07474 011542 CPa
1333 C747S 067513 JMP CMA
1334 07476 070537 LDB TEMPI
1335 «7477 014405 CPB ENDS
1336 07500 17R402 RET .AB
1337 07501 070073 SIA A.I
1338 0750? 070517 LDB Ml
1339 (57503 075713 SBP
1340 •♦I
1341 07504 135717 .A4 STB A,I
1342 075e5 011542 CPA •-2
1343· B7506 067513 JMP
1344 (57597 045717 ISZ TEMPI,I
1345 «7510 070070 SlA ENDS
1346 07511 07R537 LDB .Λ8
1347 07512 067504 JMp TEMPI
1348 07513 021717 .A8 LDA •♦1
1349 075)4 031542 STA A,I
1350 07515 066236 JMp .A4
1351 TEMPI
1352 Im ^* ^ »■ Wl Wt ^ " ^* ENDS
1353 07516 0217C5 CKSTP LDA .18
1354· P7517 070273 SAP
1 -* -> j
1356·
C7520 »31705 STA
1357 07521 021701 LDA .WMOD
1358 07522 160323 JSM •♦5tC
1359 07523 021705 LDA .WMOO
1360 «7524 870144 SAL .WKC
1361 07525 170402 • RET .SMON,I
1362 .WMOD
1363 13
1364
UTILITY POUTINE USED TO OFLETE A PROGRAM LINE
POINTED TO BY CMA. SAVE CURRENT CMA ARE WE TPYIUG TO DELFTF ROUMDARY MARKER YES,DON'T LOOK FOR END OF CURRENT PROGRAM LINE GET AWORD IN PROGRAM LINE
IS IT -I?(COULD HAPPEN IN DEFINE-A-KEY) YES
MOVE POINTER
GET WORD
IF BIT15=1 FOUND BEGINNING OF NEXT LINE ELSE RECYCLE
MOVE WORO BACK (ALL OF THE PROGRAM IS MOVED BACK) OVER THE LINE TO BE DELETED. HAS AREG REACHED ENDS YES TRANSFER COMPLFTE.
INCRFMFNT STOREAGE POINTER
INCREMENT FETCH POINTER
GET NEXT WORD
RECYCLE
TEMPI NOW HAS NEW LOCATION OF BOUNDARY MARKEO ADJUST ENDS
ADJUST LIMl.NECESSARY IF WORKING IN OEFIN.FUNCTION
UTILITY POUTINF USE TO CHECK FOR STOP ENTRY.THE ROUTINE WILL ALLOW THE INTERRUPT CLASS OF KEYCODES
THERE HAS BEEN A NEW KEY ENTRY. GET KEYCOOE ALLOW SYSTEM TO TRY AN EXECUTE IT. «MOVE STOP SIT TO SIGN POSITION
309832/0843
1366·
1367·
1369·
1370*
07526 0217f!5 TRAC LDA 07527 O7S211
07530 063055
07531 S62620 97532 06?253 G7533 624535 07534 035570 87535 024414 67536 035605 07537 065250
1372
1373
1374
1375
1376
1377
1378
1379
13B0
1381»
1382
INT
WMOD SLA INT JSM NWl JSM L5*2 " JSM TSH6
Lon tops
STB ISP LDB AISP STo IMA JMP STP
JSm DSNO
07540 063135 1383·
13Θ4 07541 021546 UNCPl LDA CMA
97542 031663
07543 Ö31662
1387 07544 G7O070
1388 07545 070537
1389 C7546 C75653
1390 07547 031546
1391 57550 025663
1392 07551 t<63716
1393 07552 163311
1394 S 7553 C21573
1395 87554 031566
1396- C7555 164303
226272
CHECK FOR TRACE MODE
TRACE MODE
PRINT INPUT
6ET ADDRESS OF FIRST WORD TN COMPILER OUTPUT AREA STORE IN POINTER FOR INTERP. WHEN WORKING WITH COMPILER OUTPUT AREA. PUT ADDRESS OF POINTER B-REG
STA 1663B STA 1662B SIA LDB SBp *-3 STA CMA LDB 1663B JSm RG0 JSM UNCPLtI LDA CPl STA CP JMP OUT,!
SAVE STARTING ADDRESS OF CURRENT LINE SET UP FOR UNCOHPILER
GET WORD FROM LINE
FOUND NEXT LINE;PLACE ADDRESS OF CURRENT LINE IN 8 RESET GTfli AND GSB'S ADDRESSES
1398» 1399·
1400·········#•»•ο»···«·»«··*««»·· 1401·
1402 67556 021563 LDA TSW
1403 07557 025577 EXEQT LOB ERST
1404 07560 974452 SUM EX3*3
1405 07561 070412 SAM EX3O
1406 07562 063355 JSM DRECP 1437 87563 063457 JSm FETCH 14fl8 C7564 010475 CPA ENSTM 1409 07565 067601 JMP EX4 J410 «7566 020437 EX3 LOA EXEC
1411 β7567 ß63017 JSm SKCD
1412 «7570 563109 JSm POl
1413 fl7571 074352 SßM EX1*2
1414 B7572 025575 LDfJ QOTE
1415 07573 074111 SLn **2
1416 «7574 C65317 JMP 1317B
1417 07575 021563 LDA TSW
1418 «7576 072052 EXl SAM »«1»S
1419 07577 031563 STa TSW 142B 87600 170402 RET
jsm dpecp
JSh SCANl JMP EX3
1422 07601 063355 EX4
1423 (17602 C63604
1424 87603 067566
A-REG HAS TSWtIF SIGN BIT SET EOL ALREADY PRESENT SO RETURN
LOOK AT LAST CHARACTER IN INPUT STRING IS IT "1"?
YES,GO RECOMPILE LINE NO,LOAD COMPILER EOL CODE SET UP SKEYt COI)Ei CN SEND TO COMPILER
IF -1 COMPILER DIDN'T EXECEPT EOL CHECK QUOTE FIELD FLAG DO "«S BALANCE?
EROOR «1 SYNTAX ERROR.
SET EOL FLAG IN TSW
X FOUND AT END OF INPUT STRING RECOMPILE LINE
PLACE EOL IN LINE
309832/08^3
ORIGINAL INSPECTED
1426»
1428· 1429 1430
1432 1433 1434 1435 1436· 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450· 1451 1452 1453 1454 ' 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464» 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474· 1475 1476 1477 1478 1479 1400 1481
07604 062514 SCANl
07605 Cf20354 β7606 031621 €7607 C321565 B7610 025566 87611 031566 SCAN3 07612 035574
07613 67614 07615 67616 67617 07620 C7621 C7622 97623 67624 C7625 07626 07627
07638 C7631 07632 «37633 57634 67635 07636 G7637 07640 G7641 G7642 97643 07644
063634 .Sl
063017
021544
010466
C67613
C563355
074742
O7B250
016465
067557
162202
075253
17G402 .S2
SBR SZA
.S3
.S4
063457
P63376
010465
063572
C25S66
015574
Ϊ567642
C21705
071412
067457
G55777
061253 RET3
1643553
LDA SAM
ß7645 067365 07646 160315 RKBUF 67647 063556 97650 C75652 07651 663526 fl7652 160524 07653 074752 Ö7654 063523 07655 071312
07656 020420 RPBUF LOA P4 67657 C31563 07660 C63407 e7661 C61516 Ö7662 071552 «7663 070704 07664 070213
JSM SCMP LDA UNCl STA KSTOR LOA BP LDB CP STA CP STB CPE
JSM .S4 JSM SKCD LOA SKEY CPA BGLNE JMP .Sl JSM DRECP
16
.S2 CPA ENLNE JMP EXEOT JSM .PRGtT SBP .Sl RET
JSM FETCH
jsm .οοτε+i
CPA ENLNE JSM EX3*4 LDB CP CPß CPE JMP »«-4
.WMOD .S4-4 JMP FETCH DSZ RSTAK JSm NSTP JMP OUT,I
JMP RET2
JSM INTRP,I
JSH EXEQT-I
SBM *-3
JSM TRAC
JSM XRI,I
SBM RUN3
JSM CKSTP+5
SAM RET3
RESET COMPILATION « SET STORE TO REPLACE MODE
GET BEGINNING POINTER GET CURRFNT POINTER MOVE CP BACK TO FIRST CHARACTER SAVE VALUE OF CP UPON ENTRY TO ROUTINE
CHECK FOR END STRING OR FETCH KEYCODE
IS CHARACTER BEGINNING LINE CHARACTER»BOL
YES RECYCLE RESET POINTER TO INPUT AREA
IF CHARACTER ZERO INPUT STRING COMPLETELY SCANNED CHARACTER EOL JUMP TO EOL ROUTINE
PROCESS KEYCOOE(FORCE KEY TO BE PROGRAMMABLE) DID SYSTEM "EXCEPT IT? IF ♦ YES NO
IS SCANNING COMPLETE? YES
IF NEW KEY RECYCLE UNTILL CP=CPE NO NEW KEY
USED BY RKBUF AND RPBUF
SETUP RUN TIME STACK EOL THROUGH SYNTAX IF ERROR CANCELL RETURN PRINT LINF. IF TRACE;SETUP <IMA)->ISP CALL INTERPRETER
STOP FLAG
STA TSW
jsm drcma*1 JSm ckstp
SAM RPBUF-I SAL SAP «♦/» MOVE CHA RFGINNING LINE ALLOWS INTERRUPT KEYSiSETS UP IF - STOP FLAG TRACE BIT IN BlTlS
.WMOD
3.0 9 8 32/08 A3
1482 ί>766<; 063135 JSh DSNO TPACE MODFlCET LINE *
1483 «7666 Ρ63116 " JSm .5TLN
1484 «7667 160250 JSm .PRTl,!
1485 0 767β 16β5?4 RUNl JSm XfU. I CALL INTERPRETER
I486 07671 C67675 JMP ·♦/♦
14 87 β767? 021563 RUH3- LDA TSW
1488 07673 000410 ΛΟΛ Μ4
1489 67674 P72S10 KZA RUf J 4
1490 07675 121605 LOA IHA,I '
1491 «7676 070073 SAP °*1»C ,
1492 (17677 03154 6 STA CMA
1493 Θ770Ο 075Β13 SBP RPRUF+p IF ♦ NO ERROR
1494 β 7 7 01 063496 JSM DRCHA ERROR
1495 07702 160417 jsm RNTER»I
1496 «7703 063045 JSM NW0
1497 97704 063556 JSm EXCOT-I
1498 W7705 067707 JMP •♦2
1499 C7706 062230 HUN4 jsm CR0 BUILD DISPLAY
1500 07707 Ü61253 jsm NSTP
1501 0771(3 Ü66650 JMP .Λ7*1
309832/0843
1503· 1504 1505» 1536 1507 1508 1509 1510 1511* 1512 1513
07711 800145 RESET OCt 226272E
1515 1516 1517 1510 1519« 1520
1522 1523· 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537· 1538 1539 1540 1541 1542 1543-
07712 870742 RGTO
07713 031567
07714 025715 B7715 621542 67716 031722 RGB
07717 015722 RGl
07720 Ö66236
07721 074517
07722 050472
07723 070302 G7724 976052
07725 067731
07726 074517 RG2
07727 050345 07730 574070
07731 07732 Ö7733 «7734 07735 07736 07737 07740 07741 07742 Ö7743 «7744 07745
Ö7746 07747 37750 07751 S7752 07753
035723 "RG3
063376
076410
R10350
067746
010526
C'67746
Ö25616
374119'
G747-17
025723
075132
067717
G25723 RG4
Ο7Θ742
074133
S74Ö70
374557
377530 RGG
SAR STa MPH LDB DFUN LDA ENOS STA TEMP2
TEMP2 JMP LDA B»I AND MLHl SAR SBM °+l»S JMP RG3
LOA B,I AND MASK9
STB TEMP7 JSM «QOTE+1 RZb »+8 CPA GTO JMP RG4 CPA GSB JMP RG4 LDB ERASE SZB 0+2 JSM BtI LDB TF.MP7 SBM RG2,C JMP RGl
LDB TEMP7 SAR SBP «*2»C SIB
STA B,I RIB RG4-1 SET FOR FAST GTO»S ENDING "
LOOK THROUGH COMPLETE PROGRAM FOR GfO*S AND GSb»S SET LIMl .
LEFT HALF REMOVE BIT 14 AND 15. RIGHT JUSTIFY KEYCODE
UPDATE WORD POINTER jump το check code for gto or gsb
RIGHT HALF GET RIGHT-HALF CODE UP-DATE WORD POINTER
SAVE CHARACTER POINTER CHECK FOR QUOTE FIELD B=I FOR PRESENTS OF QUOTE FIELD IS CODE GOTO?
YES
IS CODE GOSUB?
YES
CHECK TO SFE OPTION WANTS CONTROL IF ZERO CONTROL STAYS WITH THIS ROUTINE ELSE B HAS ADDRESS OF EXPANSION ROUTINE " RETURN CHARACTER POINTER TO FJ-REG. PRESENT CODE LEFT-HALF GO FETCH RIGHT HALF ELSE GFT LEFT HALF
RETURN CHARACTER POINTER TO B-REG.
ADJUST POINTER FOR ZEROING WORD FOLLOWING GTO OR GSB.
CLEAR WORD
NEXT CODE IS IN LEFT-HALF
309832/0843 '
OR/GiNAL INSPECTED
1545· 1546< 15'« 7 1548· 1549· 1550· 1551· 1552* 1553· 155'*· 1555· 1556· 1557· 1558 1559 }560 1561 1562 1563· 1564 1565 1566 1567 1568 1569· 1570 1571· 1572 1573 157/* 1575 1576 1577 1578 1579 15βΟ 15ί»1 1582 1503 15R4 15Η5 1506 1507 1518 1509 1590 1591· 1592 1593
»3275
32758
in the 9α20λ one level of interrupt is proviofo. for the π λ ϊ. ι c systfm this level is occuppieo by the keyboard. however by providing a r/w switch wodd.that nopmal links to the keyboaro routinei option blocks can exleno the interrupt handling capability of the 9p?0A to 12 devices
INTERRUPT ROUTINE
(Un t0rb re c he r-P rogrnmm)
83275 172700 INTER SFc «3276 067302 33277 031760 C3300 020204 033Pl 165711
JMp SPINT STA SAVEA LUA KYOD JMp RINK,!
031562 SPINT STa SAVAS
Ö3303 020537 LDa STOP
03304 167305 JMp »*1»I
C3395 007761 DEF .KBRI
00204 ΚΥΒΟ EQU 204B
07754
07754 «7755 07756 017757 07763 67761 fl7762 G7763 07764 07765 07766 07767 67770 S7771 «7772 07773 «7774 ß7775 67776
172160 172741 172240 37B342 050345 031701 013711 064000 O7B210 021705 072352 031705 C21562 17376(1 172700 170402 021760 173741 170402
07777 07777 B00000
STF LlA
SAR
.KBR
.KRRl STA CPA JMp
LDA SAM SlA LDA CLF SFC RET LDA CLF RET
RG6*1
16
MASK9
.WKC
RESET
0B
«♦4
.WMOD
«♦l.S
.WMOO
SAVAS
16
I)
SAVEA 1
1595 • NO ERRORS·
ORG 7777H BSS
END IF STOP KEY PROCESS YES.STOP KEY
SAVE A-REG
ADDRESS OF KEYBOARD(12) NO.ALLOW FOR EXPANSION OF INTERRUPT
STOP INTERPUPT;SAVE A-REG LOAD STOP CODE
GO SET NEW KEY FLAG
(Fort·;. )
SYSTEM MONITOR ROUTINE (CONT.) ENABLE KEYBOARD TO PLACE COOE ON INPUT LINEStRESET
load keYCoDE into i/o reg TRANSFER J/O-REG TO A-REG POSITION DATA TO LSB GET SEVEN BIT CODE SAVE CODE
IS ENTRY RFSET KEY?
YESfINITIALIZE MACHINE IF KEYCODF IS NULL IGNORE
SET NEW KEY FLAG
RESTORE A-REG IF STOP INTERRUPT RESET STOP INTCRRUPT IF STOP DON'l TURN-ON INTERRUPT
RESTORE A-REG
TURN-ON INTERRUPT
CHECKSUM WORD
309832/0843 ORI0NAL INSPECTED
zm-
0001 00311 ASMB.A.L 311B
000? 60311 ORG UNCPL
0003 016045 DEF
6004·
0005· 16045 16045
0006 • ORG
Ö010» B-PEG HAS THE ADDRESS OF THE LINE UNCOMPIIER ROUTINE (Decorapiler-Pro^ramm)
C013» 16045 Θ21545 UNCPL LDA PSP
C014 16046 031573 STA CPl
6015 16047 072052 SAM «♦1,S
ί!016 16050 Ö31660 STA ADD
8017 16051 055663 DSZ BGSTR
6018
6019» 1605? 021625 LDA 1625B
G020 16Ρ53 079610 SZa LOOP
6021 16054 164430 JMP 430B,I
«022
ENTRY POINT FOR UNCOMPILER.R-REG POINTER TO LINE TO BE UNComPILED.SET UP POINTER FOR OUTPUT OF UNCMPLR
SET BIT15 FOR RIGHT-HALF POSITION STORE POINTER,USED TO LOCATE OUTPUT CHARACTER.
BGSTR USED AS FINISH MARKER FOR UNCOMPILER
SECURITY CHECK
IF NONZERO SECURE PROGRAM IN MEMORY CLEAR USER PROGRAM.'
3 0 9 8 3 2/0843
ORIGINAL INSPECTED
RPOL HAS AN ADDRESS WHICH POINTS TO THE NEXT AVAILABLE WORO IN THE REVERSE POLISH STRING.
ADD
HAS THE AODRESS OF UNCOMPLIED IMFO.
«025· «026»
• 027·
0020»
• 029» 0030» «031· 0032·
8034* «035» SET UP STACK.
«036· «037 6038 C039 6040 Λ041 β OA 2 6043 «044 CBUS «046
WHERE TO STORE THE NEXT SYMBOL OF
16055 0622C0 .11 JSM C
16056 06P3G5 SETUP JSM STNEW
16057 G2PIS42 LDA STACK 16060 031664 STa POINS
028475 LOA SMCOL
131664 STA POINS,I
Ö70742 SAR
031564 STA
16061 16062 16063 16064
16065 031666
16066 831667
STA
16
IMMFG POPR
STA OSKP
CALL ROUTINE "TO DUMP OPERATOR STACK CALL ROUTINE To STORE CHARACTER IN SKEY IN
UNCOMPILER OUTPUT AREA. STORE STARTING ADDRESS OF OPERATOR STACK
INITIALIZE TOP OF STACK WITH t
CLEAR FLAG WHICH MARKS THE OCCURRENCE OF BINARY OP· HOLDS LAST REMOVE OPERATOR FROM STACK
309832/0843 ■
ORIGINAL
226272!
«048* «049* «050* 0051 «052 «053 0054 0055 «056
READY TO START THE LOOP
G058 «059 «060 «06] «062 «063 0064 β065· β066 €1067 0068 9069 C070 «071 «072 «073 0074· 0075 6076 «077 C078 C079 #080· 0081 «082 «083· 0084 0085 «086- «087 «088 «089 «090 β091 0092· «093 «094 «095 «096 0097 0098 0099 «100· 8101 «102* «103
16067 16370 16071 16072 16073 16074 16375 16076 16077 16100 16101 16102 16103 16104
062323 LOOP
010403
SS62244
021544
010475 Ul
066055
010437
066056
C10462
066176
Ö10546
066341
010507
066257
16105 014353 Sl 16)06 066067 16137 034426
16110 074612
16111 870742
16112 Ö31666
16113 004410
16114 076310
16115 070742 UOP
16116 031564
16117 062305
16120 Ö62200
16121 066067
16122 Ο74353
16123 066143
16124 062246 OPERR
16125 {!25666 ' Ϊ6126 Ö45666 16127 074150 -
16130 07B213
16131 062246 POPER
16132 07fll52
16133 070110
16134 062235
16135 C21561 BB
16136 070142
16137 (J50365
16140 025544
16141 062276
16142 066066
JSm NEXTS CPa ONE JSM OPTIN LDA SKEY CPA SMCOL JMP
CPA EXEC JMp SETUP CPa B153 JMP .SK CPA M42 JMP QUOTE CPA B152 JMP GOTO
CPB D52 JHP LOOP ADB Ml3 SUM OPERR SAR STA POPR ADB M4 PZB **6
SAR 16 „ SlA IMMFG JSm STNEW JSm C JHP LOOP
SBP POPER JMp NUMBR
JSM CHECO LD8 POPR ISZ POPR SZB **3 SAP BB-I JSM.CHECO SAM BB SZA BB
JSM INSTK LDA CODE SAR AND Ml7 LDB SKEY JSH STORE JMP LOOP-I
16143 025564 NUMBR LOB IMMFG
16144 «20403 LOA Pl
16145 031564 STA IMMFG
ON RETURN A-REG HAS THE SYMBOL
IS CODE ;?
YES» DUMP. OPERATOR STACK.INITIALIZE FOR NEW STMT EOL?
INITIALIZE OPERATOR STACK SKIP CODE?
YES» SKIP NEXT CODE ·'?
YES«BUILD QUOTE IN OUTPUT "GO TO" OR "GOSUB"
YES»BUILD GTO OR GSB STATEMENT
. ILLEGAL CODE SKIP IT GET NEXT COOE B-REG HAS CODE CONTROL H IF CN<13.C0DE IS AN OPERATOR GREATER THEN I3 ZERO BINARY OPERATOR FLAG ADD -4 TO REMAINDER
code is for the variables a»b»c»xty»z clear numeric — imp » flag place in algebraic stringdump operator stack thru binary operator continue unfcompilling
if positive »remaining codes are fun or proc else numeric
code is most likely binary operator.ckeck precedence Load binary flag
UPDATE
IF NONZERO CHANGE ALGORITHM TO STACK C ON EQUALITY
COMPARE INHAND PRECEDENCE WITH LAST OPERATOR THEN TOP OF STACK. IF INHAND<THEN STACKiSTACK < WHICH IS TRUE IF A ♦
INSTk PLACES ( IN STACK OUTPUTS ) TO OUTPUT
GET INHANO COMPARE PRIORITY
• PLACE OPERATOR UNHAND KEYCODE IN B-REG) • IN
STACK
SET NUMERIC FLAG
3 0 9 832/0843 * original inspected
ΙΛΟ
«105
«107 «108 «109 one «in· βΐ 12· 0113· en* 0115 0116 ein «118 «119 «120 «121 el22 «123
«125 «126 • 127 0128 «129 «130 ei3i· (1132· «133 «134
16146 074110
16147 1)62215
16150 062305 NUMl
16151 962323
16152 014530
16153 C66120
16154 066150
SZb NUMl IF ZERO »LAST OPFRANO H NUMF.RIC AND NEXT OPERATOR JSm INSTK IMP«. Tf NONZpHO INSERT ( > AROUND NUMERIC JSm STNEW STORE DIGIT IN OUTPUT JSM NEXTS GET NEXT "CODE CPB ALPH END-OF-NUMEPiC STRING?
JMP U0P*3 YES
JMP NUMl NO.CONTINUE MOVE THE NEW STRING UP. '
16155 062200 EXIT
16156 160547
16157 015660
16160 066166
16161 970137
16162 010437
16163 024465
16164 161552
16165 366156
16166 025566
16167 935573 1617Λ Q15545
16171 066175
16172 Ö74742
16173 161552
16174 066170
16175 1704fl2 SUBROUTINES FOLLOW
16176 062323 .SK
16177 966067
JSm jsm cpb
JHP LOQ CPA LDB JSH JHP
ldb
STB
cpb
JMP SBR JSm JMP
RET
FECHfI
ADD
•♦6
EXEC
ENLNE
UNCOT.I
•-7
CP
CPl
PSP
•♦4 16
UNCOT.I •-4
EXIT MOVES UNCOMPILER OUTPUT TO BEGINNING OF INPUT
STRING APfA.USE CPl FETCH CORE. B-REG HAS NEXT CODE LOCATION.ARE WE FINISHED
YES» JUMP TO ZERO REMAINDER OF INPUT ARF.A. IS CODE COMPILER EOL? YES. CHANGE TO INPUT EOL
SWITCH DIRECTS COOE TO OUTPUT ROUTINE (MSTOR) RECYCLE
HAVE WE USED ALL OF THE INPUT AREA YES
ZERO REMAINING AREA IN INPUT STRING AREA/
RECYCLE
RETURN
JSM NEXTS SKIP NEXT CODE JHP LOOP RECYCLE
309832/0843 · ORIÖinaunspected
β 136· THIS SURROUTINE PULLS OPERATC
β137· TS ANY.
0138·
β 139· 16200 024S42 C • LOB STACK
0140» 16201 274356 CHB
0141 16202 905664 ADB POINS
0142 16203. 075512 SBM *-6
0143 16204 121664 LDA POINStI
0144 16205 £-55664 DSZ POINS
β145 16206 070137 LDB A
β146 16207 Θ74302 SBR 7
«147 16210 035667 STB osKP
β148 16211 050345 AND RH
0149 16212 031571 STA LOPR
«150 16213 010372 CPA IMPMT
6151 16214 066231 JMp C2
fll52 16215 062306 JSm STNEW*1
β153 16216 {J7B742 Cl SAr 16
C154 16217 S31564 STA IMMFG
«155 16220 E21571 LDA LOPR
0156 16221 025667 LDB OSKP
6157 16222 0165(56 CPA UNAYM
0158 16223 066230 JMP C
β159 16224 014370 CPB IU2
C160 16225 C66200 JMp C
(5161 16226 014403 CPB ONE
fll62 16227 066200 JMP C
0163 16230 164303 JMP OUTtI
0164
6165 16231 Θ55564 C2 DSZ IMMFG
β 166* 16232 866216 JMP Cl
«167 16233 020403 LDA Pl
0168 16234 066217 JMP Cl*l
0169
6170
IF STACK EMPTY RETURN LOAD WORD IN TOP OF STACK MOVE POINTER NEXT LOCATION
RIGHT JUSTIFY STACK PIORITY SAVE IN OLD STACK PIORITY WORD (OSKP) CODE IN A-REG
SAVE IT
NO.»IF CURRENT OPERATOR IS »(IMP) DON'T OUTPUT
STORE IN OUTPUT STRING
PUT CODE BACK INTO A-REG STACK PIORITY BACK IN B-REG OPERATORS DUMPED THRU A BINARY OPERATOR.
CODE WAS UNARY MINUS CONTINUE UNSTACKINO IS OPERATOR A FUNCTION
YES CONTINUE DUMPING IS COOE PROCEDURE TYPE.EXAMPLE PRT YES CONTINUE DUMPING
NUMERIC NOT CAUSING DUMP NUMERIC CAUSING DUMP AND IMP« BEING DUMPED
309-8-32/0843
ORIGINAL INSPECTED
0172 «Π 73 «174 <J175 «176 0177 C176 «179· 0)60 0181 0182· 01Β3
16235 020403 INSTK LOA ΟΝΕ
C185 0186 0187 Cl B8 β189 0190 «191 0192· 0193· C194 C195 0196 β197 0198 0199 C260 0201 0202 0203
«2ö5 «2(S6 0207 0208 0289· 0210· «211· &212· 0213 6214 6215 6216 «217 9218 0219
16236 024503
16237 062276
16240 270742
16241 331564
16242 020541
16243 066306
LÖß LEFT JSM STORE SAR STA IMMfG LOA RIGHT JMp STNEW*1 STACK PIORITY FOR LEFT PR£N. CODE FOR LEFT PREN. INPUT PrI. WAS LESS THAN STACK
16244 020405 OPTIN LOA Ml
16245 164551 JMp OPTN,I
16246 0256^7 CHECO LDQ OSKP
16247 376150 R2ß CHECK + 16250 125664 CHECK LOf] POINS, I
Ö743P2
16251
16252 021561
16253 650365 CH
16254 970076
16255 074017
16256 170402
16257 16260 16261 16262 16263 16264 16265 16266 16267 16270 16271 16272 16273 16274 16275
062323 GOTO
321544
010462
Ö66274
Cl4353
G66257
014351
066257
C62305
Ü21544
010475
066057
066257
C62323 GTl
066257
SBR LDA CODE AND M17 TCA AOA ß RET
JSM NEXTS LDA SKEY CPA B153 JMP GTl CPß D52 JMP GOTO CPB B77 JMP GOTO JSm STNEW LDA SKEY CPA SMCOL-JMP SETUP*1 JMp GOTO JSM NEXTS JMP GOTO SO PLACE LEFT PREN. IN STaCKJOUTPT RIGHT PRENt CALL OPTION BLOCK SYNTAX WITH -1 IN A-REG
CHECK INHAND COMPARE PRIORITY WITH LAST STACK PRIORIT IF 0 CHARACTER TO BE COMPARED IS IN STACK
STACK. B-REG STACK PIORITY
INHANO COMPARE PIORITY IN A-REG (STACK -INHANO)
GET NEXT CODE IS IT SKIP CODE
YES,SKIP NEXT CODE IGNORE CODE (FOR ZERO KEYCODE) YES
GOTO FLAG FOR OPTION RLOCkS? YEStOELETE IT
NO,OUTPUT CODE
WAS IT END-OF-STATEMENT "»" YESfGTO OR GS8 UNCOMPRED NO RECYCLE SKIP NEXT CODE RECYCLE
SUBROUTINE TO STORE CHAR In STACK
16276 014464 STORE CPß. GOSIN
16277 020401 LDA P3
SAL
16300 070444
16301 »74217
16302 P.45664 16301 131664 16304 164303
.KN
IOR Q ISZ POINS SlA POINS,I JMP OUT,1 CHANGE STACK PR. OD GOESINTO CHANGE STACK PIORITY TO 3 POSITION PIOPITY TO RE INCLUDED WITH KEYCODE PLACE PloMTY WITH CODE SET NEXT AODRESS STORE OPERATOR IN STACK
309832/0843 QRlQiNAL INSPECTED
226272!
«221* «222* 0223 C224 «225 0226 0227 0228 6229 ß230 C231 0232 0233 C234 C235 β236 fl237· fl238· fl239· 0240« C241 «242 0243 0244 β245 8246 «247 0248 fi249 Ö250 0251 C252 0253 C254 0255· 0256* 0257· 0258» 0259 0260 0261 6262 0263 «264· «265
SURROUTINE TO STORE THE NEW STRING
16305 021544 STNEW LDA SKEY
16306 01fi506 CPA UNAYM
16307 P20527 LOa MINUS
16310 025573 · LDB CPl
16311 074333 SBp ·*6»0
16312 070444 SAL
16313 074617 IOR B,I
16314 Ϊ574557 STa B»I
16315 035573 STB CPl
16316 170402 RET
16317 076070 " RIB *♦!
16320 074617 IOR B1I
16321 074557 STa B.I
16322 077553 SBP *-5tS
GET CODE TO PLACE IN OUTPUT IS IT UMARY MINUS?
YEStCHANGE To SUBTRACT CODE GET ADDRESS OF NEXT OUTPUT LOCATION WHICH HAlF-OF WORD
Left-half.position code
store code in output cpl has been updated save it
right-half
store code in output UPDATE CPl·60 SAVE IT
SUBROUTINE TO GET THE NEXT SYMBOL
16323 16324 16325 16326 16327 16330 16331 16332 16333 16334 16335 16336 16337 16340
025662 015663 P66337 074172 074517 076213 074517 ß703ß2 634405 035662 059345 164254 055777 866155
NEXTS LOB CPB JMp SBH LDA SBP
NEXl LDA SAR ADB
NEX2 STB
EE
JMP DSZ JMP
RPOL
BGSTR
EE
NEXItC
B,I
NEX2»S
BiI
Ml
RPOL
RH
.CS3.I
SUB
EXIT
THIS TAKES CARE OF QUOTES
16341 862335 QUOTE JSh, STlJEW
16342 062323 · JSm NEXTS
16343 014452 CPß CNFO
16344 066115 JMP.UOP
16345 666341 JMP QUOTE
GET ADDRESS OF NEXT CHARACTER IN POLISH STRING HAVE WE TAKEN ALL CODES FROM LINE?
YES
WHICH HALF OF WORD IS NEXT CODE RIGHT-HALF
LEFT-HALF
RIGHT JUSTIFY CODE · UPDATE TO NEXT-CODE ADDRESS SAVE IT
SAVE ONLY SEVEN BIT CODE
ALL CODES TAKEN FOR POLISH STRING ERASE RETURN TO CA ROUTINE.MOVE UNCOMPILER OUTPUT TO BEGINNING INPUT
store » in output
get next code in quote fielo is it " marking end of quote-field? yes.treat quote field as an operand RECYCLE
00301
WUNSD EQU «-UNCFL
30983 2/0843 ' original 'inspected
β 267· •0254 «533177 .CS3 EOU 254B
0268 «1552 UNCOT ECU 1552R
0269 «1561 003077 CODF FCU 1S61R
0270 «1544 SKEY EOU 15/.4B
0271 • 1660 caao64 AOD ' EOU 1660R
0272 01661 SAVE EOU 1661B
C273 «1662 690017 RPOL ECU 1662R
627« 01663 000016 BGSTR fOU 1663B
0275 01664 Ρ00315 POINS EOU 1664B
β276 • 1665 003314 TEMP? ECU 166SB
«277 • 1666 008013 POPR EOU 1666B
ί!27β 01667 eopoi? OSKP ECU 1667B
β279 «1571 63Ρ3Ο0 LOPR ECU 1571«
£280 01777 000003 SUB EOU 1777B
0281 01564 ösean2 IMHFG EOU 1564B
0282 • 1565 oepfloi BP EOU 1565B
0283 01566 900000 CP EOu 1566R
6284 • 1545 177777 PSP ECU 15/.5B
«285 01573 177776 CPl ECU 1573B
«286 01540 CN EQU 1540B
C287 «0403 177774 Pl ECU 403B
0288 «0372 IHPMT EOU 372B
€289 «0303 177747 OUT EOU 303B
«290
C291· «0345 177763 ORg 345B
C292 C0345 RH OCT 177
C293 00351 000135 ORG 35lB
0294 C9351 Θ77 OCT 77
β295 C0352 000025 M21 OCT 21
0296 00353 052 DEC 52
Β297 «9365 ORG 365B
6298 C0365 H17 OCT 17
0299 00366 Ml 6 OCT 16
0300 03367 H15 OCT 15
«301 • 0370 H12 OCT 14
6302 «0371 Mil OCT 13
β 3(13 «Λ172 P10 OCT 12
0304 «0373 BSS 6
fl3ß5 •0401 P3 OCT 3
43306 C9402 TWO OCT 2
€307 00403 ONE oct- 1
0308 (•0404 BSS 1
«309 •0405 Ml OCT 177777
0310 00406 M2 DEC -2
0311 •0410 ORG 410B
0312 •Ρ410 H4 DEC -4
C313 •0422 ORG 422F1
«314 00422 MNUM OCT 177747
031S •0426 ORG 426B
0316 00426 M13 DEC -13
0317 «0437 ORG 437B
«318 •0437 EXEC OCT 135
€319 •0452 ORG 452B
«320 •0452 CNFO OCT 25
«321 ••462 ORG 462B
• 322
AOORESS LINK To SKCD (SEE CONTROL SUPERVISOR) R/W LTNK WORD. DIRECTS OURPUR OF UNCOMPJLER 16 BIT WORD ΤΗΛΤ DIRECTS COOES IN COMPILINGtINTERPRE KEYCODE IN PROCESS
END MARKER FOR MOVING UNCOMPILER OUTPUT HOLDS NEXT PROGRAM LINE
POINTER FOR RETRFVIMG CODES FROM POLISH STRING END MARKFW FOR RETREVING CODES FROM POLISH STRlMG OPERATOR STACK POINTER
TEMPERARY STOREAGE
FLAG FOR LAST CODE PROCESSED WAS OPERATOR HOLDS STACK PIORITY OF LAST REMOVED OPERATOR
SAVES CURRENT OPERATOR BEING DUMPED SYSTEM RETURN STACK POINTER NONZERO IF NUMERIC CAUSING OUMP--. BEGINNING MARKER OF INPUT STRING AREA NEXT AVlALABLE ADDRESS FOR INPUT STRING NEXT AVIALABLE ADDRESS FOR COMPILER OUTPUT ADDRESS NFXT CODE IN INPUT STRING USED WITH FETCH RO CONTROL NUMBER OF CURRENT KEYCODE
309832/0843
OHlQi1NAL INSPECTED
•323 Ö0462 000153 B153 00530 000056 ALPH OCT 153
«1324 00465 60530 ORG 465B
8325 80465 Θ00141 ENLNE 00532 001537 XB OCT 141
6326 00466 000140 BGLNE 00532 OCT 140
«327 00475 P0535 001432 TOPS ORG 475B
0328 20475 000073 SMCOL 00535 OCT 73
<5329 C0502 00541 000051 RIGHT ORG 502B
6330 00502 177767 M9 (50541 001727 STACK DEC -9
0331 (3R503 B00050 LEFT 20542 OCT 50
0332 e05fl4 B00000 BSS 2
C333 6P506 000150 UNAYM G0546 600042 M42 OCT 150
0334 60507 P00152 B152 60546 OCT 152
6335 e<3511 e{U*64 030137 GOSIN OPG 511B
β336 68511 000154 M154 SD464 OCT 154
0337 60527 GB547 600000 FECH ORG 527B
0338 G0527 000055 MINUS S 0547 OCT 55
6339» NEH CONSTANTS
0340» 00551 600000 OPTN
6341 00551 ORG 530B
0342 OCT 56
B343 ORG 532B
0344 ERRORS» OCT 1537
(9345 ORG 535B
0346 OCT 1432
C347 ORG 54 IB
6348 OCT 51
β349 OCT 1727
6350*
C351 ORG 54 6B
Ö352 OCT 42
0353 ORG 464B
«354 OCT 137
0355 org 547B
fl356 BSS 1
6357·
C358 ORG 551B
«359 BSS 1
β360·
β361·
0362 END
• NO
ORIGINAL INSPECTED ! 30983 270843
t)0l6· 0017· 0018· 0019· 0020· «021· 0022· 8023· 0024· C025· 0026·
9820A PLOTTER/TyPEWRITTEH OPTION BLOCK 2262725
(wählbarer Block, Kurvenschreiber/Schreibmaschine)
ASMBtA»L 12000 ORg 120008
12000 B00031 ID QCT 1 OPTION BLOCK IDENTIFICATION CODE
12001 000021 · def synt-id relative address of compile s. uncomplie routine
12302 000043 def exec-io relative address of the fxecution routine 12003 b01613 def mnem-id relative address of the mnemonic routine
the above is the table of linkage words used bf the 9b20a to communicate with this option block.
the relative keycodes are as follows:
KC = 1 2 3
6 7
TYPE FORMAT WRITE READ TRANSFER SCALE AXES
PEN-UP O LETTER 9 PLOT
3Q9832/0843
ORlGWAL IHSPECTED
initialization routines. (Start-Programme)
0028» 0029* 0030» 0031· €032 {J033 6034 0335 0036 0037 Ö038· 6039« 0040» 6041 Ö042» «043« 0044» β045 3046 0047 β tf 4 8 0049 βΟ50
get the adoress the user area.
12004 e6?U0 12035 G35716 12006 625543 12307 070577
12010 «04453
12011 035543 - ,
NEXT SET-UP DEF
12012 062070
OF KWm WORD POINTING TO THIS BLOCK RWM IN
THEN MOVE LIWl ACCORDINGLY.
JSM LlA A«-ADDRESS OF OPTION RLOCK OF.niCATED R/W WORDS
• STb S SAVE BASE ADDRESS OF THE OPTION BLOCK
LOB LlMl SAVE PRESENT ADDRESS OF THE FIRST WORO OF
STB A,I USER MEMORY IN THE DEDICATED WORD
ADB P22 RESERVE ?2 WORDS FOR THE I/O BLOCK
STb LIMl AND SAVE THE NEW VALUE OR LIMl
TABLE FOR THIS BLOCK.
JSM .DEF.*l SET UP LINK WORDS NEEDED FOR THIS BLOCK
DAISY CHAIN THE END LINKAGE.
12013 021710
12014 131651
12015 P?5716 1201G CR7700 12017 635710 12020 170402 L3
LDA .END2 STa DEND»I LDB S AOB INTE STB .END2 RET
SAVE PRSENT "END" LINK WORD
IN <DENl"»
GET OPTION BLOCK BASE ADDRESS ADD RELATIVE ADORESS OF OPTION BLOCK ENO ROUTINE
AND SAVE IN THE SYSTEM LINK ADDRESS RETURN
3 09832/0843
SUSPECTED
MNEMONIC GENERATION AND SYNTAX CHECK.
(Merkzeichenbildung und Larrstellungsprüfung)
0052· WHFN MNEM IS CALLED» THE A RfGISTe« CONTAINS THE RELATIVE T TO N-I WHERE N IS THE CONTAIN THE CODED MNEMONIC. A«-RELATIVE KEY CODE ♦ LDB ·*1 INSTRUCTION
0053* KtYCODE. ON RETURN A WILL RF $t~- NUMRfTR OF CHaRACTFPS IN THE MNEMONIC AND THE B REGISTER EXECUTE THE INSTRUCTION FOUND IN A.
β054· WILL GET THE : MNEMONIC WORD. A<-3 - NUMBER OF CHARACTERS-1
β055· RETURN
9H3S6· FIRST ORG 136133
0057· 003617 MNEM AOA TABl RELATIVE INSTRUCTION USED TO LOAD MNEMONIC CODE
0058· 13613 670016 exA TYP
0059· 13613 020401 LOA P3 FMT
C060 13614 170402 RET WRT
0061 13615 RED
C062 13616 P27620 TABl LOB •♦1 TfR
0063 651460 OEC 21296 SCL
0064 13617 014664 DEC 6580 AXE
0065· 13620 057124 DEC 24148 PEN
0066 13621 044244 OEc 13596 LTR
0067 13622 050322 DEC 20690 PLT
0068 13623 (546154 DEC 19564
0069 13624 633405 DEC 1797
0070 13625 C40256 OEC 1655B
0071 13626 031222 DEC 12946
Β072 13627 640624 DEC 167B8
0Ö73 13630
0074 13631
0075
0076
FOR ROTH FORWARD AND REVERSE COOE=C1FMT" OR "RED"). ELSE
12021
12021 C21561 SYNT
12022 050365 12Ö23 024034 12024 010401 12325 024031
12026 010403
12027 624031
12030 e3556l
12031 170402
ORG L3»l LDA CODE AND P15 LOB 34B CPA P3 LÜB 31B CPA Pl LDB. 31B STB CODE RET
COMPILINGt SET CODE=11ENT" IF SEl CODE=11PRT".
GET SYSTEM CODE WORD
AND SAVE OITS 0-3 TO GET RELATIVE KEY CODE B«-SYSTEM TABLE FNTRY FOR PRINT A=RELATlVE KEY CODE FOR "REO"?
YES» fUSYSTEM TABLE ENTRY FOR ENTER A=RELATIVE KEY CODE FOR "FMT"?
YESt B*SYSTEM TABLF ENTRY FOR ENTER CODE*B - CODE TO BE USED BY THE SYSTEM RETURN
309832/0843 original inspected
KM ' ■ ■
end linkage (End~Anschluß) 2262725
0094· END LINKAGE. DO THE FOLLOWING. ·
0095· '
0096· SET STANDARD FORMAT.
0097* DO PEN-UP
β098· ' · :
6099 12032 062067 ELINK JSM ,DEF. SET UP LINK TORDS NEEDED BY THIS BLOCK
0100 12033 062110 JSM LlA B<-BASE ADDRESS OF THF OPTION BLOCK
0101 12034 607781 ADB SFMT FORM ABSOLUTE ADDRESS OF THE STANDARD FORMAT U102 12035 135650 STß DFMTtI <DFMT>«-R - ADDRESS OF NEXT FORMAT TO BE EXECUTED 6lß3 12336 062717 JSM L12D DO A PEN-UP FOR PLOTTER
0104 12037 070742 SAR 16 CLEAR INPUT STATUS BUFFER
8105 12040 131661 · STa DIN»I ' AND SAVE" IN DIN»I
Ö106 12041 121651 LDA DENO.I GET LINK WORD OF NEXT SEGMENT OF END ROUTINE
6107 12042 B70737 JMP A»I JUMP TO THE NEXT SEGMENT OF THE END ROUTINE
30983 2/O δ A3 '
ORIGINAL
execution »ranch routine. (Ausführung Verzweigungs-Programm)
0110· Olli· 0112· 3113· 0114 0115 4116 0117 one 0119 0120 0121 β122· 3123 0124 0125 0126 3127 0128 G129 0130 0131 6132 0133 8134
T SPT-UP DEF TABLE FOR OPTION BLOCK. EXFC WILL PERpORM A HHAnCh To ThE CORRECT EXECUTION ROUTINE USING THE RELATIVE KEYCODE AND TAB2.
12043 062067 EXEC·
12044 G21561
12045 050365
12046 602053
12047 070016
12050 642066
12051 070016
12052 164346
12053 12054 12355 12056 12057 12060 12061 12062 12063 12064 12065 12066
022054 TAB2
001173
000726
G01323
P31352
001564
000136
COO302
000717
000425
000205
062000 INSTl
.DEF. LDA CODE AND P15 AOA TA02 EXA
IOR INSTl EXA JMP XJiI
LDA »*1 DEF TY.E-ID DEF FM.E-ID DEF WR.E-1D DEF RE.E-ID OEF CO.E-ID DEF SCE-ID DEF AX.E-TD DEF PE.E-TO DEF LE.E-TD DEF PL.E-ID JSm ID SET UP LINK WORDS NEFDED FOR THIS OPTION BLOCK
A«-CODE - SVSTEM CODE WORD
SAVE BITS 0-3 - RELATIVE KEY CODE
A«-RELATIVE KEY CODE ♦ LDA »*1 INSTRUCTION
EXECUTE THE INSTRUCTION FOUND IN A
A«-RELATIVE ADDRESS OF ROUTINE ♦ JSM ID INSTRUCTION
EXECUTE INSTRUCTION FOUND IN A
RETURN TO SYSTEM THROUGH <XJ>
INSTRUCTION TO GET RELATIVE ADDRESS OF ROUTINE
FORMAT WRITE
CONTROL SCALE
PEN-UP LETTER
INSTRUCTION TO CALL PROPER SUBROUTINE
309832/0843
ORIGINAL INSPECTED
ROUTINE TO SET OEF TABLE·
(Programm zum Einstellen der DEF-Tafel)
9136»
0137·
β13β·
0139»
0140»
0141·
6142·
0143·
0144»
Gl45»
0146·
6147»
β148·
Ö149»
eise
C151
«152
Ö153
3154
6155
0156
0157
0158·
0159
6160
0161
6162
Θ163
0164
6165
6166
6167
C16B*
0169»
fll70·
0171*
«172·
C173·
0175
0176
0177
6178
0179
0180«
0181
8132-
«133
el84 '
0185
0186
• 187
SET UP DFFiS IN CORE AS FOLLOWS:
1650 FORMAT
1651 END LINK WORD
1652 X POSITION*
1653 Y POSITION
1654 LETTER INFORMATION
1655 BX
1656 AX
1657 BY
1660 AY
1661 INPUT BUFFER STATUS
10Λ
226272
12067 062110
12070 070517
12071 827702
12072 G35663
12073 624415
12074 035662
12075 (527651
12076 066104
.DEF.
JSM LlA LDA AtI LDB DLINK STo J LDB M10 STb I LOB K2 JMp LIE
12077 12100 12101 12102 12103 12104 12105 12106 12107
{»45663 LlF
674006
000403
074113
(30(4401
131663 LIE
Θ45662
S66077
170402
J 1
ISZ RBR ADA Pl SBP LIE ADA P3 STa JtI ISZ I JHP LlF RET A«-ADDRESS OF DEDICATED R/W OPTION BLOCK WORD A«-AODRESS OF R/W MEMORY RESERVED BY THE OPTION BLOCK J«-AODRESS OF FIRST WORD" WHERE LINK
WORDS ARE TO RE STORED
I«-10
NUM8ER OF LINK WORDS IN THE TABLE
b«-k2 - code word for ι or'4 word storage CONTINUE AT LIE
INCREMENT TABLE ADDRESS
POSITION STORAGE CODE WORD
INCREMENT R/W MEMORY POINTER LAST PARAMETER NEEDED 4 WORDS?
YES, ADO·3 MORE TO R/W MEMORY POINTER SAVE NEW LINK WORD IN THE TABLE ALL .NINE LINK WORDS FORMED?
NO, CONTINUE TO LOOP
YES, RETURN
get address of rwh user storage by doing λ search for a comparison of the id word with those founld in the system option block table area. whfn a match is found, compute The link address, set β with absolute address of id.
12110 12111
12112 12113 12114
12115
12116 12117 12120 12121
12122 12123 12124
024247 074517 Ö59441 512000 066116 077630
970076 «74417 »70137 070402 000247 000400 170402
LlA
LDB .TAB7
LDA B,I
AND K8
CPA. ID
JHP «♦2
RIB β-4
TCA
ADA B.I
LOB A
SAR 9
ADA • TAB7
ADA Ph
RET
B«-ADORESS OF TABLE CONTAINING ID CODES ADOPTION HLOCK IO CODE
SAVE RITS 0-9 . -
DO THEY MATCH WITH THIS BLOCK?
YES, EXIT LOOP
NO, INCREMENT ADDRESS AND CONTINUE TO LOOP
REMOVE ID CODE TO GET BASE ADDRESS OF THIS BLOCK B«-A
FORM ADDRESS OF DEDICATED R/W WORDS FOR THIS OPTION BLOCK
RETURN
309832/0343
ORlGiNAL INSPECTED
utility routines (Versorgungs-Programme)
0139· 3190· 0191· 0192
0193
0194
«195
6196
«197· 0198· 0199· 6200
0231
8202
0203
0204» 0205» 0206· 6287» (1208· 6209· β210· 0211* 0212» 0213· 0214· 0215· β216· β217·
102
GET PARAMETER COUNT
12125 021556
12126 031664
12127 070076
12130 901557
12131 170402
.PAR. LDA API
STA K • TCA ADA AP2 RET
A«-ADDRESS OF ThE ADDRESS OF THE LAST PARAMETER
Κ«·Α - SAVE POINTER
ADD ADDRESS OF THE AODRESS OF THE 1ST PARAMETER*1 RETURN. A«-TOTaL NUHRER OF PARAMETERS PASSED GET NEXT PARAMETER AND INCREMENT ADDRESS POINTER.
12132 121664 L2A LDA K,I
12133 045664 ISZ K
12134 853647 AND Kl
12135 170402 RET
A4-AD0RESS OF THE NEXT PARAMETER INCREMENT ADDRESS POINTER SAVE «ITS U-13 RETURN
the math routines in the basic machine can be, called through The linkage table found on the base page as follows«
jsm hath*0.i <=
2 3 4 5 6
OP3«-(OPI) OPERATOR (0P2)
09832/0843 ORlGlNAC INSPECTED
scale execution for 9B20A calculator. (Maßstab-Ausführung)
0219· 0220· 0221· «222« β223· β2?4· 8225 0226 0227 0228 0229 «230» 0231* 0232« Ö233· 0234 C235 «236 6237 6238 6239 6240* 0241 0242· 0243» 0244· 6245» 6246· C 247 0248 β249 6250 C 251 C252 6253 0254 6255· fl256 6257 €258 6259 0260 C261 C262 6263 ί)264 G265
the following is the scale execution routine.
GET THE PARAMETER COUnT.
IF PARAMETER COUNT IS NOT EOUAL TO 4, DO AN ERROR EXIT.
12136 962125 SCE
12137 010400 12140 066143 1?141 Ö24402 L10I3 12142 065351
JSm .PAR. A«-NUMBER OF PARAMETERS PASSED
CPA P4 IF A=4 THEN
JMP «+3 SKIP 2 INSTRUCTIONS
LOB P2 ELSE SET ERROR 2
JMP BAD IMPLIEO RETURN
SET VALUES OF AYt BY« AX» AND IN THE PLOT ROUTINE.
FOR USE IN SCALEING
12143 021660
12144 031662
12145 062151
12146 021656
12147 031662 12150 Ö66151
LDA DAY 1+ADDRESS OF THE Y AXIS
STA I SCALE FACTOR
JSM L10 COMPUTE Y SCALE VALUES
LDA DAX I«-ADDRESS OF THE X AXIS SCALE FACTOR
STA I A1JD COMPUTE X SCALE VALUES
JHP L10 IMPLIED RETURN
• COMPUTE THE VALUES OF A* AND B* AS FOLLOWS! A* = 9999/(MAX-MlN)
B« = -<A*)«MIN.
12151 062132 L10
12152 G31554
12153 062132
12154 S31663
12155 &31553
12156 S21662
12157 631555 12160 160273
0267· 0268 6269 0270 6271 0272 · 0273 0274
12161 12162 12163 12164 12165 12166 12167 12170 12171 12172 12173
12174 12175 12176 12177 12200 12201 12202
P20477 031554 170000 C237B6 Ö31741
G70346 031740 021662 031553 160271
Ö21663 C31554 021662 00H410 631662 031555 160270
JSM L2A STA OPl JSK L2A STA J STA 0P2 LDA STA 0P3 JSM-.MATH*6»I
LDA «DTI
STA OPl
CLR
LDA D9999
STA .Tl+1
LDA"P3
RAR
STa .Tl
LDA I
STa 0P2
JSM MATH+4,1
LDA J
STa OPl
LDA I
ADA M4
STA I
STA 0P3
JSM MATHO»!
A«-ADDRESS OF MAX AXIS VALUES SAVE ADDRESS in MATH POINTER OPl A<-AODRESS OF MIN AXIS VALUE SAVE ADDRESS IN J
AND IN MATH POINTER 0P2 A+AODRESS OF AXIS SCALE · FAC-TOR
AND SAVE IN MATH POINTER 0P3 SUBTRACT MlN VALUE FROM. MAX VALUE
A+ADORESS OF TEMPORARY .REGISTER
ANB SAVE IN MATH POINTER"'OPl CLEAR TEMPORARY REGISTER 1 STORF. 4 BCD 9»S IN THE HIGH ORDER
DIGITS OF TEMPORARY REGISTER FORM EXPONENT OF +3 AND STORE IN EXPONENT
PART OF TEMPORARY REGISTER A+ADDP-ESS OF AXIS SCALE FACTOR
ANO STORE IN MATH POINTER 0P2 DIVIDE 9999 BY (MAX-MIN)
A+ADORESS OF MIN VALUE
AND SAVE IN MATH POINTER OPl A+I-4
FORM ADDRESS OF AXIS OFFSET VALUE AND SAVE IN I
AND MATH POINTER 0P3 MULTIPLY MlN VALUE BY SCALE FACTOR
309 832/0843
ORiOiNAL /NSPEGTED
plot EXECTION routine. (Kurvenschreiber-Ausführung)
• 278· 0279· 0260· 0261· β2Β2· 0283» 0284· 0285 «286 Β287 C2B8 0289 <J290 6291·
• 292· 6293· 0294 6295 C296 C297 0298 0299 03130· 0301· 0392· C303· 0304· «305 0336 $307 0398 «309· 0310 03)1 0312· C313·
β315· 0316· «317» β3ΐβ· 0319· Θ320· 0321· «322·
• 323· 032/»· β 325·
• 326·
• 327·
• 328· 0329· 0330 0331 0332
• 333
GET THE PARAMETER COUNT AND 00 THE FOLLOWING*
P » I GOTO LETTE« ROUTINE.
2 PLOT POINTS X AND Y AFTER SCALING.
ELSE EXIT WITH EHROR.
12205 062125 PL.E JSm .PAR..
122C6 010402
1??07 666213
12210 010403
12211 066445
12212 S66141
CPA P2 JHP LIlE CPA Pl JMp LE.EP JMp L10B
A«-NUmBER OF PARAMETERS PASSED IF A=2
then skip 2 instructions
IF A=I
THEN GO TO LETTER ROUTINE IMPLIED RETURN
SET ROUNf)ARY INDICATOR AND GET SCALED VALUES OF X AND Y,
12213 073742 LIlE
12214 e31736
12215 C62227
12216 131653
12217 062233 12220 131652
SAR 16 S16*0
STA S16 RESET PLOTTER RANGE FLAG
JSM LIlH SCALE ANn CONVERT Y COORDINATE
SlA OYP,I AND SAVE VALUE IN Y AXIS POSITION WORD
JSH LIlA SCALE ANO CONVERT X COORDINATE
STa DXPtI AND SAVE VALUE IN X AXIS POSITION WORO
IF POINT IS IN RANGE» HOVE PFN 70 THE NEW POSITIONS OF X AND Y AMO PUT PEN DOWN. ELSE LIFT PEN AMD THEN MOVE TO THE NEW POSITIONS OF X AND Y AND OO NOT PUT THE PEN DOWN.
12221 021736
12222 070150
12223 062717
12224 C66656
12225 062656 LlU
12226 S66713
LDA S16 A«-S16 - PLOTTER RANGE FLAG
SZA LIlJ IF POINTS ARE IN RANGE (A=O) THEN SKIP 2 INSTi JSM L120 ELSE LIFT PEN AND MOVE TO NEW POSITION
JHP L12B IMPLIED RETURN
JSM L12B MOVE TO NEW POSITION
JMP L12C IMPLIED RETURN
LlIA IS USED TO .SCALE THE NEXT PARAMETER IN THE STACK AND MAKE SURE THAT IT IS WITHIN THE RANGE OF a TO 9999.
S AND Sl ARE USED AS FOLLOWS:
S=-2 USE Y SCALE -1 USE X SCALE
51=-1 AOD IN OFFSET
ELSE OON'T ADD IN OFFSET
ON EXIT FROM ROUTINEt S*S-1.
FIRST SCALE THE NEXT PaRAHETER AS FOLLOWS:
(A·)<<AP1>)*<B»>
12227 C20405 LIlH LOA Ml
12230 031662 STa I
12231 020406 LOA M2
12232 031716 SU S
!♦A - OFFSET COMPUTATION FLAG S«-2
X/Y COORDINATE FLAG
309832/08^3
226272
PLOT EXECTION ROUTINE.
0334 6335 8336 «337 0338 <J339 C340
6342 «S343· 0344 £345 0346 C347, C348 fl349 0350 0351 0352 C353 0354 0355» 0356» C357« 0358» €359* 0360» C361 0362 G363 6364 0365 fl366 0367 0368 0369 0370 0371 β372 0373 e374 0375 β376· 3377 β378 0379 0300
12233 362132 LIlA
12234 031554
12235 621656
12236 045716
12237 021660
12240 031553
12241 4320477
12242 031555
12243 160270
12244 12245 12246 12247 12250 12251 12252 12253 12254 12255 12256
045662 066256 020477 031554 021655 655716 C45716 021657 031553 160272 055662 LUG
JSM L2A STa OPl LDA OAX ISZ S LDa DAY STa OP2 LDA .DTl STa 0P3 JSM MATHOtI
ISZ I
JMP LUG LDA .DTl STA OPl LDA DBX DSZ S ISZ S LDA DBY STA 0P2 JSM MATH*5,I DSZ I A«-ADDRESS OF DATA WORD TO BE CONVERTED SAVE ADRRFSSS IN MATH POINTER OPl A+ADDRES5 OF X AXIS SCALE FACTOR IF S#-l
THF.N A«-ADDRESS OF Y AXIS SCALE FACTOR SAVE ADDRESS OF AXIS SCALE FACTOR IN 0P2 A «-ADDRESS OF TEMPORARY REGISTER 1 SAVE ADDRESS IN MATH POINTER 0P3 MULTIPLY COORDINATE 8Y SCALE FACTOR
IF I#-l
THEN RY PASS OFFSET COMPUTATION A+ADDRESS OF TEMPORARY REGISTER 1
AND SAVE IN MATH POINTER OPl A<-ADDRESS OF X AXIS OFFSET
IF Stt-l
THEN A*ADDRESS OF Y AXIS OFFSET SAVE ADDRESS IN MATH POINTER 0P2 ADD IN OFFSET TO SCALED VALUE !«•1-1
convert the pcd number to a binary number. then check the value of the converted number to make sure that it is within in the Range of 0 and 9999. if the value is outside of the set it eoual to 0 0« 9999 as the case may be.
12257 12260 12261 1226? 12263 12264 12265 12266 12267 12270 12271 12272 12273 12274 12275
121555
B70340
600410
C70613
021555
C61322
074153 L118
045736
Ö74742
074117
007711
074152
023707 LIlC
045736
170402
12276 070742 LIlD
12277 125555
12300 075551
12301 066274
LOA 0P3»I . GET EXPONENT OF RESULT AAR 8 AND RIGHT JUSTIFY IT ADA M4 · IF EXPONENT > 3 ' SAP LUD THEN SET LIMIT VALUE AT LIlD L'DA 0P3 A«-ADDRESS OF SCALED RESULT * JSM FIXPT B«-BINARY INTEGER VALUE OF FLOATING POINT RESULT
SBP »«-3 IF B<0
ISZ S16 SET LIMIT FL\AG
SBR 16 AND B«-0
LDA B A«-8
ADB KIl IF B>= 10000
SBM «»3
LDA P9999 THEN A«-9999
ISZ S16 AND SET LIMIT FLAG
RET- RETURN
SAR 16 A«-0
LOB 0P3,I B*SIGN OF MANTISSA SLB LUC IF MANTISSA IS PLUS THEN SET HIGH LIMIT AT LUC JMP LllC + 1 ELSE USE LOW LIMIT AND CONTINUE AT UlCM
309832/0843
axes execution routine. (Achsen-Ausführunß)
0382·
0383· THE SYNTAX FOR AXES IS AS FOLLOWS!
0385· AXES X(ORIGIN)»Υ(ORIGIN)LX(TIC)»Υ(TIC)J CONSTANT AXIS ORIGIN. LOCATION OF CONSTANT AXIS POSITION. 023710 AX FOR No INCREMENT. SKIP TIC MARK SET UP 062125 MESSAGE.
0386· INCREMENT AXIS ORIGIN. LOCATION OF INCREMENT AXIS POSITION. 0.11730 SET UP TIC HARK VALUES 010402 JSM .PAR. A«-NUMBER OF PARAMETERS PASSED
0387· INCREMENT VALUE. VALUE. 031737 .E LDA K10 S10«-S17«-10000 ELSE ERROR 066324 CPA P2 IF A=2
0388· AODRESS VALUE. STa S10 SET TIC INCREMENT TO Clf|4ß0 JMp L14B THEN BY PASS TIC MARK SET UP
0389· To ImPLImENT THIS-. THE FOLLOWING TABLE HAS BEEN SET UP. ADDRESS OTHER INCREMENT VALUE. SlA S17 FULL SCALE VALUE 12305 B66313 CPA P4 IF A=4
0390· HIGH TIC 12306 066141 JMp o*2 ■ THEN SFT UP TIC MARKS
0391· S2 LOW TIC set sia and sis NEXT GET PARAMETER COUNT AND DO THE FOLLOWING. 12307 JMp L10B IMPLIED RETURN
0392· S9 12310
0393· S10 12302 A=2 12311
0394· SIl 12303 4 12312
0395· S12 12304
0396· S13
0397· S14
0398· S17
0399*
0400
0401
0402
0403·
0404*
0405·
0406·
0407·
0408·
0409*
0410
0411
0412
0413
0414
0415
0417·
041B·
0419·
0420
0421
0422
0423
0424
0425
0426
0427
0428
COMPUTE VALUES FOR
12313 020406
12314 062230
12315 072110
12316 023710
12317 031737
12320 062233
12321 072110 1232? P23710 12323 031730
TlC MARKS.
loa' M2
JSm L11H*1
kza •♦2
LDA K10
STA S17
jsm LIlA
rza • ♦2
LDA K10
SlA S10
A«·-2 - SET FLAG TO RY PASS OFFSET COMPUTATION A«-VALUE OF Y TlC MARK INCREMENT IF A=H
THFN AO0000 SAVE Y INCREMENT VALUE A*VALUE OF X TlC MARK INCREMENT IF A=0
THEN A«-10000 - FULL SCALE VALUE SAVE X INCREMENT VALUE
309832/0843
ORIQiNAL INSPECTED
AXES EXECUTION ROUTINE.
0430*
»432« 6*33·
fl444· 0445» 0446·
6452* 0453· 6454·
COMPUTE VALUES FOR LOCATION OF THE ORIGIN AND If THEY ARE OUT OF RANGE. SET ERROR 21 AND RETURN.
12324 070742 L14B SAr 16 S16<-0
12325 031736 ' sta s16 reset plotter limit flag
12326 0622?7 jsh llih a«-y value of coordinate origin
12327 $531720 sta s2 save valuf in s?
12330 b62233 jsm lila a«-x value of coordinate origin
12331 031727 sta s9 save value in s9
12332 6j21736 lda s16 if s16=0 (coordinates on scale)
12333 070150 sza **3 then skip 2 instructions
12334 024452 ' ldb p21 else set error 21
12335 s65351 jmp bad implied return
set up rest of table and draw χ axis.
12336 921653
12337 031731
12340 C21652
12341 031732
12342 C62355
LDA DYP STA SU LDA DXP STA S12 JSM L14A
S11«-ADDRESS OF Y AXIS PLOTTER POSITION S12«-A.DDRESS OF X AXIS PLOTTFR POSITION PLOT X AXIS AND TIC MARKS
RF-ARRANSE TABLE AND DRAW Y AXIS AND Do PEN-UP«
12343 021720
12344 025727
12345 035720
12346 G31727
12347 321737
12350 631730
12351 Ö55731
12352 045732
12353 062355
12354 C66717
LDA S2 A«-S2 -Y AXIS ORIGIN
LDB S9 B<-S9 -X AXIS ORIGIN
STB S2 CONSTANT AXIS«-B
STA S9 INCREMENT AXIS+A
LDA S17 S10«-S17
STA S10 INCREMENT VALUE«-X TIC INCREMENT
DSZ SlI SET X AXIS CONSTANT
ISZ S12 SET Y AXTS VARIABLE
JSH L14A PLOT Y AXIS AND TIC MARKS
JMP L12D IMPLIED RETURN
«466» «467« «468» 0469» β470· 0471· 0472» 6473»
9481·
(Programm zum Zeichnen der Achsen)
ROUTINE FOR ORAWNING AXIS.
START BY DOING THE FOLLOWING
1. DO A PEN-UP
2. MOVE TO 0 OF AXIS TO BE DRAWN.
3. DO A PEN-DOWN.
12355 062717 L14A JSM L12D
12356 021720 LOA S2
12357 131731 STa Sl1»I 1236CI 070742 SAR
12361 131732 STA S12.I
12362 062656 JSH L12R
12363 062713 JSM L12C
OO A PEN-UP
<S11>4-S2
SET CONSTANT AXIS ORIGIN <Sl2><-0
SET VARIABLE AXIS TO 0 POSITION MOVE PEN TO NEW POSITION PUT THE PEN DOWN
309832/0843
" ORIGINAL INSPECTED
axes execution routine. «482· set the high and low values for the tic marks and make sure
«483· THAT THEY ARE WITHIN BOUNDS.
12364 025720 LDB S2 B«-S2»47
«486 12365 0H4356 ADB P47 HIGH VALUE OF TIC MARK
«487 12366 062265 · JSM LlIB A«-VALUE RETWEEN 0<=B<=9999
«488 12367 031733 STa S13 S13*A - HIGH VALUE OF TlC MARK «489·
«490 12370 025720 LOB S2 B*S2-48
•491 12371 007645 ADB M48 LOW VALUE OF TIC MARK
«492 12372 062265 JSM LIlB A«-VALUE RETWEEN 0<=B<=9999
«493 12373 031734 STa S14 S14*A - LOW VALUE OF TIC MARK «494·
«495· FIND LOCATION OF JHF. FIRST TIC MARK BY SUBTRACTING THE VALUE «496· OF THE INCREMENT FROM THE ORIGIN LOCATION UNTIL THE RESULT
6497·.IS NEGITIVE. THEN ADD THE VALUE OF THE INCREMENT FOR THE «498· FIRST TIC MARK. «499·
8530 12374 021727 LDA S9 A«-S9 - VARIABLE AXIS ORIGIN
«501 12375 025730 LDB S10 B«-Sl0 - INCREMENT VALUE
«SS!2 12376 074076 TCB B«~Β
6503 12377 074017 ADA B ' WHILE 0<A
«504 12400 071753 SAp «-1 DO A*A»B «505·
«506 12401 074076 TCB Β«-- Β
«507 12402 »74017 AOA B A«-A*B - FIRST POSITIVE TIC MARK «508·
«509· MOVE TO COMPUTED LOCATION-AND DRAW TIc MARK. 0510·
0511 12403 131732 L14D STa S12,I SAVE VARlAPLE AXIS POSITION
C512 12464 06?656 JSM L12B MOVE PEN TO NEW TlC MARK POSITION
«513 12405 021733 LOA S13 <S11>*S13
«514 12406 131731 STA SIl,I CONSTANT AXIS*HIGH VALUE OF TIC MARK
«515 12407 062656 JSM L12B MOVE PEN
«516 12410 021734 LDA S14 <S11>«-S14
0517 12411 131731 STA SIl,I CONSTANT AXIS^LOW VALUE OF TIC MARK
«518 12412 06?656 JSM L12B MOVE PEN
«519 12413 021720 LDA S2 <S11>«-S2
0520 12414 131731 STa SIl,I CONSTANT AXIS«- VARIABLE AXIS ORIGIN
«521 12415 062656 " JSm L12B MOVE PEN «522· 0523· AOD INCREMENT TO PRESENT POSITION. IF NO OVERFLOW OCCURESi
«524· MOVE TO MEW COMPUTED POSITION. OTHERWISE. MOVE TO LOCATION C525» 9999 AND RETURN. 0526»
0527 12416 125732 LDB S12.I
«528 12417 P05730 ADB S10
0529 12420 062265 JSm LH«
0530 12421 «J7S112 SBM L140
«531·
«532 12422 023707 LDA P9999
«533 12423 131732 STa S12.I
«534 12424 066656 JMP L12B
ADD INCREMENT VALUE TO VARIABLE AXIS POSITION A«-VALUE PFTWEEN 0<=B<=9999 IF NEW POSITION < lflflflf» THEN CONTINUE TO LOOP
MOVE TO END OF AXIS IMPLIED RETURN
309832/0843
ORIGINAL INSPECTED
226272E
letter execution routines. (Buchstaben-Ausführung)
• 536· β537· SET LETTER PARAMETERS.
GET PARAMETER COUNT. THE SYNTAX FOR LETTER IS AS FOLLOWS: LTR X (CORD)» Y-(CORD) !»HEIGHT/WIDTH/DIReCTIONJ
thus if parameter count is not 2 or 3» set error 2 and return.
0539» 0540· 6541· 0542« β543· 0544*
6546 0547 0548 «549 fi550 0551· ©552· 6553· 0554 S555 6556 (5557 0558» 0559* 0568° 0561· 6562 e563 0564 · 0565 G566 9567
12425 Ö6P125 LE.E JSM .PAR.
12426 010402 CPA P2
12427 066437 JMp L15A
12430 010401 · CPA P3
12431 066433 JMP »«-2
12432 066141 JMP LlBB
A+NUMBER OF PARAMETERS PASSED IF A=2
THEN SKIP LETTER FORMAT SET UP IF A=3 THEN DO LETTER FORMAT SET UP IMPLIED RETURN
FIRST FOUR DIGITS OF THIRD PARAMETER AND SAVE.
12433 G62132
12434 000403
12435 Ü70517
12436 131654
JSM L2A A«-ADDRESS OF LETTER FORMAT DATA WORD ADA Pl INCREMENT ADDRESS LDA A»I A«-HIGH ORDER DIGITS OF FORMAT DATA WORD STA DLI»I SAVE LETTER FORMAT
compute the x and y. positions using the scaling routine and save the values, do a pen-up and move to the specified position.
12437 ©63227 LISA
12440 131653
12441 IV62233
12442 131652
12443 062717
12444 Ö66656
JSM LIlH A«-Y COORDINATE OF NEXT LETTER STA DYP,I ANO SAVE POSITION INFORMATION
JSM LIlA A«-X COORDINATE OF NEXT LETTER STA DXP,I AND SAVE POSITION INFORMATION
JSM L12D DO PEN UP AND MOVE To NEH POINT
JHp L12B IMPLIED RETURN
309832/0843
LETTER EXECUTION ROUTINES.
•569· •570· «571· 0572· •573·
execution of plot ".. "
set up either alpha or numepic letter field.
«5β1·
•584· (585· •586·
0603· 0604· •60S·
12445 121664 LE.EP LDA K»I
1H446 070744 SAL
12447 673272 SAH ALPHA,C
12450 070002 SAR
12451 663270 JSH L21F 1245? 055717 DSZ Sl
12453 066456 JMP ALPHA*2
12454 070002 ALPHA SAR
12455 062571 JSh L16E
SET UP PARAMETERS FOR LETTERING«
12456 12457 12460 12461 12462 12463 12464 12465 12466 12467 12470 12471 12472 12473 12474 12475
125654 862564 031730 ©62564 031731 f»74U7 070542 050401 070704 O0B405 1559365 070544 342632 027735 070016 035732
LIFT PEN 12476 «62717
LDB DLI.I JSH L16D STA SlH JSM L16D STA SU LDA B SAR AND P3 SAL ADA Ml AND P15 SAL I OR K4 LDB K9 EXA STB S12
JSH L12D
A«-ADDRESS OF FIRST PARAMETER SHIFT A LEFT I IF A(15)=l AND Λ(15>*0 THEN GO TO ALPHA SHIFT A RIfiHT 1 CONVERT NUMERIC PARAMETER AND SET UP DECREMENT CHARACTER COUNT
continue at alpha+2
shift a right 1 set up parameters for alpha string
B«-LETTER FORMAT A«-HEIGHT INCREMENT VALUE SAVE VALUE IN S10 AtWlDTH INCREMENT VALUE SAVE VALUE IN SIl FORM DIRECTION INFORMATION
FORM 4 BIT SHIFT INFORMATION
POSITION SHIFT COUNT INCLUDE ROTATE INSTRUCTION B«-DIRECTION WORD
EXECUTE INSTRUCTION FOUND IN A REGISTER SAVE DIRECTION INFORMATION
LIFT PEN
0608· •609· START NEXT LETTER.
•610· MORF. CHARACTERS.
•611· 12477 121652 L17A
12500 031726
12501 121653
12502 031727
12503 345717
12504 «66506
12505 170462
•619· «620· OO FOLLOWING:
SET NEXT LETTER POSITION AND CHECK FOR IF DONEi EXIT.
LOA DXPtI STA S8 LDA DYP,I SlA S9 ISZ Sl JMP REl s8*current x position S9*current y position
INCREMENT Sl
THEN SKIP 1
ELSE RETURN
AND IF Sl#0 (MORE CHARACTERS LEFT) INSTRUCTION
0 9 8 3 2/0843
LETTER EXECUTION ROUTINES.
MA
«621· B622· β623· • 624* β625·
«630»
0632»
0640* «641» 0642» C643* 6644« β645<» 0646»
0650»
1. SET COUNTERS.
2. GET NEXT CHARACTER.
3. SET CHARACTER VECTORS«
12506 020410
12507 031723
12510 070100.
12511 031724
12512 Θ62630
12513 12514 12515 12516 12517 12520 12521
070706 903671 070016 035725 070070 070016 035733
LOA M4
STA S5
AAR 3
STA S6
JSH L16G
RAR 15
ADA K5
ΕΧΛ
STB S7
SIA »♦1
EXA
STB S13
S5«~4 NUMBER OF VECTORS/WORD S6«--l
SECOND VECTOR WORD FLAG A«-NEXT ASCII CHARACTER
A«-2»A
ADD (LDB VECTR-64) INSTRUCTION WORD EXECUTE INSTRUCTION FOUND IN A REGISTER S74-FIRST VECTOR WORD INCREMENT ADDRESS PART OF LOAD INSTRUCTION EXECUTE INSTRUCTION FOUND IN A REGISTER S13<- SECOND VECTOR WORD
DRAW NEXT VECTOR.
SF.T VALUE OF S3 FOR NEXT HEIGHT SEGMENT. TF S3=-3» CHARACTER IS FINISHED. EXIT TO Ll7C. ELSE COMPUTE HEIGHT PART OF NEW VECTOR.
0655» Ö656« G6S7«
C662» 6663» «664*
«667» «660» ©669»
12522 662642 L17B
12523 Ö1B407
12524 066550
12525 021730
12526 025732 lP.527 074046 12530 062603
JSH L16H CPA M3-JHP L17C
LDA S10 LDB S12 RBR JSM L16F A«-NEGATIVE INCREMENT COUNT. IF A=-3
THEN EXIT LOOP
S3 ALSO SET,
A<-HEIGHT INCREMENT VALUE BIDIRECTIONAL INFORMATION POSITION HEIGHT DIRECTION INFORMATION GENERATE NEXT HEIGHT VECTOR
compute width part of new vector.
12531 662642
12532 021731
12533 025732
12534 ß62603
JSM Ll6H S3«-NEGATTVE INCREMENT COUNT LDA SIl A«-WIDTH INCREMENT VALUE LDB S12 B*WIDTH DIRECTION INFORAMTION JSM L16F GENERATE NEXT WIDTH VECTOR MOVE PEN TO NEW POSITION AND LOWER PEN IF IT IS NOT ALREADY DOWN.
12535 062656
12536 062713
JSM L12B MOVE PEN TO NEW POSITION JSM L12C ELSE PUT PEN DOWN
CHECK STATUS OF VECTOR WORDS, \ .
12537 C45723 ISZ S5 INCREMENT S5 AND IF S5«0 (MORE VECTORS LEFT IN THE W
12540 666522 JMP L17B THEN CONTINUE TO LOOP AT L17B
12541 045724 ISZ S6 INCREMENT S6 AnO IF S6«0 (NO MORE VECTOR WORDS LEFT)
12542 C66550 JMP L17C THEN EXIT LOOP AND GO TO L17C
12543 020410 LDA M4 S5«—4
12544 Ö31723 STa S5 NUMBER OF VECTORS/WORD
12545 021733 LDA S13 S7*S13
309832/0843
ΙΛΖ.
LETTER EXECUTION ROUTINES.
11679· «680· β681· 0682· 0683·
C686 «687 (»688 3689 0690 C691 0692 0693 0694 β695
12546 031725 STa S7
12547 066522 JHP L17B
CHARACTER FINISHED.
GET ANn SAVE SECOND VECTOR WORD CONTINUE TO LOOP AT L17B
LIFT PEN AND COMPUTE NEXT CHARACTER POSITION. DO NEXT CHARACTER.
12550 062717 L17C JSH L120 LIFT PEN
12551 020407 LDA H3 S3»--3 '
12552 031721 STa S3 INCREMENT COUNT FOR SPACING TO NEXT CHARACTER
12553 021731 LDA SIl A«-WIOTH INCREMENT VALUE
12554 025732 LDB Sl? B«-WIDTH DIRECTION INFORHATION
12555 C62603 ' JSH L16F GENERATE WIDTH SPACE VECTOR
12556 070742 SAR 16 S3+0
12557 031.721 STA S3 0 HEIGHT INCREMENT
12560 025732 LDB S12 B'-DIRECTION INFORMATION
12561 074046 R8R 2 POSITION HtIGHT DIRECTION INFORMATION
12562 062603 JSH L16F GENERATE HtfIGHT SPACE VECTOR
12563 066477 JMP L17A . GO TO L17A AND START NEXT CHARACTER
B697» 0698· 0699· Ö700· ί>701·
C707· 0708· C709· 0710· «711· β712· 0713· 0714· 0715· 8716· 0717· «718· «719·
«72β·
SUDROUTINES USED FOR LETTER.
L16D IS USED TO EXTRACT LETTER PARAMETERS FROM THE VECTOR TAHLE.
12564 074546 L16D RBR
12565 074117 LOA B
12566 050365 AND P15
12567 070544 SAL 12570 170402 RET
A(0-3)*O(12-15)
A«-32*A RETURN
L16E SETS UP PARAMETERS FOR ALPHA STRINGS. CALLING SEQUENCE:
LDA ADORESS OF LABEL JSM L16E ... RETURN
ON-RETURN S =ADORESS
Sl=-(COUNT*1> S2=52525
12571 031716 L16E
12572 031717
12573 32CI522
12574 031720
12575 121717
12576 O7PI152
12577 045717 12600 066575
STA S STA Sl LDA K3 STA S2 LDA S1,1 SAH ·*3 ISZ Sl JMP »-3
SAVE ADDRESS OF ALPHA STRING S2«-52525R
SET HIGH/LOW POINTER IF NF.XT WOPD IN ALPHA STRING<0
THEN EXIT LOOP
ELSE INCREMENT ADDRESS POINTER AND CONTINUE TO LOOP
309832/0843
LETTER EXECUTION ROUTINES.
6731· 0732* 0733· β734· 0735* 0736· 0737· 0738»
12601 031717
12602 170402
STA Sl RET
SI«—(NUMRER OF CHARACTERS*!) RETURN
1)749·
«762» 0763*
0774· fl775· «776·
0782·
L16F IS USFO TO COMPUTE THE NEXT VECTOR POSITION.
the CALLTHG sequence is:
LDA INCREMENT
LDB DIRECTION INFORMATION . JSH L16F
12603 074006 L16F RBR 1 ROTATE B RIGHT 1
126P4 (374111 SLB **Z IF B(H) = I (NEGATIVE INCREMENT)
12605 070076 TCA THEN A«~Λ
12606 031744 STA ARl SAVE INCREHENT VALUE
12607 021726 LDA S8 Α«·Χ REFERFNCE POSITION 12613 074113 SBp *»2 IF B(15)=l
12611 021727 LDA S9 THEN A<-Y REFERENCE POSITION
12612 D35722 STß S4 SAVE DIRECTION INFORMATION
12613 055721 DSZ S3 INCREMENT S3
12614 Ö66616 JHp **2 SKIP I INSTRUCTION
12615 C01744 ADA ARl A«-A*AR1 - AOD INCREMENT
12616 045721 ISZ S3 INCREMENT S3 AND IF S3#0
12617 G66615 JMp *-2 . THEN CONTINUE TO LOOP
12620 070137 LDB A B«-A
12621 06P265 JSH LIlB A«-VALUE RFTWEEN 0<=B<=9999
12622 02S7?2 LOB S4 B«-DIRECTJON INFORMATION
12623 074153 SBP **3 IF B(15)=l
12624 131653 STA DYP,I THF.N SAVE VALUE IN Y COORDINATE POSITION
12625 170402 RET AND RETURN
12626 131652 STa ΟΧΡ,Ι ELSE SAVE VALUE IN X COORDINATE POSITION
12627 170402 RET AND RETURN
L16G IS USED TO GET ThE NEXT CHARACTER FROM THE ALPHA STRING.
12630 121716 L16G LDA S»I A«-WORD FROM ALPHA STRING
12631 025720 LDB S2 8*-HlGH/|_OW POINTER
12632 074006 K4 RBR 1 ROTATE POINTER I PLACE
12633 935720 SlB S2 AND SAVE POINTER
12634 674153 SBp **3 IF B(15)=l (CHARACTER IN HIGH PART OF WORD)
12635 070346 WAR 8 THEN ROTATE HALF WAY
12636 066640 JMP »*2 AND SKIP I INSTRUCTION
12637 045716 ISZ'S ELSE INCREMENT BUFFER ADORESS
12640 050345 AND P127 SAVE BITS «-7
12641 170402 RET RETURN
L16H IS USED TO SET-Up THE NEXT DIRECTIONAL VECTOR.
12642 021725 L16H LDA S7
12643 070646 RAR 14
12644 P3I725 STA S7
12645 050401 AND P3 12Λ46 070076 ICA 12647 031721 STA S3 12650 170402 RET
A«-VECTOR INFORMATION WORD ROTATE A !'♦
AND SAVE VECTOR WORD SAVE BITS 0-1 A«-A
S3«-(INCREMENT VALUE -1) RETURN
309832/0843
plotter drivers (Kurvenschreiber-Treiber)
07P6· PLOTTER STATUS CHECK 0787·
0788· Request status and set pen position information into the sign bit,
(1789·
G«-PLOTTER SELECT COOE SAVE SELECT CODE IN S15 GET STATUS ROTATE A RIGHT 12 RETURN
0790 12651 027677 Ll2A- LDB P.SC
f791 12652 035735 SlB S15
C792 12653 063555 JSm L20B*1
f793 12654 074546 HBR 12
0794 1265S 170402 RET
0796· 0797· MOVE PLOTTER PEN.
0798»
C799· set up parameters needed for output.
6800» POSTIONS TO PLOTTER IN FOUR PASSES.' FOLLOWS; then output χ and υ
THE BlT FORMAT IS AS
«803· β-3 BCD DECADE I OR 100
0804· 4-7 BCO OECAOE 1(5 OR 10000
08K5· B SYNC/NOT SYNC
£806· 9 BCD/BINARY
«BfiS7* 10 UP/OOWN
«808» U DATA/PEN
ββΟ9·
€810 12656 323677 L12B LDA P.SC
0811 12657 031735 STA SlS
C812 12660 920410 LOA M4
β813 12661 031662 STA I
C614 12662 320406 LDA M2
0815 12663 031663 SlA J
C816 12664 121652 LOA DXP,I
6617 12665 072054 SES •♦If S
«1818 12666 066670 JMP •♦2
6819·
C820 12667 021664 L13B LDA K
C821 12670 070346 RAR 8
C822 12671 031664 STA K
6823 12672 0.50342 and' P255
0824 12673 078134 SES •♦2,C
«825 12674 040341 IOR P256
«826 12675 025662 LDB I
0827 12676 074056 CMB
C 828 12677 074044 SBL 15
«829 12700 074242 SBR 6
«830 12701 074217 IOR B
«831 12702 063535 JSM L20A
0832 12703 070075 SEC •♦i,c
«833·
0834 12704 045662 ISZ I
0835 12705 066707 JMP •♦2
C836 12706 170402 RET
S15+PL0TTER SELECT CODE
TOTAL NUMBER OF SEGMENTS J«~2
NUMBER OF SEGMENTS/COORDINATE A«-X COORDINATE POSITION E+l SKIP 1 INSTRUCTION
A«-DATA WORD TO BE OUTPUT ROTATE WORO HALF ViAY
AND SAVE DATA WORO SAVE BITS 0-7 IF E = I ΛΝΓ> Ε«·0
THEN IMCLUOE NON-SYNCH RlT
GENERATE BINARY CONTROL BIT • FOR EVERY OTHER OUTPUT WORD
INCLUDE BINARY CONTROL BIT OUTPUT DATA WORD
INCREMENT 1 ANO IF I «PI (MOPF SEGMENTS» THEN SKIP 1 INSTRUCTION AND CONTINUE ELSE RETURN
309832/0843
PLOTTER DRIVERS
6837*
a838 12707 845663 ISZ J
CB39 12710 366667 JHP L13B
6840 12711 121653 LDA DYPtI
βΒ41 12712 Ö66670 JMP L133*l
•INCREMENT J AND IF J«0 (NEED 2ND SEGMANT OF COORDINA
THEN LOOP TO OUTPUT NEXT SEGMENT A«-Y COOROTNATE POSITION LOOP AND OUTPUT Y SEGMENTS
0843*
6845» flB46» C647» ti 848* 0649« 0850»
PEN UP/DOWN ROUTINES.
FIRST CHECK STATUS AND IF THE POSITION, EXIT THE HOUTINE.
0852 0853 G854 «855« «856* 6857» 6858
CB60 0861 «862 C863 0864« £865
PEN DOWN
12713 062651 L12C
12714 028431
12715 Ö74253
12716 170402
PEN UP
12717 662651 L12D l?72fl C75713
12721 02?/402
12722 071610 L13C
12723 Ü70246
12724 067535
12725 0000S0
JSH L12A LDA P3 SBP L13C RET
JSH L12A SBP *-2 LDA P2 S2A L120-1 RAR JHP L20A
BSS PEN IS ALREADY .IN THE CORRECT
A+PLOTTER STATUS Α«·3 ~ PEN DOWN CONTROL BITS IF B(IS)=O (PEN UP) THEN GO TO L13C ELSE RETURN
ALLOTTER STATUS IF B(15)=H (PEN UP) THEN RETURN Λ<·2 - PFNUP CONTROL BITS IF A=0 (7.ER0 STATUS) THEN RETURN POSITION CONTROL BITS OUTPUT PEN COMMAND. IHPLIED RETURN
CHECKSUM WORD
309832/084 3
equates (Gleichsetzen)
βΟ67·
«868·
0869·
C870
0871
«872
{1873
0874
C875
0876
0877
0878
«880 C881
6803
0885·
0886
B8B7
0888
0889
0890
0091
0892
ff 893
0896
t-897
C898
C699
«900
«901
0902
0903
0904·
C935
0936
0907
0908
«939»
0910
0911
0912
0913
0914
0915
0916
0917
0916
0919
0920
0921
β92^
SOU'S
01650 «1650 «1651 «1652 01653 Cl 654 β 1655 01656 01657 ei 660 01661 01662 01663 «1664 01665
01716 S1717 01720 01721 01722 01723 C1724 61725 01726 C1727 01730 01731 0173? C1733 01734 61735 01736 01737
«1740 01741 «1742 81743
01556 01557 00346 B1S54 01553 01555 01543 «1710 00247 01740 01744 01701 00265
DFMT
OXP
DYP
DLI
DQX
DAX
DBY
DAY
DIN
Sl
S2
S3
S4
S5
S6
S7
S8
S9
S10
SIl
S12
S13
S14
S15
S16
S17
RFP.C REP.Λ FW CC
API
AP2
XJ
OPl
0P2
0P3
LIMl
.END?
• ΤΛΒ7
.Tl
ARl
.WKC
MATH
EOU 1650B EOU D EOU D»l EOU D»2 EQU 0*3 EOU D»4 EOU 0*5 EOU 0*6 EQU D»7 EOU 0*8 EOU 0*9 EOU 0*10 EOU 0*11 EOU 0*12 EQU 0*13
EQU 17168 EOU S»l EOU S*2 EOU S*3 EQU S*4 EOU S^5 EOU S«6 EQU S»7 EQU S*fl EOU S*9 EQU S*1B EOU S*ll EOU 5*12 EOU S*13 EOU S»14 EOU S»15 EOU S*16 EQU S*17
EOU S»1H EOU S*19 EOU S»20 EOU S*21
EQu 1556B ECU 1557B EQU 346H EQU 1554B 1S53B 1S55B 1543B 1710B
ECU ECU EOU EOU SYSTEM OPTION BLOCK TABLE TO ADDRESS OF LAST FORMAT TO ADDRESS OF NEXT END ROUTINE SEGMENT TO X COORDINATE POSITION TO Y COORDINATE POSITION TO LETTER FORMAT INFORMATION
AXIS OFFSET VALUE AXIS SCALE FACTOR AXIS OFFSET VALUE
TO X
TO X
TO Y
TO Y AXIS SCALE FACTOR TO INPUT STATUS BUFFER
EOU 247B EOU 1740B EOU 1744B EQU 1701B EQU 265B ADDRESS OF LINK WORp LINK WORn LINK WORD LINK WORD LINK WORn LINK WORn LINK WORD LINK WORD LINK WORD LINK WORO I J
FORMAT REPEAT COUNT FORMAT REPEAT SPECIFICATION ADDRESS FORMAT FIELD WIDTH OUTPUT CHARACTER COUNT ADDRESS POINTER ADDRESS POINTER LINK WORn FOR NORMAL RETURN TO SYSTEM MATH OPERAND POINTER MATH OPERAND POINTER MATH OPFRAMD POINTER POINTER TO FIRST WORn OF USER MEMORY LINK WORD USED BY SYSTEM FOR END ROUTINE LINKAGE ATEA FOR OPTION BLOCKS TFMPORARY REGISTER MATH REGISTER TEMPORARY STORAGE OF KEYCODE FIRST ENTRY LOCATION OF MATH ROUTINE TABLE
3 Ü 9 8 3 2 TO 8 U3
0923
fl924
C925
0926
0927
β92β
0929
<J930
«5931
β932
8933
0934
(5935
0936
«937·
0938*
0939»
β 940
0941
6942
C943
6944
fl945
0946
0947
6948
0949
0950
0951
0952
€953
β95'4
8955
0956
0957
β958
0959
6960
«961
0962
6963
0964
0965
0966
3967
0968
α969
0970
0971
0972
β973
β974·
8975
«976
0977
•976
01561 01351 00552 01544 00326 01605 60277
61703 00323 Ö0312 Cl 322 12717 00533
EQUATES
CODE
BAD
SXJ
SKEY
RECY
IMA '
.FMT
.IBUF
.WPRT
SMON
ENT2
FIXPT
PE.E
.X3
constants
00341 00342 C0345 fi0466 00553 30505 00404 00356 G0530 P 05 27 CB545 Ö0544 S0537 03360 00453 00452 00451 00352 (10365 00366 00367 00372 63376 S0400 03401 00402 00403 30405 30406 00407 C0410 C0415 00420 00424
00522 00446 «0441 00442
EOU 1561B EOU 1351B EOU 552R EQU 1544» EQU 3260 EOU 1605B EOU 277B ECU 554F) , EOU 1703B EOU 323R EQU 3IRB EOU 1322B EOU L12D EQU 533B
P256
P255
P127
P96
P91
P90
P69
P47
P46
P45
P44
P43
P33
P32
P22
P21
P20
P17
P15
P14
P13
P10
P6
P4
P3
P2
Pl
Ml
M2
M3
M4
M10
M16
M64
K3 K7 K8 K13
EQU 34 IB EQU 342B EOU 345B EQU 466B EQU 553B EQU 505B EQU 404B EQU 356B EQU 530B EQU 527B EQU 545B ECU 544B EQU 537B EQU 360B EOU 453B EQU 452B EQU 45IB EQU 352B EOU 365B EOU 366B EQU 367B EOU 372B EQU 376B EOu 400B EQU. 40IB EQU 402B EOU 403B EOU 405B EQU 406B EOU 407B EQU 410B EOU 415B EOU 420R EOU 424B
EQU 5220 EQU 446B EOU 44 IB EQU
226272
CONTAINS CODE WORD FOR KEYCODE REING PROCESSED ROUTINE TO SET ERROR CODE AND ERROR FLAG ROUTINE TO GET NEXT KEYCODE FORM POLISH STRING CONTAINS ACTUAL KEY CODE BEING PROCESSED ROUTINE TO RE-CYCLE PRESENT CODE WORD LINK WORD TO ADDRESS OF NEXT CODE WORD LINK WORD TO FORMAT ROUTINE . ADDRESS OF I/O BUFFER FLOAT N/FIXED N FORMAT WORD LINK WORD TO PASS KEYCODES IN THE ENTER MODE LINK WORD TO SET UP ENTER ROUTINE ROUTINE TO CONVERT FROM FLOATING TO BINARY INTEGER PEN UP EXECUTION ROUTINE OO A RETURN ♦ 1 PAGE 0fl25 «01 EQUATES
•979 «0477
.DTl EOU <»77β 309832/0843
ORSGJNAi IMSPECTED
WRITE EXECUTION ROUTINE (Schreiben-Ausführung)
1*53· GET SELECT CODE. 045652 L23A TF ERROR OCCURS GO BUCK TO go το the select code error
145'»· ROUTINE. CONTROL »67334 WILL THE SYSTEM.
1455· 067326 DXP
1456· 13331 063260 ISZ •♦2 INCREMENT OXP AND IF DXP=0
1457 1333? 067337 JHP L238 (NO MORE PARAMETERS)
1458 13333 667326 JMP L21E THEN GO TO ERROR ROUTINE
1459 13334 JSH **Z IF NEXT PARAMETER=ALpHA
1460 13335 B61322 JMP L23B
1461 13336 374146 L23C JMP THEN GO TO ERROR ROUTINE
1462 835735 FIXPT
1463· 13337 C74546 JSM 4 RECONVERTED BINARY INTEGER DATA WORD
1464 13340 004405 RBR sis ROTATE B RIGHT 4
1465 13341 074113 STR 12 SAVE SELECT CODE
1466 1334? »67326 HQR Hl ROTATE B RIGHT 12
1467 13343 «!07655 ADB •♦2 IF SELECT CODE<1
1468 13344 S74112 SBP L23B
1469 1334S 967326 JMp M15 THEN GO TO ERROR ROUTINE
1470 13346 170402 AOB ·*?. IF SELECT CODE>15
1471 13347 SBH L23R
1472 13358 JMP. THEN GO TO ERROR ROUTINE
1473 13351 RET RETURN
1474
0 9 8 3 2/0843 0WGHNAL INSPECTED
READ EXECUTION ROUTINE (Lesen-Ausführung)
first ret'select code and make sure that «<sc<16. also a COMMA MUST FOLLOW THE SELECT CODE. IF AN EWOR OCCURES» LOOK FOR THE NULL CHARACTER IN THfZ STRING AND THEN" SET THE ERROR CODE AND RETURN TO ThE SYSTEM.
13352 E570742 RE.E
13353 S31730
13354 160552
13355 Ö10352
13356 067591
13357 663141
13360 067354
13361 610451
13362 067367
SAr 16 . S10«-0
STA Sl0 INITIALIZE THE NUMBER BUILDER ROUTINE
JSM SX J» I A«-NEXT CHARACTER FROM MEMORY
CPa P17 IF A=A REFERENCE TO A»B»C»X.Y» OR Z
JMP L26E THEN GO TO L26E
JSM L18C IF A IS A NUMBER
JMP «-4 THEN LOOP AND CONTINUE TO BUILD NUMRER
CPA P20 IF A=COMMA
JHP L26A THEN SKIP TO L26A
ERROR ROUTINE - SEAKCHFOR NULL CHARACTER.
13363 0103Se L26Z
13364 Z67327
13365 160552
13366 £67363
13367 025730 L26A 13370 S63340
CPA P47 IF A=NULL CHARACTER
JMp L23B+1 THEN GO TO ERROR ROUTINE
JSM SXJ, I ELSE A«-NFXT CHARACTER FROM MEMORY
JMP L26Z AND CONTINUE TO LOOP
LDB SI« · B«-BMILT NUMBER
JSM L23C CHECK RANGE OF SELECT CODE
3 0 9 832/08A3
ϊα r«UM INPUT TO OUTPUT DEVICE
{Durchgangsdaten von Eingabe- zu Ausgabe-Gera "I) the syntax is as follows:
CTR SCl.SCZ
WHERE SCl=SELECT COOE OF INPUT DEVICE SC?=SELECT CODE OF OUTPUT OEVICE
GET BOTH SELECT CODES. IF LESS THEN TWO SELECT CODES OR IF select cooes out of hange» set error 20 and return to;System.
jsm l22r set (jp parameter information
jsm l23a set up select code on input device
jsm l24d set input status bit
LOA SlS S16«-S15
STA S16 TRANSFER SELECT CODE
JSM L23A SET UP SELECT CODE OF OUTPUT DEVICE
LDA S15 S17«-S15
STA S17 TRANSFER SELECT CODE
13564 063314 CO.E
13565 063331
13566 Ö63531
13567 021735
13570 Ö31736
13571 063331
13572 P21735
13573 031737
PASS CHARACTER RY CHARACTER FoRM THE INPUT DEVICE TO THE OUTPUT DEVICE U^T IL AN EOM CODE IS DETECTED.
13574 P21736 L27A
13575 031735
13576 063507
13577 11(1401
13600 170402
13601 025737
13602 035735
13603 C63535
13604 £67574
LDA S16 STA S15 JSM L24B CPA P3 RET
LDB S17 STB S15 JSM L20A JMP L27A
SET INPUT SELECT. CODE
A«-CO[)E FPOM INPUT DEVICE
IF A=ENO OF MESSAGE CHARACTER
THEN RETURN WITHOUT PASSING A CR AND LF S15«-S17
SET OUTPUT SELECT CODE
OUTPUT CODE IN A REGISTER CONTINUE TO LOOP
13605 000130 Ρ8Θ DEC
30 9 8 32/Ό843
ORIQiNAL 1IW
I ULJ
13612 VECTER TABLE LETTER VECTOR TAHLE 140000 VECTR P94 DEC IzA in
000000 HSS (Vektor-Tafel)
1791 13612 112034 P36 DEC 13612H
1792· 13613 000136 DEC
1793· 13632 113034 DEC
1794· o«G 13633 Ö0J1044 DEC
1795 13634 0432?6 OCT -163B4 BLANK
1796 13635 (316000 15 ENTIRE AREA IS USED BY THE MNEMONIC ROUTINE
1797 13636 &14524 M18 DEC -27620 (
1798 13637 »66000 94
1799 13640 602700 M48 OEC -27108 )
1800 13641 177756 DEC 36
1831 13642 043300 Kl DEC 43226il6000 ASSIGN
13643 177720 DEC
1802 13644 016000 K2 DEC 6484*27648 ♦
13645 £37777 OCT
1803 13646 C05300 DEC 1472 t ■
I8ü4 13647 039740 OCT -18
1805 13650 C04242 M15 OCT 18112 -
1806 13651 605300 -48
1807 13652 014700 DEC 7168
18Z8 13653 177761 DEC 37777
1809 13654 105145 OCT 2752 /
1810 13655 031300 740
1811 13656 135145 DEC 4242t5300 0
.13657 £61014
1812 13660 132152 DEC 6592 1
1813 13661 Q26Ö00 -15 .
1814 13662 124105 OCT 105145,1300 2
13663 023300
1815 13664 1241(56 K5 DEC -30107,25100 .3
13665 G2«J114
1816 13666 135034 OCT -3163«.11264 4
13667 D27512 LDB
Ϊ817' 13670 044246 DEC 124105,20300 5
13671 040046 K6
1818 13672 ?31250 P.SC DEC -2245*1,8268. 6
13673 1343300 INTE .
1819 13674 170i'3H SFHT OCT 105034 7
1820 13675 163300 OLINK OCT VECTR-64
1821 13676 033032 FHT0 DEF 18590,16*22 8
13677 Cai7fl3 DEF
1822 13700 C01650 DEF 680»!BJ12 9
13701 01^022 D9999 OCT
1823 1370? 014270 Ρ^999 17000P TYPEWRITER SELECT CODE
1824 13703 (J3P400 K10 160000 PLOTTER SELECT CODE
1825 13704 114631 KlI DEC ELIW-ID RELATIVE ADDRESS OF THE OPTION BLOCK ROUTIN
1826 13705 C23417 DEC FMT0-ID RELATIVE ADDRESS OF THE STANDARD FORMAT
1827 13706 023420 DEC D ADDRESS OF OPTION BLOCK R/W AREA
1828 13707 154360 DEC 15022,14270,32400 STANOARD FORMAT
13710 000000 BSS
13711 004242 DEC
1829. 13712 -262IS
1830 13714 9999
1831 10000
1832 •!•10800
1833 2
1834 2210,25792 A ·
309832/0843
IZZ,
13715 VECTER TABLE DEC 2213,17952 B G J H
13716 062300
1835 13717 004245 OEC -22207,11264 C H K N
13720 043040
1636 13721 124501 ■ OEC 2198,4288 O I L O
1372? 026000 164503 PLOTTER LETTE 1 CHECKSUM WORD
1837 13723 O042?6 DEC -22459,16428 E -24060,-16384 2138,11264 P
13724 010300
1838 13725 124105 DEC -22459,16576 F 2122,17088 2090,-16384 Q
13726 B40054
1839 13727 124105 DEC -22526,26048 -32724 2210,3072 R
13730 040300
1840 13731 1243(12 DEC 2118,-23872 2214,19456 S
13732 062700
1841 13733 004106 DEC 6592 8330,9664 T
13734 121300 OCT
1842 13735 (V 14700 DEC 2214,17708 υ
1843 13736 164503 K9
1844 13737 121004 DEC 612,-30016 ν
13740 148390
1845 13741 004112 DEC -30063,-16384 W
13742 »41300 BSS
1B46 13743 130054 DEC -32726,-16384 χ
ie47 13744 006000
1848 13745 604132 DEC .-32340 Y
13746 026*000 6710B
1849 13747 334G52 DEC -32606,-21504 Z
13750 140ΟΠ0
1850 13751 034242 DEC 264fl,11264
13752 O360GO
1851 13753 004246 DEC -31323,7168
13754 (346000
1852 13755 «".20212 DEC -30206,-16384
13756 022700
1853 13757 004246 DEC
13760 042454
1854 13761 £31144 DEC
13762 105300
1855 13763 J052?l DEC
13764 140000
1856 13765 130052 DEC
13766 140000 : DEF
1857 13767 10(1654 DEC
1858 13770 ßfli.710 ENDE
1859 13771 100122 DEC
13772 126000
i860 13773 035130 DEC
13774 026000
1861 13775 102645 DEC
13776 016000
1862 13777 135002
140000 END
1863·
1864
• NO ERRORS»
309832/0843
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN" (Belegbarer Funktionsblock ."UDFUN")
0001 14000 000004 662765 ASMBtAtL OPTION 14000R
C003 800071 631720 ORG
0005· 001224 070402 ID ' DEC
0006· DEFINE-A-KEY 600567 603724 DEF
0007 DEF SYNT-ID
6008·
ß009
14000 INITIALIZE 325543 DEF EXEC-ID
61510 14001 G70577 MNEM-ID
2011 14002 14004 904371
β012· 14003 14005 635543
0013* 14006 JSM
0014» 14007 023120 STA FIND
0015 S31615 SAR T2
Ρ.016 14010 ADA 9
6017 14011 •362745 NSRW
0018 14012 621720 LDB
0019* 14013 131655 STb LIMl
6020 R03151 ADB AtI
0021 14814 625710 STB DPIl
0022 14015 £31710 LIMl
0023 135654 LDA
0024* 14916 STA DP144
0025 14017 121655 BSTK
£026 14B2C 003427 JSM
6027* 14021 iJ31623 LDA TINK
QZ?B 14 022 121655 STA T2
0029 14023 »02445 ADA PGtI
ßß30 14024 631616 LDB ADND
Ö032 STa .END2
6033 14025 P25560 STb .END2
0034 14026 121655 ENtI
C335 14027 Ü02l?3 LDA
6036* 14030 031560 ADA PCI
6037 14031 135656 STA ADGT
6038 14032 LDA GOTF
«339 121655 ADA PGtI
G041 14033 670442 STA AZERO
«042 14034 600410 .ERASE
«043 14335 131652 LDB
ß-344« 14336 024431 LDA OSW
flß45 14037 074517 ADA PGtI
0046 Ö72110 STA CMPLR
{1047 14040 stb OSW
C048 ' 14041 SOSWtT
C049 14342 Lt)A
C050« 14043 SAR PG.I
0051 14044 ADA 10
«352 ' 14045 STA DM4
C ÖS 3 14046 LDB NABtI
fi054 LDA OQl
0355 I<2a BtI
(5056 «+2
0057
BASIC SYSTEM ENTRIES, SYNTAX LINKAGE RUN TIME CODE LINKAGE
DISPLAY MNEMONIC
GET ADDRESS OF THIS BLOCK
RETURN WITH ADDRESS IN A-REG.
A = 8tl0»l2
AND ITS RESERVED R/W
RESERVE 11 R/W WORDS
BY MOVING LTMIt A-REG HAS AODRESS OF NON-SHARED R/W FOR THIS BLOCK
READJUST LlMl
DOUBLE SI7E OF RUN-TIME STACK"
TRANSFER LINKS. NON-SHARED R/W TAKEN FROM USER'S R/ SET UP PAGE IDENTIFICATION (ADDRESS OF OPTION BLOCK)
SET UP ADDRESS OF END LINKAGE ROUTINE. GET CURRENT START ADDRESS O? END LINKAGE SAVE NEW ADDRESSt SAVE OLD ADDRESS FOR OAISY-CHANGIN SAVE OLD ADDRESS FOR DAISY CHAINING
SET UP SPECIAL GTO LINKAGE
SET UP CONTINUATION OF RGTO IN
THE BASIC SYSTEM
SET UP CONTINUATION OF BASIC SYSTEM COMPILER
SAVE OLD ADDRESS FOR DAISY CHAINING
CHECK FOR ABSENT BLOCKS
NAB = 0tlt2
SEARCH THE STARTING ADDRESSES
IF WORD IS NON-ZERO OPTION BLOCK IS PRESENT
309832/0843
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN"
SET UP EXTRA COOES
SET VP EXTRA CODES
SET. UP EXTRA CODES i THIS SUOPf)UTINE IS USED
TO FETCH A BASE ADDRESS FOR OPTIONAL COOES
BASE ADDRESS OPTION BLOCK #1 BASE ADDRESS OPTION BLOCK #2 CASE ADPRESS OPTION BLOCK #3
■05B 14047 063050 JSM ECDS
•059 14050 024432 LDB 0B2
006» 14051 074517 LOA BtI
«061 1405? 072110 R2A •♦2
0062 14053 061050 JSM ECDS
0063 14054 »24433 Lob 0Π3
006« 14PIS5 074517 LDA UtI
•065 14056 072310 «ZA •♦6
0066 U0S7 »67050 JMP ECDS
«067»
«068 14060 121655 ADCD LDA PG »I
0069 14061 070442 SAR 10
e070 14062 U32065 ADA •♦3
0071 14063 870016 EXA
607? 14064 173402 RET
0073 14065 »2?062 LDA •-3
9074 14066 000154 OCT 154
0075 14067 000162 OCT 162
0076 14070 1)00170 OCT 170
309832/0843 ORIGINAL INSPECTED
USER-DEFINEAßLE FUNCTION BLOCK — "UOFUN"
226272
0078» compile 973113 SYWT SAP »♦2
0079» Ö6S464 JMP UNCPL
0080 14071 Ö21127 LDA SCODE
flam Hfl72 031561 SYNTl STA CODE
C0R2 14073 170402 «ET
ceo3 14074
€08'« 14375 063071 C0PL3 JSm GETIC
0085* 031720 sta T2
0086 14076 670137 LDB A
0087 14077 002717 ADA DM19
6088 14100 071553 SAP «-5
9089 l'»101 Ö00372 ADA OP10
0390 14102 670153 SAP **3
6291 14103 ($00377 ADA DP5
Ö092 14104 Ö71353 SAP a-9
0093 14105 164533 JMP RETl.I
C094 14106
0095 14107 121724 CMSET LDA EOLFG,I
Ö096· 870310 S2A CMSl
«097 14110 (362060 JSm AOCO
Θ098 14111 030403 ADA DP4
6099 14112 070137 LD8 A
0100 14113 Ö20537 LDA COEOL
άΐ01 14114 163742 JSM CCItI
0102 14115 f?7fi742 CMSl SAR 16
0103 I4II6 131724 1 - STA EOLFG,I
«104 14117 131651 STA .GtI
βΐ05 14120 «66154 JMp NORET
0lß6 14121
0107 14122 00fl124 CHPLR DEF »♦1-ID
6108*
C109 14123 062745 COMPR JSM TlNK
βΠ0· 121655 LDA PG,I
Olli 14124 07ß442 - SAR 10
ei la 14125 032711 ADA TTB0
6113 14126 070016 EXA
0114 14127 131726 STa IEXC.I
ens 14130 »25540 COl lob CN
β116 14131 021601 LDA STAT
öl 17 I4I32 070102 SAR 3
01)8 14133 670151 SLA «♦3
0119 14134 014454 CPß CNFY
0120 14135 G65317 JMP El
ai2i 14136 Ö14355 CPB CNFR
0122 14137 Ö66117 JMP CMSl
0123 U140 121651 LDA .6,1
el 24 14141 672550 H2A COPLl
6125 14142 417131 CPB CNFO
9126 14143 366161 JMP C0PL2
8127 14144 Ö14457 CPO CNFE
i)28 14145 066110 JMP CMSET
0129 1414A 017148 CPB CNFT
0130 14147 0664?6 JMP ERET
0131/ 14150 017141 CPB CNF.D
0132 14151
0133 1415?
ENTRY POINT FOR SYNTAX CHECK
IF A-REG - REOUST IS FROM (JNCOMPILER IF A+ REOUEST IS FROM SMON SET CONTROL NUMBER TO 51
SUBROUTINE USE TO ISOLATE FUNCTION KEYS SAVE SPECIAL CODE FOR THE KEY
IF KEYCODE IS GREATER THAN OR EQUAL TO IT IS A FUNCTION KEY
KEYCODE IS OPTIONAL KEYS
KEYCODES ARE FUNCTION KEYS OF THIS BLOCK RETURN *1
RESET PORTION OF COMPILER EXTENSION IF EOLFG IS NON ZERO SPECIAL EOL REQUIRED SPECIAL EOL IS THE 4TH ADDITIONAL CODE SEND SPECIAL EOL TO COMPILER STACK ROUTINE
CLEAR SPECIAL EOL FLAG CLEAR SPECIAL DIRECTOR FLAG .
CONSTANT USEO TO SETUP COMPILER CONTIM1IiATION ROUTIN TRANSFER LINKS TO R/W TEMPORARIES
SET-UP CODE USED FOR IMMEDIATE EXECUTE SET CONTROL NUMBER OF CURRENT CODE IN B-REG BIT 3 OF STAT ijSEO TO ALLOW 1M" KEY BIT 3 SET. IF CURRENT CODE IS »}" SET ERROR «1 IS CURRENT CODE CLEAR OR BACKSPACE? YES» RESET NECESSARY FLAGS ·
.G IS SPFClAL ROUTING FLAG USEO IN SYNTAX CHFCKING
IF NON-ZFl'O SPECIAL ROUTItJG OF CURRENT CODE IS NECES
is code from the option block?
YES
IS CODE EOL? YES
IS CODE RETURN?
YES.PREFIX WITH SPECIAL RETURN IS COOE END?
309832/0843
USER-DEFINEAOLE FUNCTION BLOCK — "UDFUN"
0135 14154 121656 NORET LOA SOSW,
0136 14155 «70737 JMP AtI
fll37·
0138 14156 ca;>542 COPLl ADA TTB2
0139 14157 070016 E*A
«140 14160 070016 EXA
0141·
1)142 14161 O6?076 C0PL2 JSM C0PL3
0143 14162 066141 JHp EFuN
el44 14163 021606 LDA PS
0145 14164 025720 LOB T2
«146 14165 006543 ADB TTB3
0147 14166 074016 EXB
0148 14167 074016 EXB
YES, CHECK TO SEE SPFClAL FND IS NECFSSARY RETURN TO OLO COMPILER ENTRY AODRESS
PROCESSING REQUIRES THE USE OF .G
CALL ROUTINE To ISOLATE KEYCODE TYPE FUNCTION KEY RETURN ;
NON-FUNCTION KEY RETURN. LOAD PRESENT STATE OF COMP RELATIVE KEYCODE JUMP THROUGH ROUTINE TABLE
309832/0843
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN"
fllS0· 14170 Ö2S602 ESCR LDB G
«nisi 14171 014376 CPB DP6
0152 14172 066421 JMP GTFUN
0153 14173 163744 JSM CHKR»I
β 154 14174 020403 LOA DPI
C155 14175 131651 ESCRl STA .GtI
«156 14176 «65304 JMP CPl
0157
3158» 14177 517131 GEl cpb CNFO
0159 14200 666202 JHP **2
0160 14201. C65317 JMp El
9161 14202 Ü63071 JSM GETIC
6162 · 14203 Ö70150 SZA **3
0163 14204 Ö00A10 ADA DM4
0164 14205 371612 SAM *-4
«165 14206 020376 LDA DP6
S166 14207 066175 JMP ESCRl
0167
«168* 14210 014457 GE6 CPB CNFE
3169 14211 866217 JMP SNULL
til70 142IH ■314454 CPB CNFY
6171 14213 Ü66217 JMP SNULL
0172 14214 914451 CPB CNFC
el73 14215 066174 JMP ESCRl-]
em 14216 Ö65317 JMP El
ens
Ö176» 14217 020507 SNULL LOA NULL
BI 77 14220 061305 JSM CP 2
C17B 14221 678742 STZG SAR 16
β 179 14222 131651 STA .G,I
C1C0 14223 366132 JMP COl
0181
"SCR". GET SPECIAL ROUTING WORD BASIC
SYSTEM COMPILER.
IF 6 GTO OR GSB HAS PRECEEOED SCR
(BASIC SYSTEM ROUTINE) DOES SCR BEGIN STATEMENT?
YES
SET .G TO STORE SCR IN COMPILER OUTPUT AREA IS CODE FROM THIS OPTION BLOCK?
YES -
ELSE ERROR #1 GET INTERNAL CODE
ALLOW IEX ■
CODE MUST BE Λ FUNCTION CODE SET .6 TO 6 ANO PLACE CODE IN OUTPUT AREA ENTRY FOR .G=6. IS CODE EOL?
YES
IS CODE EOS?
YES
ALLOW ONLY COMMA
CONTINUE SET ERROR «1 FOR ALL OTHER CODES
STORE SPECIAL CHARACTER FOR UNCOMPILER
RESET .G CHECK FOR SPECIAL EOL CONDITION -
309832/0843
USER-DEFINEABLE FUNCTION OLOCK — "UDFUN"
"IEX" DOES IEX START THE STATEMENT
SET .G=2 AND STORE IEX IN OUTPUT
ALLOW ONLY EOL OR EOS TO FOLLOW IEX
em» 14224 163744 EIEX JSM CHKBiI
01 BA 14225 «20402 LOA DP2
01QS 14226 Ö66175 JMP ESCRl
01Q6
β1Β7· 14227 014457 GE2 CPB CNFE
01 BB 14230 066110 JMp CMSET
0109 14231 0144S4 CPB CNFY .
0190 14232 i)6622l JMP STZG
0191 14233 Ö65317 JMp El
ill 92
309 8 32/0843
USER-OtFINEABLE FUNCTION BLOCK — "UDFUN" 226272
14234 163744 ECALL
14235 Ö20401
14236 131651
14237 061304
14240 Ö25545
14241 374133
14242 074070
14243 673742
14244 674557
14245 374070
14246 Ö35545
14247 065373
JSH CHKB»Ι LDA DP3 STA .0,1 JSM CPl LDB PSP SBp SIB SAR STA B.I SIB »»Ι STB PSP JMP ΕΧΙΤ*9
14Ρ50 017131 GE3
14251 066255
14252 Ö14452
14253 066277
14254 065317
CNFO JMP ALPAR-2 CPB CNFQ JMP ALQU JMP El
14255
14256
14257
14260
14261
14262
14263
14264
14265
14266
14267
14270
14271
14272
14273
14274
14275
14276
020370 Ö61335 C63071 (»00410 Ö71552 Ö61334 023400 031606 «23366 Ö31631 070404 Ϊ41541 131541 145724 370742 131651 020507 α653β5
LOA JSm
ALPAR JSM ΑϋΛ SAm
ALPl JSM LDA STa LDA . STA SAL IOR STa ISZ SAR
ALP2 STA LDA JMP
14277 O2G400 ALOU
14300 066175
14301 014452 GE4
14302 Ö66262
14303 314454
14304 065317
14305 065304
DP12
CP2
GETIC
DM4
*-5
CPl
DP4
PS
DP14
STAT
OP,I
OP, I
EOLFG,I
16
NULL CP2
LDA DP4 JMp ESCRl
CPb'CNFQ JMP ALPl CPB CNFY JMP El JMp CPl "CALL" DOES CLL BEGIN THE STATEMENT?
YES
SET .G=3
STORE CLL IN OUTPUT RESERVE NEXT WORD FOR TRANSFER AODRESS RETURN TO CONTROL SUPERVISOR ,
.G=3 ENTRY . IS CURRENT CODE FROM THE OPTION BLOCK
YES ·
IS CODE »
YES
ALL OTHER CODES SYNTAX ERROR #1
STORE SPECIAL GTO FLAG IN OUTPUT GET INTERNAL CODE
MUST BE FUNCTION GROUP ELSE ERROR #1 STORE CURRENT CODE IN OUTPUT
SET STATE OF COMPILER TO 4 ALLOW COMMA'S AND QUOTE
ALLOW COMMA'S IF PARENTHESIS ARE USED * SET SPECIAL EOL FLAG
RESET .G
STORE SPECIAL UNCOMPRER CODE IN OUfPUT RETURN TO BASIC SYSTEM
FIRST CHARACTER WAS A QUOTE SET .G=4
END OF LABEL QUOTE?
YES
IF EOS?
YES, ERROR »»1 ELSE STORE CURRENT CODE IN OUTPUT
309832/0843
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN"
6243 0244 B245 0246 0247 6248
0251 0252· 0253
0255 0256 0257 «258· «259 0260 0261 0262 0263 0264 0265 0266 0267 C268· C269 0270 C271 C272
14306 061274 ESTRD
14307 010401
14310 366317
14311 073550
14312 020144
14313 031561
14314 Ö70742
14315 Ö31606
14316 167741
14317 662060 DEF
14320 030402
14321 031544
14322 020377
14323 066175
14324 14325 14326 14327 14330 14331 14332 14333 14334
Ö17131 GE5
666327
P65317
063071
090410
071652
061304
020402
366274
14335 Ö20077 EPAR
14336 331561
14337 163760 14340 164314
JSH DISIS CPA DP3 JMP DEF KZA «-5 LDA GAZ STa CODE SAR STa PS JMP CCtI
JSH ADCD ADA DP2 STA SKEY LDA DP5 JMp ESCRl
CPQ CNFO JMP *·2 JMP El JSH GETIC ADA DM4 SAM *-3 JSH CPl LDA DP2 JMP ALP2
LOA REG STA CODE JSH SKCDl»I JMP BCPLR»I
"DEF/->F" OISALLOH IHPLlED STORAGE PS=3?
yes treat key as def
if ps is not operano then syntax error treat key as ->f
set code same as ->
set compiler state to that of operand jump to basic system stack routine
"DEF"
DEF IS SPECIAL CODE TWO
SET .0=5
.G=5. IS CODE FROM THIS OPTION BLOCK? YESt FURTHER PROCESSING NECESSARY NO'» SYNTAX ERROR #1
ALLOW ONLY FUNCTION KEY IF NOT FUNCTION KEY» SYNTAX ERROR STOHE KEY IN OUTPUT
SET .G=2
STORE NULL CHARACTER FOR UNCOMPILER SET P TO RE CHECKED HY BASIC SYSTEM SAME AS THE R KEY. RETURN TO HASIC COMPILER
309832/0843
USEP-OEFINEABLE FUNCTION BLOCK — "UDFUN"
0274· 14341 021602 EFUN LDA 6
0275 14342 B10376 CPA DP6
0276 14343 Ö66421 JHP GTFUN
C277 14344 C21720 LDA T2
0278 14345 662622 ' JSM SFFN
0279 14346 074652 SBM EFl
6280 14347 S34406 ADB DM2
Ö281 14350 074517 LDA BrI
6282 14351 070113 SAP «♦2
0283 14352 Ö66374 JMP FNCLL
«284
β285· 14353 604402 ADR DP2
0286 14354 121653 LDA IXFLG,I
0287 14355 370110 SZA «♦2
«288 14356 067454 JHP CIEX
6289 14357 163747 JSM GAS2,I
«290 14360 Ö5B345 ANQ RH
0291 14361 111726 CPA IEXCtI
B292 14362 067454 JMP CIEX
€293
€294* 14363 Ö21606 EFl LDA PS
S295 14364 163744 JSM CHKBtI
0296 14365 021602 LOA G
Ö297 14366 ß 1(1374 CPA DP8
«298 14367 065317 JHp El
0299 14370 C23730 LDa GSBK
C300. 14371 B61305 JSm CP2
S301 14372 Ö62240 jsm ECALL+4
C302 14373 666421 JMp GTFUN
0323 14374 ۥ23141 FNCLL LDA SORT
3334·
S335
14375 «531561 sta CODE ·
6336 14376 Ö70142 SAR 4
0307 14377 670204 SAL 12
0308 14403 C31720 STa T2
C309 14401 163760 jsm SKCDl,I
0310 14402 Ü244CJ7 LOB DM3
S311 14403 «35721 STB T3
0312 14404 160314 JSM BCPLR»I
6313 14405 921720 lda T2
S314 14406 163743 JSM .STSKtI
0315 14407 S45721 ISZ T3
S316 14410 066405 JMP ♦-3
C317 14411 062060 JSM AOCD
6318 14412 Ö00377 AOA DP5
0319 14413 P40446 IOR ALCOM
6320 14414 041720 1OR T2
{1321 14415 163743 JSM STSKtI
C322 14416 P6P060 JSm ADCD
6323 14417 tii>£376 ADA DP6 "
0324. 14420 Ö65305 JMP CP2
«325
• 326* 14421 82H374 GTFUN LDA DP8
«327 14422 Ö31602 STA G
0328 U423 023370 LDA DP12
«329
"F*»G*»H*". GET SPECIAL ROUTING FLAG OF BASIC SYSTEM. IS FUNCTION KEY FOLLOWING GTO OR G YES
GET INTERNAL CODE
LOOK TO SFE IF FUNCTION DEFINED
IF B- FUNCTION NOT DEFINED
FUNCTION DEFINED. B-REG HAS ADDRESS OF START ' LOOK AT ID WORD
BIT 15 SET THEREFORE. PROGRAM IS A FUNCTION
PROGRÄM IS A SUBROUTINE, CALLED WITHOUT GSR1GTO OR GET IMMEDIATE EXECUTE FLAG
IS IT SET?
YES» EXECUTE PROGRAM
BASIC ROUTINE TO FETCH COOES IB-REG ADDRESS)
IS FIRST CODE IMMEDIATE EXECUTE? YES» THEN EXECUTE PROGRAM
IS FUNCTION FIRST KEY OF STATEMENT
IF G=8 ONLY EOL OR EOS IS CORRECT
PLACE GSB BEFORE FUNCTION KEY
STORE GSB IN OUTPUT
SET A BLANK WORD FOR THE FAST-ACCESS
FUNCTION KEY IS TO BE TREATED AS A FUNCTION SET CODE WITH PRIORITIES OF SQUARE-ROOT
SET STACK PRIORITY IN PROPER POSITION FOR SPECIAL CO BASIC SYSTEM ROUTINE TO SET-UP CN» AND SKEY
COUNTER FOR LOOP BELOW
SEND FUNCTION KEY TO BASIC COMPILER SET-UP BLANK WORD FOR THE FAST-ACCESS STACK OPERATOR WITH CODE=0
THREE COOES STACKED?
NO
YES
SPECIAL CODE FOR FUNCTION TERMINATIONI "FUNC"
ALL COMMAS WITHIN THE FIRST LEVEL OF PARENTHESIS STACK SPECIAL CODE
SPECIAL CHARACTER TO BEGIN FUNCTION STRING|"TAU" STORE IT IN OUTPUT AREA
SET BASIC SYSTEM SPECIAL ROUTING FLAG
SPECIAL GOTO FLAG FOR BASIC SYSTEM
309832/0843
USER-OEFINEAGLE FUNCTION BLOCK — "UDFUN"
• 330 1*424 061305 JSh CP2
«331 1*425 Ü65304 JMp CPl
11332»
0333 14426 C2?551 ERET LOA 033
«334 14427 160254 JSH SKCO,!
C335 14430 G62060 · JSm AOCO
«336 14431 000403 ADA DPI
β337 14432 Ü3l<544 STa SKEY
C338 14433 066154 JMP NORET
0339·
β340 14434 021546 EENO LDA CMA
«341 Ϊ4435 07(5076 TCA
0342 14436 Ö01543 ADA LIMl
0343 14437 Ö78113 SAP ·*2 ©344 14440 066154 JMP NORET 0345 14441 £62060 JSM ADCO 6346 14442 000401 ADA DP3
0347 14443 061305 JSM CP2
0348 14444 B66154 JMP NORET
STORE IT IN OUTPUT STORE FUNCTION KEY IN THE OUTPUT
»RET« SET UP CN
SPECIAL RETURN IS THF FIRST AOOITION CODE FOR THF OPTION BLOCK ALLOW BASIC SYSTEM To CHECK SYNTAX
"END" GET PROGRAM STORAGE POINTER
AOD IN ADDRESS OF BEGINNING OF MAINLINE IF RESULT IS.* IN PROTECTED SUBPROGRAM AREA IF - END IN MAINLINEI NORMAL RETURN
SPECIAL END IS THIRD CODE OF ADDITIONAL CODES FOR OPTION BLOCK
309832/0843
-— f* -»■ - ■-— ·- τ ,*-·——---ORIGINAL INSPECTED
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN" 2262725
0351 14445 000446 AZERO DEF 'M-IO THIS ROUTINE IS ΛΝ EXTENSION OF THE RESET
t)352 14446 160254 JSM SKCDtI OF FAST-ACCESS WORDS OF THE BASIC MACHINEI
3353 14447 Bl«403 CPA Dpi RGTO.
0354 14450 366452 JHP *+Z THIS LOO^S FOR THE WORDS FOLLOWING THE
G355 I445I 066460 - JHP AZl FUNCTION CODES AND CLL.
C356 14452 Ö62745 JSM TINK
6357 14453 063071 JSm GETIC
C358 14454 010403 CHA OPl
0359 14455 B66462 JMP AZ2 ,
0360 14456 610367 CPA DP13 C361 14457 «J66462 .JMP AZ2 ß362 14460 021544 AZl LDA SKEY 6363 14461 170432 RET , 3364« .
0365 14462 955777 AZ2 DSZ RSTAK . NOT OPTION BLOCK CODE
0366 14463 167766 JMP RG4.I SPECIAL RETURN TO BASIC SYSTEM ROUTINE
309832/0843
USER-DEFINEARLE FUNCTION HLOCK — "UDFUN"
0368» 14464 062745 UNCPL JSM TINK
0369 14465 361071 JSm GETIC
β370 14466 (»10402 CPA 0P2
Λ371 14467 066520 JMP UGAZ
0372 14470 010401 CPA DP3
fl373 14471 066514 JMp UPAR
037* 14472 010373 CHA 0P9
0375 14473 Β66505 JMp PROC
0376 14474 G10372 CPA OP10
0377 14475 £66505 JMP PROC
£378 14476 010371 CPA OPU
«379 14477 066516 JMP USEOL
0380 14500 010370 CPA DP12
β331 14S01 066516 JMP USEOL
6332 145Λ2 010366 CPA DP14
S333 14503 866516 JMP USEOL
β334 14S04 Ö72150 RZa UFUN
0335 14505 020012 PROC lda CLOD
β336 14506 «66074 JMP SYNTl
0387
0308» 14507 163774 UFUN JSm NEXTS,I
6389 14510 Θ21544 LOA SKEY
C390 14511 071710 sza •-2
9391 14512 621717 LDA Tl
Ö392 14513 031544 STA SKEY
0393 14514 C23141 UPAR LOA SORT
$39'« 14515 G66074 JMP SYNTl
0395
0396» 14516 020005 USEOL LDA IGN
β397 14517 »66074 JMP SYNTl
0398
0399» 14520 «155777 UGAZ OSZ RSTAK
0400 14521 655777 USZ HSTAK
β40ΐ 14522 920144 LOA GAZ
6402 14523 (J31561 STa CODE
«403 14524 163773 JSm CHECOfI
0404 14525 («25666 LOB POPR
C405 14526 045666 ISZ POPR
6406 14527 »74150 SZH •♦3
• 407 14530 070213 SAP BB-I
6408 14S31 161773 JSM CHECO.I
0409 14532 070152 SAM ' BB
Ü410 14533 070110 SZA BD
0411
0412· 14534 161772 JSM INSTK,I
0413 14535 620401 BB LOA DP 3
0414 14536 Ü25544 LOF) SKEY
0415 14537 16Ί771 JSm STORE,I
0416 14540 16Ί77« JSm CiI
0417 14541 167767 JMP LOOP,T
0418
THIS ROUTINE IS FOR UNCOMPILING STATEMENT COMPOSSED OF KEYCODES FROM THIS OPTION BLOCK CODE ->F?
YES
CODE P?
YES
CODE SPECIAL RETURN?
YES
COOE DEF?
YES CODE SPECIAL END?
YES
CODE SPECIAL EOL?
YES
code for tau?
YES
ELSE NON-ZERO CODES F«f G», OR H»
CODE IEX
SET CODE = LOD UNCOMPILE FUNCTION CALL
LOOK FOR F»»G»,OR H· FOUND IT
SET CODE FOR FUNCTION (SQUARE ROOT) SET CODE FOR IGNORE
->F UNCOMPILING.ERASE RETURN TO OPTION BLOCK SYNTAX CALLING ROUTINE! RETURN TO UNCOMPILER
THE SINGLF- KEYCODE IS TPEATEO AS TWO
CODES FOP UHCOHPILING» F -> CHECK FOR INSERTING OF PARENTHESIS
IF LAST OPERATOR WAS BINARY CHECK FOR EQUALITY OF PRIORITIES
(WORD NOT NECESSARY»
IF IN HAND < THEN STACK INSERT PARENTHESIS STORE -> IN OPERATOR STACK
DUMP STACK FOR F (EASIEST WHY TO KEEP UNCOMPILER) CORRECT»! RETURN TO RASlC UNCOMPILER
_,: 30J.8127-.QJ-4.1..._
ORIGINAL INSPECTED
USER-OEFINEABLE FUNCTION BLOCK -*· "UOFUN"
0422« COMPILER TABLE C22560 TTÖ2- LDA TTB4-1 -1
«423· 0
fl424» 14542 326545 TTB3 LDB »42 1
C425 (566170 JMP ESCR 2
0426* 14543 066224 JMP EIEX 3
C427 14544 066234 JMp ECALL
042β 14545 066306 JMp ESTRO,
6429 14546 666335 JMP EPAR
fl430 14547 B39B33 033 OCT 33
0431 14550 ai60!?0 PGM OCT 16000
0432 14551 6084Ä6 A0M2 DEF 4H6B 9
6433 14552 G01625 ECRW DEF 16 258 10
0434 14553 CiH 1626 OBRW DEF 1626B 11
G435 14554 066426 JMP ERET
fi436 14555 066306 JMP ESTRD
0437 14556 866434 JMp EEND
f5438 14557
6439 14560 066177 TTB4 JMp GEl
6440 066227 JMP GE2
Ö441* 14561 G66250 JMP GE3
0442 14562 (566301 JMP GE4
6443 14563 G66324 JMp GE5
C444 14564 066210 JMP GE6
fl445 14565
C446 14566
0447
USER-OEFINtAQLE FUNCTION BLOCK — "UOFUN"
«449· SUPPLY MNEMONIC INFO MNEM JSM TINK
«450· JSM GETIC
«451· 14567 06?745 CPA DP 3
«452 14570 963071 JMP MNEl
0453 14571
«454 14572 066662 JSM SFFN
«455 SBM •♦4
8456· 14573 B62622
«457 14574 674212 JSM GAS2«1
«458 CPA BOT
»459· 14575 163747 JMP •♦2
«46« 14576 010517 JMP MNE
«461 14577 6666191
«462 14600 666665 STb T3
β463 SAr 16
«464· 14601 C35721 STA Τ4
«465 14602 070742 JSm GAS2,I
«466 14603 031722 cpa QUOTE
0467 14604 163747 JMp •♦3
«468 14605 010546 ISZ Τ4
«469 14606 «66611 JMP β-it
«47« 14607 Ö45722 LDA ΤΊ
0471 14610 «66604 LDB Τ4
6472 14611 621722 ADB DM16
ί*473 14612 Π25722 SBM •♦2
«474 14613 CöV»20 LOA DP16
«475 14614 074112 AOA OASS
«476 14615 P20364 LDR ADRl
«477 14616 003737 ADB PG,!
«478 14617 026643 RET
«479 14620 105655
I «4ββ 14621 170402
I «4B1
ROUTINE USE TO RETURN MNEMONIC TO BASIC SYSTEM. GET INTERNAL CODE IS CODE P?
YES .
IF FUNCTION KEY FIND ROUTINE IF B- ROUTINE NOT DEFINED
ROUTINE nFFlNEO LOOK TO SEE IF FIHST STATEMENT IS LAßEL? YES, MNEMONIC IS SPECIFIED RY ROUTINE NO USER LABEL
B-REG AODRESS OF ROUTINE
GET CHARACTERS FROM LABEL END QUOTE?
NO, COUNT CHARACTERS CONTINUE CHARACTER COUNTING
IS COUNT GREATER THAN 16 YES SET COUNT TO 16 SET HIT15 AND SUBTRACT ONE FROM COUNT
B-REG ADDRESS OF MNEMONIC BUILOING ROUTINE
309832/0843
ORlQiNAL INSPECTED
USER-DEFInEABLE FUNCTION BLOCK — "UDFUN"
226272£
0483· 146?3 031720 SFFN STA T2
0484 14623 625715 LDB DFUN
0485 14624 074517 MNEMl LDA B.I
04B6 14625 610405 CPA DMl
0487 14626 066630 JMp •♦2
0488 14627 077670 RIB *-3
β489
»490» 14630 315543 CPB LIHl
β491 14631 665357 JMp 1357B
fl492
0493« 14632 «74070 SIB »♦1
0494 14633 074517 LDA B, I
6495 14634 (552720 AND IDM
0496 14635 604402 ADB DP2
3497 14636 011720 CPA T2
β498 14637 170402 RET
0499 14640 334405 ADB DMl
6500 14641 C66624 JMP MNEMl
0521
SAVE RELATIVE KEYCODE START DEFINE-A-KEY AREA ADDRESS FOUND PROÖRAM END?
NO. RECYCLE
IS IT START OF MAIN-LINE AREA? YES, FUNCTION NOT DEFINE
GET ID
SET ADDRESS TO FIRST LINE OF THIS PR06RAM
HATCH?
RECYCLE
309832/0843
DRIG]NAL INSPECTED
USER-OEFINEABLE TUNCTION BLOCK -,.'"UOFUN"
0533» 0S04 0505 0506» «507 «538 fl5H9 i-510 0511 8512· 6r>13 «514 0515 0516 0517 0518 »519 C520 C521 Ö522· 6523 C524 C525 0526· «1527 «528
ADR2
14643 003644 ADRl
14644 02?642
14645 101655
14646 025620
14647 011620 14650 035723
14651 14652 14653 146S4 14655 14656 14657 14660 14661
025721 161747 635721 ©31720 655722 173402 021723 031620 170402
14662 070742 MNEl
14663 624204
14664 170402
14665 621720 MNE
14666 002674
14667 C70016
14670 920402
14671 074132
14672 020401
14673 170402
UEF DEF
LOA ADr2 ACA PG,I LOn NCOOE SlA NCOOE STB T5
LOB T3 JSH GAS2t! STO T3 STa T2 DSZ T4 RET
LDA T5 51a NCODE RET
SAR LDB 204B HET
LDA T2 AOA MNTAB EXA
LOA 0P2 SBm «+2.C LDA DP3 RET ENTRY POINT FOR ALL CHARACTERS BUT THE FIRST ENTRY POINT TO GET FIRST CHARACTER
FIRST CHARACTER ROUTINE
SET UP ENTRY FOR ALL REMAINING CHARACTER SAVE OLD VALUE OF NCoDE
T3 HAS ADDRESS WHERE LABEL CAN FOUND GET CHARACTER SAVE ADDRESS SAVE CHARACTER CHECK COUNT STILL MORE CHARACTERS NO MORE CHARACTERS RESTORE NCOOE
A-REG a
b-reg code for ρ
STANDARD MNEMONICS. FOR OPTION BLOCK A-REG HAS CHARACTER COUNT -I B-REG PACKED CODE FOR ASCII CHARACTERS
14674 026676 MNTAB LDB TABL*1
3 O 9 8T2TΌ BUT *"
ORIGINAL INSPECTED-
USER-DEFINF.ABLE FUNCTION BLOCK — "UDFUN"
ßS37 14675 Γ46162 TABL OCT 04616? SCR
0538 14676 G22270 OCT 022270 IEX
6539 14677 &06614 OCT 006614 CLL
0540 14700 176300 OCT 176300 ->F
C541 · 14701 600000 BSS 1 . CHECKSUM
0542 14702 114040 OCT -114040 FA
{5543 14703 114100 OCT 114100 FB
0544 14704 114140 OCT 114140 FC
©545 14795. 114200 OCT 114200 FD
3546 14706 114240 OCT 114240 FE
©547 ·. 14707 C.44264 OCT 044264 RET
f)548 14710 610246 OCT 010246 DEF
0549 14711 C22706 TTBB LDA «-3
0550 14712 C03045 OCT 45
«551 14713 030105 OCT 105
C552 14714 Pf)Ol 17 OCT 117
S553 14715 000053 CNFpi DEC 43
6554 14716 020054 CNFP2 DEC 44
6555 14717 177755 DM19 DEC -19
B556 14720 »31777 IDM OCT 1777 φ
0557 14721 116040 OCT 116040 GA
0558 14722 116100 OCT 116100 GB
0559 14723 116140 OCT 116140 GC
3560 14724 116200 OCT 116200 GD
0561 14725 116240 OCT 116240 GE
ß562 14726 116300 OCT 116300 GF
S563 14727 116340 OCT 1163401 GG
0564 14730 116400 OCT 116400 GH
0565 14731 116440 OCT 116440 GI
0566 14732 116500 OCT 116500 GJ
3567 14733 120040 OCT 120040 . HA
6568 14734 120100 OCT 120100 HB
6569 14735 120140 OCT 120140 HC
6570 14736 120200 OCT 120200 HD'
<?571 14737 12G240 OCT ■120240 - HE
0572 14740 120300 OCt 120300 HF
0573 14741 12B340 OCT 120340 HG
€574 14742 120400 OCT 120400 HH
0575 14743 120440 OCT 120440 HI
C576 14744 12G500 OCT 120500 HJ
309832708Λ3
ORIGiWAL If^SPECTED
USER-DEFINF.A8LE FUNCTION BLOCK — "UDFUN"
•578· transfer links JSM FIND LDB OBRH
«579» SAR 9 LDa B,I
0580· 14745 β6?765 TINK ADA NSRW AND IDM
«581 14746 07;)4{»2 LDA A.I CPA ID
05B2 U747 601724 JMp •♦2
»583 14750 670517 LDB ORBF RIB • -tt
0584 STB T0 LOa B,I
0585· H751 027725 LDB DM7 AND PGM
0586 14752 ft1S716 JSm TIl RET
<S587 14753 024413
0588 14754 062760 LDB 0ΒΒΓ2
0589 STB T0
0590· 14755 G27726 LDB DM2
C591 14756 035716 STA Τ0.Ι
0592 14757 Ο2Λ406 ISZ T0
fl593 14760 131716 TIl SIA •♦1
e594 14761 045716 RIB •-3
S595 14762 «70370 RET
0596 14763 077670
C597 14764 170402 FIND ADDRESS OF THIS BLOCK
fl598
0599· 14765 CP6555 FIND
0600· 14766 074517
0601· 14767 PS?7?0
0602 14770 ei?ea(5
C603 14771 066773
3604 14772 077610
&60S 14773 (574517
«J6P6 14774 C52552
«607 14775 170402
0608
C689
6610
GET ADDRESS OF THE BLOCK
A = A,10,12 NON-SHAREO R/W IN HASIC SYSTEM HAS START OF R/W AREA FOR THIS BLOCK
BASE ADDRESS FOR FIRST GROUP OF LINK ADDRESSES
165» OCTAL
COUNTER FOR 8 WORDS CALL ROUTINE TO SET UP ADDRESS
BASE ADDRESSES FOR SECOND GROUP
1724 OCTAL COUNTER FOR 3 WORDS SET UP LINK ADDRESSES
BASE ADDRESS OF OPTION BLOCK TABLE 1626B GET CONFIGURATION CODE
DO ID'S MATCH YES» FOUND CORRECT WORD
GET PAGE ADDRESS A-REG HAS BASE ADDRESS FOR THIS OPTION BLOCK
3Q9 8 3-2/-C18 UX
ORIGINAL
226272E
USEP-DEFINEäBlE FUNCTION BLOCK — "UOFUN"
Ö612* β613· HUNT UP START OF SUBROUTINE
«615 0616 8617 0618 0619·
«621 0622 0623 062'« «!625 0626 (1627* 662B C629 0630 0631 <)632 6633 0634 «635 6636 C637 0638· 8639
C64l IJ642 0643 0644 «645 - €646 <1647· «648 0649 $650 «651* 0652 0653 S654 «655 «656 «1657 C658 ί659 0660 0661
14776 14777 15000 15301
15002 15003 15004 15005 15006 15007 15010
15011 15012 15013 15014 15015 15016 15017 15020 15021 15022
15023 15024 15025 15026 15027 15030 15031 15932
P6?6?2 HUNT 975713 063264 071610
025542 NEWF
004400
074117
070056
C'01712 *
073113
065375
035542 035716 P04410 Ö745I7 131716 B55716 015543 Ö67823 C34405 Ö67014
Ö35.716 Ö21546 O0Ö4C0 070137 070076 031543 07G113 035546
15033 B25716 15234 Ö044O0 15035 035543
15036 15037 15043 15041 15Z42 15« A 15044 15045 15046
034407 «•21720 1)74557 074070 C20405 074557 074070 320521 Ö74557 170402
JSm SFFN SBp «-2 JSM KBFG*t SZA »-4,
LOB ENDS ADB DPA LDA B CMA ADA RR SAp «*2 JMP E9A
STb ENDS STB T0 ADB DM4 LDA B,I STA Τ0.Ι DSZ T0 CPB LIMl JMP #*3 ADB DMl JMP »-6
STB T0 LDA CMA ADA DP4 LDB A TCA
ADA LIMl SAP »»2 STb CMA
LDB T0 ADB DP4 STB LIMl
ADB DM3 LDA T2 STA B,I SIB ·*1 LOA OMl STA B,I SI8 *+l LDA STEN STa BiI
FIND FUNCTION IF B-REG ♦ FUNCTION EXISTS
ELSE SET UP NEW FUNCTION INCREASE PROGRAM' AREA BY h WORDS
BASE POINTER OF DATA REGISTER STORAGE NOT ENOUGH ROOM ERROR #9
THE A-WORDS WILL FIT ADJUST ENDS TO NEW VALUE
GET WORD FROM PROGRAM AREA MOVE IT DOWN ADJUST POINTER HAS MAINLINE BEEN COMPLETELY MOVED ADJUST POINTER
RECYCLE
MAINLINE MOVE COMPLE-TE
IF CMA IS
IN MAINLINE AREA
UPDATE IT
SET UP NEW LIMl STORE I.D.
SET -1 BOUNDARY FOR BEGINNING OF PROGRAM SET FIRST LIME TO BE END
309832/0843
' ORIGINAL INSPECTED
USER-OEFI NE AOLE FUNCTION OLOCK — "UDFUN11
•663· SET UP ABSENTEE LINKS 074442 ECOS SBR 10 B-REG ON FNTRY MAS 1CW00R.1P000B, OR 14«CW
0664· 006554 ADB ECRH BEFOPE AOD B-REG 4.5,6. 1611B»J632B»1633Π
#665· 15350 121655 LÜA PG. I
0666 15051 G4?0fll 1OR IO»1 SYNTAX LINK
• 667 15052 074557 STA B.I
0668 15053 034401 ADB DP3
0669 15054 121655 LOA PG. I
0670 15055 04?0<32 IOR 10*2 EXECUTION LINK
0671 15056 074557 STA ß,I
0672 15057 004401 ADB DP3
0673 15060 121655 LOA PG, I
0674 15061 0420(33 IOR ID»3 MNEMONIC LINK
0675 15062 074557 STA O.I
0676 15063 121652 LOA NAB, I
?677 15064 000401 AOA DP3 UPDATE NAB BY 3
•678 15065 131652 STa NAB. I FOR EACH ADDITIONAL OPTION BLOCK
e679 15066 170402 RET
0680 15067
0661 15070
0682
309832/080
" '' ORIGINAL INSPECTED
. - 343 :-
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN"
C684» GET INTERNAL €21544 CODE TAB LDA SKEY
0685· 831717 STA Tl
0686* 15071 (1PI0377 GETIC CNFP3 ADA DPS
P687 15072 070517 DP144 LDA A.I
6688 15073 031716 STa TO
C689 15074 0^(5365 AND DP15 '
C690 15075 R00405 ADA DMl
€>691 15076 031720 STA T2
*>r>92 15077 021716 LDA T0
0693 15100 070142 SAR 4
Ö694 15101 053401 SCODE AND DP3
C695 15102 008405 ADA DHl
C696 .. 15103 031721 CNFO STA T3
C697 15104 C70644 SAL 3
6698 15105 001721 ADA T3
fi699 15106 101652 ADA NAB»T
«700 15107 003115 ADA TAB
*70l 15110 (570016 EXA
0702 15111 001720 ADA T2
6703 1511? 170402 CNFT RET
C704 15113 CNFO
«705 15114 023116 LDA »♦1
0706 Ο000<?0 DEC 0
«707* 15115 t!?,C?«55 DEC 45
ß708 15116 CC22?0 DEC 144
0739 15117 caee{?0 DEC 0
2710 15120 090024 DEC 20
«711 15121 000024 DEC 20
0712 151?2 (333030 DEC 0
0713 15123 C00024 DEC 20
0714 15124 C00024 DEC 20
6715 15125 146030 OCT 146000
*716 15126 500090 DEC 0
0717 15127 P0fl063 DEC 51
0718 15130 (300024 DEC 20
0719 15131 000090 DEC 0
B720 15132 C0B024 DEC 20
«721 15133 P03824 DEC 20
ß722 15134 300000 DEC 0
«723 15135 S00036 DEC 30
{}724 15136 (!30334 DEC 28
6725 15137 000052 DEC 42
0726 15140 600000 DEC 0
0727 15141 00O0P4 DEC 20
β728 15142 000024 DEC 20
Ö729 15143 Q03000 DEC 0
«730 15144 000036 DEC 30
6731 15145 Ö00036 DEC 30
0732 15146 000000 DEC 0
β733 15147
0734 15150
#735.
LOWEST fl BITS SPECIFY WHICH CODE OF THE OPTION DLOCKS. LOWEST 4 BITS WHICH OF 16 FOR THE BLOCK. HIGHER 4 BITS WHICH BLOCK; 10000B = 1» 12000B =j2» 14000B = 3
A=0»U...»25,26
A=-l,0tl».».»37»38
TABLE OF INTERNAL CODES
3:0 9 a 3 2 / O 8 A 3
ORIGINAL INSPECTED' '
USEP-DEFINtARLE FUNCTION OLOCK — "UOFUN"
«737· 0738· β739· 8740 «741· 0742 3743 0744 0745 0746 0747 0748 0749 fl750 6751 B752 0753 07S4 0755 C756 fl757 0750 0759 0760 «761 C7G?
0763 C764 Ö765 0766 0767 0768 0769 «770» 0771 C772 C773 0774 0775 0776 «777 6778 »779 O7R0 C7B1
CLEAN UP SUBROUTINE AREA 15151 Ö0115? AONO OEF «♦l-IO
0783 «784
ISIS? Ö25S43
15153 015715
15154 <J67??1
15155 535721 l515/> 02S71S 15157 074517
15160 010406
15161 067166
15162 074070
15163 015721 CADB
15164 C672R6
15165 G67157
15166 035717
15167 035720
15170 074517
15171 010405
15172 P67174
15173 077670
15174 074S17
15175 131720
15176 015721
15177 3672Π2 1529« C45720 I52CM 077570 1520? 025720 152R3 035721 l52CVi 025717
15205 Ö67163
15206 325543 CEXT
15207 021721
15210 031543
15211 074517
15212 131721
15213 015542
15214 U67217
15215 045721
15216 077570
15217 021721 1522'.! 031542
15221 062745 CEXTl
15222 125654
15223 074737
LDB LIHl DFUN CEXTl ST« T3 LDB OFUN LDA B,I CPA DM2 JMp «45
CP<3 T3 JMP CEXT JMp «-6 SlB Tl STB T2 LDA B»I CPA OMl
RIB
T2,I CPB T3 JMp »»3 ISZ T2 RIB *-5 LDB T2 STb T3 LDB Tl JHp CADB
LDB LlMl LDA T3 SlA LIMl LOA B»I STa T3.I CPB END? JMp »43 ISZ T3 KlB »-5 LOA Tl STa ENDS JSm TINK LDB EN,I JMP BfI THIS ROUTINE IS ADDEO TO THE END ROUTINE ARE THERF PROTECTED SIIBPPOGRAMS?
NO» EXIT YES, SAVF POINTE« TO BEGINNING OF MAINLINES POINTER TO BEGINNING OF PROTECTED AREA
FIND A -Z i
FOUND A -2
CONTINUE TO LOOK BY MOVING POINTER HAVE WE PEACHED MAINLINE AREA?
NO» RECYCLE
FIND END OF PROGRAM TO BE OELETEO.
ADDRESS
SAVE CURRENT SEA FOUND END OF OLD PROGRAM?
NO» RECYCLE
MOVE FUNCTION AREA COVER HOLE COMPLETE? YES NO» ADJUST POINTER ADJUST FETCH POINTER! RECYCLE SET B-REG TO SEARCH FOR MORE CLEAN-UP ADJUST BEGINNING OF MAINLINE ADJUST FETCH POINTER RECYCLE
MAIN CLEAR-UP IS COMPLETE RUT POINTERS NEED ADJUSTING MAINLINE POINTER UPOATEO MOVL HAINLINE TO CORPECT LOCATION
CORRECTION COMPLETED
NO» ADJUST STORe POINTER ADJUST THE FETCH POINTER
UPDATE THE ENO-OF-MAINLINE POINTER
DAISY CHAIN THROUGH END LINKAGE
.10 9J 3 2VJQL&A.3
ORIGINAL INSPECTED
USER-OEriNEABLE FUNCTION BLOCK — "UDFUN"
ceii sei?
INTERPRETER
15224 062,745 EXEC
15225 062076
15226 067612
15227 325720
15230 007716
15231 074016
15232 074016
15233 15234
15235 15236
15237 15240
15241 15242 15243 15244 15245 15246 15247 15253 15251 15252 15253 15254 15255 15256 15257 15260
15261 15262
15263 15264 15265 15266 15267 15270
145653 XIEX 164346
JSH TINK JSh C0PL3 JMp XF LDB Τ2 ADQ TTRl EXB EXB
ISZ IXFLGtI. JHP XJfI
131653 SIEX STa IXFLG.I 067*241 JMP XSCR
027727 Ε24 167746
LDB DP24 JHP EXERtI
168552 610451 067241 010356 Ö67261 063371 C?31720 071253
XSCR JSH CPA JMP CPA JHP JSH STA
JSH
XSCR2
071253 021720 £62776 004407 •922553 170004 Ü67241
161710 SCB 164346
LDA
JSh
ADB LDA XFR JMp
SXJtI
CNFC
»-2
CNFN
SCB
GETIC
T2
SIEX
KBFG*1
E24
T2
HUNT
DM3 -
ADH2
XSCR
JSH .END2tI JMP XJ,I
061253 KBFG JSH XNSTP
ß21563 LDA.TSW
(300410 ADA DH4
070110 SZA «*2
02Ί546 LDA CMA
170402 RET
set up this block r/w area call routine to classify keys function key return other key return. load internal code
USE TTBl TO LOCATE EXECUTION ROUTINE
"IEX" KEY. SET FLAG THAT THIS EVENT HAS HAPPENED. RETURN Tp BASIC INTERPRETER
"SCR IEX . . . » STATEMENT. CLEAR FLAG CONTINUE SCANNING THE STATEMENT
ERROR #24. SCR STATEMENT CANNOT BE EXECUTED FKOM PROGRAM
BEGINNING OF A SCRATCH STATEMENT IGNORE "t"
END-OF-SCR STATEMENT . DO HOUSE CLEANING GET INTERNAL CODE FOR CODE FOUND IN SCRATCH STATEMENT - SAVE IT IS IT IEX? IF A-REG = 0 YES
KEYBOARD OPERATION OR PROGRAM? ·.
IF A-REG = 0 PROGRAMt THEN ERROR #24
FIND SUBPROGRAM B-REG HAS STARTING ADDRESS OF PROTECTED PROGRAM SET R-ADORFSS BACK 3 WORnS, REGINNING ADDRESS FOR -2 TPAfJSFER FOUR Wo'iDS INTO PROTECTED PROGRAM CONTINUE SCANNER OF THE STATEMENT
STATEMENT COMPLETELY SCANNFO CALL END CODE PROCESSING FOR HOlJSE CLEANING
CHECK FOP KEYBOARD OPERATION OR PROGRAM ROUTINE. TSW=4 IF PROGRAM A-REG IS ZERO IF PROGRAM MODE NONZERO IF KEYBOARD
30983-2-/-0543 -
USER-DEFinEABLE FUNCTION BLOCK — "UDFUN"
«833· 15271 «21705 XSEOL LDA .WMOD
«834 15272 «50512 AND 512B
«835 15273 073350 RZA SCB*1
«836 15274 160552 JSm sxj,ι
«837 1527S 070742 SAR 16
#830 15276 C31702 STA GTS
«639 15277 121605 LDA IMA,I.
0840 15300 070133 SAP •♦2,C
«84] 15301 070070 SIA •♦1
«842 15302 055556 DSZ APl
«843 15333 025556 LDB APl
«844 15304 Ö74557 STA B,I
«845 15305 Θ63263 JSm KBFG
0846 I53ß6 C044C5 XSEl ADB DMl
«847 15307 B74557 STA 0,1
«848 15310 020400 LDA DP4
0849 15311 031563 STA TSW
0850 15312 004435 ADB DMl
«851 15313 021614 LDA TPP
Ö852 15314 074557 STA 8,1
08S3 15315 G21551 LDA TP
0854 15316 031614 STA TPP
0855 15317 C04405 ADB DHl
«856 15320 121650 LDA NUMP,I
»857 15321 074557 STA B,I
0858 15322 063349 JSm SETL
0859 15323 C21556 loa APl
0860 15324 070056 CMA
0861 15325 001557 AOA AP2
«862 15326 131650 sta NUMP,I
tJ863 15327 i)94405 ADB DMl
ti 864 15330 121725 LDA L.I
0865 15331 074557 STa 0,1
€866 15332 121657 LOA LVAOO,I
«867 15333 131725 STa L,I
0868 15334 004405 ADB DMl
(J069 15335 021557 LOA ΛΡ2
Γ870 15336 B7?053 SAP ·♦ 1 »S
C871 15337 167755 JMP XGSSItI
«872
«873· 15340 121557 SETL LUA ΛΡ2.Ι
C874 15341 000423 ADA DPI
6875 15342 072350 HZA •♦7
f.876 15343 131650 STA NUMP,I
0877 15344 021542 LOA ENDt
C878 15345 301615 AOA BSTK
«879 15346 B5W4O7 ADA DM3
»880 15347 131657 STA LVAOOtI
6661 1535» 131725 STA LtI
0882 15351 170422 RET RET
0883
SPECIAL FOL KEYCOOE. SET UP STACK FOR
CLL STMTS.
IF ERROR IN LINC ABORT ROUTINE JUMP OVER NORMAL EOL
CLEAR RUN-TIME GTO-GSR FLAG SET UP PROPF.R RETURN ADDRESS
UPDATE STACK POINTER STORE R.A. IN STACK WHAT MODE? KEYBOARO OR PROGRAM
SAVE INFO ABOUT KEYRD OR PROG. · SET TSW=4 PROGRAM MODE
SAVE RESET POINTER FOR TEMPORARY STORAGE UPDATE TEMPORARY (RESET) STORAGE POINTER
SAVE CURRENT Ii OF PARAMETER CHECK TO SEE IF INITIALIZATION IS NECESSARY SET UP H PARAMETERS FOR THIS LEVEL GET BASF ADDRESS FOR
DATA STORAGE OF LOCAL VARlARLES FOR THIS LEVFL HIGH WATFR MARK FOR THIS LFVFL FOR LOCAL MAKE IT NFW BASE ADDRESS TOR NEXT LEVEL
GET POINTER WHICH SEGMENTS RUN TIME STACK SET SPECIAL FLAT, TO INOICATF PARAMETERS PASSED FINISH STACK ROUTINE WITH HASIC SYSTEM ROUTINE ROUTINE USED TO CHECK THE NEED
TO INITIALIZE IVAOO AND L WHICH ARE TH£ HJGH WATER MARK AND BASE ADOMFSS FOR LOCAL VARIABLE TO SUBPROGRAMS WHEN PO IS USED
309832/084
1 OHJQiNAL INSPECTED
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN"
0885» 15352 160552 XENO JSH SXJ,I
C886
β 887· 15353 125557 XRET LDB AP2»I
«886 15354 363264 JSH KBFG*1
«889 15355 070150 SZA «♦3
«890 15356 025557 LDB AP2
0891 15357 067412 JMp XRETl
fi892 15360 014405 CPB DHl
0893 15361 Q67425 JMP E7
389'» 15362 074753 SBP XRET2
<!895 15363 S45557 ISZ AP2
C896 15364 121725 LDA L. I
«897 15365 131657 STA LVAOD,!
9898 15366 121557 LOA AP2,I
«899 15367 1,31725 STA L, I
«900 15370 045557 ISZ AP2
Ö901 15371 121557 LDA ΛΡ2.Ϊ
i»902 15372 131650 STA NUHP,I
«903 15373 Ö45557 ISZ ΛΡ2
15374 121557 LOA AP2.I
«905 15375 031614 STA TPP
0906 15376 045557 ISZ ΛΡ2
C907 15377 121557 LDA AP2tI
C908 154(515 672510 RZA XRETl
ß909 154(31 045557 XRET2 ISZ AP2
0910 154 G? 121557 LDA AP2*I"
691.1 154 03 010406 CPA DM2
0912 15404 067417 JMp XRET4
«913 154 «5 B31604 XRET3 STA NMA
C9i4 154?:6 331546 STA CMA
ßS15 1.54 e 7 374073 SBP **1»C
C916 15410 P35557 STB AP2 -
C917 15411 164346 JMP XJ, I
«918 15412 061250 XRETl jsm XSTOP
0919 15413 670742 SAR 16
6920 15414 031624 STA DISEN
«921 15415 S21543 LDA LIMl
0922 15416 f>73370 RIA XFJET3
3923 15417 G61250 XRET4 JSH XSTOP
«924 15420 070742 SAR 16
3925 15421 031624 STA. DISEN
0926 15422 B45557 ISZ AP2
B927 15423 121557 LDA AP2.I
«928 15424 Ö67406 JHP XRET3+1
«929
0930· 15425 C24375 E7 LDB DP7
C931 15426 167746 JMP EXER»I
3932
SPECIAL "END" KEYt ACTS AS RETURN FOR PROTECTED PROG
SPECIAL »RET" KEY» KEYBOARD OR PROGRAM MODE PROGRAMS IF ZERO KEYBOARD I SET R-REG TO AP2
IF B-REG = -1 NO RETURN ADDRESS IN THE STACK? THFPEFORF EiRROR «7 IF 81T15=0 SIMPLE RETORN BIT15=1 RETURN FOR FUNCTION OR CALLS
SET HIGH WATER MARK TO LOWER LEVEL GET BASE ADDRESS FOR LOWEI? LEVEL
GEJ PARAMETER COUNT FOR LOWER LEVEL
GET LOWER LEVEL POINTER TO SYSTEM TEMPORARY
KEYBOARD OR PROGRAM MODE FLAG PROGRAM MODE
GET RETURN ADDRESS
IF -2 SPFClAL FLAG FOR IEX SET RETURN ADDRESS IN PROGRAM POINTER
RESET TO LOWER LEVEL IN RUN TIME STACK RETURN TO BASIC SYSTEM INTERPRETER KEYBOARD MODE SET STOP BIT
CLEAR ENTER FLAG SET R.A. FOR BEGINNING OF MAINLINE FIRST RETURN ROUTINE IEX MODE SET STOP BIT
CLEAR ENTER INHIBIT FLAG CONTINUE FOR R.A..ADDRESS
ERROR «7 . ■ RET HAS NO MATCHING, GSB
309832/084 3.
ORIGINAL INSPECTED
USER-OEFINEAßLE FUNCTION BLOCK — "UOFUN"
• 934· 15427 00143» ADGT OEF «♦1-10
«935 15430 16B552 JSH SXJiI
«936 15431 B6?745 JSh TINK
«937 15432 C63071 AOGTl JSm GETIC
9938 15433 025715 LOB DFUN
«939 15434 074070 SlB •♦1
«940 154 35 670112 SAM «♦2
*941 15436 062776 JSH HUNT
»942 15437 167756 A0GT2 JHP XG2»I
«943
ROUTINE USEO TO RETURN AN AOORESS FOR PROTECTED SUBPROGRAMS WHEN F», G** OR H· IS USF.D WITH GSB♦ GTO» OR CLL
B-REG HAS ADDRESS OF ROUTINE RETURN TO BASIC SYSTEM PROCESSING OF GSB OR GTO
309832/0843
OfHGlNAL INSPECTED
USER-DEFINEAnLE FUNCTION BLOCK — 11UOFUN11
(5946·
0947
fl948
694«?
«950
Ö951
fl952
€953
C954
0955
i)957
C 95 O
0959»
3960
fl961-
6962
6963
3964
S965
9966
(3967
0960
0969
S970
0971
C972
C973
8974
Ö975
3976
«977
3978 '
«979
09B0
tl9fl2
0983
6984
3985
«986
C987
(3989
6990
099)
0992
C993
0994
Ö995
6996
0997»
0990
0999'
1000
15440
15441
1544? 15443
15444
15445 15446 15447
15450 15451
15452 15453
15454 15455 15456 15457 15460 15461
15462 15463 15464 15465 15466 154 67 15470 15471 15472 1547 3 15474 154 75 15476 15477
15501
15502 15503 15504 15505 15506 15507 15510 15511
15512 15513 15514 15515 15516 15517 15520
160552 XOEF
06P745
063071
06P776
004406
074517
072052
074557
004402
335604
035546
164346
055777 CIEX
563340
Ö21563
000411
1372150
C45624
067464
160315
021557
031556
061250
C74117
C244I4
035605
163754
163757
567476
170482
121557
031557 '
000405
031556
070537
035570
074073
021546
131556
C35546
C61250
020406
163754
061253
021624
072210
163761
167765
167762
JSM SXJtI JSH TlNK JSh GETIC JSH HUNT ADu DM2 LDA 8,1 SAM »*1,S STA B.I ADB 0P2 STB NMA STB CHA JMP XJ,I
DSZ RSTAK JSH SETL LOA TSW ADA DM5
DISEN JMp *+2 JSH INTRP1I LDA AP2 STA API JSH XSTOP LDA B LDQ AISP STB IMA JSM XGSS2»I JSm RKBUl,I JMp RET LDA ΑΡ2,Ι· STA AP2 ADA DMl STA API LDB A,I STB ISP SßP **itC LDA CMA STA API,I STB CMA JSh'XSTOP LDA DM2 JSH XGSS2.I JSM XNSTP LDA DISEN
15521 163761 1552? 167764 15523 167763
JSM RPBUF,I JMp RU71»T JMp EXERRiI
JSM RPBUF1I JMP STSW5,I JHP TSW5«I "DEF STMT". GET NEXT KEYCODE SETUP R/W AREA FOR THIS BLOCK '
LOCATE OR SETUP PROTECTED PROGRAM
SET B15 IN ID TO INDICATE THE ' PROGRAM WAS DEFINED WITH DEF AS APPOSED TO GTO. \
SET UP STORAGE POINTER. RETURN TO BASIC SYSTEM INTERPRETER
ROUTINE TO HANDLE IEX ROUTINES. ADJUST RETURN STACK INITIALIZE LVADD AND L IF NECESSARY
TSW=5? NO SKIP 3 INSTRUCTIONS YES,SYSTEM IS IH ENTER MOOE. SET DISABLE ENTER FLAG
SETUP RUN-TIME STACK
RESET API SET STOP BIT
SET ADDRESS OF INTERPRETER. TO ISP SAVF. ADDRESS OF SUBROUTINE EXECUTE COMPILER OUTPUT AREA NORMAL
ERROR RETURN
FETCH ADDRESS OF SUBPROGRAM SAVE IN ISP
SETUP RFTURN ADDRESS. IEX PROGRAMS ARE SUBPROGRAMS SET STOP SO XGSS2 ROUTINE CAN BE USED SPECIAl FLAG FOR RETURN ROUTINE CALL ROUTINE TO SAVE FLAG IN STACK CLEAR STOP BIT
IS SYSTFM IN ENTER MODE? NO» CALL INTERPRETER RETURN TO SYSTEM SAME AS RUN PROGRAM ERROR RETURN
YES, ENTER MODE? NORMAL RETURN SET TSW=5 ERROR RETURN
309832/0843
ORIGINAL
USER-DEFINEABLE FUNCTION BLOCK -- "UDFUN"
1032· 15524 06334? XTAU JSM SETL
1003 155PS 021551 LDA TP
1004 15526 000400 ADA DP*
1005 15527 031551 sta TP
1006 15530 072053 SAp •♦ltS
1007 15531 D2S5S6 LDB API
1B08 1553? O044C5 AOB DMl
1009 15533 074557 sta B.I
1010 15534 004405 ADO DMl
1011 15535 021563 LDA TSW
1012 15536 074557 STa B,I
1413 15537 004495 ADB DMl
1014 1554 0 063263 JSm KBFG
1015 15541 070110 SZA •♦2
1016 15542 045624 ISZ DISEN
1017 1554 3 074557 STA BtI
1018 15544 .020400 lda DP4
J019 1554S 031563 sta TSW
1020 15546 004405 ADB DMl
1021 15547 02ΐ6β4 LDA NMA
1022 1555« 07Λ557 STA B.I
1023 15551 070742 SAR 16
1B24 15552 031604 STA NMA
1025 15553 C$14405 *DB DMl
1026 15554 C21557 LDA AP2
1027 15555 Ϊ35556 STB API
1028 15556 035557 STB AP2
1029 15557 131557 STA AP2.I
1030 15560 164346 JHP XJiI
1031
1032· 15561 1316f!5 XFN? STA IMAiI
1033 15562 160552 JSM SXJ,1
1034 15563 063071 JSM GETIC
1035 15564 062776 jsm HUNT
1Ö36 15565 074113 SHp •♦2
1037 15566 067437 JMP ADGT 2
1038 15567 367604 JMP XFNl
1B39
1040· 15570 16Π552 XFUNC JSM SXJ,I
1041 15571 1216C5 LOA IMA,I
1042 15572 074073 SBP •♦1«C
1043 15573 035722 STo' T4
1044 15574 070070 SIA •·1
1045 1557? 055556 DSZ API
1046 15576 131556 SlA API, I
1047 15577 025567 LDB MPH
1048 I56frt 077350 RZb XFN2
1349 15601 125722 LOB ΤΊ.Ι
1050 15602 076110 HZr ••2
1051 156H3 067561 JMP XFN2
1052 15604 135722 XFNl STb T4,I
1053 15605 135635 STB IMAiI
1054 15606 035546 STB CMA
1055 15637 025556 LOB API
1056 15610 070742 SAR 16
1057
BEGINNIHG OF FUNCTION CALLED CODE. INITIALIZE LVADD SAVE A TEMPORARY RESULT LOCATION FOR FUNCTION VALUE
SET THIS ADDRESS IN CORRECT POSITION OF STACK
SAVE CURPENT VALUE OF TSW IN STACK
KEYrOARd OR PROGRAM MODE
IF ZERO PROGRAM MODE
KEYROARO DISALLOW ENTER MODE
SAVE INFO ABOUT KEYRD OR PRG MODE
SET TSW=4
SAVE ΝΜΛ. MAYBE GSB OR GTO STAT. PRECEEDED FUNCTION
CLEAR NMA
SETUP NFW LEVEL WITHIN RUN-TIME STACK RETURN TO INTERPRETER
GET FUNCTION KEYCODE
GET INTFPNAI. CODE
WAS SUBPROGRAM DEFINED
NO.SETUP FUNCTION
YES
END OF PARAMETER LIST. SECOND SPECIAL FUNCTION CALL COOE. SEARCH FOR ADDRESS OF SUBPROGRAM
A-REG HaS CORRFCT ADDRESS FOR RETURN TO ARITH STATE CHECK FAST TRANSFER FLAG
IF NON-ZF(O FAST TRANSFH NOT ALLOWED FAST TRANSFER IVLLOMfO. GET 16-IU T ADDRESS IF ZERO.FIRST TIME FUNCTION CALLED SEARCH FOR SUBPROGRAM
B-HEG HAS ADDRESS OF THF SUBPROGRAM SAVE IT IN USER'S PROGRAM
UPDATE CHA
309832/08 A3
OBlQiNAL INSPECTED
■- 351
USER-DEFINEABLE FUNCTION BLOCK — "UDFUN"
1058 15611 067306 JHp XSEl
1059·
1060 15612 025557 XF LDB ΛΡ2
1061 15613 074517. LOa B.I
Iß 62 15614. .331557 SlA ΛΡ2
1063 15615 074070' SIB «♦1
1064 15616 074517 LDA B,I
1065 15617 £: 316*14 SlA NMA
1066 15620 G74070 SIB »♦1
1067 15621 074517 LDA BtI
1068 15622 £372510 HZA XF 2
1069 15623 074070 XFl SIB «♦1
1070 ι 15624 C74517 LDA B.I
1071 15625 Ö31563 STA TSW
1072 15626 074070 SIB **1
1073 15627 074517 LDA B,I
1074 1563d 035556 STO API
1075 15631 078073 SAp «♦l.C
1876 15632 031551 STA TP
1077 15633 164346 JMP XJ. I
107β·
1379 15634 C31546 XF2 STA CMA
1680 15635 E61250 JSM XSTOP
ieiBi 15636 970742 SAR 16
1032 15637 031624 STa OI SEN
1083 15640 067623 JMP XFl
CONTINUE BUILDING RUN-TIME STACK
RETURN TO ARITHMETIC STATEMENT. FIRST CODE IS FUNCTION KEYCODE. UNSTaCK KUN-TINE STACK BUILT BY TAU. RESET AP2
RESET NMA
IF N0N-7ER0 FUNCTION CALLEiD FROM KEYBOARD ELSE FUNCTION WAS IN PROGRAM
RESET TSW
RESET API
RESET TP RETURN TO MAINLINE .INTERPRETER
FUNCTION WAS CALLED FROH KEYBOARD READJUST CMA SET STOP BIT
CLEAR ENTER MODE FLAG
309 8 32/08
INSPEGTEP
USER-DEFINtABLE FUNCTION BLOCK — "UDfUN"
1085· 1*586
1CÖ8
1092 1093 1094 1095 1P96 1097 1098· 1099 1100 1101 1132 1103
11(55 11C6 1107
1109 1110 1111 1112 1113 11U 1115 1116 1117 ine 1119 1120 1121· 1122 1123 1124· 1125 1126 1127 1128 1129 1130 1131 1132 1133
15641 15642 1564 15644 15645 15646 15647 15650 15651 15652 15-653 15654
15655 15656 15657 15660 15661 15662 15663 15664 15665 15666 15667 1567(3 15671 15672 15673 15674 15675 15676 15677 15700 15701 15702
XGAZ 074517 010405 267703 07(1172 070137 067642 00(1400 ί,·7(?517 Ρ74973 «35550 167745
C61321 XPAR
074153
624377 Ε5
167746
075710
074076
035717
025557
074517
010405
Ρ67703
070172
070137
S67665
025717
105650
Γ/74412
021717
070517
07e073
131596 XPl
164346
LDB ΛΡ2 LDA IUI CI1A DMl JHP E2 SAH »*3tC LDB A JHp «-5 ADA DP4 LDB AtI SBP «»ltC STB .STPT JMP XGAZ1,1
JSm FIXPT SBP ·*3 LDB DP5 JMP EXERtI SZB ·~2 TCR
STB Tl LDB ΛΡ2 LOA B.I CPA DMl JMP E2 SAM «»3»C LDB A JMP »-5 LDB Tl ADB NUMP,I SUM XLOV ADA Tl LDA A,I SAP »»ltC
15703 024402 E2
15704 167746
15705 074076 XLOV
15706 074704 157H7 105725
15710 074117
15711 074076
15712 105657
15713 .'175313
15714 131657
15715 067701
a APItI JMP XJtI
LOB 0P2 JMP EXERtI
TCB SBL ADlJ L, I LDA B TCB
ADB LVAOD1I SHP XPl STA LVADDtI JMP XPl
->F ROUTINE
IF AP2 IS POINTING TO A -1 THEN ER«Ol' U?. . ->F KEY APPEARS IN A PROGRAM NOT C WITH A FUNCTION. LOOK FOR SPECIAL FLAG LOOK FOR ANOTHER AP2
GET POINTER To CORRECT TEMPORARY CLEiR TEMPORARY FLAG SETUP .STPT WHICH IS POINTER FOR NUMERIC DISPLAY B-REG HAS THE "TO" ADDRESS. CALL REMAINDER OF GAZI
"P" ROUTINE CONVERT SUBSCRIPT TO BINARY IF - ERROR #5
IF ZERO ERROR #5
M-AKE IT NEGATIVE
SAVE SUBSCRIPT FIND STACK AREA WHERE PARAMETER ADORESS EXISTS
IF ♦ SUBSCRIPT REFERS TO PARAMETER IN LIST GET PARAMETER ADDRESS CLEAR FLAG BIT 15 STORE OPERAND ADDRESS IN CORRECT POSITION OF STACK RETURN TO INTERPRETER
SUBSCRIPT IS OUTSIDE THE RANDE OF THE PARAMETER LlS COMPUTE CORRECT ADDRESS FROM BASE ADDRESS IN L
ADJUST HIGH-WATER MARK IF NECESSARY
309832/08A3
INSPECTED
USER-DEFINEAOLE FUNCTION BLOCK — "UDFUN"
1135· interpreter 027720 TABLE LDB «♦2
1136* 067241 JHP XSCR
1137» 15716 867233 TTBl JMP XIEX
1)38 15717 167752 JHP XGTOtI
1139 157?0 C67641 JMp XGAZ .
1140 15721 P67655 JHP XPAR
1141 15722 001632 DEF 1632B
1142 15723 031650 DEF 1650B
1143 15724. C017?4 NSRW DEF 1724Π
1144 15725 00(103(5 OBBF DEC 24
1145 15726 000035 0BBF2 OCT 35
1146 15727 P67.353 DP24 JMP XRET
1147 1573K 067440 GSBK JMP XDEF
1148 15731 C67352 JMP XEND
1149 15732 067271 JMP XSEOL
1150 15733 367570 JMP XFUNC
1151 15734 967524 JMP XTAU
1152 15735
1153 15736
1154
XCALL
OHiGiNAL INSPECTED OSER-OEFINEABLE FUNCTION BLOCK
"UDFUN"
1156· 00431 OQl EOU 431B EQU 446B
1157 «0432 OR 2 EOU 432B EOU 4510
1158 00433 0B3 EOU 4330 EOU 517B
1159 00005 IGN EOU 5 EOU 500B
1160 LQU 5070
1161· 00012 CLOD EOU 12ß EOU 52IB
1162 00144 GAZ EQU 144B EQU 524B
1163 60077 REG EOU 77B tau 533B
1164 00141 SORT EOU I41B EOU 537B
1165 00254 SKCO EOU 254B EOU 5460
1166 00314 BCPLR EQU 3140 EQU 551B
1167 β0315 INTRP EOU 315B
1168 60316 XEOL EOU 3160
1169 00323 .SMON EOU 3230
1179 00333 ASTEN EQU 333B
1171 Β0345 RH EOU 345B
1172 «0351 077 EQU 351B
1173 63356 DP47 EOU 356B
1174 00362 XRH EQU 362B
1175 00364 DP 16 EOU 364B
1176 Ö0365 0P15 EQU 365B
1177 60366 DPI 4 EQU 3660
1178 00367 DPI 3 EOu 3670
1179 ÖO370 DP12 EQU 370B
11B0 00371 DPIl EOU 371B
UBl «0372 DP10 EQU 372B
1182 «0373 DP9 EOU 373B
1183 C0374 OPB EQU 374B
1184 00375 0P7 EQU 375B
1185 00376 0P6 EQU 376B
1186 C0377 DP5 EOU 377B
1187 00400 DP4 EOU 400B
11BB 00401 DP3 EOU 401B
11B9 00402 DP2 EOU 402B
1190 «0403 DPI EOu 40 3B
1191 Κ0405 OHl EOU 405B
1192 «0406 DH2 EOU 406B
1193 00407 DM3 EOU 407B
1194 90410 0M4 EQU 410B
1195 63411 DM5 EQU 411B
1196 00413 0H7 EOU 4138
1197 00414 AISP EOu" 414B
119B 00420 DM16 EQU 420R
1199 00446 ALCOM
1200 «0451 DP20
12*1 «0517 BOT
1202 00500 APMA
1203 «0507 NULL
1204 0052] STEN-
1205 00524 XRI
1206 00533 RETl
1207 «0537 COEOL
1208 00546 QUOTE
1239 «0551 OPTN
1210'
1211·
ORIGINAL INSPECTED
USER-DCFINEABLE FUNCTION BLOCK —- "UDFUN"
1212 00451 CNFC EOU DP20 ( -
1213 Cfl356 CNFN EQU DP47
1214 03355 CNFR EOU 355B I
I
1215 «0454 CNFY EOU 454B
1216 «10452 CNFO EQU 452B
1217 00437 EOL EQU 437B .
1218 $10503 CNFL EQU 503B
1219 Ö0457 CNFE EQU 4«57ß
1220 Ö0355 CNFB EQU 355B
1221·
Ϊ222 01542 END$ EOU 1542B
1223 B1543 LIMl EOU 1543B GTO LINKAGE
1224 01544 SKEY EQU 1544B
1225 01545 PSP EQU 1545B
1226 91546 CMA EQU 1546B
1227 01550 .STPT EOU 1550B
1228 81551 TP EQU 1551B CONFIGURATION
1229 β 1556 API EOU 1556B
1230 C1557 ΛΡ2 EQU 1557B END LINKAGE
1231 G1560 OSW EOU 1560B page Identification
1232 01561 CODE EOU 1561B
1233 01540 CN EQU 15408
1234 91541 OP EQU 1541B
1235 81563 TSW EQU 1563B
1236 01567 MPH EQU IS 67 B
1237 Q1570 ISP EQU 1570B
1238 01573 TECS EQU 1573B
1239»
1240 91600 PMA EQU 1600B
1241 01601 STAT EQU 1601B
1242 01602 G EOU 1602B
1243 01604 NMA EOU 1604B
1244 01605 IMA EOU 1605B
1245 01606 PS EQU 1606Q
1246 Ö1620 NCODE EQU 1620B
1247 " 91614 TPP EQU 1614B
1248 01615 BSTK EQU 1615B
1249 01616 ERASE EQU 1616Π
1250 01623 GOTF . EQU 1623B
1251 01624 DlSEN EQU 1624B
1252·
1253 01650 NUMP EQu 1650B
1254 01651 .G EQU 1651B
1255 01652 NAB EGU 1652B
1256 β 1653 " IXFLG EQU 1653U
1257 31654 EN EOU 1654B
1258 01655 PG EQU 1655B
1259 01656 SOSW EQU 1656B
1260 öl 657 LVAOfr ECU 1657fl
1261 61666 POPR EQU 1666B
1262·
1263 01701 .WKC EQU 1701B
1264 01705 .WMOD EQU 1705B
1265 01710 .ENO? EOU 171OB
1266 01712 RR ECU 1712B
1267 81715 DFUN EQU 1715B
309832/TS4 3
USER-DEFINEAßLE FUNCTION BLOCK — "UDFUN"
1268· «1716 077777 Tfl EOU 1716R 034126 FCN OEF 4126B
1269 01717 Tl EOU 1717B 034 315 CC DEF '♦315B
I27ft C1720 T2 EOU 1720« f)P43l7 CCl OEF 4317B
1271 01721 T3 EOU 1721B C»4350 STSK DEF 43S0B
1272 31722 T4 ECU 1722« C04422 CHKR DEF 4422B
1273 81723 75 EOU 1723B (304672 XGAZl DEF 4672B
1274 31724 EOLFG EOU 17243 C047P15 F.XF.R UEF 4705B
1275 G1725 L EOU 17253' !"!(5541*1 GAS? DEF 5401R
1276 01726 IEXC EOU 1726« «05334 G02 DEF 5334«
1277 0 1744 ARl EOU 1744(1 035526 GTOP DEF 5526B
1278 01702 GTS EOu 17O2B £{15213 XGTO OEF S213«
1279 01777 RSTAK EOU 1777B C35342 G04 DEF 5342Π
1280 CÜ5172 XGSS? DEF' 5172H
1281· 01250 XSTOP EOU 1250B C?5177 XGSSl OEF 5177B
1282 01253 XNSTP EOU 1253R fie.5276 XG2 DEF 5276Π
1283 01265 XRR EOU 12658 RKHUF EQU 7646B
1284 01274 DISIS EOU 1274R 207647 RKBUl DEF HKBUF*1
1285 01304 CPl EOU 1304B Γ07Ο23 SKCDl DEF 7021«
1286 01305 CP2 EQU 1305B t'37656 RPBUF OEF 7656B
1287 C1317 El ECU 1317B A.11 EOU 624/B
1208 01321 FIXPT EOU 132113 006251 EXERR DEF A.11*2
1289 01351 BAD EOU 1351B P06257 TSWS DEF 6257B
1290 01362 EXIT EOU 1362B 006263 STSW5 OEF 6263B
1291 01375 E9A EOU 1375B «06646 PU71 OEF 6646«
1292 007746 RG4 OEF 7746B
1293» 15737 DASS OCT 77777 RECY EQU 326Π
1294
1295· ΕηΐΤ-ΟΕΡΓΝΠΕΝΤ SYSTEM LINKS
1296»
1297· 15740
1298 15741
1299 15742
1330 15743
1301 15744
1332 15745
1333 15746
130'» 15747
1305 157SP
13H6 J 5751
1307 1575?
13P0 15753
1309 15754
1310 15755
1311 15756
1312 67646
1313 15757
1314 15760
1315 15761
1316 P6247
1317 15762
1318 15763
1319 15764
1320 1*765
1321 . 15766
1322 69326
1323
309 8 3 2/0-0-4 3· -· ·»■■
OHIGiNAL INSPECTED
USER-DEFINEABLE FUNCTION BLOCK — "UOFUN"
1324 00346 «16067 XJ EQU 346B
»325 C0552 «16200 SXJ EOU 552R
1326 15767 016276 LOOP OEF 16-067R
1327 15770 Ö16235 C DEF 16200H
1328 15771 016246 STORE OEF 16276R
1329 15772 Ö16323 INSTK OEF 16235R
1330 15773 CHECO DEF 16246B
1331 15774 (030090 NEXTS OEF 16323R
1332·
1333 15775 NOP
133'*» ERRORS»
1335 END
• NO
RESERVED FOR CHECKSUM
ORIGINAL IMSPEGTED 309832/084 3.
Speichereinheit
Der Rechner benutzt ein ganz aus Halbleitern aufgebautes Speichersystem. Die peripheren Schaltungen sind bipolar und der Speicher besteht aus einem n-kanaligen MOS-Auslesespeicher (ROM) und einem p-kanaligen MOS-Schreiblesespeicher CRWM).
Die Adressierung und der physikalische Aufbau der Speicher-Moduln ist derart, daß die Anzahl der Wörter von 5K in der Basismaschine auf 9K in der ganz ausgebauten Maschine steigerbar ist. Der kleinstmögliche Zuwachs des Speichers beträgt dabei 512 Wörter.
Die Basismaschine enthält 5K Speicherwörter (also 5000 Wörter), die in 4K χ 16 ROM und 1024 χ 16 RWM aufgeteilt sind. Die RWM Wörter von 16 Bit Länge sind in Benutzer-Register und Rechnerwörter aufgeteilt. Der größte Rechner enthält 7K Speicherwörter des ROM und 2K Speicherwörter des RWM.
Der Schreib/Lese Speicher . -
Wie in Fig. 11 gezeigt, besteht der Speicher aus 1024 χ 1 dynamischen Schreib/Lese Speicher Chips (Intel 1103). Diese Chips sind p-kanalig und benutzen die MOS-Silizium-Sperrschicht-Technologie. Zur Aufrechterhaltung der Speicherinhalte muß die Vorrichtung alle 2 ms aufgefrischt werden.
309832/0843
2282725
Dies erfolgt durch Ausführung eines Lese—Zyklus' an einer gegebenen Adresse. Auf jedem Chip befinden sich 32 Auffrischungsverstärker, so daß bei. jedem Lese-Zyklus 32 Zellen aufgefrischt werden. Das gesamte Chip wird dann mittels Durchlaufen der 5 niedrigen Ädressenbits und Lesen aller ausdrücklichen Adressen aufgefrischt. Die Auffrischungsperiode beträgt mindestens alle 2 ms 20 fis.
Die Logikpegel auf allen Eingangsleitungen zu den RWM-Chips betragen 0 und + 16v. Diese Leitungen umfassen drei Taktleitungen (Chipauswahl, Y-Vorbereitung oder -Schreiben und Vorladen), von Adressenleitungen und diejenigen für Eingabedaten. Die Ausgabedaten werden durch einen Strom von 600 ,ua oder mehr an einer Last von IK Ohm oder weniger dargestellt. Dieser Niederpegelausgang ist verdrahtbar oder in der Lage, mit anderen Chips größere Systeme zu bilden.
Auslesespeicher
Wie in den Fig. 42,43A-B,44A-B dargestellt, sind die ROM-Chips n-kanalige MOS-Anordnungen mit 4O96 Bit, die zu 512 χ 8 angeordnet sind. Diese Vorrichtungen sind statisch und verbrauchen keinen Strom, wenn sie nicht eingeschaltet sind. Die Daten aus den ROM-Speichern werden dadurch ausgelesen, daß die Einschaltleitung des Chips von 0 nach + 12ν mitgenommen (was das Chip einschaltet), die gewünschte Zelle adressiert (Pegel 0 oder 4v) und die einzuschaltenden Ausgabevorrichtungen ausgewählt werden (4v oder 0). Die Ausgabe-
309832/0843
pegel eignen sich zum direkten Treiben eines TTL-Tores und gestatten den Aufbau großer Systeme.
Wie ferner in den Fig. 47 und 48A-B gezeigt, besitzt jedes ROM-Chip sechs Eingangspuffer. Diese Eingangspuffer erzeugen sowohl die Eingangsgröße als auch deren Komplement. Auf der Basis von 64 möglichen Kombinationen der I_ bis mit sechs Eingängen wird eine der 64 Leitungen in dem Dekoder ausgewählt. Die ausgewählte Leitung "schaltet eine der Vertikalleitungen in der Speicheranordnung von 64 χ 64 Bit ein.Wenn beispielsweise IQ bis I5 = 0 und I, bis Iß nicht näher definiert sind, so bedeutet dies, daß die Leitung XOO (oktal) ausgewählt ist.
Die beiden 8 aus 32-Auswahl-Dekoder müssen 16 Leitungen von den 64 horizontalen Leitungen auswählen, die durch die Vertikalleitung XOO ausgewählt sind. (Die 8 aus 32-Auswahl-Dekoder sind tatsächlich als 2 aus 8-Dekoder aufgebaut, die sich viermal in jedem der Bereiche A-B wiederholen.) Die Ausgänge der vier MOS-FET-Schaltungcn a, b, c und d sind vielfach geschaltet. Die MOS-Einheiten a1, b1, c1 und d1 sind ähnlich verbunden/Wenn Ig und I-, = 0 sind, so sind die Horizontalleitungen IXX, 2XX, 3XX, 5XX, 6XX, und 7XX in jedem der vier Abschnitte A-B geerdet. Dies stellt sicher, daß die MOS-FET-Schaltungen b, c, d, b1, c1 und d1 nichtleitend sind. Dies ermöglicht den Signalen, auf den Leitungen OXX und 4XX, die Transistoren a und a1 in die Aus-
09832/0843
gangsabschnitte zu gelangen. (Unter einem MOS-FET wird ein Silizium-Metalloxyd-Feldeffekt-Transistor verstanden.)
Die Ausgangsbereiche enthalten den Ausgangspuffer, einen · 1 aus 2-Dekoder und die Ausgangstreiber s. Die Ausgangspuffer liefern eine Verstärkung und sind auf 4 Leitungen von der Speicheranordnung vielfach geschaltet. Die 1 aus 2-Dekoder legen die Tore von zwei von vier Ausgangstreibern in jedem Abschnitt A-B fest, indem sie entweder die Leitung Ig oder ihr Komplement I« einhalten. Dies macht 1 von 2 Signalen unwirksam, die von dem Ausgangspuffer kommen. Für ' jede 512 χ 8 -Organisation können dann die Ausgangstreiber zusammen mit der Leitung Ce} verbunden werden.
Alle oben verzeichneten Konstanten, Programme und Unterprogramme mit von Seiten des Rechners benutzten Basisinstruktionen sind in diesen ROM-Chips gespeichert. Die 16 Bits jeder Konstanten und jedes Basisbefehles sind in den 512 χ 8 (dezimal) ROM-Chips gespeichert indem die ROM-Chips in 64 χ 64 Bit-Matrizen organisiert sind und die Zeilen- und Spaltennummern jedes Bits einer jeden Matrix durch Verarbeiten einer jeden Adresse und des betreffenden Bits (15 bis 8 oder 7 bis 0) errechnet wird. Die Spaltennummer errechnet sich durch Abziehen der letzten zwei Stellen der Adresse von 100 (oktal). So ist beispielsweise die Spaltennummer der Adresse 000 = 100g - 00ß = 100 -
• . ■ 8 641O und die Spaltehnummer der Adresse 777 = 100g - 77g =
309832/0843
M-Register .
Wie in den Fig. 11 und 20A-D dargestellt, enthält die M-Register-Karte das Adress- oder M-Register von 16 Bit Länge, alle Dekodier- und Pufferschaltungen für die Vorbereitungen des Chips und Adressenpuffer sowohl für den ROM- als auch den RWM-Speicher. Das Register benutzt vier, 4-stellige Schieberegister mit Serienein- und Ausgabe und parallel Ein- und Ausgabe. Bei Empfang eines Befehls TTT von dem Mikrorechner gelangen Seriendaten von der T-Sammeischiene in das M-Register. Mit diesen Daten erfolgt so lange nichts, bis entweder ein Lese- oder Schreibbefehl empfangen wird. Daraufhin werden ein oder zwei Dekoder vorbereitet. Diese zur Chipvorbereitung dienenden Dekoder entschlüsseln eindeutig welcher Block von 512 Wörtern im ROM- oder RWM-Speicher gerade adressiert wird. Wenn der ROM-Speicher adressiert ist, wird das Signal invertiert und auf +12v verstärkt. Im Falle des RWM-Speichers bereitet die Chip-Vorbereitung ein Tor vor, welches ein 16v-Taktsignal zu den vorbereiteten RWM-Chips gelangen läßt. Die Taktimpulse werden auf der Steuerkarte erzeugt.
Die dynamische Charakteristik der RWM-Chips erfordert es,
daß alle Chips gleichzeitig während eines Auffrischungszyklus eingeschaltet werden um den gesamten RWM-Speicher aufzufrischen. Die Pufferschaltungen im Ausgang der Dekoder
309832/0843
Uh
der Chip-Vorbereitung ermöglichen es im Chip-Wähltakt,
während des Auffrischens alle RWM-Chips zu erreichen, aber während eines Lese- oder Schreibzyklus nur die ausgewählten.
Als Puffer für die ROM-Adressenleitungen werden UND-Tore
mit u Totempfahl"-Ausgang und Widerstands-Einstellung benutzt. Durch Verwendung dieser Tore "Totempfahl"-Ausgang
kann der Einfluß des Übersprechens gering gehalten werden
und durch die Widerstands-Einstellung werden die Adressen-Leitungen über den erforderlichen Pegel von 4v hinaus angehoben. Die NAND-Tore werden während eines Speicherzyklus vorbereitet, so daß die ROM-Adressenleitungen bei einem
Pegel von 5v gesperrt werden. Die RWM-Adressenleitungen
müssen von Ov auf + 16v angehoben werden. Für die 5 bedeutsamsten Stellen werden Spannungsfeste inverter mit offenem Kollektor benutzt, deren Einstellung mit diskreten Transistoren vorgenommen wird. Die 5 unbedeutendsten Adressenbits werden über eine Sammelschiene an die Steuerkarte geführt, wo sie in einem Teil der Auffrischungsschaltung benutzt
werden.
Steuerung "·, ;' . ·
Ein Speicherzyklus besteht aus einem Lese- oder Schreibbefehl aus dem Rechner, der von 12 Taktimpulsen aus dem
Schiebe-Taktgenerator begleitet wird. Xfie in den Fig. 11 und 13A-D gezeigt, benutzt die Steuerung diese Impulse und Befehle
309832/0843
- IM -
zur Erzeugung der für die RWM-Chips erforderlichen Taktimpulse. Ein synchroner 4-Bit-Zähler (SN 74193) dient zum Zählen der Taktimpulse und die 4 Ausgangssignale werden durch einen 1 aus 16-Dekoder (SN 74154) dekodiert, um die Eingangssignale J und K für die Flipflops zu erzeugen. Die Ausgangssignale der Flipflops werden dann gepuffert, wodurch sie die erforderlichen Taktsignale werden (Vorladen, Y-Vorbereiten und Chipauswahl).
Das Auffrischen des RWM-Speichers erfolgt ebenfalls über die Steuerkarte. Ein astabiler Multivibrator mit einer Folgefrequenz von mindestens 500 Hz erzeugt ein Signal, welches das Auftreten eines Auffrischungszyklus gestattet. Ein Flipflop erzeugt ein Signal REF, jedoch nur wenn das Signal des astabilen Multivibrators den Wert H hat, wenn kein Lese- oder Schreibzyklus abläuft und wenn das Signal des Rechners
CCT den Wert H hat. Das Signal CCT nimmt zwischen den , Befehlen des Rechners den Wert H an, so daß sichergestellt ist, daß nichts unterbrochen werden kann, wenn das Signal REF erzeugt wird. Das Signal REF wird dann durch einen Inverter mit offenem Kollektor gepuffert und als INH an den Rechner gegeben. INH hält den Rechner an und läßt den Auffrischungszyklus beginnen.
Bei der Auffrischung wird der gleiche Zähler benutzt, wie für einen Speicherzyklus, um ebenfalls die erforderlichen Taktimpulse (Vorladen und Chip-Auswahl) zu erzeugen. Wenn
309832/0843
der Zähler in den Zustand O zurück kehrt und das Signal .
REF vorliegt, wird ein zweiter Zähler um einen.Schritt
weitergeschaltet. Dieser zweite Zähler liefert die Auffrischungsadressen, die nur dann zu dem RWM-Spelcher gelangen, wenn das Signal RWF vorliegt. Wenn dieser Zähler in den Zustand 0 zurück kehrt, bewirkt er, daß die Signale REF und INH in ihre vorgewählten Zustände zurück kehren und der Rechner mit seinem normalen Betrieb fortfährt.
Eine weitere Funktion der Steuerkarte ist es, die Möglichkeit einer Speichererweiterung zu gestatten. Die Steuerkarte behandelt einen externen Speicher so, als wäre er
eine Erweiterung des internen Speichers. Von dem Standpunkt des Benutzers aus gesehen, braucht er nicht zu wissen, daß ein erweiterter Speicher vorgesehen ist, abgesehen von der Tatsache natürlich, daß der zur Verfügung stehende Speicherplatz vergrößert worden ist. ■ .
Weiterhin bietet die Steuerkarte die Möglichkeit, über die D-Sammelschiene (die Daten-Schiene) aus dem T-Register des Rechners Information zu entnehmen oder in dieses Register
Information einzuladen. Andere auf der Steuerkarte erzeugte Signale werden dazu verwendet, den Datenfluß in das T-Register zu lenken.
T-Register
Die Daten von und zu dem Speicher werden vorübergehend in dem
309832/0843
2282725
T-Register gespeichert. Wie aus den Pig. 19 und 14A-D zu ersehen, wird das T-Register aus 4 vierstelligen Schieberegistern mit Serienein- und Ausgabe und parallel Ein- und Ausgabe gebildet. Die Schieberegister besitzen eine Modus-Steuerung (TMC), welche im Zustand L einen Serien-Datenfluß und im Zustand H einen Parallel-Daten-
fluß ermöglicht.
Seriendaten laufen bei Vorhandensein eines Befehls TTT in das T-Register ein, gleichzeitig laufen sie in dem T-Register um, um einen Datenverlust zu verhindern.
Paralleldaten werden entweder vor; dem ROM-Speicher oder von dem RWM-Speicher während, eines Lesezyklus empfangen. Die Daten des ROM-Speichers werden durch NAKD-Tore gepuffert und diejenigen des RWM-Speichers durch Leseverstärker und die gleichen NAND-Tore. Alle 16 Bit werden sowohl beim RWM-Speicher als auch ROM-Speicher gleichzeitig abgelesen. Jedesin dem RWM-Speicher einzuschreibendes Bit hat seine eigene getrennte Pufferstufe, welche die TTL-Pegel in diejenigen der von dem RWM-Speicher verwendeten 16v-Logik umsetzt.
Merkzeichentafel des Speichersystems Außerhalb des Speicher- I/O-Verbinders erzeugte Signale
CCT - Nicht-Steuertakt, die invertierte Hüllkurve von SCK.
SCK - Schiebetakt.
309832/0843
MCK - Speichertaktf ein kontinuierlicher Impulszug, der von der Speichersteuerung zum Takten der Speicher- und
Auffrischungszyklen verwendet wird. IOD — I/O-Daten. Gelangt zur Steuerkarte, um auf die £3-Schiene
geschältet zu werden.
ITS - "I/O zur "S-Schiene", das Signal, welches IOD auf die
S—Schiene schaltet. - -
SCO 4- Kodierte Signale, welche folgende Signale erzeugent
SCI ÜTS - Einheiten zur ^-Schiene,
ΐ ZTS - Null zur "
MTS - M-Register ■ " TTS - T-Register H H
TTT - *T-Schiene zum T-Register j!. Oy =■ Ein,
T-Schiene- Daten auf dieser Schiene dienen als Eingänge der Register M und T.
RDM - "Speicherfiesen", negativer Wert = Eins, Dauert 12 Taktimpulse lang.
WTM - "Speicher schreiben", negativer Wert = Eins. Dauert 12 Taktimpulse lang.
INH - "Sperrung/ negativer Wert = Eins. Der Rechner wird angehalten, sobald INH auf fiull Volt liegt. Die Speichersteuerung erzeugt dieses Signal während eines Auffrischungszyklus des RWM-Speichers. I/O erzeugt es ebenfalls.
Andere Signale an den I/O-Verbinder
TOO, TOl, T02 und TO3 rühren vom T-Register her.
309832/0843
- 36β -
D-BUS - "Daten-Schiene". Externe Daten (vom erweiterten
Speicher) gehen über diese Schiene in den Rechner. EDT - "Externer Datentransfer", welcher die Daten der
D-Schiene in den Rechner schaltet. Ov = Eins. EMB - "Erweiterte Speicher belegt". Ein Signal des erweiterten Speichers, welches der Speichersteuerung meldet, daß
a. Ein Zyklus des erweiterten Speichers beendet ist
b. Der erweiterte Speicher vorhanden ist.
Auf den RWM-Speicher^Karten erzeugte Signale
RWDCXX) - "Schreib-Lese-Daten". Ausgang des 1103-Speichers.
60OfA in 150 Ohm = 1
Kein Strom =0
AOP - Invertierte "Zusatz-Funktion". 0,5V-Signal# wenn
keine zusätzliche RWM-Speicher-Karte {Wahlmöglichkeit 01) in dem Rechner vorhanden ist. Ov * Eins.
Andere vom RWM-Speicher verwendete Signale
Bezeichnung -
AOO-AO4 Steuerung
AO5-AO9 M-Register
CSB M-Register
CSA M-Register
RWI(XX) T-Regißter
YBL Steuerung
PCG Steuerung
309832/0143
Auf der T-Register-Karte erzeugte Signale
T00-T15 - Datenbits des T-RegisterSo Eingabedaten für
den Speicher. T00-T03 sind gleichfalls Ausgabe-Daten zu der CPU (4 Bit-Verarbeitung)„ · '
RWI(XX) - Schreib/Lese-Eingänge. Das T-Register schaltet die Daten zum RWM-Speicher. +16V ■> GND.
Andere vom T-Register erzeugte Signale
Bezeichnung Quelle erzeugte Signale
ROD(XX) ROM-Speicher , ' ·
TRI Steuerung
TSC Steuerung
TMC Steuerung
TPC Steuerung
RWD(XX) RWM-Speicher
RWE M-Register
MAW M-Register
AOF - Zusätzliche RWM-Speicher-Karte (Wahlmöglichkeit 01)
Auf der M-Register-Karte
M00-M15 - Datenbits des M-Registers. Erzeugen die Adresse und die Chip-Auswahl-Information (MOO wird geichfalls durch MTS auf die U-Schiene geschaltet)
100-107 - Adressenbit des ROM-Speichers. Ilerunterdekodiert bis auf zwei Bits, die an den Ausgabepuffern des ROM zur Verfügung stehen.
09832/084
IOS-IOS - Wählt aus, welche Ausgabepuffer des ROM
vorbereitet werden. CEB(XX) - Chip-Vorbereitung. Der Basisrechner wählt aus,
welche ROM-Chips eingeschaltet sind (+1OV = Ein). CEA(XX) - Chip-Vorbereitung.Beim Zusatz-ROM-Speicher AEN - Adressenvorbereitung. AEN = RDM + WTM AO5-AO9 - Adressenstellen des RWM-Speichers (+16V & GND) CSB(XX) - Chipauswahl des Basisrechners. Ein Taktimpuls
mit negativ = einSj welcher auswählt, welche
RWM-Chips eingeschaltet werden. (+16V & GND) CSA(XX) - Chipa'uswahl beim Zusatz RWE - Schreib/Lese-Vorbereitung. Ein +5V~Signal, das
jedesmal auftritt, wenn ein RWM-Chip für einen
Speicherzyklus adressiert wird. Mi iVv - Maximaler Adre ss en um fang. Ein +5V-Signal das
jedeξma1 auftritt, wenn die Speiehersteile
i 3 7 7 (ο k t a1} aare s s i e rt wird. KVA - uηgü11igο Adrcssc, Eiη + 5V-Sigηal für a11e
Adressen groß ;r als 2 2:000 (oktal)
ΐ: W A - S c h r e i b / L e s ο η b ■ :i i. m Zusatz, ^ i: i 11 a u f , we η η der
R W M- Γ) ρ e i c i :.; r ζ ν i s c: Ii ο 11 20000 un d 2 2 000 (ο k t a 1)
;. ,. d r c s s 1.:;:: r t w i r d . 0 ' r ■ E ins.
RWB - 5:c.:hrei 1 :> /" l >e;:' ■ : ■ >ι 1. :■ i.in Grundsys 13in.. 1Fri11 auf ,
w e 11! ι d'".: ■ .::;■ ]■:: "·, \' K - ■■' [' > ο i c h υ r zwisc 11 a n 3. ■ 10 0 & 17 0 0 (ο k 1 ■..: ·.,
ο a :: r 16 -i t;0 u π, \ 17 7 7 7 (ok ta 1) υ. d r ^r, s i ν r t vj i r d,
3 0 9 β 3 2 / g 8 4 3
ί-
ϊ
Andere vom M-Register erzeugte Signale Quelle
ί Bezeichnung Rechner
T-Schiene Rechner
SCK Rechner
RDM Rechner
WTM Rechner
UM Steuerung
VLD Steuerung
Hi1S Steuerung
CSL Steuerung
REF Auf der Steuerkarte erzeugte Signale
VOR - In der Mitte eines Speicherzyklus erzeugtes Signal, das die aktiven Einstell-Einrichtungen der ROM-Ausgänge abschaltet.
TRI - Eingang des T-Registers. TRI = (T-Schiene). (TTT) + (TOO) . (TTS)
MTS - M-Register zur S-Schiene. Vom SCO und SCl erzeugt.
AOO-AO4 - Adressenbits des RWM-Speichers, die auch bei der Speicherauffrischung benutzt werden.
TSC - Serientakt des T-Registers. TSC = SCK.(TTS + TTT + EDT( TPC - Pralleltakt des T-Registers. (Taktet Daten vom
Speicher ein)„ Tritt rmz bei e£nem Lesezyklus
de« internea Speichers auf.
3§SS32/0843
YBL - Y-Vorbereitung. Taktimpuls der beim Lesen auf
+16V und beim Schreiben auf GND herunter gedrückt
wird (nur beim RWM-Speicher).
PCG - Vorladung. Der dritte 16V-Taktimpuls, der von den
Speicher-Chips des 1103 RWM-Speichers benötigt
wird.
CSL - Chip-Auswahl-Takt. Das konjunktiv mit den Daten
des M-Registers wirkende Signal zur Chip-Auswahl. REF - Auffrischung. Liegt auf OV, wenn der Speicher
sich im Auffrischungszyklus befindet. CEM - Aufruf des erweiterten Speichers. Verhindert, daß ROM-Takt den Zustand des Mikro-Rechners verändert.
Tritt bei allen Schreib- und Lesebefehlen auf.
Das Signal wird entfernt, wenn ein Speicherzyklus nicht derjenige eines erweiterten Speichers ist.
Bei Zyklus eines erweiterten Speichers wird CEM überstrichen beseitigt, nachdem der Speicherden
Zyklus beendet hat. 0 = Eins.
S-BUS - Schaltet das I/O-Register, Daten, TOO, MOO oder einzeln auf die S-Schiene und wird zum Rechner geleitet. 0 = Eins.
INH - Sperrung, negativer Wert = Eins. Der Rechner wird angehalten, sobald INH auf null Volt liegt. Die Speichersteuerung erzeugt dieses Signal während des RWM-Speicher-Auffrischungszyklus. I/O erzeugt es ebenfalls.
309832/0843
TMC — Modus-Steuerung für das T-Register. TMC = 0 : T-Register wird zur Aufnahme von Information aus dem Speicher vorbereitet. TMC = 1 ; Das T-Register wird für eine serielle Verschiebung vorbereitet.
EMC - Zyklus des erweiterten Speichers. +5V-Signal wird verwendet, um anzuzeigen, daß der erweiterte Speicher einen Zyklus begonnen hat. OV = Eins.
VLD - In der Mitte eines Speicherzyklus auftretendes.
Signal, welches die Datenausgabe aus dem ROM-Speicher ermöglicht. Gleiches Auftreten wie VORi
Andere von der Steuerung erzeugte Signale '
Bezeichnung Quelle
CCT Rechner
TOO > T-Register
IOD Rechner
ITS Rechner
SCO Rechner
SCI Rechner
TTT Rechner
T-BUS Rechner
SCK Rechner
RDM Rechner
WTM . Rechner
MCK ■ Rechner
309832/0843
Bezeichnung Quelle
M0O-M04 M-Register
AEN M-Register
EDT erweiterter Speicher
D^BUS . I/O-Verbinder
NVA M-Register
AOF zusätzlicher RWM-Speicher
(Wahlmöglichkeit 01)
EMB erweiterter Speicher
MAW M-Register
RWA M-Register
Auf der ROM-Karte erzeugtes Signal
ROD(XX)- Daten des Auslesespeichers
Andere vom ROM-Speicher erzeugte Signale Bezeichnung Quelle
CEA(XX) M-Register
CEB(XX) M-Register
100-107 M-Register
108 IÖE M-Register
VOR Steuerung^
Ausgabe-S ichtgerät
In den Fig. 15A-D ist die dem Sichtgerät des Rechners zugeordnete Hardware dargestellt. Die Anzeige umfaßt ein einziges Register 400 für 16 alpha-numerische Zeichen, bei dem jede
309832/0843
Zeichenstelle aus einer Matrix von Licht-ausseridenden Dioden (LED) mit sieben Zeilen von je fünf Spalten besteht. Das Register 400 ist in vier Quadranten 402 aufgeteilt, die je vier Zeichenstellen besitzen. Zusätzlich zu der dargestellten Hardware enthält das Sichtgerät des Rechners eine Anzahl in dem ROM-Speicher des Rechners gespeicherte Bit-Muster, ein Anzeigeprogramm als Firmware,■d.h. in fest verdrahteter Form, und ein I/O-Register, die alle im vorstehenden ausführlich beschrieben worden sind. Das Firmware-Anzeigeprogramm liest ein bestimmtes Bit-Muster, erzeugt eine ■ Spaltenadresse 406, um das Bit-Muster in dem Anzeigeregister 400 auszurichten und transferiert das Bit-Muster und die Spaltenadresse an das I/O-Register. Die Anzeige-Hardware entschlüsselt dann die Spaltenadresse und schaltet jede durch das Bit-Muster ausgewählte LED ein. Dieser Vorgang tritt für jede der 80 Spalten der Anzeige einmal pro Abtastung auf. Die Anzeige wird dabei etwa sechzig mal pro Sekunde abgetastet.
Die von der Anzeige-Hardware benötigten Eingabewerte umfassen: 7 Bit Zeichendaten 404, eine siebenstellige Spaltenadresse 406 und ein Vorbereitungssignal 408. Bei diesen Signalen entspricht ein positiver Wert der Eins, bis auf das Vorbereitungssignal 408, das Null sein muß, um-die Anzeige vorzubereiten.
Die Zeichendaten 404 werden durch Zeichendaten-Inverter an alle vier Sätze von Zeilentreibern 412 angelegt (die
30983 2/08 43
Zeichendaten für Zeile 1 werden z.B. an alle vier Treiber der Zeile 1 angelegt usw.). Die fünf unbedeutsamsten Bits der Spaltenadresse 406 werden von einem l-aus-20-Dekoder 414 entschlüsselt und betätigen einen der Spaltentreiber 416. Die beiden bedeutsamsten Bits der Spaltenadresse 406 werden an einen l-aus-4-Dekoder 418 angelegt, der eines der Quadrantentore 420 öffnet, wenn das Vorbereitungssignal 408 eintrifft. Die LED an den Schnittstellen der durch die Zeichendaten 404 ausgewählten Zeilen und der durch die Spaltenadresse 406 ausgewählten Spalte werden dann in Vorwärtsrichtung vorgespannt, so daß sie Licht aussenden.
Der l-aus-4-Dekoder 418 hat einen vierten Eingang, der von einem wieder einschaltbaren monostabilen Multivibrator gespeist wird. Für den Fall, daß das Vorbereitungssignal 408 ungefähr 500 usec lang eingeschaltet bleibt, ändert der monostabile Vibrator 422 seinen Zustand und schaltet den l-aus~4-Dekoder 418 ab. Er bewahrt damit die LED-Matrix und andere Schaltkreiselemente vor dem Einfluß hoher Gleichströme.
TastenfG.ldeingabeeinheit usw.
Die Tastenfeldeingabeeinheit 12, die Magnetkarten-Abfühl- und Aufzeichen-Einheit 14, der Ausgabedrucker 20, die Eingabe/Ausgabe-Steuereinheit 60, die Registereinheit 114, die ALU 116, der programmierbare Taktgeber 118 und die Mikro-
309832/0843
■ - 377 ■
programmeinheit 120 sind in der gleichen Weise aufgebaut, wie in der deutschen Patentanmeldung P 22 28 742.9 vom 13. Juni 1972 und in der schweizerischen Patentanmeldung 8800/72 vom 13. Juni 1972 gezeigt und beschrieben ist.
309832/08A3

Claims (1)

  1. Patentanspruch
    mit einem Schreib-Lese-Speicher zum Abspeichern vom Eingabe-Speicherregister übertragener alpha-numerischer Informationen,
    mit einer Logik-Einheit zum Festlegen einer Anzahl Programme und Unterprogramme, welche vom Rechner beim Verarbeiten und Speichern in das Eingabe-Speicher-Register eingegebener alpha-numerischer Informationen durchgeführt werden sollen, mit einer Verarbeitungs-Einheit zum wahlweisen Durchführen eines oder mehrerer dieser Programme und Unterprogramme zum Zwecke des Verarbeitens und Speicherns in das Eingabe-Speicherregister eingegebener alpha-numerischer Informationen und mit einer Ausgabe-Einheit zum Liefern einer Außgangs-Anzeige der Resultate aus den vom Rechner verarbeiteten alpha-numerisehen Informationen, dadurch gekennzeichnet,
    309832/0843
    daß das Eingabe-Tastenfeld (12) eine Anzahl Datentasten, mit welchen aus jeweils ein oder mehreren alpha-numerischen Aussagen bestehende Zeilen .in den Rechner eintastbar sind, eine Verarbeitungstaste,mit welcher der. Rechner zum Verarbeiten einer eingegebenen, aus ein oder mehreren alpha-numerischen Aussagen bestehenden Zeile veranlaßbar ist, und eine Speichertaste aufweist, mit welcher das.Abspeichern einer eingegebenen, aus ein oder mehreren alpha-numerischen Aussagen bestehenden Zeile in den Rechner auslösbar ist, daß das Eingabe-Speicherregister (56) eine in den Rechner eingegebene aus ein oder mehreren alphanumerischen Aussagen bestehende Zeile zwischenzuspeichern vermag,
    daß der Schreib-Lese-Speicher (78) von dem Eingabe-Speicherregister (56) übertragene, jeweils aus ein oder mehreren alpha-numerischen Aussagen bestehende Zeilen abzuspeichern vermag,
    daß die Logik-Einheit (80) eine Anzahl Programme und Unterprogramme festzulegen vermag, welche vom Rechner beim Verarbeiten und Speichern in das Eingabe-Speicherregister (56) eingegebener, jeweils aus ein oder mehreren alpha-numerischen Aussagen bestehender Zeilen durchgeführt werden sollen,
    daß die Verarbeitungs-Einheit (48) auf eine Betätigung der Verarbeitungstaste im Anschluß an das Eintasten einer aus ein oder mehreren alpha-numerischen Aussagen ■
    309832/0843
    bestehenden Zeile in das Eingangs-Speicherregister (56) anzusprechen vermag, um wahlweise eines oder mehrere dieser Programme und Unterprogramme zum Zwecke des Verarbeitens dieser aus ein oder mehreren alphanumerischen Aussagen bestehenden Zeile durchzuführen und auf eine Betätigung der Speichertaste im Anschluß an das Eintasten einer aus ein oder mehreren alphanumerischen Aussagen bestehenden Zeile in das Eingangs-Speicherregister (56) anzusprechen vermag, um zusätzlich diese aus ein oder mehreren alpha-numerischen Aussagen bestehende Zeile in dem Schreib-Lese-Speicher (78) abzuspeichern,
    und daß die Ausgabe-Einheit (58) eine alpha-numerische Anzeigeeinheit (18, 20) aufweist, mit welcher jede in das Eingabe-Speicherregister (56) eingegebene aus ein oder mehreren alpha-numerischen Aussagen bestehende Zeile optisch darstellbar ist.
    309832/0843
    sei
    Lee r s e ί t e
DE2262725A 1971-12-27 1972-12-21 Programmierbarer elektronischer rechner Pending DE2262725A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US00212581A US3839630A (en) 1971-12-27 1971-12-27 Programmable calculator employing algebraic language

Publications (1)

Publication Number Publication Date
DE2262725A1 true DE2262725A1 (de) 1973-08-09

Family

ID=22791628

Family Applications (4)

Application Number Title Priority Date Filing Date
DE2264897A Pending DE2264897A1 (de) 1971-12-27 1972-12-21 Elektronischer rechner
DE2262725A Pending DE2262725A1 (de) 1971-12-27 1972-12-21 Programmierbarer elektronischer rechner
DE2264896A Pending DE2264896A1 (de) 1971-12-27 1972-12-21 Elektronischer rechner
DE2264898A Ceased DE2264898A1 (de) 1971-12-27 1972-12-21 Elektronischer rechner

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE2264897A Pending DE2264897A1 (de) 1971-12-27 1972-12-21 Elektronischer rechner

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE2264896A Pending DE2264896A1 (de) 1971-12-27 1972-12-21 Elektronischer rechner
DE2264898A Ceased DE2264898A1 (de) 1971-12-27 1972-12-21 Elektronischer rechner

Country Status (10)

Country Link
US (16) US3839630A (de)
JP (1) JPS57538B2 (de)
CA (5) CA1054257A (de)
CH (1) CH588120A5 (de)
DE (4) DE2264897A1 (de)
FR (1) FR2169828B1 (de)
GB (4) GB1433117A (de)
HK (1) HK67878A (de)
IT (1) IT972350B (de)
ZA (1) ZA728874B (de)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4384328A (en) * 1971-06-15 1983-05-17 Hewlett-Packard Company Programmable calculator including magnetic reading and recording means
US4326265A (en) * 1971-07-19 1982-04-20 Texas Instruments Incorporated Variable function programmed calculator
USH1970H1 (en) 1971-07-19 2001-06-05 Texas Instruments Incorporated Variable function programmed system
JPS5346066B2 (de) * 1972-04-14 1978-12-11
US4366553A (en) * 1972-07-07 1982-12-28 Hewlett-Packard Company Electronic computing apparatus employing basic language
JPS4958718A (de) * 1972-10-04 1974-06-07
CA986226A (en) * 1972-12-26 1976-03-23 David S. Maitland Adaptable programmed calculator
US3971925A (en) * 1972-12-26 1976-07-27 Hewlett-Packard Company Adaptable programmed calculator having provision for plug-in keyboard and memory modules
US4181966A (en) * 1972-12-26 1980-01-01 Hewlett-Packard Company Adaptable programmed calculator including a percent keyboard operator
US3971924A (en) * 1973-05-07 1976-07-27 Canon Kabushiki Kaisha Electronic calculator displaying a partial result obtained from a portion of a numerical expression
JPS5542430B2 (de) * 1974-02-01 1980-10-30
JPS5526502B2 (de) * 1974-06-06 1980-07-14
JPS5129054A (en) * 1974-09-05 1976-03-11 Canon Kk Bekijoenzansochi
US4009379A (en) * 1974-12-16 1977-02-22 Hewlett-Packard Company Portable programmable calculator displaying absolute line number addresses and key codes and automatically altering display formats
US4091446A (en) * 1975-01-24 1978-05-23 Ing. C. Olivetti & C., S.P.A. Desk top electronic computer with a removably mounted ROM
US4026555A (en) * 1975-03-12 1977-05-31 Alpex Computer Corporation Television display control apparatus
US4053753A (en) * 1975-03-28 1977-10-11 Canon Kabushiki Kaisha Electronic calculator with function keys
US3978328A (en) * 1975-04-07 1976-08-31 National Semiconductor Corporation Pocket calculator
US4330839A (en) * 1975-07-21 1982-05-18 Hewlett-Packard Company Programmable calculator including means for automatically processing imformation stored on a magnetic record member
US4075679A (en) * 1975-12-08 1978-02-21 Hewlett-Packard Company Programmable calculator
US4437156A (en) 1975-12-08 1984-03-13 Hewlett-Packard Company Programmable calculator
US4104725A (en) * 1976-03-26 1978-08-01 Norland Corporation Programmed calculating input signal module for waveform measuring and analyzing instrument
US4218760A (en) * 1976-09-13 1980-08-19 Lexicon Electronic dictionary with plug-in module intelligence
IT1071378B (it) * 1976-09-22 1985-04-02 Olivetti & Co Spa Sistema di scrittura automatica
JPS5353238A (en) * 1976-10-25 1978-05-15 Canon Inc Electronic computer
US4135662A (en) * 1977-06-15 1979-01-23 Pitney-Bowes, Inc. Operator prompting system
JPS5423331A (en) * 1977-07-22 1979-02-21 Hitachi Ltd Generating circuit for crt display signal
US4247905A (en) * 1977-08-26 1981-01-27 Sharp Kabushiki Kaisha Memory clear system
US4180854A (en) * 1977-09-29 1979-12-25 Hewlett-Packard Company Programmable calculator having string variable editing capability
US4175286A (en) * 1978-01-19 1979-11-20 Texas Instruments Incorporated Burn-in test system for electronic apparatus
JPS54122036A (en) * 1978-03-15 1979-09-21 Sharp Corp Calculation system on print system
JPS59846B2 (ja) * 1978-04-17 1984-01-09 カシオ計算機株式会社 指数表示方式
JPS581462B2 (ja) * 1978-04-17 1983-01-11 カシオ計算機株式会社 指数表示方式
JPS609293B2 (ja) * 1978-06-29 1985-03-09 カシオ計算機株式会社 キ−入力制御方式
JPS5578352A (en) * 1978-12-08 1980-06-12 Casio Comput Co Ltd Program check system
US4334279A (en) * 1979-04-11 1982-06-08 Sharp Kabushiki Kaisha Display device for electronic calculators or the like
US4333155A (en) * 1979-05-18 1982-06-01 Litton Business Systems, Inc. Calculator having a modular keyboard
JPS55157058A (en) * 1979-05-26 1980-12-06 Canon Inc Electronic calculator
JPS6126983Y2 (de) * 1979-05-31 1986-08-12
JPS5625488A (en) * 1979-08-09 1981-03-11 Canon Inc Printer
US4323979A (en) * 1979-08-20 1982-04-06 Litton Business Systems, Inc. Cartridge and bezel assembly for a calculator
AU534381B2 (en) * 1979-09-14 1984-01-26 K.K. Toshiba Microwave oven
JPS5657159A (en) * 1979-10-17 1981-05-19 Canon Inc Voice desk calculator
US4386412A (en) * 1979-12-17 1983-05-31 Casio Computer Company, Ltd. Calculator with equation display device
JPS56114047A (en) * 1980-02-12 1981-09-08 Sharp Corp Execution system of electronic computer
JPS56116161A (en) * 1980-02-19 1981-09-11 Sharp Corp Programmable electronic type calculator
JPS5710836A (en) * 1980-06-24 1982-01-20 Sharp Corp Display system of electronic computer and the like
US4546448A (en) * 1980-10-24 1985-10-08 Hewlett-Packard Company Programmable calculator including program variable initialization means and definition means array
JPS57100562A (en) * 1980-12-15 1982-06-22 Sony Corp Word processor
US4473886A (en) * 1981-07-06 1984-09-25 Texas Instruments Incorporated Data processing apparatus with algebraic memory operation and entry sequence
DE3242627A1 (de) * 1981-11-18 1983-05-26 Sharp K.K., Osaka Programmierbarer elektronischer rechner mit einer anzeigeeinrichtung
US4593357A (en) * 1982-02-19 1986-06-03 Laboratory Equipment Corp. Motor vehicle performance monitoring system
US4495592A (en) * 1982-05-25 1985-01-22 Texas Instruments Incorporated Electronic data processing apparatus with equation operating system having implied multiplication of two hierarchical ranks
US4521868A (en) * 1982-05-25 1985-06-04 Texas Instruments Incorporated Electronic data processing apparatus with equation operating system having improved exponentiation operators
US4800485A (en) * 1982-06-01 1989-01-24 American Telephone And Telegraph Company On-line documentation facility
CA1189628A (en) * 1982-06-01 1985-06-25 John M. Ackroff On-line documentation facility
JPS58213369A (ja) * 1982-06-05 1983-12-12 Casio Comput Co Ltd 検算機能付小型電子式計算機
GB2125589B (en) * 1982-07-12 1987-01-28 Sharp Kk Programmable calculator
JPS5964831U (ja) * 1982-10-26 1984-04-28 住友重機械工業株式会社 バケツトエレベ−タにおける回転式ホツパの駆動装置
US4564920A (en) * 1982-12-02 1986-01-14 Mostek Corporation Multiplier with hybrid register
US4583169A (en) * 1983-04-29 1986-04-15 The Boeing Company Method for emulating a Boolean network system
US4608659A (en) * 1983-09-30 1986-08-26 Honeywell Information Systems Inc. Arithmetic logic unit with outputs indicating invalid computation results caused by invalid operands
US4604695A (en) * 1983-09-30 1986-08-05 Honeywell Information Systems Inc. Nibble and word addressable memory arrangement
US5125077A (en) * 1983-11-02 1992-06-23 Microsoft Corporation Method of formatting data from a mouse
US4698784A (en) * 1984-01-06 1987-10-06 Hewlett-Packard Company Syntactic device for chain calculations
JPS6035782A (ja) * 1984-02-20 1985-02-23 株式会社日立製作所 集積回路メモリ装置
US4722065A (en) * 1984-03-30 1988-01-26 Casio Computer Co., Ltd. Electronically programmable calculator with memory package
DE3419559A1 (de) * 1984-05-25 1985-11-28 Robert Bosch Gmbh, 7000 Stuttgart Steuervorrichtung fuer funktionen im kraftfahrzeug
DE3508048A1 (de) * 1985-03-07 1986-09-11 Standard Elektrik Lorenz Ag, 7000 Stuttgart Schnittstelleneinrichtung
US4660170A (en) * 1985-04-29 1987-04-21 General Dynamics, Pomona Division System for providing reprogramming data to an embedded processor
US4860203A (en) * 1986-09-17 1989-08-22 International Business Machines Corporation Apparatus and method for extracting documentation text from a source code program
US4852057A (en) * 1986-10-27 1989-07-25 Hewlett-Packard Company Algebraic expression manipulation method and implementation for an electronic data processing apparatus
US4935875A (en) * 1987-12-02 1990-06-19 Data Chem, Inc. Chemical analyzer
US5253345A (en) * 1988-07-07 1993-10-12 Sears, Roebuck & Co. Point of sale register system
JPH0275053A (ja) * 1988-09-12 1990-03-14 Sharp Corp 電子計算機
DE58906371D1 (de) * 1988-09-27 1994-01-20 Lingemann Helmut Gmbh & Co Mehrscheibenisolierglas sowie Abstandhalter für das Mehrscheibenisolierglas.
JPH0350451U (de) * 1989-09-22 1991-05-16
US5227988A (en) * 1989-11-09 1993-07-13 Nippon Steel Corporation Apparatus for detecting various process values and apparatus for recording information
US5355469A (en) * 1990-07-30 1994-10-11 Delphi Data, A Division Of Sparks Industries, Inc. Method for detecting program errors
JP2856600B2 (ja) * 1992-06-10 1999-02-10 シャープ株式会社 関数電卓
US5377130A (en) * 1993-01-26 1994-12-27 Texas Instruments Incorporated Method and apparatus for solving terms of a numerical sequence
US5483472A (en) * 1993-05-10 1996-01-09 Overman; Anthony J. Portable electronic food shopper
US6032860A (en) * 1997-08-05 2000-03-07 Ci-Matrix Uniform ultraviolet strobe illuminator and method of using same
US20030041078A1 (en) * 2001-08-24 2003-02-27 Child J. Douglas Interactive object transformation based expert system for symbolic mathematics on a handheld device
CN105608045A (zh) * 2016-01-26 2016-05-25 浪潮(北京)电子信息产业有限公司 一种可编程计算器
EP4068696A4 (de) 2019-12-16 2022-12-21 Huawei Technologies Co., Ltd. Notrufverfahren, vorrichtung und system
RU201465U1 (ru) * 2020-06-10 2020-12-16 Федеральное государственное казенное военное образовательное учреждение высшего образования "Военный учебно-научный центр Военно-Морского Флота "Военно-морская академия им. Адмирала Флота Советского Союза Н.Г. Кузнецова" Специализированное вычислительное устройство оператора информационного поста обеспечения навигационной безопасности

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB768767A (en) * 1954-05-20 1957-02-20 Univ Kingston Method and apparatus for density control
US3047228A (en) * 1957-03-30 1962-07-31 Bauer Friedrich Ludwig Automatic computing machines and method of operation
US3346853A (en) * 1964-03-02 1967-10-10 Bunker Ramo Control/display apparatus
US3315234A (en) * 1964-03-02 1967-04-18 Gen Electric Data editing apparatus
US3996562A (en) * 1964-06-26 1976-12-07 Hewlett-Packard Company Programmable electronic calculator for evaluating mathematical problems
US3405392A (en) * 1965-04-30 1968-10-08 Sperry Rand Corp Electronic calculators
US3380031A (en) * 1965-08-10 1968-04-23 Control Data Corp Remote calculator
US3428950A (en) * 1966-03-22 1969-02-18 Wang Laboratories Programmable calculating apparatus
US3487369A (en) * 1966-08-12 1969-12-30 Logicon Inc Electronic calculator
SE303056B (de) * 1967-08-31 1968-08-12 Ericsson Telefon Ab L M
US3461434A (en) * 1967-10-02 1969-08-12 Burroughs Corp Stack mechanism having multiple display registers
US3533078A (en) * 1967-12-04 1970-10-06 Burroughs Corp Keyboard entry control apparatus
US3594734A (en) * 1969-03-21 1971-07-20 Wang Laboratories Programmable calculator
US3588841A (en) * 1969-03-27 1971-06-28 Singer Co Programmable electronic calculator
US3573749A (en) * 1969-03-28 1971-04-06 Ibm Operator guidance and control termianl
US3596254A (en) * 1969-04-30 1971-07-27 Data Trends Inc Data processing with controlled input
US3597600A (en) * 1969-05-05 1971-08-03 Singer Co Electronic desk top calculator having a dual function keyboard logic means
US3596257A (en) * 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
US3693162A (en) * 1970-10-14 1972-09-19 Hewlett Packard Co Subroutine call and return means for an electronic calculator
US3678466A (en) * 1970-10-14 1972-07-18 Hewlett Packard Co Electronic calculator
US3760171A (en) * 1971-01-12 1973-09-18 Wang Laboratories Programmable calculators having display means and multiple memories
US3774156A (en) * 1971-03-11 1973-11-20 Mi2 Inc Magnetic tape data system
US3720820A (en) * 1971-03-18 1973-03-13 Tektranex Inc Calculator with a hierarchy control system
US3760370A (en) * 1971-04-26 1973-09-18 Tektronix Inc Calculator with a number processing system
US3747071A (en) * 1971-05-10 1973-07-17 Mylee Digital Sciences Inc Electronic data processing system
US3859635A (en) * 1971-06-15 1975-01-07 Robert E Watson Programmable calculator
US3728689A (en) * 1971-06-21 1973-04-17 Sanders Associates Inc Program branching and register addressing procedures and apparatus
US3762637A (en) * 1971-08-05 1973-10-02 Scm Corp Dual-function keys for sign change and correction of erroneous entries
US3772657A (en) * 1971-11-30 1973-11-13 Mi2 Inc Columbus Magnetic tape data handling system employing dual data block buffers

Also Published As

Publication number Publication date
CA1080854A (en) 1980-07-01
GB1433119A (en) 1976-04-22
US4156918A (en) 1979-05-29
DE2264896A1 (de) 1975-05-22
US4159525A (en) 1979-06-26
CA1080853A (en) 1980-07-01
US4152770A (en) 1979-05-01
CA1080855A (en) 1980-07-01
FR2169828A1 (de) 1973-09-14
US4156282A (en) 1979-05-22
ZA728874B (en) 1974-07-31
US4152773A (en) 1979-05-01
IT972350B (it) 1974-05-20
US4156917A (en) 1979-05-29
US4164019A (en) 1979-08-07
US4158231A (en) 1979-06-12
DE2264898A1 (de) 1975-07-24
JPS4873042A (de) 1973-10-02
US4158228A (en) 1979-06-12
FR2169828B1 (de) 1983-06-03
CA1080852A (en) 1980-07-01
US4164039A (en) 1979-08-07
CH588120A5 (de) 1977-05-31
US4158233A (en) 1979-06-12
GB1433120A (en) 1976-04-22
JPS57538B2 (de) 1982-01-07
HK67878A (en) 1978-12-01
GB1433118A (en) 1976-04-22
US3839630A (en) 1974-10-01
US4152774A (en) 1979-05-01
US4152769A (en) 1979-05-01
DE2264897A1 (de) 1975-04-24
CA1054257A (en) 1979-05-08
US4156285A (en) 1979-05-22
GB1433117A (en) 1976-04-22
US4152771A (en) 1979-05-01

Similar Documents

Publication Publication Date Title
DE2262725A1 (de) Programmierbarer elektronischer rechner
DE2903349C2 (de) Prozessor und Verfahren zur Datenverarbeitung
DE2357003C2 (de) Prozessor für eine Mehrprogramm-Datenverarbeitungsanlage
DE2228742A1 (de) Programmierbare Rechenmaschine
DE1813916B2 (de) Elektronische Datenverarbeitungsanlage
DE1499175A1 (de) Digitalrechner-Datenverarbeitungszentralanlage
DE2517276A1 (de) Datenverarbeitungssystem
DE2910839A1 (de) Einrichtung zur ausfuehrung einer speziellen verzweigungsinstruktion
DE1929010A1 (de) Modular aufgebautes Datenverarbeitungssystem
DE2459956A1 (de) Prozessor und diesen verwendendes peripheres verarbeitungssystem
DE2333908A1 (de) Programmierbarer rechner
DE3043653A1 (de) Datenverarbeitungsanlage
DE3347644A1 (de) Grafikanzeigeeinrichtung
DE1956460C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE3243502C2 (de)
DE2641971A1 (de) Digitale tisch-buchungs- und -rechenmaschine
DE1549420A1 (de) Programmvorrichtung fuer einen elektronischen Rechner
DE1474080B2 (de) Einrichtung zum bilden des exponenten bei umwandeln einer binaerzahl von der festpunkt in die gleitpunktdarstellung
Pocklington AMAP-A General Optical Mark Reader Form Evaluation Program
DE2753621A1 (de) Verfahren und anordnung zur durchfuehrung einer datenuebertragung zwischen prozessoren eines datenverarbeitungssystems
Steensgaard-Madsen Comments on a Draft Pascal Standard
DE1474095C (de) Programmgesteuerte Datenverarbeitungs anlage
DE2760416C2 (de) Verzweigungssteueranordnung für eine elektronische Datenverarbeitungsanordnung
DE10105729C1 (de) Verfahren und System zur funktionsmäßigen Erweiterung einer Telekommunikationsanlage
Srinivasa Rao Lectures on Elements of Fortran Programming [MatSciRep: 68]