DE2633151A1 - Programmierbarer elektronischer rechner - Google Patents

Programmierbarer elektronischer rechner

Info

Publication number
DE2633151A1
DE2633151A1 DE19762633151 DE2633151A DE2633151A1 DE 2633151 A1 DE2633151 A1 DE 2633151A1 DE 19762633151 DE19762633151 DE 19762633151 DE 2633151 A DE2633151 A DE 2633151A DE 2633151 A1 DE2633151 A1 DE 2633151A1
Authority
DE
Germany
Prior art keywords
memory
computer
lda
program
sta
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.)
Withdrawn
Application number
DE19762633151
Other languages
English (en)
Inventor
Douglas M Clifford
Marl D Godfrey
Franklin T Hickenlooper
Rex L James
John C Keith
Bradley W Miller
Allen C Mortenson
David C Uhlrich
Robert E Watson
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 DE2633151A1 publication Critical patent/DE2633151A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Record Information Processing For Printing (AREA)

Description

Int. Az.: Case 993
Hewlett-Packard Company
PROGRAMMIERBARER ELEKTRONISCHER RECHNER
Die vorliegende Erfindung bezieht sich auf einen programmierbaren elektronischen Rechner, der sowohl von einem Tastenfeld aus als auch durch ein Programm gesteuert werden kann, welches vom Tastenfeld oder von einem externen Magnetspeicher aus in den Rechner eingegeben wurde.
Viele bekannte programmierbare Rechner haben schrittorientierte Speicher, bei denen der Transfer von bedingten oder unbedingten Transferanweisungen mittels absoluten Schrittreferenzen erfolgt. Bei diesen schrittorientierten Rechnern sind die ausgegebenen gedruckten Programmlisten schwer zu lesen, da syntaktisch eine einzelne Anweisung darstellende Information durch Betätigung verschiedener Tasten erzeugt wird und in ähnlicher Weise auch aufgelistet wird, indem die jeder Taste zugeordnete Information in einer gesonderten Zeile gedruckt wird.
Auch die Komplexität der mit konventionellen programmierbaren Rechnern noch lösbaren Probleme ist begrenzt wegen der begrenzten Speicherkapazität. Manche bekannte Rechner benutzen zwar Magnetband-Speichereinheiten, in denen Programm-•segmente und Daten für den Gebrauch während der Ausführung eines Programms speicherbar sind, wodurch die Kapazität des Lese/Schreib-Speichers des Rechners effektiv erhöht wird. Wegen der relativ langen Zugriffszeit sind solche Magnetbandspeicher-Systeme jedoch von begrenztem Nutzen.
709808/1025
Konventionelle programmierbare Rechner der unteren Preisklasse bieten für den Benutzer ein Kommunikationsproblem, das darin besteht, daß der Ausgabedrucker nicht die Fähigkeit des alphanumerischen Drucks mit vollem Format hat. Bei solchen Rechnern wäre es zum Beispiel von Vorteil, einen billigen thermischen Drucker vorzusehen, der entsprechend einem vom Benutzer vorgegebenen Format eine Vielzahl von Zeichen und numerischen Daten drucken kann.
Konventionelle programmierbare Rechner gehen nach dem Einschalten der Stromzufuhr in einen Wartezustand, worauf der Benutzer vom Tastenfeld aus oder von einer Magnetbandkassette aus ein Programm zur Ausführung durch den Rechner in diesen eingeben kann. Dieses System ist insofern von Nachteil, als es vom Benutzer beträchtliche Kenntnisse über den Betrieb des Rechners fordert. Es wäre vorteilhaft, einen programmierbaren Rechner vorzusehen, der automatisch auf das Einschalten der Netzspannung hin ein Programm von einem externen Magnetband in den internen Speicher lädt und dies anschließend automatisch ausführt.
Der erfindungsgemäße Rechner hat u.a. den Vorteil, daß errs eine Magnetband-Kassetteneinheit für die Speicherung eines Programms aufweist, wobei der Benutzer eine Betriebsart für automatischen Start wählen kann, in welcher nach Einschalten des Rechners automatisch von der Magnetband-Kassetteneinheit ein Programm in den Rechner geladen wird und dieses sodann ausgeführt wird.
Der erfindungsgemäße Rechner kann automatisch Adressen justieren, die in absoluten Verzweigungsanweisungen vorgegeben sind, entsprechend jeder Programmüberarbeitung durch den Benutzer .
Der erfin*aspg«näße Rechner ist an einen X-Y-Schreiber anschließbar, wobei am Rechner Tasten vorgesehen sind, mit
709808/1025
denen der Schreibstift des Schreibers zu einem gewünschten Punkt bewegbar ist, wobei am Rechner die Koordinaten dieses Punktes ablesbar sind.
Der erfindungsgemäße Rechner besitzt einen Lese/Schreibspeicher mit einer beweglichen Grenze zwischen einem Programmspeicher-Abschnitt und einem Datenspeicher-Abschnitt des Speichers, wobei die Lage dieser Grenze durch den Benutzer definierbar ist.
Beim erfindungsgemäßen Rechner enthält der Lese/Schreibspeicher für den Benutzer einen Programmspeicher-Abschnitt und einen davon getrennten Datenspeicher-Abschnitt, und es ist dafür gesorgt, daß der Benutzer keine Programminformation in den Datenspeicher-Abschnitt einschreiben kann bzw. umgekehrt.
Beim erfindungsgemäßen Rechner wird die umgekehrte polnische Notation verwendet, wobei bestimmte Kombinationen von Tastenbetätigungen einer einzigen internen Instruktion zugeordnet sind.
Beim erfindungsgemäßen Rechner lassen sich die im Speicher enthaltenen Programme mittels eines Druckers in mehr als einer Spalte auflisten, so daß das Druckpapier besser ausgenützt wird.
Beim erfindungsgemäßen Rechner wird eine Zweispur-Magnetbandkassetteneinheit benutzt, und die Spezifikation aller Dateien auf dem Magnetband enthält eine Spurangabe.
Die Tastenfeld-Eingabeeinheit enthält eine Gruppe von numerischen Datentasten für die Eingabe von Daten in den Rechner, eine Gruppe von Datenmanipuliertasten, eine Gruppe von Funktionstasten für die Auswahl verschiedener mathematischer Funktionen und Operatoren, einer Gruppe von Speichersteuertasten für die Steuerung der Programm- und Datenspeicherbereiche des Rechnerspeichers, eine weitere Gruppe von Steuertasten für die Steuerung des Betriebs der Lese- und Aufnahmeeinheit für die
709808/1025
Magnetbandkassette sowie eine Gruppe von vom Benutzer in ihrer Bedeutung definierbaren Tasten. Viele dieser Gruppen von Tasten sind sowohl im manuellen Betrieb als auch im Programmbetrieb des Rechners nützlich. Außerdem nimmt jede vom Benutzer definierbare Taste während der Programmeingabe eine zweite Bedeutung an, wodurch automatisch Funktionen bereitgestellt werden, die unnötig sind, wenn Befehle manuell vom Tastenfeld aus ausgeführt werden.
Die Lese- und Aufnahmeeinheit für die Magnetband-Kassette enthält einen Lese/Schreibkopf, einen Antriebsmechanismus für das Magnetband und Lese- und Aufnähmeschaltungen, die mit dem Lese- und Aufnahmekopf verbunden sind und zwischen Magnetband und Rechner in beiden Richtungen Information übertragen, entsprechend Tastenfeldbefehlen oder gespeicherten Programmbefehlen. Die Magnetband-Kassetteneinheit ermöglicht es dem Benutzer, verschiedene Programmsegmente miteinander zu verketten und ermöglicht die Programmmanipulation verschiedener Datenblöcke auf individueller Basis, wodurch der verfügbare Speicherraum wirksamer genutzt werden kann.
Die Speichereinheit enthält einen modularen Lese-/Schreibspeicher mit wahlfreiem Zugriff, der einen festgelegten Systembereich und einen gesonderten Benutzerbereich für die Speicherung von Programmanweisungen und/oder Daten aufweist. Der Benutzerbereich des Lese-/Schreibspeichers läßt sich ohne Vergrößerung der Außenabmessungen des Rechners durch Einfügung von Lese-/Schreibspeichermodulen vergrößern. Der zusätzliche für den Benutzer verfügbar gemachte Lese-/Schreibspeicher wird vom Rechner automatisch angepaßt.
Die Speichereinheit enthält auch einen modularen Festwertspeicher, in welchem Routinen und Subroutinen aus Assemblersprache-Instruktionen für die Durchführung der- verschiedenen Funktionen des Rechners gespeichert sind. Die im Festwertspeicher (ROM) gespeicherten Routinen und Subroutinen können
709808/1025
erweitert werden ^ um Routinen zu schaffen, die für den Anschluß verschiedener peripherer Eingabe/Ausgabe-Einheiten .an den Rechner erforderlich sind und um einige zusätzliche Funktionen entsprechend den speziellen Bedürfnissen des Benutzers bereitzustellen. Dies wird einfach dadurch erreicht■, daß zusätzliche Festwertspeicher-Einsteckmodule in einen oder beide von zwei Aufnahmevorrichtungen auf der Rückseite des Rechnergehäuses eingesteckt werden. Die zusätzlichen Festwertspeicher-Module werden vom Rechner automatisch angepaßt und über eine Serie von Äuswahlkodes wird Zügriff zu ihnen genommen.
Einsteck-ROMs können zum Beispiel ein Schreiber-ROM/ ein Schreibmaschinensteuer-ROM, ein allgemeines Eingabe/Ausgabe-ROM, ein binärkodiertes De'zimal^Eingabe/Ausgabe-ROM und ein ASCIi-Sammelschienen-ROM sein. Zusätzliche Festwertspeicher-Module können innerhalb des Rechners auf einer gedruckten Schaltungsplatte eingesetzt werden, um zu ermöglichen, daß der thermische iG-ZeichenHDrucker und eine Ausgabe-Schreibmaschine Zeichen fremder Sprachen drucken können, sofern der entsprechende Zeichensatz vorhanden ist.
Die Gasentladungs-Anzeigeeinheit hat eine numerische Ausgabe für 16 Zeichen mit jeweils sieben Segmenten zuzüglich Minus-* Vorzeichen, Dezimalpunkt und die Fähigkeit, an ausgewählten Plätzen innerhalb der angezeigten Daten, Kommas anzuzeigen.
Der thermische 16-Zeichen-Drucker kann Nachrichten für den Benutzer ausdrucken, zum Beispiel Fehlerbedingungen, Programmlisten sowie alle anderen vom Benutzer ausgewählten Nachrichten, die sich aus dem verfügbaren Zeichensatz bilden lassen. Einige alphanumerische Formatbildungen können auch beim Ausdruck einer einzelnen Informationszeile erzielt werden,
Ein peripherer Interface-Adapter (PIA) arbeitet mit der zentralen Verarbeitungseinheit (CPU) des Rechners zusammen und hat eine duale parallele 8-Bit-Eingabe/Ausgabe mit zuge-
709808/1025
ordneter Hinweismarke/ Steuerung, Rückmeldung und Unterbrechungs-Hardware, wodurch der CPU eine Kommunikation mit den oben genannten internen Eingabe/Aüsgabe-Einheiten ermöglicht wird, nämlich Tastenfeld, Drucker, Anzeige und Magnetbandkassette. Mittels des PIA kann der Rechner auch mit einer Vielzahl von externen oder peripheren Eingabe/ Ausgabe-Einheiten zusammenwirken, zum Beispiel Papierbandlesern und -löchern, X-Y-Schreibern, Schreibmaschinen und verschiedenen Arten von Meßwert- und Datenaufnehmern. Diese externe Eingabe/Ausgabe-Fähigkeit ist für den Benutzer über einen oder beide von zwei Eingabe/Ausgabe-Anschlüssen verfügbar, welche sich in der Rückwand des Rechners befinden und über die die externe Eingabe/Ausgabe-Einheit mit dem PIA über eine Eingabe/Ausgabe-Interfaceschaltung verbindbar ist.
Die CPU kann zum Beispiel ein 8-Bit-Parallelprozessor mit einer Taktfrequenz von 1 MHz und einer Adressierbarkeit von 65 K sein. Dieser Prozessor enthält zwei 8-Bit-Akkumulatoren, ein 16-Bit-Indexregister, eine 16-Bit-Stapelhinweismarke und ein 6-Bit-Bedingungskode-Register.
Im Laufbetrieb wird der Rechner durch Tastenkodes gesteuert, die sequentiell von der Tastenfeld-Eingabe-Einheit entsprechend Tastenbetätigung durch den Benutzer empfangen werden. Diese Tastenkodes werden innerhalb des Rechners unmittelbar nach Empfang überprüft und auf richtige syntaktische Bedeutung überwacht, wie sie von der Rechnerspräche benötigt wird. Ein interner Anweisungskode wird durch den Rechner aus diesen Tastenkodes erzeugt, um die vom Benutzer gewünschte Tastenfeldinstruktion darzustellen. Dieser Anweisungskode wird dann als eine Hinweismarke auf die Adresse der im Festwertspeicher enthaltenen Routine benutzt, welche für die Ausführung der ausgewählten Anweisung verantwortlich ist.
Im Programmbetrieb werden die vom Rechner während der Programmeingabe erzeugten internen Anweisungskodes im Programmspeicherbereich des Lese/Schreibspeichers des Benutzers an der Adresse
709808/1025
gespeichert, die durch den jeweiligen Wert einer Benutzerprogramm-Hinweismarke spezifiziert ist. Diese gespeicherten Anweisungen bilden ein Programm, das automatisch auf Anforderung durch den Benutzer ausgeführt werden kann. Während der Programmeingabe kann dem Ausgabedrucker über einen Schalter auf dem Tastenfeld der Befehl gegeben werden, eine gedruckte Liste der vom Benutzer ausgewählten Tastenfeldbefehle zusammen mit den entsprechenden Programmadressen, bei denen der zugeordnete interne Instruktionskode gespeichert wird, zu drucken. Da verschiedene Tastenbetätigungen innerhalb des Rechners zur Erzeugung eines einzigen internen Instruktionskodes führen können und da der Rechner nur diese internen Instruktionskodes ausführt, kann ein komplexes gespeichertes Programm durch den Rechner sehr wirkungsvoll ausgeführt werden, und zwar in einer kurzen Zeit.
Vom Benutzer läßt sich mittels eines Schalters ein automatischer Startbetrieb einschalten, bei dem in den Rechner automatisch ein Programm eingegeben und vom Rechner ausgeführt wird. Dieses Merkmal erlaubt die Benutzung des Rechners durch Personen, die mit Details seines Betriebes nicht vertraut sind und stellt eine Einrichtung zur Wiederherstellung des Rechners auf die Arbeitsbedingungen dar, für den Fall, daß ein Stromausfall auftritt, während der Rechner unbeaufsichtigt oder von einem unerfahrenen Benutzer beaufsichtigt ist.
Die Erfindung wird im folgenden anhand eines Ausführungsbeispiels in Verbindung mit der zugehörigen Zeichnung erläutert. In der Zeichnung zeigen:
Fig. 1 eine perspektivische Frontansicht eines programmierbaren Rechners entsprechend der bevorzugten Ausführungsform der Erfindung;
Fig. 2 eine Draufsicht auf das Tastenfeld des Rechners gemäß Fig. 1;
Fig. 3 ein vereinfachtes Blockschaltbild der Hardware des Rechners gemäß Fig. 1;
• 709808/1025
Fig. 4 ein vereinfachtes Blockschaltbild der Firmware des Rechners gemäß Fig. 1;
Fig. 5 ein vereinfachtes Blockschaltbild der ROMs I bis 6 und des Systemsteuer-ROMs aus Fig. 4;
Fig. 6 eine Gesamtspeichertabelle, die den System- und den Benutzer-Lese/Schreibspeicher das Basis- und das wahlweise ROM und das Einsteck-I/O-ROM der Fig. 3 und 4 zeigt;
Fig. 7 eine detaillierte Speichertabelle des System-Lese/ Schreibspeichers gemäß Fig. 3, 4 und 6;
Fig. 8 eine detaillierte Speichertabelle des Benutzer-Lese/ Schreibspeichers gemäß Fig. 3, 4 und 6;
Fig. 9 ein Blockschaltbild eines Teils der Schaltung, welche der Magnetband-Kassetteneinheit aus Fig. 3 zugeordnet ist;
Fig. 10 ein Blockschaltbild eines anderen Teils der Schaltung, die der Magnetband-Kassetteneinheit aus Fig. 3 zugeordnet ist;
Fig. 11 ein detailliertes Schaltbild der Filter-, Richtungserfassungs- und Klemmschaltungen aus Fig. 9;
Fig. 12 ein detailliertes Schaltbild der Spannungsverstärkungsund Stromverstärkungsschaltungen aus Fig. 9;
Fig. 13 ein Flußdiagramm einer Netzeinschaltroutine, die eine der Überwachungsroutinen gemäß Fig. 4 enthält; und
Fig. 14 bis 26 Flußdiagramme für die Programmlistenroutine, die im ROM 4 in Fig. 5 gespeichert ist.
Allgemeine Beschreibung
In Fig. 1 ist ein programmierbarer Rechner dargestellt, der ein Tastenfeld 10 zur Eingabe von Information in den Rechner und zur Steuerung des Rechnerbetriebes sowie eine Magnetband-Kassetteneinheit 12 zur Aufnahme von im Rechner gespeicherter Information auf eine oder mehrere externe Magnetband-Kassetten und zur Ladung von auf solchen Magnetband-Kassetten gespeicherter Information in den Rechner aufweist. Der Rechner weist
709808/1025
außerdem eine Anzeige 14 für die Wiedergabe von in den Rechner eingegebenen Daten, Ergebnisse von Rechnungen und ausgewählte alphanumerische Nachrichten auf. Weiterhin enthält der Rechner einen alphanumerischen thermischen 16-Spalten-Drucker 16 zum Drucken von Rechenergebnissen, •Programmlisten, vom Rechnersystem und dem Benutzer erzeugten Nachrichten sowie von Fehlerbedingungen, die während des Gebrauchs des Rechners angetroffen werden. Alle diese Eingabe/Ausgabe-Einheiten (I/O) sind im Rechner selbst enthalten.
Der Gesamtbetrieb der Rechner-Hardware läßt sich anhand des Blockdiagramms gemäß Fig. 3 erkennen. Die Hardware enthält eine zentrale Verarbeitungseinheit (CPU) 100, einen Basis-Lese/Schreibspeicher 102, einen wahlweisen Lese/Schreibspeicher 103, einen Basis-Festwertspeicher 104, einen wahlweisen Festwertspeicher 105 und ein wahlweises Einsteck-I/O-ROM 110. Die unterstützende Hardware für die CPU 100 und die oben aufgeführten Speicher enthält einen Taktgenerator und -teiler 112, eine Zyklus-ünterdrückungsschaltung 114 sowie eine Adressen-und Chip-Auswahlschaltung 116. Weiterhin sind eine Anzeigeschaltung 118, ein thermischer Drucker 120, ein Tastenfeld 122, eine Magnetband-Kassetteneinheit 124, eine System-I/O-Schaltung 126, ein peripherer Interface-Adapter (PIA) 106, eine periphere Steuerausfall-Einheit für das System sowie ein Eingabepuffer 130 vorhanden. Die CPU 100 kann einen handelsüblichen Mikroprozessor aufweisen. Die CPU 100 ist mit dem Basis-Lese/Schreibspeicher 102, dem wahlweisen Lese/Schreibspeicher 103, dem Basis-Festwertspeicher 104, dem wahlweisen Festwertspeicher 105 und dem PIA 106 über eine Instruktions-Datensammelschiene 108 für 8 Bits, zwei Richtungen und drei Zustände zusammengeschaltet. Die CPU 100 kann über eine 16-Bit-Adressen-Sammelschiene 64K des Speichers direkt adressieren. Da der Rechner jedoch nur einen adressierbaren Speicher von 32 K aufweist, ist eine 15-Bit-Adressensammelschiene 110 vorgesehen. Ein erster
709808/1025
-to -
Unterbrechungszugang IRQ an der CPU 100 wird vom Tastenfeld 122 benutzt, während ein zweiter Unterbrechungszugang NMI von der Magnetband-Kassetteneinheit 124 über den PIA 106 benutzt wird. Zwei Taktphasen und Instruktions/Daten-Synchronisation auf der Sammelschiene 108 werden für die CPU 100 für den dynamischen Betrieb benötigt.
Das Basis-ROM 104 und das wahlweise ROM 105 enthalten die Firmware, die für die Bereitstellung von Daten und Instruktionen für die CPU 100 erforderlich ist. Diese beiden ROMs haben 16 384 Bits organisiert als 2 048 χ 8. Für die Ingangsetzung des Zugriffs zu einem ROM ist die Koinzidenz zweier Signale erforderlich. Zunächst wird die Adressensammelschiene 110 dekodiert, um ein ROM-Ausfallsignal zu erhalten. Dann wird ein mit einem phasenrichtigen Taktsignal φ2 synchronisiertes Speicher-Startsignal erzeugt, wodurch eine Gruppe von Puffern mit drei Zuständen innerhalb des ROMs synchronisiert werden und die Freigabe der Information, zu der Zugriff genommen wurde, auf die Instruktions/Daten-Sammelschiene 108 erlaubt wird. Ein oder zwei wahlweise Einsteck-I/O-ROMs 110 können in den Rechner eingeschoben werden, um zusätzliche Firmware für die Ansteuerung peripherer Eingabe/Ausgabe-Einheiten bereitzustellen. Zu diesen Einsteck-I/O-ROMs wird vom Rechner über ein gepuffertes Eingangstor Zugriff genommen, welches auch als Multiplexer für die Daten von peripheren Eingabe/Ausgabe-Einheiten auf die Instruktionsdaten-Sammelschiene 108 dient.
Der Basis-Lese/Schreibspeicher 102 und der wahlweise Lese/ Schreibspeicher 103 enthalten statische NMOS-Speicher für wahlfreien Zugriff (RAMs), die 256 χ 4 organisiert sind. Der Basis-Lese/Schreibspeicher 102 des Rechners enthält einen 256 χ 8-Basisseitenanteil, der vom Rechnersystem benutzt wird, sowie einen 512 χ 8-Benutzeranteil, der für Programmund Datenspeicherung verfügbar ist. Der Basisseiten-Anteil bzw. der System-Lese/Schreibspeicher wird von der Rechner-Firmware als "Notizblock"-Speicher benutzt. Der wahlweise
709808/1025
Lese/Schreibspeicher 103 kann in den Rechner eingefügt werden, um den Benutzeranteil des Basis-Lese/Schreibspeichers 102 um 1 536 Programmschritte zu erhöhen.
Daten werden zwischen der CPU 100 und den verschiedenen Eingabe/Ausgabeeinheiten während Lese- und Schreibzyklen der CPU an vorgegebenen Speicherplätzen übertragen. Um den Vorteil des schnellsten Instruktions-Adressierbetriebs der CPU 100 zu nutzen, werden vier Plätze innerhalb des Basisseiten-Anteils des Basis-Lese/Schreibspeichers 102 für den Transfer von Daten zum und von dem PIA 106 benutzt. Zwei andere Plätze auf der Basisseite werden für die Eingabe von Daten über den Puffer 130 von den verschiedenen internen und peripheren Eingabe/Ausgabeeinheiten zur Sammelschiene 108 benutzt. Der PIA 106 gibt 12 Datenbits auf einer Sammelschiene 132 und vier Steuerbits auf einer Sammelschiene 134 aus. Der PIA stellt auch vier Rückmeldungsleitungen auf einer Sammelschiene 136 bereit, über die eine System-Rückmeldung zwischen der CPU 100 und den verschiedenen Eingabe/ Ausgabeeinheiten erfolgt.
Verschiedene Signale, auf die in den folgenden detaillierten Beschreibungen der verschiedenen Hardware-Blocks der Fig. 3 Bezug genommen wird, werden durch die in der folgenden Tabelle dargestellten booleschen Definitionen verdeutlicht.
709808/1025
Leitung Aquxvalenter boolescher Ausdruck •Al
RPIA Α14·Α13·Α12·Α11
RRAM Α14-Α13-Α12Ά11
ADHL RPIA -AlO ·Α9*·Α8" GELÖSCHT DURCH CYST
SCHREIBEN + φ-,
PIA ADHL · ÄT ·Α6 *Ä5 · AT* ÄT'Ä2 Il
IND ADHL·Α7·Α6·Α5·A4·A3'Α2 Il
CSTNOT PIA + IND Il
STMl = VMA·φ · MPWO Il
STM2
R8
R7
STMl- Α14 · (Α13+Α12)
STMl-RRAM-AlO-Ä9-Ä8
STMl · RPIA · AlO · Α9 ♦ Α8
Il
RS STMl · RPIA -AlO- Α9· Ä8" Il
R5 STMl -RPIA'AIO-ÄJ'AS Il
R4 STMl · RP IA'AIO' Ä9- Ä8 Il
R3 STMl · RPIA- Α10· A9 · A8 Il
R2 STMl · RPIA-AlO ·Α9 ·Α8 Il
Rl STM!· RPIA · Ä1Ö· Ä9 ·Α8
BPC STMl · RPIA-AlO' Ä9- Ä8
RO BPC-CSTNOT
RAM (R8+STM1·RPIA) · CSTNOT
IN IND·BPC+STM2
Tabelle 1
70 9 8 08/1025
Magnetband-Kassetten-Einheit
Der Betrieb der Magnetband-Kassetteneinheit 12 aus Fig. 4 wird nun anhand des detaillierten Blockschaltbildes gemäß Fig. 9 bis 12 beschrieben.
In Fig. 9 ist ein detailliertes Blockschaltbild des Steuersystems für die Motordrehzahl dargestellt, welches in der Magnetband-Kassetteneinheit 12 verwendet wird. Dieses System ist als frequenzstarre elektronische Servo-Schleife aufgebaut, deren Eingangssignal auf ein Referenzeingangssignal eingerastet ist. Das Steuersystem für die Motordrehzahl benutzt den Systemtaktgenerator und -dividierer 112 (siehe auch Fig. 3), um über eine Torschaltung 204 zwei Referenzfrequenzsignale F und F^ zu erzeugen. F ist einem Signal FST zugeordnet, während Ff einem Signal FST zugeordnet ist. F ist ein 62,5 kHz-Signal, das eine Suchgeschwindigkeit des Magnetbandes von ungefähr 1,5 m/s erzeugt. Die Datenübertragung erfolgt bei 25 cm/s unter Benutzung von F.-, einem 10,4 kHz-Signal. Die passende Referenzfrequenz wird in die Servo-Schleife als F unter Steuerung der CPU 100 über eine Leitung D09 der Datenausgangssammelschiene 32 eingegeben.
Ein Servo-Motor 206 ist für den Bandantrieb vorgesehen. Die Bewegung der Antriebswelle wird in eine Rückkopplungs-Frequenzinformation F umgesetzt mittels eines optischen Tachometers 208 mit 1 000 Linien, welches mit der Motorwelle verbunden ist. Die dem optischen Tachometer 208 zugeordnete Schaltung enthält einen Vorverstärker und eine zweite Verstärkerstufe 210. Der Vorverstärker enthält einen Fototransistor, der einen Strom/Spannungswandler ansteuert. Ein verstärktes Analogsignal ATC ist wechselstrommäßig mit einem Spannungsvergleicher gekoppelt, wo-
709808/1025
durch ein TTL-Signal F erzeugt wird. Um sicher zu stellen, daß F- eine saubere Kurvenform hat, wird eine positive Rückkopplung verwendet.
Das Referenzsignal F und das Rückkopplungssignal F.. werden einem Frequenzdetektor 212 zugeführt. Der Frequenzdetektor 212 vergleicht dynamisch F mit F- und erzeugt zwei TTL-Fehlerkorrekturbits Q und Q_. Frequenzkoinzidenz bzw. -abweichung wird auf der Basis der Anstiegsflanken von Fr und F festgestellt. Wenn zwei Anstiegsflanken von F erfaßt werden, ohne daß dazwischen eine Ansteigsflanke von F- auftritt, ist F > F und eine passende Fehlerbedingung wird gesetzt. Entsprechend ist, wenn mehrere Anstiegsflanken von F_ auftreten, ohne daß dazwischen eine Anstiegsflanke von F liegt, F < F-, und eine andere Fehlerbedingung wird gesetzt. So wird die Frequenzkoinzidenz für abwechselnde Anstiegsflanken F und F_ festgestellt. Die AusgangssignaIe des Frequenzdetektors werden allein auf der Basis von Frequenzdaten erzeugt und aufrechterhalten, unabhängig von der Phaseninformation. Eine Zusammenfassung der möglichen Kombinationen von logischen Zuständen von Q und Q zusammen mit erläuternder Information ist in Tabelle 2 gegeben. Im vorliegenden Ausführungsbeispiel sind dabei die Logikpegel so gewählt, daß eine logische Null £0,4 Volt und eine logische Eins J£2,4 Volt entspricht.
Q Q- Erläuterung
0 0 F=F; zur Feststellung der
Frequenzabweichung wird mehr Information benötigt
1 0 Fr > F
f f 1 1 Bedingung ohne Bedeutung
0 1 Fr r Ff
Tabelle 2
709808/1025
Die Magnetband-Kassetteneinheit 12 erlaubt eine Bandbewegung in beiden Richtungen. Die Bandrichtung wird durch eine Leitung DO10 der Datenausgabe-Sammelschiene 132 spezifiziert. Ein Signal DO10 bedeutet eine Bandbewegung in Vorwärtsrichtung, während sein Komplement die entgegengesetzte Bandbewegung angibt. Die Leitung DO10 gibt Q und Q_ im Multiplexverfahren auf ausgewählte Leitungen aus einer Anzahl von Steuerleitungen, die einem Multiplexer 214 zugeordnet sind. Eine Leitung FWD koppelt Q an eine Quellensteuerungs-Eingangsleitung SRC und Qf an eine Senkensteuerungs-Eingangsleitung SNK. Eine Leitung REV gibt Q und Q- auf die Leitung SNK bzw. SRC. Die Leitungen SRC und SNK sind Steuereingänge für eine zweiseitige Stromquelle 216. Die zweiseitige Stromquelle 216 gibt auf die Bedingung hin, daß die Leitung SRC logisch 1 und die Leitung SNK logisch O ist, Strom auf eine Leitung OA in ein Filter 218. Wenn die Leitungen SRC und SNK beide logisch Null sind, wird keine Korrektur veranlaßt, da Frequenzkoinzidenz vorliegt. Unter dieser Bedingung bringt die Leitung OA den Ausgang der zweiseitigen Stromquelle 216 in einen Dreizustands-Betrieb, und eine Leitung TRIST wird auf logisch Eins gesetzt. Der Dreizustandsbetrieb gilt auch für die Bedingung, bei denen die Leitungen SRC und SNK beide logisch Eins sind.
Die Hauptaufgabe des Filters 218, der zusammen mit einer Richtungsfühlerschaltung 224 und einer Klemmschaltung 226 detailliert in Fig. 11 dargestellt ist, besteht darin, aus den Fehler-Stromsignalen auf Leitung OA Rauschen und Komponenten hoher Frequenz zu· entfernen. Es ist auch wichtig für die Bestimmung der Stabilität und das dynamische Verhalten der Servo-Schleife. Die zweiseitige Stromquelle lädt und entlädt die Kondensatoren im Filter 218, wodurch ein dynamisches Spannungs signal entsteht, das der Richtungs fühler schaltung 214 zugeführt wird. Dieses Signal vervollständigt eine Digital/ Analog-ümwandlung vom Frequenzdetektor 212.
709808/1025
Das analoge Steuersignal auf der Leitung OA wird verstärkt und gepuffert durch einen Operationsverstärker, der eine Spannungsverstärkerschaltung 228 enthält, die in Fig. 12 detailliert dargestellt ist. Die Spannungsverstärker-Schaltung 128 steuert eine Stromverstärkerschaltung 230 des B-Typs an, durch welche der Servo-Motor 206 versorgt wird. Der Servo-Motor 206 kann ein Permanentmagnet-Gleichstrommotor sein. Ein Kondensator 232 von 1 inF ist zu den Motorklemmen parallel geschaltet, um zu verhindern, daß Bürstenstörungen auf das geerdete Motorgehäuse gelangen können.
Der Betrieb des Motordrehzahl-Steuersystems kann in einen Beschleunigungsbetrieb, einen kontinuierlichen Betrieb und einen Bremsbetrieb eingeteilt werden.
Während des Beschleunigungsbetriebs ist die Servo-Schleife geschlossen, jedoch nicht auf das Referenzfrequenzsignal eingerastet. Um Überbelastung des Bandes, des Servo-Motors, des Netzteils und anderer Komponenten der Magnetband-Kassetten-Einheit zu vermeiden, ist die Verstärkung der Servo-Schleife reduziert. Die Schleifenverstärkung ist direkt proportional zum Wert des Stroms auf der Leitung OA von der zweiseitigen Stromquelle 216. Die Größe dieses Stroms wird durch einen Verstärkungswähler 234 festgelegt. Bevor in den Beschleunigungsbetrieb eingetreten wird, wählt ein Signal vom PIA 106 auf einer STOP-Leitung die Bedingung "niedrige Verstärkung".
Wenn die Servo-Schleife auf die Referenzfrequenz eingerastet ist, ist der Beschleunigungsbetrieb beendet. An diesem Punkt ist es wünschenswert, die Bandbreite der Servo-Schleife durch Erhöhung ihrer Verstärkung zu vergrößern. Die Bedingung "hohe Verstärkung" wird wieder hergestellt, indem eine Leitung 0_ auf ein hohes Spannungsniveau gesetzt wird, was anzeigt, daß Ff> F ist. Die Bedingung "hohe Verstärkung" bleibt solange bestehen, bis der Bremsbetrieb beginnt.
709808/1025
Während des Bremsbetriebes wird wieder die Bedingung "niedrige Verstärkung" gewählt, indem die STOP-Leitung auf ein niedriges Spannungsniveau gesetzt wird. Für ein gesteuertes Abbremsen wird ein in Fig. 38 dargestellter Kodensator 240 abgetastet, um festzustellen, ob er positiv oder negativ geladen ist, und wird dann linear über die zweiseitige Stromquelle gegen Masse entladen bzw. geladen. Die Richtungsfühlerschaltung 226 erzeugt ein 2-Bit-Ausgangssignal niedriger Leistung FWD und REV , welches TTL-kompatibel ist. Wenn die Spannung am Kondensator 240 größer als + 0,3 Volt ist, ist FWD, = 0 und REV = 0. Wenn die Kondensatorspannung niedriger als - 0,3 Volt ist, ist FWD~A = 1 und REVA = 1. Wenn die Kondensatorspannung zwischen diesen Grenzen liegt, ist FWD = 1 und REV = 0. Wird die Leitung STOP auf logisch Null gesetzt, werden auch Q und Q auf logisch Null gesetzt. Durch diese Bedingung werden auch die Leitungen FWD und REV auf den Multiplexer 214 geschaltet, um die Leitungen SRC und SNK zu steuern. Die zweiseitige Stromquelle 216 wird somit freigegeben, den in Fig. 38 dargestellten Kondensator 240 gegen Erde zu laden oder zu entladen. Wenn die Kondensatorspannung soweit reduziert ist, daß sie im Bereich von +0,3 Volt bis -0,3 Volt liegt, so daß FWD = 1 und REV = 0 ist, wird die Leitung TRIST auf ein hohes Spannungsniveau gesetzt, und der Kondensator 240 wird auf Massepotential gehalten, bis die Stoppleitung heruntergesetzt wird, so daß in den Beschleunigungsbetrieb eingetreten werden kann. Unabhängig von der dem Motor 206 von einer bestimmten Bandkassette entnommenen Leistung während irgendeiner Zeit während des kontinuierlichen Betriebesbleibt der Stoppabstand nahezu konstant. Dies ergibt sich aus der Tatsache, daß eine starke Belastung eine höhere Spannung am Motor für das Einrasten der Servo-Schleife erfordert. Eine höhere Belastung bedeutet überdies, daß der Motor bei einem höheren Spannungspegel stehenbleibt. Daraus ergibt sich, daß das Band nach ungefähr der gleichen Strecke stehenbleibt, unabhängig von Belastung und Spannungspegeln.
Eine Gegenbewegungsschaltung 242 hindert den Motor 206 daran, sich während der Netzeinschalt- und -abschaltzyklen des
709808/10 25
Rechners zu bewegen. Die Bewegung wird solange gehemmt, bis sich eine Leitung MPWO auf logisch Null befindet.
Eine allgemeine Information über die Bandposition wird durch eine Konfiguration von gestanzten Löchern im Magnetband gegeben. Diese Löcher werden durch eine Lochdetektorschaltung 244 erfaßt/ welche grundsätzlich eine Lichtquelle und einen Fototransistor enthält. Der Fototransistor steuert ein passives Tiefpaßfilter an, an welchem die Spannung in Beziehung zu einem festen Schwellwert an den Differenzial-Eingängen eines Operationsverstärkers steht. Der Operationsverstärker ist als Vergleicher mit positiver Rückkopplung aufgebaut, über eine nachgeschaltete logische Schaltung erzeugt der Operationsverstärker ein logisches TTL-kompatibles Signal HOL. Die Leitung HOL, eine Kassetten-Zustandsleitung CIN und eine Aufnahme-Hinderungsleitung WPR werden invertiert und auf Leitungen D12, DlO und DIl der Dateneingabe-Sammelschiene 146 gegeben. Diese Signale werden auf ein Signal CSEN hin durch eine Kassetten-Rückmeldungsschaltung 252 ausgegeben, wenn eine Bandkassette aus der Bandkassetten-Einheit 12 ausgestoßen wird, wird die Leitung CIN auf niedriges Spannungsniveau gesetzt. Wenn im Magnetband ein Loch festgestellt wird, wird die Leitung HOL auf hohes Spannungsniveau gesetzt. Falls beide Bedingungen erfüllt sind, wird ein Signal auf einer Unterbrechungsleitung CBl ausgegeben.
In Fig. 10 ist ein detailliertes Blockdiagramm der Lese/ Aufnahmeschaltung dargestellt, die der Magnetband-Kassetteneinheit 12 zugeordnet ist. Für die Informationsübertragung wird ein Zweispur-Magnetkopf 254 benutzt. Eine Stromquelle mit Schreibschutzschaltung 256 steuert den Magnetkopf 254 an. Eine Aufnahme findet statt, wenn eine der Kopfleitungen von einer offenen Bedingung auf eine niedrige Bedingung geschaltet wird. Von der Stromquelle 256 gelieferter Strom kann dann von der Mittelanzapfung des Magnetkopfes 254 in die ausgewählte Kopfleitung fließen, wodurch in dessen Luft-
709808/1025
spalt ein Magnetfeld aufgebaut wird. Danach wird die zweite Kopfleitung, die der ausgewählten Spur zugeordnet ist, von einer offenen Bedingung auf eine niedrige Bedingung geschaltet. Gleichzeitig kehrt die vorher geschaltete Kopfleitung in die offene Bedingung zurück. Der Strom fließt nun von der Mittelanzapfung in die Kopfleitung, die auf niedrigem Spannungsniveau gehalten wird. Das Feld im Luftspalt wird umgekehrt, und das Magnetband wird mit entgegengesetzter Polarität gesättigt. Eine Flußumkehr bedeutet ein Schreiben auf dem Band. Die Information wird auf das Band dadurch geschrieben, daß abwechselnd niedrige und offene Bedingungen auf den Kopfleitungen erzeugt werden, die einer ausgewählten Spur zugeordnet sind.
Eine Gruppe von Analogschaltern 260 führt die Funktion des Schaltens der Magnetkopfleitungen durch. Eine Leseoperation benutzt die volle Spurbreite des Magnetkopfes 254, um maximale Signalstärke zu erhalten. Die Mittelanzapfung des Kopfes wird nicht benutzt. Die Analogschalter 260 schalten die Magnetkopf-Signale der ausgewählten Spur auf den invertierenden bzw. nicht invertierenden Eingang eines Differential-Vorverstärkers 264. Der Vorverstärker 264 ist als Differentialverstärker ausgebildet,um die Sperrung bei üblichem Betrieb zu maximisieren. Der Verstärkungsfaktor dieses Vorverstärkers ist so eingestellt, daß Differenzen der individuellen Kopfcharakteristiken kompensiert werden. Zuvor auf das Band geschriebene Flußumkehrungen erzeugen Stromumkehrungen im Magnetkopf. Diese Stromumkehrungen erscheinen als positive bzw. negative Spannungsimpulse auf einer Ausgangsleitung AHD des Vorverstärkers 264. Der nominelle Signalpegel auf der Leitung AHD beträgt 136 mV Spitze-Spitze.
Eine zweite Verstärkerstufe 266 mit Filter hat einen zusätzlichen Spannungsverstarkungsfaktor 20 für das Lesesignal. Zur Störsicherung ist ein niederohmiger Eingang vorgesehen. Die Verstärkerstufe 266 ist so aufgebaut, daß sie eine gleiche
709808/1025
Verstärkung für das Signal auf der Leitung AD und für Signale hat, die an einem invertierenden Eingang erscheinen, um die Rückwirkungssperrung bei üblichem Betrieb zu verbessern. Ein Einzelpolfilter von ungefähr 40 kHz sorgt für eine Dämpfung der hohen Frequenzen. Das Signal auf einer Ausgangsleitung AHD2 der Verstärkerstufe 266 beträgt nominell 2,6 Volt Spitze-Spitze.
Das Ausgangssignal der Verstärkerstufe 266 wird einem Integrator 268 zugeführt. Das Ausgangssignal des Integrators 268 wird einem Komparator 286 einmal direkt und andererseits über eine Gleichstrom-Spurschaltung 278 zugeführt. Der Komperator 286 arbeitet grundsätzlich als relativer Null-Durchgangsschalter mit einem TTL-kompatiblen Ausgang.
Ein Frequenz-Verdoppler 288 empfängt das Ausgangssignal des Komparators 286 und gibt ein Signal CAl ab, das dem PIA 106 zugeführt wird.
Firmware des Rechners
Die Arbeitsweise der Firmware des Rechners ergibt sich aus Figuren 4 bis 8, den unten aufgeführten Listen der im Festwertspeicher des Rechners gespeicherten Routinen und Subroutinen sowie aus den Flußdiagrammen dieser Routinen gemäß Figuren 13 bis 26.
In Fig. 4 ist ein vereinfachtes Blockdiagramm der Firmware des Rechners dargestellt. Es sind ROMs 0-6 vorgesehen, die den Basis-Festwertspeicher 104 (Fig. 3) bilden, ein ROM 7, das den wahlweisen Festwertspeicher 105 (Fig. 3) bildet, sowie die beiden I/0-ROMs, die die wahlweisen Einsteck-I/O-ROMs 110 (Fig. 4) bilden.
Das ROM 0, auch als Systemsteuer-ROM bezeichnet, enthält eine Gruppe von Supervisor-Routinen, eine Verbindungstabelle so-
709808/1025
wie Syntaxtabellen, wie in Fig. 5 dargestellt ist. Die ROMs 1-6 enthalten verschiedene ROM-Ausführungsroutinen, wie ebenfalls in Fig. 5 dargestellt ist. Das ROM 7 ist verfügbar für die Speicherung von Routinen und Subroutinen von zusätzlichen Instruktionen, wodurch die Fähigkeiten des Rechners vergrößert werden können. Die wahlweisen Einsteck-I/O-ROMs 1 und 2 (Fig. 4) enthalten Routinen und Subroutinen von Instruktionen für den Anschluß verschiedener peripherer Eingabe/Ausgabe-Einheiten an den Rechner.
Eine detaillierte Liste der Routinen und Subroutinen von Instruktionen, die in den ROMs O und 3-6 enthalten sind zusammen mit einer Liste der Routinen und Subroutinen, die in den beiden typischen Einsteck-I/O-ROMs speicherbar sind, ist weiter unten angegeben. Zusätzlich sind in den Figuren 13 bis 26 detaillierte Flußdiagramme dieser Routinen und Subroutinen gezeigt. Listen der Gleit-Mathematikroutinen (gespeichert in ROM 1) und der mathematischen algorithmischen Routinen (gespeichert in ROM 2) sind nicht angegeben, da diese Routinen allgemein bekannt sind.
In Fig. 6 ist die Zuordnung des gesamten RechnerSpeichers durch hexadezimale Adressen dargestellt.
In Fig. 7 ist ein detailliertes Speicherschema des Basisseiten- oder System-Lese/Schreibanteils des Basis-Lese/ Schreibspeichers 102 (Fig. 4) dargestellt. Diese Basisseite wird für die Speicherung verschiedener Informationsworte benutzt, die von der Rechner-Firmware benutzt werden. Sie enthält einen Zustandsspeicherbereich, der von der Rechner-Firmware benutzt wird, einen Subroutinen-Vektorstapel für die Speicherung von den Benutzer-Subroutinen zugeordneten Rückkehradressen, einen zeitweiligen Lese/Schreib-("Notizblock"-) Speicher , ein vom Rechner und vom Drucker benutztes Pufferregister, einen Arbeitsstapel für den Benutzer mit einem X-, einem Y-, einem Z- und einem T-Register, ein
709808/1025
Tastenfeld-Pufferregister, fünf Datenspeicher-Register A-E für den Benutzer, den Einsteck-I/O-ROMs zugeordnete Hinweismarken, sowie verschiedene andere Hinweismarken, die von der Rechner-Firmware benutzt werden.
Fig. 8 zeigt einen detaillierten Speicherplan des Benutzerteils des Basis-Lese/Schreibspeichers 104 (Fig. 3). Dieser Plan erläutert eine Hinweismarke EOPM, die einen Programmspeicherteil des Benutzer-Speichers von einem Datenspeicherteil abgrenzt. Diese Grenz-Hinweismarke EOPM kann innerhalb des Lese/Schreibspeichers des Benutzers nach Wahl des Benutzers verschoben werden, indem vom Tastenfeld aus oder unter Programmsteuerung eine Instruktion ausgeführt wird, die weiter unten detailliert beschrieben ist. Diese Anordnung führt zu einer wirksameren Nutzung des Speichers, indem sie dem Benutzer erlaubt, die entsprechenden Größen von dessen Programm- und Datenspeicherteilen entsprechend seinen jeweiligen Bedürfnissen einzustellen.
Detaillierte Listen der Routinen und Subroutinen von Instruktionen
Eine komplette Auflistung in Assemblersprache der Routinen und Subroutinen von Instruktionen, die im Rechner verwendet werden, wird nachfolgend gegeben. Die Listen enthalten die in den ROMs 0 und 3-6 gespeicherten Subroutinen sowie alle Routinen und Subroutinen, die in einem Einsteck-I/O-ROM für allgemeine Zwecke und in einem Schreiber-Einsteck-I/O-ROM gespeichert sind. Jede Listenseite ist oben links für sich
(page)
numeriertrwährend sie oben in der Mitte die normale Seitenzahl dieser Beschreibung trägt. Jede Zeile ist einzeln in der ersten Spalte von links numeriert. Diese Numerierung erleichtert die Bezugnahme auf verschiedene Teile der Listen. Es sind auch beschreibende Überschriften vorgesehen, um Routinen, Subroutinen, Gruppen von Konstanten, Verbindungstabellen, Routinen und Subroutinen von Einsteck-I/O-ROMs usw.
709808/1025
zu identifizieren. Jede Instruktion jeder Routine oder Subroutine und jede in den ROMs des Basis-Festwertspeichers oder in den wahlweisen Einsteck-I/O-ROMs gespeicherte Konstante wird in hexadezimaler Form durch 2, 4 oder 6 Zeichen in der dritten und vierten Spalte von links dargestellt. Jede dieser Instruktionen wird detailliert verständlich im Zusammenhang mit der vorveröffentlichten Beschreibung des Mikroprozessors Motorola MC68OO. Die hexadezimale Adresse •des ROM-Platzes, an dem jede dieser Instruktionen oder Konstanten gespeichert ist, ist in der zweiten Spalte von links angegeben. Durch Vergleich der in den Listen für eine bestimmte Instruktion angegebenen hexadezimalen Adresse mit den Adressen, die den verschiedenen in Fig. 5 dargestellten ROMs zugeordnet sind, läßt sich ersehen, in welchem der ROMs 0-6 diese Instruktion gespeichert ist.
Als symbolische Adressen oder Namen dienende Mnemoniketiketten sind in der fünften Spalte von links angegeben. In der sechsten Spalte von links ist ein Mnemonikkode für jede der Instruktionen angegeben. Im Falle daß diese Instruktionen einen Bezug auf einen der beiden Akkumulatoren innerhalb der CPU 100 enthalten, erscheint in der siebten Spalte von links der Buchstabe A oder B, womit der jeweilige Akkumulator bezeichnet ist. Operanden, die entweder Etiketten oder Buchstaben sein können, welche den Instruktionen zugeordnet sind, sind in der achten Spalte von links angegeben. Außerdem sind noch erklärende Kommentare gegeben. Deutsche Übersetzungen der englischsprachigen Texte in den folgenden Tabellen sind im Anschluß an dieser gegeben, jeweils unter Angabe der Tabellenseiten-(nicht Bsschreibungsseiten-) und -zeilen-Nummern.
Auf verschiedene Abschnitte der Listen folgen außerdem Symboltabellen, in denen verschiedene Mnemonik-Etiketten ihren hexadezimalen Werten zugeordnet sind.
709808/1025
--24
Page 1 CJBPG 06/04/75 36:54.05
00215 7FFE 7Π00 0051 OPT ROUTINE LIST.MEM ,NG FD8 A $7800 . POWER FAIL/RESTART VECTOR
00218 1002 NAM POSUP ORG A 57S00 POWER ON BEGINS HE=?E
00219 8E 39 ■OPT LISTiM£M LDS SISTACK INITIALIZE STACK POINTER
00220 «6 03 ORG S7FFE LDA S1002 GET POSSIBLE TEST ROM
00221 Pl ' 1025 CMP A «S39 IS IT THEPE ?
00222 26 FF BNE A NOTEST BRANCH IF N)OT
00223 7E OO AND SUPE1 JMP A 51025 ELSE LET IT HAVE CONTROL
00224 86 02 IS THE POWER-ON SEQUENCE AMD LDA A «SFF ACCA = ALL ONES
00225 97 3C »THE SUPERVISOR FOR CJ STA A ADATA AIO IS NOW ALL OUTPUTS
00226 7FFE 97 Ol ■a- STA A PDATA BIO IS NOW ALL OUTPUTS
00227 7800 86 03 LDA «S3C PR-E0ARE TO SELECT OATi PEGISTERS
00228 7800 97 0000 STA ACTL SELECT ADATA
00229 7βΟ3 97 ZO fns-«e*POWER-ON STA RCTL SELECT BOATA
00230 7806 CE 0020 LDX «0 CLEAR THP ΪΜΟΕΧ
0023! 7803 OF 20 * STX A TP7 SAVE ON BASE PAGE
00232 7B0A 7C 49 »THIS INC A- TP7 INC THE PAGE AORS
00233 7800 DE OO LDX A TP7 RESTORF NEW INDEX
00 234 780F «6 OO NOTEST LDA »»111 GET MEMORY CHECK WORD
00235 7Sl 1 A 7 Fl STA R X STORE IN "SUPPOSEO'' «ΕΜΟΡγ
0 0?36 7313 Al 20 CMP X WAS MEMORY OUT THERE ?
00227 7815 27 OO BEQ MORE BRANCH IF YES
00236 7817 06 LDA TP7 ELSE ACCR=PAoE AO^S QF EMPTY ^iC,
00239 7319 6F 0005 CLR X ERASE ALL OF R/'W
00240 7B1C 09 F3 DEX B
00241 78 IE ac OA MORE CPX R «5 FINISHED YET.?
0 0242 7321 26 BNE R ERASE
00 243 7323 D7 08 STA 8 EOM SAVE END OF WCMORY AD^S
0 0244 7825 5 A 08 OEC B BACK UD ONE PAGE
00245 7827 07 OC STA EOPM AND END OF PRGM MEMORY
00246 7829 C6 08 LDA "soa GET ADSS ON PAGE
00247 7323 07 CO STA EOPW+1 INITIALIZE ALPHA ^EG.
00248 78 20 DE OO LDX EOPM GET CURRENT END POINTER
00249 732F PF ooca ERASE STX A 101 INITIALIZE I/O 1
00250 73 30 OF 06 STX 102 INITIALIZE I/O 2
0 0 251 78 33 7 C 7A26 INC B UPP GENERATE PAGE AOPS
00252 7335 86 10 LOA H «6 LOAD TRACK Λ SEL. CODE
00253 7837 RD 07 JSR B P0TGL1+3 SET CASSETTE TPAC< A
00254 78 3 β C6 02 LDA R XSlO GlT "FIXEO vqDE" RIT
00255 7B3A 07 OE STA A TGL SET TOGGLE WORD
00256 78 3C C6 20 LDA A «2. LOAD DISPLAY POUNO MIJMHEQ
00257 7-ηε 07 08 STA PNO . SAVE IN ROUND WQRO
002SA 7840 96 LDA TP7' ΛΕΤ MSR·S OF POLLING AOORESS
00259 7842 98. ADD »8 BUMP RY ONE ROM
00260 7844
00261 7847
00262 7Q49
00263 73Ä-C
O0P64 784E
00265 7350
00266 7β52
00?67 7H54
00268 7356 IOPOLL
00269
00270
00271
709808/1025
INSPECTED
- 25 Page 2 CJBPG 06/0 4/75 3.6:54.05
00272 7858 97 20 MSGl STA A TP7
00273 785A 81 48 CMP A «S48
00274 785C 27 OC - BEQ NOI02
00275 735E OE 20 LDX TP7
00276 7860 E6 02 LDA B 2fX
00277 7862 Cl 7E CMP B «S7E
00278 78 Λ4 26 EE BNE IOPOLL
00279 7866 AO 02 JSR 2.x
00230 7868 20 EA BRA IOPOLL
00281 7<36A DE OS N0I02 LDX EOPM .
00282 736C OF 54 STX SPGM
00283 786E D6 OC LDA B EOPM+1
00284 7870. 96 08 LDA A EOPM
00285 7872 CO 50' SUB H «80
00286 7874 07 OC STA B EOPM+1
00287 7376 82 OO SBC A #0
00288 7878 97 OB STA A EOPM
00289 787A ■56 06 LDA A error'
00290 787C 26 38 BNE IOERR
00291 787E 86 OC LOA A «se
00292 7880 97 OO STA Δ ΔΟΑΤΑ
00293 7882 96 04 LOA A IMPUT
00294 7884 7F -0000 CLR- AOATA
00295 7887 44. LSR A
00296 7888 25 3F BCS T0P7
00297 788A HO 5075 JSR BLANK
0 0 298 7880 CE 005« LOX «BUFF
002^9 7890 OF 16 STX TP2
00300 7392 CE 788E LDX ffMSGl
00301 7895 80 57BO JSR LOMSG
0 0 302 7898 80 6046 JSR PRTDRV+25
00303 789B FE 7D4C LDX $7D4C
003P4 789E 4F CLR Δ
00305 739F AD OO JSR X
00306 7ÖA1 96 06 LDA A ERROR
00307 78A3 ?7 14 8EO AUTOOK
00308 78A5 RD 5075 JSR PLANK
00309 78 A 8 CE 0058 LDX «BUFF
00310 78 AB OF 16 STX TP2
00311 78AD CE 54D8 LDX <*EMSG + SD8
00312 7SB0 RD 5780 JSR LOMSG ·
00313 7833 BD 6046 JSR PPTCV + 25
00314 7886 7E 7B40 IOERR JHP EPR0R7 ·
00315 7889 C6 QO AUTOOK LDA R «?B0
00316 73B8 7E 7968 JMP EXEC7
00317 78BE 41 FCC /AUTO STA
00318 78C8 80 FCB $80
RESTORE IT
FINISHED YET ?
BRANCH IF YES
ELSE LOAD CIJBRE'NT ROM AORS GET THIRD ROM WORD IS IT A JMP STATEMENT ?
CONTINUE POLLING IF NOT ELSE OFFER INITIALIZATION CONTINUE POLLING GET MODIFIED EOPM SAVE IN SPECIAL PRGM PNTR GET END PNTR
INITIALIZE 10 REGISTERS RESTORE PNTR
POWER-ON I/O ERROR ?
BRANCH IF YES
LOAD TOGGLE S.C, SENO TOGGLE SELECT CODE GET TOGGLE CONDITIONS DISABLE THE I/O TRANSFER SHIFT AUTO-STAPT PIT TO CARRY BRANCH IF NO AUTO START BLANK PRINT BUFFER ELSE GET SUFFER AORS SAVE FOR "LOAD MESSAGE" GET »AUTO START" MESSAGE AORS OO MESSAGE TO BUFFER
PRINT AUTO START GET THE "LOAD *, GO" ADDRESS INITIALIZE ACCA CALL THE CASSFTTE ERDOR GFMERATED ? BRANCH IF ,NOT
BLANK THE BUFFER GET BUFFER AQRS SAVE FOR "LOAD MESSAGE"
GET "FAILED" MESSAGE ADRS DO MESSAGE TO BUFFER PRINT FAILED
OUTPUT T*E SPECIFIC CASSETTE ACCR = 11SUN" INSTRUCTION RUN !·!!!
709808/1025
INSPECTED
α ■
- 26 Page 3 CJRPG 06/04/75 36J54.05
00320 78C9 OE - CC «· - ALPHA ENABLE INTERRUPTS IT7 - B X ERROR OR "OP" CONDITION ?
00321 78CA 4F C6 «■ S0L7 ERR7 ERRO»! GO TO EP.RO=» HANDLER
00322 78C1I 97 Il A Wl RESET ALPHA MODE TSRCH7 GET CURRENT SEARCH TABLE ADRS TPl SAVE TABLE ADDRESS
00323 78CD 97 10 A W2 CLEAR SINGLE OP LOCATIOM TGL BACK STEP KEY ? IT7 GET TARLE STARTING aO«S
00324 78CF 97 13 A DCNTR CLEAR RCD ACC. - " " TSRCH6 BRANCH IF NOT AND SEARCH «MT MAIN TA8LE?
00325 78Dl 97 80 A #0200 CLEAR BCD ACC. BWM ELSE CHECK MODE FIX NO, CONTINUE
00326 7893 97 C7 A S0L7+1 CLEAR PLA=SR DIGIT COUMTER #MT BRANCH IF PRGM MODE B TGL ELSE CHECK MODE
00327 78D5 «6 00C6 A «S0L7 BIT 7=1 ■ T0P7 ELSE DO "OOPS"
00328 7807 97 CA «»»«THE SUPERVISOR FOLLOWS. IT IS THE A . UIP INIT SECOND BYTE X ANY PREFIX KEYS HIT 7 "'
00329 7809 CE 7E00 .»»««CONTROL SECTION FOR THE ENTIRE MACHINE A #MT GET SINGLE OP LOC ADDRESS &TERMN7 BRANCH IF YES AND FORSET T^1EM
00330 78DC DF 03 IT7 PLACE IT IM THE INST CNTR TFND7 PUT T^L ENT^Y INTO ACC3
00331 78DE CE 7A64 » SDISPl GET MAIN TABLE ADDRESS «377 TRL TESMINATOP?
00332 79Ξ1 DF T0P7 CLI SAVE IN INDEX TEMP GO TO "TE=*"INATOR FOUViD"
00333 78E3 9D CLR GO TO DISPLAY DRIVER MFND7 MASK OFF Z VS8'S
00334 STA X MATCH FO'JVD?
00335 STA WAS AVAILABLE» ITS CODE IS RETURNED TW0B7 YES! GO TO »MATCH FOUND"
00336 03 STA 4CCUMULATOR no: continue
00337 OC STA 1 BYTE FOLLOVS
00333 78ES DE OC STA INC INDEX
00339 78E3 Sl 07 LDA A TSRCH7
00340 73EA 26 03 STA
00341 78EC 06 7973 LDX 8 -CONTINUE SEARCHING
00342 7 a Ec 2 R 7E00 STX
00 343 78P0 -7 E Dl LOX » "TBL TERMINATOR FOUND" IS HANDLED HERE
003<*4 73F3 ftC 00 STX »
00345 73F6 26 3D NK7 JSR TFND7 INX
0G345 78F^ E6 OE « B LOA
00347 78 P Λ Cl 3F *" IF A KEY B BMI
00343 73-cC 27 «IN THE A , STX
00349 78FE C4 30 B LDX
00350 7901 Il 00 LDX CPX
00351 7901 27 01 CMP BNE
00352 7903 ftD BNE LDA
00 353 7905 ?A LDA
00354 7907 08 * BMI
00 355 7905 08 EC JMP
0 0 356 7909 08 TSRCH6 CPX
00357 7904 20 BNE
00358 TSRCH7 LDA
00359 CMP
00360 00 BEQ
00361 790C 08 IB AND
00362 790D E6 14 CBA
00363 790- ?R D3 BEQ
00364 7911 OF 7E00 TST
00365 7913 OE OA BPL
00366 7915 ac 07 INX
00367 7913 26 TWOS7 INX
00368 791A 06 INX
00 369 8RA
00370
00371
00372
00373
00374
7 0980 8/102
OfIiQiNAL i^SPEQTID
Page 4 CJ8PG 2A 06/04/75 06 ·■ 02 FIX 36:54 27 -
05
CONTINUE IF RUM MOOE
00 375 791C OE 14 14 BPL FIX ELSE RE-LOAD INDEX
00376 791E 08 00 LDX TPl INCREMENT OVER THE ^UN MQOE
00377 7920 08 03 .INX "OR" CONDITION
00378 7921 20 CC ERR7 INX GET THE NEW TBL AORS
00379 7922 OE 7F BRA FIX+2 RESTORE TBL AORS
00380 7924 EE 06 EJSR7 LOX TPl GET THE NEW TPL AORS
00381 7926 OF 78 40 » LOX X SAVE IN INDEX TEMP
00382 792* 20 STX IT7 CONTINUE SEARCHING
00383 792A C4 BRA TSRCH7 MASK OFF THE "N" BIT "
00384 792C D7 MFND7 AND β «S7F SAVE IN ERROR WORD
00385 792E TE 00 STA β ERROR GO TO ERROR OUTPUT ROUTINE
00386 7930 JMP ERR0R7
00387
00388 IE
00 389 A6
00390 7933 08 OC L7. LDA A X ·
00391 7935 40 3F INX TEST TBL ENTRY
0 0392 7936 2R. 00 TST A BIT 7=1
00393 7937 48 . BMI PARTI7 GET BIT 6 (7=0)
0 0 394 7939 2R ASL A GO TO IMHEDIATF. EXECUTE
00395 793 A 86 03 BMI IMEX7 GET ADRS HI
0 0 396 79 3 C E6 04 LOA A mn GET TBL ENTRY
00 397 793E 58 98 I ME X 7 LDA B X DOUBLE IT .
00398 7940. 4.9 00 ASL 8 SHIFT C INTO MSW
00399 7941 97 C6 CONT ROL A RESTORE MSW
00400 7942 07 C6 . STA A IT7 RESTORE LSW
0 0401 7944 20 07 STA B IT7 + 1 GO GET NEW KEY
00402 7946 E6 16 BRA NK7 GET THE INST CODE
00403 7943 07 4EC8 LDA B X STOPE IN SINGLE OP LOC
00404 794A 06 24 OART17 STA R S0L7 ACCR=THE INSTRUCTION
00405 794C 96 LDA B S0L7 PROGRAM MOOE? "
00406 794E 2A 05 LDA A TGL no: go execute
0 0 407 7950 80 00 8PL EXEC6 ELSE STOPE INSTRUCTION
00408 7952 20 JSR STC0D7 WRAP IT UP !
00^09 Γ955 48 00 PARC07 BRA BWM SIT 6=?
00410 7957 2B C6 ASL A yes: partial cooe operation
0 0411 7958 EE 00 BMI PARCD7 FOR PARTIAL EXECUTION
00412 7 95 A 4F C6 LDX X
00413 795C 6E CLR A DO "PARTIAL EXECUTION"
00414 7950 D6 04 ε χ et 6 JMP X GET SINGLE OP WORO
00415 795F EB 5C31 EXEC 7 LDA R S0L7 AOD THE PARTIAL CODE
00416 7961 07 BE ADD B X RESTORE IT
00417 7963 08 STA B S0L7
00418 7965 20 15 _ INX GO FORM NEW TRL ADRS
00419 7966 RO 8RA L7 AUDIT TRAIL ?
0 0420 7968 «6 14 JSR AUDIT GET PAGE OFFSET AND C
00421 796B 58 14 LDA A «®276 DOUBLE ACCB
00422 7960 07 00 ASL R STORE IM LS WORD
00 423 796E 49 00 STA B TPlS SHIFT IN C
00424 7970 97 00 ROL A RESTORE MS WORD
0 0 425 7971 OE STA A TPl · GET TRL AORS
00426 7973 EE LDX TPl GET ROUTINE AORS
00427 7975 B6 LDX X CLEAR ACCA (BUT MOT C)
0 0428 797 7 AD LOA A *0 GO EXECUTE IT! - "
00429 7979 JSR X
709808/1025
ORiQINAL INSPECTED
Page 5 CJBPG 06/04/75 36:54.05
00430 797B 7F " OOOF BWM CLR B DIGFLG
00431 797E C6 80 LDA B. £!*>20 0
00432 7980 07 OO - STA R STKFLG
00433 7982 06 06 RWM2 LOA ERROR
00434 7984 26 AA BNE EJSP7
00435 7986 DE CA LDX UIP
00436 7988 08 INX
00437 7989 OF CA STX 8 UIP
00438 798B E 6" OO CDA A X
00439 7980 96 C8 LDA A UIP + 1
00440 798F 90 OC SUB A EOPM+1
00441 7991 96 CA LDA A UIP
00442 7993 92 OB SBC EOPM
00^43 7995 2A 15 BPL A MAW
00444 7997 96 09 LDA RSFLG
00445 7999 23 OO BMI A EXEC7
00446 799B 48 ASL
00447 799C· 2A OB BPL A TT7 '
00448 799E 96 12 LDA SFLG
00449 79A0 26 04 BNE A SS
00450 79A2 96 OO LDA STKFLG
0 0 451 79A4 27 C5 BEQ EXEC7
0 0 452 79A6 BD 4800 SS JSR RSEX
00453 79A9 7E 78C9 TT7 JMP R TOP7
00454 79AC C6 07 MAW LDA B H7 '
00455 79AE D7 06 STA ERPOR
00456 79B0 CE 0100 LDX f*256
0.0457 7983 DF CA STX UIP
00458 7985 20 CD BRA BWM2+2
00459
00460
00461
00 462 4flOO RSEX EQU S4800
00463 4EC8 STC0D7 EQU S4EC8
00464 5C31 AUOIT EQU S5C31
CLEAR DIGIT ENTRY FLG MSB=I
ENABLE STACK LIFT GET ERROR WORD' yes; print error get user inst. pointer point to next instruction save the update get the next user instruction check validity of new pointer by doing (uip)-(eopm) · "
ERROR IF INVALID AORS SHOULO WE STOP ? BRANCH IF NOT
GET »ARE DOING» BIT RETURN TO TOP IF STOPPED ELSE GET STEP FLAG BRANCH IF STEPPIMG ELSE CHECK STACK FLAG CONTINUE IF LIFT DISARLED ELSE STOP THE PROGRAM GO BACK TO THE KEYBOARO LOAD ERROR
SAVE IN ERROR LOC.
GET USER STATE 0 RESET INST PNTR PRINT THE ERROR
709808/1025
ORtGiNAL IMSPECTED
Page 6 ejÖPG 06/0 4/75 36:54.05
NAH RDKEY2
OPT . LiSTtMEM
00469 7937 96 00 ο IS THE INTERRUPT SERVICE ROUTINE WILL BE THE KEY WHICH IS ENTERED AT · ' CHANGE DETECTED BETWEEN THERE IS A DIFFERENCE THEN THE ADAfA 3/4/74
00470 7939 8 A IF Sf * TO PROCESS A KEYBOARD INTERRUPT* STORED IN THE BUFFER CURRENT CONDITION OF * (TGL) AND THE CURRENT SETTINGS THE R-REG WHAT BITS CHANGED AND THE «S1F
00471 7938 97- 00 "· ROKEYl « THE KEYCODE FOR LOCATION CBKWRT+Π+BKKC, IF THE * THE TOGGLE SWITCHES IS REAO. * IS CLEARED* IF * NEW SETTINGS ARE STORED IN TGL. ADATA
00472 7930 96 04 * ■ " IS DOWN IS NOT FULL» * IF THERE IS NO * B-REG REFLECTS O INPUT GET CURRENT I/O SELECT
0 0 473 793F 43 * AREA AT ROUTINE SELECT THE KEYBOARD (SAVE CASS.
00474 79C0 44 * BUFFER THEN THE « BRAD MILLER OUTPUT -IT
00475 79Cl 44 -* IF THIS ■» INPUT THE K-EYCODE
00476 79C2 06 00 * RDTGLl «· ADATA INVERT THE BITS
0 0 477 79 C 4 C-4 FO ROKEYl LOA "A #SF0 MOVE THEM TO LSB»S
0 0478 79C6 07 00 ORA A ADATA
00479 79C8 Π 6 D5 STA Δ FLAG GET I/O SELECT
ÖO 480 79CA C5 0 2 LDA A #2 MASK OFF THE KEYPCiPO
0 0 481 79CC 27 19 . COM A N0PE2 DISABLE THE KEYBOARD
00482 79CE Pl 25 LSR A CASSETTE PUNNING ?
00 483 7=00 26 CC LSR A YES3 TEST BIT 1
00484 7902 7r 0 006 LÖA R TPOS BRANCH IF ,NOT
00 485 7905 78 0009 AND '8 PSFLG R/S KEY ?
00486 79OB 7 A 0 009 STA P RSFLG BRANCH IF NOT
00487 7908 7 E 6 IBE LDA B TRNOFF ELSE RESET Ti=E POSITION POINTER
00488 7 99 E Rl OA BIT R «*ΙΛ)12 ZERO TO MS3 OF
00489 79E0 26 12 BEO YESl-I RUN/STOP FLAG
0 0 490 79Ε2 D 6 0 9 CMP A RSFLG TUPN OFF CASSETTE
00491 79E4 2* IE 8NE YES2+3 SET FLAG KEY ?
00492 79Ε6 3P CLR RETURN IF NOT
00493 79Ε7 D6 09 ASL RSFLG PROGRAM RiJ.VMISG ?:
00494 79Ε9 81 25 LSR #1045 BRANCH IF YES
00495 79EB 27 08 JMP YESl ELSE RETURN
00496 79ED «1 OA YES3 CMP A »fa 12 GET THE »UN/STOP FLAG
O0497 79EF ?7 10 BNE YE S 2 RUN/STOP KEY ?
00498 79Fl 58 LOA 8 yes; go process
00499 79 F 2 2A 17 BMI NOPE SET FLAG KEY ?
00500 79F4 33 RTI yes; go process
0050 1 79F5 53 NOPE2 LDA R PROGRAM RUNNIMG ?
00502 CMP A BRANCH IF MOT
00503 BEQ ELSE IGMO»E THE KEY
005Π4 CMP A ZERO TO MS«
00505 BEQ
00506 ASL B
00507 BPL
00503 RTI
00509 YESl ASL B
0 0510
0 0511
00512
00 513
00514
00515
0 0516
OpS 17
00518
00519
00520
00521
7Ö98Ö8/1025
!NSPEGTEO
Page 7 CJBPG 06/04/75 36:54.05
0 0522 00523 00524 00525 00526 00527 00528 00529 0 0530 00531 00532 D0533 00534 00535 00536 00537 00538 00539 00540 00541 0054-2 00543 00544 00545 00546 00547 00548 00549 00550 00551 00552 .00553 00554 00555 00556 00557 00558 00559 00560 00561 00562 00563 00564 00565 00566 00567 00568 00569 00570 00571 00572 00573 00574 00575 00576
79F6 79F7 79F9 79FB 79FD 7A00 7A0L 7A02 7A04 7A06 7A08 7A0A 7A0B 7A0D 7A0F 7A11 7A13 7A15 7A17 7A19 7AlB 7AlD 7AlF 7A20 7A22
7A23 7A24 7A26 7A28 7A2A 7Δ23 7A2E 7A2F 7A31 7A33 7A35 7A36 7A38 7A3A 7A3S 7A3D
54
07 C5 CO 27 7F 0012 3B 50
2A 86 93 08-97 38
81 27 C6 BF 04 D7 D6.B9 Cl OC 27 OE B8 A7 BA 5C
07 B9 38
OF
86 OC 97 OO
96 43
7F 0000
OE
06
C4 IF
84 EO
18
Q6
97 17
D8 39 61BE -
7A3E 7A3F 7A40 06 7A42 C4 FC 7A44 20 EF
7A46
LSR B OF RUN/STOP FLAG
.STA B RSFLG RESTORE NEW FLAG
BIT B «SCO SHOULD WE BUFFER THE KEY
BEQ NOPEl BRANCH IF YES AND BUFFER
CLR SFLG RESET STEP FLAG
RTI ELSE RETURN
YES2 TST B CHECK RUN/STOP FLAG
BPL NOPE CONTINUE IF B7=0
LDA A «S80 PRESET ACCA
EOR A UFLG TOGGLE FLAG 8
STA A UFLG RESTORE THE FLAGS
RTI RETURN FROM THE INTERRUPT
MOPE CMP A «1513 STEP KEY ?
BEQ NOPEl BRANCH IF YES
LDA B tfSBF PRESET ACCB
AND B UFLG CLEAR ENTRY FLAG
STA B UFLG RESTORE FLAGS
NOPEl LDA R 8KWRT+1 LOAD WRITE POINTER
CMP B #12 IS BUFFER FULL ?
BEQ PDKEY3 YES» IGNORE KEY AND RETURN
LDX BKWRT NO»LOAD WRITE POINTER
STA A BKKCX STORE KEYCOOE IN NEXT LOCATION
INC B INCREMENT WRITE POINTER FoP NEXT
STA B RKWRT+1 STORE UPDATED WRITE POINTER
R0KEY3 RTI RETURN FROM- INTERRUPT
* TOGGLE SWITCHES ARE READ HERE
RDTGLl SEI
LOA A a$C
STA A AOATA
LOA A INPUT
COM A
CLR AOATA
CLI
LDA R TGL
AND B SSlF
AND A f*«EO
ROT ABA
LDA B TGL STA A TGL T8A
EOR B TGL • RTS
TRNOFF EQU S61BE DISABLE IMTERPUPTS
LOAD TOGGLE SELECT CODE
OUTPUT THE SELECT CODE
INPUT THE TOGGLE CONDITIONS
INVERT THE BITS
DISABLE THE I/O TRANSFER
RE-ENABLE INTERRUPTS
LOAD OLD CONiOITIONS
MASK OFF TRIG AND FORMiT
MASK OFF AUTO-STAPT ANO FORMAT
COMRINE NEW WORD
GET OLD CONDITIONS
STORE THE NEW CONO IT IONS
SAVE OLO CONDITIONS
ACCb=CHANGEO BITS
RETURN
«ROUTINE TO SET DEGREES, RADIANS. GPADS
RADS
GRAOS
DEGS
ROL A ROL A LOA B ANO B BRA TGL GET OLD SETTING tfSFC MASK OFF OLD '-ODE RDT INVOKE NEW SETTING
FIXED ROL A 70-9808/1025
PageS CJBPG 06/04/75 36S54.05
00577 7A47 49 SCI3 ROL A TGL
00578 7A48 49 . SCI ROL A #SE3
00579 7A49 49 ROL A
00580 7A4A 49 ROL A TGL
00581 7A48 06 07 LDA B UIP
00582 7440 C 4 £3 ANO 8
00583 7A4F 18 ABA UIP
00584 7A50 97 07 STA A X
0 0585 7 A 52 OE CA LOX «9
00586 7A54 08 INX RD7
00587 7 A 55 DF CA STX RNO
&0588 7-A57 A6 00 LDA A
00589 7A59 81 09 CMP A S7C5C
00590 7Λ58 22 02 BHI DEGS >
00591 7A5D 97 OE STA A S7C7C
00592 7A5F 39 RD7 RTS GRADS
00593 7C5C ORG RA-DS
0 0 594 7C5C. 7Δ40 FOB S7D76
0 0595 7C7C ORG FIXED
00596 7C7C 7A3F FDB scr
00597 7C7E 7A3E FDB SCI3
00598 7076 ORG S7FF8
00599 TD 76 7A46 FDB RDKEYl
00600 7078 7AA8 FOB
00601 7D7A 7A47 FOB
00602 7FF8 ORG
00603 7FFR 7987 FDB
GET OLD DISPLAY MODE MASK OFF OLO SETTING INVOKE NEW SETTING SAVE THE UPOATE GET THE INSTRUCTION POINTER MOVE AHEAD ONE SAVE THE UPOATE GET THE ROUNO SETTING LARGER THAN 9 ?
IGNORE IT? RAM/INSTRUCTION FAILURE SAVE IT
RETURN r
709-808/1025
Page 9 CJBPG 06/04/75 36:54.05
00606 7Α60 86 - -- • NAM DISPLAY THAT WILL DRIVE THE KEY AFTER EACH CHARACTER PASS (16 CHAR.) THRU THE 8UILT (IF POSSIBLE) ANO MAY 7t 1974 OOD # DISABLES PAUSE ELSE TERMN. INSERT
00607 20 OPT »OISPLAY WHILE WAITING FOR THE NEXT KEY. »OISPLAYED AND WILL READ THE TOGGLE SWITCHES THE SWITCHES HAVE CHANGED» A MOOE RESULT IN A PE-FORMATTING SAVE PAUSE FACTOR RESET THE SYSTEM
00608 86 ORG LISTtMEM »IT WILL CHECK FOR A »AFTER EACH COMPLETE RESULT IN TERMINATION OF THE . »OF THE DISPLAY BUFFER. IS A KEY AVAILABLE ? RESTORE OLD CONDITIONS
00609 97 S7A60 »OISPLAY. IF »PREVIOUS CODE BEING » . #$40 GET PAUSE FACTOR BRANCH IF YES WIPE OUT THE »ETIJRN
00610 06 »THIS IS THE »CHANGE WILL »A FORMAT CHANGE WILL »BRA0 MILLER SDISP1+2 GO SAVE IT INITIALIZE DISPLAY ?UFFER VECTOR ANO TERMINATE
00611 26 POUTINE » #t 1 KEY BUFFER EMPTY ? THE PREVIOUS 0PFG4TT0N
00612 RD β TP4 BRANCH IF YES
00613 D6 PAUSE LDA A RKWRT+1 disable Interrupts
00614 27 BRA SDISP3 DECREMENT KEY POINTER
00615 OF SDISPl LDA A FRMTl. LOAD THE CURDENT KErcODE
00616 STA A BKWRT+1 PRESET LOOP COUNTER
00617 96 LOA B SDISP2 iX LOAD THE ^EXT KEYCOOE
00618 CE BNE ι X RESTORE IT IN MEw LOCATIO
00619 Ε6 40 SDISPC JSR RKWRT+1 IS LOOP COMPLETED?
00620 Ε7 02 SOISPO LDA B BKKC " no: keep dropping «:;fffr
00621 08 01 BEQ #-11 YES· RE-EMABLt INTE=RU=TS
00622 7460 26 IA S0ISP3 SEI BKKC+12 RETURN
00623 7Α62 OE 39 DEC BKKC+Il READ THE TOGGLE SWITCHES
00624 7Α64 •39 07 LOA A BRANCH IF MO MODE C"AN\3E
00625 7Α66 ►3D 4Ε09 LOX- S0ISP4 PAUSING 0» DISPLAYING ?
00626 7Α6* R9 S0ISP4 LDA P
00627 7Α6Α 05 1.2 STA B IGNORE THE CHANGE IF PAUSING
00628 7A6C 54 INX PDTGLl GET IMST BEING SUILT
00529 7A6F 24 0089 BNE SDISP7 2 BYTE IMST ?
00630 7Α71 06 BA CLI TP4 BRANCH IF YES
00631 7Δ73 Cl FFF5 D4USE1 RTS WIPE OUT THE
00632 7Α76 22 C6 SDISP2 JSR SDISP7 OLD RETURN VECTOR
00633 7Α77 31 C5 BPL S0L7 INSERT MOOE SET ?
00634 7Α79 31 LDA B «P276 SDISP6-3 BPANCH IF NOT
00635 7A7C 96 F9 LSR B SDISP6 INSERT
00636 7Α7Ε 27 BCC T0P7
00637 7A8Q LDA P TGL
00636 7Α81 7Δ23 CMP B TA
00639 7AR3 97 IE BHI
00640 7AQ& 31 IA INS OECPT
00641 7 Αί>5 31 INS
00642 7Α83 19 LDA A
00643 7ASA C6 · BEO
00644 7ABC BE JMP
00645 7 A 80 OC JMP
00646 7ABF S0ISP6 STA A
00547 7Α91 INS
0064P 7Α93 52 INS
00649 7Δ95 03 JMP
00650, 7Α96 4F4q
00651 7Α97 78C9
00652 7ΑΟ9 07
00653 7Α99
00654 7Α9Ε
00655 7AAl 4Α22
00656 7ΑΑ3
00657 7ΑΑ4
00658 7ΑΔ5
00659
00660
709808/1025
ORIGINAL !MSPEOTED
Page 10 CJBPG—06/04/75 36:54.05
00661 7AA8 86 OE SDISP7 LDA A «SE
00662 7AAA CE 0058 .LDX «BUFF
00663 7AAD DF 16· * STX TP2
00664 7AAF DE 16 SOISP8 LDX TP2
00665 7ABl E6 OO LOA R X
00666 7A83 07 IB STA B TP4S
00667 7 A BS C4 7F AND B «$7F
0 0 668 7AB 7. CO 20 SUB B «S2D
0 0669 7AQ9 24 02 BCC S0ISP9
00670 7ABB C6 02 LDA B #2
00671 7AB0 08 S0ISP9 INX
00672 7ABE DF 16 STX TP2
0 0 673 7AC0 CE 7813 LDX »DSPTBL
00674 7AC3 DF- 18 STX TP3
00 675 7AC5 OB 19 ADD B TP3S
00676 7AC7 07 19 STA B TP3S
00677 '7AC9 DE 18 LDX TP3
00678 7AC9 C6. FF LOA B #SFF
0 0 679 7ACD 07 02 STA e BOATA
00680 7ACF C6 3C · LDA B #S3C
00681 7A01 D 7 03 ■ STA B BCTL
00682 7AO3 97 OO STA A ADATA
0 0 683 7Λ05 .C6. 04 LDA 8 «4
00684 7AO7 SA SDISPF DEC 8
0 0685 7 A 08 26 FD BNE SDISPF
00686 7AOA E-f, OO LDA B X
0 0 687 7ADC 07 02 . STA B BDATA
00688 7ADE 06 IB' LDA B TP4S
00689 7AE0 2A 04 BPL SOISPO
00690 7AE2 C6 34 LOA B «534
00691 7AE4 07 03 STA R RCTL
0 0 692 7 AE 6 88 10 SOISPD AOD A «MO
00693 7ÄE8 ?4 16 BCC SDISPA
00694 7AEA C6 16 LOA R f*22
00695 7AEC BD 48A.0 JSR: WAIT .
0 0696 7AEF 53 COM B
00697 7AF0 D7 02 . STA R BDATA
00698 7AF2 5F CLR B
00699 7AF3 D7 OO . STA B ADATA
00700 7AF5 7A OOIA DEC TP4
00701 7AF8 7 A OOIA DEC TP 4
00702 7AF3 ?7 87 BEQ PAUSEl
00703 7AFD 7E 7A-6F JMP SDISPO
00704 730 0 C6 09 ■'-■ SDISPA LDA 8 #9
00705 ■7302 «0 4BA0. JSR WAIT .
0 0 706 7805 06 B9 LOA β BKWRT+1
0 0 70 7 7B07 27 A6 BEQ SDISP8
00708 7809 7F O OO O CLR ADATA
00709 7BOC C6 3C LDA B «S3C
00710 7B0E 07 03 STA R BCTL
00711 7Ö10 7E 7A73 JMP SDISP3
00712 «
00713 »««»««< >«««( :h/ IRACTER O
00714 β .
00715 «ALL ENTRIES MUST BE
LOAD DISPLAY S.C. INOEx=RUFFER ADDPFSS SAVE BUFFER ADDRESS GET LATEST BUFFER ADORESS FETCH THE ASCII CHARACTER SAVE IT FOR COMMA CHECK MASK OFF COMMA INOICATOPCMSB) REMOVE ASCII OFFSET CONTINUE IF "LEGAL" COOE ELSE LOAD ''3LANK" «Y OEFAULT INC BUFFER POINTER ' ' SAVE UPDATED VALUE
SET INDEX TO CHAR DECODE TBL SAVE ΓΝ TEMP AOD CHAR OFFSET TO T8L AOPS RESTORE NEW ADDRESS RESTORE THE INDEX ACCB=11BLANK" TURN OFF THE SEGMENTS PRESET ACCB
TURN OFF THE COMMA OUTPUT S.C. AND CHAR PNTR LOAD "SEGMENT ON» WAIT COUNTER OECREMENT IT CONTINUE THE LOOP GET THE NEW SEGMENT INFO OUTPlJT SEGMENT INFORMATION GET THE ORIGINAL CHARACTER BRANCH IF NO COMMA ELSE LOAD CO^MA CODE (CB2) LIGHT THE COMMA INC» THE CHARACTER POINTER CHECK FOR A NEW KEY LOAO LAST DIGIT WAIT GO WAIT
TURN OFF CHARACTER
DISABLE DISPLAY PAlJSE=PAUSE-2
RETURN IF ZERO ELSE CONTINUE DRIVING LOAD DIGIT "ON" TIUE
KEY BUFFER EMPTY ? BRANCH IF YES ELSF DISARLE OISPLAY* PRESET ACCB
TU»N OFF TH£ COMMA · GET NEW KEY ANO RETURN
DECODE TABLE««*»*»»«*«·
709&08/1025
Page 11 CJBPG 06/04/75 3.6:54.05
00716 7813 * FO * 0375 SEGMENT - .
00717 7814 FE 0376 .GtOEC. PT. IM 8ITS
00718 7B15 FF »A <.'0" ENABLES A GIVEN 0377 ROM FOR POWER CONSID
00719 7816 03 P3
00720 7817 9F Θ237
00721 7818 25 »COOING IS AtB»CtD»E.F 045 BLANK
00722 7819 OD » @15 O
0O723 7BlA 99 OSPTBL FCB 0231 1
00724 7BlB 49 FCB Pl 11 2
00725 78 IC 41 FCB (aiOl 3
00726 7810 IF FCB 037 4
00727 781E 01 FC8 Pl , 5
00728 781F 09 FCB 6
00729 7820 31 FCB 361 7
00730 7821 63 FCB a 143 8
00731 7822 FD F"C8 19375 · 9
00732 7823 11 FC8 @·21 P
00733 7B24 FD FC8 <s>375 C
00734 7B25 E3 FCB Θ343
00735 7B26 01 FC8 «1 A
00736 7B27 E3 FCB ®343
00737 7828 FO FCB f5>3?5 L.
00738 7829 73 FCB P163 8
00739 782A 21 FCB s>>41 L
00740 7B2B 43 · FCB «0103
00741 782C FD FCB ®375 R
00742 7B20 Il FCB &21 E
00743 7B2E E3 FCB »343 G
00744 .732F 31 FCB @61 -
00745 7830 91 FC8 ω221 A
00746 7831 11 FCB (021 L
00747 7332 Fl FCB ®361 P
00748 7833 00 FCB O H
00749 7834 61 FCB ei4i A
00750 7835 74 FCB rai61 INSERT CHARACTER
00751 7836 87 FCB R207 ALL SEGMENTS AND OP
00752 7337 83 FCB 0203 Έ
00753 7B38 Cl FCB ®301 F
00754 7839 B5 FCB B205 J
00755 4BA0 FCB S4BA0 U
00756 FC8 B
00757 FCB ANOTHER D
00758 FCB
00759 48A0 5A FCB
00760 48Al 26 FD FC8 WAIT
00761 48A3 39 FCB
00762 . . ORG
00763
00764 4F4B «WAIT LOOP IN S4F4B
00765 4ΕΌ9 $4E09
00766. WAIT ' DEC B
00767 BNE
00768 RTS
00769
00770
INSERT EOU
FRMTl EQU
7098Ό8/102 5
■ - 35 -
Page 12 CJ8.PG 06/04/75 36:54.05
00771 4A22 DECPT
00772 7052
00773 7DS2 7A60
00774 7068 ■
00775 7068 7A84
00776 7C00
00777 7CÖ0 -7AS4
00778 7D74
00779 7D74 7A84
EQU S4A22
ORG $7052
FDB PAUSE
ORG S7D68
FOB . PAUSE!
ORG S7C0O
FOB PAUSEl
ORG $7074
FOB PAUSEl
7 0 9 8 86/1025 OBieiHAL SHSPECTEO
Page 13 CJBPG 06/04/75 36:54.05
00782 00783 00764 00785 00786 00787 00788 00789 00790 00791 00792 00793 00794 00795 00796 00797 00798 00799 00800 00801 00802 00803 00804 00805 00806 00807 00808 00809 00810 00811 00812 00813 00814 00815 00816 00817 00818 00819 00820 00821 00822 00823 00&24 00825 00826 00327 00828 00829 00830 00R31 00832 00833 00834 00835 00836
7B40
ROMID NAM ERROR
TOALPl OPT LI ST»MEM«NG
ORG S7840
5300 EOU S5300
51A7 EQU S51A7
7340 D6 7842 7B43 2A 7845 D6 7B47 Cl 7849 7848 Cl 7B40 784F Cl 7851 7953 C6 7955 7357 7359 785A DA 785C D7 785E 7F 7B61 7E 7B64 7F 7-367 OE
»THIS IS THE ERROR OUTPUT ROUTINE. IT ACCEPTS
«AN ERROR NUMBER IN THE 3ASE PAGE LOCATION "ERROR"
«AMD OUTPUTS THE ASSOCIATED ALPHA MESSAGE TO
»THE THERMAL PRINTER (REGARDLESS OF "PAPER OUT" RlT)
»ALL MAINFRAME ERROR NUMBERS ARE POSITIVE ANO
»SIMPLY SPECIFY THE NUMBER IN THE LIST OF MESSAGES.
«FOR EXAMPLE? 1 MEANS THE FrRST ENTRY, 2 MEANS T"E SECOND AN
»SO ON. THE MSB OF THE FIRST CHARACTER OF EACH ENTRY
»IS SET TO INDICATE ITS START.
■a·
»ALL I/O DEVICE ERROR NUMBERS ARE NEGATIVE AND THE
»ROM ID NUMBER IS CONTAINED IN BITS 86 THRU 84.
»BITS 83 THRU BO CONTAIN THE TABLE OFFSET AS DESCRIBED
»ABOVE FOR MAINFRAME ERRORS. NOTICE THAT
»I/O ROMS ARE RESTRICTED TO NO MORE THAN
»15 ERROR MESSAGES.
«MAINFRAME EPROPS 1 THRU 5 ARE MASKABLE IN A »RUNNING PROGRAM. IF USER FLAG 6 IS SET WHEN »THEY OCCUR« FLAG 5 WILL BE SET AND THE PROGRAM »WILL CONTINUE PUNNING.
«ERROR ZERO IS A SPECIAL ERROR GENERATED 9Y THE «SYNTAX TABLES WHICH IS USED TO TERMINATE NUMERIC «ADDRESSES UPON RECEIPT OF A NON-NUMERIC <EY« ■»
«WRITTEN BY BRAD MILLER
09
26 06 05 08 OE 04 10 11 20 08 OB
08
08
0006
79P6
0009
CA
ERR0R7 LOA B ASL BPL LDA CMP B 8LS CMP B 8EO CMP BNE
MSKABL LDA B BIT B 8EO LSR B ORA B STA B CLR JMP
CNTT . CLR LDX
PSFLG GET RUN/STOP FLAG
RUNNING?
CNT BRANCH IF NOT
ERROR GET ERROR NUMBER
#5 MASKABLE ERROR
MSKABL BRANCH IF YES
Ö14 MASKABLE ERROR
MSKABL BRANCH IF YES
«16 MASKABLE EROOR
CNTT 8RANCH IF NOT
*S20 LOAO FLAG 6 BIT
UFLG FLAG 6 SET ?
CNTT 8RANCH IF NOT
ELSE PRESET ACCB
UFLG SET US1ER FLAG
UFLG RESTORE FLAGS
ERROR CLEAR OUT ThE ERROR
PIWM2+4 CONTINUE RUNNING P°GM
RSFLG STOP RUNNING
UIP GET CURRENT PRGM AORS
709808/10
ORfGiNAL !MSPEGTED
Page 14 CJBPG 06/04/75 36:"54.-05
00837 00838 0 0839 ' 0-0840 00841 o"o842 00843 0 0844 00845 00846 .00847 00843 00 849 00850 00851 0085? 00853 008-54 00855 00 856 0ÖR57 00858 00859 00 860 00861 00862 00863 0 0864 00P.65 0 0 8A6 00867 0 0H68 00869 00 870 00871 0 0 872. 00873 00874 00 875 00876 00 87 7 00Ö78 00879 00880 00881 00882 00883 00884 00885 00886 00887 0 0388 00889 00B90 00891
7B69 7B68 7860 7B6F 7870 7B73 7875 7B77 7878 787 A 7B7C 7B7E 7380.
7882 7B..83 7B85 7B86 7889 78 8 A 788C 7B8E 788F 7891 73 9 7897 78 9 7B9C 78 9 E 7BA0 78A2 78A5 7BA 78A9 7(3 A 73A0 7BAF 7350 7 BB 7384 7885 7387 7BR9-738 A 7380 7HC0 78C2 78C4 7BC7 54 5400 54 5408 54 5415 5416
OF C8
06 06 CNT
26 U -
OF
CE 0008
E6 89 KBl
E7 BA
09
26 F9
97 BA
06 B9 Cl OC 2C 5C
07 B9
OE C3
7E 4A22
4F EOUT
97 B9
97 OF
43
97 OD
RD 5D75
CE 0058
OF
CE 53FF
96
2A OF
84
BO 5300
C6 74 ■■ ■ · ·
07
DE
96
84 OF
MAINF
ο a
E6 OO 2A FB 4A
26 F8 9 7
SO 57B0
RO 6046
96 CC
26
7E 78C9
7E 51A7 TAl
CF 56 03 51 C4 49
EMSG
STX
LDA
BNE
SEI
LDX
LDA
STA B
OEX
BNE
STA A
LDA R
CMP
BGE
INC
STA R
CLI
JMP
CLR A
STA A
STA A
COM A
STA A
JSR
LOX
STX
LDX
LDA A
BPL
AND A
JSR
LDA
STA R
LDX
LOA A
AND A
INX
LOA
BPL
DEC A
BNE
STA A
DEC A
JSR
JSR
LDA A
BNE
JMP
JMP
ORG
FCB
FCC
FCB
FCC
FCB
FCC
UPP
ERROR EOUT
#11
PKKC-I »X BKKCX
KBl
RKKC
RKWPT+1
#12
CB
8KWRT+1 DECPT
BKWRT+1 DIGFLG
STKFLG PLANK
TP
«EMSG-1
ERROR
MAINF
PS70
ROMIO
«$74
TlO
TIl
ERROR
*$F
MAINF
MAINF ERROR
LDMSG
PRTDRV+25
ALPHA
TAl
T0P7
TOALPl
55400 SAVE IN PRGM PNTR GET ERROP NUMBER BRANCH IF NOT ERROR DISARLE KEY INTERRUPT PRESET LOOP COUNTER
GET «BOTTOM'· KEY MOVE IT 0OWN DECREMENT POINTER/COUNTER CONT IF NOT FINISHED PUT THE OLD KEY BACK ON TOP
GET THE WRITE INDICATOR BUFFER FULL ? BRANCH IF YES ELSE REGISTER THIS ENTRY
SAVE THE NEW INOICATOR RE-ENARLE THE INTEPPIJPT SYSTEM TERMINATE THE PPEVIOUS INSTRUCTION PRESET ACCA
EMPTY KEY BUFFER TERM. DIGIT ENTRY
ENABLE STACK LIFT BLANK THE BUFFER PRESET POINTER FOR THE LOAD MESSAGE ROUTINE
6ET ERROP MESSAGE TABLE POINTER GET THE ERROR 8RANCH- .IF MAINFRAME ERROR. ELSE MA$K OFF I/O IO NUMRER GENEPATE ROM ADDRESS GET ERROR TABLE OFFSET SAVE IN POM IO TEMP (LSB1S) INOEx=ERROR TABLE iORS-1 ACCA=ERROR
ACCA=TARLE OFFSET NUMBER RUMP THE TAf'LE SFASCH AOOPESS GET CURRENT ENTRY CONTINUE LOOKING IF POSITIVE ELSE DEC. OFFSET NUMBER CONTINUE IF ITS NOT THE ONE CLEAR ERROR WORD MAKE ACCA NON-ZERO FOR LDMSG ERROR NOTE TO BUFFER
PRINT THE ERROR ALPHA MODE ? BRANCH IF YES ELS?. RETURN TO TOP OO "TO ALPHA" · '
/VERFLOW/
SD
/QRT OF MEG V/
$C4
/!VISION 9Y ZERO/
9*08/102 INSPECTED-
5425 CC 06/04/75 36:54. - 38 - SCC
5426 4F FCB 05 /OG OF # <=0/
5431 CE FCC see
Page 15 cj<3P6 5432 4F FCB .0 I/O DEVICE.
00892 543E C9 FCC $C9
00393 543F" 4C FCB - /LLEGAL ARGUMENT/
00894 544E CO FCC SCO
00895 544F 45 FCB /EMORY OVERFLOW/
00896 5450 CC FCC SCC
00897 545E 41 FCB /ABEL NOT FOUND/
0 0898 546C C7 FCC SC7
00899 5460 4F FCB /OSUB OVERFLOW/
00900 547A CO FCC SCO
00901 547B 49 FCB /ISSING G0SU8/
00902 5487 C3 FCC SCB
00903 5488 45 FCB /EY NOT DEFINED/
00904 5496 C9 FCC $C9
00905 5497 40 FC8 /MPROPER SYNTAX/
00906 54A5 CO FCC ' SCD
00907 54A6 49 FCB ■ /ISSING FOR STMT/
0O908 5485 C3 FCC SC3
00909 5496 48 FCB /HECKSUM ERROR/
00910 54C3 C6 FCC SC6
00911 5-C4 49 FCB /ILE TOO SMALL/
00912 54Dl 06 FCC S06
00913 5402 45 FCB /ERIFY FAILEO/
00914 54OE 07 FCC SD7
00915 540F 52 . FCB /RONG FILE TYPE/
00916 54E0 C6 FCC SC6
00917 54EE 49 FCB /ILE NOT FOUND/
00<?1β 54F3 C5 FCC *C5
00919 54FC 4E FCB ' /NO OF TAPE/
00920 5506 C3 FCC SC3
00921 5 = 17 41 FCB /ARTRIOGE OUT/
00922 5513 OO FCC 500
00923 5514- 52 FCB /ROTECTED TAPE/
00924 5521 03 FCC SD3
00925' 5522 45 FCB /ECURED MEMORY/
00926 552F CF FCC 1BCF
0 0927 553.0 55 FCB /UT OF PAPER/
00923 553B C9 FCC SC9
00929 553C 4C FC3 /LLEGAL ADDRESS/
00930 554A 80 FCC SRO
00931 FCB
00932
00933
00934
7 0 9 8 0 8 / 1 0 2 S
ORIGINAL SMSPECTED
. . ■ - 39 -
Page 16 CJBPG 06/04/75 36:54.05
END
■SYMBOL TABLE
AOATA 0000 ACTL 0001 BOATA 0002 BCTL 00 0 3 INPUT 0004 IOIN 0 00 5
ERROR 0006 TGL 0007 UFLG 0008 RSFLG 0009 EOM OOOA EOPM OOOB
STKFLG OCOD- RND OOOE DIGFLG OOOF W2 0010 Wl 0011" SFLG 0012
DCHTR 0013 TPl 0014 TPlS 0015 TP2 0016 TP2S 0017 TP3 OO IS
TP3S 0019 TP4 001A TP4S 0018 TP5 OO IC TP5S 001O TP6 001E
TP 6S 001F TP7 0020 TP7S 0021 T13 0022 T12 0023 TIl 0024
TlO 0025 T9 0026 T8 0027 T7 0028 T6 0029 T 5 002A
T4 0028 T3 002C T 2 002D Tl 002E ISTK 002F ISTACK 0 051
TA 0052 SPGM 00 54 EXTRA 0056 BUFF 0 058 PEAL 0068 IMAG 0070
ATI 0078 ΔΤ2 0080 W 0088 XR 0090 YR 0098 ZR OOAO
TR · 0ÖA3- LSTX OOBO " 8KWRT 00B8 BKKC 'OOBA S0L7 00C5 UPO 0 0C8
UIP OOCA ALPHA OOCC 101 OOCD 102 0000 IT7 0003 FLAG O0D5
TPOS 0006 FILE 0007 AR 0 0D8 BR OOEO CR O O £3 OR OOFO
ER 00F3 SDBB OOBA MT 7EjOO Τ"πμμ7 003D IMED 0040 PARCO OOCO
PAPEX 0 03 0 NTBL 0000 DOTS 5ECO PHTOPV 602D FRMT 5CA8 BLANK 5D75
LDMSG 57BD ROLLD 5582 ROLLU 57Fl PSD 55DA TXL 55E9 ST<UP 55EF
MAO 749R CMP 74AA NOR 74D6 TXW 74?4 TXXR 743-3 EXXH 7452
ARSR ' 753B OVUMF 75B6 OVERF 75DD XRO 740Δ XPNINE 75 C 3 IJN=DRF 75Fl
IMULT 76B9 ODG 7669 FPA 75FC FPS 75F6 FPM 7735 F°0 7793
FPAEX 7630 FPMEX 7730 LSHIFT 7521 ZEROx 7489 XZEROO 7416 XZER02 7417
RECIP 7 3E6 TXRX 73F3 CONST · 680 0 FPDBRC 6898 TApM 68Δ9 ATN 69C3
DSZERO 6 A 46 NTLN 6A58 EXPN 6AC9 SIN 6Β9Δ COS 639A ASlN 68F2
ACOS 6BF7 PHl 6C5D PH2 6C8D PH3 6034 PH4 6000 LSFT8 6E47
SORT 6E65 ΜΑΟβ 6F2C CMP8 53E4 IOUPX 6F52 LOGlO 6FA 7 YUPX 6FE9
RTOP 7328 PTOR 7386 NOTEST 7800 MORE 781C EPASE 7M20 rOPOLL 7 H 54
N0IO2 7B6A IOERR 7866 AUTOOK 7R89 MSGl 783E TOP7 78C9 .\j<7 78E3
TSRCH6 73F3 TSPCH7 78F8 T WO B 7 79 0 8 TFND7 790C FIX 79 24 EP07 79^C
EJS»7 7 93 0 MFND7 7933 L7 793C IMEX7 794« CONT 7QiC ΡΑΡΠ7 7'-)57
PARCD7 795F EXEC6 7968 EXEC7 796B RWM 797B R WM 2 798? SS 7-M 6
TT7 7 9A9 MAlV 79AC RSEX 4800 STC0D7 4."ECS .AUO I T 5C.31 RPKEYl 79'3 7
YES3 79DE N0PE2 79E7 YESl 79F5 YE S 2 7AOl NOPE 7Α0β NO0El 7 Al 5
R0KEY3 7Λ22 RDTGLl 7A23 ROT 7A35 TRNOFF 61RE PADS 7A3E GRADS 7 AJr
OEGS 7A40 FIXED 7A46 SCI3 7 A 47 SCI 7A48 R07 7A5F PAUSE 7Λ60
SOISPl 7Δ64. SDISPC 7A6C SOISPO 7A6F SDI-SP 3 7A73 SOISPi. 7A7C PAUStTl 7Λ84
S0ISP2 7A85 S0ISP6 7AAl SDISP7 7AA8 SDISP8 7A4F S0ISP3 7ΔΒ0 SHIS?*7 7 AO 7
SOISPO 7AE6 SOISPA 7ROO DSPTBL 7B13 WAIT 4f?A0 INSERT 4F4R FPMTl 4E09
DECPT 4 A 32 ROMIO 5300 TOALPl 51A 7 FRRÜR7 7340 MSK-A8L 7953 CNTT 7Ö64
CNT 736B KBl TB 7 3 CB 7885 EOUT 7B89 MAIMF 7RaF TAl 78C7
EMSG 540 0
TOTAL ERRORS
?01
157 NAM CJTBLS «»«TERROR 213
177 EQUl Γ EQlJ STIl-MT »««,-»ERROR 213
184 EQU12 EQU ST12-MT ««««ERROR 213 187 EOUl 3 EOlI ST13-MT 213
7 0 9 8-08/1025
OBiGlMAL SUSPECTED
191 EQU14 EQU ST14-MT »»»»ERROR 213
203 EQU22 EQU ST22-MT ««««ERROR 213 PAfT FQIIl EQU STl-MT
»»»«ERROR 213
264 EQU2 EQU ST2-MT. »»»»ERROR 213
265 EQU16 EQU TT2-MT »»»«ERROR 213
268 EQU3 EQU ST3-MT
««»«ERROR 213
271 EQU4 EQU ST4-MT
««■««■error 213
287 EQU5 EQU ST5-MT »«•««ERROR 213
288 EQU20 EQU ST20-MT ««««ERRO.R 213
309 EQU7 EQU ST7-MT «»««ERROR 213
310 EQU15" EQU TTl-MT ««««Et?ROR 213
372 EQU6 EOU Sf6-HT ««tt-=ERROR 213
43β EQU21 EOU ST21-MT «»««ERROR 213
544 EQU17 EQU TT3-MT ««««ERROR 213
553 EQUie EQU TT4-MT ««»«ERROR 201
NAM PLABR RROR 201
fl56 -^AM UOF ««»«ERROR 201 932 MAM OTBL
709808/102 5 ORIGINAL INSPECTED
Page 18 cjSPG 06/04/75 36:54.05
00154 00157 00158 00159 00160 00161 00162 00163 00164 00165 00166 00167 00168 00169 00170 00171 00172 00173 00174 00175 00176 0 0177 00178 00179 0 0180 00181 001>T2 00133 00184 00185 .00186 00187 00138 00139 00190 00191 00192 00193 00194 00195 00196 00197 00198 00199 00200 00201 00202 00203 00204 00205 00206 00207 00208 00209 00210
7BCA
79CA 73CB
73CC 73CD 73CE 78CF 7SO0 7301
73D2 7BD3
7304 73D5 7306
7BD.7 7308 78D9 73D,4 7t309 78DC 730D 73OE 73DF 7BEl 7SE2
73E4 73E5 78E6 7BE7
DO
EO
0168
84
51
B3
52
49
13
0170
0178
8C
D3
OOAC
55
5C
OO
62
3D
61
A6 ■
A4
4F43
A3
4F60
0040
20
50
3D
OPT LIST.MEM
NAM CJTRLS
OPT LIST»DB16»MEM
ORG S78CA •o
»FOLLOWING"ARE THE KEY SYNTAX TABLES FOR CJ. ' · »THESE TABLES« ALONG WITH THE SUPERVISOR SFARCH »ROUTINEf DEFINE THE KEY SEQUENCES RECEIVED FROM »THE KEYBOARD. THERE ARE FOUR POSSIBLE ACTIONS THAT •»CAN BE TAKEN UPON FINDING Δ MATCH WITH THE »CUPRENT KEYCODE: 1) IMMEDIATE EXECUTION' OF A FUNCTION »2> RESET TO A NEW TABLE FOQ FURTHER SEARCHING «3) JUMP TO A GIVEN ADDRESS AND EXECUTE SOME »INTERMEDIATE CODE 4) ADD A "BUILDING" CODE TO THE «INSTRUCTION REGISTER AND RESET TO A NEW SEARCH TABLE.
»WRITTEN 8Y BRAD MILLER
PRGMl FCB FCB
EOUIl EQU
· FCB
FCB
FCB
FCB
FCB
' FCB
E0U12 EQU FCB FCB ·
EOU13 EQU FCB FCB FCB
E0U14 EQlJ FCB FCB FCB FCO FCB FCB FCB FCB FDB FCB FDB
E0U22 EQU FCB FCS FCB FDB
1220+PARCD E340 STIl-MT EQU11/2
G-22+IMEO
ST12-MT
EQU12/2
@24+NT3L
ST13-MT
EOU13/2
!330+PARCO
0110
ST14-MT
EQU14/2
130
S42+IMED
©75
+IMED
G344+P4REX
S4F4B
O43+PAREX
S4F60
ST22-MT
E40+NTäL
EOU22/2
TERMN7
ST14 GOSUB
RETURN PAUSE
NEXT IF
LINE FEED LOAD ANO RUN INSERT
DELETE
MEMORY DELETE
»THE MAIN TA8LE BEGINS HERE
709808/1025 INSPECTED
Page 19 CJBPG 06/04/75 36:54.05
00211 7E00 66 « *ORG MT O
00212 7E0O 01 FC8 S46+IMED
00213 7E01 5E FCB Bl 1
00214 7E02 02 FCB P36+IME0
00215 7E03 5F FC8 f*2 2
00216 7E04 03' FC3 037+IMED
00217 7E05 77 FCB 03 3
00218 7E06 04 FCB P67+IMED
0 0219 7E07 56 FCB 04 4
00220 7E0B 05 FCB Ö26+IMED
00221 7E09 57 FCB 35 5
00222 7E0A 06 FCB 027+IMED
00?23 7E08 76 FC8 g>6 6
Ό0224 7E0C 07 FCB 366+IMED
00225 7E0O 4E. FCB . P7 7
00226 7E0E 08 FCB Ö16+IMED
00227 7EOF 4F FCB PlO 8
00228 7E10 09 FCB 317+IMED
00229 7E11 75 FC8 en 9
00230 7E12 OA ' FCB ß65+IMED
00231 7E13 67 FC8 S>12
00232 7E14 08 FCB ®47+IMED
00233 7E15 46 FC8 013 CHS
00234 7E16 12 FC« ß6+IMEO
0O235 7E17 47 FCB S>22 εεχ
00236 7ElB 11 FCB 37+IMEO
00237 7E19 74 FCB ®2\ CLX
00238 7E14- 13 FC8 £64+IMED
00239 7E13 7F FCB 323 +
00240 7ElC OC FC8 S77+IMED
00241 7ElD 6F FCB «14
00242 7EiE 00 FC8 PS7+IMEO
00243 7ElF 6E FC8 S115 X
00244 7E20 OE FCB S56+IMED
00245 7E21 73 FC8 £16 /
00246 7E22 OF FCB ®63+IM£0
00247 7E23 7.2 FC8 Θ17 PRINT
00248 7E24 92 FCB E62+IME0
00249 7E25 7C FCB s>262 XEY
00250 7E26 15 FCB S74+IMED
00251 7E27 60 FCB &;25 POLL D04N
00252 7Ε2β 16 FCB S55+IME0
00253 7E29 6C FCB P26 ROLL UP
00254 7E?.A 24 FCB «54+IMED
0025=5 7E2B 05 FCB Ö44 RCL
00256 7E2C 02 FC8 625+PARCD
00257 7E20 OOHC FCB &322
00258 5E EQUl EQU STl-MT
00259 7E2E CO FC8 EQU1/2 STO
00260 7E2F C8 FC8 &15+P4RCD
00261 7E30 00C4 FCe ß3lO
00262 0180 EQU2 EQU ST2-MT
00263 EQU16. EQU TT2-MT
00264
00265
7.09808/102 5
Page 20 qjBPG 06/04/75 36:54.05
00266 7E31 08 . EQU3 FCB EQU16/2 F-I
00267 7E32 30 FCB ("60+NTBL
00268 OOCA EOU ST3-MT
00269 7 E 33 65 EQU4 FCB EQU3/2 SHIFT
00270 7E34 31 . FCB (S61+NTBL
00271 O0E2 EQU ST4-MT
00272 7E35 71 FC8 EGU4/2 CLEAR
00273 7E36 45 FCS <S5 + IMED
00274 7E37 14 FCB P24 SIN
00275 7E38 6A FCB S552 + IMED
00276 7E39 19 FCB P31 COS
00277 7E3A 63 FCB 053+IMED
00278 7E3B' IA FCB 032 TAN
00279 7E3C 7A FCB 5372+IMEO
00280 7E3O 18 FC8 15133 LN
00281 7E3E 68 FCB ©50+IMEO
00282 7E3F .1F FCB fi>37 . LOG
00283 7E40 69 FCB 051+IMED
00284 7E41 20 FCB 040 ACC +
00285 7E42 79 EQU5 FCB 071 +1MEO
00286 7E43 2B EOU20 FCB P>53
00287 one - EQU ST5-MT
00288 00A6 EQU ST20-MT SIGMA+
00289 7E44 78 FCS «70+1MEO
00290 7E45 27 FCB ®47 P TO R
00291 7E46 7B FCB ®73+ΙΜΕ0
00292 7E47 2A FCa 1352 R/S
00293 7E48 65 FCB ©45+IMED
00294 7E49 BO FCB P260 ENTER
00295 7E4A 7E FCB O76+IME0
00296 7E4F3 10 FCB <S20 REWIND
00297 7E4C 41 FCB al+IMED
00298 7E40 A fl FCB «250 LO PRGM
00 299 7E4E 40 FC8 •3O + IMED
00300 7E4F 89 FCB 13271 LIST
00301 7E50 83 FCB fi>3xPAREX
00302 7E51 5904 FOB S59D4 RECORD PROGRAM
00303 7E53 42 FCS (5!2+IMEO
00304 7E54 B5 FCB FJ265 END
00305 7ESS 513 FCB !«35+IMED
00306 7E56 Bl FCB ®261 GOTO
00307 7E57 C8 E0U7 FCB TO10+PÄRCD
00308 7E58 FO E0U15.- FCB ®360
00309 0160 EQU .ST7-MT
00310 01«0 EOU TTl-MT
00311 7E59 80 FCB E0U7/2 LABEL
00312 7Ε5Λ C9 FCB &11+PASCD
00313 7E5B RF FCB fi277
00314 7E5C CO FCB E0U15/2 . SFG
00315 7E5O CA FCB «12+PARCO
00316 7E5E 40 FCB PlOO
00317 7E5F 53 FCB EOU20/2 FORMAT
00318 7E60 C4 FCB ■ö>4 + PAnC0
00319 7E61 BE FCB «276
00320 7£62 8E Fca E0U5/2
709 8 0 8/1025
ORIGINAL IMSFECTED
-AA-
Page 21 cJBPG 06/04/75 36:54.05
00321 7E63 8B FCB 15-13+PAREX STEP ίί·3»555 5ί5ίν-3ί55ί·ί
00322 7E64 527A FDB S527A
00323 7E66 8C . FCB 5»14 + PAREX BACK STEP ERASE
00324 7E67 52CE FOB S52CE
00325 7E69 30 FCB TERMN7
00326 7E6A 7E6E FOB RlJNl ■ ■OR" FOR RUN MOOE
00327 7E6C 7RCA . FOB PRGMl < 1OR" FOR PRGM MODE
00328 7E6E 90 RUNl FCB !920+PAREX A CFG
00329 7E6F 4AEF FOB UDFA
0033-0 7E71 91 FCB (321+PAREX B
00331 7E72 4AEE FOB UDFB
0 0 332 7E74 92 FCB ^22+PAREX C
00333 7E75 4AE0 FDB UDFC
00334 7E77 93 FCB ©23+PAREX D
00335 7E7S 4AEC FDB UDFD
00336 7E7A 94 FCB W24+PAREX E
0 0^37 7E7R 4AEB FOB UDFE
00 3 38 7E7O 98 FCB !330+PAREX F
00339 7E7E 4ΔΕΑ FOB UDFF
00340 7E80 99 FCB 031+PAREX G
00341 7E31 4ΔΕ9 FOB UDFG
003<>2 7E83 9 A FCB r<ü32+PAREX H
00343 7E84 4AE3 FOB UDFH
00344 7E86 93 FC8 033+PAREX I
00345 7E37 4ΔΕ7 FOB UDFI
0034b 7E89 9C FCB B34+PAREX J
00347 7E3A 4AE6 . FOB UDFJ
00348 7E3C AO FCB 340+PAREX K
00349 7E3O 4AE5 FOB UOFK
0 0 350 7ΕβΡ Al FC8 :341+PAREX L
00351 7E90 4ΛΕ4 FDB" UDFL
00352 7E9? FCB 'i42 + PAREX H
00353 7E93 4ΛΕ3 FDB UOFM
003=4 7E95 A3 FCB (Si43+PAREX NJ
00355 7E96 4ΛΕ2 FOB UOFN
00356 7E9R A4 FCB &44+DAREX O
00357 7E99 4AEl FOB UOFO
00 358 7E9B 84 FCB ■Si4 + PAREX
00359 7E9C 4AF0 FOB FMT
00360 7EQE 3D FCB TERMN7
00361 7E9F SC FCB 12+-S80 SYNTAX E^ROR
00362
00353 e.«*»*SEC0MOAPY TABLES»^«
00364
00365 7EA0 A3 ST22 FCB «43+PAREX
0 0 366 7ΕΔ1 4B7F FD8 EPASE
00367 7EA3 30 FCB TEPMN7
00368 7EA4 7E00 FOB MT
00359
00370 7E46 CA ST20 FC9 W12+PARC0
00371 7EA7 10 FCB W20
00372 0146 E0U6 EOU ST6-MT
00373 7E48 A3 FCB E0U6/2
00374 7EA9 3D FCB TERMN7
00375 7EAA 7F46 FOB ST6
709-808/1025
Page 22 CJBPG 06/04/75 36:54.-05
00376 7EAC 66
00377 7EAD 33
00378 7EAE 7F
00379 7EAF 31
00380 7E30 6F
00381 7E81 32
00382 7EB2 59
00383 7EB3 35 ·
00384 7EB4 5A
00385 7EB5 3 A
00386 7E36 5 B
00387 7E37 36
00388 7EB8 OA
Q0389 7E99 53
00390 7 FJi A 3D
00391 7EFtB 8C
00392
00393 7EBC 05'
00394 7E8D 02
00395 7EBE CO
00396 7EPF 79
00397 7EC0 38
00398 7ECl' 3D
00399 7EC2 7F80
004-00
00401 7EC4 05
00402 7EC5 OE
00403 7EC6 CO
00 404 7EC7 30
00*05 7ECa 7F80
00 406
00hU7 7ECA 30
00408 7ECB 65
0 0 409 7ECC 31
00410 7ECD 71
00411 7ECE 6A
00412 7ECF IC
00413 7ED0 6R
0 0414 7EDl ID
00415 7ED2 /A
00416 7ED3 IE
00417 7ED4 63
0041R 7E05 21
00419 7ED6 69
00420 7EO7 22
00421 7ED8 78
00422 7£D9 28
00423 7EOA 78
00424 7ED9 29
00425 7EOC 79
00426 7EDD 2C
00427 7EDE 3D
00428 7EDF 7E0 0
00429 7EEl OO
00430
ST14
STl
FC8 046+1MED IF 0 ) PCL RCL
•FCB (5'63
FCB ®77+IMED IF+
FCB f*61 RCL ACC+
FCB P57+IMED IF-
FCB P62
FCB ®31+IMED IFX<Y (ALPHA TABLE
FCB 065
FCB IS32 + IMED IFX=Y
FCB Θ64
FC8 033+IMEO IFX>=Y
FCB Φ66
FCB S12+NTBL IF SFG
FCB EOU20/2
FCB TERMN7
FCB 12+580 SYNTAX ERROR
ikhuhjo {^ H i^ ^^ ίί ^F {^ il· *il· it i» *^ iJ \^ %} ^l· *ΐ^ ^^ ^I* ^^ {} -^^- ^}
FC8 P25+PARCC
FC8 SD 2
FCB E0U15/2
Fca S71+IMED
FC8 Θ73
FCB TERMN7
FOB TTl
-5 -><}->·Β· O -3--5--3-0-<· ■» ύ· ·»■» -ϊ -S ■> ■■
äiiiim»iSiHl-}i(!8iiJiä4i4i5iHt-:.->ii-HHHi5ii-}5v-5M-J->«-HH4f->i;-iHr·.
ST2 FC8 üä25 + PASCD STO RCL
FC8 016
FCB E0U15/2
FCB TERMN7
FD8 TTl .....
it O -5 » «■ e -5 <i 'i -ϊ ί <- » » * -O ■& ί ·> O -O- *r » <-<■ «· -J -S -X- ■» -I -5 -> -5- ·■> -3- -;- J -> -υ- -!f C- O ■& ■> ·> ■:- -5 -X- -3- 45-}4« -> -J- -:
ST3
FCB 06O+NT3L F-I
Fca EQU3/2
FCB ζ-61+NTRL SHIFT
FC8 I0U4/2
FCB iS52 + IME0 ARCSIN
FCB S34
FCB P53+IMED ARCCOS
FC8 Θ35
FCB S72+IME0 ARCTAN
FCB t'36
FCB is 5 O + IMED ΕΛΧ
FCB- ®4l
FCB 051+IMED ΙΟλΧ
FC8 1*42
FCB ®70+IMED SKiMA
FCB «50
FC3 ?·73+ΙΜΕ0 R TO P
FCB &51
FCB S71+IMED ACC-
FCB R154
FCB TERMN7
FDB MT
FC8 PO
709808/1025
OBJGSMAL INSPECTED
Page 23 CJRPG 06/04/75 36:54.05
0 0 431 7EE2 30 ■ «««■•»«««■»■»«•»β ■»»■IHHHHHHHHH F-I
00432 7EE3 65 ST4 FC8 060+NTBL
00433 7EE4 31 FCB EOU3/2 SHIFT
00434 7EE5 71 FCB ßftl+NTßL
00435 7EE6 40 FCB EQU4/2 MAPK TAPE
00436 7EE7 B7 FC8 00+IMEO
00437 0140 FCB P267
00438 7EE8 5E EQU21 EOU ST21-MT DEGREES
00439 7EE9 2E FCB CS36 + IMED
00440 7EEA 5F FCB 15156 RADIANS
00441 7EE8 3F FCB P37+IMED
00442 7EEC 77 FCB 1377 GRAOS
00443 7EED 3E FCB (367 + IMED
00444 7EEE C6 FCB Θ76 FIX MODE
0 0445 7EEF BB FCB !36+PARCD
00446 7EF0 AO FCB ®273
00447 7EFl C7 FCB E0U21/2 SCIENTIFIC MODE
00448 7EF 2 8C FC8 ®7+PÄRCD
0044O 7EF3 AO FCB P274
00450 7EF4 F4 FCB EOU21/2 SCIENTIFIC 3 MODE
00451 7EF5 BD F CB 1364+PARCD
00452 7EF6 AO FCS 151275
00453 7EF7 84 FC3 E0U21/2 TO ALPHA
00454 7EF8 519C FCB I5i4 + PAREX
Π0455 7EFA 68 FDB S519C ROUND
00456 7EFB 3A FCB 1950 + IMED
0 0457 7EFC 41 FCB P72 VERIFY
00458 7EFO A5 FCB rai+IMED
00459 7EFE 42 FCB 0245 RC DATA
00460 7EFF A7 FCB S2+IME0
00461 7F00 43 FCB B247 IDENTIFY
00462 7F01 88 FC3 C3+IMED
00463 7F02 6A FCB ffi270 YaX
00464 7F03 23 FCB P52+IMED
00465 7F04 69 FCB E4 3 SORT X
0 0 4b6 7FO 5 25 FCB ^51+IMEO
00467 7F06 6R FCB (5)45 1/X
00468 7F07 26 FCB 5-53+IMED
00469 7F08 7A FCB 1346 INT
00470 7F09 20 FCB fo>72 + IMED
00471 7FOA 78 FCB f'55 "ΕΑΝ. STD. DEV
00472 7F03 37 FCB «7 0 + IMED
00473 7F0C 7B FCB «67 TO O.MS
00474 7F0D 2"F FCB «73+IMEO
00475 7F0E- 79 FCB ®57 FROM O.MS
00476 7F0F 30 FCB ■371 +1 MtD
0Q477 7FlO 7E FCB B60 LST X
00478 7F11 18 FC8 5176+IMED
00479 7F12 67 FCB ®30 PI
004SO 7Fl 3 17 FCB &J4 7 + IMED
00481 7Fl 4 40 FCB <S27 n OF R>S
00482 7F15 38 FC8 «15+IMEO *
004B3 7F16 7? Fca «370 LIST STACK
00484 7F17 39 FC8 ri<i2+IMEO
00485 FCB 5571
7098 O.a /1025
Page 24
06/04/75 36:54.05
0 0 486 7F18 30 ST5 FCB TERMN7 FCB 5346+PAREX 1 - - 0
00487 7F19 7E00 FOB MT FDB FO
00468 7FlB 00 FCB • ©Ο FC8 ^65+PAREX 2 9
00439 «»«so«« •e·« «»inni ·» ö ·» » FD8 F9
00490 7FlC 9E FCB O36+PAREX FCB M36+PAREX 3 • 1
00491 7F10 4857 FDB Ol FDB Fl
00492 7FlF 9 F FCB (?>37+PAREX FCB ■337+PAREX 4 2
00493 7F20 4856 FOB 02 · FD8 F2
00494 7F22 Bl FCB 067+PAREX FCB S67+PAPEX 5 3
00495 7 F 23 4355 FOB 03 FOB F3
00496 7F25 96 FCB 026+PAREX FCB ©26+PAREX 6 4
00497 7F26 4854 FDB 04 FOB F4
00498 7F28 97 FCB · 15127 + PAREX FC3 P27+PAREX 7, 5
00499 7F29 4853 FOB 05 FOB ■ F5
00500 7F28 36 FCB @66+PAREX FCB P66+PAREX RECORD SECUREO 6
00501 7F2C 4852 FDB D6 F08 F6
00502 7F2E 8E FCB 016+PAREX FCB 016+PAREX LO BIN 7
00503 7F2F 4851 FOB D7 F08 F7
00504 7F31 42 FCB ^2+IMED FCB S17+PAREX RUN 8IN 8
00505 7F32 P6 FCB ' 53266 FOB F6
00505 7F33 50 FCB 02 0.+ IMEO FCB TER«N7 RC 3IN
00507 7F34 AO FCB (S240 FCB 12+SflO SYNTAX ERROR
00503 7F35 51 FCB ©21+IMED RC BIN SEC
00509 7F36 Al FCB ß>241
00510 7F37 52 FCB '322 + IMED PTAPE
00511 Tr 33 A2 FCB K242
00512 7F39 53 FCB S23+IMED
00513 7F3A A3 FCB ®243
00514 7F39 54 FCB !824 + IMED
00515 7F3C A4 FCB K244
00516 7F3O 30 FCB · TEPMM7
00517 7F3E 7E6E FDB PUNl
00518 »«■!!■■»««■•^■»»«■iHKHHH-iHHHHHi··*
00519 7FiO A 6 ST21
00520 7Fi-I 49SF
00521 7F43 35
00522 7F44 4R66
00523 7F46 9E ST6
00524 7F47 4P6E
00525 7F49 9F
00526 7F4 4 4R60
005?7 7F4C 37
0052ο 7F4D 4R6C
00529 7F4F 96
00530 7F50 4t?6B
00531 7F52 97
00532 7F53 486Λ
00533 7F55 R 6
00534 7F56 4R69
00535 7F58 RE
00536 7F59 4R68
00537 7F58 3F
00S3S 7FSC 4367
00539 7F5E 3D
0 0 540 7F5F ac
70 9808/102 5
Page 25 CJBPG 06/04/75 36:54.05
00541 7F60 C9 ST7 IHHHJ O--!HJ sil+PARCO «■*«0-Ο»4«·υ»»4-9»»«»4ί(!Ι1ί4·}β5ί»^ 4»«·14<ί->«4·Κ-4·}ί!>ί-1ν-ϋί-3ι>ί>Μ:-1}->
00542 7F61 Ol FCB P321 GOTO LABEL A
00543 01C2 EQU17 "FCB TT3-MT
00544 7F62 El EQU E0U17/2 8
00545 7F63 6E FCB S56+IME0
00546 7F64 62 FCB P142 GOTO X C
00547 7F65 30 FCB TERMN7
00548 7F66 7F80 FCB TTl O
00549 FOB (ALPHA TABLE)
00550 7F6EI C9 STIl HHJ ·*»{;-->■ Pll+PARCD E
00551 7F69 EO FCB S340 G0SU8 LABEL
00552 01C8 EQU18 FC8 TT4-HT F
00553 7F6A E4 EQU EQU18/2
00554 7F6B 6E FCS ®56+IMED G
00555 7F6C 63 FCB P143 Gosug x
00556 7F6D 3D FCB TERMN7 H
00557 7F6E 7F80 FC8 TTl
0055B FOB &*«--»«·-»-!ΗΠΗ>-> (ALPHA TABLE)
00559 7F70 50 ST12 HJ-a ■* IJiHf- ^20 + I ■-!ED
00560 7F71 AC FC8 0254 FOR A
00561 7F72 51 FCB @21+IMED
00562 7F73 AA FCB PJ252 FOR 8
00563 7F74.' 52 FCB @22+IMED
00564 7F75 AR FC8 ^253 FOR C
00565 7F76 30 FCB TERMN7
00566 7F77 8C FCB 12+S80
00567 FCB SYMTAX ERROR
00563 7F78 50 ST13 > -SHJiJ SHJ»· S20+1MEO ■» «· ■> ·> ·> ■» > υ -> ■> & -i -3- -3- -3 -3- -i ir -5 -> -> -S Ϊ « ■> -3 -> -5 <r
00569 7F79 AO FCB &255 MEXT A
00570 7F7A 51 ' FCB 021+IMEO
00571 7F7B AE FCB S256 NEXT B "
00572 7F7C 52 FCB P22+IME0
00573 7F70 AF FCB 3257 MEXT C
00574 7F7E 30 FCB TERMM7
00575 7F7F 8C FCB 12+380
00576 9 <Η>-ϊνϊ-ϊ FCB }-5ίϋίΙίϋΙί·>·5!ί SYMTAX ERROR
00577 «·«■«-»& J-2--B-»«·■»«-■ -3- -C- O- -> C- -O- -5 -ii -3 C- -ίΗΪ· ·> -3- -ΐ --- -3 -·> -3 -3 C- --- -> -r- -Z- -5 O- Z- -r-
00578 -XJOiHIi THIRD I ^ L·^ * I ^^ I ^* '.tiJ ^^m ^~- ~J
00579 7F80 90 TTl
0 0 5 H 0 7F81 4*ΛΑ7 FCB £20+ΡΑ«ΕΧ
00581 7F93 91 FOB UOFKA
00582 7F84 4ΑΛ6 FCB 321+PAREX
00533 7F86 9? FD3 U0FK8
00584 7F87 4ΑΛ5 FCB 1322 + PAREX
00585 7F39 93 FDB UDFKC
005B6 7F«A 4AA4 FCB 1323+PAREX
00587 7F8C 94 F08 UOFKO
OObSft 7Ft(O 4ΑΛ3 FCB «24+PAREX
00589 7FSF 98 FOB UOFKE
00590 7F90 4ΑΛ2 FCB Q30+PAREX
00591 7F92 99 F03 UDFKF
00592 7F93 4ΔΑ1 FCB «3 l+PAREX
00593 7F95 9A FOB UOFKG
00594 7F96 4ΛΛ0 FCS (532+PAREX
00595 FOB UOFKH
70 9808/102 5
Page 26 cJBPG 06/04/75 36:54.05
00596 7F9fl 98 tnnma FCB ß'SS + PAREX I * TT3 FCB •^56+1 McO GOTO LPL X
00597 7F99 4A9F- TT2 FDB UDFKI FCB ß 140
00598 7F98 9C FCB- P34+PAREX J STO CLEAR (CLEAP AL^HA PEGS) FCB TEPMN7
00599 7F9C 4A9E FDB UDFKJ .- . . FDB TTl (ALPHA TABLE)
00600 7F9E AO FCR P40+PAREX K FCB ®o
00.601 7F9F 4A90 FDB UOFKK
00602 7FAl Al FCB PÜ41+PAREX L TT4 FC8 056+IMED GQSU8 L8L X
00603 7FA2 4A9C FDf? UDFKL FCB a 1 41
00604 7FA4 A2 FCO i342+PAREX M Fca TERMM7
00605 7FA 5 4A9B FOB UOFKM FOB TTl CALPHA TABLE)
00606 7FA7 A3 FCB ©43+PAREX N FCB 130
00607 7FA8 4Λ9Α FD3 UDFKN »»««α ■ί4»ί»ί» 4»·>ίθϊ»ϊ*·}« 4««»4}«>«»4«<)»ί)»»<144444<1'}«44
0 0608 7FAA A4 Fca Θ44+ΡΑΡΕΧ O ' TT5 FCB 046+PAREX 0
00609 7FAB' 4A99 FOB UDFKO • FOB ZERO
00610 7FAD 30 FCB TERMN7 FC8 P36+PAREX 1
00611 7FAE 7FCE FDB . TT5 (DIGIT TABLE) F08 ONE
00612 ·»·»■»-ο-«-#·» c· *-> o- »*# -s tnnnt» ΰ * c- a«· * * i}« & -3-M &&< FC3 »37+PAREX 2
00613 7F80 FF FC3 fi>77+PARCD STO C+3 RCL FD3 TWO
00614 7FBl 02 -FCB (512 FC8 E67+PAREX 3
00615 7FB2 62 FCB E0U2/2 FOB THREE
00616 7F83 EF FCB P57+PARC0 STO [-] RCL
00617 7F84 04 FCB (Fj 4
00618 7FB5 62 FC3. EQU2/2
00619 7FB6 EE FC8 M56+PARC0 STO l>l RCL
00620 7FB7 06 FC3 ^6
00621 7F88 62 FCB EQU2/2
00622 7FB9 F3 FCB P63+PARCD STO C/] RCL
00623 7F8A 08 FCS rs>\ 0
00624 7FB8 62 FCB E0IJ2/2
00625 7F8C 45 FC8 •ss+IMEO
00626 7FBO 3 C FC8 ©74
00627 7FRF 3D FCB TERMN7
00628 7F8F 7EC4 FD8 ST2
00629 7FCl 00 FC8 «0-
00630
0063.1. 7FC2 6E
00 632 7FC3 60
00633 7FC4 30
00634 7FC5 7F80'
00635 IF'Zl OQ
00536 "
00637 7FC8 6E
0Q63a 7FC9 61
0063,9 7FCA 3D
00640 7FC3 7F80
00641 7FCO 00
00642
0 0 643 7FCE A6
00644 7FCF 49F0
00645 7FOl 9E
0 0646 7F02 49EF
00647 7FD4 9 F
00648 7FD5 4qEE
00649 7FO 7 87
00650 7FD8 49ED
709ΒΌ8/1025
Cv iqPG 06/04/75 36:54 - 50 - 026+PAREX
Page 27 7F0A 96 FCB .05 FOUR
00651 7FOS 49EC FOB ©P7+PAREX
00652 7F00 97 FC3 FIVE
00653 7F0E 49EB : FOB ©66+PAREX
00654 7FE0 R6 FCB SIX
00655 7FEl 49EA FOB a 16-i-PAREX
00656 7FE3 8E FCB SEVEN
00657 7FE4 49E9 FOB ai7-!PAREX
0065β 7FE6 8F FCB EIGHT
00659 7FE7 49Ea FOB ®65+PAREX
00660 7FE9 B5 FCB NINE
00661 7FEA 49E7 FDB S47+PAREX
00662 7FEC A7 FCB DECPT
00663 7FED 4Δ22 FOB TERMN7
00664 7FEF 30 FCB ' $80
00665 7FF0 80 FCB
00666
ERROR ZERO (SPECIAL CASE)
709808/1025
ORIGINAL INSPECTED
Page 28 CJBPG 06/04/75 36:54.05
00669 00670 00671 00672 00673 00674 00675 00676 00677 00678 00679 00680 00681
00683 00684 0 0685 00686 006fi7 00688 00689 0 0*>9 0 00691 00692 0 0693 00694 00695 0 0 696 00697 00698 00699 00 7 0 0 00701 0 0 7 0 2 00703 00704 00705 00706 00707 00708 00709 00710 00711 00712 00713 007U 00715 00716 00717 00718 00719 00720 00721 00722 00723
49E7
49 E 49Ε8 49Ε9 49EA 49EB 49EC 49ED 49ΕΞ 49EF 49F0 49F3 49F5 49F6 49F9 49FC 49F0 49FF 4Λ01 4Α03 4Α05 4Α07 4Α09 4Α08 4A0D 4A0F 4Al 1
4Α16 4Α18 4Al Δ 4AlC 4AlE 4Α?0
NAM ΌΡΤ ORG
PLABR
LI ST,MEM
S49E7
4C ■'■■ C 4C 4C 4 C 4C 4C 4C 4C 7C C6 OC 7 79 5Α 26 9Δ 97 96 D6 Cl 22 Cl 22
27
27 20
27 20
»PROGRAM LANGUAGE ADDRESS BUILDING ROUTINE c·
INC A AFTER ENTERING AND
IMC Λ FALLING THRU THIS LIST
INC A OF INCREMENT INSTS♦
4A22 4 A 2'' 2
0013 04
0011 0010
F6
11
1.1
13
C6
DF
08
C7
OD
02
OF
78E3
04
08
F7
03
02
Fl
02 42
NINE
EIGHT
SEVEN
SIX
FIVE
FOUR
THREE
TWO
ONE
ZERO
LL
BLK F4D
T3O
INC A INC A INC A INC A INC A INC A INC LDA CLC ROL ROL DEC B BNE ORA A STA A LDA A LDA CMP B BHI CMP R BHI CMp A BEO JMP CMP A BEQ BRA CMP Λ BEQ BRA ACCA WILL CONTAIN THE PROPER RCO DIGIT ENTERED BY THE USF.R
DCNTR ADO 1 TO DIGIT COUNTER
«4 SET ACCB FOR ROTATE
CLEAR CARRY
Wl ROLL LEFT Wl (LSW)
W2 ROLL V2 WITH CARRY
DECREMENT COUNTER
LL CONTINUE IF NOT 0
Wl "OR" NEW BCD DIGIT
Wl RESTORE Wl
DCNTR GET DIGIT COUNTER
S0L7 GET THE INSTRUCTION
ΟΦ337 FOUR DIGIT ADOPESS?
F4D BRANCH IF YES
iffS!307 THREE DIGIT ADDRESS?
T3D BRANCH IF YES
«2 ELSE 2 DIGIT
DEC0T BRANCH IF 2 ENTERED
NK7 ELSF GET NEXT KEY
«4 FOUR DIGITS ENTERED?
DECPT BRANCH IF YFs
BLK ELSE GET NEXT KEY
H3 THREE DIGITS ENTERED?
DECPT BRANCH IF YES
RLK ELSE GET NEXT KEY
»THIS HANDLES THE DF.C PT TERMINATOR
DECPT 3SR BCDBIN BCD TO BINARY CONV. BRA TYPE CHECK INST TYPE
«THE FOLLOWING POUTINE OOES A BCD TO «CONVERSION ON Wl 5, W2.
«HtCD TO BINARY CONVERSION ON Wl AND W? WITH »BINARY RESULT LEFT IN TP7 AND TP7S. RESULT IS »EQUAL TO L+64H+32H+^h WHFRE L=1UMAPY VALUE «OF THE LOW 2 BCD OIGITS AND H=BINoWY VALUE »OF THE HIGH 2 BCD DIGITS.
7098tf8/1025 OHiGlMl
Page 29 CJBPG 05/04/75 36:54.05
00724 00725 00726 00727 00723 00729 00730 00731 00732 00733 00734 00735 00736 00737 00738 00739 0 0 740 00741 00742 00743 00744 00745 00746 00747 00748 0074-9 00750 00751 00752 00753 0 0 754 00755 00756 00757 00753 00759 00760 00761 00762 00763 00764 00765 007b6 00767 00768 00769 00770 00771 00772 00773 00774 00775 00776 00777 00778
4A26 4A28 4A2A 4A2B 4A2C 4A2D 4A2E 4A2F 4A31 4A33 4A34 4A35 4A36 4Λ37 4Λ38 4A39 4A33 4A3D 4A3E 4A3F 4A41 4443 4A45
4Α4Λ 4A4C 4A4E 4A50 4A5?.
4A57
4A5C
4A50 4A5E 4Λ60 4A62 4A63 4A64 4A65 4A66 4A67
4A68 4 Λ 6 A 4A6C 4Δ6Ε
06 RO 5F
48 59 48 59
07 97 48
59
48
59
.43
59
D7 IE
97 IF
48 "
59
913 IF
97 IF
09 IE
07 IE
BO 484B
06
8Π OF
9B
97
2i
7C 0020
CE 0 00
DF
39
17
84 OF CA FO 54 IP
IB 39
BCDBIN LDA R W2
BSR BCDB
CLR B
ASL A
ROL B
ASL A
ROL B
STA B TP7
STA A TP7S
ASL A
ROL B
ASL A
ROL B
ASL A
ROL B
STA B TP6
STA A TP6S
ASL A
ROL B
AOD A TP6S
STA A TP6S
ADC R TP6
STÄ 8 TP6
JSR Δ007
LOA 8 Wl
BSR PCDB
ADO A TP7S
STA A TP7S
BCC RCOl
INC TP7
BCDl LOX «0 STX W2 RTS
P6 EO 91 C6 23 OC 96 C8 GET MS BCD DIGITS CONVF.PT TO HILARY PRESET ACCB FOR MULTIPLIES MULTIPLY RESULt BY
SAVE 4^(HIGH BINARY)
MULTIPLY BY 32
SAVE 32MHIGH BINARY)
MULTIPLY BY 64 DO 64H +32H
OO 64H + 32H .+ 4H GET LOW 2 BCD DIGITS CONVERT TO BINARY OO L + 64H + 32H + 4H
BRANCH IF NO CARRY ELSE BUMP TP7 BY ONE CLEiR THE INDEX CLEAR THE RCD LOCATIONS RETURN WITH B INARY IN
AMD TP7+I
«THIS ROUTINE DOES A -3CD TO BINARY CONVERSION »ON ACC8 WITH RETURNED 3ΙΝΛΡΥ IN ACCA.
BCDB
/>SF ttSFO
TBA
AMD
AND
LSR
ABA
LSR B
LSR
A8A
RTS ACCA = THE BCD DIGITS ACCA = THE LS DIGIT ACC8 = THE ms OIG IT BINARY = MS DIGIT
10 + LS DIGIT
ACCA = THE BINARY
«THIS ROUTIME CHECKS INST TYPE» CHECKS »FOR OVERFLOW FOR THAT TYPE- AND INSERTS «ADDRESS OR LABEL INFO IF VALID
TYPE LDA A 0^340
CMP A S0L7
BLS GR»1
LDA A «rn.310
>=340=JMP O" JSR COMPARE TO INST BRANCH IF JMP OR JSR DATA STORAGE INST?
7Q98Ü8/1025 ORIGINAL INSPECTED
Page 30 CJBPG 06/04/75 36J54.05
00779 4A70 91 Cb GRPl CMP A A S0L7 COMPARE TO INST
00780 4A72 23 IA BLS A GR P 2 BRANCH IF YES
00781 4A74 96 21 .- LDA A A TP7 + 1 GET LS BINARY
00782 4A76 97 C7 ■ FINEl STA A A S0L7+1 OK: SAVE DATA
00783 4A78 20 11 BRA A CCNT CONTINUE IN SUPV
00784 4A7A 96 20 LDA Δ A TP7 GET «S BINARY
00785 4A7C 85 F8 BIT Α A #®370 >2047?
00786 4A7E 26 12 BNE A AERR ERROR IF YES
00787 .4A80 06 21 LDA 8 A TP7 + 1 GET LS BINARY
007«8 4A82 53 ASL B A CARRY=B7
00789 4A83 49 CCNT ROL A A LSB OF MSW=B7
00790 4A84 54 GRP? LSR B A RESTORE LSW
00791 4A85 07 C7 STA B A S0L7+1 SAVE IN 2NO BYTE
00792 4A87 9A C6 AERR ORA A A S0L7 "OR" IN INST
00793 4A39 97 C6 STA A B S0L7 RESTORE WITH AOPS
00794 4A8B 7E 794C JMP B CONT CONTINUE IN SUPV
00795 4A8E 96 20 ■0· LOA A TP7 GET MS BIMARY
00796 4A90 27 EE «ALPHA BEQ B FINEl OK IF ZERO
00797 4A9? 86 18 LDA' A «24 LOAD ERROR
00793 4A94 97 06 UOFKO STA Δ A ERROR SAVE IN E=?ROR WOP-O
00799 4A96 7 E 7B40 UOFKN JMP ERR0R7 JMP TO ERROR'OUTPUT
00800 IJOrKM B
00801 udfkl" TABLE B PARTIAL EXECUTE CODE
00802 UOFKK B
nO3f>3 4A99 4C IJOFKJ INC A
00804 ΊΑ9Α 4C _ UOFKI INC A
0080S ■1A9B 4C UOrKH INC
00806 4A9C ^C UOFKG INC R
00807 4A9D 4C UOFKF INC
00808 *A9E 4C UOFKE INC A
0 0 8 0 9 •*A9F 4C UDFKD INC - - — — -
00810 *A AO 4C UDFKC INC ACCA=7 IF
00811 4AAl 4C U0FK8 INC "H" KEY AND
00812 4AA2 AC UOFKA INC ACCA=O IF
00813 4AÄ3 4 C INC "A" KEY.
00814 4AAi. 4C INC
00815 4AA5 4C INC
00816 4AA6 4C INC
00817 4ΑΔ7 06 C6 LOA S0L7 GET THE INST
00H18 4AA9 Cl 02 CMP «•■5322 <=322?
00819 4AAB 23 14 8LS ONEBYT yes; single 8YTE
00620 4AAO Cl OF CMP fc'^337 JMP OR JSQ ?
00321 4AAF 22 24 HANK 3 BHI ΗΔ.ΝΚ1 BRAMCH IF YES
00822 4ABl Pl 09 HANK CMP «9 ALPHA KEY TOO BIG ?
C0823 4A33 2E OO BGT AERR BRANCH IF YES
00*24 4ARS 54 OOUG LSR INST=INST/2
00825 4AR 6 CB 58 0NE3YT ADD «S130 INST=INST+13O
0 0826 4A88 07 C6 STA S0L7 RESTORE THE *EW INST.
00827 4ABA 83 64 AOD HlOO ADD KEY "\'IJMPEP'< TT L
00828 4ARC 97 C7 STA S0L7+1 SAVE IN 2NO HYTE
00829 4APE 7E 794C JMP CONT CONTINUE IN SUPV
008311 4ACl Cl Cl CMP 21330 1 TWO BYTE IMST?
00831 4AC3 23 F5 3LS HANK BRANCH IF YES
00832 4ACS 81 09 CMP «9 ALPHA KEY TOO BIG ?
00833 4AC7 PE C9 BGT AFRR BRANCH IF YES
LABEL OFFSET
70 980-8/102 5
INSPECTED
Page 31 CJ8PG 06/04/75 36:54.05
00834 4AC9 CO 84 HANKl SUB R #f3264 NEW INST =
00835 4ACS 37 PSH B OLD INST - 264
00836 4ACC 58 "ASL B MULT BY 5
00837 4AC0 58 ASL B + ACCA
0083B 4ACE IB HANK2 ABA
00839 4ACF 33 PUL 8
00840 4AD0 18 AD07 ABA PLUS "KEY rf"
00841 4A01 97 C6 ERR0R7 STA A S0L7 RESTORE NEW INST
00842 4A03 ?.O £0 NK 7 BRA OOUG CONT. IN SUPV
0084-3 4A05 Cl EF COMT CMP R SP357 JMP INST ?
00944 4A07 22 04 8WM BHI HANK2 BRANCH IF YES
00845 4AO 9 C6 CO LOA B «SS300 LOAO JSR LBL
00B46 4A0B 20 DB BRA HANK3 GO SAVE IT
008&7 4A00 C6 Cl LDA R fri33 01 LOAD JMP LBL
00848 4A0F 20 07 BRA HANK3 CONTINUE"
00849 484Θ EOU S484B
00850 7B40 EQU $7840
00851 7BE3 EOU S78E3
00852 794C EQU S794C
00853 7978 EQU S7978
" 709808/1025
ORIGINAL
Page 32 CJBPG 06/04/75 36:54.05
00856 4AEl 4C C6 ·» NAM A UDF EXECUTION OF ThE USER DEFINARL
00357 4AE2 4C 47 «THIS OPT A LI SY ι MEM
•00858 4AE3 4C 2E a A
00359 4AE4 4C 07 . UDFO A HANDLES
00060 4AE5 4C 20 UDFN A
00861 4AE6 4C 07 UDFM A
00862 4AE7 4C 5C8C UDFL ROUTINE A
00863 4AE8 4C 06 UDFK A
00864 4AE9 4C OD UDFJ INC A
00865 4AEA 4C 2E UDFI INC A
00866 4AEB 4C 63 UDFH INC A
00867 4AEC 4C 497D UDFG INC A
00868 4AED 4 C 07 UDFF INC A
00869 4AEE 4C OB UDFE INC A
00870 4AEF 4C 06 UDFD INC A
00871 4AF0 06 7S40 UDFC INC B
00872 4AF2 26 CA UDF8 INC
00873 4AF4 97 Ol UDFA INC A GET INST
00874 4AF6 96 04 FMT INC A BRANCH IF "CALL" INSTRUCTION
00875 4AF8 85 02 INC A SAVE ALPHA KEY
00876 4AFA 27 12 INC S0L7 GET SWITCH SETTING
00877 4AFC 80 INC FMTO AUDIT TRAIL ?
00378 4AFF D6 0044 INC 8 Tl BRANCH IF NOT
00879 4Θ01 26 04 LDA TGL ELSE PRINT
00880 4803 96 09 BNE A üS.20 PAPER OUT ERPOR ?
00881 4805 88 E7 STA A UOFO BRANCH IF YES
O0882 4307 80 C9 LDA AUDITl RESTORE ALPHß KEY
00883 Ί80Α 2A UDFO. BIT ERROR ADD LABEL OFFSET
00884 430C 86 C8 8EQ A UDF3 FIND THE LAREL
00885 480E 97 CO JSR A Tl BRANCH IF FOUND
00886 4310 7E LOA «99 LOAD ERROR
00887 4313 DF FF BNE LSLSCH SAVE IT
00888 4815 El 09 LDA 8 UDFl OUTPUT IT
00239 4817 26 IJDF3 ADD «11 SAVE ROUTINE ADDRESS
00890 ftni9 Al 12 UOFl JSR A ERROR CHECK TO SEE IF
00891 431B 27 8PL EPR0R7 TWO IDENTICAL LAPELS
00892 4310 30 LDA UIP ARE CONSECUTIVE ANO
00893 4SlE ec STA. l.X IF SO* DON'T STACK THE RETURN
00894 4821 26 JMP UDF4 GET THE STACK POINTE»
OD 895 '+323 «6 UDF4 STX A 2»X 'SUBROUTINE OVERFLOW ?
00896 4G25 20 CMP UDF5 8RANCH IF NOT
00«97 4B27 96 BNE A LOAO ERfOR
00898 4Θ29 36 CMP A «P104 OUTPUT IT
00899 4824 96 8EQ A UDF2 GET PPGM PNTP LO
00900 432C 8A IJDF2 TSX A «9 . SAVE IT
00901 432E 36 CPX A UDF3-2 GET OPr1M PMTR mi
00902 482F 86 BNE A UPP+1 AOD UDF FLAG
00903 4331 97 LDA A SAVE IT
00904 4333 4F BRA A UPP ACCA=ALL ONES
00905 4834 97 U0F5 LDA A «$C0 SET «/S FLAG
00906 PSH
00907 LDA «$FF CLEAP THE STF.P FLAG
00908 ORA PSFLG
00909 PSH
00910 LDA SFLG
STA
CLR
STA
709808/102 5
IHSPEGtED
Page 33 CJBPG 06/04/75 36:54.05
00911 4B36 97 39 STA A RKWRT+1 EMPTY THE KEY BUFFER TAB R S0L7+1 SAVE "ALPHA" NUMBER
00912 483S .797g JMP RWM CONTINUE ORA B a$7F ADD ALPHA KEY TO INST
00913 ANO B S0L7+1 INSURE MSB=O
0091* •«"FORMAT STATEMENT" BUILDING STA A RESTORE INSTRUCTION
00915 TST ALP ALPHA OUTPUT INSTRUCTION ?
00916 4Β33 16 FMTO BEO A a12 BRANCH IF YES
00917 4B3C DA C7 LDA B #SFO LOAD SYNTAX ERROD
0091S 483Ε C4 7F BIT UDF3-2 MAINFRAME CALL INSTRUCTION ?
00919 464Π 07 C7 BEQ CONT ERROR IF YES
00920 4Β&2 4 0 JMP ALPHAK CONTINUE IN SUPV
00921 4843 27 09 JMP S51A0 GO TO KEYSOARD ALP^1A
00922 484S 86 OC EQU S497D
00923 4847 C5 FO EOU SSCSC
00924 4843 27 C3 EQU
00925 4q&3 7E 79^C COVl
00926 4Β&Ξ 7 E 5UO ALP
0092? 51» iO AL0HAK
00923 497D L3LSCH
00929 5C8C AUDITl
709808/1025 ORIGINAL INSPECTED
Page 34 CJRPG 06V04/75 36:54.05
00932 00933 00934 00935 00936 00937 00938 00939 00940 00941 009*2 00943 00944 00945 00946 00947 00948 00949 00950 00951.
00952 00953 00954 0095S 00956 00957 00958 00959 00960 00961 00962 00963 00964 00965 00^66 00967 00968 00969 00970 00971 00972 00973 00974 00975 00976 0O977 00978.
00979 0093(1 009Hl 00932 00983 00984
NAH OPT OTBL LISTtMEM
»DIGIT ACCEPTANCE TA8LE FOR "FLAG" AND "CALL" INSTRUCTIONS
«THE FOLLOWING TARLE ACCEPTS I/O DEVICE NIJ"-'3E3S A\D
»PACKS THEM INTO THE INSTRUCTION BEING RHILT.
■a
4351 4852 4853 4854 4855 4856 4Θ57 4858 4859 485A 4859 435C 435E 4361 4863
4C 4C 4C
4C
4C
4C
48
48
48.
48
97 C7
CF 7E6E
OF D3
7t 78E3
07
D6 D5 Ü4 D3 02 Dl DO
4366 4C 4867 4C 4363 4C 4569 4C 486A 4C 4363 4C 486C 4C 4560 4C 4-36E "4C 436F Π6 4371 2« 4973 4A 4374 9A 4376 4-373 7E 4373 4370
437F CE 4982 6F 08 9C 4B87 4389 7E
INC A INC A INC A INC A INC A INC A INC A ASL A ASL A ASL A ASL A STA A LDX STX JMP S0L7+1 «PUN1 IT7
NK7
MOVE THE DEVICE CALL INTO THE MS FOUR RITS OF ACCA
SAVE IT IN THE INSTRUCTION GET NEW SYNTAX TABLE AORS SAVE IT FOR NEXT SEARCH GO GET THE NEXT KEY
»THE FOLLOWING TABLE ACCEPTS FLAG NUMBER INFORMATION «AND PACKS IT INTO THE FLAG INSTRUCTION 3E[MG PUILT.
C6 08
C6
C6
794C
C7
F9
0100 OO
OB F9 482 A
F9 F8 F7 F6 FS F4 F F2 Fl FO
SNDOl PNOO
«ERASE
tr
EPASE ERAl
INC A INC A INC A INC A INC A INC A INC A INC A INC A LDA R BMI DEC A ORA A STA A JMP STA A 8RA S0L7 RNDD
S0L7 S0L7 CONT S0L7+1 RNDDl
GET CURRENT INST
PRAMCH IF NOT A FL^G IMST
FLAG I = "FLAG 0"
GENERATE THE NEW INST.
SAVE IT
GO DO IT !
SAVE THE ROUNO SETTING
GO DO IT !
PROGRAM MEMORY ROUTINE.
LOX «256 INDEX=USE^ STATE ZE?O
CLR X NOP TO CURRENT STATE
INX 8U"P POINTER
CPX EOPM END OF PROGPAM MEMORY
BNE ERAl BRANCH IF NOT
JMP S4Ö2A · GO TO SPECIAL "END" ST«*T
709808/1025
ORIGINAL INSPECTED
Page 35 CJBPG 06/04/75 36:54.05
END
SYMBOL TABLE 0013 ACTL NAM ENDEX 0001 BDATA 0002 BCTL 0003 INPUT 0004 IOIN 0005
ADATA 0000 0019 TGL ROR 201 00 07 UFLG 0008 RSFLG 0009 EOM QOOA EOPM ΟΟΟζ
EPROR 0006 001F RHD OOOE DIGFLG OOOF W2 0010 Wl 0011 SFLG 0012
STKFLG OOOD 0025 TPl NAM RTNEX 0014 TPlS 0015 TP2 0016 TP2S 0017 TP3 0 013
DCNT« 0029 TP4 001A TP4S 001B TP5 OOIC TP5S 0010 TP6 OQlE
TP3S 0052 TP7 0020 TP7S 0021 T13 0022 TIE 0023 TIl 0024
TP6S 0078 T9 0026 T8 0027 T7 0028 T6 0029 T5 O 02 A
TlO 00A8 T3 002C T2 002D Tl OQEE ISTK 0 0 2F ISTACK 0051
T 4 OOCA SPGM 0054 EXTRA 0056 BUFF 0058 REAL 0068 IMAG Q070
TA 00D6 AT2 0080 W 0088 XR 0090 YR 009β ZR 0OAq
ATI 00F8 LSTX OOBO BKWRT 00B8 BKKC 008A S0L7 00C6 UPP O OCi
TR 0000 ALPHA OOCC 101 OOCD 102 OODO IT7 O0D3 FLAG 00D5
UIP OOAO FILE 0.0 D 7 AR 00D8 RR QOEO CR O0E8 DR OOFO
TPOS one HT 7EOO TEPMN7 00-3D IMED 0040 PARCD OOCO PAREX 0080
ER 7EA6 PRGMl 7BCA EClUl 1 0168 EQU12 0170 E0U13 0178 EQU14 OOAC
NTBL 7EE2 EGUl OOBC E0U2 00C4 EQUl 6 0180 EQU3 OOCA E0U4 O0E2
EQU22 01C2 EOU20 00A6 EQU7 0160 E0U15 0180 RUMl 7E6E ST22 7ΕΔ0
EQU5 7FBO EOU6. 0146 ST14 7EAC STl 7EBC ST2 7EC4 ST3 7ECA
ST20 49E9 E0U21 0140 ST5 7FlC ST21 7F40 ST6 7F46 ST7 7F^O
ST4 49EF STIl 7F68 EQU18 01C8 ST12 7F70 ST13 7F78 TTl 7F80
EQU17 4A22 TT3 7FC2 TT4 7FC8 TT5 7FCE NINE 49E7 . EIGHT 4 of 3
TT2 4A80 SIX 49EA FIVE 49EB FOUR 49EC THREE 49E0 TWO 49EE
SEVEN 4A9B ZERO 49FO LL 49F5 BLK 4A13 F4D 4A16 T30 4AlC
ONE 4AAl BCOBIN 4A26 BCDl 4A57 3CD8 4A50 TYPE 4A68 GRPl 4Λ7ί.
DECPT 4AA7 CCNT 4A8B GRP? 4A8E AERR 4A92 UDFKO 4499 UOFKH 4ASi
FIMEl 4AD0 UOFKL 4A9C UDFKK 4A9D UOFKJ 4A9E UDFKI 4A9F UOFKH
UDFKM 4AEl UOFKF 4AA2 UDFKE 4AA3 UDFKD 4AA4 UOFKC 444S UOFKB 4i£ <b
UDFKG 4ΔΕ7 HANK3 4488 HAMK 4Δ8Α DOUG 4A3E OMEBYT 4ACl H Λ NKl ti".;
UDFKA 4AE0 A0D7 484B ERR0R7 7R4Q NK7 78E3 CONT 794C BWM . 797^
HANKE 4813 UDFN 4AE2 UDPM 4AE3 UDFL 4AE4 UOFK 4AE5 UOrJ ilr ώ P *\
UDFO UOFH 4AE8 UDFG 4AE9 UDFF 4AEA UOFE 4ΔΕ3 UOFD & ^" C
UDFI 4353 UDFB 4ΛΕΕ UDFA 4AEF FMT 4AFO UDFO 4303 UDF3 4BlO
UDFC 4866 UDF4 481D UDF2 4B27 UDF5 482F FMTO 4838 COVl 484^1
UDFl 4R6C ALPHAK SlAO LSLSCH 4970 AUOITl 5 ca C D7 4B51 06 495?
ALP 4B7F 04 4^54 03 4B55 02 4856 Ol 4857 DO 455*
DS ERRQQS F8 4B67 F7 4B68 F6 4369 F5 4364 F4 4°6«
F9 ROR 201 FS 4B6D Fl 4R6E FO 436F RfJODl 4P78 Pf-IOD 437-
F3 ERAl 4882
ERASE 22
TOTAL
5C-C-S-ER MAM FORMAT
218 ROR 201
327 NAM JSRJMP
»»«•«•ERROR 201
528
550
709808/1025
ORIGINAL INSPECTEP
a ■
.Page 36 CJRPG 06/04/75 36:54.05
00215 4E09 96 .- 07 - OPT LISTtMEM IS SET, · RER IS DISPLAYED. ,1 FC3 LDA A TGL WHAT MODE ?
00218 11 ■» NAM FORMAT ΓΗΕ PRGM CNTR BMI PMODE BRANCH IF PPGM MODE
00219 Q 6 CC »THIS OPT LISTfMEM «AND DESTINATION ADDRESS APE DISPLAYED. LDA A ALPHA ALPHA FLAG SET ?
00220 27 05 »IF IN ORG S4E09 a- BEQ DONTT BRANCH IF NOT
00221 BO 5D75 FRMTl JSR BLANK ELSF RLANK BUFFER
00222 20 54 BRA FC 3 DISPLAY "ALPHA"
00223 7E SCBC JMP FPMT+Sl4 ELSE USE PUN FO=MdTTcR
00224 4E09 CE OIOO LDX «256 INOEX = USER STATE 0
00235 4E08 DF C8 STX "UP P UPDATE INCORRECT 3RG-M PNTR
00226 4E0D 96 09 LDA A RSFLG ,RUNNING ?
00227 4E0F 2B F4 IS THE DISPLAY FORMATTER FOR CJ. DONTT BMI DONTT 'IF YES, DON'T FOP"AT HERE
00228 4cll BO 5D75 RUN MODE. THE X FC4 JSR BLANK ELSE BLANK BUFFER
00229 4E14 7A ooce »IF PRGM MODE DEC UPP REMOVE SYSTEM AORS OFFSET
00230 4E16 HE C3 PMOOE LDX UPP GET PRGM PMTO
00231 4Ξ19 7C ooce INC UPP RESTORE SYSTEM OF-SST
00232 4ElC f?O 488C JSR RINBCD CONVERT TO BCD
00233 4ElF CE 005« LOX «RUFF GET RUFFER ADRS
00234 4E20 66 3A LDA A K]J GET THE "P"
00235 4Ξ22 C6 03 LDA R «3 SET CHAR. COUNT
00236 4E25 β D 38 BSR LOAD LOAO CHSRS.
00237 4Ξ2Β «6 10 LDA "A «16 SET DIGITS CMTR
00233 4E2A = 0 67 8SR DGTS GO LOAD T"E DIGITS
00239 4c2D Q6 52 LDA A TA INSERT i-'OOE ?
00240 4Ξ3 0 ?7 06 BEQ FCP BRANCH IF »jot
00241 4Ξ33 0-3 INX pisiTi0N buffer ρ·π~
00242 4E35 INX
00?43 4E37 A6 4C LOA A «S4C •GET "INSE0T" CHAR.
0 0 244 4E39 47 OO STA A X SAVE IT
00245 4E3F! 96 C6 LDA A S0L7 GET CURRENT IMST
00246 4Ξ30 s-l 3E CMP A «IU276 LIGHT DISPLAY ?
00247 "E3F 22 2C BHI FCl BRANCH IF YES
00243 4E41 Qf> CC LDA A ALPHA
00249 4Ξ42 ?6 19 FC2 BNE FC3
00?50 4E4 3 OE OB LDX EOPM
00251 4Ξ45 OF 20 STX TP7
00252 4E47 OE C3 LDX UPP
00253 4 E 4.9 Df IE STX TP6
00254 4Ξ43 S.O 4840 JSR SUB7
00 255 4Ξ4Ο DE 20 LOX TP7
00256 4E4F 2F B9 BLE FC4 BRANCH IF UPP IS IN OCTH P
00257 4Ξ51 30 4£>BC JSR RINBCD
0025=1 4E53 CF 0064 LOX «P-UFF + 12
00259 4E55 ß 6 10 LDA A «16
00260 4E57 20 3A 8PA DGTS LOAD DIGITS ΔΝ0 CET:JRN
00261 4E59 CE 0063 LDX «BUFF+ll
00262 4£5C
00263 4Ξ5Ε
00264 4E60
00265 4E63
00266 4E66
00267 4Ε6^
00263 4E6A
00269
00270
00271
709808/1025
©BJQINAt
Page 37 CJ8PG 06/04/75 36:54.05
0027? 4E6D 85 47 LOAO LOA A *S47 R ai6
00273 4E6F C6 05 LOA B «5 X
00274 4E71 A7 OO · STA A X Tl
00275 4E73 4C INC A T2
00276 4E74 08 INX X
00277 4E75 5A FC DEC B P,
00278 4E76 26 F9 FCl BNE LOAO P *3
00279 4E78 39 RTS PFMTl
00260 4E79 OE ' 10 LOX W2 B T3
00281 4E7B OF 20 STX T2 B X
00282 4E70 CE 0064 LOX f*8UFF+l2 R «?30
00283 4E80 86 10 LOA A «16 B X
002R4 4E82 80 20 BSR OGTS H T3
00285 4E8& CE 0062 LOX 2RUFF+10 INC
00286 4E37 96 C6 LDA A SOL7
00287 4E89 81 OF CMP A fc3337
00288 4E«fl 22 OA BHI FO PFMTl
0028*3 4E8D 8 1 Cl CMP A #!5301
00290 4E8F 22 OC BHI TD PFMT2
00291 4E91 86 3F LDA A *«;3F ?i8«C
00292 4E93 C6 04 FO LDA R #4 S4840
00293 4E9S 20 OA BRA LOfiO
00294. 4E97 86 30 LDA A ÜS3D
00295 4E99 C6 02 TD LOA R «2
0 0.296 4E9°. ?0 04 BRA LOAD
00297 4E90 09 DEX
00293 4E9E 86 43 LOA A «"S43
00299 4EiO C6 04 LDA B «4
00300 4EA2 20 CD *OGTS BRA LOAD
00301
003Π2 OGTS TRANSFERS 8CD OI
00303 PF^T2
00304 4ΕΛ4 C6 10 PFMTl LDA
003C5 4E46 6s7 OO CLP
00306 ^EAt 7<? 002E ROL
00307 4EA-3 79 0020 ROL
00308 4EAt 69 00 ROL
00309 4E30 DEC
00310 4E=H C5 03 BIT
00311 4E-3 26 F3 8\'E
00312 4E»^ 07 2C STA
0 0 313 4ER7 E6 00 LDA
0 0 3 U <»E39 CA 30 ORA
00315 4Ei<3 £7 00 STA
00316 4ESO 06 2C LDA
00317 4E3F 26 01 INC BME
00318 4ECl 39 RTS
00319 4EC2 11 CBA
00320 4EC3 ?F E3 BLE
00321 4ECS 08 R INHCO INX
00322 4EC6 20 DE SUB 7 BRA
00323 43BC EOU
00324 4840 EOU
GET »ALPHA» MESSAGE GET CHAR. COUNT SAVE THE CHAR-· GET NEXT CHARACTER POSITION THE BUFFER POINTER DEC. THE CHARACTER COUNT CONTINUE IF NQT FINISHED YET ELSE RETURN GET RCD ADDRESS MOVE TO TEMPS FOR LOAO
SET BUFFER POINTER SET DIGITS COUNTER GO LOAD THE DIGITS
SET PNTR DECODE IMST FOP MESSAGE TYPE
GET "L3L-" MESSAGE GET CHAR. COUNT LOAD AND RETUPN GET THE "A-'1 MASSA GET CHAR. COUNT LOAD AND RETURN BACK UP ONE GET "SEG-" MESSAGE GET CHAR. COUNT LOAD ANO RETURN
LOAO OIGIT/SHIFT CT^ r.-jrn A CLEAR BYTE IH BUFFE= ROLL LSW LEFT ROLL MS"V LEFT ROLL «IT ΓΙΤ0 RUFFF.a WO^O OECD DIGIT/SHIFT CTP 4 SHIFTS YET?
NO» POLL NEXT RIT YES. SAVE OIGIT/SHIFT CTR LOAD ACC* ^1ITH DIGIT JU^T LOAOEO CONVERT IT TO ASCII RESTORE IT IN THE «UFF^P RELOAD DIGIT/SHIFT CTR DONE?
YES. RFTlJRN NO» LEADING Z»£O LOiOEO YES. LOAD NEXT DIGIT OVF» IT MO» INC3 SUFFER PT» LOAD NEXT OIGIT ImTO NEXT puFFE» LOC
709808/1025 ORiOlNAL INSPECTED
Page 38 CJBPG 06/04/75 36:54.05
00327 00328 00329 00330 .00331 00332 00333 00334 00335 00336 00337 00338 00339 00340 00341 00342 00343 00344 00345 00346 00347 00348 00349 00350 00351 00352 00353 00354 00355 00356 00357 00358 00359 00360 .0.0 36 L 0036? 00363 00364 00365 00366 00367 00368 00369 00370 0037t 00372 00373 00374 00375 00376 00377 00378 003?9 003*0 00301
4900
NAM OPT ORG
JSRJMP
LI ST,MEM
$4900
49 00 4C 4901 4903. 4904' 4905
4906 8C 4909 49 0Θ C6 4900 D7 490F 4911 DE 4913 E6 4915 2A
4917 OS
4918 OF 491A 491C 491D 49IF 4920
4921 2B 4923 Cl 4925 4927 7E 492A..C1 492C 492E
2E
0044
06
09
06
69
CA
00
01
20 21
20
07
63
71
49B7
CO..
3A
04
»THIS ROUTINE IS THE EXECUTION CODE FOR ALL JSR »STATEMENTS. IT CHECKS FOR LEVEL OVERFLOW (>5)» «SAVES THE RETURN ADRS ON.THE STACK. AND »TRANSFERS CONTROL TO THE PROPER JMP ROUTINE FOR »THE TYPE OF TRANSFER OESIRED.
JSRS INC A SET THE JSR FLAG
STA A Tl TO A ONE
INS WIPE OUT OLD STACK
INS RETURN VECTOR
TSX STACK TO INDEX
CPX «IP104 SURROUTIME OVERFLOW?
BNE NOV BRANCH IF NOT
LDA B /#9 ' LOAD ERROR
STA B ERROR STORE IN ERROR WORD
BRA MWB RET. TO SUPV.
NOV LDX UIP GET INST PNTR
LDA B X GET THE INST
BPL- SING BRANCH IF SINGLE BYTE
INX ELSE INC RTN PNTR
SING ' STX TP7 SAVE IT TN TEMPORARY
LDA A TP7+1 ' GET THE LS BYTE
PSH A PUSH IT ONTO STACK
LDA A TP7 GET THE MS BYTE
PSH A PUSH IT ONTO STACK
TST 8 WHAT TY°E OF JSR
BMI NX BRANCH IF ABS OR LBL
CMP P m143 JSP X ?
BEO JSPLK2 BRANCH IF YES
JMP JSPLKl ELSF. OO JSR LBL X
. . CMP .8 _ a*<300 ABSOLUTE OR LABEL?
BEO JSPLKi GO Oo JSR LhL
BRA JSPLK3 GO OO JSR AflS
4930 4931 4932 4934 OE 4936 A6 493* 493A E6 493C 5B 4930 493E 493F 4C 4940 4942
2E CA 00 OF 01
21 20
»This routine «and absolute »entry point.
jmpabs ins
INS STA A
JSRLK3 LDX
LDA A AND A LDA R ASL R LSR A ROR R INC A STA R
L2 STA A executes absolute jumps jsr's dependivg upon the
Tl UIP X
TP7S ΤΡ7 WIPE OUT OLO STACK
RETURN VECTOR
CLEAR JSP FLAG
INOEX=INST ADRS
ACCA=FIRSTTyTE
ACCA=MSB1S OF AORS SB1S OF AORS OF THE AORS H7 OF AORS
97 Ot=- ACCB=rf7 OF AORS
SAVE LS BITS SAVE MS HI TS
709808/1025
OKGlMAL INSPECTED
Page
06/04/75 36S54.05
- 62 -
00392 00333
003?5 00386 00337 00339 003*9 00390 00391 00392 00393 003^4 00395 0 0 396 00 397 00398 00399 00400
4944 4946 4948 494A 494C
4950 4953 4955 4956 495S 495A 455C 4950 495F 4960 4962
DO OC 9? 08 2Λ 60 ·* OE Εβ OO 23 OO BC 0100 27 09
Eft OO Cl BA 22 Ol Ο»
OF C3 09
OF CA 20
004-12 00403 0 0 4.14 00405 004S6 004.17 0 04 08 00409 004 iO 00^11
• 0 0 412 00413 0 0414 00415
-OO^iV-O O * 17 00418 00419 00420 00421 00422 00423 00424
4956
4568 496A-
496C
49<,E 4570 4972
4578 4G7Q 4-J7A
31
31
97 2Ξ
ΠΕ CA
AS Ol
80 OF
2Λ EC
C6 0
07
Dt 2Ξ
27
31
31
7E 7973
SUB B EOPM+1 DO ADRS-cOPM
SBC A FOPM
. BPL TOOBIG EOPOR IF AORS >= EOPM
LDX - TP7 ' GET THE ADDRESS
LDA B X ACCB=INST THERE
BMI LINK POSSIBLE 2ND BYTE?
CPX «256 STATE O?
BEQ - LINK YESi' CONTINUE
OEX NO? CHECK FIRST BYTE
LOA B X GET "FIRST" BYTE
CMP 8 «SDBB TWO BYTE INSTRUCTION
BHI LINK BRANCH IF NOT
OOIT INX INCREMENT ADRS
LINK STX UPP UPDATE THE PRGM PNTR
DEX BACK UP
STX - UIP UPDATE INST PNTR
BRA MWB RETURN TO SUPV. ·»
»THIS ROUTINE WILL SET THE USER INST PNTR
*ANO THE USER PRGM PNTR TO THE ADDRESS
*QP THE LABEL IN QUESTION IF IT FINDS THAT LBL.
»IF THE LABEL IS NON-EXISTANT♦AN ERROR RESULT.
WIPE OUT OLO STACK
RETURN VECTOR Tl CLEAR JS=* FLAG UIP GET INST ADRS IiX ACCA=THE LAßEL LR-LSCH GO FINO ThE L^L OOIT BRiNCH IF LABEL FOUNO «8 LOAD ERROR Ecc?QR SAVE IN =:r«OP WORO Tl TEST JSR FLAG MWB 3RANCH IF NOT JSR
ELSF WIPE OUT TH£
STORED RETURN VECTOR BWM RETURN TO SUPV
«■THIS ROUTINE ACCENTS A LAREL TN 4CCA ivO RETURNS *tfITH THE P/w ÄDPS OF THAT LABEL IN THE »INDEX REGISTER. SEARCHING BEGINS AT STATE 0 *OF THE USE» PPGM. IF NO LBL WAS FOUND. «•THE N BIT WILL BF. SET.
JMPLBL INS INS - STA A
JSRLK4 LDX
LOA A BSR BPL "
CANT LOA R
C< STA E1 LDA a BEQ ■ INS INS
JMP
004?6 00*27 4970 004?» 49^0
00429 4J3?
00430 49^3
00431 43ή5
00432 4937
00433 4939 00434 00435 00436
CE OOFF
C^ er
03
9C
27 OA
El OO
26 F7
OR
Al OO
E 26 F2
L3LSCH LOX
LDA B
SEAPCH INX CPX SEO CMP R BNE INX CMP A BNE "255 INIT STAPT ADOS
«£277 ACCR = LABEL INSTRUCTION
INC AORS
EOPM END OF MEMORY? SOPRY RRAMCH IF YES X LAP-EL INST ? SEAPCH 8RANCH IF MOT
ELSF INC AORS X IS IT THE PIG-iT SEARCH IF NOT* SEARCH
9808/102 5
ORIGINAL IMSFEGTED
Page 40 CJPPG 06/04/75 36:54.05
00437 4990 39 FF RTS •a· «■5FF yes; return AND NO OUT OF RANGE» AN ERROR «· Tl WIPE OUT OLD STACK IN THE CONVERT. X-REG - , Tl WIPE OUT OLO. STACK BRANCH IF FOUND TO Wl J, W2 FOR A THE H OF INTEGER DIGITS
00438 4991 86 SORRY .LDA A »THIS ROUTINE SET N BIT (ERROR) CHANGE IN »THIS ROUTINE XR RETURN VECTOR FOUND GET MSB'S OF RESULT RETURN VECTOR ELSE ERROR »rtCO TO BIMARY CONVERSION. ON REGISTER ADDRESS
00439 4993 39 RTS RETURN »POINTERS WILL OCCUR. ADRSO CLEAR JSR FLAG INC PAGE ADRS XR CLEAR JS^ FLAG «ENTRY. ACCP=
00440 SETS ■ο ACCB=X REG EXP GET LS BITS ZOOP PRESET ACCA FOP LA^EL 0 TRANSFERS THE INTEGER »AND INDEX =
00441 »THE USER PPGM PNTR THE USER INST PNTR AND JMPX INS «4 BRANCH IF NEG EXP CHECK FOP VALID ADDRESS ACCR=X-REG EXPONENT X REG
00442 »THE INTEGER TO THE ABSOLUTE VALUE OF INS INCREMENT EXPONENT LOAD ERROR «2 IF NEG.» FIND LAPEL Q
00443 PART OF THE X REGISTEP. IF THE STA A COMPARE TO +4 GO CHECK FOR JSR CANT ACCR=« OF INT DIGITS
00444 »RESULTANT ADRS IS JSRLK2 LDA B TOOBIG BRANCH·IF BIGGER GET ADRS 0 TSFRl MORE THAN 2?
00445 »WILL RESULT BMI TSFPl CONTINUE TP7 + 1 ERROR IF YES
00446 INC B TP7 CONVERT X-REG
00447 CMP B THE USER INST PNTR AND GET BINARY RESULT
00448 4994 31 BGT TP7+1 TO THF AORS OF THE" LPLSCH OO SEAPCH FOR LAREL
00449 4995 31 2E BSR L2 X REG. IF THAT DOIT
00450 4996 97 90 LDA A #24 . NO CHANGE IN CANT
00451 4998 06 12 INC A CK »POINTERS WILL OCCUR.
00452 499A 2fl LDA R £256
00453 499C 5C .04 BRA LINK JMPLBX INS
00454 499D Cl 09 TOOBIG LDA B INS
00455 49QF 2E 28 BRA SETS STA A
0 0456 49Al 80 20 ADRSO LDX »THE USER PRGM PNTR JSRLKl CLR A
00457 49A3 96 BRA »LABEL FOUMD LDA B
00458 49A5 4C 21 »L4?EL IS MOT BMI
00459 49A6 .06 93 INC B
00460 49A8 ?0 18 CMP' 8
00461 49AÄ C 6 C4 BGT
00462 49AC 20 0100 BSR
00463 49AE CE AA LDA A
00464 49*1 ?0 ZOOP BSR
00465 BPL
00466 BRA
0 0 467'
.0 0468 »THIS ROUTINE
00469 - «OART OF THE
00470
00471
00472 49=53 31
00473 493.4 31 2E
00474 49^5 97
00475 49Β7 4F 90
00476 49 ? 8 06 09
00*77 4VRA ?Q
0047*5 49P.C 5C 02
00479 49RD Cl AF
004H0 49BF RE 08
0 0 4.81 49Cl 80 21
00482 49C3 96' 86
00483 49C5 80 93
004.84 49C7 A5.
00485 49C9 80
00486
00437
00488
00489
00490
0 0 491
7 0 9808/1025
ORIGINAL INSPECTED
Page 41 CJBPG 06/04/75 3.(S:54.05
00492 49CB CE 0090 »SPECIAL ENTRY 8 FOR X-REG ONLY PRESET THE INDEX'
00493 0
00494 49CE EE 02 TSFRl LOX A «XR GET 4 MANTISSA DIGITS
00495 49D0 DF 10 ■a SAVE IN BCD CONV V-(OROS
00496 4902 CO 04 TSFR LOX 2»X ACC·3= -(DIGIT SHIFT COUNT)
00497 4904 27 OE STX A W2 no shift; return
0049a 4906 S 6 0 4 SUB «4 ELSE LOAD ROTATE COUNTER
00499 490B 74 0010 8EO B TSFRC SHIFT MOST SIGNIFICANT WQRO
0O5OO 490B 76 0011 PBl LOA «4 ROTATE LSW
00501 49OE 4A RB LSR W2 DEC ROTATE COUNTER
00502 49DF 26 F7 ROR wi CONTINUE IF NOT 0
00503 49El SC DEC INC DIGIT SHIFT COUNTER
00504 49E2 26 F2 BNE PB CONTINUE IF NOT 0
00505 49E4 7E 4A26 INC CONVERT TO BINARY
00506 797B BNE RBl
00507 4Δ26 TSFRC JMP BCDBIN
00508 7CC0 BWM EOU 1:7976
00509 7CC0 4983 BCOBIN EOU S4A26
00510 7CC2 4900 ORG S7CC0
00511 7CC4 4994 FOB JHPLBX
00512 7CC6 4900 FOB JSRS
00513 7080 FOB JMPX
00514 7080 4900 FOB JSRS
00515 7Qfl? 4964 ORG S7080
00516 7DC0 FDB JSRS
00517 70CO 49 0 0 FOB JMPLBL JSRS ι JSRS » JSPSiJSRS.JS-S.JS0S 1JSRS«JSRS
00518 7000 4900 ORG S7DC0 JSRS. JSSSi JSRS «JS^S. JSWS ♦ JS^Si JSP"=:. JSP. S
00519 7OE0 4930 FOB JMPABS.
00520 70 E3 4930 FOB JMPA8S.
00521 70F0 4O30 FDB JMPARS.
00522 7OFP, 4Q-50 FOB JMPABS·
00523 FOB .JMPARS, JSfPaBS. JMP ABS
00524 FOB .JMPARSiJMPABS<JMPARS
00525 ,JMPARSiJMPABS.JMPABS
. JMPABS»JMPARS,JMPABS
70 9808/102 5
Page 42 CJ9PG 06/04/75 36S54.05
00528 482A D6 D5. NAM F! A ENDEX - GET MEMORY SECUPE IN
00529 C4 FE OPT 8 A LI ST,MEM FOR "ERASE" ROUTINE CLEAR SECURE BIT
00530 07 05 ORG 8 S482A RESTORE FLAG
00531 97 52 A FLAG CLEAR INSERT MODE
00532 482Δ #$FE
00533 4fi2C »THIS ROUTINE FLAG THE END STATEMENT
00534 482E TA
00535 4B30 8E 0051 EN1DEX LOS RESET STACK POINTER
00536 97 08 »SPECIAL ENTRV STA EXECUTES CLEAR USER FLAGS
00537 97 09 STA CLEAR R/S FLAG
00538 CE 0100 LDA LDX #ISTACK 256=USE" STATE 0
00539 483? 7 E 4950 AND JMP UFLG PRESET UPP AND RETUR
OOSiO 4B35 STA ORG PSFLG
005*1 4837 4832 STA FOB #256
00542 4839 LINK
005*3 4 S3 C S7D62
00544 7D62 ENDEX
00545 7D62
00546
00547
70980*8/1025
Page 43 CJFiPG 06/04/75 36:54.05
00550 00551 0055? 00553 00554 00555 00556 00557 00558 00559 00560 00561 00562 00563 00564 00565 00566 00567 00568 00569 00570 00571 00572 00573 00574 00575 00576 00577 00573 00579 onseo
4859
NAM
OPT
'ORG
RTMEX
LISTiMEM
£4859
4850 48 5 A 4858
485F 4361 4962 4363 4865 4367 4868 4364
486F 4871 4373 4375 4877
4374 4870 7D66 7066
31
31
30
PC 0052
27 OC
32
•40
2B OE
97 CA
32
97C8
7E 7978
86 OA
97
20 F7
R4 3F
97 C8
32
97 C9
7F 0009
20 ES
4359 IF NOT* AN ERROR WILL RESULT
WIPE OUT OLD STACK RETURN VECTOR STACK TO INDEX «ISTACK+1 «ÄS A GOSUB EXECUTED
»THIS ROUTINE HANDLES THE RETURN FROM SUBROUTINE »INSTRUCTION. IT FIRST CHECKS TO SEE IF 4 »HAS BEEN EXECUTED.
■&
RTNcX INS
INS
TSX
CPX
BEO
PUL
TST
BMI ' STA
PUL
STA
RETN JMP NOJSR LDA
STA
ÖRA RTMEXl AND
STA
PUL
STA
CLR
3RA
ORG
FDB
A A A
A A
A A A A
NOJSR
RTNEXl UIP
UIP +
«WM
«10
ERROR
PETM
«•53F
UPP
UPP+1
PSFLG
RETN
S7D66
RTNEX BRANCH IF NOT ELSf=" GET '-ISW OF ADRS UDF RETURN ? 9RANCH IF YES SAVE IN INST PNTR GET LSW OF ADRS SAVE IN INST PMTR RETUON TO SUPV LOnD ERROR SAVE IN ERROR WORD RETURN TO SUPV REMOVE UDF FLAG RESTORE PPGM PMTR HI GET PRSM PMTR LO RESTORE IT STOP RUNNING RETURN TO
709808/102
Page 44 CJ8PG 06/04/75 36:54.
05
END
SYMBOL TABLE
AOATA 0000 ACTL 0001 BDATA 0002 BCTL 0003 INPUT 0004 IOIN 0005
ERROR 00O* TGL 0007 UFLG 0008 RSFLG 0009 EOM onoA EOPM oooe
STKFLG 000D RNO OOOE DIGFLG OOOF W 2 0010 Wl ooii ■ SFLG 0012
DCNTR 0013 TPl 0014 TPlS 0015 TP2 0016 TP2S 0017 TP3 0018
TP3S 0019 TP4 OOIA TP4S 0010 TP5 OOIC TP5S 001O TP6 001E
TP6S- 001F TP7 0020 TP7S 0021 T13 0022 T12 0023 TIl 0024
TlO 0025 T9 0 026 T8 0027 T7 0028 T6 0029 T5 002A
T4 0 028 Τ3· 002C T2 0 020 Tl 002E ISTK 002F ISTACK 0051
TA 0052 SPGM 0054 EXTRA 0056 9UFF 0058 PEAL 0068 IMAG 0070
ATI 007R · AT2 0080 W 0088 XR •Q090 YR' 0098 ZR OOAO
TP 0OAS LSTX OORO BKWPT 0088 BKKC 008A S0L7 00C6 UPP 00C8
UIP O OCA ALPHA OOCC 101 O OCD" 102 OODO 177 00O3 FLAG 00D5
TPOS 00D6 FILE 00D7 AR 00D8 BR OOEO 0ΠΕ8 OR OOFO
ER O OFR SDBR 008A MT 7EOO TERMM7 0030 IMED 0040 PARCD ÖOCO
PAREX 0080 NTBL 0000 DOTS 5ECO PRTDRV 6020 FRMT 5CA8 BLANK 5075
LDMSG 578Γ) ROLLO 55B2 ROLLU 57Fl PSO 550 Δ TXL 55E9 STKUP 55EF
MAD 749B CMP 74AA NQR 74D6 TXW 7424 TXXR 7438 EXXR 7452
ARSP 7538 OVUNF. 7586 OVERF 75DD XRO 74OA XRNINE 75C8 UNDRF 75Fl
IMULT 7639 QDG 76T69 FPA 75FC FPS 75F6 FPM 7735 FPD 7793
FPAEX 7630 FPMEX 7780 LSHIFT 7521 ZEROV 7489 XZEPOO 7416 XZER02 7417
PFCIP 73E6 TXRX 73F3 CONST 6800 FPD8RC 6898 TAN 6849 .ATN 69C3
DSZERO 6 446 NTLN 6A58 EXPN 6AC9 SlN 6894 COS 689A ASIN 6HF2
ACOS 68F7 PHl 6C50 PH2 6CPD PH 3 6D34 PH4 6000 LSFT8 6E47
SORT 6E65 MAD8 6F2C CMP8 53E4 IOUPX. 6F52 LOGlO ftFAT YUPX 6FE9
RTOP 7328 PTOR 7386 FRMTl 4E09 LIONTT 4E16 FC4 4E19 PMODt 4ElE
FC2 4E47 FC3 4E6A LOAO 4E71 FC 4E78 FCl 4£79 FO 4ΙΪ9 7
TD 4E9D DGTS 4EA4 PF^T2 4EA6 PFMTl 4E48 IMC 4EC2 aiMPCO 453C
SU87 4940 JSRS 4900 NOV 4911 SING 4918 NX 49?4 JMPji a S 4930
JS3LK3 4934 L2 Λ342 DOTT 495C LIMK 4950 JN1PLBL iU64 JS^L*4 496«
CANT 4970 CK 4972 MWB 497A LBLSC* 497D SEARCH 49S2 ςΓι^ργ 4 991
JMPX 4994 JSRLK2 4998 TOOPIG 494Δ 4DRS0 49AE J1·'F-LBX 4QR3 JSRL*1 4987
ZOOP 49C5 TSFRl 49C8 TSFR 49CE RBl 4906 RB 4QQ3 TSFRC 49E4
8WM 7978 BCD8IN 4A26 ENDEX 4832 RTNEX 4859 RETN 486A NOJSP 4β60
RTMEXl 4873
TOTAL ERRORS
««««ERROR 201 218 NAM RSEXR 201
NAM SUIADO £01
282 NAM 3INBC0
««««ERROR 201 325 NAM CJUFLG
709808/1025
OBIQlNAL IMSPECTED
-•68 -
Page 45 C.JRPG "6/04/75 36:54,05
00215 4800 OF 09 β OPT A L I ST»MEM OISARLE INTERRUPTS
00218 96 »THIS NAM A RSEXR GET P/S FLAG
00219 IF OPT LIST,MEM SHIFT 37 TO C
00220 ?5 10 RSEX 0R6 S4800 8RAMCH IF B7 WAS A
00221 4800 28 A BRANCH IF 56 IS 1
00222 4801 44 A B7=B6=0
00223 4803 43 CS B7=R6=1 (RUN!)
0 0 224 4814 OE GET PSGM PNTP
00225 480 6 09 CA SUBTRACT 1
00226 450B DP 8 SAVE IN INST PNTR
0 0 227 48.19 5F B9 POUTINE B PROCESSES THE RUN-STOP KEY
00228 4R0A D7 12 R CLEAR KEY BUFFER
00229 480C D7 09- SEI A CLEAR STEo FLAG
00230 4*510 97 LDA RSFLG RESTOPE ME1·* FLAG
0 0231 480F OE ASL ENARLE INTERRUPTS
00232 4810 39 BCS A B70N RETURN
00233 4SI? 4F CA ZIP BMI B60N CLEAR 3/S FLAG
00234 4314 DE C3 RACK LSR GET INST DNTR
00235 4316 OF 40 COM B SAVE P^GM PNTR
00236 4817 ce 08 »50Ν LOX P UPP PRESET ACCR
00237 481* 08 DEX θ SET THE ENTOY FLA<3
00238 4819 07 EF ZIPl STX UIP RESTORE FLAGS
00239 48 IB 20 EF CLR GO STOPE FI.AG
002S-0 4810 2i STA Δ BKWRT+1 RETURN IF 86=0
0 0 241 43 IF EA STA SFLG 0 TO 3?
002*2 4821 20 STA RSFLG RETURN
0 0 2^3 &823 30 R70N CLI
002i4 4«'.5 4?. RTS
002-5 4 3 57 CLR
002*5 4P?3 LOX UIP
00247 7D5O STX UPP
0 0 2^8 7D60 LOA if540
0ft2->9 ORA UFLG
0 0 250 STA UFLG
00251 BRA 7IP
BPL PACK
LSR
3RA ZIP
ORG S7Q60
FOB 3SEX
709808/1025
OR'GIHAL !HSFS
Page 46 CJRPG 06/04/75 36:54.05
00254 00255 00256 00257 00258 00259 00260 00261 00262 0 0 263 00264 00265 00266 00267 00268 0 0 269 00270 00271 00272 00273 00274 00275 00?76 00277 00278 00279
4840
NAM SUBAOD
OPT LI ST,MEM
* ORG S4840
a-
SUBADO - 16 BIT 2'S COMP 4D0/SUBTRACT
■a·
BRAD MILLEP 3/4/74
4840 73 4843 73 4846 OE 4348 08 4849 DF' 4843 96 4840 9B 484F 97 4851 96 4353 99 4855 97 4857 39
»THIS SUBPOUTINE PESPOPMS EITHER TP7-TP6 OR ΓΡ7+ΤΡ6
«DEPENDING UPON TH£ ENTRY POINT.WHEfE TP7 4NO
«TP6 ARE »16 BIT WORDS" STORED IN MEMORY. THE CONTENTS
*OF THE INDEX ARE DESTROYED.
«•THE RESULT IS STORED IN TP7 AND TP7+1
00 IE SUB7 COM TP6 1«S COMP' THE MSB'S
001F COM TP6+1 l'S COMP LSB'S
IE LDX · TP6 INOEX=THE NUMBER
INX INC FOR 2'S COMP
IE STX TP6 RESTORE THE NUMBER
21 ADD7 LDA A TP7S GET LS BITS
IF ADO A TP6S ADD
21 STA A TP7S RESTORE
20 LDA A TP7 GET MS BITS
IE ADC A TP6 AOD
20 STA A TP7 RESTORE
RTS RETURN
TO'9808/102
ORIGINAL INSPECTED
Page 47 CJRPG 06/04/75 36:54.05
00282 488C OF * * * NAM AND Tl BINBCD - . THE MAX INPUT IS
00283 7F »THIS I OPT LIST,MEM DOES A BINAPY TO 8CD CONV DIGITS ARE STORED
00284 7F ORG STX S48BC PEGISTER DIGITS IN T2
00285 CE CLR . THE BCD
00286 OF CLR WITH MS SAVE 8INARY NUMBER
00287 BO LDX CLEAR LS BCD ACC
0028& 2R 20 STX TP7 CLEAR MS BCD ACC
00289 4BRC 7C 002Ε JSR Π PRE0ARE TO SUST 1000
00290 483E 20 0020 ROUTINE BMI T2 SAVE THE SUBT VALUE
00291 48Cl RO FC13 »ON THE INDEX INC «-1000 DO TP7=TP7+TP6
00292 48C4 20 IE »DECIMAL 9999 BRA - - TP6 - RESTORE IF NEGATIVE
00293 48C7 CE 4848 «IN T2 JSR ADD7 ELSE INC LS BCD WORD
00294 48C9 20 05 » BRA RESTOR CONTINUE SUBTRACTING
00295 43CC CE 002E RIMBCD LDX Tl , RESTORE BINARY »
00296 43CE 20 F6 BRA MOREl STORE BCD OIGIT
00297 480Γ 4840 LOX SU87 PREPARE TO SU8T 100
00298 48D3 11 BRA STOBCD GO OO 100'S
00299 4806 97 FF9C STARTl LDA A #-100 PREPARE TO SUBT 10
00300 4808 39 EA MOREl ORA A STARTl go no lo»s
00301 49Π3 96 FFF6 STA A «-10 GET LS 3CD DIGIT
00302 4800 44 ES RTS STARTl COMBINE WITH LS 8CO WORO
00303 48Ε0 C6 21 LOA A ΤΡ7+1 RESTORE THE RESULT
00304 43Ε2 OC 2E RESTOR LSR A Tl CONVERSION COMPLETE
00305 43Ε4 79 2E LOA B Tl GET LSB«S OF SUBT WORD
00306 48Ε6 79 8IN3 CLC SHIFT RIGHT FOR TEST
00307 43Ε8 IF ROL ΤΡ6 + 1 ACCR==!OTATE COUNT
003Π9 4ÖE9 2ft RIN2 ROL CLEAR C FOR ROTATE
00309 48Eq 44 04 DEC OC) *4 ROT LEFT LSW,C=B7
00310 48EC' 25 9INl ONE ROT LEFT MSWtBO=C
00311 48FE 44 002E LSR A Tl OEC ROTATE CNTR
00312 48EF 25 002O BCS T? 4 ROTATES YET?
00313 48F2 20 LSR A SHIFT LSR TO C
00314 48F5 F6 STORCO BCS ROLLIT C=I MEAMS 10"S DONE
00315 48F6 BRA SHIFT AGAIN
00316 48F8 E7 RINl C=I MEANS 100'S DONE
00317 43F9 ROLLIT 1000«S DONE BY DEFAULT
00318 43FB DF ΒΙΝ2
00319 48FC 08 ΒΙΝ3 ·
00 320 4BFE
00321
00322
7 09 8 0*8 / 1 0 2 5
Page 48 CJBPG 06/04/75 36:54.05
00325 4380 49 « NAM CJUFLG * MILLER 3/4/74 ROUTINE HAS 8 . ON ENTRY FL^G. ON ENTRY POINTS. 1 FOP EACH * SUBROUTINE FLAG. OM ENTRY POINTS. 1 FOR ROL A THE C BIT IS
00326 49 « OPT FLAG BIT MUST THE CARRY . ACCA MUST <3E ZERO AND ENTRY. ACCA MUST ROL A SET AND ROTATED
00327 49 « ORG LIST.MEM CARRY BE SET. ENTRY POINTS. 1 FOR «BE ZERO AMO THE CARRY BIT MUST BE SET ROL A THRU ACCA STOPPING -
00328 49 $4860 FLAG SUBROUTINES A A ENTRY. ACCA MUST BE POL Λ AT THE COORECT
00329 49 « BRAO ROL A A THE C BIT IS SET 3IT MUST BE SET." - IFS8
00330 49 «««SET USER FLAG*** ROL A A AND POTATED THRU ACCA IFS7
00331 49 USER » ROL A A STOPPING 4T THE THE C BIT IS IFS6
00332 49 *THIS ROL A A CORRECT POSITION FOR SET ANO »OTATED IFS5
00333 9A 08" «USER ROL A A EACH FLAG. R7=FL6 8 THRU ACCa STO=PIMG
00334 97 08 «THE ROL A A WHILE 80= FLG 1 AT THE CORRECT
00335 39 β ROL A " A LOCATION FOR EACH
00336 SF8 ROL A UFLG A FLAG. 37= FLG 8
00337 4880 SF7 ORA A UFLG A UFLG »OR» IN THE USE» FLG WORD WHILE 80= FLG 1
00338 4381 SF6 STA A UFLG RESTORE NEW STATUS
003^9 4882 SF5 RTS RETURN . 1»S COMP ACCA
00340 4883 SF4 USER FLAG CLEAR THE FLAG
00341 48 B 4 SF3 CLEAR RESTORE THE FLAG WORO
00342 4385 SF2 ROUTINE HAS 8 RETURN
00343 4386 49 SFl USER
00344 4887 49 AND IF FLAG SET SUBROUTINE
00345 4388 49
00346 488A 49 ROL
00347 43 8 C 49 ROL ROUTINE HAS 8
00348 49 « ROL USER
00349 49 ROL
00350 49 «THIS ROL
00351 4*3 «EACH ROL
00352 04 08 «ZERO ROL
00353 07 08 ROL
00354 39 CFS COM
00355 CF7 AND
00356 43SE CFS STA
00357 438F CF5 RTS
00 35 A 4890 CF4
O0359 4391 CF3
00360 439? CF 2
00361 4393 CFl
00362 4394 49
00363 4395 49
00364 4896 49
00365 4398 49
00366 489A «
00367
00368 «
00369 «THIS
00370 «EACH
00371
00372
00.373
00374 439R
00375 489C
00376 4890
00377 489E
0037*
00379
70 9 8.08/102 5
Page 49 CJBPG 06/04/75 36:54.05
00380 489F 49 IFS4 ROL A UFLG LOCATION FOR EACH CARRY ·* ENTRY POINTS· 1 FOR
00381 48A0 49 IFS3 ROL A - NOTSET FLAG. 87= FLG 8 ENTRY. ACCA MUST RE
003«2 48Al 49 IFS2 ROL A WHILE BO= FLG 1 BIT MUST BE SET.
003A3 48A2 49 •IFS1 ROL A NMET
00384 48Δ3 94 08 AND A ACCA=FLAR STATUS THE C BIT IS
00385 48AS 27 01 BEQ ACCA=O IMPLIES NOT SET SET AND POTATED
00386 48A7 39 RTS FLAG SET1. PETURN THRU ACCA STOPPING
00387 48A3 7E 4BA8 NOTSET JMP 60 MODIFY PRGM. PNTR AND »ETU AT THE CORRECT
00388 « LOCATION FOR.EACH
00389 • 1 [F FLAG ι CLEAR SUBROUTINE FLAG. B7= FLG 8
00390 e UFLG WHILE BO= FLG 1
00391 «THIS HAS 8 NOTSET
00392 «EACH ROUTINE FLAG. ON ACCA = FLAG STATUS
00393 »ZERO USER ΓΗΕ S4BA8 ACCAaO IMPLIES FLG SET
00394 β AND 1 S7C80 not set; return
00395 43AB 49 IFC8 A SFl
00396 48AC 49 IFC7 ROL A SF 2
00397 48AD 49 IFC6 ROL A SF3
00398 48ΔΕ 49 IFC5 ROL A SF4
00399 48AF 49 IFC4 ROL A SF5
00400 4830 49 IFC3 ROL A SF6
00401 48Rl 49 IFC2 ROL A SF7
00402 4382 49 IFCl ROL A SF8
00403 4883 94 08 ROL A IFSl
00404 4335 26 Fl AMO IFS2
00405 48R7 39 SNE IFS3
00406 4BA8 NMET ■ RTS IFS4
00407 7CP0 EOU IFS5
00408 7C30 4887 ORG IFS6
00409 7C32 4886 FO9 IFS7
00410 7C«4 4AA5 F08 IFS8
00411 7C«6 4AS4 FOB' CFl
0041P 7csa 4<383 FOB CF2
00413 7C8A 4flf»2 FD8 CF 3
00414 7C8C 4fl«l FOB CF4
00415 7C8E 4ββ0 FD8 CF5
00416 7C90 4ΛΑ2 FOB CF6
00417 7C92 4AAl FOB CF7
00418 7C94 &ΑΔ0 FOB CF8
00419. 7C96 4J59F FDS IFCl
00*20 7C93 489E FD8 IFC2
00421 7C9A 4A90 FDB TFC3
00422 7C9C 4A9C FOB
00423 7C9E 499B FDB
00424 7CA0 4394 FOB
00425 7CA? 4«93 FDB
00426 7CA4 4692 FDB
00427 7CA6 4891 FDB
00428 7CAA 4890 FDB
00429 7CAA 4AAF FOB
00430 7CAC 483E FOB
00431 7CAE 4880 FOB
00432 7CR0 48R2 FDB
00433 7C82 4«B1 FOB
00434 7C34 48B0 FDÖ
FD8
7Q9&08/1025
ORIGINAL SMSPEOTED
β . - 73 -
Page 50 CJSPG 06/04/75 36:54.05
00435 7C36 48AF FOB IFC4
00436 7CR8 4βΑΕ · -FOB IFC5 00^37 7C8A 4βΑΠ ' ■ FDB IFC6
00438 7C3C 48AC FOB IFC7
00439 7CBE 48Α8 FD8 IFC8
7.098J08/1G25 ; / ■
ORiQSMAL INSPECTED
Page 51 cjbpg Ofi/04/75 36:54.05
END
SYMBOL TABLE.
ADATA 0000 ACTL 0001 80ATA 0002 BCTL 0003 INPUT 0004 IOIM 0005
EPROP 0006 TGL 0007 UFLG 0008· RSFLG 0009 EOM OOOA EOPM oooa
STKFLG OOOD RNO OOOE DIGFLG OOOF W2 0010 Wl 0011 SFLG 0012
OCNTR 0013 TPl 0014 TPlS 0015 TP2 0016 TP2S 0017 TP3 0018
TP3S 0019 TP 4 001Δ TP4S 001B TP5 OOIC TP5S 0010 TP 6 001E
TP6S 001F TP7 0020 TP7S 0021 T13 0022 T12 0023 TH 0024
TlO 0025 T9 0026 T8 0027 T7 0028 T6 0029 T5 002A
T4 002R T3 002C T2 0020 Tl 002E ISTK 002F !STACK 0051
TA 0052 SPGM 0054 EXTRA 0056 BUFF 0058 REAL 0063 IMAG 0070
ATI 0073 AT2 0080 W Ό088 XR 0090 YP 0098 ZR OOAO
TR 00A8 LSTX OOBO 3KWRT O ORS 8KKC O OB A SOL7 OOCo UPP o oca
UlP OOCA ALPHA OOCC 101 OOCO 102 OODO IT7 0003 FLAG 00O5
TPOS 0006 FILE 0QD7 AR 0 008 BR OOEO CR 00E3 OP OOFO
ER · 0OFe SDBB OORA MT 7E00 TERMM7 003O I"EO 004-0 PARCD QOCO
PAREX 0080 NT8L 0000 DOTS 5ECO PRTDPV 6020 FRvrr 5CA3 BLANK 5D75
LOMSG 57B0 POLLO 5582 ROLLU 57Fl PSO 55OA TXL 55E9 STKUP 55EF
MAO 749R C « P 74AA NOR 7406 TXW 7424 TXXR 7433 EXXR 7452
ARSR 753S OVUNF 75*56 OVERF 75DD XRO 74OA XRNINE 75C8 UNOPF 75Fi
I^ULT 7649 ODG 7669 FPA 75FC FPS 75Fft FPM 7735 FPD 7793
FPAEX 7630 FPMEX 7780 LSHIFT 7521 ZEOOX 7489 XZEROQ 7415 XZEPO2 7417
PlECIP 73E6 TXR< 73F3 CONST 6800 FPDBRC 6898 TAN *dA9 ATN 65C3
OSZERO 6A46 NTLM 6A58 EXPN 6AC9 SIN 6894 COS 6Β<ΪΑ ASIN 6RF2
ACOS 68F7 •-PH1 6C50 PH2 6C80 PH3 6034 PHi 6OO0 LSFT8 6E47
SORT 6E65 HAO 3 6F2C C-MPS 53E4 IOUPX 6F52 LOGlO 5FA7 YUPX 6FE9
RTOP 73?8 PTO^ 738ή RSEX 4800 ZIP 4814 BACK 4810 boon 4318
ZIPl 481R 870N 4525 SU^7 4840 A007 484H rtlfv-'RCO 488C STAPTl 43C7
MORE! 48C9 RESTOR 4803 3IM3 4808 8IN2 480D "INl *8E2 STOBCO 48E9
ROLLIT 48EE SF8 4300 SF7 4881 SF6 4382 SFS i883 SF4 4334
SF3 4835 SF2 4-586 SFl 4887 CF8 ' 4880 CF 7 &88E CF6 483F
CF5 4890 CF4 4891 CF3 4892 CF 2" 4893 CFl &894 IFS8 489B
IFS7 489C IFS6 4390 IFS5 48QE IFS4 489F IFS3 *8A0 IFS2 48Al
IFSl 43A2 MOTSET 43A8 IFCP 48A3 IFC7 43AC IFC6 4«A0 IFC5 48AE
IFC4 48AF IFC3 4880 IFC2 4881 IFCl 48B2 NMET &BA8
TOTAL ERRORS
«■»»»ERROR 201 218 NAM IFEX
6»*«ERR0R 201 360 NAM REGEX
70 9 8 0 8/1025 ORIGINAL. INSPECTED
- 75 -
Page 52 CJBPG 06/04/75 36:54.05
00215 48Α4 91 92 β METl OPT A LISTtMEM IF+, AND IFO
00218 27 OC «THIS NAM IFEX
00219 OE CA » OPT LIST,MEM XREG = 0 ?
00220 08 IFO ORG S4BA4 RRANCH IF YES
00221 48 A 4 Α6 OO A ELSE GET INST PNTP
00222 43Α6 81 BA NMET A DOES IF-, SKI·3 ONE INST
00223 43Α8 23 Ol GET CURRENT INST
00224 48AA 08 XR + 2 TWO BYTE INSTRUCTION ?
00225 48Α3 DF CA MET · BRANCH IF NOT
00226 48Α0 39 UIP ELSE MOVE FORWARD
00227 43AF ROUTINE RESTORE POINTER
00228 4831 96 91 A X RETURN
00229 4392 28 EF MET CMP «SD8B
Ό 0230 43Β4 39 BEQ MET-2 GET MANTISSA SIGN
00231 IFPLS LDX NOT MET IF NEG. -
00232 48RS 96 91 INX A UIP
00233 48R7 EA LDA
00234 4889 39 β CMP GET MANTISSA SIGN
00235 IFMi BLS XR+1 NOT MET IF POS.
00236 438Α OE 90 INX NMET
00237 483C 9C 98 STX
00238 453RE 26 E3 » RTS GET X
00239 OE 92 IFXEY XR+1 = Y ?
00240 433F 9C 9A LOA NMET BRANCH IF NOT
00241 43Cl 26 DO BMI ELSE CONTINUE TEST
00242 43C3 OE 94 RTS ■ ■ — - - — · - -
00243 43C5 9C 9C XR
002*4 48C7 26 D7 LOA YR
00245 43C9 OE 96 BPL NMET
00246 •4 (3CR 9C 9E RTS XP + 2
00247 43C0 26 Ol YR+2
00?48 43CF 19 LDX NMET
00249 4βΟ1 CPX XR+4 *
00250 4303 4*C BNE A YP+4 RETURN IF CONDITION MET
00251 Δ-305 97 2E LDX A NMET
00252 4307 CE 0078 «· CPX- XR+6 SET »REVERSE SENSE" FLAG
00253 80 73F3 IFXGEY BNE YR+6 0 TO LESS THAN FLAG
00254 43Oa CE 0098 IFXLTY LDX NMET PRESET INDEX
00255 4309 80 '75F6 CPX TRANSFER X REG
00256 4308 96 91 BNE A PRESET INOEX
00257 480Ε D6 92 LDX Q SURTRACT
00258 43El CE 0073 CPX Tl GET MANTISSA SIGN
00259 43Ε4 RO 7433 BNE «ATI GET MANTISSA DIGITS
00260 4ΒΕ7 40 RTS A TXRX PPESET INOEX
00261 43Ε9 23 08 *YR RESTORE X REG
00262 48Ε3 50 INC P FPS TEST SIGN OF OESULT
00263 43EE 27 05 STA XR + 1 BRANCH IF NFG.
00264 43Fl 96 2E LDX A XR + 2 ELSE TEST FOR ZERO
00265 43F2 JSR «ATI BRANCH IF 7EPO RESULT
00?66 4BF4 LOX TXXR GET SKIP FLAG
00267 48F5 JSR
00268 43F7 LDA NMETl
00269 LOA
00270 LDX NMETl
00271 JSR Tl
TST
0MI
TST
BEO
LDA
709808/102 5
ORIGINAL INSPECTED.
Page 53 CJBPG 06/04/75 36:54.05
00272 43F9 26 AD NMET-I BNE A Δ NMET
00273 4RFB 39 RTS
00P74 4BFC 96 2E ■LDA Tl
00275 43FE 27 A8 BEQ A NMET
00276 4CQ0 39 » RTS
00277 »THIS ROUTINE
00278 A
00279 HANDL
00280 NEXTC LDX
00281 STX
00282 4C01 CE 00E8 LDX A *CR .
00283 4C04 DF 27 LOA T8
00284 4C06 CE OOFO BRA «DR
0028S 4C09 86 AB NEXTB LOX a$AB
002R6 4C09 ■20 11 LDA NEXTJ
00287 4C0O CE OOEO 8RA «BR
00288 4C10 86 AA MEXTA LDX eSAA
002«9 4Cl 2 20 05 LDA NEXTI
00290 4C14 CE' 0008 NEXTI STX PAR
00291 4C17 86 AC LDX 8 «SAC
0029? 4C19 DF 27 NEXTJ STX R T8
00293 4C1<3 CE 6838 STA H. «FP1
00294 4ClE DF 20 LDX T2
00?95 4C20 97 29 JSR B T6
00296 4C22 CE 0 0 7B LDX B *AT1
00297 *C25 30 73F3 JSR B TXRX
0029β 4C28 OE 20 LDX 8 T?
0 0 299 4C2A RO 7438 JSR 3 TXXP.
00300 4C2D OE 27 LOX B T8
00301 4C2F BO 75FC JSR e FPA
00302 4C32 OE 27 LDA T8
00ΤΠ3 4C34 RO 73F3 DEC TXRX
00304 4C37 06 OA STA A EOM
Ό0105 4C39 5* LDX Ft
0 0 306 4C3A 07 IC LDA TP5
00307' 4C3C OE CA SU6 UIP
0 0.10« 4C3E E6 OO ASL B X
00309 4C40 CO AO ASL .MSAD
00310 4C42 58 ASL
00311 4C43 58 ADO A
00312 4C44 58 STA
00313 4C45 CB 08 LDX *SD8
0031ft 4C47 07 10 JSR TP5S
00315 4C49 OE IC LDA TP5
00316 4C4B RO 75F6 LDA FPS
00317 4C4E 96 91 LDX XR + 1
00318 4C50 06 92 JSR XP+2
00319 4C52 CE 0078 TST «ATI
00320 4C<5<5 PO 7433 BEO TXXR
00321 4CS8 50 LDX
00322 4C59 27 07 EOR MOREL
003P3 4C53 OE 20 BPL T2
0032* *C5D A β Ol RTS l.X
00325 4C5F Ol MOREL
00326 4C61 39
REVERSE SENSE IF SET ELSE RETAIN SENSE NOT MET IF X>Y RETAIN SKIP SENSE ELSE REVERSE SENSE
GET C-REG AORS SAVE IT
GET LOOP INC. ADRS GET "FO^ C" INST SAVE THEM
GET B-REG AORS GET »FOP B" INST SAVE THEM
GET A-REG AORS GET "FOR A" INST SAVE LOOP VAPIABLE AORS GET LOOP INCREMENT SAVE LOOP INC. ADRS SAVE "FOR" INST GET ARITH TEMP ADRS TRANSFER X-REG GET LOOP IMC. ADRS MOVE IT TO X-REG GET LOOP VARIABLE ADRS ' AOD THE "1"
RESTORE LOOP VAR. ADRS REPLACE WITH UPOATEO NUMBER GET END OF MEMORY PMTR DEC PAGE AORS SAVE IT
GET IMST PNTR
GET THE "NEXT" INST REMOVE OFFSET MULTIPLY SY 2 MULTIPLY BY FOUR
AOO ALPHA REG OFFSET SAVE IN LS BITS OF PNTR GET ALPHA REG PNTR DO THE "END OF LOOP" CHECK-GET SIGN OF RESULT GET MAMTISSA OIGITS GET X-REG TEMP ADRS RESTORE X-REG ZERO RESULT ?
CONTINUE IF YES GET LOOP INC. AORS SIGNS DIFFER ?
CONTINUE IF NOT ELSE RETURN
7098-68/102 5 ORlOlNAL INSPECTED
263315t
Page 54 C JfJPG 06/04/75 3fi:54.05
00327 4C62 OE CA MOREL 4885 LDX B UIP GET CURRENT USER ADRS
00328 4C64 06 29 48BA LOA T6 GET "FOR" IMST FOR SEARCH
00329 4C66 8C 0100 MORELl 4RA4 CPX #256 USER STATE ZERO YET ?
00 330 4C59 27 08 498F BEQ FEROR ERROR IF YES ' ·
00331 4C6B 09 4309 DEX A ELSE DEC SEARCH PNTR
00332 4C6C El 00 43D8 CMP A X IS THIS THE »FOR" STMT ?
00333 4C5E 26 F6 BNE MORELl BHANCH IF NOT
OQ 33 4 4C70 DF CA 4C77 STX UIP ELSF SAVE NEW INST ADRS
00335 4C72 39 4C77 RTS RETURN
00336 4C73 86 OD FEROR 4C77 LOA #13 LOAO EPROR"
00337 4C75 97 06 4C14 STA ERROR SAVE IT FOR OUTPUT
00339 4C77 39 FORS 4C0D RTS RETURN
00339 4 4C01
00340 fr
00341 6838 FPl EQU S6838 FLOATING POINT '1I"
00342 «■
00343 «
00344 7C62 ORG S7C62"
00345 7C62 FOB IFPLS
00346 7C64 FOB IFMI
00347 7C66 FOB IFO .
00348 7C6* FDB IFXEY
00349 7C6A FOB IFXLTY
00350 7C6C FDS IFXGEY
00351 7D54 ORG S7D54
00352 7054 FOB FORS
00353 7D56. FOB FORS
00354 7058 FDB FORS
00355 705A FOB NEXTA
00356 705C FOS MEXTB
00357 7D5E FDB NEXTC — -- — - - - - -
709808/102 5
ORIGINAL IMSPEGTED
Page 55 CJRRG 06/04/75 36:54*05
00360 00361 00362 00363 00364 00365 00366 00367 00368 0.0 369 0037(1 00371 •00372 00 373 00374 OQ 375 00376 00-377 00378 00379 00380 00381 00382 00383 0Q3B4 0 0 3SS Q033& 003*7 00338 00389 00390 00391 00392 00393 00394 00395 00396 00397 00393 00399 00400 00401 00402 00403 00404 00405 00406 00407 00408 004Λ9 00410 004U 00412 00413 00414
4C78
NAM OPT ORG
PEGEX LIST.MEM S4C78
4C78 4C 4C79 4C 4C7A 4C 4C7B 4C 4C7C 4C7E 5F 4C7F 4C1U 4C83 4C85 4CR7 4C88 4C84 4C8C DE 4CSE E6 4C90 4C91 4C93· Cl 4C95 4C97 Cl 4C99 4C98 4C90 BO 4CA0 4CA2 4Ca4 A6 4CA6 4CA8 4CA.A 2C ^CAC CE 4CAF DF 4CRl 4CB3 4CBS 5A 4CR6 D7 4C88 C6 4C«A 4CRC 4C8E 4C8F 4CC0 4CCl"9B 4CC3 4CC5 DE
»THIS ROUTINE HANDLES ALL 78 OF THE STOPAGE
»REGISTER IMSTPUCTIOMS. THIS INCLUDES REG. ARITHMETIC»
MNOIRECTS» ETC. FOR ALL RECALL INSTRUCTIONS»
»THE X REGISTER IS-COPIED TO LAST X. TP7.TLT2«
»AND T3 ARE USED BY THIS ROUTINE.- THE FLOATING
«POINT ROUTINES ARE CALLED IF NECESSARY«
OVDENT MLTENT SÜ6ENT
INC A
INC A
INC A ADDENT INC A
2E STOENT STA A- Tl
CLR B
09 BRA .PENT
OF RCLENT CMP A DIGFLG
05 BEQ RENT
OF STA A DIGFLG
COM A
OD STA A STKFLG
2D RENT STA 8 T?.
CA LDX UIP
00 . LDA B X • T8A
2C STA A T3
C7 CMP B 0&3O7
32 8HI. KfUMRlC
Cl CMP 8 «!»301
09 8HT TW08T
64 SUB A /*S64
5CA8 JSR FPMT
OF AND A *SF
04 8RA IAORS
01 TWOBT LDA A ItX 64 ' SUB A «100
05 IADRS CMP A #5
07 BGE USMEM
0008 LDX «AR 20 STX TP7 OB QRA GEN OA USMEM LOA 8 EOM
DEC B
20 STA 8 TP7 08 LDA B ««D8
21 STA 8 TP7+1 05 SUR A #5
GEN ASL A
ASL A
ASL A
21 AOD A TP7+1
21 - STA A TP7+1
20 LDX TP7
ENTRY
ENTRY
ENfTRY
PT. FOR DIVISION PT, FOR MULTIPLICATION PT. FOR SUBTRACTION ENTRY PT FOP AOOITION SAVE ARITHMETIC OPERATOR
CLEAR RECALL FLAG DOING OIGIT ε^4TRY BRANCH IF NOT ELSE TERM. IT SET MSB
ENABLE LIFT SET UP RECALL FLAG GET INST ADDRESS GET THE INSTRUCTION SAVE IN ACCA AND IN T3 ALPHA REGISTER?
8R4MCH IF NOT ONE OR TWO 9YTE BRANCH IF TWO BYTE REMOVE INST OFFSET CONVERT TO SCO GET REG * CONVERT TO R/W ADDRESS GET SECOND BYTE REMOVE OFFSET REG IM USER «EMORY BRANCH IF YES ELSE GET RASE PAGE 40RS SAVE FOR MODIFICATION GO GENERATE ADDRESS GET ENO OF MEM PAGE BACK UP ONE SAVE IN MS BITS OF AORS GET AORS ON PAGE SAV(T IN LS BITS OF AORS REMOVE OFFSET MULTIPLY REG S BY
ADO TO ADDRESS RESTOPE
INDEX=ADuRESS
709808/102
ORiGlNAL INSPECTED
Page 56 CJBPG 06/04/75 36:54.05
00415 4CC7 20 OA NUMRIC BRA A VALID CONTINUE
00416 4CC9 A6 Ol .LDA A 1»X GET SECOND BYTE
00417 4CC3 48 . ASL B . SHIFT AORS TO 87
00418 4CCC 57 ASR A MSB TO CARRY
00419 4CCD 46 ROR CARRY TO B7
00420 4CCE BO 4058 JSR SADRS GO GENERATE SYSTEM ADORESS
00421 4C01 26 26 VALID BNE B OVFLO BRANCH IF ERROR
00422 4CD3 06 2C LDA B T3 GET THE INST
00'+23 4C05 Cl D3 CMP #»323 POSSIBLE INDIRECT?
00424 4C07 22 08 8HI P INDR BRANCH IF YES
00425 4C09 Cl C7 CMP *<δ>307 - POSSIBLE INDIRECT?
00426 4C08 22 21 BHI 8 INSTY? 8RANCH IF NOT
00427 4C0O Cl Cl CMP #51301 POSSIBLE INOIRECT?
00428 4C0F 23 10 INDR BLS A INSTYP BRANCH IF NOT
00429 4CEl 4F CLR B PRESET FOR REG 0
00430 4CE2 E6 OO LOA X GET REG EXPONENT
00431 4CE4' 28 OE 8MI 8 REGO REG 0 IF NEG
00432 4CE6 5C. INC 8 ACCR=« OF DIGITS
00433 4CE7 Cl 03 CMP «3 GREATER THAN 3?
00434 4CE9 2E OE 8GT OVFLO BRANCH IF YES .
00435 4CE9 RD 49CE JSR A TSFR GO GENERATE NEW AORS
00436 4CEE 96 20 LDA TP7 GET MS BINARY
00437 4CF0. 26 07 BNE A OVFLO ERROP IF NON-ZERO
00438 4CF2 96 21 REGO LOA TP7+1 GET LS BINARY
00439 4CF4 RO 4058 JSR SAORS GENEPATE SYSTEM AORS
00440 4CF7 27 05 OVFLO BEQ A INSTYO BRANCH IF NO ERROR
00441 4CF9 «6 18 LDA A «24 LOAD ERROP
00442 4CFB 97 06 STA ERROR SAVE IN ERROR WORD
00443 4CF0 39 INSTYP RTS A RETURN
00444 4CFE 96 20 LOA T2 GET RECALL FLAG
00445 4D00 27 19 BEQ STOINS 0 !«PLIES STORE IMST,
00446 4002 DF IE STX TP6 SAVE REG ADDRESS
00447 4004 BD 55E9 JSR TXL X TO LAST X
00448 40 07 RD 55EF JSR STKUP ■ STACK UP ?
00449 400A OE IE LDX TP6 . RESTORE REG AOORESS ..
00450 4D0C RO 7438 PCHEK JSR B TXXR DO THE RECALL
00451 4D0F 06 2C LOA P T3 GET THE INSTRUCTION
00452 4D11 Cl BA CMP *S0B9 TWO RYTE INSTRUCTION ?
00453 4013 23 05 LBLEX BLS DOONE BRANCH IF YES ' ' . '
00454 4015 QE CA LDX UIP GET INST PNTP
00455 4017 08 INX INC TO SKIP 2ND BYTE
00456 40 1β DF CA ODONE STX HIP RESTORE IT
00457 4DlA 39 STOINS RTS A RETURN
00459 4013 96 2E LDA Tl GET ARITHMETIC FLAG
00459 4010 27 34 BEQ NOARI 0 IMPLIES NO ARITHMETIC
00460 401F OF 20 STX TP7 SAVE REG ADRS
00461 4021 CE 0078 LDX «ATI GET ARITh. TEMP. ADRS
00462 4024 BO 73F3 JSR TXRX TRANSFER X TO TEMP.
00463 4027 OE 20 LOX A TP7 GET REG ADRS
00464 4029 96 2E LOA A Tl GET OPERATION FLAG
00465 4029 4A DEC = 1?
00466 402C 27 15 BEQ A REGADO YES! OO AODITION
00467 402E 4A DEC =2?
00468 4D2F 27 OD BE» A REGSUS yes: do subtraction
00469 4031 4A DEC =3?
709808/1025
ORiGlHAL IHSFECTED
Page 57 CJBPG 06/04/75 36:54.05
00470 00471 00472 00473 00474 00475 00476 00477 00478 00479 00430 00481 00482 00^83 00484 00485 00486 00437 00438 00489 00490 00491 00492 00493 00494 004^5 00496 00497 00498 00^99 00500 oosni 00502 005(13 00504 00505 00^06 005Π7 00508 00509 00510 00511 0C512 00513 00514 00515 00516 00517 00518 00519 00520 00521 00522 00523 00524
4032 4034 4D37 4039 403C 403E 4041 4043 4046 4D48 4D48 4D4E 4051 4053 4056
27 05 BEQ REGMLT YES; OO MULTIPLICATION
PO 7793 JSR FPO DIVISIOM BY OEFAULT
20 OD BRA MOONE GO WRAP IT UP!
RO 7735 PEGMLT JSR FPM MULTIPLY
20 08 BRA . MDONE WRAP IT UP!
RD 75F6 REGSUB JSR FPS SUPTRACT
20 03 BRA MOONE WRAP IT UP!
BO 75FC REG4DD JSR FPA AOO
OE 20 MDOME LDX TP7 GET REG AORS
BO 73F3 JSR TXRX ' STORE THE F.P. NUMQER
CE 0078 LOX »ATI GET TEMP. AORS
PD 743B JSR TXXR RESTORE X REG.
20 BC BRA PCHEK GO CHECK PRGM CNTR
SO 73F3 NOAPI JSR TXRX STORE THE NUMBER
20 87 BRA PCHEK GO CHECK PRGM CNTR
»THIS SUBROUTINE CO.NVERTS A NUMERIC REGISTER AOORESS »TO THE ACTUAL R/W ADDRESS OF THAT REGISTER. IT »THEN CHECKS FOR VALIDITY GENERATING ERROR 7 IF »INVALID ANO CLEARING ACCA IF VALID. THE ADDRESS" »IS RETURNED IM THE INDEX REGISTER. »ON ENTRY, ACCA=THE REGISTER ADDRESS
4058 5F SADRS
4D59
405A
4D5B
4D5C
405D
4D5E
4D5F BR
4061 C9
4063 07 IE
&065 97 IF
4067 DE
4069 OP 406B RO 4840 4D6E OF
4070 OF IC 407? DE 4074 OF IE 407P, RH 4840 4079 ?4 4D7S P6 4D70 20 OF
407F DE IC SADl 4011 4F
4082
4083 Oft 90 REGS 4085 2R OA
4087 5C 4038 Cl 403A 2F OB 408C 86 07 ERR
CLR E) S8 ZERO TO ACC9
ASL A «0 MULTIPLY THE REGISTER
ROL 8 TP6 ADDRESS BY 8 9Y
ASL A TP6S SHIFTING LEFT
ROL 9 SPGM 3 TIMES.
ASL A TP7
ROL B SUB7
ADD A TP7 ADD P TO THE PESULT
AOC β TP5 AOO CARRY TO MSRiS
STA B EOPM SAVE RESULT FOR SU=(TPACT
STA A TP6
LOX SUB7 GET PEG START AORS
STX SADl SAVE POR SUBTRACT
JSR fi?4 OO EOM-REG ADRS
LOX EPR+2 GET RESULT
STX TP5 SAVE FOR LATER
LDX GET END OF PRfjM MEM
STX PREPARE TO SUBTRACT
JSR XR OO REG ADPS-EOPM
BPL REGZ BRANCH IF NO ERROR
LDA A L04D ERROR
BRA *3 SAVE THE ERROR AND RETURN
LOX OK INDEx=VALIO ADORESS
CLR A K7 no frror; clr acca
RTS RETURN
LOA 8 GET X-REG EXPONENT
9MI ZERO REGS IF NEG
INC B ACCa=a OF DIGITS
CMP a TOO MANY ?
RLE BRANCH IF NOT
LDA A LOAD ERROR
709.8.08/102
ORIGINAL INSPECTED
Page 58 .CJBPG 06/04/75 36ί54.05
00525 408E 97 06 REGZ STA A ERROR SAVE IT
00526 4090 39 RTS RETURN
00527 4091 οε 54 . LDX SPGM GET PEG START AORS
00528 4093 DF ic · OK STX TP5 SAVE IT
00529 4095 20 BRA OLD GO ERASE BETWEEN PNTRS
00530 409 7 CE 0090 LDX *fXR GET X-REG ADDRESS
00531 409A BD 49CE JSR TSFR CONVERT X-REG
00532 4D9D 96 20 LDA A TP 7 GET MS BITS OF RESULT
00533 409F 06 21 LDA 8 TP7+1 . GET LS «ITS
00534 4DAl 58 ASL B MULTIPLY RESULT BY 8
00535 40A2 49 ROL A
00536 40 A3 58 ASL 8
00537 40A4 49 ROL A
00518 4045 58 ASL 8
00539 4DA6 49 ROL A
00540 4DA7 97 IE STA A TP 6 SAVE MS BITS
00541 40A9 07 IF STA 8 TP6+1 SAVE LS 8ITS
00542 4DA3 DE 54 LOX SPGM GET PEG START ADRS
00543 40A0 OF 20 STX TP7 SAVE FOR SUBTRACT
00544 4DAF RO 4840 JSR SU87 SU8TPACT (EOW-REG ADRS)
0 0545 4082 2F 03 BLE ERR ERROR IF ΡΔ6Ε IS 0 0=» NEG
00546 40R4 οε 20 LDX TP7 GET RESULT
00547 40R6 DF IC STX TP5 SAVE IT
00548 4038 OE OB LOX EOPM GET OLO PMTP
00549 4O=?A OF IE STX TP6 SAVE FOR SUBTRACT
0055(1 40BC RO 4840 OLO JSR SU 8 7 DO- NEW-OLD
00551 408F 28 OC BMI NEW BRANCH IF MEG RESULT
00552 40Cl OE 09 LDX EOPM GET OLD EOPM
00553 40C3 DF IE STX TP6 SAVE IT
00554 4OC5 OE IC LDX TPS GET NEW EOPM
00555 40C7 OF OB STX EOPM SAVE IT
00556 40C9 OF IE NEW LDX TP6 GET OLD EOPM
00557 40C8 20 25 SRA LOOP ERASE
O0S5S 40CD OE IC LDX TP5 GET NEW EOPM
00559 4OCF 8C 0100 CPX «sioo USER STATE 0 ?
00560 4002 27 88 3EQ EPR ERROP IF YES
00561 4004 CE 0OCA LOX «UIP GET IMST PMTR ADRS
00562 4007 D6 09 LDA R PSFLG GET R/S FLAG
00563 4009 58 ASL 8 RUNNING ?
00564 40D.A 23 02 8MI RIJMING BRANCH IF YES
00565 400C 09 RUNING DEX ELSE GET PRGM PNTR AORS
00566 4000 09 DEX
00567 4ΟΟΕ Α6 01 LDA A 1»X OO PNTR-TP5
00568 40EO 90 ID SU8 Ä TP5S
00569 40Ε2 Α6 00 LDA A X
00570 40Ε4 92 IC S8C A TP5
00571 40Ε6 28 08 BMI OKI OK IF PNTR<TP5
00572 40 E 3 50 TST P ELSE CHECK RUN/STOP
00573 40Ε9 28 Al BMI EPR ERROP IF RUNNING
00574. 4DE8 CE 0100 OKI LDX #256 ELS^ SET UPP TO 0 "
00575 4οεε DF C8 LOOP STX [IPP
0057* 4OF0 OE IC LOX TP5 GET NEW EOPM
00577 4OF2 9C 08 CPX EOPM ALL ERASED ?
00578 40F4 27 05 BEQ OUT 8RANCH IF YES
00579 40F6 6F 00 CLR X CLEAR MEMORY
709808/1025
ORIGINAL. !MSPEOTED
Page 59 C. 08 06/04/75 36:54. - 82 -
05
INC PNTR NEW EOPH I NOP TO "* LAST STATE .MLTENT« ,PCLENT, ,DVOENT ''LTENT ,STOENT
00580 40F8 20 F7 . INX CONTINUE IT RETURN ,MLTENT, .RCLENTiRCLENT, MLTENT ,STOENT .
00581 40F9 DE IC BRA LOOP GET UP .OVOEMT, ... OVOENT ,ADOENT
00582 40FB DF OB OUT LOX TP5 SAVE INST THERE DVDENT,DVDENT,OVOENT, OVOENT .AOOENT
00583 40F0 09 STX EOPM BACK .STOENT, OCLENT. PCLENT ,SUSENT
00584 40FF A6 OO DEX GET .STOENT. RCLENTi RCLENT •SUBENT
00585 4E00 81 BA .LDA A X TWO ,ADDENT, S7D84 ,MLTEMT
00586 4E02 23 02 CMP A SSDBB. ,AOOF.NT. PCLENT ,MLTEMT
005a7 4E04 6F OO BLS 0UT2 .SU8ENT, STOENT .OVOENT
00588 4E06 39 CLR X STOENT,STOENT STOENT ADDENT ,STOENT , OVOENT
00589 4E08 0UT2 RTS STOENT,STOEMT STOENT SUBENT ,ADOENT ,RCLENT
00590 4848 β BYTE INSTPUCTION ? AOOENT AOOENT MLTENT SUSENTtSUBENT ,RCLENT
00591 4840 ADD7 EQU 54848 BRANCH IF NOT ADOENT· AOOENT DVDENT MLTENTfMLTENT
00592 SUB7 EOU $4840 ELSE , aooent SU8ENT STOENTi DVOENT,
00593 7C70 4083 ORG S7C70 ι AODENT »SUBENT,SU3ENT,SUBENT AODENTi RCLENTi
00594 7C70 49CE F08 REGS SUBENT,SUBENT »MLTEMT .RCLENT PCLENTi
00595 TSFR EQU S49CE SUBENT. .MLTENT ,DVOENT
00596 7CC8 4C7C 0R6 S7CC8 MLTEMT. .DVDENT ,PCLENT
00597 7CC3 4C7C FDB MLTENT. ,SCLENT
00598 7CD2 4C7B FOB OVDENT, STOENT,STOEMT
00599 7CDC 4C78 FDB ADDENT1
00600 7CE6 4C7A F08 SUPEMTi
00601 7CF0 4C7A FDB rAOOEMT
00602 7CFA 4C79 FOB SUBENT
00603 7004 4C79 FDB MLTENT,MLTENT
00604 700E 4C78 FD3 OVDENTi
00605 7DlR 4C78 FOB S707E
00606 7022 4C81 FOB LBLEX
00607 7D2C 4C81 FDB
0060» 7D36 FDB
00609 7D84 4C81 ORG
00610 7084 4C7C FD8
00611 7Ö86 4C73 FOB
00612 7DR8 4C7A FD<3
00613 70 8 A 4C79 FDB .
00614 7D8C 6.C78 FD8
00615 708E 4C7C FDB
00616 7090 4C78 FDB
00617 7D94 4.C7A FOB
00618 709« 4C79 FDB
00619 7O9C 4C78 FDB
00620 7DA0 4C81 FDB
00621 7DA4 4C81 FOB
00622 7DA8 4C7C FDB
00623 70AC 4C78 FDB
00624 7DB0 4C7A FOB
00625 7DB4 4C79 FDB
00626 70B8 4C78 FOB
00627 70RC FOB
00628 7Ü7E 4015 ORG
00629 7O7E FOB
70-980871025
ORIGINAL IMSPECTED
Page 60 CJ8P6 06/04/7536:54.05
END
SYMBOL TABLE
AOATA 0000 ACTL 0001 BDATA 0002 BCTL 0003 INPUT 0004 IOIN 0005
ERROR 0006 TGL 0007 UFLG 0008 RSFLG 0009 FOM OOOA EOPf OOOB
STKFLG 0000 RMD OOOE D IPFLG OOOF W2 0010 Wl 0011 SFLG 0012
DCNTR 0013 TPl 0014 TPlS 0015 TP2 0016 TP2S 0017 TP3 0018
TP3S 0019 TP4 001A TP4S 001R TP5 ooic TP5S 0OiO TP 6 001E
TP6S 001F TP7 0020 TP7S 0021 T13 0022 Tl? 0023 TIl 0024
TlO 0025 T9 0026 T8 0027 T7 0028 T6 002«? T5 002A
T4 0028 T3 002C T2 0020 Tl 002E ISTK 002F ISTACK 0051
TA 005? SPGM 0054 EXTRA 0056 BUFF 0058 REAL 0068 IMAG 0070
ATI 0078 AT2 0080 W 0088 XR 0090 YR 0098 ZP OOAO
TR OOAB LSTX OOBO BKWRT 00B8 BKKC ■003A S0L7 00C6 UPP ooca
UIP OOCA ALPHA OOCC 101 ooco' 102 0000 IT7 0003 FLAG 0005
TPOS 0006 FILE 00D7 AR 0008 BR οοεο CR 0OE8 DP OOFO
ER OOF* sosn 008A MT 7E00 TERMN'7 003D IMED 0040 P4RC0 ooco
PAREX 0080 NTBL 0000 DOTS 5ECO PRTOPV 6020 FRMT 5CA 8 BLANK 5075
LDMSG 579D ROLLO 5582 ROLLU 57Fl PSD 55OA TXL 55e9 STKUP 55EF
MAO 749P. CMP 74AA NOR 7406 TXW 7424 TXXP 743B EXXP 7452
ARSR 7530 OVUNF 7586 OVEPF 750D XRO 740Δ XRNINE 75C3 UNOPF 75F1
IMULT 7639 ODG 7669 FPA 75FC FPS' 75F6 FPM 77 35 FPD 7793
FPAEX 7630 FPMEX 7780 LSHIFT 7521 . ZEROX 7439 XZEROO 7416 X2E&02 7417
RECIP 73E6 TXRX 73F3 COMST 6800 FPD3RC 6898 TAN 68A9 ATN 69C3
OSZERO 6Δ46 NTLN 6458 EXPN 6AC9 SIN 6394 COS 659A ASIM 6«F2
ACOS 68F7 PHl 6C5D PH2 6C3D PH3 6034 PH4 6000 LSFT8 6E47
SORT 6E6.5 MAD8 6F2C CMPS 53E4 IOUPX 6F52 LOGlO *F-i7 YUPX 6F£9'
RTOP .7328 PTOR 7386 IFO ΔΒΔ4 NMET 4BA8 MET 43 q a IFPLS 43*5
IFMI 4R8A IFXEY 438F IFXGEY 48D8 IFXLTY 4B09 METl 43F7 N"ET1 4^FC
MEXTC 4COl NEXT8 4COD NEXTA 4C14 NEXTI 4Cl 9 NEXTJ 4ClE MOPEL 4Ci2
MORELl 4C66 FEROR 4C73 FORS 4C77 FPl 6838 DVDENT 4C7-} «LTFNT 4C79
SL)BENT 4C7A ΔΟΟΕΝΤ 4C7P STOENT 4C7C RCLENT 4C81 PENT 4C3A T.iOPT 4CA4
IADRS 4CAB USMEM 4CB3 GEM 4CRE NUMRIC 4CC9 VALID 6-C03 INOP 4C£l
REGO 4CF4 OVFLO 4CF9 INSTYP 4CFE PCHEK 4D0F LBLEX 4015 DDONE 4DlA
STOINS 401B REGMLT 4039 REGSUB 4D3E REGADO 4D43 MOOME 4D46 NOARI 4053
SAORS 405« SAOl 407F R EO S 4083 ERR 4D8C REGZ 4091 0< 4097
OLD 40Cl. NEW 40CD RUNING 4D0E OKI 4-DFO LOOP 4DF2 OUT 40F3
0UT2 4E08 ADD7 4848 SU87 4840 TSFR 49CE
TOTAL ERRORS
««•«■«ERROR 218 NAM EDIT
»«»«ERROR 472 NAM STEP
709808/1025
5HSPECTiD
Page 61 CJ8PG 06/04/75 36:54.05
00215 4EC8 4840 16 *e OPT EQU ON LIST.MEM - S4840 ALL CODE FOR ALL EDITTlNG
00218 4848 05 «THIS 1 NAM EOU EDIT S484B
00219 7978 OPT EQU LIST»MEM S797B
00220 7B40 11 ORG EQU S4EC8 S7B40
00221 0080 C8 EOU AT2
00222 0082 C7 ■ EQU CONTAINS AT2+2
00223 "0084 EQU CJ. AT2+4
00224 86 OE LDA «22
00225 06 LOA FLAG
00226 54 OB LSR A
00227 25 08 5OUTTNE BCS B sfcio PRESET ACCA FOR POSSIBLE ERROR
00228 OE OOCC »FUNCTIONS LDX B UPP GET "MEMORY SECURE" INFO
00229 4EC8 96 07 LOA S0L7+1 MOVE SECURE 8IT TO CARRY
00230 4ECA 16 06 SUB7 TAB BRANCH IF MEMORY SECURED
00231 4ECC AD07 BMI A STCl ELSE LOAD PRGM PNTR
00232 4ECD 08 BWM INX GET INST TO BE STORED
00233 4ECF 9C 52 ERR0R7 CPX EOPM SAVE IT IN ACCB
00234 4EDl 26 2E T8 BNE STCO BRANCH IF ONE BYTE INST
00235 4E03 7F AFFECT CLP ALPHA ELSE BUMP PRGM PMTR
00236 4E04 86 03 FIELD LDA 1*7 -END OF MEMORY ?
00237 4ED6 97 4FC7 STC0D7 STA ERROR BRANCH IF NOT
00238 4E07 39 4FC7 RTS A RESET POSSIBLE ALPHA
00239 4E09 09 C8 HEX- A LOAD MEM OVFLO ERROR
00240 4E0R 96 C6 LDA TA SAVE THE EBROR NUMBER
00241 4EOE 27 OO BEQ STCZ RETURN
00242 4EE0 50 C7 TST A BACK UP - -
00?.43 4EE2 28 02 BMI STC3 INSERT MOOE SET ?
00244 4EE3 PO Ol JSR B INSRT BRANCH IF NOT
00245 4EE4 90 JSR INSRT TdO SYTE INST ?
00246 4EES OE C8 LDX UPP BRANCH IF NOT .
00247 4EE8 96 07 LDA S0L7 OROP MEMORY
0024« 4EE9 A7 60 STA X DROP MEMORY
002*9 4EEB 9"6 03 STC7 ' LOA A S0L7+1 GET INST PNTR
00250 4EEE 2fl 590A STClO Β« I A STC4 GET INST
00251 4EFl Δ7 C7 STA α IfX SAVE FIRST BYTE . '
00252 4EF3 4F Ol STCO CLR GET 2ND BYTE
00253 4EF5 OE STCl LDX A UPP BRANCH IF NO 2ND BYTE
00254 4EF7 06 LDA A TGL ELSE STORE 2ND BYTE
00255 4EF9 C5 OR BIT *S60 CLEAR 'ftCCA FOR KEYLOG
00256 4£F8 27 CB BEQ B STC5 GET PROM PNTR
00257 4EF0 7E JMp B KEYLOG GET TOGGLES
0025ft 4EFE 06 STC3 LOA S0L7+1 KEYLOG MODE SET ?
00259 4F00 28 STC9 BMI STC6 BRANCH IF NOT
00260 4FO 2 08 INX B OO KEYLOG AND RETURN
00261 4F04 08 INX CHECK THE CURRENT INST.
00262 4F06 9C CPX EOPM 8RANCH IF ONE BYTE
00263 4F09 27 BEQ STC7 ELSE BUMP PHTR
00264 4F0B BUMP PNTP
00265 4F00 STC4 EMO OF MEMORY ?
00266 4F.0E BRANCH IF YES
00267 4F0F
00268 4FU
00269
00270
00271 STC5
STC6
709808/1025
Page 62 CJBPG 06/04/75 36:54.05
00272 4F13 DF C8 STC2 STX B UPP
00273 4F15 39 •RTS
00274 4F16 50 TST A
00275 4F17 2A 12 BPL A STC8
00276 4F19 A6 OO LOA X
00277 4FlB 81 BA CMP #SDR8
00278 4FlD 23 02 BLS STC9
00279 4FlF DF 82 STX AFFECT
00280 4F21 BD 4FEC JSR DEL ·
00281 4F24 ce FFFF LDX «-1
00282 4F27 80 67 STCS BSR A DHOOO
00283 4F29 20 C6 BRA A STC9
00284 4F2B Λ6 OO LDA X
00285 4F2D 81 BA CMP A- as DR B
00286 4F2F 22 CO BHI STC9
00287 4F31 A6 Ol LDA ItX
00288 4F33 27 BC BEQ A STC9
002«9 4F35 BD- 4FC7 JSR A IMSRT
00290 4F38 96 C6 LUA A S0L7
00291 4F3A Δ7 OO STA A X
00292 4F3C 96 C7 LDA S0L7+1
00293 4F3E A7 Ol STA ItX
00294 4F40 •08 INX
00295 4F41 OF 52 STX TA
00296 4F43 08 INX
00297 4F44 OF 80 STX TB
00298 4F46 BD 500C » JSR AMOD
00299 4F49 20 B2 BRA STC4
00300 INSERT B
00301 B
00302 4F48 06 D5 LDA FLAG
00303 4F40 54 LSR A.
00304 4'F4E 25 08 BCS BACK
00305 4F50 96 52 LD* TA
00306 4F52 26 07 BNE TERM
00307 4F54 OE C8 BACK LDX UPP
00308 4F56 OF 52 TERM STX TA
00309 4F58 7E 7973 JMP 8WM ·
00310 4F5B SD 52F4 ft JSR STEPl
00311 4F5E 20 F8 ft SRA BACK
00312 DELETE B
00313 B
00314 4F60 06 D5 LDA FLAG
00315 4F62 54 LSR A
00316 4F63 25 F3 BCS PACK
00317 4F65 96 52 LDA TA
00318 4F67 26 EF BME BACK
00319 4F69 OE C8 LOX A UPP
00320 4F6B OF 82 STX A AFFECT
00321 4F6D A6 OO LOA A X
00322 4F6F 97 2E * STA Tl
00323 4F71 81 BA CMP «SDBB
00324 4F73 23 03 ORYTE BLS OBYTE
00325 4F75 3D 4FEC JSR DEL
00326 4F78 BO 4FEC JSR OEL
ELSE SAVE NEW PRGM POINTER RETURN
2tBYT£ INST ?
BRANCH IF YES ELSE CHECK INST IN MEMORY TWO BYTE INSTRUCTION BRANCH IF YES ELSE SAVE DELETE PMTR · · RAISE MEMORY PRESET INDEX MODIFY THE ADDRESSES CONTINUE GET CURRENT INST IN MEMORY TWO BYTE-INSTRUCTION BRANCH IF YES ELSE GET FOLLOWING INST BRANCH IF IT IS A NOP ELSE DROP MEMORY GET INST TO BE STORED STORE IT GET 2ND 8YTE STORE IT PRESET INDEX SAVE »INSERT START" GET »INSERT END» SAVE IT ALSO MODIFY THE ADDRESSES CONTINUE
PROTECTED MEMORY
RETURN IF YES INSERTING ? TERMINATE IF SET GET CURRENT USER AORS SAVE FOP INSERT START RETURN TO SUPV TERMINATE THE INSERT RETURN
PROTECTED MEMORY
RETURN IF YES INSERTING ?
IGNORE IF YES GET PRGM PNTR SAVE CURRENT AORS GET INST SAVE CURRENT INST r TWO BYTE INSTRUCTION BRANCH IF NOT RAISE MEMORY RAISE MEMORY
70 9808/1025
M. INSPECTED
Page 63 CJBPG 06/04/75 36:54.05
00327 00328 00329 00330 00331 00332 00333 00334 00335 00336 00337 00338 00339 00340 00341 00342 00343 00344 00345 00346 00347 00343 003*9 00350 00351 00352 00353 00354 00355 00356 OQ 357 00358 00359 00360 00361 00362 00363 00364 00365 00366 00367 00368 00369 00370 00371 00372 00373 00374 00375 00376 00377 00378 00379 003fl0 00381
4F79 4F7E 4F80 4F82 4F84 4F85 4F87 4F8A 4F8C 4F8E 4F90 4F92 4F95 4F96 4F97 4F99 4F98 4F9C 4F9E 4FA0 4FA2 4FA 4FA6 4FA8 4FA9 4FAB
4Ff?2 4F34
4FB3
4FRA 4FB8 4F30
4FCl 4FC3 4FC4 4FC1S
4FC7 4FC9 4FC8 4FCC 4FCE 4FO0 4F02 4FD4 4F05 4F07 4F0S 4F0A 4F0C
CE FFFF 96 2E 81 BA 23 09 SD
80 4EF0 DE 82 · OF C8 20 C8 DF IE CE 0OFE 08
08
9C OB 26 Ol 39 A6 OO
81 DF 23 F4
80 28 EF
26 50
27 EA BO 4848
28 C6 FO E4 OO E7 OO D6 SS
49 54
E7 Ol AA OO A7 OO 20 4F 5F 20 Fl
OE C8 A6 OO 08
9C 27 E6 OO A7 OO 17
20 F4 09 A6 OO
81 BA 23
S8T
S8T1 OMODO
DM004 OMOOl
0M008
LDX
LDA A
CMP A
BLS
DEX
BSR
JSR
LDX
STX
3RA
STX
LOX
INX
INX
CPX
BNE
RTS
LDA A
CMP A
BLS
BSR
0M005
BNE TST B BEQ JSR
0M0D7
DMOD6
INSRT ILOOP
IDONE
LOA B AND B STA B LDA B ASL R HOL A LSR STA B ORA A STA 8RA CLR A CLR BRA
LDX LOA A INX CPX BEO LQA STA A T8A BRA DEX LOA A CMP A BLS *-l INITIALIZE INDEX Tl GET INST DELETED PSDBB TWO BYTE INSTRUCTION SBT BRANCH IF NOT "
2 STATES DELETED DMODO . MODIFY THE ADDRESSES STC4 GO CHECK FOR KEYLOG AFFECT GET OLO AORS (KEYLOG '-OVEO IT) UPP . RESTORE IT 8ACK RETURN TP6 SAVE INOEX FOR MODIFICATION «254 PRESET INDEX FOR SEARCH
SKIP AHEAD ONE
SKIP AHEAD ONE EOPM FINISHED YET 0M0D8 BRANCH IF NOT
ELSE RETURN
X GET NEXT INST «SDF ELSE CHECK FOR JHP OR JS* DMOOl BRANCH IF NOT UNPACK UNPACK AND CHECK THE ADRS DM0D4 BRANCH IF NO MOO. NECESSARY DM0D5 NON-ZERO: GO MODIFY
ELSE TEST LS 3ITS DM004 NO MOD. IF ZERO AD07 MODIFY THE OLD APOPESS 0MOD6 BRANCH IF NER RESULT äSFO GET INST MASK X REMOVE OLO INST AOPS X RESTORE OLO IMST TP7S ACCQ=LS BITS OF NEW AD9S
PACK THE NEW ADRS
1»X - RESTOPE NEW LS BITS X »OR» IN NEW MS 8ITS X RESTORE NEW MS BITS DM0D4 CONTINUE
ACCA=ACCB=MIn ADRS
DM0D7 - CONTINUE
UPP GET PRGM PNTR X GET THE INST
INC POINTER
EOPM END OF MEMORY IDOME 3RANCH IF YES X GET CURRENT INST X SAVE OLO INST ·
TRANSFER NEW INST ILOOP CONTINUE
BACK UP ONE X GET THE INST «SDBB TWO RYTE INSTRUCTION RTNl BRANCH IF NOT
9806/1026
ORIGINAL INSPECTED
Page 64 CJBPG 06/04/75 36:54.05
00382 4FDE 6F OO RTNl ,- AMOOO CLR B X ELSE WIPE IT OUT
00383 4FE0 20 03 BRA IDl SET ERROR
00384 4FE2 50 IDl TST A INSTRUCTION SHOVED OFF ?
00385 4FE3 27 04· BEQ A RTN BRANCH IF NOT
00386 4FES 86 07 RTN LDA «7 LOAD ERROR
00387 4FE7 97 06 STA ERROR SAVE IT
00388 4FE9 DE C8 » LDX UPP • RELOAD PRGM PNTR
00339 4FEB 39 DEL RTS RETURN
0039O DLOOP A
00391 4FEC DE C8 LDX A UPP GET PRGM PNTR
0 0392 4FEE Δ6 Ol LDA 1 ,X GET NEW IMST
00393 4FF0 A7 OO STA X SAVE IT IN NEW LOCATION
00394 4FF2 08 INX INC MEMORY PNTR
00395 4FF3 9C OB CPX EOPM ENO OF MEMORY ?
00396 4FF5 26 F7 BNE DLOOP BRANCH IF NOT
00397 4FF7 09 DEX ELSE BACK UP ONE
00398 4FF8 6F OO »UNPACK CLR X NOP TO LAST STATE
00399 4FFA 39 ft RTS RETURN
00401 UNPACK AND 8 CHECK THE GOTO/GOSUB AOOPESS
00402 8
00403 4FFB E6 Ol LOA A ItX GET 2ND BYTE OF INST
00404 4FF0 58 ASL 8 EXTRACT THE ADDRESS
00405 4FFE 46 ROR A ACCA=MS BITS
00406 4FFF 56 ROR A ACCR=LS BITS
00407 5000 84 07 AND B #57 MASK OFF THE IMST. COOE
00408 5002 97 20 STA A TP7 SAVE MS BITS
00409 5004 07 21 STA 8 TP7S SAVE LS BITS
00410 5006 4C INC A AOD BASE PiGE OFFSET
00411 5007 DO 83 SUB AFFECT+1 AOPS MODIFICATION NECESSARY
00412 5009 9? 82 e SBC· AFFECT - —
00413 500B 39 ■» RTS
00414 , ο
00415 AMOD
00416
00417 500C DE 52 LDX TA GET INSERT START
00418 500Ε DF 82 STX AFFECT SAVE FOR "AFPECTEO" TEST
00*19 5010 OF 84 STX FIELD SAVE FOR "FIELD" TEST
00*20 5012 OF IE STX TP6 SAVE FOR "B-A"
00421 5014 OE 80 LDX TP GET INSERT ENO
00422 5016 DF 20 STX TP7 SAVE FOR "B-A"
00423 5018 BO 4840 JSR SUB7 OO "B-A" TO TP7
00424 501R OE 20 AM0D4 LOX TP7 GET THE RESULT
00425 5010 26 06 BNE AMODl BRAMCH IF NON-ZERO
00426 501F 7F 0052 CLR TA RESET ALPHA FLAG/POINTER
00427 5022 DE C8 AMOOl LDX UPP RESTORE INOEX FOR STEP ROUTINE
00428 5024 39 RTS RETURN
00429 5025 OF IE STX TP6 SAVE RESULT FOR "OOIFI CATIONS
00430 5027 CE 0OFF LOX #255 GET STARTING AD^S-l
00431 502Α INX INC MEMORY PNTR
00432 50 28 9C 84 CPX FIELD FIELD BOUNOARY ?
00433 502D 26 IC BNE AMO02 BPAMCH IF MOT
00434 502F 9C 52 CPX TA "A" ROUNOARY ?
00435 5031 26 OA BNE AM0D3 BRANCH IF NOT
00436 5033 OE 80 LDX TB ELSE GET "Π" POINTER
70 9808/102 5
OBlGlNAl INSPECTED
Page 65 CJSPG 06/04/75 36:54.05
00437 5035 OF 84 AM003 STX A FIELD . SAVE FOR NEXT FIELO TEST
00438 5037 DF 82 STX A AFFECT SAVE FOR "AFFECTED" TEST
00439 5039 OE 52 *LDX TA RESTORE USER ADRS
00440 503B 20 OE BRA AM0D2 CONTINUE
00441 503D 9C OB CPX EOPM FINISHED ?
00442 503F 27 DE BEQ AM0D4 BRANCH IF YES
00443 5041 OE OB LDX A EOPM ELSE GET NEXT FIELD TEST
00444 5043 DF 84 AM002 STX FIELD SAVE IT
00445 5045 OE 52 LDX B TA GET NEW »AFFECTED» VALUE
00446 5047 DF 82 STX B AFFECT SAVE IT
00447 5049 DE 80 LOX B TB RESTORE WORK ADRS
00448 504B A6 OO LDA 8 X GET THE USER INST
00449 5040 81 OF CMP 8 SSOF ELSE CHECK FOR JMP OR JSR
00450 504F 23 09 BLS A AMODO BRANCH IF IT IS NOT
00451 5051 80 A8 BSR B UNPACK UNPACK AND CHECK THE ADRS
00452 5053 23 05 BMI B AMODO BRANCH IF NOT
00453 5055 BO 484B JSR A AD07 ELSE MODIFY THE. ADDRESS
00454 5058 85. F8 BIT A KSF8 NEW ADRS > 2047 ?
00455 505A 26 13 BNE AM008 BRANCH IF YES
00*56 505C CS FO AMOOlO LDA A «SFO ELSE GET INST MASK
00457 505E E4 OO AND B X AND IT WITH THE INST
00453 5060 E7 OO STA X RESTORE THE INST
00459 5062 06 21 LDA TP7S ACCR=LS BITS OF NEW ADRS
00460 5064 58 ASL PACK THE NEW ADDRESS
00461 5065 49 ROL
00462 5066 54 LSR
00463 5067 E7 Ol AM008 STA 1«X SAVE NEW LS BITS
00464 5069 AA OO ORA X "OP" IN NEW MS BITS
00465 5068 A7 OO STA X RESTORE INST
00466 5060 20 ΘΒ BRA AMODO CONTINUE
00467 506F 86 07 LDA »57 • ACCA h ACCB= MAX ADRS
00468 5071 C6 FF LDA *SFF
00469 5073 20 EF BRA AMODlO CONTINUE
7 0 9 8 0 8/1025 ORiGlNAL INSPECTED
Page 66 cjßPG 06/04/75 36:54.05
00472 00473 00474 00475 00476 00477 00478 00479 00480 00481 00482 00483 00484 00485 00486 00487 00488 00489 00490 00491 00492 00493 00494 00495 00496 00497 00498 00499 00500 00501 00502 00503 00504 005Ί5 00506 00507 00508 00509 00510 00511 00512 00513 00514 00515 00516 00517 00518 005,19 00520 00521 00522 00523 00524 00525 00526
527A
NAM STEP
OPT LIST,MEM
ORG S527A
527A 527C 5270 527F 5281 5283 5285 5287 5289 5238 5230 529F 5291 5292 5294 5297 5299 5298 5 29 C 529F 52Al 52Δ3 52A5 52A7 52AA 52AD 52AF 5291 5?Θ3 5235 52B7
»THIS ROUTINE HANOLES THE STEP AND BACK STEP «FUNCTIONS IN BOTH RUN AND PROGRAM MODE.
»IN RUN MODE, STEP SIMPLY EXECUTES ONE USER INSTRUCTION. *
«IN PROGRAM MODE, STEP WILL 1) STEP OVER THE CURRENT «INSTRUCTION INDICATED BY UPP 2) LIST THAT INST «IF TRACE MODE IS SET 3) FNTER THE ALPHA MOOE IF »THE INSTRUCTION WAS AN ALPHA INITIATOR. *
«8ACK STEP OPERATES ONLY IN PROGRAM MODE AND «WILL 1) BACK STEP OVER THE PREVIOUS INSTRUCTION «2> EXIT THE ALPHA MOOE IF THAT INSTRUCTION «WAS AN ALPHA INITIATOR« ■»
»90TH STEP AND BACK STEP WILL TERMINATE THE »INSERT MODE IF IT IS SET WHEN THEY ARE CALLED *
»WRITTEN BY BRAD MILLER
96 44
25 8D 06 23 OF CA <?6 CO
97 En Cl 27 44
97 7E 7968 C5 27 4F
80 59DA 9fi
26 9ft CC
27 7E 519C 7E 797B A6
81 RA 23 OD 81 BE 26 E6
STED
LDA A LSR A BCS BSR LOA B
STX
LDA A STA A LDA R CMP BEQ LSR A
STPS STA A JMP
PGMO BIT B BEO CLR A JSR LDA A BNE
STP<j LDA A' BEO JMP
OUTl JMP
NKEYLG LDA A CMP A BLS CMP A BNE LDA R
FLAG GET PROTECT FLAG
GET PROTECT BIT
OUTl RETURN IF PROTECTED
STEPl CHECK FOR INSERT
TGL GET MODE
PGMD 9RAMCH IF PROGRAM MODE
UIP SAVE IN INST PNTR
«SCO ' GET R/S FLAG INFO
SFLG SET THE STEP FLAG
X GET CURRENT USER INST
«SRO STOP COM'-'AND ?. . -
STP8 BRANCH IF YES
ELSE RSFLG = $40
RSFLG SAVE THE FLAG
EXEC7 GO DO IT J
«Έ60 KEYLOG MODE SET
NKEYLG · BRANCH IF NOT
PRESET ACCA FOR KEYLOG
KEYLOG DO THE KEYLOG AND STEP
ERROR ERROR ?
OUTl RETURN IF YES
ALPHA ALPHA "0OE ?
OUTl 8RANCH IF NOT
TOALP ELSF DO "TO ALpHA·'
BWM RETURN TO SUPV
X GET CURRENT INSTRUCTION
»soea two byte instruction
STP3 BRANCH IF MOT
«S'BE FORMAT INSTRUCTION
STP4 BRANCH IF NOT
ItX ELSE GET 2ND RYTE
7098Ö8/102S
OJ^JGlM,
!AL JMSPECTED
Η·'
- 90 -
Page 67 CJBPG 06/04/75 36:54.05
00527 00528 00529 0.0530 00531 00532 00533 00534 00535 00536 00537 00538 00539 00540 00541 00542 00543 00544 00545 00546 00547 00543 00549 00550 00551 00552 00553 00554 00555 00556 00557 00558 00559 00560 00561 00562 00563 00564 00565 00566 00567 00568 00569 00570 00571 00572 00573 00574 00575 00576
5289 S28B 52BD 52BF 52C0 52Cl 52C3 52C5 52C6 52C8 52CA 52CC
52CE 52D0 52Dl 52D2 5204 5206 5208 52DA 520C 52DE 52E0 52E2 52E4 52E5 52E7 52E9 52E3 52ED 52EF 52F0 52F2
C5 OF
26 97 CC 08
08 81
27 2A 4F
9C OB 27 DF C8 20
80 09
09 DF
96 26
97 C9 97 CC 20 C5 A6 OO fll BA 22 Ol 08
81 BE 26 El E6 0Γ C5 OF 26 DB 4F
97 CC 20
52F4 DE C8 52F6 96 52F8 26 Ol 52FA 52FB DF S2F0 7E 500C
BIT B «SF ALPHA TYPE FOPMAT INST
BNE STP4 BRAMCH IF NOT
STA A ALPHA ELSE SET ALPHA FLAG
.STP4 INX MOVF AHEAD ONE
STP3 INX MOVE AHEAO ONE
CMP A f*SB4 ALPHA TERMINATOR ? ' ·
BEQ BSTP4 BRANCH IF YES AND RESET ALPHA
CLR A
STP7 CPX EOPM . END OF PROGRAM MEMORY ?
BEQ BSTP3 BRANCH IF YES
STP5 STX UPP ELSE SAVE NEW PPGM AQRS
BRA STP6 GO FINISH UP !
»BACK STEP BEGINS HERE
BSTEP
8STP3 BSTPl
BSTP2 3STO4
BSR DEX OEX STX
LDA A · BNE STA A STA A BRA LDA A CMP BHI INX CMP A BNE LDA-R BIT R BNE CLR A STA A BRA
STEPl
JPl TPl RSTPl
upp+i
ALPHA
STP6
«SDBR
8STP2
SSBE
STP5
ItX
#SF
STP5
ALPHA STP7
STEPl LDX UPP
LDA A TA
8NE STEP2 RTS
STEP2 STX TB
JMP AMOD
CHECK FOR INSERT
8ACK UP ONE
8ACK UP ONE
PRGM PNTR TO TEMP FOR CHECK
BACKED BEHIND ADRS ZERO ? ,
BRANCH IF NOT
ELSE SET UPP TO STATE ZERO
CLEAR THE ALPHA MODE
GET OUT !
GET THE INSTRUCTION
TWO BYTE INSTRUCTION
BRANCH IF YES (UPP OK)
ELSE MOVE AHEAD ONE
FORMAT INSTRUCTION
BRANCH IF NOT
ELSE GET 2ND ^YTE -- — -
ALPHA INST ?
BRANCH" IF NOT
CLEAR ALPHA MODE GET OUT Ϊ
GET CURRENT PPGM PNTR
ARE WE IN THE INSERT MODE
BRANCH IF YES
ELSE RETURN
SAVE FOR "INSERT END"
MOD, GOTO1S AND RET. UPP IN INOEX
7968. EXEC7 EQU S7968 519C TOALP EQU S519C 59DA KEYLOG EQU S590A
70980 8/1025 INSPECTED
Page 68 CJBPG 06/04/75 36:54.05
00579 0000 ACTL • · ENO 0002 BCTL 0003 INPUT 0004 IOIN 0005
0006 TGL 0008 RSFLG 0009 EOM OOOA. EOPM OOOB
SYMBOL TABLE OOOO RNO 0001 BOATA O O OF W2 0010 Wl 0011 SFLG 0012
AOATA 0013 TPl 0007 UFLG 0015 TP2 0016 TP2S 0017 TP3 0018
ERROR 0019 TP4 οοοε DIGFLG OOIB TP5 OOIC TPSS ooio TP 6 001E
STKFLG 001F TP7 0014 TPlS 0021 T13 0022 T12 0023 TIl 0024
OCNTR 0025 T9 OOIA TP4S 0027 T7 002P T6 0029 T5 002A
TP3S 0028 T3 0020 TP7S 002D Tl 002E ISTK 002F ISTACK 0051
TP6S 0052 SPGM. 0026 Τ8 0056 BUFF 0058 REAL 0068 IMAG 0070
TlO 007« AT2 002C Τ2 0088 XR 0090 YR 0093 ZR OOAO
T4 00A8 LSTX 0054 EXTRA 00B8 BKKC OOBA S0L7 00C6 UPP 00C8
TA OOCA • ALPHA 0080 W OOCO 102 0000 IT7 0003 FLAG 0005
ATI 0006 FILE ΟΟΒΟ. BKWRT 0OD8 BR OOEO CR 00E8 DR OOFO
TR 00F8 SOBi? 0OCC ΙΟΙ 7E00 TERMN7 003D IMEO · 0040 PftRCO OOCO
UIP 0080 NTBL 0007 AR 5EC0 PRTORV 602D FRMT 5CA8 BLANK 5075
TPOS 5780 ROLLO .0OBA MT 57Fl PSD 55DA TXL 55E9 STKUP 55EF
ER 749B CMP 0000 DOTS 74D6 TXW 7424 TXXR ' 7438 EXXR 7452
PAREX 753B OVUNF 5532 ROLLU 75DD XRO 74OA XRNINE 75C8 UNORF 75Fl
LOMSG 76B9 QOG 74AA NOR 75FC FPS 75F6 FPM 7735 FPO - 7793
MAO 7630 FPMEX 75Β6 OVERF 7521 ZEROX 7489 XZEROQ 7416 XZER02 7417
ARSR 73E6. TXRX 7669 FPA 6800 FPDBRC 6898 TAN 63A9 ATM 69C3
IMULT 6A4A NTLN 7780 LSHIFT 6AC9 SIN 6B94 COS 689A ASIN 69F2
FPAEX 6SF7 PHl 73F3 CONST 6C8D PH3 6D34 PH4 60DO LSFT8 6E47
RECIP 6E65 MA08 6Α58 EXPN 53E4 IOUPX 6F52 LOGlO 6FA7 YUPX 6FE9
OSZERO 7328 PTOR 6C5D ΡΗ2 4840 ' AD07 484B BWM 7979 · EQR0P7 7840
ACOS 0030 AFFECT 6F2C CMP8 0084 STC0D7 4EC8 STC7 4EDE STClO 4££0
SORT 4EE3 STCl 7386 SUB7 4EEE STC9 4EFl STC4 4EF0 STC5 4F09
RTOP 4FOE STC2 0.082 FIELD 4F2B INSERT 4F4B RACK 4F58 TERM 4F5B
. TB- 4F60 -08YTE- 4ΕΕ4 STC3 4F85 S3T1 4F3E OMOOO 4F90 DM004 4F95
STCO * 4F96 0M008 4F16 STCfi 4FAB DM0D7 4FB8 0M0D6 4FC3 INSRT 4FC7
STC6 4FC3 I DO NE 4F78 SBT 4FE2 101 4FE5 RTN 4FE9 DEL 4FEC
- DELETE 4FEE UNPACK 4F9C θ"οος 500C •AMOO4 501F AMODl 5025 ΔΜΟ00 502A
OMOOl 503O AVOD2 4FD7 RTNl 5064 AMODR 506F STEP 5?7A STP8 5292
ILOOP 5297. STP6 4FFB AMOO 52AA NKEYLG 52A0 STP4 52RF STP3 52C0
OLOOP 52C6 STP5 5048 AMOOlO 52CE RSTP3 520Δ BSTPl 520E BSTP2 52ES
AM003 52EF STEPl 52Α3 OUTl 52F3 EXEC7 796β TOALP 519C KEYLOG '590A
PGMO TOTAL ERRORS 2 52CA BSTEP
STP7 52F4 STEP2
8STP4
• »«•»ERROR 201 218 NAM FMTFMT
70 9808/102 5
Page 69 CJßPG 06/04/75 36:54.05
00215 00218 00219 00220 00221 00222 00223 00224 00225 00226 00227 00228 00229 00230 00231 00232 00233 00234 00235 00236 00237 00238 00239 00240 00241 00242 00243 00244 00245 00246 00247 00248 00249 00250 00251 00252 00253 00254 00255 00256 00257 00253 00259 00260 00261 00262 00263 00264 00265 00266 00267 00268 00269 00270 00271
5075
OPT LIST,MEM
NAM FMTFMT
OPT LIST1MEM
ORG $5075
5075 D6 5077 5079 507B 507D CA 507F 5081 OE 5083 5084
5085 9C 5087 5089 DF 508B A6 5080 508F 5091 5093 5095 5097 5099 509A OF 509C 7E 509F 50Al 50A3 50A5 50A7 5C SOAQ 50AA 7F 50AD BD SOBO 50R2 Sl 5034 5086 5089 50BB CE 503E 508F A6 50Cl el 50C3 50C5 A6 50C7
* THIS SUBROUTINE ACCEPTS IN ACCA EITHER AN ASCII
' * CHARACTER OR ZERO. IF ACCA=O. CHARACTERS ARE ASSUMED TO BE
* IN USER MEMORY AND THE OUTPUT IS BUILT FROM THERE.
* IF ACCA IS A CHARACTER. THE ROUTINE WILL SIMPLY β PUT THAT CHARACTER INTO THE CURRENT OUTPUT LINE
* BEING BUILT AND RETURN TO THE CALLER.
* ON THE INITIAL ENTRY» T13 MUST BE SET TO ZERO. (T13=FIELD
* THIS ROUTINE BUILDS THE LINE IN LOCATIONS REAL AND IMAG »
09 AFMT LDA 8 PSFLG · GET CURRENT RUN/STOP FLAG
27 STA B T8 SAVE IT FOR EXIT CHECK
25 STA A TlO SINGLE CHARACTEP MODE
14 BNE SCHAR BRANCH IF YES.
CO ORA R #SCO SET IT FOR »STOP·1 COMMANO CHECK
09 ..STA B RSFLG RESTORE THE UPDATE CA "LDX UIP ELSE GET PRGM PNTR
INX BUMP IT TO FIRST CHAR
AFMTO INX " BUMP TO THE CHARACTER
08 CPX EOPM END OF MEMOPY
13 BEQ AFMT15 TERMINATE IF YES
CA STX UIP ELSE SAVE UPDATED POINTED
00 LDA A X GET THE CHARACTER
02 8NE SCHAR CONTINUE IF NON ZERO 20 LDA A #$20 ELSE LOAD A BLANK
B4 SCHAR CMP A £SB4 ALPHA TERMINATOR
07 BEQ- AFMT15 BRANCH IF YES
Bl - CMP A «SB1 END STATEMENT
06 8NE' AFMTl BRANCH IF NOT
DEX ELSE BACK UP ONE
CA STX UIP RESTORE UIP
513E AFMT15 JMP ATERM TERMINATE THE OUTPUT
B2 AFMTl CMP A «SB2 IS IT A PRINT COMMAND
47 BNE AFMT2 BRANCH IF NOT
22 LDA B T13 GET FIELD INDICATOR
3C BNE AFMTlO IGNORE PRINT IF ONE ALREADY DONE
INC B ELSE SET PRINT FLAG
22 STA B T13 RESTORE FIELD INDICATOR
000F AFMT13 CLR DIGFLG TERM. DIGIT ENTRY
5C8C JSR FRMT+S14 FORMAT X-REG
67 AFMT4 LDA A BUFF+15 GET RIGHT-MOST CHAR
20 . CMP A £«120 IS IT A BLANK
05 BNE AFMT3 BRANCH IF NOT
S184 JSR. SHBUFF ELSE SHIFT THE BUFFER RISHT
F5 BRA AFMT4 CONTINUE REMOVING TRAILING RLANKS
0057 AFMT3 LDX #8UFF-1 GET LEFT-END CHAP AORS -
AFMT5 INX GET CHAR AORS
00 LDA A X GET THE CHARACTER
20 CMP A #S20 . IS IT A BLANK
F9 BEQ AFMT5 BRANCH IF YES
10 LDA A 16.X ELSE GET CORRESPONDING STRING LOCATlO
03 3EQ AFMT7 BRANCH IF IT»S EMt>TY
709808/1025
Page 70 CJBPG 06/04/75 36:54.05
00272 50C9 5173 OO AFMT7 - APMTlO JMP A . LOVFl
00273 50CC DF 23 0077 AFMT14 STX A T12
00274 50CE Α6 00· ca LDA X
00275 5000 Α7 10' 56 STA 16t-X
00276 50D2 08 0078 AFMT2 INX
00277 50D3 ac 0068 CPX «BUFF+16
00278 50D6 26 F6 OO BNE AFMT14
00279 5008 DE 23 F8 LDX T12
00280 50DA ac 0053 CPX B «RUFF.
00281 50DD 27 39 23 BEQ AFMT6·
00282 50DF E6 OF 02 AFMT16 LOA 15»X
002*3 50El. 26 35 Ol 8NE A AFMT6
00284 50E3 DE CA LDX UIP
00285 50E5 96 25 0076 LOA TlO
00 286 50E7 27 9B F6 BEQ A AFMTO
00287 50E9 39 Ol RTS
00288 50EA 81 02 23 CMP A HZ
00289 50EC 27 2A 0067 AFMT17 BEQ AFMT6
00290 50EE Bl 03 38 CMP *3
00291 50FO 26 05 OO BNE AFMT16
00292 50F2 73 0026 AFMT9 COM 3 T9
00293 50F5 20 EC 8RA AFMTlO
0029Λ 50F7 Dft 26 LDA A T9
00295 50F9 27 OA BEQ AFMT17
00296 50FB 81 48 CMP A #S48
00297 50FO 22 06 8HI AFMT17
00298 SOFF 81 40 A FMT 6 CMP A «S40
00299 5101 23 02 AFMT8 BLS .8 AFMT17
00300 5103 88 IF AFMT12 AOD #S1F
00301 5105 06. 22 LDA T13
00302 5107 26 11 8NE AFMT8
003Π3 5109 CE 0067 LDX 8 ePEAL-l
00304 510C 08 INX
00305 51OD E6 OO AFMTIl LDA A X
00306 510F 26-F8- ■- 8NE AFMT9
00307 5111 A7 STA X
00308 5113 flC CPX ÖPEAL+15
00309 5116 26 BNE AFMTlO
00310 5118 20 3RA LOVF
00311 511-Λ CE LDX B «PEAL+16
00312 5110 09 OEX
00313 SIlE E6 LOA X
003U 5120 26 BNE AFMT12
00315 5122 09 DEX B
00316 5123 OF STX β Tl 2
00317 5125 E6 LOA 2.X
00318 5127 E7 STA ItX
00319 5129 oa INX
00320 S12A ac CPX A «PEAL+14
00321 5120 26 BNE AFMTIl
00322 512F A7 STA ItX
00323 5131 DE LDX T12
00 324 5133 8C CPX B «REAL-1
00325 5136 27 REO LOVF
00326 5138 E6 LDA X
ELSF TESMiMATE THIS LIME SAVE INDEX FOR FULL CHECK TRANSFER X-REG ASCII THE RIGHT MOST END OF THE STRING HElNG 8UILT
DONE YET ? BRANCH IF NOT GET INITIAL INDEX VALUE · POINTING TO LEFT MOST CHAt? ? LINE OVERFLOW IF YES GET STRING CHAR LEFT OF X-REG LIME FULL IF NON-ZERO ELSE GET PRGM PNJR SINGLE CHARACTER MOOE BRANCH IF NOT ELSE RETURN TO CALLER "NEW LINE» COMMAND BRANCH IF YES "SHIFT" COMMAND ? BRANCH IF NOT ELSE TOGGLE THE SHIFT FLAG CONTINUE
GET THE SHIFT FLAG BRANCH IF SHIFT NOT INVOKED ELSE CHECX CURRENT CHARACTER BRANCH IF UNAFFECTED SY "SHIFT" ELSE CHECK LOWER LIMIT 8RANCH IF UNAFFECTED GENERATE SHIFTED'CHARACTER GET THE FIELD INDICATOR BRANCH IF "PRINT" ALREADY RECEIVED
ELSE FIND FIRST AVAILABLE LOCATION BUMP SEARCH AORS GET CURRENT CONTENTS CONTINUE SEARCHING IF IT'S FULL ELSE SAVE NEV CHARACTER
LAST AVAILABLE LOCATION BRANCH IF NOT FULL YET ELSE LINE OVERFLOW
GET RIGHT MOST ADRS ■+ BACK INTO THE LINE GET CURRENT CHARACTER BRANCH IF NOT EMPTY ELSF BACK UP AGAIN SAVE BUFFER ADRS MOVE THE RIGHT ENO ASCII LEFT ONE POSITION IN THE PUFFER
DONE SHIFTING YET ?" BRANCH IF NOT SAVE LATEST CHARACTER GET INITIAL BUFFER PNTR LINE FULL NOW ?
BRANCH IF YES · ·
ELSE GET CHAR LEFT OF X-REG
709808/102 5
Page 71 CJRPG 06/04/75 36:5*.05
- 94 -
00327 00328 00329 00330 00331 00332 00333 00334 00335 00336 00337 00333 00339 003*0 00341 00342 00343 00344 00345 00346 00347 00348 00349 00350 00351 00352 00353 354 00355 00356 00357
-00358 00359 00360
-00361-00362 00363 00364 00365 00366 00367 00368 00369 00370 00371 00372 00373 00374 00375 00376 00377 0037a 00379 003«0 00381
513A 513C 513E 5140 5142 5144 CE
5147 E6 5149 5148 514C S14E 514F CE
5152 OR
5153 A6 5155 5157
5159 A7
5158 8C-515E 26" 5160 5162 5164 516628 5168 516A 516C 5160 7E 5170 7F 5173 5175 CE 5178 6F 517A 09· 517B 517D -517F 51*1 7E 5184 CE 5187 A6 5189 0« 518A 8C 519D 518F E6 5191 Δ7 5193 5194 5195 5197 5199 5198 519C D6 519E 51AO 51A2 2A 51A4 «Ο 51A7 7F
34
A5
27
02
09.
0010
67
04
F9 0057
10
02
20
OO
0067
F2
25
09
09
05
12
Ol
5300
0022
DA
0010
67
FB
22
88 -
SOAA
0058
OO
0068 08 OO OO
F3 20 58
07
OE
07
3C
4EC8
00C6
AFMT.18 ATERM
ATERMO ATERM4
ATERM3 ATERM2
ATERMl
PRINT
LOVF
LOVFl
L0VF2
SHSUFF
SSS
TOALP ALPHAK
BNE .BRA LOA B BMI STA LDX LDA B BNE DEX 8NE RTS LDX INX LDA A 8NE LDA A STA A CPX BNE LDA A BNE LDA A BMI LDA A BNE RTS JMP CLR BSR LDX CLR DEX 8NE LOA B 8EQ JMP LDX LDA A INX CPX BEO LDA B STÄ A TBA INX BRA LDA A STA A RTS LOA 8MI LDA R BPL JSR CLR
LOVF
AFMTlO
T8
ATERMO
RSFLG
REAL-ItX ATERM3
ATERM4' «BUFF-1
16,X
ATERMl
#520
«BUFF+15
ATEPM2
TlO
PRINT
PSFLG
PRINT
SFLG
PRINT
OEVICE
T13
ATERM3
#16
REAL-1»X
L0VF2
T13
AFMT18
AFMT13
SBUFF
«8UFF+16
SSS
»$20 8UFF
TGL
NKLGl
TGL
RMODl
STC007
S0L7 OVERFLOW IF NON-ZERO GO SEE WHAT'S NEXT GET SAVED R/S FLAG BRANCH XF NO CHANGE NECESSARY ELSE RESTORE OLD FLAG SET CHARACTER COUNT
GET RIGHT END CHAR. 8RANCH IF NOT NULL ANO PRINT ELSE CONT. CHECKING FOR NULL STRING ALL CHAR. CHECKEO ? YESf NULL LINE: NO PRIMTt RETURN
PRESET INOEX TO MOVE THE LINE THE TEMPORARY BUILDING BUFFER TO THE OUTPUT BUFFER PUTTING BLANKS IN THE OUTPUT SUFFER IN THE COCRESPONDING LOCATIONS WHERE ZERO'S WERE FOUND IN THE TEMPORARY BUFFER
SINGLE CHARACTER MODE ? PRINT IF YES
STOP KEY HIT ? PRINT IF NOT
STEPPING ?
PRINT IF YES ELSF SKIP THE PRINT CALL THE OUTPUT DEVICE RESET FIELO POINTER OUTPUT THE CURRENT STRING PRESET INDEX FOR CLEAR CLEAR LINE BUFFER
GET FIELD POINTER CONTINUE IF IN ALPHA. ... -ELSE RE-OO X-REG GET THE SUFFER STARTING GET LEFT MOST CHARACTER INC THE BUFFER POINTER
FINISHED YET ? BRANCH IF YES ELSF. SAVE NEXT CHARACTER REPLACE IT WITH THE OTHER TRANSFER NEW CHAR TO ACCB ADJUST THE PNTR .
CONTINUE SHIFTING PIGHT THE BUFFER REPLACE THE LEFT MOST CHAR WITH A BLANK ANO RETURN. WHAT MODE ?
BRANCH IF PPQGPAM MODE GET MOOE
BRANCH IF PUN MOOE ELSE STORE INST CLEAR THE INSTRUCTION REGISTER
7 0 9 8 0 8/1025 GWGlHAL I
Page 72 CJFIPG 06/04/75 36:54,05
- 95 -
00382 SlAA" C6 80 NKLGl LDA 8 #$80
00383 51AC 07 C7 STA P S0L7+1
00384 51AE 07 CC ST-A R ALPHA
00385 5180 96 06 AK2 LOA A ERROR
003β6 5182 26 29 BNE AK3+3
00387 5184 BD 7A64 JSR SOISPl
00388 5187 80 5229 JSR KTOA
00389 518A 81 04 CMP A «4
00390 518C 26 03 AK8 8NE AK8
00391 518E 7E 527A JHP STEP
00392 51Cl 81 05 CMP A #5
00393 S1C3 26 03 AK9 BNE AK9
00394 51C5 7E 52CE JMP 8STEP
00395 51C8 97 C6 STA A S0L7
00396 51CA 80 4EC8 JSR STC0D7
00397 51CO 96 06 LOA A ERROR
00398 5ICF. 26 OC 8NE AK3+3
00399 5101 96 C6 LDA A S0L7
00400 5103 7F 00C6 CLR S0L7
00401 51D6 81 84 AK3 CMP A #?84
00402 51D8 26 DA BNE AK2
O0403 51DA 7P OOCC PMOOl CLR ALPHA
00404 5100 7E 7978 JMP BWM
00405 51E0 4F CLR A
00*06 51El «J 7 22 STA A T13
00407 51E3 97 26 STA A T9
004Ö8 51E5 4C INC A
00409 51Eft 97 CC AK7 STA A ALPHA
00410 51E8 CE 0010 LOX «Ί6
004Π 51EB 6F 67 CLR REAL-1»X
00412 51E0 09 AK6 OEX
00413 SiEE 26 F8 BNE AK7
00414 51F0 RO 7A64 — - - JSR SOISPl
00415 51F3 80 36 BSR KTOA
00416 51F5 06 C7 LOA 8 S0L7+1
00417 51F7 C4 70 ANO B «570
00418 51F9 27 16 BEQ PRT
00419 51F8 97 68 STA A REAL
00420 51FO 80 5324 JSR IOFMT
00421 5200 96 06 LOA A ERROR
00422 5202 26 06 BNE AK3
00^23 5204 96 68 LDA A REAL
00424 5206 81 84 CMP A «584
00425 5208 27 OO 8EO AK3
00426 520A CE 00C6 LDX #S0L7
00427 5200 DF CA PRT STX UIP
00423 520F 20 OF BRA AK6
00429 5211 «0 15 BSR AK5
00430 5213 96 25 LDA A TlO
00431 5215 81 84 CMP A #SB4
00432 5217 27 Cl R.MPRT BEQ AK3
00433 5219 20 05 BRA AK6
00434 52 IB 4F CLR A
00*35 521C 97 22 STA A T13
00436 saiE 97 26 STA A T9
PREPARE THE SECOND 8YTE
SET THE ALPHA FLAG ERROR GENERATED 8RANCH IF YES GET NEXT KEY CONVERT TO ASCII STEP COMMAND BRANCH IF NOT ELSE DO "STEP" BACK STEP COMMAND BRANCH IF NOT ELSE OO "8ACK STEP" SAVE THE ASCII STORE IT IN MEMORY ERROR ?
BRANCH IF YES GET THE CHARACTER RESET THE INST REGISTER ^LPHA TERMINATOR BRANCH IF MOT ELSE RESET THE AL=HA FLAG RETURN TO SUPV.
ZERO TO ACCA CLEAR THE FIELD POINTER RESET THE SHIFT FLAG SET ACCA SET ALPHA FLAG PRESET INDEX CLEAR LINE BUFFER
GO GET NEXT CHAR. CONVERT ACCA TO ASCII
GET IMST - -
MASK OFF SELECT COOE ■BRANCH IF PRINTER ELSE PUT CHAR IN PE^L CALL THE DEVICE ERROP GENERATED BRANCH IF YES GET LAST CHAR OUTPUT
ALPHA TERMINATOR.?
BRANCH IF YES ELSE RESET INST PNTR SAVE IT
CONTINUE OUTPUT TO RUFFER GET LAST CHAO OUTPUT ALPHA TERMINATOR BRANCH IF YES ELSE CONTINUE
CLEAR FIELD POINTER CLEAR SHIFT INOICATOR
709808/1025 ORIGINAL
Page 73 CJBPG 06/04/75 36:54.05
00^37 5220 CE 0010 - AK5 LDX #16 PRESET INDEX
00438 5223 6F 67 RMPRTl KTOA CLR PEAL-I» X CLEAR LINE BUFFER
00439 5225 09 DEX
00440 5226 26 FB' BNE RMpRTl
00441 52?5 7E 5075 JMP AFMT OUTPUT THE ASCII
0 0442 52?q CE 5239 LDX «ASCII. GET ASCII TABLE ADORESS
00443 522Ε OF 14 STX TPl SAVE FOR MODIFICATION
00444 5230 9B 15 ADD A TPlS ADO THE KEYCODE TO LSB · S
00445 5232 97 15 STA A TPlS RESTORE RESULT
00446 5234 OE 14 STC0D7 LDX TPl RESTORE NEW INDEX
0-0 447 5236 A6 OO IOFMT LDA A X ACCA=ASCII CHARACTER1
00448 5233 39 SOISPl RTS RETURN
00449 BWM
00450 4EC8 STEP EQU S4EC8
00451 532A BSTEP EQU S532A
00452 7A64 EQU S7A64
00453 7973 EQU $7978
00454 527A EQU S527A
00 455 52CE EQU 552CE
7Ό9808/1025
263315'
Page 74 CJBPG 06/04/75 36:54.05
00457 5239 50 30 » IN OROER S50 ASCII SET FOR CJ.
00458 523A 51 2E «ZERO TO OCTAL 77. $51 OF KEYCOOES FROM
00459 5238 52 24 «THIS FILE OEFINES THE β $52
00460 523C 53 23 •EMTRIES ARE ASCII FCB $53
00461 5230 84 3F FCB SB4 .P
00462 523E 57 25 FCB S57 Q
00463 523F 27 5E FC8 S27 R · .
00464 5240 3E 3A FCB S3E S
00465 5241- 54 2A FCB $54 TERMINATOR
00466 5242 55 20 FCB $55 W
00467 5243 56 40 FC8 $56 r
00468 5244 04 03 FC8 $4 >
00469 5245 OS · FCB $5 T
00470 5246 58 FCB S58 U
00471 5247 37 FCB $37 V
00472 5248 38 FCB S38 STEP COMMAND
00473 5249 41 FCB $41 SACK STEP COMMAND
00474 524 A· 42 FC8 $42 X
00475 5248 43 FCB $43 7 ■
00476 524C 44 FCB $44 8
00477 5240 45 FCB $45 A
00478 524E 59 FCB $59 B
00479 524F 34 FC8 S34 C
00480 5250 35 FCB $35 O
00481 5251 46 FC8 $46 E
00482 5252 47 FC8 S47 Y
00483 5253 48 FCB $48 4
00484 5254 49 FCB $49 5
00485 5255 4A FCB 34A F . - — ._
00486 5256 5A FCB $5A ■ G
00487 5257 31 FCB S31 H
00488 5258 32 FCB - . $32 I
00489 5259 48 FCB $4B . J
00490 525A 4C FCB . $4C z
00491 525B Λ D FCB $40 1
00492 525C 4E FCB $4E 2
00493 525D .4F FC8 S4F K
00494 -525E -J» ft« FCB - $20 - L
00495 525F FCB $30 M .
00496 5260 FCB $2E N
00497 5261 ... FCB-- S24 O
00498 5262 FCB $23 BLANK
00499 5263 FC 8 $3F 0
00500 5264 FCB $25
00501 5265 FCB $5E $
00502 5266 FCB $3A
00503 5267 FCB $2A *
00504 5268 FCB S2D 95
00505 5269 FCB S40 A
00506 526A FCB $3
• - ·
00507 FCB
00508 FCB
00509 FCB
00510 SHIFT
00511
70 9808/1025
t ORIGINAL INSP£CT£D
Page 75 CJBPG 06/04/75 36:54.05
00512 00513 00514 00515 00516 00517 00518 00519 00520 00521 00522 00523 00524 00525 00526 00527 00528 00529 00530 00531 00532 00533 00534 00535 00536 00537 00538
5268 526C-2F 5260 3C 526E 526F 5270
5271 2C
5272 5273 5274
5275 Ol
5276 5277 5273
FCB SB2 PRINT
FCB $2F /
FCB " 53C <
FCB $39 9 .
FCB 536 6
FCB S33 3
FC8 S2C »
FC8 $29 )
FCB S30 =
FCB $28 (
FCB Sl TAB
FCB ■ S20 UNUSED KEYCOOP
FC8 $2 NEW LINE
FCB S2B +
(075)
»CODE TO SELECT THE PRINT OEVICE. IF EOM »IS NEGATIVE, THE OUTPUT DEVICE IS SPECIFIED 3Y THE «CONTENTS OF T6 AND, T5. EOM MUST SE CÜNTROLLED »BY THE CALLER AND 'fiESET TO THE CORRECT VALUE «WHEN FINISHED.
53D0 5300 06 OA 5302 2B 53D4 7E 6034 53D7 OE 53D9 6E
ORG DEVICE LDA B
BMI
JMP NOPPT LDX
JMP S53D0
EOM GET END OF MEMORY WORD
NOPRT NOT INTERWiL PPINTEP I? NEGATIVE
PRTDPV+7 ELSE CALL THE PRINTER
T6 GET THE DEVICE ADRS
X CALL THE DEVICE
09808/102
ORIGINAL INSPECTED
Page 76 CJBPG 06/04/75 36:54*05
ENO
SYMBOL TABLE 0000 ACTL 0001 BOATA 0002 BCTL 0003 INPUT 0004 IOIN 0005
AOATA 0006 TGL 0007 UFLG 0008 'RSFLG 0009 EOM OOOA EOPM 00Od
ERROR OOOD RND OOOE DIGFLG OOOF W2 0010 Wl 0011 SFLG 0012
STKFLG 0013 TPl 0014 TPlS 0015 TP2 0016 TP2S 0017 TP3 0018
DCNTR 0019 TP4 001A TP4S 001B TP5 OOIC TP5S 001D TP6 001E
;TP3S 001F TP7 0020 TP7S 0021 T13 0022 T12 0023 TIl 0024
TP6S 0025 T9 0026 T8 0027 T7 002« T6 0029 TS 002Δ
TlO 002B T3 002C T2 002O Tl 002E ISTK 002F ISTACK 0051
T4 0052 SPGM 0054 EXTRA 0056 BUFF 0058 REAL 0063 IMAG 0070
TA 0078 AT2 0080 W 0088 XR 0090 YR 0098 ZR OOAO
ATI O0A8 LSTX OOBO BKWRT 00B8 BKKC 003A S0L7 00C6 uop. 00C8
TR OOCA ALPHA OOCC 101 O OCO 102 OODO IT7 . 0003 FLAG 0OO5
UIP 0006 FILE 0007 AR 0008 BR OOEO CR 00E8 DR. OOFO
TPOS 00F8 S08B OOBA MT 7E00 TERMN7 003D IMEO 0040 PARCD OOCO
ER 0080 NTBL 0000 DOTS 5EC0 PRTDRV 6020 FRMT 5CA8 BLANK 5075
PAREX 5780 ROLLD 55B2 ROLLU 57Fl PSO 55DA TXL 55E9 STKUP 55EF
LOMSG 749B CMP 74AA NOR 7406 TXW 7424 TXXR 743B EXXR 7452
MAO 753R OVUNF 75B6 OVERF 75DO XRO 74OA XRNINE 75Cfl UNORF 75Fl
ARSR 76B9 QDG 7669 FPA 75FC FPS 75F6 FPM 7735 FPO 7793
IMULT 76.30 FPMEX 7780 LSHIFT 7521 ZEROX 7489 XZEPOQ 7416 XZER02 7417
FPAEX 73E6 TXRX 73F3 CONST 6800 FP08RC 6898 TAN 68A9 ATN 69C3
RECIP 6446 NTLN 6A58 EXPN 6AC9 SIN 6B94 COS 6B9A ASIN 63F2
OSZERO 6BF7 PHl 6C5D PH2 6C80 PH3 6034 PH4 6000 LSFTe 6E47
ACOS 6E65 MA 08 6F2C CMP8 53E4 IOUPX 6F52 LOGlO 6FA7 YUPX 6FE9
SQRT 7328 PTOR 7386 AFMT 5075 AFMTO 5084 SCHAR 5091 iFMfl5 509C
RTOP 509F AFMT13 50ÄA AFMT4 50B0 4FMT3 5ÖBB AFMT5 SORE 4FMT7 50CC
AFMTl 50CE AFMTlO 50E3 AFMT2 50EA 4FHT16 50F7 ÄFMT17 5105 AFMT9 510C
AFMT14 5118 AFMT8 511A AFMT12 511D AFMTlI 5125 AFMTl« 513C ATEP*·1 513£
AFMT6 5144 ATF.RM4 5147 ATERM3 514F ATERM2 5152 ATEPMl 5159 PRINT · 5160
ATERMO 5170 LOVFl 5173 L0VF2 5178 SHBUFF 5184 S 518A SSS 5197
LOVF 519C ALPHAK 51AO NKLGl 51AE AK2 5134 AKH 51Cl AK9 51Cd
TOALP 510A RMOOl 51E0 AK7 51EB AK6 51F0 PRT 5211 RMPRt 5218
AK3 5223 AK5 5228 KTOA 522B STC007 4EC8 IOFMT 532A SOISPl 7A64
RMPRTl 797R STEP 527A BSTEP 52CE ASCII 5239 DEVICE 5300 NOPRT 53D7
BWM TOTAL ERRORS 1
7 0 9808/1025
ORIGINAL IMSPECTED
Page 77 CJBPG 06/04/75 36:54.05
00215 00218 00219 00220 00221 00222 00223 00224 00225 00226 00227 00228 00229 00230 00231 00232 00233 00234 00235 00236 00237 00238 00239 00240 00241 00242 00243 0024& 00245 00246 00247 .00248 00249 00250 00251 00252 00253 00254 00255 00256 00 257 00258 00259 00260 00261 00262 00263
OPT
LIST.MEM
5550 5550 5553 5556 5558 555A 555B 555C 5550 555F 5561 5562 5564 5566 556« 556A 556C 556F 5572 5574 5576 5579 557B 557D 557F 5530 5583
5536 5588 558A 558C 55SE 5590 5591 5594 5596 5598 559A
0014
RO 55E9 CE 0092 06 2B 5C 57 5A
29 A7 OO 08' 20 F8 24 A6 OO 84 OF A7 OO 7E 7406 BO 55E9 9ft 2A 7E 74OA 81 .OB ID 9ft 4C
7F 0014 44
97 OE 24 Aft 84 FO A7 08
8C 0006 27 6F 20 F6 39
THESE POUTINES RETURN THE INTEGER AND FRACTIONAL PART OF THE ORIGINAL ARGUMENT
JOHN KEITH
MAY 28. 1974
REV A
REGPTR INTFRl
INTFR2
INTFR3
INTFR4 INTFR5
INTFR6
EOU ORG JSR LDX LOA β BMI INC P ASR B DEC B BMI STA A INX BRA BCC LOA A AND A STA A JMP JSR ' LOA A BPL JMP CMP A BCC LDA A INC A CLR LSR A STA A LOX BCC LDA A AND A STA A INX
8EQ
CLR
BRA
IMTFR9 RTS
TPl
S5550-
TXL
MXR+2
XR
INTFR9
INTFR3 X
INTFR2
INTFR4
SSF
NOR
TXL
XR
INTFR6
XRO
Pll
INTFR9
XR
REGPTR
REGPTR+1
PEGPTR
INTFR7+1
$92»X
PSFO
S92,X
»6
INTFR9 S92.X INTFR7 SAVE X IN LAST X SET INOEX TO MANTISSA (EXP+1)/2=WHOLE WORDS TO CLEAR RET. IF .NEG. (ALREADY FRACT.)
loop to clear whole words exit from loop · clear pair of mantissa digits move pointer test if done clear half word ?
yes» load word clear upper half restore result now normalize result save x in last x examine exponent positive, check size of exponent negative» no integer pa=?!", cle*r ano IS EXP > 10 ? YES» CX] IS INTEGER ^APT GET EXPONENT AOD 1 SO EXP/2 POINTS TO =POPE= WORO CLEAR FIRST SYTE CF -3OlNTER DIVIDE EXP+l SY SAVE WO«O
LOAD WOPO POINTER IN X
WAS EXP+1 OOD ?
YES» CLEAR SECOND HALF OF 9YTE CLEAR SECOND HALF RESTORE WORD IN X POINT TO NEXT WOPO IN X-REG IS CLEARING COMPLETE YES» EXIT-CLEAR NEXT WORD CONTINUE OPERATION RETURN
709808/102 OBSGiMAL INSPECTED
263315t
Page 78 CJBPG 06/04/75 36:54.05
00265 »
00266 * 00?.67 « 00263 *
00269 . » ·
00270 5598 D7 2E CLXRl
00271 5590 80 740A
00272 55A0 4F LOEX
00273 55Al 97 OF
00274 55A3 7E 569C
CLEAR X-PEGISTER
JOHN KEITH A Tl
STA R XRO
JSR
CLR A DIGFLG
STA A DEXIT
JMP
APRIL 2» 1974
REV A
SAVE RTS FLAG CLEAR X-REG COMMON EXIT POINT FOR STACK LIFT OISA CLEAR FLAG TO START NEW DATA ENTRY RETURN TO SUPV
709 8087102 5
ORlGWAL INSPECTED·
- 102 -
Page 79 CJBPG 06/04/75 36:54.05
00276 5 5 AS D7 2E * TRANSFER ROUTINES 9 ,X->Y', X KYR UNCHANGED
00277 55A8 80 4A » REGISTER EXXR
00278 55AA 20 F4 β ·.» JOHN KEITH APRIL 2» 1974 REV B Tl SAVE RTS FLAG
00279 * STKUP+5 LIFT STACK
00280 * ENTER KEY LOEX RET TO SUPV
00281 * 2->T»Y->2
00282 554C CE 0098 *. • X EXCHANGE Y
00283 55AF 7E 7452 ENTERl STA B *
00284 8SR XEYl LOX GET Y-REG AORS
00285 BRA JMP EXCHANGE REGISTERS
00286
00288
00289
00290
00291
00292
709808/1025
Page 80 CJBPG 06/04/75 36:54.05
00294 55B2 CE 91 i DOWN LOX A X->T.Y->X CMP iZ->Y.TEMP->Z DIfiFLG • -
00295 5585 A6 27 t β . T->TEMP, LDA B BEO RLSTX2 DOING DIGIT ENTRY ?
00296 55B7 E6 97 LDA A #P10 STA LOAD COUNTER/POINTER DIGFLG BRANCH IF NOT
00297 5589 A7 43 » ROLL i STA A S8F.X COM LOAD WORD FROM X ELSE TERMINATE IT
00298 5588 A6 97 0008 ROLLOl LDA B SA7,X . STA LOAD WORD FROM T STKFLG SET MS8
00299 5580 E7 8D 8F ROLLOS STA B 5A7«X BSR STORE X IN T STKUP ENARLE LIFT
00300 558F E6 CE A7 LDA A S9F,X LDX LOAD WORO FPOM Z . *LSTX DO STACK UP IF.ENARLED
00301 55Cl A7 7E A7 STA B S9F»X JMP STORE T IN X TXXR SET INDEX REGISTER TO LAST X
00302 55C3 E7 9F STA $97»X LOAD WORD. FROM Y TRANSFER X TO LAST K
00303 55C5 09 9F DEX S97»X STORE Z IN Y ■ :
00304 55C6 26 97 BNE S8F.X STORE Y IN X
00305 55C8 39 97 RTS DECREMENT COUNTER/POINTE-R
00306 8F R0LLD5 CONTINUE.
00307 RETURN TO CALLING ROUTINE
00308 EO
00309. * RECALL LAST X TO X-REGISTER
00311
00312 55C9 KEITH APRIL 3» 1974 REV A
00313 55C8 * JOHN
00314 55CD- ι· : A
00315 55CF OF RLSTXl
00316 5500 05 A
00317 5502 OF A
00318 5504 A
00319 5507 OO
00120
00321
00322
00323
18 RLSTX2
0080
7438
709808/1025
ORIGINAL INSPECTED
Page 81 cjbpg 06/04/75 36:54.05
00325 550A - 55E9 CE * PARTIAL STACK DOWN < LOA V 00BO t KEITH
00326 55D0 55EC A6 * PSD« » PREFORMS OPERATION Ζ->Υ.Τ->Ζ· STA ♦ TXL» 73F3 * JOHN APRIL 3» 1974 REV A
00327 550F E6 STA I *8
00328 55El A7 ► JOHN OEX < LDX A 5A7.X LOAD COUNTER/POINTER
00329 55E3 E7 BNE JMP B S9F»X LOAD WORO FROM T
00330 55E5 09 0008 PSOl LOX RTS A M9FiX LOAD WORD FPOM Z
00331 55E6 26 A7 PS05 LDA B S97,X STORE INTO Z.
00332 55E8 39 9F STORE INTO Υ"
00333 9F PS05 OECR COUNTER
00334 97 NOT COMPLETE
00335 RETURN TO CALLING ROUTINE
00336 F5 TRANSFER
00337 X TO LAST X
00338 CE KEITH
00340 7E APRIL 3» 1974 PEV A
00341 «LSTX
00342 TXRX GET LAST X ADRS
00343 TRANSFER X-REG
00344
00345
00346
709008/1025
ORIGINAL INSPE
-Page 82 CJ8PG 06/04/75 36:54.05
0034B 00349 00350 00351 0035a 00353 0035-4 00355 00356 00357 00358 00359 00350 00361 00362 00363 00364 00365 00366 00367 00363 00369 00370 00371 00372 00373 00374 00375 00376 00377 00379 00380 003Bl 00382 00383 003S4 003flS 00386 00387 00303 00389 00390 00391 00393 00393 00394 00395
■Β-
55EF 55F2 55F4 55F5 55F7 55FA 55FC 55FE 5600 30 5604 5606 5607 5608 5604 560C 5600 5610
5611 5612 5614 5617 561A 56 IC 5610 561E 5620 562?. 5623
0020 7D 0000 2A IC OF
9F CE 0008 AE 9E AF Δ6 AE AF 9E AE SE iF 09 09
26 FO 9E OE
7F 0000 39
STKUP PERFORMS THE FOLLOWING OPERTION:
z->T»y->z.x->Y, τ lost'
THIS OPERTIOM OCCURS ONLY IF THE AUTO" STACK UP FLAG IS SET. IF THE ROUTINE IS ENTERED AT STKUP2 THEM THE OPERATION IS ALWAYS PERFORMED.
JOHN KEITH MAR 24, 1974
REV R
STEMP EQU
STKUPl TST BPL
STKUP2 SEI STS LDX
STKUP3 LDS STS LOS STS LDS STS OEX OEX
LDS CLI CLR
STKUP9 RTS
* CLEAR
TP7
STKFLG TEST CONDITION OF AUTO STACK FLG IM H
STKUP9. AUTO LIFT IS NOT ENABLED
DISABLE IMTESRUPTS WHILE LIFTING STAC
STEMP SAVE STACK POINTER IN TE^PGRARY
«8 LOAD LOOP COUNTER
S9E«X LOAD TWO WORDS FROM Z
$A6*X STORE WORDS IN T
•F96.X LOAD TWO WORDS FPOM Y
S9E»X STORE WORDS IN Z
5βΕ·Χ LOAD TwO wriPOS FROM X
S96.X STORE WORDS IN Y
DECREMENT COUNTER« POINT TO «EXT LOCA STKUP3 CONTINUE MOVING RESIS STEMP RELOAD ORIGINAL STACK
ENABLE INTERRUPTS STKFLG CLEAR AUTO STAC* FLiG
RETURN TO CALLING POlMT
STACK ROUTINE
JOHM KEITH JUNE 3» 1974
E^J A
0014 SAVE
OF CLRl
9F
8E QOOO
CE 0020
AF 8E CLR3
09
09
26 FA
SE
OE
39
EOU ScI STS LDS LDX STS
οεχ
DEX SNE LDS CLI »TS
TPl
SAVE
«0
#32 DISABLE INTERRUPTS
SAVE STiCK POINTER
LOAD STACK POINTER "ΊΤΗ CLEAR VALUE
INITIALIZE LOOP CT^/POINTEP»
CLEAR TWO RYTES
DECREMENT LOOP CTR/POINTE»
CLR3 SAVE CONTINUE
RESTORE STACK POIMTE«»
ENABLE I*JTEP«UPTS
RETURN
709808/1025
OBiGiMAL !HSFECTED
Page 83 CJBPG 06/04/75 36:54.05
00397 5624 97 OF OF * β KEY EXECUTION TERM. DIGIT ENT. TERM. DIGIT ENT.
00398 5626 BO 5C8C 04 » PRINT ♦ PRINT FORMAT SET CNTR
00399 5629 7E 6034 2E β « PRINT AND RETURN SAVE CTR
00400 57Fl ·* JOHN « JOHN KEITH APRIL 19. 1974 REV A POSITION OATA
00401 5C8C » FORMAt CURRENT DATA IN X-REG
00402 6034 PRTl STA TEMP EQU A DIGFLG. PRINT THE X-REG
00403 002E JSR PTSTKl STA FRMT+S14 KEITH JUNE 4, 1974 REV A DECREMENT LOOP CTRt DONE ?.
00404 F2 JMP LDA PRTDRV+7 NO, CONTINUE
00406 002E STA Tl RETURN
00407 562C 97 PTSTK3 JSR STACK A OIGFLG
OQ408 562E 86 JSR A «4
00409 5630 97 JSR A TEMP
00410 5632 3D DEC ROLLUP
00411 5635 RO 8NE FRMT+S14
00412 5638 80 RTS PRTDRV+7
00413 5638 7A TEMP
00414 563E 26 PTSTK3
00415 5640 39
00416
00417
00418
00419
00420
709808M025
ORiGlMAL INSPECTED
Page 84 CJBP6 06/04/75 36:54.05
00422 00423 00424 00425 00426 00427 00428 0Q429 ' 0.04.30 00431 00432 00433 00434 00435 00436 00437 00438 00439 00440 00441 00442 00443 00444 00445 00446. 00447 00443 00449 00450 00451 00452 00453 00454 00455
00456 00457 0045S
5641 5643 5645 5647 5649 5648 5640 564F 5651 5653 5655 5657 5659 5658 5650 565E 5660
DIGIT ENTRY ROUTINES. KEYS SERVICED IN .THIS PACKAGE INCLUDE DIGIT KEYS (0-9), -DECIMAL POINT» CHANGE SIGN· AND ENTE" EXPONENT
0088 . EXP EQU W
0089 EXPl EQU W+1
0014 OTEMP EQU TPl
008A EXP2 EQU W+2
7982 8WM2 EQU S7982
♦ CHANGE SIGN ROUTINE
• PART OF ENTER EXPONENT IS INCLUOED
JOHN KEITH MAY 8,1974
REV D
« CHS
Ol
03
00460 00461 00462 00461 •00464 00465 00466 00467 00468 00469 00470 00471 00472 00473 0047« 00475 00476
5663 5665 5667 566A 566C 566F 5671 5673 5675 5676 5677 5678 5679 567A 5679 5670 567F 5681 5683 5685
07 2E D6 OF CS 26
96 88
97 20 4E CS 07- OF 86
06 DO
07 40
.70.-9088 D6 88 DB RD 75B8 28
7F OOOF 20 2B 06 97 17 49 49 49 IB
STA LDA BIT BNE LDA A EOR A STA A BRA EOR STA B LDA A LDA B SUB B STA R TST A BPL NEG
D9
9R 97 06 OF C5 26 DB 20· OC
LDA B ADO B JSR BVC CLR BRA LDA B STA A T8A ROL A ROL A ROL A ABA ABA ADD A STA A LDA S BIT B BNE BRA Tl SAVE RTS FLAG DIGFLG CHECK IF EEX FLAG IS SET «S01000000 TEST EEX FLAG» SET ?
Dl YES» CHANGE SIRM OF EXPONENT MODIFIER XR+1 NO» CHANGE MANTISSA SIGN HSBO CHANGE SIGN XR+1 STORE UPDATED SIGN WORO OEXITl DO NOT MODIFY STACK FLAG #»00010000 TOGGLE NEGATIVE 3IT (EXPONENT INO OIGFLG SAVE UPDATED VALUE «$90 LOAD CHANGE SIGN FLAG XR LOAD CURRENT VALUE OF EXPONENT EXP SUBTRACT EXPONENT MOOlFIER XR RESTORE EXP
IS THIS CHS OR ENTER EXP DIGIT D9 ENTER DIGIT EXP _ COMPLEMENT EXPONENT MOOIFIEP (CHS) _
Exp 'preset- b-reg~ """ ' """'" "" "
XR AOD MODIFIER TO EXPONENT OVUNF+2 TEST FOR OVER/UNDERFLOW DEXIT NONE. RETURN DIGFLG OVER/UNDERFLOW OCCURRED, SET NEW ENTR DEXIT RETURN
EXPl · LOAD LAST OIRIT USED IN EXP MODIFIER EXPl STORE NEW DIGIT USED MULTIPLY OLD DIGIT RY 10 (BINARY) PERFORM A »8 BY SHIFTING THREE PLACES
COMPLETE »10 BY PERFORMING TWO ADDITIONS
EXPl NOW ADO NEW DIGIT TO EXP "ODIFIER EXP SAVE NRW EXP MOOIFIER DIGFLG CHECK TO SEE WHAT SIGN FXP MOD SHOULD *»*00010000 IS NEGATIVE BIT SET DS YES» CHANGE SIGN D7 NO
709808/VO25
Page 85 CJHPG 06/04/75 36:54.05
00478 00479 00480 00481 00432 00483 00484 00485 00486 00487 00488 00489
00491 00492 00493 00494 00495 0 0 496 00497 00498 0Q499
DECIMAL POINT ENTRY ROUTINE
JOHN KEITH MAY 85 1974 REV .F
5687 07 2E DECPMT STA B
5689 06 OF LDA 568B 26 OB BNE 5680 BO 55EF DIl JSR
5690 BD 74OA JSR
5693 4F CLR A
5694 97 8A STA A 5696 97 88 STA A 5698 CA 80 D15 ORA B 569A 07 OF STA B 569C 7F 0000 DEXIT CLR 569F 06 2E OEXITl LDA B 56Al 26 Ol BNE 56A3 39 RTS 56A4 31 FIXl INS 56A5 31 INS 55A6 7E 7982 JMP
Tl SAVE RTS FLAG
DlGFLG IS THIS A NEW DIGIT ENTRY
D15 NO, SET FLAG
STKUP DO A STACK UP IF ENABLED
XRO CLEAR X-REG FOR ME-V ENTPY
EXP2 CLEAR EX° FOR 0.0^0.... CASE EXP CLEAR EXP FO° FPMT ROUTINE «MOOOQOOQ SET OECIMAL POINT FLAG DIGFLG SAVE NEW FLAG VALUE STKFLG DISABLE AUTO STACK LIFT Tl DO RTS ? FIXl . BRANCH IF NOT ELSE OO RETURN INCREMENT STACK POINTER TO DELETE LAST RETURN VECTOR BWM2 RET. TO SUPERVISOR
709808/1025
ORIGINAL IMSPSGTED
Page 86 CJ8PG 06/04/75 36:54.05
00501 00502 00503 00504 00505 00506 00507 00508 00509 00510 005.11 00512 00513 0051Ί 00515 00516 00517 0051fi 00519 00520 00521 00522 00523 0052Λ. 00525 00526 00527 00528 00529 .00530 00531 00532 00533 00534 00535
ENTER EXPONENT ROUTINE
INCLUDES ROUTINE TO ENTER OK3ITS IM MANTISSA
56A9 56A3 56AO"C5 56AF 56Bl CA 56B3 563 5 5697 56B9 C4 568B 5630 RD 56C0 8D 56C3 4C 56C4 56C6 C4 56Ca Cl 56CA 56CC 56CD 56CF 5600
5601 4« 56D2 5603 5605 7F 560« OE 5ODA AA 560C Δ7 56DE 7C
JOHN KEITH APRIL 2» 1974
REV C
2E
OF
40
EB
40
OF
88
89
OF
OF
55EF
74OA
OF OF OA DO
04
EEX
022
023
15
0014
14
92
92
OOOF
89 02 Tr
STA LDA B 8IT B BNE ORA R STA R STA A STA A AND B BNE JSR JSR INC A LOA B AND CMP B BCC LSR B 8CS ASL A ASL A ASL A ASL A STA p CLR LDX ORA A STA A INC "BRA
Tl ' SAVE RTS FLAG DIGFLG PREPARE TO SFT EEX FLAG 3*01000000 IS EEX FLAG ALREADY SET DEXIT YES» EXIT FROM ROUTINE ««S01000000 SET EEX FLAG DIGFLG SAVE NEW FLAG VALUE EXP CLEAR EXP MOOIFIE" LOCATION (A WiS CL EXPl CLEAR LAST EXP DIGIT TEMP e*ilOOOllll SAVE COUNTER POPTION OF 0IGFL3 DEXIT THIS IS MOT A NEW ENTRY. »ETURN STKUP NEW ENTRY. OO A STACK UP XRO CLEAR X-REG FOR NEW ENTRY
SET A TO 1 FOR NEW MANTISSA OIGIT DIGFLG LOAD MANTISSA COUNTER #«00001111 SAVE COUNTER «10 IS COUNTER=IO ? OEXIT YES» IGNORE ENTRY
DIVIDE CTR BY 2· SAVE REMAINDER IN CA DP5 CTR WAS ODD. SKIP OIGIT SHIFT
POSITION NEW OIGIT
OTEMP+l SAVE COUNTER
OTE"D CLEAR FIPST BYTE OF CTR
DTEMP LOAD CTR INTO INDEX
XR+2.X ADO NEW DIGIT TO MANTISSA
XP+2»X STORE RESULT
DIGFLG INC COUNTER
OEXIT - RETURN TO SUPERVISOR
709808/1025
:CTED
Page 87 CJBPG 06/04/75 36:54.05
00538 00539 00540 00541 00542 00543 00544 00545 00546 00547 0 0548 00549 00550 00551 00552 00553 00554 00555 00556 00557 00558 00559 00560 00561 00562 00563 00564 00565 00566 00567 00568 00569 00570 00571 00572 00573 00574 00575 00576 00577 00578 00579 0058Π 00581 00582 00583 00584 00585 00586 00587 0058ft 00589 00590 00591 00592
DIGIT ACCEPTANCE ROUTINE
JOHN KEITH APRIL 2, 1974 S REV D
56E3 4C 56E4 4C 56E5 4C 56E6 4C 56E7 4C 56E8 4C 56E9 4C 56EA 4C 56EB 4C 56EC 56EE 56FO 56F2 SO 56F5 BD 56F8 56FA 56FC 4D 56FD 56FF 5701 Cl 5703 5705 5706 5708 570A C5 570C 570E 7E 5711 C4 5713
5715 5C
5716 OB 5718 571A RD 571D 571F "56 5721 5723 D6 572S 5727 7Δ 572A D6 572C Cl 572E 5730 7E 5733 5734 5736 7C 5739 573B 7E 573E C6 5740
2E
OF
OF
55EF
740A
88
8A
3F C3 20 05
0IGIT9 DIGITS 0IGIT7 DIGIT6 0IGIT5 DIGIT4 0IGIT3 0I6IT2 DIGITl DIGITO
035
09
BA
40 D36
03
5657
80
OE
90 8B
7588 11
ag
Al
92 90
008A BA 90 03
566C 047 A3
008A 90
56C4
20 OF
INC A INC A INC A INC A INC A INC A INC A INC A INC A STA B LDA B BNE JSR JSR STA B STA B TST A BEQ BRA CMP B 8NE TST A BEQ BRA BIT B BEQ. JMP AND BNE INC ADD B STA A JSR 8VS LOA A BRA LDA B BNE DEC LDA CMP BCC JMP TST A 8EO ■ INC STA B
JMP
LDA B STA q BUILD APPROPRIATE DIGIT IN A-REGISTER
Tl SAVE RTS FLAG
DIGFLG CHECK CURRENT STATUS
D35 IT IS NOT A NEW ENTRY
STKUP DO A STACK UP IF ENABLED
XRO CLEAR X-REG FOR NF.W ENTRY
EXP CLEAR EXP FOR FRMT ROUTINE
EXP2 CLEAR EXP2 FOR FPMT
WAS DIGIT A ZEPO
D28 YES: GO SET "LEAOING ZERO" 9IT
D22 NO, ENTER OIGIT IN MANTISSA
#520 - ONLY "LEADING ZER.O" BIT SET
D36 BRANCH IF NOT THE CASE
ANOTHER LEADING ZERO
027 . RETURN IF YES
022 ENTER FIRST NON-ZERO DIGIT
«S40 IS EEX FLAG SET
039 NO. CHECK OTHER FLAG
D3 YES? ENTER NEW OIGIT IN EXPONENT
«Ϊ10000000
IS DECIMAL POINT FLAG SET
043 rES
NO. SET R TO 1 FOR VALUE TO AOO TO EX
XR INC EXPONENT
W+3 SAVE DIGIT
OVUNF+2 TEST FOR OVER/UNDERFLOW
D45 OVERFLOW EXIT
W+3 NO OVERFLOW. RELOAD OIGIT
D?2 ENTER OIGIT IMTO MANTISSA
XR+2 IS MANTISSA=O
D?2 NO. ENTER DIGIT INTO MANTISSA
EXP2 YES» DECREMENT EXPONENT TEMPORARY
EXP2 CHECK IF UNDERFLOW OCCUPIED
#^235 UNDERFLOW ?
D47 NO. CONTINUE
08 SET NEV DIGIT ENTRY AND EXIT
WAS DIGIT ENTERED A ZERO
027 YES» IGNORE
EXP2 RESTORE EXP? FOR FORMATTED
XP VALUE OF EXP INTO X-^EG
D22 AND ENTER DIGIT INTO MNATISSA
«■520 GET "LEADING ZERO" FLAG
DIGFLG SAVE IT IN O.E. FLAG
709808/1025
ORIGINAL
- Ill -
Page 88 CJBPG 06/σ4/75 36:54.05
00593 5742 20 9D OC * BRA 027 RETURN TO SUPV. SETUP SAVE X» LOAD INDEX
00595 5744 0007 75FC « RM8 7 FPA ADD
00598 13 * M28 GO TO COMMON EXIT
00599 05 MATH FUNCTION ACCESS +-*/ SETUP SAVE X.» LOAD INDEX
00600 75F6 •a FPS SUBTRACT
00601 OC Ml M28 GO TO COMMON1 EXIT
00602 55E9 TXL TRANSFER X TO LST X
00603 5748 80 0098 JOHN KEITH APRIL 3» 1974 REV A «YR SET INDEX REG TO Y
00604 574D BO MlO RETURN
00605 5750 20 F7 8SR SETUP ■ SAVE X» LOAD INDEX
00606 5752 8D 7735 JSR FPM MULTIPLY
00607 5754 BD 550A SETUP BRA PSD DROP STACK
00608 5757 20 EF 8SR SETUP SAVE X» LOAD INDEX
00609 5759 3D 7793 JSR FPD DIVIDE
00610 575C CE F6 M20 BRA M28 GO TO COMMON EXIT
00611 575F 39 55E9 JSR TXL TRANSFER X TO LST X
00612 5760 80 68A9 M28 LDX TAN DO TAN X
00613 5762 80 55E9 M30 RTS TXL TRANSFER X TO LST X
00614 5765 7E 69C3 BSR ATN DO ATAN X
00615 5768 80 55E9 JSR TXL SAVE LAST X
00616 576A 8D 6E65 W40 JMP SORT DO SORT X
00617 5760 20 55E9 BSR TXL SAVE LAST X
00618 576F RD 6AC9 M50- JSR · EXPN DO EXPN X
00619 5772 7E 55E9 8RA TXL SAVE LAST X
00620 5775 3D 6A58 MtO JSR NTLN OO LN X
00621 5778 7E 55E9 JMP TXL SAVE X IN LAST X
00622 577B PD 73E6 M70 JSR RECIP DO 1/X
00623 577E 7E 55E9 JMP . TXL • SAVE X IN LAST X
00624 5781 80 6B94 M30 JSR SIN DO SIN X
00625 5784 7E 55E9 JMP TXL SAVE X IN LAST X
00626 5787 BD 68F2 MlOO JSR fiSIN DO ASIN X
00627 578A 7E 55E9 JMP TXL SAVE X LAST X
00628 5780 SD 6894 MHO JSR COS OO COS X
00629 5 790 7E 55E9 JMP TXL SAVE X IN LAST X
00630 5793 RD 68F7 M120 JSR ACOS DO ACOS X
00631 5796 7E 55E9 JMP TXL X TO LAST X
00632 5799 8D 6F52 M130 JSR IOUPX DO 10-»öX
00633 579C 7E 55E9 JMP TXL X TO LAST X
00634 579F BD f.FE9 M 1 4 0 JSR YUPX DO Y»*X
00635 57*2 7E 5SE9 JMP TXL X TO LAST X
00636 5 7A5 PD 6FA7 M150 JSR LOGlO DO LOG X
00637 57A8 7E JMP
0063=5 57AB 80 M160 JSR
00639 57ΔΕ 7E JWP
006^0 5731 3D m'i70 JSR
00641 57R4 7E JMP
00642 57B7 RD JSR
006*3 57BA 7E JMP
JSR
JMP
709808/1025
Page 89 CJ8PG 06/04/75 36:54.05
00645 5780 * SUBROUTINE TO LOAD MESSAGES INTO BUFFER 18 MSGPTR 18 -(SGLP EQU KEITH APRIL 23« 1974 REV A ΤΡ2 LOAO FIOST CHARACTER
00646 578F OO L0MSG2 16 EOU ΤΡ3 INCREMENT MESSAGE PTR
00647 57C0 t 7F LDA X STORE MESSAGE PTR
00648 57C2 K JOHN INX LOAD INDEX WITH BUFFER. PTR
00649 57C4 02 STX θ MSGPTR ZERO MS8
00650 57C6 0016 BFPTR 20 LDX BFPTR LIST ROUTINE CALL?
00651 57C7 00 AND *S7F NO» E°ROR.MESSAGE
00652 57C9 E6 OO NTLST TST AOD OFFSET SACK TO GET ASCII
00653 57C9 08 8NE β NTLST STORE CHARACTER IN HUFFER
00654 57CO OF 16 AOD A #520 INCR SUFFER PTR ·
00655 57CE OE 18 STA X SAVE IT
00656 5700 C4 OO INX B RELOAD MESSAGE PTR
00657 5702 40 E9 STX OR BFPTR LOAD ANOTHER CHARACTER
00658 57D4 26 LDX MSGPTR DONE LOADING MESSAGE?
00659 5706 CB LOA X YES, RETURN
00660 E7 BPL MSGLP
00661 08 RTS 3
00662 OF
00663 OE
00664 E6
00665 2A
00666 39
709808/1025
ORIGINAL
.Page 90 CJBPG 06/04/75 36:54.05
00668 5707 > ENTER CMP PI -3.14159265360 DIGFLG DOING DIGIT ENTRY ?
00669 57D<? 8EQ ENTPI2 BRANCH IF NOT
00670 5703 STA DIGFLG ELSE TERMINATE IT
00671 5700 » JOHN COM KEITH APRIL 3» 1974 PEV A SET MSS
00672 57DE STA STKFLG ENABLE LIFT
00673 57E0 91 OF ENTPIl JSR A STKUP OO STACK UP IF ENA3LE0
00674 57E3 27 05 LDX HPl SET INDEX REGISTER TO PI
00675 57E6 97 OF JMP A TXXR TRANSFER PI
00676 57E9 43 FOB A SOOOO FORM PI IN ROM
00677 57EB 97 OO FOB A ■S3141
00678 57E0 FOB 'S5926
00679 57EF FOB S5360
00680
00ft«l
006*2 RO 55EF ENTPI2
006R3 CE 57E9
00684 7E 7433
0000 PI
3141
5926
5360
70 9 8 0 8/1025
ORIGINAL INSPECTED
- 114 Page 91 CJRPG 06/04/75 36.:54.05
»ROLL UP ROUTINE
00686 ' ■
00687
00688 *
00689 57Fl BfI 55B2 ROLLUP JSR
00690 57F4 BD- 5582 JSR
00691 57F7 7E 55B2 JMP
00692 *
00693 «LINE FEED ROUTINE
00694 »
-00695 57FA BO 5075 LF JSR BLANK
POLLD ROLLO ROLLO OO 3 ROLL DOWNS ANO RETURN
BLANK THE PRINT RUFFER
00696 57FD 7E 6034
JMP PRTDRV+7 PRINT BLANKS 709808/1025
ORIGINAL IKSPSQTED
- 115 Page 92 CJRPG 06/04/75 36:54.05
00698 7C2E 57D7 ORG S7C2E
00699 7C2E FOB F.NTPI1
00700 7CSA 556F 'ORG S7C5A
00701 7C5A FOB INTFR5
00703 7C26 5598 ORG S7C26
00703 7C26 FOB CLXRl
00704 7C20 55A6 ORG S7C20
00705 7C20 FD8 ENTERl
00706 7C2A 55AC ORG ' S7C2A
00707 7C2A FOB XEYl
00708 7C2C 5582 ORG S7C2C
00709 7C2C FDB POLLDl
00710 7C30 55C9 ORG S7C30
00711 7C30 FOB RLSTXl
00712 7C28 5ftll ORG S7C28
00713 7C28 FOB CLRl
00714 7064 5624 ORG ?7D64
00715 7D64 FOB PRTl
00716 7C72 562C ORG S7C72
00717 7C72 FOB PTSTKl
00718 7C22 S6A9 ORG S7C22
00719 7C22 5641 FOB EEX
0072η 7C24 FDB CHS
00721 7C02 56EC ORG S7C02
00722 7C02 56E8 FOB DIGITO
00723 7C04 56EA FDB DIGITl
00724 7C06 56E9 FD8 0IGIT2
0072S 7C0fi 56E8 FOB DIGIT3
00726 7C0A 56E7 FDB DIGIT4
00727 7C0C 56E6 FDB DIGITS
00728 7C0E 56E5 FDB DIGIT6
00729 7C10 56E4 FOB DIGIT7
00730 7C12 56E3 FDB DIGIT8
00731 7C14 5687 FOB 0IGIT9
00732 7C16 FOB OECPNT
00733 7C18 574B ORG · S7C18
00734 7ClB 5752 FOB Ml
00735 7ClA 5760 FOB MlO
00736 7ClC 5768 FDB M20 .
00737 7ClE .. . ... FDB M30
00738 7C3? 5793 ORG S7C32 ■ ""
00739 7C32 5787 FOB ■M110tM130»M40»M120tM140,M50
00740 7C3E 5787 FOB · MflO
00741 7C40 FOB M170
00742 -7C4A 577B ORG S7C4A
00743 7C4A 5780 FOB M60
00744 7C4C FOB MlOO
00745 7C42 5781 ORG S7C42
00746 7C42 57AB FOB M70
00747 7C44 5781 FOB M150
00748 7C4A FOB M160
00749 7C49 57Fl ORG S7C48
00750 7C48 FOB ROLLUP
00751 7C7A 57FA ORG 57C7A
00752 7C7A FDB LF ·
709808/1025
ORIGINAL INSPECTED
Page 93 CJRPG 06/04/75 36:54.05
END
SYMBOL TABLE
ADATA 0000 ACTL 0001 BDATA 0002 BCTL 0003 INPUT 0004 ΙΟΙΝ 0005
ERROR 000ft T6L 0007 UFLG 0008 RSFLG 0009 EOM OOOA EOPM OOOB
STKFLG OOOD RND OOOE DIGFLG OOOF. W2 0010 Wl 0011 - SFLG 0012
OCNTR 0013 TPl 0014 TPlS · 0015 TP2 0016 TP2S 0017 ΤΡ3 ooia
TP3S 0019 TP4 001A TP4S 0018 TP5 OOIC TP5S 001D Τ=>6 οοιε
TP6S OOIF TP7 0020 TP7S 0021 T13 0022 T12 0023 TIl 0024
TlO 0025 T9 0026 T8 0027 T7 0028 T6 0029 Τ5 002A
T4 0025 T3 002C T2 002D. Tl 002E ISTK 0 02F ISTACK 0051
TA · 0052 SPGM 0054 EXTRA 0056 8UFF oosa REAL 0068 IMAG 0070
ATI 007R ΑΤ2 0080 W 0088 XR 0090 YR 0098 ZR OOAO
TR OOAfl LSTX 0080 SKWRT OORfi 3KKC OOBA S0L7 00C6 UPP 00C8
UIP OOCA ALPHA OOCC 101 OOCO 102 OODO IT7 0003 FLAG 00D5
TPOS 0ΛΟ6 'FILE 00O7 AR ' 00D8 SR OOEO CP 00E8 DR OOFO
ER 00F8 SOBB 008A MT 7E00 TERMN7 O O 3D IMED 0040 PARCD OOCO
PAREX ooeo NTBL 0000 DOTS 5EC0 PRTDPV 602D FOMT 5C4* BLANK 5075
LDMSQ 57B0 ROLLD 55B2 ROLLU 57Fl PSD 550A TXL 55E9 STKUP 55EF
MAO 749R CMP 74AA NOR 74D6 TXW 7424 TXXR 7433 EXXR 7452
APSR 751H OVUNF 75B6 OVERF 7500 XRO 74OA XPNINE 75C3 UMDRF 75Fi
I«*ULT 7M9 QOG 7669 FPA 75FC FPS 75F6 FPM 7735 FPQ 7793
FPAEX 7630 FPMEX 7780 LSHIFT 7521 ZEROX 7489 XZEROQ 7^16 XZER02 7417
RECIP 73E6 TXRX 73F3 CONST 6800 FPDBRC .6893 TAN 6ΒΔ9 ATN 69C3
OSZERO 6Δ46 NTLN 6A58 EXPN 6AC9 SIN 6R94 COS 6«9A ASIN 63F2
ACOS 63F7 PHl 6C5D PH2 frCBD PH3 6034 PH4 6000 LSFT8 6E47
SORT 6E65 . ΜΑΟβ 6F2C CMPP 53E4 IOUPX 6F52 LOGlO 6FA7 YUPX 6FE9
RTOP 732«ί PTOR 7336 REGPTP 0014 INTFRl 5550 INTFR2 555C TITFR3 5564
INTFR4 556C INTFR5 556F INTFR* 5579 INTFR7 5590 IMTFR<5 559A CLXPl 5598
LDEX. - 55Δ0 ENTERl 55A6 XEYl 55AC ROLLDl 55=?2 ROLLOS 55^S RLSTXl 55C9
RLSTX2 5502 PSDl 55DA PSD5 5500 STEMP 0020 STKUPl 5C-£F STKUP2 55FV
STKUP3 55FA ST*U»9 5610 SAVE 0014 CLRl 5611 CLR3 561Δ Ρ·5ΤΙ 5fi?4
TE1^P 002E PTSTKl 562C PTSTK3 5632 EXP- ooeg E* Pl DTE^'P 0 014
EXP?. 003A 8 W" 2 7982 CHS 5641 Dl- 5651 03 5^-57 Π=5 5660
D7 5663 D8 566C 09 5671 OECPNT 5687 Oil 56-ΪΟ D,15 5698
DEXIT 569C DEXITl 569F FIXl 56A4 EEX 56A9 022 56C4 023 56CC
025 5fiD3 D27 55El OIGITR 56E3 DIGITS 56E4 0IGIT7 56E5 .DIGIT6 56E6
DIGITS 56E7 DIGIT4 56E8 DIGIT3 56E9 DIGIT2 56EA DIGITl 5^Εβ DIGIT*) 56EC
035 5701 D36 570A 039 5711 D43 5723 D*5 5730 047 5733
02a 573E Ml 5748 MlO 5752 SETUP 5759 M20 5760 M28 5 765
M30 5768 M40 576F M50 5775 M60 5779 M70 57*1 ^«80 5717
MlOO 57ßO . MIlO 5793 M120 5799 M130 579F - M140 57Δ5 M150 57AB
M160 57Bl M170 57B7 8FPTR 0016 MSGPTR 0013 LDMSG2 57Β0 MSGLP 573F
NTLST 57CB ENTPIl 57D7 ENTPI2 57E0 PI 57E9 ROLLUP 57Fl LF 57FA
7 0-9 808/1025
ORiGINAL IMSPECTED
~ 1,17
Page 94 CJ8PG 06/04/75 36:54.05
00215 5800 2E TA8LE OPT LISTtMEM NOP ■ . ZERO CLEAR X
00218 5800 2F ORG S5S00 * ONE
00219 5801 30 FCB S2E TWO
00220 5802 90 FCB $2F THREE CLEAR
00221 5303 91 FCB $30 FOUR
00222 5804 92 FCB S90 FIVE ■
00223 5805 93 FCB S91 SIX
00224 5806 94 FCB S92 SEVEN
00225 5807 95 FC8 $93 EIGHT X EXCHANGE Y
00226 5808 96 FCB $94 NINE
00227 5809 97 FCB S95 DECIMAL POINT
00228 580A 98 FCB S96 PLUS SIGN ROLL DOWN
00229 5808 99 FCB $97 MINUS SIGN
00230 580C 8E FCB 598 ASTERISK (MULTIPLY)
00231 580O 8B FCB $99 DIVIDE SIGN
00232 58 OE •8D FCB $8E ENTER
00233 580F FCB SSB - PI
00234 5810 BS FC8 S80 ' LAST X
00235 5811 A5 FCB S8A
00236 5812 2E FCB SRB
00237 5813 34 FCB SA5
00238 5814 25 FCB S2E ENTER EXPONENT SIN
00239 5815 32 FCB $34
00240 5816 3E FCB S25
00241 5817 A5 FCB $32 CHANGE SIGN
00242 5818 25 FCB S3E -.— ·
00243 5319 38 FCB SA5
00244 581A 88 FCS $25
00245 581B 01 FCB $38
00246 531C OD FCB *8B
00247 5310 A3 FCB si- -
00248 581E 2C FCB «D
00249 58 IF 38 FCB $A3
00250 5820 A3 FC8 S2C
00251 5821 2C FCB $38
00252 5322 25 FCB 5A3
00253 5323 21 FCB . S2C
00254 5824 32 FC8 525
00255 5825 88 FC8 $21
00256 5826 01 FCB S 32
00257 5327 39 - FCB SB8
00258 5328 B2 FCB $1
00259 5329 2F FCB S39
0026α 532A" 2C FCB SR2
00261 5828 2C FCB " 52F
00262 582C 3F FCB S2C
00263 5820 90 FCB S2C
00264 582E AC FCB S3F
00265 532F 33 FCB 5BO
00266 5330 34 FCS SAC
00267 5831 38 FCB $33
00268 5332 B3 FCB S34
00269 5333 29 FCB $38
00270 5334 FCB $B3
00271 FCB $29
098 08/1025
ORIGINAL INSPECTED
Page 95 CJBPG 06/04/75 36:54.05
00272 5835 2E
00273 5836 A3
00274 5837 2F
00275 5838 33
00276 5839 84
00277 583A 21
00278 5839 2E
σ0279 583C Al
00280 5830 33
00281 583E 29
00282 583F 2E
00283 5840 Al
00284 5841 23
00285 5842 2F
00286 5843 33
00237 5844 Al
002R8 5345 34
00239 5846 21
00290 5847 2E
00?91 5848 AC
00292 5849 2E
00293 534A AC
00294 584PJ 2F
00295 584C 27
00296 5840 «2
00297 584E 3E
00299 584F 38
00299 5850 91
00300 5351 10
00301 5852 3E
003Q2 5853 33
00303 5854 89
0030^ 5355 3E
00305. 5856
00306 5857 82
0.0.30 7 5358 2F-
00306 5359 2C
00309 5354 2C
00310 585B 3E
C0311 5856 P3
00312 5850 31
00313 535E 32
00314 585F 34
00315 5860 91
00316 5861 OF
00317 5862
00313 5363 B3
00319 5864 35
00320 5365 20
00321 5366 OB
00322 5367 83
00323 5368 35
00324 5869 20
00325 586A OO
00326 586R B2
FCB S2E COS
FC8 SA3
FCB S2F
FC8 S33 TAN
FCB SR4
FCB $21
FCB S2E ASIN
FC8 SAl
FCB S33
FCB S29-
FCB S2E ACOS
FCB SAl
FCB $23
FCB S2F
FCB S33 ATAN
FC8 5Al
FCB S34
FCB 521
FCB $2E LN
FC8 SAC
FCS S2E LOG
FCB SAC
FC8 S2F
FC8 S27 EaX
rCB S82
FCB S3E
FC8 S38 1OaX
FC8 $91
FCB SlO
FC8. S3E
FC8 S38 YAX
FCB SB9
FCB S3E
FCB $38 ROLL UP
FC8 SB2
FCB S2F
FCB S2C
FC8 $2C
FCB S3E SQUARE ROOT
FCB S83
FCB S31
FCB $32
FCB S34 . 1/X--
FCB $91
FCd SF
FC3 • S38 SUM+
FCB S83
FC8 S35
FCB S20
FCB $8 SUM-
FCB 5B3
FC3 S35
FCB S 20
FCfI SD RECT TO POL
FCO SB?
7 0 9 8 Ö 8 / 1 0 2 S
Page 96 CJBPG 06/04/75 36:54.05
00327 586C 3C
00328 5860 30
00329 586E 80
00330 586F 3C
00331 587 0 32
00332 5871 Al
00333 5872' 23
00334 5873 23
00335 5874 08
00336 5875 Al
00337 5876 ?3
00338 5877 23
00339 5878 OO
00340 5879 A9
00341 5874 2E
00342 5878 34
00343 587C A4
00344 5870 25
00345 537E 27
00346 .58 7F 33
00347 5880 BC
00348 5881 24
00349 5882 OE
00350 5883 20
00351 5884 33
00352 5885 A4
00353 588Λ OE-
00354 5887 20
00355 5888 33
00356 5889 3C
00357 588A A9
00358 5889 26
00359 588C 00
00360 5880 OB
00361 588E A9
00362 588F 26
00363 5890 OO
00364 5891 OO
00365 5892 A9
00366 5893 26
00367 5894 OO
0036R 5895 10
00369 5896 A<*
00370 5897 26
00371 589« OO
00372 5899 .38
00373 589A 10
00374 589B 39
00375 589C A9
Ö0376 5890 26
00377 589E OO
00378 589F 38
00379 58A0 IC
00380 58Al 39
00381 58A2 A9
FCB • $3C POLAR TO RECT FROM O.MS
FCB $30
FCB SRO
FCB S3C ACC+
FCB S32
FCB SAl IF +
FCB $23
FCB $23 ACC-
FCB SB
FCB SAl IF -
FCB S?3
FC8 $23 INTEGER ..
FC8 SO
FCB SA9 IF 0
FCB S2E OEG
FCB $34
FCB $A4
FCB S25 IF X=V
FCB $27 TO O.MS
FCB $33
FCB SBC
FCB $24
FC3. SE
FCB $20 IF X<Y
FCB $33
FCB SA4
FCB SE
FCB $20
FC8 $.33
FCB $3C IF X>=Y
FCB SA9
FCB S26
FC8 SO
FCB SB
FCB SA9
FCB $26
FCB $0
FCB $0
FCB $A9
FCB $26
FCB SO
FCB SlO
FCB SA9
FCB . $26
FCB SO
FCB S38
FC8 SlO
FCB $39
FCB SA9
FCB S26
FCR SO
FCB $38
FCB SlC
FCB $39
FCB $A9
7 0 9 8 0 8/1025
ORIGINAL INSPECTED
Page 97 CJBPG 06/04/75 36:54.05
0 0382 58A3 26
003*3 58A4 ob
00384 58A5 38
003*55 58A6 18
00386 58A7 39
00387 58A8 AO
003H8 58A9 2E
00389 5SAA 06
00390 58AB 33
00391 58AC 24
00392 58AD 83
00393 53AE 32
00394 58AF ?5
00395 58Θ0 27
00396 5831 33
003^7 5882 BO
00398 58B3 3?
00399 5834 34
00400 5885 33
00401 5886 34
00402 5887 23
00403 5888 B2
00404 5889 2F
00405 588A 35
004Π6 5888 2E
00407 588C 24
004OR 588D 82
00409 588E OO
004ln 538F 21
O0411 58C0 23
00412 58Cl 23
00413 58C2 08
00414 58C3 A3
00415 58C4 ?C
00416 58C5 32
00417 53C6 21
00418 58C7 3C
00419 58C8 2A
00420 58C9 83
00421 58CA 30
00422 58C8 21
00423 58CC 23
00424 58C0 25
00425 58CE A7
00426 5SCF ■ 32"
00427 5800 21
00428 5301 24
00429 58Π2 33
00430 5803 82
00431 5SD4 21
00432 5805 24
00433 5806 33
00434 5807 ca
00435 580R 33
00436 5809 26
FCB $26
FCB so
FC8 $38
FCB SlB
FCB $39
FCB $A0
FCB S2E
FCB $6
FCB $33
FCB $24
FCB $fl3
FCB $32
FCB . $25
FCB $27
FC8 $33
FCB SBO
FCB $32
FCB $34
FCB $33
FC8 $34
FC8 $28
FCB SB2
FCB ■ S2F
FCB $35
FCB S2E
FCB $24
FCB SB2
FC8 1KO
FCB $21
FCB $23
FCB $23
FCB $8
FCB $A3
FCB *2C
FCB $32
FC8 S21
FC8 $3C
FCB «2A
FCB SB3
FCB $30
FCB $21
FC8 $23
FCB $25
FCB SA7
FCB '$32
FCB $21
FC8 $24
FCB $33
FCB $82
FC8 $21
FCB $24
FCB S33
FC8 SC8
FCB *33
FCB $26
MEAN ANO STANDARD DEVIATION NO. OF REGISTERS PRINT STACK
ROUNO RCL ACC+
CLEAR ALPHA REGISTERS
SPACE GRADS RADS
SFG
709 8*0.8/102.5
Page 98 CJRPG. 06/04/75 36:54.05
00437 580A 27 . FCB $27
00438 58DB C8 FC8 SC8*
00Δ-39 53DC ?9 - FCB 529 IF SFG
00440 56D0 26 FCB $26
00441 58DE 00 FCB $0
0044? 58DF 33 FCB $33 00443 58E0 26 FC8 S26
.00444 5-3E1 27 FCB $27
00445 58E2 C8 FCB $C8.
00446'58E3 23 FCB $23 CFG
00447 58E4 26 FCB $26
00448 58E5 27 FCB $27
00449 58E6 CR FCB $C8
00450 58E7 29 FCB $29 IF CFG
00451 58E9 26 FCB $26
00452 58E9 00 . FCB $0
00453 58EA 23 . FCB S23
00454 58EB 26 ' FCB $26
00455 58EC 27 · FCB $27
00456 58ED A7 TABLEl FCB SA7 GO TO
00457 58EE 2F FCB $2F
00458 58EF 34 FCS S34-
00459 58F0 2F FC8 $2F
00460 58Fl A7 FC8 SA7 GOSUB
00461 58F2 2F FCB $2F
00462 58F3 33 FC3 $33
00463 58F4 35 FCS $35
00464 58FS ?2 FCB $2?
00465 58F6 Cl _FC8 SCl GOTO
"00466 53F7 «0~ " FCB $80
Q0467 58F8 Cl FCB- $C1 GOSUB
.00468 58F9 Bl FC3 $81
00469 53FA CA FCB $CA
0047(1 58F8 33 ■ FC8 ' S33 ' STORE
00471 58FC 34 FC8 $34 _
00472 58FD 2F '" " FCB $2F
00473 58FE CA FCB $CA
00474 58FF 33 FCH $33 STORE+
00475 5900 34 FC8 S34
00476 5901 2F FCB $2F
00477 5902 OB FCB SP
00478 5903 Ca ' " FCB ' J=CA
00479 5yO4 33 FCB «33 ' STORE-
00480 5905 34 FCB $34 004Λ1 5906 2F FCB ·$2F 00482 5907 OD FCB $0
004S3 5908 CA FCB $CA
00484 5909 33 FC8 S33 STORE*
00485 590Λ 34 FCB $34 004RA 5<)0B 2F FCB $2F
00487 590C OA FCB SA
00488 5900 CA . FCB SCA
00489 590E 33 FCB $33 STORE/
00490 590F 34 · FCB S34
00491 5910 Z? . FCB S2F
7098 08/1025
Page 99 CJ8PG 06/04/75 36:54.05
00492 5911 3B
00493 5912 CA
00494 5913 32
00495 5914 23
00496 5915 2C
00497 5916 CS
00*98 5917 23
00499 5918 21
00500 5919 2C
00501 591A 2C
00502 5918 B6
00503 591C 25
00504 5910 32
00505 591E 29
00506 591F 26
005Λ7 5920 39
00508 5921 AC
00509 5922 24
00510 5923 06
00511 5924 27
00512 5925 2F
00513 5926 82
00514 5927 ?3
00515 5928 24
00516 5929 21
00517 592A 34
00518 59?e 21
00519 592C 82
00520 5920 25
00521 592E 37
00522 592F 29
00523 5930 2E
00524 5931 24
00525 ■5932 80
00526 5933 21
00527 5934 35
00 528 5935 33
0 0529 5936 25
00530 5917 C3
00531 5938 26
00532 5939 2F
00533 591A 32
00534 5938 C3
00535 593C ?E
0053ft 5930 25
00537 593E 38
00538 593F 34
00539 5940 83
00540 5941 34
60541 5942 ?F
00542 5943 30
00543 5944 A5
00544 5945 2E
00545 5946 24
00546 5947 BO
FCB $38 RECALL
FCB $CA
FCB S32
FCB $23
FCB S2C 5 MAINFRA
FCB $C5
FCB . $23
FCB $21
FCB $2C VERIFY.
FCB S2C
FCB *B6'
FCB S25
FCB $32
FCB $29
FCB $26 LOAD (, GO
FCB S39
FCB SAC
FCB $24
FCB $6
FCB $27 RECOPD DA
FCB $2F
FCB SB2
FCB $23
FCB $24
FCB 521
FCB $34 REWIND
FCS $21
FCB $82
FCB S25
FCB $37
FC8 ' ' S29
FCB 52E PAUSE
FCB S24
FCB $80
FCB $21
FCB S35
FCB 533
FCB $25 FOR
FCB $C3
FCB $26
FCB $2F
FCB $32 NEXT
FCB $C3
FCB $2E
FCB $25
FCB $38 STOP
FCB $34
FCB. $B3
FCB S34
FCB $2F END
FCB S30
FCB $A5
Fca S2E PRINT
FCB $24
FCB SRO
709808/1025
%-iS?l;vTZÖ
Page 100 CJRPG 06/04/75 36:54.05
00547 5948 32
00548 5949 29.
00549 594A 2E
00550 5948 34
00551 594C B2
00552 5940 25
00553 594E 34
00554 594F 35
00555 5950 32
00556 5951 ?ε·
00557 5952 A5
00558 5953 2E
00559 5954 24
0056η 5955 4.8-
00561 5956 82
00562 5957 23
00563 5958 30
00564 5959 32
00565 595A 27
00566 595S 20
00567 595C B2
00568 5950 23
00569 595E 33
00570 595F 25
00571 596 0 23
0057? 5961 AD
00573 5962 21
00574 5963 32
00575 5964 23
00576 5965 A9
00577 5966 24
00578 5967 25
00579 5*968 2E
00580 5969 34
00581 596A AC
005R2 5968 ?F
00583 596C 21
00584 5960 24
00585 596E 80
00586 596F A6
00587 5970 29
00588 5971 38
00589 5972 93
00590 5973 23
00591 5974 29
00592 5975 B3
00593 5976 23
00594 5977 29
00595 5978 13
00596 5979 Cl
00597 59 7 A CO
00598 597« AC
00599 S97C 22
00600 5970 2C
00601 S97E -Cl
FC8 $32 RETURN
FCB $29
FCB $2E
FC8 S34
PCS $B2
FCB $25
FCB $34 END ALPHA
FCB 535
FCB S32 "■ -
FCB S2E .
FCB $A5 RECOPO PROGP
FCB S2E
FC8 $24
FCB $48
FCB $B2
FCB S23
FCB $30 RECORD SECUR
FC8 $32 ·
FCB $27
FCB $2D
FCB SB2
FCB $23 MARK
FCB • S33
FCB $25
FCB $23
FCB $AD IDENTIFY
FCB $21
FCB $32
FCB $28
FCB . SA9 .
FCB $24 LOAD
FCB $25
FCB $2E
FC8 . $34
FCB SAC 1 EMPTY SLOT
FC8 S2F FIX
FCB S21 ·
FCB $24
FCB $80 SCI
FCB $A6
FCB . 529
FCB $38 SCI3
FCB" $83
FCB $23
FCB S29
FCB $B3
FCB $23
FCB $29 LABEL
FCB $13
FC8 SCl
FCB *C0 GOSUB LBL
FCB SAC
FCB $22
FCB $2C
FCB *C1
7 0 980*8/1 02 5
ORIGINAL !MSFEGTED
Page 101 CJBPG 06/04/75 36:54.05
00602 00603 00604 00605 00606 00607 0060« 00609 00610 00611 00612 00613 00614 00615 00616 00617 0061« 00619 00620 00621 00622 006P3 00624 00625 00626 00627 0062« 00629 00630 00631 OOf.32 00631 00*34 00635 00636 130637 00631 0 0639 00640 00641 00642 00*43 00644 0 0645 00646 00647 00648 00649 00650 006Sl 00652 006^3 00*54 00A55 00656
597F
5980 Cl
5981 5982 5983
5984 2C
5985 5936
5987 B3
5988
5989 2F 598A 598S. 598C 5980 598E 2F 598F OR 5990 5991
5992 B3
5993
5994 2F
5995 OD
5996 5997
5998 Bl
5999 599A 2F 5998 OA 599C 5990 599E B3 S99F 59Δ0 2F 59Al 59A2 59A3 59Δ4 C?
59AS as 59A6 C2 59A7 RE 59A8 C2 59A9 59AA C2 59AB A2 59AC C2 59AO AC 59AF C2 59AF B6 59R0 C2 59Bl E2 59B2 C2 59B3 E3 5984 C2 59B5 F.4
FCB S81 GOTO LBL
FCB SCl
FCB $80 RECALL INOIRECT
FC8 SB2
FCB SH3
FCB sac
FCB so
FCB S29 STORE. INDIRECT
FCB $83
FCB $34
FCB S2F
FCB $0
FCB $29 · STO+ INDIRECT
FCB $R3
FC8 $34
FCB SHF
FCB SB
FCB SO
FCB $?9 STO- INOIRECT
FCB SB3
FCB S3 4
FCB $2F
FCB- SD
FCB $0
FCB S29 STO» INDIRECT
FCB SB3
FCB S34
FCB S2F
FCB SA
FC8 SO
FC8 S29 ' STO/ INDIRECT
FCB «B3
FCB S34
FCB S2F-
FCB S3B
FCB $0
FCB S29 2 STORES
FCB SC2
FCB S85 2 STO +
FCB SC2
FCB 58E 2 STO-
FCB $C2
FCB S98 2 STO»
FCB SC2
FCB SA2 2 STO/
FCB SC2 ·
FC8 SAC 2 RECALLS
FCB SC2
FCB •SB6 2 RCL IND
FCB SC2
FCB SE2 2 STO IND
FCB SC2
FCB SE3 2 STO+ INO
FCB SC2
FCB SE4
7Q9ÄÖ8./10.2
ORSGiNAL
- 125 -
Page 102 CJBPG 06/04/75 36:54.05-
00657 5986 C2
0065Θ 59B7 E5
00659 59P8 C2
00660 5989 E6
00661 598A C2
00662 5988 E7
00663 598C 00
00664 59B0 81
00665 59βΕ 00
00666 593F 80
00667 59C0 00
00668 59Cl 52
00669 59CH 4E
00570 59C3 54
00671 59C4 68
00672 59C5 04
00673 59C6 41
00674 59C7 42
00675 59C8 20
00676 59 C9 ?0
00677 59CA CC
00678 59CB 49
00679 59CC 4E
0068(1 59C0 45
00631 59CE ?0
00632 59CF 03
00633 5900 48
00684 59Dl 49
00685 59D2 46
00686 5903 54
FT9L
TSNL
FCB $C2 2 STO- INO
FCB' $E5-'
FC8 SC2 2 STO* IND
FCB. $E6
FCB SC2 2 STO/ INO
FCB $E7
FCB SDO 16 GOSUBS
FCB $81
FCB SDO ' 16 GOTOS
FCB $80
FCB SOO PRINT ALPHA
FCR S52
FCB S4E
FCB S54
FCB S68
FCB $04 TAB
FCB $41
FCB- S42
FCB $20
FCB 520'
FCB $CC LINE
FC8 $49 *
FCB $4E
FCB S45
FCB S20
FCB SO3 SHIFT
FCB S48
FCB $49
FCB $46
FCB $54
70 98087102 5
Page 103 CJBPG 06/04/75 36:54.05
00688 59D4 7978 19 * THIS ROUTINE OROVIOES A PROGRAM LISTING THE THE PUN/STOP " STATEMENT IS REACHED A OCTOBER 15»1974 LIST PEV I GIO ENTRY . SET LSTFLG=O
00689 59D6 OOIC 797B * FROM WHERE THE PROGRAM COUNTER IS A KEYLOG IN KEY IS HIT. IT ALSO A STORE GIO FLAG SET INOEX TO USER PSTN PTR
00690 59D9 0010 * SETTING UNTIL AN "ENO THE PROGRAM MODE A SAVE IJPP IN W+4
00691 59DA 0014 14 ♦ OR UNTIL PRINT ALL SWITHCH IS ON. A 5797B LOAO INSTRUCTION
00692 590C 0015 * PROVIDES TP5 SAVE IT IN SVINS
00693 5900 0018 15 » WHEN TP5S
00694 590F 0016 C8 β UHLRICH A TPl AUDIT TRAIL? ·
00695 59El 48BC ac « A TPlS YES, DON'T WORRY ABOUT SEC
00696 5«5E3 4EA4 OO « DAVE A TP3
00697 59E5 5300 IC EQU A TP2 STORE GIO FLAG
00698 59E7 57FA ID EQU «488C
00699 59E9 S2F4 07 BWM EQU S4EA4 LOAD ÄCCB WITH NEW RSFLG
00700 59 E3 80 2A SVINS EQU A $5300 SET LSTFLG .NE. 0
00701 59ED 7E 18 SAVE EQU 157FA SET INOEX TO USER PSTN PTR
00702 59EF 4C 14 GIOFLG EQU P S52F4 SAVE 1JOP IN W+4
00703 59Fl 97 52F4 LSTFLG EQU B LIST LOAO INSTRUCTION
00704 59F4 4F CO MSGPTR EQU BWM SAVE THE INSTRUCTION
00705 59F6 97 15 3FPTR EQU
00706 59F8 OE C8 RINBCO EQU A GIOFLG IS IT AN END IMSTPUCTION?
00707 59FA DF' 8C OGTS EQU A NO. SET RSrLG=SCO
00708 59FC A* OO POMID EQU A LSTFLG YES» SET RSFLG=S40
00709 59FE 97 IC LF BSR A UPP STORE NcW RUN/STOP FL*G
00710 5A00 97 10 STEPi JHP W+4
00711 5A.02 96 81 LSTNTR INC E) X
00712 5A04 2A 02 STA α SVINS SECURED PROGRAM?
00713 5A06 20 40 GIONTR CLR A SAVE
00714 5A08 97 09 KEYLOG STA A TGL
00715 5A0A BD 05 LDX OKAY
0G716 5A0C C6 STX KYLG
00717 5A0O 07 03 LOA GIOFLG
00718 OE STA STEPl
00719 OF STA «SCO
00720 Δ6 LDA LSTFLG
00721 97 BPL UPP
00722 97 BRA W+4
00723 81 STA X
00724 26 JSR SVINS
00725 C6 LIST LDA SAVE
00726 07 STA «SBl
00727 96 LSTOK LDX NTEND
Q !J 728 44 STX *S40
00729 24 LOA RSFLG
00730 STA FLAG
00731 STA
00732 CMP OKAY
00733 BNE
00734 LQA
00735 STA
00736 LDA
00737 MTEmO LSR
05738 KYLG BCC
00739
00740
00741
00742
709808/1025
Page 104 CJHPG 06/04/75 36:54.05
007A3
00744
00745
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756
•00757
0075«?
00759
00760
00761
0076?
00763
00764
00765
00766
00767
00768
00769
00770
00771
00772
773
00774
Ό0775
00776
00777
0077«
00779
7*0.
00781
00782
00783
007Ρ4
00785
00786
00737
0078Η
00789
00790
00791
00792
00793
00794
.00795
00796
00797
5A0F 86 5Α11 97 5Α13 4F 5Α14 97 5Al6 39 5Α17 flO SAlA 7Α 5Α10 DE SAlF 7C 5A22 80 5A25 CE 5A28 86 5A2A BO 5A20 96 5A2F 08 5A30 08 5A31 DF 5A33 70 5A36 27 5A38 40 5A39 2F. 5A38 85 5A30 27 5A3F 7E 5A42 CE 5A45 OF 5A47 16 5A48 5A 5A49 RO 5A4C 7E 5A4F fil 5A51 27 5A53 81 5A55 27 5A57 81 5A59 26 5A53 7F 5A5E CE 5A61 4F 5A62 91 5A64 27 5A66 08 5A67 E6 5A69 ?A 5A6B Ci 5A6D 26 5A6F 4C 5A70 20 5A72 C4 5A74 08 5A75 4C 5A76 91 5A78 27 5A7A 5A 5A7B 27
16 06
09
5075
00C8
C8
00C8
488C
0058
10
4EA4
IC
16
OOCC
26
14
FC '
03
5AFl
59C5
18
5B7E
58F2
B2 ■
08
84
04
Bl
Fl
OOCC
5800
10 26
OO F8 40 03
FO 3F
SPERR
OKAr
TLS
END2 ENOASC
NALPHA NTASC
CMPCTR NOCNT
MRTHNl MOTYET
ID 05
E9
LDA A STA A "CLR A STA A RTS JSR DEC LDX INC JSR LDX LDA A JSR LDA A INX INX STX TST BEQ TST A BLE BIT A BEQ JMP' LDX STX TAB DEC B JSR JMP CMP A BEQ CMP A SEQ CMP A BNE CLR LDX CLR A CMP A BEQ INX LDA. BPL BIT B BNE INC A BRA -AND B INX INC A CMP A BEO OEC B REQ
«22 ERROR
RSFLG
BLANK
UPP
UPP
UPP
BIN8C0
«BUFF
«16
D6TS
SVINS
BFPTR ALPHA NTASC
ENOASC
#SFC
TLS
STOOP
«TSNL
MSGPTR
PRTMSG
END
«5B2
MTASC
«ΪΒ4
NALPHA
EN02
ALPHA
«TABLE
SAVE FOUND·
NOCNT
MRTHNl
CMPCTR «S3F
SAVE EOUAL
NOCNT RSFLG=O
BLANK OUT BUFFER SET INOEX TO USER PSTN PTR CONVERT' PC TO BCD SET INOEX TO BEG. OF SUFFER SET ACCA=NO. OF 0IGITS*4 PUT PC INTO BUFFER LOAD INSTRUCTION INCR BUFFER PTR INCR BUFFER PTR AGAIN STORE BUFFER PTR ALPHA FLAG SET? NO» NOT ALPHA STRING
MSB SET?
YES. END ALPHA UNLESS PRINT TAB, SHIFT» OR LINE? NO» STORE ASCII YES» LOAO TABLE AOORESS
SET TABLE OFFSET IN ACCB " PRINT TAB» SHIFT. Of? LINE.
PRINT COMMAND?· YES» LIST IT■ AL0HA TERMINATOR?
YES. END ALPHA NO» IS IT AN "END"?
NO. TREAT IT AS A PLANK YES. CLEAR ALPHA FLAG SET INOEX TO START OF TABLE CLEAR INSTRUCTION CTR CTP=INSTP.?
YES» FOUND ASCII NO» INCR TAPLE ADOR LOAD NEXT ASCII CHAR MSB SET?
BIT 6 SET?
YES. MORE THAN ONE OF SPECIFIC INSTU INCR INSTR CTR
CLEAR TOP 2 BITS INX TABLE ADDRESS INCR INSTR CTR CTR=INSTR.?
YES. ADDRESS FOUND OECW MULTIPLE INSTR CTR IF =0» NOT THIS MULTIPLY USED INST.R
709808/1025
Page 105 CJBPG 06/04/75 36:54.05
00798 5A7D "20 F.6 EQUAL BRA B NOTYET
00799 5A7F E6 OO LDA X
ΟΟβηΟ 5AAl 2A 09 BPL B FOUND
00801 5Δ83 C4 7F ANO B **$7F
00802 5Δ35 07 10 STA SAVE
00803 5ΑΛ7 CE 58EO LOX «TABLEl
00804 5AAA 20 D5 FOUND BRA A CMPCTR-I
00805 5A8C 4F- CLR
00806 5AA0 80 57BO JSR A LDMSG
00807 5A90 86 64 LDA A #$64
00808 5A92 97 17 STA BFPTR+1
00609 5A94 DE 16 LDX A BFPTR
00810 5A96 96 IC LOA A SVINS
00811 5A98 81 3F CMP «$3F
00812 5A9A 23 57 TBL20 BLS A DONE
00813 5A9C «1 5F CMP «S5F
00814 5A9E .22 07 BHI A TRL21.
00815 5ΑΔ0 84 07 AND A #S7
00816 5AA2 4C INC A
00*17 5AA3 8A 30 ORA #S30
00818 5AA5 20 4A TBL21 BRA A STOOP
00819 5AA7 81 61 CMP #S61
00820 5ΑΔ9 22 05 BHI B TBL22
00821 5AA3 C6 4C LOA 8 eS4C
00822 5ÄAD E7 OO STA X
00823 5AAF 08 TBL22 INX A
00824 5ARO 81 63 CHP «S63
00825 5A82 22 04 BHI A TBL23
00826 5A-4 B6 58 LDA #S58
00«27 5AR6 ?0 39 T9L23 BRA A STOOP
0082« 5A«58 fll A4 CMP «$A4.
00829 ,5ARA 22 OA BHI A TBL24
0O83O 5ABC 80 19 SUBlO SUB A «S19
00931 5A^E 80 OA sua A «10
00832 5AC0 81 4A CMP «S4A
0 0 833 5AC2 22 FA BHI SUBlO
00834 5AC4 20 28 _ T3L24 .BRA A STOOP
00835 5AC6 81 Δ9 CMP CSA9
00836 5ACi ?3 29 T8L25 8LS A DONE
00837 5ACA 81 AF CMP «SAF
00838 5ACC Z?. 28 BHI B TBL30 '
00839 5ACE C6 41 LOA A *54l
00840 5A00 85 02 BIT #2
OOflM 5A02 27 06 BEQ 8 LDARC
00842 5A04 5 C INC A
00843 5A05 85 Ol BIT «1
00844 5AD7 27 Ol BEQ B . LDABC
00845 5AD9 SC LDA3C INC R
00346 5A0A E7 OO STA A X
00847 5A0C 81 AC CMP «SAC
00848 5A0E 22 13 BHI DONE
00849 5AEO oa INX A
00850 5AEl 86 5C LDA A SS5C
00851 5AE3 Δ7 OO STA X
0085? 5AE5 08 INX
CONTINUE COUMTING LOAD RYtE AFTER BYTE WITH TOP 2 BITS MSB SET? NO» ADDRESS FOUND YES* CLEAR THIS BIT STORE NEW INSTR TO βΕ COUNTED TO LOAD PARTIAL TABLE STARTING AODRESS START SEARCH OVER AGAIN
LOAD MNEMONIC INTO BUFFER SET BUFFER PTR TO OPERAND FIELD STORE IT
SET INDEX TO BUFFER PTR LOAD INSTRUCTION NO OPERAND INSTRUCTION? YES« YOU ARE DONE FLAG INSTRUCTION? NO» CHECK FURTHER YES» MASK OFF BOTTOM 3 BITS ADD ONE TO THEM CONVERT RESULT TO ASCII STORE OPERAND INTO BUFFER G0SU8/G0T0 LBL X? NO» CHECK FURTHER YES» LOAD ASCII L STORE IT IN BUFFER INCR BUFFER PTR GOSUB/GOTO X? NO» CHECK FURTHER YES» LOAD ASCII X STOPF OPERAND STO+-*/ A-J Oh PCL A-J OR CALL ArE MO» CHECK FURTHER SUBTRACT OFFSET SUBTRACT 10 REACHED ASCII CODE FO=? A THRU J? NO» SURTRACT 10 MO»E YES» STORE OPERANO NO .OPERAND INSTRUCTIONS? YES» ALL DONE FOR/NEXT?
no» check further load ascii a into acc9 for a/next a?
YES» OPERAND=A NO, ASCII Β IN ACC* FOR R/NEXT B? YES· OPEBANO=B NO. OPERANO=C STORE OPERANO FOR INSTRUCTION? YES» YOU ARE DONE
LOAD RIGHT ARROW STOPE IT IN ThE BUFFER
709808/1025 orkshnal lmspcct
Page 106 CJBPG 06/04/75 36:54.05
00853 SA E 6 CS 05 STOOP AOO R «5
00 354 5AES E7 00 DONE STA B X
00855 5AEA Cl 48 T3L30 CMP B . *$48
00856 5AEC 26 05 ." BNE DONE
00857 5AEE 08 INX
00858 5AEF 86 44 LOA A «S44
00859 5AFl AT 00 STA A X
00860 5AF3 7E 5BF2 JMP END
00861 5AF6 81 BA CMP A «SBA
00862 5AF8 23 F9 BLS DONE
00863 5AFA 81 BF CMP A #$8F ·
00864 5AFC 26 IC BNE NOLBL
00865 5AFE 96 14 DASH LOA A GIOFLG
00866 58 00 26 52 BNE ID25-1
00867 5B02 BO 6034 JSR PRTDRV+7
00868 5805 RD 5075 JSR BLANK
0 0869 5308 CF 0058 LOX «BUFF
00870 5303 C6 20 LDA B #S2D
00871 530D E7 00 STA 8 X
00872 580F 08 NOLBL INX
00873 5B10 8C 005C CPX -SS5C
00874 5813 26 F8 BNE OASH
00875 5815 08 INX
00876 5Bl 6 OF 16 STX BFPTR
00877 5318 96 IC LDA A SVINS
00878 53IA OE C8 FORMAT LDX UPP
00879 531C 08 INX
00880 5HlD DF 8C STX W+4
00881 53 IF E6 00 LDA B X
00882 5321 31 BE CMP A a*BE
00683 -5323 ..-26.. 6A-- BNE NTFMT..
00S84 5325 CE 59C0 LDX »FTBL
00835 5928 DF 18 STX MSGPTR
00686 5d2A 37 PSH B
00887 5B2R 50 PRTFMT TST β
00888 53 2 C 2? 2F 3EO MNEM
00**9 5Ö2E C4 70 AND #$70
00S90 5B30 17 TBA
00891 5331 SD 5300 JSR ROMID
00692 5334 27 IF 8EO ID25
00893 533'6 33 PUL B
008Q4 5337 17 TBA
00«95 5333 80 OF AMOOE 3SR DIGIT
00896 533A 08 INX
00t)97 533R C4 OF AND B -eSF
00898 533D 27 04 DIGIT BEO AMOOE
00899 533F C8 40 AOD B «S40
00900 5341 20 61 BRA STRB
00901 5343 86 68 LDA A «S68
00902 534-5 97 CC STA A ALPHA
00903 5347 20 AB BRA STOOP
00904 5349 CE 0064 LDX «S64
00905 534C 44 LSR A
0090ft 5R40 44 LSR A
00907 5*4E 44 LSR A
ADD 5 Τσ GET SECOND LETTER STORE SECOND CHARACTER WAS IT AN «H»?
NO. DONE
YESt INCR BUFFER PTR LOAD ASCII "D" STORE OPERANO IN BUFFER
NO OPERAND INSTRUCTION? YES. DONE · IS INSTRUCTION A LABEL? NO» LOAD OPERAND
GIO? YES» RETURN
PRINT LABEL WITHOUT OPERAND BLANK OUT BUFFER SET INDEX TO BEG OF BUFFER LOAD ACCB WITH ASCII MINUS SIGN STORE DASHES INCR BUFFER PTR 4 DASHES?
NO. LOAD ANOTHER ONE INTO BUFFER INCR BUFFER PTR STORE SUFFER PTR
SET INOEX TO USER PSTN PTR POINT TO SECOND BYTE SAVE 2ND 3YTE PTR LOAD 2ND 3YTE IMTO ACC3 FORMAT INSTRUCTION?
NO, CHECK FURTHER
PRINT ALPHA?
MASK OFF I/O DIGIT
ROM EXIST?
YES« LOAO ASCII RELOAO SECOND BYTE PUT IT IN ACCA ALSO PUT ASCII DIGIT INTO SUFFER
MASK OFF LETTER CALL-DIGIT-CALL?
NO. CONVERT LETTER TO ASCII
LOAD ALPHA SET ALPHA FLAG STORE AL0HA IN OPERAND POINT TO OPERAND FIELO
7-096Γ08/1025 «»«ΝΑΙ.
- 13O -
Page 107 CJPPG 06/04/75 36:54.05
00908 5B4F 44 30 ID25 LSR A PS30
00909 5350 AA OO ORA A X
00910 5852 A7 STA A
00911 5354 39 18 RTS HSGPTR
00912 5855 DF 8E MNEM STX W+6
00913 5Ö57 DF 25 STX **$25
00914 5859 86 19 LOA A MSGPTR+1
00915 5B53 97 OOCC STA A ALPHA
00916 535D 7F CLR
00917 5360 33 OF LEQO PUL B *SF
00913 5861 C4 02 AND B LEOO
00919 5863 26 CC BNE ALPHA
009?.O 5865 97 15 STA A PRTMSG
00921 5B67 fiD SE BSR W+6
009?? 5569 DE OO LDX X
00923 586B A6 LDA A
00924 5860 08 OO INX X
00925 586E Al 34 CMP A ENDl
00926 5870 27 &C BEQ W+4
00927 5372 OE OO GENIO LDX X
009?« 5B74 A6 70 LOA A «$•70
00929 5876 84 78 PrtTMSG AND A END
00930 5878 27 CD BEQ DIGIT
00931 5S7Ä «n 74 BSR END
00932 587C ?0 BRA
00933 537E 17 T8A
00934 537F 58 ASL β
00935 53A0 SP ASL B
00936 5B81 IR 19 ABA MSGPT3+1
00937 58*2 9R 19 ADO A MSGPTR+1
0093« 5884 97 50 STA A · *$5D ■
00939 5986 H 6 17 NTFMT LDA A OFPTP+1
0094(1 58fl« 97 18 STA A MSGPTR
00941 588A OF 57BD LDX LOMSG
0 09&2 588C 7E 19 JMP MSGPTR+1
00941 53SF D7 STA B
00944 5B91 16 C? TAB a*C7
00945- 5892 «I 2F CMP A PEG
00946 5394 ??. BHI
00947 5896 SF 49 CLR B CNVRT
0094R 5397 'fiD 16 BSR BFPTP
00949 5399 DE 0020 LOX T2
00950 5393 7D 08 STR9 TST LE99
00951 5B9E 27 19 ENDl BEQ MSGPTR+l
00952 58A0 06 23 LE99 LOA B **S23
00953 5342 CO OO SUB 3 X
00954 5βΑ4 E7 4A STA B END
00955 5BA6 ?.O IC BRA SVINS
00956 5BAS 96 BF LDA A «58F
00957 58ΛΑ 31 09 CMp A NTLBL
0095R 5BAC 23 Cl BLS «SCI
00959 58AE ai 05 CMP A NTLBL
00960 53B0 22 4C BHI *S4C
00961 583?. C6 OO LDA B X
0Q962 5BB4 E7 STA 8
CONVEOT OIGIT TO ASCII STOPE IT IN THE BUFFER
STORE I/O ROM ADOR
AOD S25 TO IT
AOD 525 TO GET ADDR OF ASCII MESSAG CLEAP AL0HA FLAG RELOAD SECONO- BYTE MASK OFF LETTER LETTER=O?
YESt SET ALPHA FLAG
NO, CHECK IF ID'S THE SAME LOAD ID«1
COMPAPE WITH 10*2 NOT SAMEt NO OPERAND SET INOEX TO 2ND BYTE RELOAD SECOND RYTE MASK OFF I/O OIGIT DIGIT=Ot YOU ARE DONE YES, OUT ASCII DIGIT IMTO 8UFFER
MULTIPLY BY 4 ADD TO MULTIPLY BY ADD RESULT TO BASE ADOR LOW RESTORE IT
SET RFPTR TO MNEMONIC FIELO RESTORE IT
PUT INSTo. into ACCB ALSO 2-BYTE IMSTO WITH 2-OIGIT OPERAMO?
NO. CHECK FURTHER OPERAND IN 2NO BYTE ONLY CONVERT O0EPAND TO QCO SET INDEX RUFFER PTR OPF.RANO>=100? (A-O) NOt OPERAND A NUM3ER
YESt LOAD BOTTOM 2 BCD DIGITS CONVERT TO ASCII A THRU STORE OPERAND DONE
LOAD INSTRUCTION LAKtL IN OPERAND FIELD? NO
LABEL IN OPERAND FIELD? NO
YES» LOAD L INTO ACCR PUT IT INTO BUFFER
70 9.8 08/1025
Page 108 CJBPG 06/04/75 36:54.05
00963 5BB6 08 08 NTLBL INX A 08
00964 5BB7 16 30 TAB B «"R80
00965 5B83 «6 02 LDA DIGITS
00966 538A Cl 04 CMP A «4
00967 5B8C 22 4EA4. BHI DGTS
00968 5BRE 86 2D DIGITS LDA " END
00969 5BCO BO OF JSR A «SDF
00970 53C3 20 OF REG 3RA ADDR
00971 5BCt ar Ol CMP B *1
00972 53C7 2? 15 BHI CNVRT "·
00973 5BC9 C4 16 AND RFPTR
00974 SBC3 ao 52 BSR B «»$52
00975 '58C0 OE OO LDX B X
00976 5HCF C6 LDA
00977 5B01 E7 OC STA A #12
00978 5BD3 08 £8 INX DIGITS
00979 5t304 86 OF LDA B *SF
00980 5306 20 06 ADOR BRA CNVRT
00981 5908 C4 16 AND .EFPTR
009P2 5B0A «D 10 BSR A *16
00993 5BDC OE OE LDX DIGITS
009AA 53DE 86 18 LOA B MSGPTP
00985 53EO 20 0019 CNVRT BRA MSGPTR+1
00986 53E2 07 0018 STA MSGPTR
00987 5BE4 7R 0019 ASL MSGPTR+1
009R8 5BE7 74 18 LSR MSGPTR
00989 53EA 76 48BC ROR BINBCD
00990 53E0 DE 14 LDX A GIOFLG
00991 53E- 7E 3A END JMP NTLIST
0099? 53F2 96 6034 LDA PRTDRV+7
00993 53F4 26 8C BNE W+4
00994 SdF* RO JSR
00995 5*3F9 OE 08 LDX EOPM .
00996 59FB Ofl OD INX ARORTl
00997 53FC 9C C8 CPX UPP
00998 53FE 27 06 BEO A ERROR
00999 5COO OF 20 STX NOEND
01000 5C02 96 09 LDA A PSFLG
01001 5C04 • 26 07 BNE ABORT
01002 5C06 96 59F4 LDA LSTOK
01003 5C03 2A 07 BPL A #7
01004 5COA 7 E 06 A30RT1 JMP A ERROR
0100«; 5COO «6 IC lda' A SVINS
01006 5C0F 97 Bl ABORT STA A «SB1
01007 5CIl 96 OF LDA MOEND '
01008 5C13 81 57FA CMP LF
01009 5C15 26 57FA BNE " LF
01010 5C17 BD 57FA JSR LF
01011 5ClA 90 57FA JSR LF
01012 5C10 RO 57FA .,JSR LF
0101-3 5C20 PO JSR A
01014 5C23 RO 09 NOENO JSR A BSFLG
01015 5C26 4F 15 CLR A LSTFLG
01016 5C27 97 STA
01017 5C29 .96 LDA
INCR BUFFER PTR
LOAO NO. OF DIGITS»* FIX, SCI. OR SCI3?
NO. DON'T SUPPRESS LEADING YES· SUPPRESS LEADING 0 ON OPERANO PUT DIGITS INTO BUFFER DONE
2-BYTE IMST« i»ITH cpg OPERAND?
NO, OPERAND IS ABSOLUTE ADDRESS LSR- 1ST BYTE IS PART OF OPERAND CONVERT OPEPANO TO BCD SET INDEX TO BUFFER PTR PUT R INTO BEG OF O0ERANO STORE IT IN BUFFER INCR BUFFER PTR LOAD NO. OF DIGITS»* PUT 3 DIGITS INTO PUFFER MASK OFF LOWEP 4 BITS OF INSTR CONVERT 11-BIT OPEPANO TO BCD SET -INDEX TO BUFFER PTR LOAD NO. OF DIGITS»* PUT 4 DIGITS INTO RUFFEP STORE UPPER PART OF OPERAND
SHIFT 2NO BYTE LErT 1 BIT SHIFT LSB OF 1ST .BYTE INTO CARRY
ROTOATE IT INTO 2NO BYTE SET INDEX TO OPERAND
GIO? YES« RETURN NO, PRINT LINE
INCREMENT IT
END OF USER PROGRAM M£.MO=?Y?
YES. MEMORY 0VE«FLCW RESTORE USER PSTN PTR OUT OF PAPER?
YES', STOP LIST OR KEYLOG NO. CHECK RSFLG FLAG CONTINUE LISTING?
YES, DO ANOTHER LINE MEMORY OVERFLOW
LOAD INSTRUCTION END INSTRUCTION? NO, DON'T SPACE
NO. CLEAR RUN/STOP FLAG LIST?
709808/1025 INSPECTED
Page 109 CJBPG 06/04/75 3.6:54.05
0101Θ SC2B 57 03 BEQ AUDIT NTLIST «Ϊ20 NO« KEYLOG
01019 5C20 7F OOCC CLR ALPHA AUD5 YES» CLEAR ALPHA FLAG
01020 5C30 39 NTLIST RTS BIT DIRFLG
01022 •5 BEQ «SB
01023 ■0 LDA TRAIL AUD5 .
010R4 » CMP «$ll
01025 5C31 85 20 AUDIT BLS A AUD5
01026 5C33 27 56 CMP «SBF
01027 5C35 96 OF BEO A AUD5
01028 5C37 Cl 08 CMP B «512
01029 5C39 23 •50 8EQ AUOl , =DIGIT
010.10 "5C38 Cl Ii CMP B
01031 5C3O 27 4C BNE AU05 =EEX.
01<Π2 5C3F Cl BF TST β OUTXR
01033 5C41 27 48 BNE IJPP =LA8EL
01034 5C43 Cl 12 BSR 8 AT2+6
01035 5C45 26 03 LDX «S0L7 #CHS
01036 5C47 40 STX A UPP
01037 5C48 26 41 LDX- STILL DIGIT ENTRY
01038 5C4A 80 4F AUDI STX GIONTH
01039 5C4C DE C8 CLR AT2+6
01040 5C4E DF 86 JSP UPP SAVE UPP
01041 5C50 CE 00C6 LOX S0L7
01042 5C53 OF C8 STX «S80 SET NEW INSTRUCTION POINTER
01043 5C55 4F LDA A AU02
010*4 5C56 eo 5909 CMP *S5255 " GIONTR-INSTRUCTIOM ASCII
01045 5C59 DE 86 8NE PUFF+5
01046 5C5R OF C8 LOX «S4E20 RESTORE UPP
01047 5C50 06 C6 STX 8 RUFF+7
010^8 5C5F Cl 80 LDX R #RUFF
01049 5C61 26 OA STX 5,X #RUN
01050 5C63 CE 5255 LDX O.X
01051 5C66 DF 50 LDA STUFF «RUN ·
Ό1052 5C69 CE 4E20 STA «RUFF+11
01053 5C6R DF 5F INX AUD2+3 *
01054 5C6D CE 0058 AUD2 CPX OtX ADDRESS
01055 5C70 AA 05 BNE A
01056 5C72 A7 OO CLR A «RUFF+16 SHIFT 8UFFER. LEFT
01057 5C74 08 INX AUO3
01Π58 5C75 ec 0063 CPX PRTDRV+7
010^9 5C73 26 F6 BNE T13
01060 5C7A 6F OO AU03 JSR DIGFLG
01061 5C7C 08 LDA S0L7
0106? 5C7D 8C 0068 STA
01063 5C80 26 F8 LOA
01064 5Cfl2 BO 6034 AU04 RTS
01065 5CQ=; 96 22 A
01066 5C37 97 OF A RESTORE DIGIT ENTRY FLAG
01067 5Cfl9 D6 C6 B RESTORE COMMAND
01063 SC89 39 AU05
709808/1025
SUSPECTED
:n ο··
- 133 -
Page ΠΟ CJBPG 06/04/75 36:54.05
01070 5C3C 96 OF AUDITl LDA A DIGFLG ASCII LETTER
01071 5CeE 80 08 8SR OUTXR
01072 5C90 BO 5075 JSR BLANK ·
01073 5C93 96 2Ε· LDA A Tl SAVE DIGIT E
01074 5C95 40 ' ADD A #S40 SKIP IT
01075 5C97 97 58 STA A BUFF
01076 5C99 20 E7 BRA AUD4 FORMAT XR
01077 5C98 97 22 OUTXR STA A T13 PRINT IT
01078 SC90 27 EC 8EQ A UOS
01079 5C9F 7F- OOOF CLR OIGFLG
01080 5CA2 80 5C8C JSR FRMT+-S14
οιοβι 5CA5 IE 6034 JMP PRTORV+7
709808/1025
ORIGINAL INSPECTED
Page 111 CJBPG 06/04/75 36:54.05
END
SYMBOL TA8LE
ADATA 0000 ACTL 0001 8DATA 0002 BCTL 0003 INPUT 0004 IOIN 0005
ERROR 0006 TGL 0007 UFLG 0008 RSFLG 0009 EOM OOOA EnPM 0008
STKFLG 0000 RNO οοοε DIGFLG OOOF W2 0010 Wl 0011 ' SFLG 0012
OCNTR 0013 TPl 0014 TP]S 0015 TP2 0016 TP2S 0017 TP3 0018
TP3S 0019 TP4 OOIA TP4S 001B ' TP5 OOIC TP5S 0010 T»6 001E
TP6S OOIF TP7 0020 TP7S 0 021 T13 0022 T12 0023 TIl 0024
TlO 0025 T9 0026 T8 0027 T7 0028 T6 0029 T5 002A
T4 002B T3 002C T2 002D Tl "002E ISTK 002F ISTACK 0051
TA 0052 SPGM 0054 EXTRA 0056 BUFF 005« REAL 0068 IMAG 0070
ATI 0078 AT2 0080 W 0088 XR 0090 YR 0098 ZR OOAO
TP 00A8 LSTX 0030 BKWRT 00B8 RKKC O (RA S0L7 O0C6 UPP 00C8
UIP OOCA ALPHA OOCC roi OOCD 102 OOOO IT7 O0D3 FLAG 0005
TPOS 0006 FILE 00D7 AR 0008 BR OOEO CP O0E8 OOFO
ER 00F8 SORB 008A MT · 7E00 TERMN7 003O IMtO 0040 PARCO OOCO
PAREX 0080 NTBL 0000 DOTS 5EC0 PRTOPV 602D FRMT 5C48 BLANK 5075
LOMSG 5730 ROLLD. 5582 ROLLU 57Fl PSO 550A TXL 55E9 STKUP 55EF
MAD 749.3 CMP 74AA NOR 7406 TXW 7424 TXXR 743^ EXXR 7452
ARSR 753B OVUNF . 7586 OVERF 7500 XRO 74OA XRNINE 75C8 UNOPF 75Fl
IMULT 7689 QOG 7β69 FPA 75FC FPS 75F6 FPM 7735 FPO 7793
FPAFX 7*30 FPMEX 7780 LSHIFT 7521 ZEROX 7439 xze'ooq 7416 XZER02 7417
REdP 73E6 TXRX 73F3 CONST 6800 FPD3PC 6398 TAN 68*9 ATN 69C3
Q^7£RO 6A46 NTLN 6458 EXPN 6AC9 SIN 6394 COS ASIN 6-3F2
ACOS 6BF7 PHl 6C5D PH2 6C8D PH3 6D34 PH4 6000 LSFT8 6E47
SOPT 6E65 MA03 6F2C CMPR 53E4 IOUPX 6F52 LOGlO 6FA7 YUPX 6FE9
RTOP 73?.« PTOR 7386 TABLE 580 0 TA3LE1 58E0 FTBL 59CO TSNL 59C5
8WM 797B "SVINS oaic SAVE 0010 GIOFLG 0014 LSTFLG Λ O 15 MSGPTR 0018
(3FOTR- 0016 BIN=CO 4SBC DGTS 4EA4 ROMlO 5300 LF 57F4 STEPl 52F4
LSTNTR =5904 GIONTP 5909 KEYLOG 590A LIST 59EF LSTOK S'JF'i· NTEMO 5 AO 8
KYLG SAOA SPE99 SiOF OKAY 5A17 TLS 5A42 ENO? 5A4C ENOASC 5A4F
NALPHA 5A5P- NTASC 5A5E CMPCTR 5Λ62 NOCNT 5A66 MRTHNl 5A72 NOTYET 5Δ75
EOlJAL =5A7F FOUNO 5A«C TBL20 5A9C TSL2.1 5AA7 TPL2? 5ASO T«L23 5A38
SU? 10 5ARE T3L24 5AC6 TBL.?5 5ACA LDAec 5AO Λ STOOO 5AFl OONE 5AF3
TBL30 5AF6 DASH 550O NOLBL 5BlA FORMAT 5325 DRTFvT 5436 A"0Dc 5343
DIGIT 5R49 1025 5=555 MNEM 5B50 LEQO 5B67 GENlO 5β7Α PDTMSG 5B7E
NTFMT 588F STR3 53A4 ENOl 5BA6 LE99 5-3Δ8 NTLRL 5R=i7 DIGITS 5BC0
REG 5BC5 ADO=? 5=?08 CNVRT 5RE2 ENO 53F2 ABORTl 5COO ARORT 5CIl
NOENO 5C26 NTLIST 5C30 AUOIT 5C31 AUDI 5C4A AU02 5C60 A UD 3 5C7A
AUD4 5C8? AUD5 5C8B AUOITl 5C8C OUTXR 5C9B
70 9 808/102 5
JL35 _
Page 112 CJ8P6 06/04/75 36:54.05
00215 00218 00219 00220 00221 00222 00223 00224 00225 00226 00227 00228 00229 00230 00231 00232 00233 00234 00235 00236 00237 00238 00239 00240 00241 00242 00P43 00244 00245 00246 00247 00248 00249 00250 00251 00252 00253 00254
SCAB
LNGTH OPT LISTfMEM
0 02D· DECPT EQU T2
002C XPNT EQU T3
002B CARRY EQU T4
002A NUMOVF EQU T5
0029 FLTFLG EQU T6
0028 EXP EQU T7
00<?8 EXP2 EQU W
008A EQU- W+2
ORG FRMT
5CA8 5CAA 5CAR 5CA0 5CAE 5CR0 5C82 5CR4 5C85 5C36 5CB7 5C38
5C83
?A 40
C6 FF 5C
30 OA 2C FB 88 OA 58
se
58 58 IB
97 39
OAVE UHLRICH OCTOBER 15»1974 FORMATTER REV N
* THIS POUTINE CONVERTS THE EXPONENT. STORED
* IN TWO'S COMPLEMENT FORM. TO ITS BCD
* EQUIVALENT. THE VwO1S COMPLEMENT OF THE
* EXPONENT MUST BE IN ACCA BEFORE
* ENTERING THIS ROUTINE. THE ANSWER WILL
* SE STORED IN XPNT WHEN THE CONVERSION
* IS COMPLETED,-
EXPNT 3PL EXPPL
NEG A
EXPPL LDA B «SFF XPINC INC B
SUB'A *
SGE XPINC
AOD A «10
ASL B
ASL B
ASL B
ASL B
ABA
STA A XPNT
RTS IS SIGN OF EXPMT POSITIVE?
NO. MAKE IT POSITIVE YES. LOAO CTR«S START VALUE INCR TEN'S COLUMN SUBTRACT 10 FROM ARS(EXPNT) IF>=0. EXPNT INCOMPLETE IF<0t ADO 10 TO ONE'S COLUMN CTR VALUE IN ACCB EQUALS TEN'S COLUMN OF EXPNT. SO SHIFT IT LEFT 4 PLACES
OBTAIN WHOLE EXPNT STORE EXPNT IN XPNT
709808/1025
Page 113 CJBPG 06/04/75 36:54.05
00256 00257 00258 00259 00260 00261 00262 00263 00264 00265 00266 00267 00268 00269 00270 00271 00272 00273 00274 00275 00276 00277 00278 00279 0028η 00291 00?32 00233 00284 0028S "00286 00287 00288 00289 00290 00291 00292 002^3 00294 00295 00?96 00297 00298 00299 00300 00301 00302 003Π3 00304 00305 00306 00307 0030*1 00309 00310
5CBC 5CB0 5CBF 5CCl 5CC3 5CCS 5CC7 5.CC9 5CCB 5CC0 5CCF SCDl 5CD3 5C05 5CD7 5CD1J 5C09 5C00 5CDF 5CEl 5CE3 5CES 5CE7 5CE9 5CEA 5CEC 5CE0 5CEE 5CF0 5CFl 5CF3
97 2C 97 2D 97 97 96
80 OF Dft 96 OF
81 27 7D 84 DF
26 96 84 IC Rl 20 ?.E
96 OE fl 2F 86
97 OE 17
2A Ol 40 5F
CB 11
27 2E F9
* THIS ROUTINE FORMATS THE DATA "STORED IN
* THE X REGISTER. THE FORMAT MODE INFORMA-
* TION IS FOUND IN TGL AND THE DIGIT ENTRY
* FLAG IS LOCATED IN DIGFLG. THE
* FOLLOWING ARE THE 3 FORMAT MOOES:
* 1) FXD N Ρ8ΗΗ-123.456ΒΒ8Θ » 2) FLT N PßBOS^:t-1.234880^
* 3) PVR3 N P3HB-123.456BB00
* THE FORMAT MODE USEO IN DIGIT EMTRY WILL QF.
* FIXED FORMAT. FIXED FORMAT WILL OVERFLOW
* INTO FLOATING POINT WHEN IT BECOMES
» TOO 8IG TO FIT IN THE DISPLAY. IN THE
* PWR3 MODE. THE ANSWER IS DISPLAYED WITH AN
* EXPONENT WHICH IS THE POWER OF 3 JUST
* BELOW THE ACTUAL EXPONENT. THIS MODE WILL
* ALSO OVERFLOW INTO ORDINARY FLOATING POINT ■
* WHEN THE MANTISSA IS TOO LARGE FOR THE
* DISPLAY. THE LARGEST ALLOWABLE ROUND IN
* PWP3 MODE WILL BE 7; ANY LARGER ROUND
* FACTOR WILL DEFAULT TO 7.
FRMTl
RND7
EXPL PWR3
CLR A STA A STA A STA A STA A LDA A 8SR LOA R LDA A CMP A BEO AND A BME LDA A AND A CMP A BLT " BGT LDA A CMP A BLE LDA A STA A TBA 8PL NEG A CLR B ADD CBA BEQ BGT
DECPT SET DEC PT PTSZ=O
LNGTH StT LNGTH PTR=O
MUMOVF CLEAR NUMERIC OVERFLOW FLAG
FLTFLG CLEAR FLT PT OVERFLOW FLAG
XR LOAD EXPNT - :
EXPNT CONVERT IT TO BCO
XP LOAO EXPNT INTO ACC3
DIGFLG · LOAO DIGIT ENTRY FLAG
«$20 LEADING ZEROES?
NTROS ■ YES
#?OF DIGIT ENTRY?
DlGNTR YES
TGL NO, LOAO TOGGLE SWITCHES
«®34 MASK FORMAT MODE BITS .
FLT IF<®10, FLOAT PT FXD IF>310. FIXED PT RND LOAD ROUND FACTOR
#7 · R0UN0=7?
RND7 <=7« LEAVE RNO ALONE
*7 SET RND TO 7
PND STOPE NEW RND=7
PUT BINAPYEXPNT INTO fCCA EXPL POSITIVE?
NO, MAKE IT POSITIVE .
CLEAR P'4R3 CTR »3 BUILD pWR3 EXPNT RY 31S
COMPApF REAL AND P*R3 EX°NTS FLT ALREAOY PWR3. USE FLT PT PWP3 REAL>PWR1. CONT BUILOtNG
709808/1025
OHiSlNAL ΪΜ2ΡΕΟΪΗ)
Page 114 CJBPG 06/04/75 36:5*.05
00311 5CF5 70 0090 * TST B XR
00312 5CF8 28 02 BMI NEGl
00313 SCFA CO 03 MEGl SU8 «3
00314 5CFC 10 SBA A
00315 5CFO 2A Ol BPL A NEG2
00316 5CFF 40 NEG2 NE6
00317 5000 97 2C STA DECPT
00318 50 02 17 T8A A
00319 5D03 8D A3 FLT BSR A EXPNT
00320 5D05 96 OE LDA A RND
00321 5O07 98 2.C FLOAT AOD DECPT
00 322 5D09 4C FLTl INC
00323 5D0A 7C 0028 INC R FLTFLG
00 324 5000 20 71 FLT2 BRA B LDMNT
00325 500F 06 OF LDA DIGFLG
00326 5011 C5 DF BIT A #$0F
0 0-327 5013 27 F4 BEQ B FLOAT
00.323 5D15 86 OA LDA B #*10
003P9 5D17 C4 OF AND tfSF
00330 5019 Cl OA CMP #10
00331 5D19 27 03 BEO CHKOVF
00332 5010 17 TBA B
0 0333 5DlE. 20 EA CHKOVF BRA B FLTl
00334 5D20 06 90 LDA XR
00335 5022 OO 88 SUB 8 EXP
00336 5024 2.0 E4 BLT FLTl
00337 5D26 Cl OA CMP rtlO
00338 5028 2C EO BGE FLTl
0 0339 5D2A 20 IA FXO 8RA A" FIXED
00340 5D?C 17 T8A A
00341 5020 9R OE ADO A RNO '
.00342 50 2F 4C INC
00343 5D30 81 OA CMP eio
00344 5032 2E Dl BGT B FLT
00345 5034 20 10 DIGNTR BRA A FIXED
00346 5036 DO 38 SU8 EXP
00347 5038 81 80 CMP A asao
0034a 503A 27 12 BEQ A NTROS
00349 5D3C 84 OF AND A it SF
00350 5D3E 90 8A . ?U8 EXP2
00351 5040 «I OA CMP A SlO
0035? 5042 2C CB BGE R FLT2
00353 5044 98 8A FIXED ADO EXP2
00354 5046 07 2C STA B DECPT
00355 5048 2C 36 BGE LDMNT
00356 5D4A D7 20 STA A LNGTH
00357 504C 20 32 NTfiOS BRA LDMNT
0035« 5D4E 96 8A LOA A EXP2
00359 5050 PO 5CA3 JSR A EXPNT
00360 5053 96 8A LOA A EXP2
00361 5055 40 NEG A
00362 5056 4C INC
00363 5057 81 OA CMP A #10
00364 5059 2F 25 BLE LDMNT
00365 505*3 86 OA LOA #10
TEST SIGN OF EXPNT MIMI)Sf PWO3 EXPNT ^UILT PLUSt SUB TO GET PWR3 EXPNT FIND OIFF PEAL 5. PWR3 POSITIVE?
NO, MAKE IT POSITIVE STORE OIFF IM DEC PT PTR TRANSFER PWR3 EXPMT TO ACCA CONVERT IT TO BCD RELOAD ROUND OFF FACTOR ADO OEC PT PTR TO RNO RN.D+DECPT + 1=POS CTR SET FLOATING POINT OVERFLOW FLAG LOAO THE MANTISSA
NOT DIGIT ENTPY, FLT PT DIGIT ENTRY, CHECK OVERFLOW MASK OFF DIGIT CTR MORE 10 DIGITS HIT? YES. CHECK OVERFLOW NO, POS CTR=OIGIT CTR
LOAD EXPNT
SURTRACT EEX EXPNT EXPNT<0. FLT PT OVPFL MANT. EXPMT>=10? ■ YES. FLT PT OVERFLOW NO. FIXEO PT SHIFT EXPNT TO ACCA
"RNO+EXPNT —:
RND+EX°NT+1=POS CTR FIXED OQINT OVERFLOW?
YES, FLT PT
NO, FXO PT
XR-EXP=MNT EXPNT DEC PT S, O'S ONLY?
YES. ENTER ZEROES GET DIGIT CTR ADO NO. LEADING O1S TO DIG CTR MO, «ORE THAN 10 DIGITS HIT?
YES, CHECK OVERFLOW NO. GET OIGIT CTR AGAIN STOßE OEC PT PTR EXPMT<0? NO. LOAD MAnT YES, SET LNGTH PTR=EXPNT LOAD THE MANTISSA LOAO MO. O'S AFTER DEC PT SET UP EXPNT DUE TO THEM GET NUMRFR
OF ZEROES TO DISPLAY
10 OF THEM?
NO. LOAD M4NT WITH ZEROES YES. FILL DISPLAY rfITH ZEROES
709808/1025 ORIGINAL INSPECTED
Page 115 CJRPG 06/04/75 36:54.05
00366 00367 00368 00369 00370 00371 00372 00373 00374 00375 00376 00377 00378 00379 00380 00381 00382 00383 00384 003Λ5 00386 00387 00388 00339 00390 00391 00392 00393 00394 00395 00396 00397 0039B 00399 00^00 00401 00402 00403 00404 004(15 00406 00407 00408 00409 00Mn 00411 00412 00413 00414 00415 00416 00417 00418 00419 00420
5O5D 505F 5061 5063 5065 5067 5069 506A 5D6R 506C 506D 50SE 5070 5072 5074 5075 5078 507A 507C 507D 507F 5080 5082 5085 5086 5087
5088 5D8C 5D°E 5090 5091 5093 5095 5097 5099 509C 509D 5D9F 5OA0 5DAl 50A3 50A5 50A7 50A8 50A9 50ΔΒ 50AD 50AF
5DB3 50R5 5017 5DR9 5088
20 AB DF OE A6 CS 26 44 44-44 44 09
84 OF OF DE 16· 39
CE 0010 C6 El 09
26 FB 39
80 F3 CE 0064 16
44
8B 97
97 97 2A 50
2B 3D CA
81 ^D 7C 002A 5D
2F 3C 09 5A
«0 BC Ol 2C 26 OF 36
96 OF 2B 96
26 96 OF
85 OF
27 96 27 20
LDDGT
STROGT
BLANKl MORE
LOMNT
CARRYl
XP99 LOAOO
BRA
STX
LDX
LOA A
BIT B
BNE
LSR A
LSR A
LSR A
LSR A
OEX
ANO A
STX
LDX
RTS
LDX
LDA B
STA B
OEX
BNE
RTS
BSR
LOX.
TAB
LSR A
ADD A
STA A
CLR A
STA A
STA A
TST
BMI
BSR
CMP A
BLT
INC
TST B
BLE
DEX
DEC B
BSR
CMP R
BNE
SEI
PSH A
LDA A
BMI
LDA A
BNE
LOA A
BIT A
BEQ
LOA A
BEO
BRA
FLTl
TP2
TP3
«1
STRDGT
TP3
TP2
#$10 £K40 S57,X·
MORE • BLANKl
«P222 TP3S
TP3 CARRY
ENDMNT LDDGT
«5
CARRYl CARRY
ENDMNT
LDDGT DECPT NODPT
DIGFLG
DCPT
NUMOVF
DCPT
DIGFLG
PSDF
CHKRNO
FLTFLG
NOOPTl
DCPT yes* flt point ovrfl " store buff ptr load x-reg ptr loaq digit into· acca pos ctr even?
no. digit in lower half yes. digit in upper half byte; shift IT DOWN
OECR X-REG PTR ' MASX LOWER HALF BYTE CHANGE INDEX PEG FPOM X-REG PTR TO BUFF PTR DIGIT LOADED; RETURN SET SUFFER PTR LOAO BLANK CODE STOPE BLANK IN BUFF DECR RlJFFER PTR LOAD ANOTHER BLANK RETURN
LOAO BLANKS INTO DISPLAY BUFFER SET BUFF PTR AT END OF MANT AREA POS PTR IN ACCB ALSO GET »OS CTR/2 3UFP PTR=222+P0S CTR/2 2ND BYTE IMDEX REG
1ST BYTE INDEX REG CLEAR CARRY
LOAD ROUNDING DIGIT COMPARE IT TO IS IT <5?
NOtSET CAPRY TEST POS CTR AGAIN IS IT NEGATIVE?
NO. OECR RUFF PTR OECR POS CTR LOAD DIGIT CTR=DEC PT PTR?
NO. NO OEC PT YES» DISABLE KEY INTERRUPT SAVE DIGIT OM STACK
OEC PT HIT?
NUMERIX OVERFLOW?
IF OVRFL. PUT IN OEC PT
DIGIT ENTRY? NO. CHECK ROUND MODE YES. FLT PT OVEPFLOW NO. DEC PT SUPPPESSED YES. DEC PT
709808/1025
Page 116 CJBPG 06/04/75 36:54.05
00421 5OBD 96 OE CHKRNO . LDA A RNO
00423 50BF 27 05 BEQ NODPTl
00423 50Cl 86 2E DCPT LOA A «056
00424 •5DC3 A7 00 ; STA A . X
00425 5DC5 09 DEX
00426 5OC6 32 NODPTl PUL A
00427 5DC7 OE CLI
00428 5DC8 93 2A NODPT ADD A CARRY
00429 5DCA 7F 002A CLR CAPRY
00430 50CD 81 .0A CMP A «10
00431 50CF 2D 04 BLT CARRY2
00432 50Dl 7C 002A INC CAPRY
00433 5D04 4F CLR A
00434 5DD5 βΑ 30 CAP.3Y2 ORA A «060
0.0435 5DD7 A7 00 STA A X
00436 5DD9 20 Cl BRA CARRYl
00437 5003 Ol 20 ENDMMT CMP B LNGTH
00438 5000 2F 05 BLE CHKCR
00439 500F 4F LOAOl CLR A
00441) 5DE0 5A DEC B
00441 50E1 09 OEX
00442 50E2 20 BF BRA LOADO
00443 5DE4 96 2A CHKCR LDA A CARRY
00444 50E6 85 01 BIT A Pl.
004Λ5 50E8 27 56 BEO SGNMT
004*6 SDEA 7F 002A CLR CARRY
00447 5DE0 96 28 UDA A XPNT
00443 5DEF 81 99 CMP A #$99
00449 50Fl 26 OO BNE N0T99
00450 50 F 3 86 96 LDA A «&226
00451 5DF5 97 19 STA A TP3S
00452 50F7 C6 09 LDA B *(9
00453 50F9 07 29 STA B NUMOVF
00454 5DF3 CE 0063 LDX #19143
00455 5DFE 20 Al BRA XP99
00456 5E00 96 91 N0T99 LDA A XR + 1
00457 5E02 85 01 8IT A «1
00458 5E04 26 30 BNE FLTOVF
00459 5E06 96 07 LDA A TGL
00460 5E0S 85 08 BIT A »a 10
00461 5E0A 26 22 BNE POWER3
00462 5E0C 96 28 LDA A FLJFLG
00463 5E0E 26 26 BNE FLTOVF
004*4 5E10 P6 01 RGBUF LDA A «1
00465 5E12 09 DEX
00466 5El 3 SC 0058 CPX #«130
00467 5E16 26 BD BNE CARRY2
00468 5El 8 9A 90 OVRFL LDA A XR
00469 5ElA BO 5CA8 JSR EXPNT
00470 5ElD 06 07 -LOA 8 TGL
00471 5ElF C5 08 9IT P «βίο
00472 5E21 27 08 9EQ FLT3
00473 5E23 7C 0091 INC ΧΟ + 1
00474 5E26 4F CLR A
00475 5E27 97 28 STA A FLTFLG
RND=O, NO DEC PT LOAD DEC PT CODE STORE IT IN BUFF DECR RUFF PTR RELOAD DIGIT INTO ACCA ENARLE KEY INTERRUPT , " ADD CAPRY TO DIGIT CLEAR THE CARRY OIGIT+CAPRY.<10?
YES» NO CARRY NOt SET CARRY % ' PUT RCD O INTO ACCA CONVERT BCD TO ASCII STORE DIGIT IN BUFF
FINISHED MANTISSA?
YES» STILL A CARRY?
LOAD ACCA WITH BCD 0 DECR POS CTR DECR QUFF PTR LOAD ZERO INTO BUFF LOAD CARRY IS THERE A CARRY?
NO. LOAD SIGN OF MANT CLEAP THE CARRY ' LOAD BCO EXPNT IS IT = 99? ■
YES, SET XR PTR=!3226
STORF IT - _ ■
SET POS PTR=9 SET NUMERIC OVERFLOW 8IT RESET RUFF PTR RELOAD MANTISSA WITHOUT ROUNDING PWR3 OVRFL FLAG SET?
YES. FLT PT OVERFLOW LOAD TOGRLE SWITCH REG PWR3?
YES» CHECK DWR3 OVERFLOW FLT PT OVERFLOW?
YES» FLT PT OVERFLOW LOAO 1 DUE TO CARRY OECR 3UFF PTR REACHED REG. MANT AREA IN BUFF?
NO. LOAD CARRY INTO BUFF LOAD EXPNT
C0NVE9T πΛθ BCD
PWR3 MODE?
NO, FIXED POINT OVERFLOW YES« SET PWR3 OVRFL FLAG
CLEAR FLT PT OVERFLOW FLAG
709808/10 25
Page 117 CJ=?pc,
- 140 06/04/75 36:54.05
00476 5E29 97 2C FLT3 STA A DECPT SET DECPT=O FLT PT OR EEX? . CHGSGN FLAG SET?
00477 5E2R 7E 5005 POWER3 JMP FLT NEITHER» NO EXPMT YES. SIGN EXPMT MEG
00478 5E2E 96 2C · LDA A DECPT LOAD POWEP3 «ANT EXPNT FLT PT? LOAD NON-ZEPO EEX EXPNT
00479 5E30 81 02 CMP A «2 MANTISSA OVERFLOW? YES. EXPMT IN XR CHECK ITS SIGN
00480 5E32 ?6 OC BNE RGBUF NOME. LOAD CARRY NO? SET EEX EXS=NT UP RELOAD DIGIT ENTRY FLAG
00481 5E34 ?0 E2 FLTOVF BRA OVRFL YES. REDO IN FLT PT CLEAR LEADING ZEPQES 9tT
00482 5E36 86 31 LDA Δ #061 STOPE 1 IN RUFF LOC EEX EXPN" ZERO? OEC PT ^ O'S ONLY?
00483 5E38 A7 OO STA A X NEXT TO DEC PT «ME. 0, CHECK SIGN YES» NEGATIVE EXPNT
00484 5Ε3Δ 96 .90 LDA A XR LOAD EXPNT . LOAD BCD EXPNT
00485 5E3C 4C INC A INCPEMENT IT RY 1 IF ZEPO» SIGN EXP1JT =>LUS
00486 5E3D 90 5CA8 SGNMT JSR EXPNT CONVERT IT TO BCD L04Q ΕχβΊΤ FPOM XR
00487 5E40 56 91 · LDA A XR +1 LOAD MANT SIGN SIGN EXPNT PLUS?
00488 5E42 S4 80 AND A SS80 CLF.AR PWR3 OVFRL FLAG NO, LOAD MINUS SIGN CODE
00489 5E44 97 91 STA A XR+1 ■ RESTORE ΜΔΝΤ SIGN STORE EXPNT SIGN
00490 5E46 2A 05 BPL SGNPOS POSITIVE? INCR BUFF PTR
30491 5E48 ce 20 LDA B 31355 NO. LOAD MTNUS SIGN CODE LOAD 8CO EXPNT
00492 5E4A 09 DEX DECR 81JFF PTR PUT IT IN ACCB ALSO
00493 5E48 E7 OO SGSPOS STA B X STORE MINUS OR BLANK TENts COLUMN OF
00494 5E4D CE 0065 CHKtEX LOX SS145 SET 3UFF PTR AT BEG EXPNT AREA EXPNT IN UPPER
00495 5c SO 96 OF LD^ A OIGFLG HALF BYTE; SHIFT
00496 5E52 84 40 ANO A SS40 IT DOWN
Q049" 5E54 9A 28 ORA a FLTFLG CONVERT PCO TO ASCII
00498 5E56 27 20 SEQ NOEXP STORE TEN'S COLUMN
0&499 5E58 «5 Ol BIT A #1 INCR BUFF PTO
O05ftO 5E5A 26 12 3NE SGNXP GET ONE'S COLUMN
30501 5E5C 96 88 LOA A EXP
0050? 5E5E 30 5CA8 JSR EKPNT
50503 SE61 40 1ST Ä
00504 5E62 26 06 3NE EXPNO
00505 5E64 96 OF LDA A DIGFLQ
00506 5E66 85 10 BIT 'A «sio
00507 5E6« 26 14 EX?NO BNE NEGSGN
0050S 5E6A 96 S8 LDA A EXP
00509 5E6C 20 OE SGNXR BRA CHKSGN
00510 5E6E 96 OF LDA A DIGFLG
00511 5E70 34 OF AND A **0F
0051? 5E72 «1 80 CMP A «?80
00513 5E74 27 08 8EQ MEGSGN
00514 5E76 96 2B LOA A XPNT
00515 5E78 ?7 08 8EQ SGNXP
00516 5E7A 96 90 CH<SGN LDA A XP
00517 5E7C 2i 04 NEGSGN BPL SGNXP
0051a 5E7E CS 20 LDA a SP3S5
00519 5ERO E7 OO SGNXP STA B
00520 5E82 08 INX
00521 5Ξ83 96 2B LDA A XPNT
00522 5E«55 16 TAB
00523 5E86 40 LSR A
00524 5E87 44 LSR A
00525 5E88 44 LSR A
00526 5E89 44 LSR A
00527 5Ε3Δ 8A 30 ORA A »««60
00.528 5 ES C A7 OO STA A X
00529 5E«?E 08 INX
00530 5ESF C4 OF ANO 8 *5F
709808/1025
Page 118 GJPPG 06/04/75 36:54.05
00531 5E91 CA 30 NOEXP ORA B !ȣ60
00532 5E93 E7 00 STA P X
005^3 5E95 86 20 LOA A 0S2O
00S34 5E97 C6 2E BEGNO LDA B #S2E
00535 5E99 CE 0057 LDX #BUFF-1
00536 5E9C 08 INX
00537 5E90 Al 00 OPBLK CMP A X
00538 5E9F 27 F8 BEQ BEGNO
00539 5EAl 08 INX
00540 5EA2 Al· 00 CMP A X
00541 5EA4 27 04 BEQ LOCOM
00542 5EA6 El 00 LDCOM CMP 8 X
00543 SE A 8 26 Fl COMMA BNE DPBLK
00544 5EAA 09 OEX
00545 5EA9 09 DEX
00546 5EAC 09 DEX
00547 5EA0 09 DEX
00548 5EAE A6 00 LDA A X
00549 5ES0 81 2F CMP A #S2F
00550 5EB2 23 06 BLS COMEND
00551 5EB4 8A 80 ORA A #$80
00552 5E86 A7 00 COMENO STA A X
00553 5E83 20 Fl- BRA COMMA
00554 5E3A 39 RTS
CONVERT BCD TO ASCII STORE ONE'S COLUMN OF EXPNT PUT BLANK CODE IN aCCA PUT DEC PT CODE IN ACC8 SET INDEX TO BEG OF 3UFF-I
CHARACTER A BLANK? YES» NOT BEG OF NO. YET
BLANK?
YESt START TO LOAD COMMAS DEC PT?
NO, CONTINUE LOOKING
FIND COMMA POSITION LOAD CHARACTER REACHED ENO OF NUMBER? YES, DONE
NO. PUT IN COMMA RESTORE CHAR WITH COMMA
709808/1025
ORIGINAL IMSPECTED
Page Π9 CJBPG 06/04/75 36.:54.05
00557 7338 - 55E9 ROUTINE CONVERTS THE RECTANGULAR IN THE X AND Y REGISTERS ' » AND THE AND THE Y-COORDINATEt A A S55AC SAVE X IN LAST X
00558 7338 92 * COORDINATES FORM. THE X-COORDINATE MUST BE THE ANSWER IS A S57E3
00559 7338 9A • THIS * TO POLAP REGISTER MAGNITUOE IN THE $7338 BOTH X AND Y=O?
00560 733D 4B * IN THE X REGISTER. ANGLEt IN THE Y TXL YESt YOU ARE DONE
00561 733F 0098 » IN THE Y WITH THE A XP+2 POINT TO ?NO DIVIDE ARG
00562 7341 7793 • RETURNED * X REGISTER A YR+2 OIVIDE Y BY X
00563 7344 69C3 ♦ REGISTER, A YONLY FIND ATAN Y/X
00564 7347 Bl ft UHLRICH 1/3/75 R TO P REV C A *YR IS X NEGATIVE?
00565 734A 29 * A FPO NO« ANGLE IS CORRECT
00566 734C 55AC * DAVE A ATN PUT ANGLE INTO Y
00567 734E 74OA EOU B LSTX+1 ZERO OUT X
00568 7351 02 EOU B STOANS
00569 7354 90 XEY ORG XEY SET XR EXPNT=2 ~"
00570 7356 99 -LDPI JSR B XRO • SIGN OF ANGLE NEGATIVE?
00571 7-358 80 LDA «2 YES« CHANGE SIGN
00572 735A 91 TOPOL ORA A XR PUT SIGN ON 180 DEG OFFSE
00573 735C 20 8EQ A YR+1 LOAD 200 GPADS
00574 735E ~07 LDX £S80
00575 7360 JSR XR+1
00576 7362 05 JSR «S20 GRAOS?
00577 7363 LDA TGL
00578 7365 06 NTDIVO 8PL A RADS?
00579 7366 18 JSR GRAD • LOAD ISO DEGREES
00580 7368 92 JSR STORE IN X
00581 736A 03 LDA RAD
00582 736C 57E3 STA HSlQ LOAO PI INTO X
00583 736E 0098 LOA XP + 2
00584 7371 75FC EOR ADDOFF AOD OFFSET TO ANGLE
00585 7374 06 STA LDPI
00586 7377 11 LDA A #YR ANGLE=90 DEGREES?
00587 7379 55AC 0098 LDA FPA
00588 7378 57E3 38 ASR E3ROR · NO« PUT ANGLE INTO Y ALSO
00539 737E 689A 8CS YONLY
00590 7380 80 73E6 ASR #YR 1/COS ANGLE
00591 7383 96 0080 8CS TXRXl
00592 7386 9A 7735 LOA COS X/COS ANGLE
00593 7389 27 STA RECIP
00594 738C CE BRA SLSTX
0 059.5 BD GRAO JSR FPM
00596 3D LDX
00597 96 RAD JSP
00598 ?A ADDOFF LDA
00599 RD 8NE
00600 90 STOANS LDX
00601 86 BSR
00602 97 JSR
00ft03 96 JSR
00604 «8 LDX
00605 97 JMP
00606 86 CLR
00607 06
00608 57 YONLY
00609 25
00610 57
00611 25
«6
97
20
9D
CE
80
26
CE
80
PO
BO
CE
7E
4F
.709808/ 1 025
l&SFESTED
Page 120 CJRPG 06/04/75 36554.05
00612 738D 97 06 * 55E9 STA A * ERROR MAKE MAGNITUOE POSITIVE TXL SAVE X IN LAST X
00613 738F 97 99 25 STA A * THIS ROUTINE YR+1 YTOX TRANSFER ANGLE TO t
00614 7391 7E 55AC 689A JMP . ο OPERATION TO XEY 6/10/74 P TO R PEV 8 COS TAKE COS OF ANGLE
00615 O08O SLSTX POINT TO 2NO MULT AOG
00616 7735 PEPFOPMS THE COMPLEMENT FPM •MAGNITUDE*SIN OF ANGLE'
00617 0078 THE RECTANGULAR-TO- »ATI • POINT TO ATl
00618 14 » POLAR ROUTINE» 0ESCRI8E0 ABOVE. TXRXl SAVE X COOPDTNATE IN ATI
00619 15 β YTOX TRANSFER ANGLE TO X AGAIN
Θ0620 6394 a SIN ■ TAKE SIN OP ANGLE
00621 0OBQ ο DAVE UHLRICH ^LSTX POINT TO 2NO-MULT ARR
00622 7735 » FPM ^AGMITUDE*COS OF AMGLE
00623 55AC XEY PUT Y COOPOINATE INTO Y
006.24 0078 TORCT JSR 3ATl POINT TO ATl
00625 7394 HO 7433 BSR TXXR
00626 7397 «0 73F3 JSR TXRX
00627 7399 BO 0098 LDX ÖYR
G0ft28 739C CE F5 JSR TXXRl . _. - - - - - - -
30629 739F BO LDX S7C52
00630 73 A 2 CP 7338 BSR TOPOL
00631 73A5 30 7394 - SSR TORCT
00632 73A7 RD JSR *
Ö0633 73 A 9 go LDX
00634 73AC CE JSR
00615 73AF BO JSR
00636 7332 30 LDX
00637 7395 CF. TxxPi· JMP
00639 7333 7E TXRXl JMP
00*39 7339 7E YTOX LOX
00640 73BE CE BRA .
00641 73Cl 20 ORG*
00642 7C52 FDB
00643 ?C52 FDB
00644 7C54
709*808/102
• ORIGINAL INSPECTgp
Page 121 cjbp-G 06/04/75 36:54.05
ENO
SYMBOL TABLE
AOATA 0000 ACTL 0001 BOATA 0002 BCTL 0003 INPUT 0O04 ΙΟΙΝ 0005
ERPfOR 0006 TGL 0007 UFLG 0008 RSFLG 0009 EOM ■ QOOA EOPM 0008
STKFLG 0000 RND OOOE DIGFLG OOOF -W2 0010 Wl 0011 . SFLG 0012
DCNTf* 0013 TPl 0014 TPlS 0015 TP2 0016 TP2S 0017 T»3 0013
TP3S 0019 TP4 001A TP4S 0016 TP5 OOIC TP5S 0010 TP6 QOiE
TP6S 001F TP7 0020 TP7S 0021 T13 0022 T12 0023 TIl 0024
TlO 0025 T9 0026 Ta 0027 T7 002a T6 0029 T5 002A
T4 002B T3 002C T2 002D Tl 002E ISTK 002F !STACK 0051
TA 0052 SPGM 0054 EXTPA 0056 3UFF 3053 REAL 0068 IMAG 0070
ATI 007β AT2 0080 W ooea XR 0090 YR 0098 Ζ» OOAO
TR 00A8 LSTX OOBO BKWRT 0088 BKKC 00=?Α SOL? 00C6 UPP 00C3
LiIP OOCA ALPHA oocc 101 OGCD Σ02 OQOO ΪΤ7 0003 FLAG 0005
TPOS 0006 ""ILE 0007 AR .0ODS BR οοεο CR 00E3 DP OOFO
.C (5 30F3 SOBS QOBA MT 7E30 T£RMN7 0030 IM£O 9040 PARCO ooco
.-AREX 0OBiI NTBL 0000 DOTS 5 EC O PRTORV S020 FPmT SCA3 BLANK 5075
LOMSG 57BO !30LLD 55B2 ROLLU 57FI PSD 55DA T*l 55E9 STKUP 55EF
.MAO T49B CMp 74AA NOR 7406 TXW ?42& TXXR 7433 EXXR 74=2
ARSR T538 OVUNF 75B6 OVERF 75DD «RO 743A XRNlNE 75C3 UNOPF 75Fl
IWUL T 7689 QOG 7669 FPß 75FC FPS 75F6 FPM 7735 F»0 7793
FPAEX 763D FPMEX 7780 LSHIFT 7521 ZEROX 7439 XZEROO 7416 XZER02 7417
«ECIP 73E6 TXRX 73F3 CONST 6800 FPOBRC 6898 TAfo 68A9 ATN 69C3
OSZERO 6Δ46 NTLN 6Δ58 EXPN 6AC9 SIN 6*394 COS 6594 ASIN 6HF2
ACOS 68F7 PHi 6C50 PH? 6C80 °H3 6034 PH4 ftono LSFT8 6E47
SORT 6E65 MAD8 6F2C CMD8 53E4 IOUP X 6F52 LOGlO 6FA7 YUPX 6FE9
RTOP 7328 PTOR 7386 LNGTH 0020 OECPT 002C XPMT 00 2=1 CARRY 002A
NUMOVF 0029 FLTFLG 0028 EXP 0083 E?P2 00«A EXPNT 5CA3 EXPPL 5CA8
XPINC* 5CA0 FRMTl 5C8C RMO 7 5CE9 EXPL 5CE0 P Wi? 3 SCEc McGl 5CFC
NEG2 5000 FLT 5005 FLOAT 5009 FLTl 5D0A FL T2 50Or C^KOVF 502 0
FXO 502C DIGNTR 5036 FlifED 5046 NTROS 504 E LDOGT 505F STPOGT 506E
HLANKl 5075 MOPE 507A LOmnT 5D«0 CARRYl 509C Χ»«5«ϊ 50Al LOAOO 50 43
CHKRNO 5DB0 OCPT 5DCl NOOPTl 50C6 NOOPT 50C8 CÄWOY2 500S t*!0MMT 5008
LOAOl 500F CHKCR 50E4 M0T9Q 5E00 3GBUF 5ElO OVRFL 5Ξ13 FLT3 5E2B
P0WER3 5E2E FLTOVF 5E36 SGMMT 5EiO SGNPOS 5E4D CHKEEX 5E5Q EXPMO 5E6A
SGNXR 5E6E CHKSGN 5E7C NEGS3N 5E7E SGNXP 5E82 NOEXP 5E91; REGNO 5E9C
OPBLK 5EAl LDCOM 5EAA COMv a 5EA3 CO^END 5EÖA XEY 55AC LDPI 57E3
TOPOL 7339 NTOIVO 7347 GRan 736A RAD 736E AOOOFF 7371 STOANS 7377
YONLT 738C TORCT 7394 TXXRl 73B8 TXRXI 73BS YTOX 733E
7 0.9 808/1025
Page 122 CJ8P6 06/04/75 36:54.05
00215 5EC0 00
00218 00
00219 5ECO 00
00220 5ECl 00
00221 5EC2 00
00222 5EC3
00223 5EC4 14
00224 16
00225 5EC5 55
00226 5EC6 34
00227 5EC7 14
00228 5EC8
00229 5EC9 2C
00230 4A
00231 5ECA 4A
00232 5ECB 4A
0023.3 5ECC 3C
00234 5ECD
00235 5ECE 14
00236 7F
00237 5ECF 14
00238 5ED0 7F
00239 5EDl 14
00240 5E02
00241 ■5ED3- 12
00242 2A
00243 5ED4 7F
00244 5ED5 2A
00245 5ED6 24
0 0246 5ED7·
00247 5ED8 62
00248 64
00249 5ED9 08
00250 5EDA 13
00251 5EDB 23
00252 5EDC
00253 5EOD 50
00254 20
00255 5EDE 56
00256 '5EDF 49
00257 5EE0 36
00258 5EEl
00259 5EE2
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
OPT ORG LIST1MEM 514 PRINTER — STORED 25 15 —.—
» SPACE - $16 35 24 14
FCB S55 34 23 13
* DOT MATRICES FCB FOR $34 33 22 12
» 75 65 55 FCB 45 $14 32 21 U
e 74 64 54 FCB 44 31 ■— "
« 73 63 53 FCB 43 $2C
* 72 62 52 42 $4A
» 71 61 51 41 S4A
4 S4A
DOTS $3C
$0 ' $14
$0 $7F
$0 $14
SO $7F
SO $14
» EXCHANGE SIGN
FCB $12
FCB S2A
FCB S7F
FCB $2A
FCB $24
* LOWER CASE E
FCB $62
FCB $64
FCB $8
FCB $13 ·
FCB $23
* POUND SIGN
FCB $50
FCB $20
FCB $56
FCB S49
• - FC8 $36
« DOLLAR SIGN
FC8
FCB
FC8
FCS
FCB
• PERCENT SIGN
FCB
FCB
FC8
FCB
FCB
» AND U) SIGN
FCB "
FCB
FCB
FCB
■ FCB
709808/1025
Page 123 CJRPG 06/04/75 36:54.05
00272 5EE3 00 * APOSTROPHE $0 $0 » COMMA FCB so SO
00273 5EE4 00 F CB $0 S41 FCB SlC $0
00274 5EE5 07 FCB $7 $22 FC8 $22 $60
00275 5EE6 00 FCB . $0 SlC · FCB S41 $60
00276 5EE7 00 FCB SO so FCB $0 $0
00277 FC8 • LEFT PARENTHESIS * RIGHT PARENTHESIS ♦ MINUS SIGN
00278 5EE8 00 FCB FCB FCB $8 $2
00279 5EE9 41. FCB FCB FC8 S2A S4
00280 5EEA 22 FCB FCB FCB SlC S8
00281 5EE8 IC FCB FCB FCB S2A SlO
Ö02R2 5EEC 00 FCB FCB FCB $8 $20
00283 * ASTERISK
00284 5EEO 00 FCB - $8
00285 5EEE IC FCB S8
00286 5EEF 22 FCB S3E
00287 5EF0 41 FCB S8
00288 5EFl 00 FCB . sa
00 289 * PLUS SIGN
00290 5EF2 08 FC8 SO
00291 5EF3 2A ■ FCB SO
00292 5EF4 IC FCB $38
00293 5EF5 2A FCB 558
00296- 5EF6 08 FCB . $0
00295
00296 5EF7 08 $8
00297 5EF3 08 S8
00298 5EF9 3E S8
00299 SEFA 08 S3
00300 .5EFB 08 _. S8
00301 * OECIMAL POINT
00302 5EFC 00 FCB
00303 5EFD 00 FC8
003Oi 5EFE 38 FCB
00305 5EFF. 58 FCB
00306 5F00 00 FCB
00307 • SLASH (/)
00308 5FOl 08 FC8
00309 5F02 08 FCB
00310 5F03 08 FCB
00311 5F04 08 FCB
00312 5F05 08 FCB
00313
00314 5F06 00
00315 5F07 00
00316 5F08 60
00317 5F09 60
0 0 31R 5F0A 00
00319
00320 SFOB 02
00321 5F0C 04
00322 5F0O 08
00323 5F0E 10
00324 5F0F 20
00325
709808/1025
ORIGINAL IHSFSGTS
Page 124 CJ8PG 06/04/75 36:54.05
00327 5F10 3E
00328 5F11 45
00329 5F12 49
00330 5F.I3 51
00331 5F14 3E
00332
00333 5F15 00
00334 5F16 40
00335 5F17 7F-
00336 5F18 42
00337 5F19 00
00338
00339 5FlA 46
00340 5FlB 49
00341 5FlC 49
00342 5F10 51
0ß343 5FlE 62
00344
00345 5FlF 36
00346 5F20 49
0034t 5F21 49
00348 5F22 41
00349 5F23 22
00350
00.351 5F24 10
00352 5F25 7F
00353 5F26 12
00354 5F27 lu
00355 5F28 18
00356 "
00357 5F29 39
.00353 5F2A 45
00359 5F28 45
00360 5F2C 45
00361 5F2D 27
00362'
00363 5F2E 31
00364 5F2F 49
00365 5F30 49
00366 5F31 4A
00367 5F32 3C
00368
00369 5F33 03
00370 5F34 05
00371 5F35 09
00372 5F36 71
00373 5F37 01
00374
00375 5F38 36
00376 5F39 49
00377 5F3A 49
00378 5F3B 49
00379 5F3C 36
00380
» 0
♦ 1
ο 2
» 3
* 5
* 6
* 7
* 6
FCB S3E
FCB S45
FCB S49
FCB S51
FCB S3E
FC8 $0
FCB $40
FCB S7F
FCB S42
FCB SO
FC8 S46
FC8 S49
FCB S49
FCB S5!
FCB S62
FCB . S36
FCB £49
FC8 •349
FCB • S41
FC8 S22
FCB SlO
FCB S7F
FCB $12
FCB $14
FCB S18
FC8 S39
FCB $45
FC8 $45
FC8 ' $45
FCB S27
FCB $31
FC8 549
FC8 $49
FCB ■ S4A
FCB S3C
FCB $3
FCB $5
FCB S9
FCB S71
FC9 $1
FCB $36
FC8 S49
FC8 $49
FCB S49
FCB 536
709808/1025
OBIGiNAt INSPECTED
Page 125 CJHPG 06/04/75 36:54.05
00382 5F30 IE * 9 FCB * COLON FCB SlE S48 58 ♦ A FCB 36
003S3 5F3E 29 FCB FC8 S29 S54 S14 FCB S9
00384 5F3F 49 FCB FC9 S49 Ϊ62 $22 FCB S51
00385 5F40 49 FCB - FCB S49 341 S41 FC8 Sl
00386 5F41 06 FCB FCB $6 50 $0 -_----- - - FCB 56
00387 SIGN a QUESTION MAPK AT SIGN
00388 5F42 OO $0 SO FCB SlE
00389 5F43 OO SO 341 FCB S55 .
00390 5F44 36 S36 - 322 FCB S5D
00391 5F4=i 36 S36 £14 FCB S4I
00392 5F46 OO so · SS FC8 ' S3E
00393 » GREATER THAN OR EQUAL TO SIGN * COMMEPCIAL
00394 5F47 48 FCB 3 i ":· FCB S7E
0039S 5F48 54 FCB CIi- FCB S9
00396 SF49 62 FC8 314· FCB $9
00397 5F4A 41 FCB 314 FCB S9
00398 5F4B OO "CB S14 FCB S7E
00399 * LESS THAN ! * GREATER THAN SIGN
00400 5F4C QO FCB FCB
90401 5F4D 41 FCB FC8
00402 5F4E 22 "CB FCB
00403 5F4F 14 FCB- FCB
00404 SF 5 O 08 FGB FCB
ο EQUAL SIGM
BF3") FCB
S 04 ft 7 5FS2 \ h Fee
G S £ O 5 5F33 ΐί· FCB
5F54 14 PCS ■
Oß&iO 5F55 14 _ FC8
60411
00412 5F56 08
00413 5F57 14
00*14 5F58 22
00415 5F59 41
00416 5F5A OO " " "
00417
30418 5F5e 06
00419 5F5C 09
00420 5F50 51
00421 5F5E Ol
00422 5F5F 06
00423
00424 5F60 IE
00425 5F61 55
004?6 5F62 50
00427 5F63 41
00428 5F64 3E
00429
Ö0430 5F65 7E
00431 5F66 09
00432 5F67 09
00433 5F68 09
00434 5F69 7E
00435
709808/1025
1N8?£GT£D
263315
Page 126 CJRPG 06/04/75 36:54.05
00437 5F6A 36
00438 5F68 49
00439 5F6C 49
00440 5F6D 49
00441 5F6E' 7F
00442
00443 5F6F 22
00444 5F70 41
00445 5F71 41
00446 5F72 41
00447 5F73 3E
00448
00449 5F74 3E
00450 5F75 41
00451 5F76 41
00452 5F77 7F
00453 5F78 41
00454
00455 5F79 41
00456 5F7A 49
00457 5F78 49
00458 5F7C 49
00459 5F70. 7F
00460
00461 5F7E 01
00462 5F7F 09
00463 5F80 09
00464 5F81 09
00465 5F82 7 F
00466 _
00467 5F83 71
00468 5F84 51
00469 5F85 41
00470 5F86 41
00471 5F87 3E
00472
0O473 5F88 7F
00474 5F89 08
00475 5F8A 08
00476 5F83 08
00477 5F8C 7F
00478
00479 5F8D 00
00480 5F8E .41
00481 5F8F 7F
00482 5F90 41
0C433 5F91 00
00484
00485 5F92 3F
00486 5F93 40
00487 5F94 40
0048« 5F95 40
00489 5F96 20
00490
* C
* D
• ε
* G
* H
« I
FCB S36
FCB $49
FCB ' $49
FCB S49
FCB S7F
FCB S22
FCB £41
FCB $41
FCB $41
FC8 S3E
FCB S3E
FCB S41
FCB 541
FCB $7F
FCB S41
FCB $41
FCB $49
FCB $49
FCB $49
FCB S7F
FC8 $1
FC8 $9
FC8 59-
FCB $9
FCB S7F
FCB $71
FC8 551
FC8 S41
FCB 541
FCB S3E
FCB $7F
FCB S8
FCB $8
FC8 S8
FCB $7F
FCB $0
FC8 $41
FCB S7F
FC8 $41
FCB $0
FCB $3F
FCB $40
FCB $40
FCB $4 0
FC8 $20
709808/1025
ORIGINAL INSPECTED
Page 127 CJ8PG 06/04/75 36:54.05
00492 5F97 41
00493 5F98 22
00494 5F99 14
0 0495 5F9A OB
00496 5F9B 7F
00497
00498 5F9C 40
00499 5F90 40
oosno 5F9E 40
00501 5F9F 40
00502 5FA0 7F
00503
00504 5FAl 7F
005(15 5FA2 02
00506 5FA3 OC
00507 5FA4 02
00508 5FA5 7F
00509
00510 5FA6 7F
00511 5FA7 10
00512 5FAQ 08
00513 5FA9 04
00514 5FAA 7F
00515
00516 5FAB 3E
00517 5FAC 41
00518 5FA0 41
00519 5FAE 41
00520 SFAF 3E
00521
00522 5FB0 06
00523 5FBl 09
00524 5FB2 09
00525 5FB3 09
00526 5FfU 7F
00527
00528 5FB5 5E
00529 5F36 21
00530 5FB7 51
00531 5F88 41
00532 5FR9 3F
00533
00534 5F<U 46
00535 5F3R 29
00536 5FBC 1<J
00537 5F8D 09
00538 5FRE 7F
00539
00540 5FBF 32
0054t 5FC0 49
00542 5FCl 49
00543 5FC2 49
00544 5FC3 26
00545
• L
* M
* N
* O
■· P
* Q
* R
♦ S
FCB S41
FCB $22
FCB S14
FCB S8
FCB S7F
FCB $40
FCB S40
FCB S40
FCB S40
FC8 S7F
FCB 57F
FCB $2
FCB SC
FCB $2
FCB S7F
FC8 S7F
FCB $10
FC8 $8
FCB $4
FCB $7F
FCB S3E
FCB S41
FCB S41
FCB S41
FC8 $3E
FCB 56
Fca $9
FCB S9
FC8 $9
FC8 S7F
FCB S5E
FCB S21
FCB 3551
FCB S41
FCB S3E
FCB $46
FCB S29
FCB $19
FCB S9
FCB S7F
FCB S32
FCB S*9
FC8 S49
FC8 S49
FC8 S26
•709&Q8/1025
Page 128 CJBPG 06/04/75 36:54.05
00547 5FC4 5FCE - » T FCB $1
00548 5FC5 5FCF 01 FCB Sl
00549 5FC 6 5FD0 01 FCB S7F
00550 5FC7 SFDl 7F FCB Sl
00551 5FC8 5FD2 01 FCB Sl
00552 01
00553 5FC9 5FD3 . a U FCB S3F
00554 5FCA 5F0.4 3F FCB- S40
00555 5FCB 5FD5 40 FCB S40'
00556 5FCC 5F06 40 FCB S40
Θ0557 5FCD 5FD7 40 FCS SS3F
00553 3F
00559 5F08 ο ν FCB S7
Ö0S60 5FD9 07 FCB S18
00561 5FDA 18 FCB S60
00562 5FDB 60 FCB sia
90563 5FDC 18 FCB 27
00564 07
00565 5FDD FCB S7F
Ö0566 5FDE 7F FCB §20
00567 5FDF 20 FCB . S18
00568 5FE0 lfl FSB" S20
06569 5FEl 20 FCB S7F
Q057O 7F
00571 5FE2 •s χ FCB S63
00572 5FE3 63 FCB $14
00573 5FE4 14 FC8 $8
00574 5FE5 08 FCB $14
00575 5FE6 14 FCB $63
00576 63
00577 5FE7 β Y FCB $3
00578 5FE8 03 FCB $4
00579 5FE9 04 FCB S78
00580 5IfEA 78 FCB $4
005Si 5FEB 04 FCB 53
0Ό582 03"
00583 5FEC * Z FCB $43
00584 5FED 43 FCB $45
00585 5FEE 45 FC8 $49
00586 5FEF 49 FCB $51
005Β7 SFFO 51 FCB S61
00588 61 s DIVIDE SIGN
00589 sa
00590 08 58
00591 08 22A
00592 S8
00593 08 $8
00594 08 FCB
00595 FCB S8
00596 OS FCB SlC
00597 IC FCB S2A
00598 2A FCB SB
00599 08 * RIGHT ARROW S8
00600 08
FCB
FCB
FC8
FCB
FCB
709808/1025
L INSPECTED
5FFl 02 06/04/75 36:54.< FCB - 152 S2 S3C
5FF2 7C «'pi FCB 05 S7C $43
5FF3 04 FCB SA S42
Page- 129 C JBPG 5FF4 7C FCB *7C 543
00602 5FF5 08 FCB S8 S3C
00603 » UP ARROW S3C
00604 5FF6 04 FCB S4 S41
00605 5FF7 02 FCB S2 S40
00606 5FF3 7F ■ FCB S7F 541
00607 5FF9 02 FCB S2 ' S3C
00608 5FFA 04 FCB $4 S7C
00609 » DOWN ARROW S13
00610 5FFB 10 FC8 SlO «12
00611 5FFC 20 FCB S20 S13
00612 5FFO 7F FCB S7F S7C
00613 SFFE ?O FC8 S20 S7C
00614 5FFF IO FCB SlO S12
00615 «■ GM8H CHARPACTERS S13
00616 6000 3C FC8. S12
00617 6001 43 FCB S7C
00618 6002 42 FCB $49
00619 6003 43 FCS 549
00620 S004 3C FCB S7F
00621 6005 3C FCS S9
00622 6006 41 FCB S7E
0Π623 6007 40 FC8 S42
00624 6003 41 ■ FCB $41
00*325 6009 3C FC8 S49
006P6 600A 7C FCB S7E
00ft?7 600B- 13 FCB ■ S48
00628 600C 12 FC8
00629 60 00 13 FC3
00630 600E 7C FCB
00631 600F rc FCB
00*32 ■6010 12 FCB
00633 6011 13 FCB
00634 6012 12 FCB
00635 6013 7C FCB
00636 6014 49 FCB
00637 6015 49 FCB
00633 6016 7F FCB
0C639 6017 09 FCB
00640 601« 7E FCB
00641 6019 42 FCB
00642 601A 41 FCB
00643 601R 49 FCB
00644 601C 7E FCB-
00645 6010 48 FCB
00646
00647
00648
00649
00650
QU.5
U C . . I
AC.)
709808/1025
Page 130 CJ8PG 06/04/75 36:54.05
00652 601E 30 » SPANISH * ALPHA FCB CHAPACTERS
00653 601F 40 FCB FCB 530
00654 6020 45 • F-C8 FCB S40
00655 6021. 43 FCB FCB S45
00656 6022 30 FCB FCB S48
00657 6023 7D FCB S30
0065B 6024 21 FCB S7D
00659 6025 11" FCB S21
00660 6026 09 FCB SlI
00661 6027 70 FCB S9
00662 FCB $70
00663 6028 26
00664 6029 18 $26 '■
00665 602A 24 S18
00666 602B 24 $24
00667 602C 18 S24
00668 $18
UPSIDE DOWN ?
N ßAR
709808/102 5
OBlGiNAL INSPECTED
Page 131 CJBPG 06/04/75 36:54.05
00672 00673 00674 00675 00676 00677 00678 00679 00680 00681 00682 00683 00684 00685 00686 00687 00688 00689 00690 00691 00692 00693 00694 00695 00696 00697 00698 00699 00700 00701 00702 00703 00704 00705 00706 00707 00708 00709 0 0710 00711 00712 00713 00714 00715 00716 00717 00718 00719 00720 00721 00722 00723 00724 00725 00726
0016 PSTN EOU TP2
001ft STACK EQU TP4
002D ROW EQU T2
002C PASS EQU T3
002B OOT EQU T4
002A PULSE EQU T5
6020 602F-6031 6033 6034 6036 6038 603A 603R 601D 603F 6041 6043 6045 6046 6048 6048 604C
* DAVE UHLRICH AUGUST 14,1974 PRINTER REV G
* THIS ROUTINE TAKES THE ASCII DATA IN BUFF» β CONVERTS THEM TO THEIR DOT MATRIX
* EQUIVALENTS» AND PRINTS THEM ON THE
* PRINTER. IT DOES THE CONVERSION AND » PRINTING ON A ROW-BY-ROW BASIS» USING
β AN ADAPTIVE FOUR-PASS SYSTEM'. FOR *
* EXAMPLE, IT WILL PRINT ROW 1 OF
* CHARACTERS 1.5,9,U3 ON THE FIRST
* PASS» ROW 1 OF 2,6,10.5.14 ON THE SECONO,
* ETC. UNLESS THE NUMBER OF DOTS TO BE
* PRINTED IN ANY ONE PASS EXCEEDS
* TEN. IN- THAT CASE1 IT WILL PRINT THE
* ROW DATA TWO CHARACTERS AT A TIME
* FOR THAT PARTICULAR PASS ONLY. «
* PRINTER SELECT CODE=IlOl IN LOWER 4 RITS OF AOATA,
* PRINT SELECTS IN UPPER. 4 BITS OF AOATA:
* 1) #1=1110
* 2) «2=1101
* 3) #3=1011 » 4) #4=0111
* PRINTER LOAD CODE IS 101 IN BITS
* 3,4,S,5 OF BCTL. THE PRINTER SHIFT
» REGISTER IS CONNECTED TO 8IT O OF BOATA.
96
85
26 39
«6 OC
97 06 4F
97 C5
27
86 97 39
86 FO BD 6128 4F 97 IA
PRNTR LDA A BIT A BNE RTS
PRNTRl LDA A STA A LOA B CLR A STA A BIT B BEQ LOA A STA A RTS
PRNTR2 LDA A JSR CLR A STA A
TGL
#S60
PRNTRl
AOATA INPUT
ADATA "
«2
PRNTP2
«23
ERROR
«$FO PPRADV
STACK
LOAD TOGGLE SWITCH REG PRINT ON OR AUDIT? YES, PRINT
NO, RETURN
SEND OUT TOGGLE SWITCH ENABLE LOAD TOGGLE SWITCHES
CLEAR SELECT CODE OUT OF PAPER?
NO, PRINT
YES» LOAD ERROR COOE
PAPER ADVANCE SET SPH=O
709808/1025
ORIGINAL
Page 132 CJRPG 06/04/75 36:5*.05
00727 604E 4C 20 NXTROW - - INC A A ROW '
00728 604F 97 08 · - STA A Δ #8
00729 6051 86 2C LDA A PASS
00730 6053 97 STA A A
00731 6055 4F 2B CLR A DOT
00 732 6056 97 68 LOOOT STA A A «REAL
00733 6058 86 IB LDA' A B STACK+1
00734 605A 97 0067 STA A A #$67
00735 605C CE LOASC LOX A
00736 6Ö5F OF' OO SEI A X
00737 6060 A6 7F LDAtA B «$7F
0073B 6062 84 68 NOOOT AND A ÜJS68
00739 6064 81 04 CMP β GT68
. 00740 6066 22 20 BHI A 3S20
• 00741 6068 80 Ol GT68 SUB A OK
00742 606A 2A OK BPL 8
00743 606C 4F 5E CLR B W)OTSZS
00744 6060 C6 2A LDA PULSE
00745 606F 97 STA
'. 0Ο74β 6071 48 ASL. B
0074? 6072 48 OO ASL 8 SO
00748 6073 C9 2A ADC A PULSE
00749 6075 98 OO ADD A 00
00750 6077 C9 co ADC «SCO
00751 607Q 8R 19 AOD R TP3S
00752 6078 97 OO STA HQ
00753 6070 C9 18 ADC TP3
00754 607F 07 16 STA B PSTN
i - 00755 6081 DF 18 STX TP 3
1 00756 6083 DE F8 LDX #SF8 ·
" .00757 60H5 C6 LDA R
; 00758 6087 58 OO ASL X
00759 6038 Δ6 20 LOA A ROW
00760 60βΑ 94 04 AND A NODOT
• 00761 608C 27 BEQ A
'-- "00762 608Ε 5C 0028 INC DOT
00763 608F 7C INC A
00764 6092 oe EO INX OSEO
00765 6093 CS FO BIT A LDOOT
00766 60 9.5 26 IA BNE STACK
00767 6097 OE OO LOX A X
00768 6099 F7 001R STA B STACK+1
00769 609.3 7C 17 INC B PSTN+i
00770 609Ε 96 04 LDA *4
00771 60Α0 80 17 SUB PSTN+1
00772 60Δ2 97 16 STA PSTN
00773 6ΟΑ4 OE 58 LDX «$58
00774 60Α6 81 B6 CMP- LDASC
00775 60Α8 2C 28 BGE DOT
00776 60AA 96 LDA
00777 60AC 16 TAB
00778 60Α0 44 IF LSR «SI F
00779 60AE C4 OA ANO *10
00780 60R0 Cl 02 CMP LTlO
007*11 6082 2F BLE
SET ROW PTR=I SET PASS CTR
SET SPL=REAL
POINT PSTN PT" 4T LAST CHAR DISABLE KEY INTERRUPT LOAD ASCII CODE LOP OFF TOP BIT IS ASCII CODE > $6*5? •YES» TREAT IT AS A BLANK SUBTRACT OFF ASCII OFFSET IS ASCII CODE < S20? YES, TREAT IT AS A RLANK LOAD DOT VECTOR AODR HIGH
MULTIPLY BY 4 IF CARRY. INCR AOOR HIGH AOD TO MULTIPLY BY 5 IF CARRf9 INCP AOOR HIGH AOD TABLE AOOR LOW TO OFFSET STORE IT IM AOOR LOW IF CARRY, INCP ADDR HIGH STORE ADDRESS HIGH STORE POS PTR LOAD DOT MATRIX ADDR .
LOAO COLUMN CTR " Y -
DECR COLUMN CTR LOAD DOT COLUMN CHOOSE DOT OF ONE ROW IS IT A ZERO?
NO. LOAD ONE IN OOT ROW
INCR DOT CTR
POINT TO NEXT COLUMN DONE BUILDING OOT VECTOR?
NO, LOAD NEXT OOT LOAO INDEX WITH STACK PTR STORE OOT VECTOR ON STACK
INC«EMENT STACK PTR LOAD LOWER HALF »STN PTR OECR IT BY 4 STORE IT RACK LOAD INDEX WITH POS PTR IS POS PTP<S58? NO, CONVERT NEXT ASCII CHAR LOAD OOT CTR PUT IT IM ACCB ALSO SHIFT OOT FLAßS PIGHT ONF. BIT MASK OFF NO. OF DOTS NO. OF DOT? >10? NO, DO NOT SET OOT FLAG
7 0 9 8 0 8/1025 ORIGINAL SMSPEOTED
Page 133 CJ8PG 06/04/75 36:34.05
00782 6084 SB 80 LTlO AOD A #580 YES» SET 0OT FLAG
007H3 608* 94 FO ANO A #SF0 SAVF. DOT FLAGS AND
00734 6088 97 28 "STA A 0OT CLEAR 0OT CTR
00785 60SA 96 17 LOA A PSTN+i LOAO POS PTR
00786 60.BC 31 54 CMP A «554 ENO OF COMPLETE ROW?
00787 608E 27 OB BEO ENOROW YES. PAPER AOVANCE
00781 60CO 88 OF AOO A #15 AOO 15 TO POS PTR
00789 60C2 97 17 STA A PSTN-H STOPE 8ES OF NEXT PASS
00790 60C4 OE 16 LDX PSTN LOAD POS PTR INTO INOEX
00791 60C6 74 002C LSR PASS SHIFT PASS CTR
ΘΘ792 60C9 20 95 ENOROW SRA LOASC
C 0793 60C3 CE FE7F LOX »-385 7.5-4.42»W4IT TO FINISH OFF TIME
90794 60CE BO 6138 JSR LOOP
0079S 6001 36 FO LOA A #*F0 LOAO PRINTER SELECT COOE
00796 6003 97 OO Qi)TPT STA A AOATA TURN PRINTER ON
00 797 6005 C6 2C LOA 3 #«2C
007<?β 6007 07 03 STA 8 3CTL SNAflLE PRINTER SHIFT SEQ
G0799 6009 80 .30 SSR LOCHAR SEND OOTS OUT TO PRINTER
eesoo ciooa 80 39 BSR LDCHAR SEND OOTS OUT TO PRINTER
GoSOi 600D «6 28 LOA A QOT
0Ö3C2 SOOF SA OA SPL MOOVFL NOBE THAN 10 OOTS ON THIS PASS?
GC303 ίΐοεί 5F 6LS
fjoao* 60£2 36 F6 LOO LSA A s*-10 IfES* SET ZERO CTR»-10
QOSOS 60E4 07 02 STA R 8DATA SHIFT O INTO PRINTER REG
GQBOi) 60E6 4C INC A "NCP ZERO CTR
00907 6057 26 FB 3NE LOO 10 ZEROES LOADED?
ooao* 60E9 80 54 NOOVFt BSR PRINT YES« PRINT
GOSOS SCgB 80 as SSR LDCHA* SEND OOTS OUT TO PRINTER
00320 69SO 30 39 SSR LDCHAR SEND OOTS OUT 70 PRINTER
GGSIi ΘΒ 4S SSR PRINT PRINT
00312 96 3C LOA A *S3C
00813 30F3 97 33 STA A acTL TURM PRINTER SHIFT REG OFF
00814 60F5 7»? 0025 ASL DOT POINT TO NEXT 0OT FLAG
00815 60F8 96 2C LDA A PASS
00816 60FA 48 ASL A
00817 60F3 97 2C STA A PASS " '
00313 60F0 81 10 CMP A »16 PRINTED ALL POUR PASSES?
00819 60FF 26 04 BNE OUTPT NO, PRINT NEXT PASS
00820 6101 CE FF06 LOX #-250 WAIT 2 MSEC AFTER flUHN
00821 6104 BO 35 SSR LOOP
00832 6106 OE CLI ENABLE KEY INTERRUPT
00323 6107 AA FO LOA A #$F0
00824 6109 97 OO STA A AOATA TURN PRINTER OFF
00625 6109 78 0020 ASL POW SHIFT ROW PTR
00fl?6 610E 28 03 BMI DONE MINUS» PRINT COMPLETE-
00827 6110 7E 6051 DONE JMP NXTROW
00*28 6113 80 13 SSR PPRAOV PAPER AOVANCE
00829 6115 30 11 SSR PPRAOV PAPER ADVANCE
00830 6117 39 LOCHAR RTS
00831 6118 7A 001R OEC STACK+1 OECR STACK PTR
00832 611β OE IA LDX STACK LOAD I.NOEX WITH STACK PTR
00833 6110 E6 OO SNOOT LDA B X LOAD DOT VECTOR
00834 6UF 07 02 STA B 80ATA SEND DOT OUT TO PRINTER
00835 6121 OO SEC SET CARRY
00836 6122 56 ROR 8 ROTATE NEXT 0OT INTO POSITION
709808/1025
Page 134 CJBPG 06/04/75 36:54.05
00837 6123 Cl F8 16 PPRADV CMP ß 0$F8
00838 6125 26 F8 FF06 BNE SNDOT
00839 6127 39 75 RTS
00840 6128 OF 2A SEI
00841 6129 CE FC57 2C LDX #-937
00842 612C 80 OD BSR LOOP
00343 612E CE F380 LDX #-3187
00844 6131 C6 FO LDA B #SFO
00845 6133 07 OO STA 8 ADATA
00846 6135 8D- 04 BSR LOOP.
00847 6137 97 OO OO LOOP STA A ADATA
00848 6139 OE OO CLI
.00849 613A. 39 E6 RTS
00850 613B 08 FD PRINT INX
00851 613C 26 FO OO BNE LOOP
00852 613E 39 002A RTS
00853 613F DF 03 STX PSTN
00854 6141 CE 16 LDX a-250 '
00855 6144 86 LDA A #117
00H56 6146 97 OO STA A PULSE
00857 6148 96 07FF LDA A PASS
00858 614A 43 ED COM A
00859 6148 48 ASL- A
00860 614C 48 ASL A
00861 6140 48 ASL .A
00862 614E 48 ASL A
00863 614F 8A DUTY ORA A tf«D
00864 6151 97 STA A AOATA
00865 6153 8D 8SR- LOOP
00866 6155 C6 LDA B #SFD
00β67 6157 07 STA B ADATA
ΟΟΘ6β 6.159 7A DEC PULSE
00869 615C 26 MRPLS BNE MPPLS
0087Π 615E DE LDX PSTN
00871 61(SO 39 RTS
00872 6161 97 STA A ADATA
00873 6163 87 STA A S7FF
00874 6166 20 BRA DUTY
DONE WITH CHAR?
NO, SEND OUT ANOTHER DOT
DISABLE KEY INTERRUPT LOAO 7.5 MSEC OFF TIME
LOAD '25.5 MSEC ON COUNT TURN PRINTER ON
TURN PRINTER OFF ENABLE KEY INTERRUPT
STORE PSTN PTR LOAD 2.0 MSEC BURN.COUNT
SET PULSE CTR LOAD PASS CTR COMPLEMENT IT
OR WITH PRINTER SELECT COOE START PRINT HOLD PRINT FOR 2.0 MSEC
TURN OFF PRINT PULSE HOLD PRIMT PULSE OFF 15 USEC PRINT COMPLETE?
YES» RELOAO PSTN PTR RETURN
TURN PRINT PULSE PACK ON HOLO PRINT PULSE ON FOR 15 USEC
0-87/-102
SNSPECTED
Page 135 CJBPG 06/04/75 36:54.05
END
SYMBOL TABLE
AOATA OOQO ACTL 0001 BDATA 0002 BCTL 0003 INPUT 0004 10IN 0005
ERROR 0006 TGL 0007 UFLG 0008 RSFLG -0009 EOM OOOA EOPM oooe
STKFLG OOOO RND οοοε DIGFLG OOOF W2 0010 .wi 0011 SFLG 0012
DCNTR 0013 TPl 0014 TPlS 0015 •TP2 0016 TP2S 0017 TP3 0018
TP3S 0019 TP4 OOIA TP4S 001B TP5 boic TP5S 0010 TP6 001E
TP6S 001F TP7 0020 TP7S 0021 T13 0022 T12 0023 TU 0024·
TlO 0025 T9 0026 T8 0027 T7 0028 T6 0029 T5 002A
T4 002B Τ3 002C T2 002D Tl 002E ISTK 002F ISTACK 0051
TA 0052 SPGM 0054 EXTPA 0056 BUFF 0058 PEAL 0068 IMAG 0070
ATI 007β ΑΤ2 0080 W 0088 XR 0090 YR 0098 ZR OOAO
TR 00A8 LSTX 0OB O BKWRT 0088 BKKC 003A S0L7 00C6 UPP 00C8
UIP OOCA ALPHA OOCC 101 OOCD 102 OOOO IT7 00D3 FLAG 00D5
TPOS 0006 FILE 00D7 AR 00D8 9R οοεο CR Q0E8 OR OOFO
ER OOFS SDBB OOBA MT 7E00 TERMN7 003O IMED 0040 PARCD OOCO
PAREX 0080 NTBL 0000 DOTS 5ECO PRTORV 602D FRMT' 5CA8 BLANK 5075
LDMSG 5780 ROLLD 55B2 ROLLU .57Fl PSD 550A TXL 55E9 STKUP 55EF
MAO 7498 CMP 74AA NOR 74D6 TXW 7424 TXXR 743R EXXR' 7452
ARSR 753β OVUNF 75B6 OVEPF 750D XRO 74OA XCiNINE 75C8 UNDRF 75Fl
IMULT 76B9 QOG 7669 FPA 75FC FPS 75F6 FPM. 7735 FPD 7793
FPAEX 763D FPMEX 7780 LSHIFT 7521 ZEROX 7439 XZEROO 7415. X7ER02 7417
RECIP 73E6 TXRX 73F3 CONST 6800 FP03RC 689B TAN 68A9 ATN 69C3
DSZERO 6A46 NTLN 6A58 EXPN 6AC9 SIN 6894· COS 6B9A ASIN 68F2
ACOS 68F7 PHl 6C5D PH2 6C8D PH3 6034 PH4 6DD0 LSFT8 6E47
SORT 6E65 ΜΑ08 6F2C CMP8 53E4 IOUPX 6F52 LOGlO 6FA7 YUPX 6FE9
RTOP" 7328 PTOR 7386 PSTN 0016 STACK O O 1A PQW 0020 PASS 002C
DOT , 0028 PULSE 002A PRNTP 6020 PRNTRl 6034 PDNTP2 ^O 46 NXTROW 6051
LOASC 6060 GT68 606C OK 6060 LDDOT 6087 NOOOT 6092 LTlO 60B6
ENOPOW 60CP OUTPT 6005 LOO 60E4 NOOVFL 60E9 DONE 6113 LDCHAR 6118
SNOOT 6UF . PPRADV 6128 LOOP 6138 PRINT 613F DUTY 6155 MPPLS 6161
709808/102 5
ORIGINAL
263315
Page 136 CJBP.G 06/04/75 36:54.05
00124 Ö02E » OPT EQU LISTtMEM
00127 0020 . * EQU
001.28 002C EQU
00129 0028 ♦ EQUATE TABLE EQU
00130 Ö02A * EQU
00131 O07A * EQU
00132 007B SAVE EQU Tl
00133 007C FLCTR EQU T2
00134 608A MASK E6U T3
00135 Q08D REWFLG EQU T4
Ö0136 00?8 KNWALL EQU TS '
00137 0026 MRK8OT EQU AT1+2
00138 0024 FNOCMD EQU AT 1+3
00139 0023 STACK EQU ΛΤΪ+4 '
0014© 0022 SVIMS EQU Vi+2
00141 0016 SaVSTK EQU V3+5 ■
$0142 00D5 SPADRS EQU 17
001^3 00O6 CFS2 EQU T9
00144 0007 AFSZ EQU TU
00145 4058 TYPE EQU ΤΪ2
00146 49CE CHivSM EQU T13
©0147 &B&8 8FPTR EQU TP2 '
00148 4840 FLAG EQU S05
00149 5CA8 . T^OS EQU S06
OQlSO 5D75 FILE EQU . S07
00151 57R0 SADRS EQU §4058
00152 4P.8C TSFR EQU S49CE
00153 55EF ÄDD7 EQU S4848
00154 740A SUB7 EQU S4840
00155 7406 . FRMT EQU S5CA8
00156 4EA4 BLANK EQU S5D75 .
00157 ftO2D LOMSG EQU S5790
00158 * 57Fl P. INRCO EQU S488C
00159 STKUP S55EF
00160 XRO 574OA
00161 NOR. S7406-
00162 OGTS <54EA4
00163 PRTORV S602D
00164 ROLLU S57F1
709808/1025
'D
Page 137 CJRPG 06/04/75 3.6:54.05
00166 00167 00168 00169 00170 00171 00172 00173 00174 00175 00176 00177 00178 00179 00180 00181 00132 00183 00184 00185 00186 00187 00188 001S9 00190 00191 0019? 00193 00194 00195 00196 00197 00198 00199 0 0 200 00201 00202 00203 00204 00205 00206 00207 00208 00209 00210 00211 00212 00213 00214 00215 00216 00217 0021S 00219 00220
6168 -
ORG
$6168
• CASSETTE INITIALIZATION AND EXIT ROUTINES.
6168 OF
6169 OF 6168 616C 6160 DF 6I6F 6171 2A
6173 4F
6174 6176 BD 6179 617A RO 6170 617F 4F 6180 6182 6184 6186 6188 618A. 6leC &18E 6190 6192 6194 8A 619ft 6198 9E 619A 6198 EE 6190 AO 619F 61A1 61A3 DE 61A5 8C 61A8 6UA D6 61AC CB 61AE 61R0 C4 61B2 Cl 6184 61*36 7E 61fl9 61BB gO 61RE 9E 61C0 61C2 61C4 OE 61C5
SETUP SEI
8A STX SVINS
TSX
INX
80 STX SAVSTK
03 LOA A BCTL
03 8PL CRTIN-
CLR A
06 STA A TPOS
6740 CRTIN JSR COT
TAB
672C JSR LIGHT
02 LDA A 80ATA CLR A
OF STA A DIGFLG
SB STA A REWFLG
2A STA- A KNWALL
7A STA A MPK80T
05 LDA A »5
20 STA A FLCTR
7B STA Δ FNOCMO
30 P.QA A a$3D
03 STA A BCTL 05 LDA A FLAG
02 " ORA A *2 05 STA A FLAG 80 LOS SAVSTK
DEX
OO LDX X
OO ' JSR' X"
OE ERRMSG CMP A «14
16 BNE STERR
8A LDX SVINS
6398 CPX «VERIFY
OF BEQ STERP -
05 LOA R FLAG
20 400 8 *520
05 STA Β FLAG 60 AND B «560 60 CMP B #$60
03 BEQ STEPR 67Pl JMP OVER
06 STERR STA A ERROR 66D3 JSR STOP RO TRNOFF LDS SAVSTK 3C LOA A #53C 03 STA A PCTL
CLI
05 LDA B FLAG
DISABLE KEY INTERRUPT SAVE INSTR. STARTING AOORESS
SAVE STACK POINTER CHECK IF CARTRIDGE HAS BEEN OUT
IPOS=LOST
CHECK IF CARTRIDGE IS STILL OUT
TAPE SPOOLED OFF? SESET EOT h COT INTERRUPT 8IJ
CLEAR DIGIT ENTRY FLAG
SET FILE CTR=5 SET FIND COMMftND FLAG
ENABLE EOT ί. COT INTERRUPT SET CASSETTE OP FLAG
SET INDEX TO "ETURN ADDRESS OO INSTRUCTION ' " " ' "~." CHECKSUM ERROR?
LOAD AOnRESS OF INSTR JUST ExECUTEO
CHECKSUM ERROD ON VcRIFY? YES» DON'T TRY AGAIN
INCREMENT TRY CTR
MASK OFF TRY CTR FAILED THRFE TIMES? YES. PRINT EOROR NO» TRY AGAIN
MAKE SURE TAPE IS STOPPED RESET STACK POINTER
DISABLE EOT K COT INTERRUPT ENABLE KEY INTERRUPT LOAD CASSETTE OP FLAG
7 0 9808/1025
Page 138 CJBPG 06/04/75 36:54.05
002?! 61C7 C4 90
00222 61C9 07 DS
00223 61CH 39
00225 61CC E6 00 ' T03IN
00226 61CE 5C
00227 61CF 2E 04
00228 6101 86 06 ERR6
00229 6103 20 CA
00230 6105 Cl 05 NOOK
00231 6107 2C F8
00232 6109 7E 49CE
ANO B «S9D CLEAR IT
STA B FLAG RESTORE IT
RTS
LDA B X LOAD EXPNT
INC B INCR IT
BGT NOOK IS IT > 0?
LOA A #6 ILLEGAL ARGUMENT
SRA ERRMSG
CMP B #5 IS IT < 5?
BGE ERR6 NO, EOROR ■
JMP TSFR ' YES» CONVERT NO. TO 8INARY
709808/1025
ORIGINAL INSPECTED
Page 139 CJBPG 06/04/75 36:54.05
00234 00335 00236 00237 00238 00239 00240 00241 00242 00243 00244 00245 00246 00247 0024P 00249 00250 00251 00252 00253 00254 00255 00256 00257 00258 00259 00260 002M 00262 00263 00264 0 0?f.5 00266 00267 00268 00269 00270 00271 00272 00273 00274 00275 00276 00277 00278 00279 002«0 00281 00282 002S3 00234 00285 00236 00287 00288
THIS ROUTINE MARKS THE NUMBER OF FTLES CONTAINED IN THE Y-REGISTER. THE SIZE OF EACH FILE IS FOUND IN THE Z-REGISTER. THE STARTING FILE NUMBER IS IN THE X-REGISTER.
61DC 61DE 610F 61El 61E3 61E4 61E7 61E9 61E3 61ED 61EF 61Fl 61F3 61F6 61F3 61FA 61FC 61FE 6201 6203 6205 6206 620 620A 620C 620E 6210 6211 6213 6216 6219 621A 621C 621E 6220 6222 6224 6226 6228 622A 622C 622E 6231 6233 6235 6237
BD 8A MARK 54
25 86 39
CE 009β MRKOK 80 E3 96
26 E4
96
27 EO
97 8C CE 00AO 80 D4 DE 27 D5 OF IC 3D 6527 96 27 16
9R 8C
25 C7 Ol
26
96 D6 44
2=;
90 6553 FINOl
RD 65AA
4F 8EGIN
97 97 97 DE IC DF 96 IC ?6 06 Cl 22 CE 0050 DF IC
Co 19 AODSLK OB ID 24
8SR -
LSR
BCS
LDA A
RTS
LDX
BSR
LDA A
8NE
LDA A
SEO
STA A
LOX
BSR
LOX
BEQ
STX ·
JSR
LDA A
BEQ
TAB
ADD A
BCS
CMP P!
RNE
LDA A
LSR A-
BCS
JSR
JSR
CLR A
STA A
STA A
STA A
LOX
STX
LOA A
BNE
LDA B
CMP B
BHI
LOX
STX
LDA
AOD B
BCC
SETUP
MBKOK «21
frYR T08IN TP7 ERR6 TP7S ERR6 W+4 «ZP TOBIN •TP7 ER R 6 TP5
FILENO TP7S BEGIN
W+4
ERP6
FILE
FINDl
TPOS
BEGIN
FINO+2
CHECK
FNOCMO
CFSZ
CFSZ+1
TP5
AFSZ
TP5
NOSLK
TP5S
»80
ADDSLK
«80
TP5
#25
TP5S
NOMORE RECORO INHIBITED? NO» OKAY TO RECORD RECORD INHIBIT
SET INDEX TO YR ADDRESS CONVERT ITS CONTENTS TO BINARY
NO. OF FILES TO BE MARKEO>255?
■ NO. OF FILES TO BE SAVE NO. OF FILES TO BE MARKEO SET INDEX TO 7R ADDRESS CONVERT ITS CONTENTS TO PINARY
FILE SIZE=O. ILLEGAL ARGUMENT SAVE FILE SIZE IN TP5 STARTING FILE MO. TO BINARY LOAD NE'V FILE NUMBER IF =0, SET EVERYTHING U=> FOR MARK
NEW FILE+NO. OF FILES>255?
YESf ILLEGAL ARGUMENT NEW FILE=OLD FILE?
NO, FIND FILE YES. CHECK TAPE POSITION
- IN GAP? _ ..
YES, DON'T SEARCH*, BEGIN MARKING FIND FILE
CHECK IF RIGHT FILE
CLEAR FINO CMMQ FLAG SET CURR FILE SIZE=O SET ABS FILE SIZE FILE SIZE>255, NO SLACK
A3S FILE SIZE<80?
NO, ADO. SLACK YES, SET MARKED FILE SIZE TO SET NEW ABS FILE SIZE=BO
AOD 25 BYTES SLACK SIZE+SLACK>?55?
70 9 8 0 871Q 2 5
ORIGINAL INSPECTED
Page 140 CJ8PG 06/04/75 36:54.05
00289 6239 4C 10 NOMORE INC A TP5S β flOATA
00290 623A 5F IC CLR B TPS «37500
00291 623B 07 05 NOSLK STA B #5 WAIT
00292 6230 97 23 STA A TYPE «580
00293 623F C6 21 LDA B TP7S ADATA
00294 6241 07 05 STA 8 START PREMBL
00295 6243 96 7A LDA A ■ MRK8OT RCDHO
00296 6245 26 6742 BNE PEWIND+5 AFSZ
00297 6247 07 6668 START STA R PART FINl
00298 6249 7E 18 JMP MRKPRE TP5
00299 624C PD 67 FILEO JSR #567 ÖSFF
00300 624F 20 OO BRA AOATA RECORD
00301 6251 '86 OO NXTFL LDA A AOATA
00302 6253 97 STA A MRKMR
00303 6255 96 LDA A FILE
00304 6257 OE CLI W+4
00305 6258 02 OO NOP NXTFL
00306 6259 OF 927C SEI
00307 62SA 97 660E STA A AFSZ
00308 625C CE 80 LDX AFSZ+1
00309 625F BO OO JSR *6
00310 6262 88 6676 EOR A TYPE
00311 6264 97 667F MRKPRE STA" A NXTFL *
00312 6266 3D 24 JSR YR+1
00313 6269 BO 10 JSR FIN2
0031* 626C DE IC LDX RETGP ·
00315 626E 27 FF BEQ
00316 6270 OE 6638 MRKMR LOX
00317 6272 86 LDA A OS80
00318 6274 BO FA JSR MRKBOT
00319 6277 09 0007 DEX ADATA
00320 6'278 26 008C BNE »SDF
00321 627A 7C 03 . INC P.EWINO+1
00322 627D 7A DEC
00323 6280 ■ 26. 24 BNE
00324 6232 4F 25 CLR A
00325 6283 97 06 STA A
00326 6285 97 23 STA A
00?27 6287 86 C8 LDA A
0032« 6239 97 99 FINl STA A
00329 628B 20 05 BRA
00330 6280 96 66C9 LDA A
00331 628F 2R BMI
00332 6291 BO JSR
00333 6294 4F 80 FIN2 CLR A
00334 6295 39 7A RTS
00335 6296 «6 OO LOA A
00336 6298 97 OF STA A
00337 629A 96 6747 LDA A
00338 629C 84 .AND A
00339 629E 7E JMP
YESt ONLY ENOUGH SLACK TO =256
SET FILE TYPE=EMPTY LOAD NEW FILE NO.
IF NOT 0» REGIN MARKING IF=O.SET MARK BEG. OF TAPE FLAG
REWIND TAPE TO LOAO POINT MARK PART OF PREAMBLE
FORWARD SLOW WRITE OATA=O RECORO GAP
RESTART TAPE IF INTERRUPTED SET INOEX TO MARK 3" GAP '
YES» CAUSE TRANSITION fciRITE 1ST PREAMBLE RECORD HEAOING MARKER FILE?
YES. ALL DONE NO, LOAD INDEX WITH HO. OF BYTES SET ACCA WITH ALL ONES RECORD 3YTE OF ALL ONES OECR BYTE CTR DONE? NOi mark ANOTHER BYTE YES» INCR FILE NO.
DECR NO. OF FILES TO HE MARKEO DONE?...NO» MAPK NEXT FILE
SET ABS FILE SIZE=O TYPE=MARKEr FILE
NO. OF FILES<O. ERASE TO END OF TAPE
SET ERASE TO END OF TAPE FLAG LOAD PRESENT TAPE STATUS FORWARD FAST WRITE
709808/1.Q25 ORIGINAL INSPECTED
Page Hl CJBPG 06/04/75 36:54.05
00341 00342 00343 00344 00345 00346 00347 00348 00349 00350 00351 00352 00353 00354 00355 00356 00357 00358 00359 00360 00361 00362 00363 90364 00365 00366 00367 0 036« 00369 00370 00371 00372 00373 00374 00375 .00376 00377 00378 00379 0 0380 00381 00382 00383 00384 00385 003B6 00387 00388 00389 00390 00391 00392 00393 00394 00395
62Al 62A2 62Ä3 62A5 62A6 62A8 62AA 62AC 62A0 52AE 6280 6283 6284.
6286 6298 6289 6233 6280 628F 62Cl 62C3 62C5 62C7 62CA 62CC 62CE 62D0 6202 6204 6206 6208 620A
4C 4C
D6 54
24 86 97 39.. 4C
97 BO 6168 54
25 86 39
96 81
26 IE OE IA OF DE OF IE RD 4840 DE DF IC DE OF 86 06 C5
27 4C
THIS ROUTINE RECORDS INFORMATION IN THE CORE OF THE CALCULATOR INTO THE FILE POINTEO TO BY THE NUMBER IN THE X-PEGISTER. THERE ARE FOUR RECORD INSTRUCTIONS:
1} FORMAT RECORO
Z) RECOOD PROGRAM
3) RECORO DATA
4) STORE SIWARY
THE RECORD PROGRAM INSTRUCTION STORES THE
PROGRAM BEGINNING AT THE PRESENT PROGRAM
POSITION INTO THE FRE ON THE TAPE.
THE FORMAT RECORD INSTRUCTION DOES THE SAME
EXCEPT THAT THE PROGRAM is STORED AS
Ä SECURED PROGRAM. THE RECORD DATA
IMSTRUCTION USES THE STARTING REGISTER NUMBER IN
THE Y-REGISTER AND THE NUMBER OF REGISTERS IN THE
Z-REGISTER TO STORE DATA INTO A FILE ON THE
TAPE. THE STORE öINARY INSTRUCTION STORES A
SPECIAL PROGRAM ONTO THE TAPE.
FRCRD INC A
RCPRGM INC A
LOA P
LSR B
acc
LDA A STA A RTS
ST8IN INC λ RCOATA STA A JSR LSR 8CS LOA A RTS
PCOOK LDA A CMP A 3NE LDX STX LOX STX JSR LDX STX LOX STX .LDA A LOA B BIT BEO INC A
FLAG
STBIN
«22
ERROR
W SETUP
RCDOK
«1
NTS8N
TP4
TP7
SPGM
TP6
SU87
TP7
TP5
SPGM
TP7
»3
FLAG
«4
FINRCD FORMAT RECORO ENTRY RECORD PROGRAM ENTRY
SECURED MEMORY? NO. DO THE RECORO SECURED MEMORY .ERROR
STORE ßIMARY ENTRY POINT
RECOPO INHIBITED? NO. OKAY TO RECORO RECORD INHIBITED
STORE BINARY? NO, CONTINUE SAVE ENOING AOOR IN
LOAO START OF SPECIAL PRGM TP7-TP6=CFSZ
STARTING ADDRESS IN TP7 BINARY FILE TYPE
RECORD SPEC PRQM SECURED? NO, TYPE=3
YES, TYPE=4
709808/1025 ORIGINAL INSFiQTED
Page 142 CJBPG 06/04/75 36:54.05
00396 6208 20 6E N7S3N BRA A FINRCO
00397 620D CE 0000 LOX UQ
00398 62E0 DF IC STX TP5
00399 62E2 CE 0098 LOX #YR
00400 62E5 BO 61CC JSR TOBIN
00401 62E8 96 88 LDA W
00402 62EA 27 2A 6EO A ROATA
00403 62EC 7C 0020 INC TP7
00404 62EF OE 20 LOX TP7
00405 62Fl 8D 6489 JSR CHADRS
00406 62F4 2A 38 CONT BPL ILLARG
00407 62F6 A6 OO LDA A X
00408 62F8 08 INX
©0409 62F9 7C 0010 INC TP5S
00410 62FC 26 03 BNE CHKEND
00411 62FE 7C OOIC CHKENJD INC TP5
00412 6301 81 81 CMP A #SB1
0Ό413 6303 27 05 BEQ R ENDFND
00414 6305 8D 6489 JSR B CHADRS
00415 6308 2* EC ENDFND 8MI CONT
00416 630A OF IA STX A TP4
00417 630C 4F CLR
00418 6300 06 88 LOA A W
00419 630F Cl 03 CMP #3
00420 6311 26 38 BNE A FINRCO
00421 6313 4C INC
00422 6314 20 35 RDATA BRA FINRCO
0 0423 6316 96 20 LOA TP7
00424 6318 27 03 RNERR 8EO PNOK
00425 631A 86 18 LOA B #24
00V26 631C 39 RNOK RTS
00427 6310 HO 646E JSR A ENOADR
0042a 6320 CE OOAO LDX #ZR
Qd\2<3 6323 80 61CC JSR A TOBIN
00430 6326 06 20 LOA TP7
00431 6328 26 FO RNE A RNERR
00432 632A 96 21 LDA 8 TP7S
00433 632C 26 03 ILLARG 3NE A RGNTO
00434 632E 36 06 LOA 8 #6
6330 3') RGNTO RTS A
0U436 6331 48 ASL B
00437 6332 59 ROL A
00438 6333 49 ROL B
00439 6334 59 ROL A
00440 6335 49 ROL R
00441 6336 59 ROL
00442 6337 97 27 STA CFSZ+1
00443 6339 07 26 STA CFSZ
00444 6338 97 ID STA TP5S
00445 6330 D7 IC STA A TP5
00446 633F OE IA LDX TP4
00447 6341 80 6470 JSR STAOR
00448 6344 80 6489 JSR CHADRS
00449 6347 2R Dl BMI RNERR
00450 6349 36 02 LDA »2
SET INDEX TO YR ADDRESS CONVERT ITS CONTENTS TO BINARY
W=O « RECORD DATA GET SYSTEM ADDRESS PUT ADDR IN INDEX STARTING ADDR OUT OF RANGE?
YES. ILLEGAL ARGUMENT NO, LOAD CONTENTS OF MEMORY INCR ADDRESS INCR CURR FILE SIZE CARRY INTO HIGH 8? NO« CHECK FOR "END INCR CURR FILE SIZE HIGH "END"?
YES» END FOUND END OF MEMORY?
NO, CONTINUE IN LOOP SAVE ENDING AODR IN TP4
FORMAT RECORD?
SET TO SECURED PROGRAM TYPE
REG. NO. >255? ILLEGAL ADORESS
FIND ENDING ADDRESS Z-REG AODR INTO INDEX CONVERT ITS CONTENTS TO «UNARY
#REGS>255? YES. EO LOAD NQ. OF PEGS NO. OF REGS=O? YEStILLEGAL ARGUMENT
MULTIPLY NO* OF REGS 3Y
STORE NEW CURRENT FILE SIZE
RELOAD ENOING FINO STARTING ADDRESS REGISTER EXIST?
REG NOT EXIST, ERROR SET TO DATA TYPE
703808/1025
ORIGINAL INSPECTED
Page 143 CJBPG 06/04/75 36:54.05
00451 6348 .97 8C FINRCD STA A W+4
00452 6340 OE 20 LOX TP7
00453 634F OF 14 STX TPl
00454 6351 80 6551 JSR FIND
00455 6354 BO 65AA JSR CHECK
00456 6357 OE 24 LDX AFSZ
00457 6359 26 03 BNE NTMRKR
00458 6358 86 11 LDA A «17
00459 6350 39 RTS
00460 635E OE IC NTMRKR LDX TP5
00461 6360 OF' 26 STX CFSZ-
00462 6362 96 8C LOA A W+4
00463 6364 97 23 STA A TYPE
00464 6366 96 24 LDA A AFSZ
00465 6368 06 25 LDA B AFSZ+1
00466 636A DO 27 SUB B CFSZ+1
00467 636C 92 26 SBC A CFSZ
00468 636E •2A 03 BPL FLRGi
00469 6370 86 OF LDA A #15
00470 6372 39 RTS
00471 6373 RD 6668 FLRGE JSR . PART
00472 6376 80 667F JSR RCOHD
00473 6379 7F 0022 CLR CHKSM
00474 637C DE 14 LDX ' TPl
00475 637E A6 OO RCDMR LDA A X
O0476 6380 98 22 AOD A CHKSM
00477 6382 97 22 STA A CHKSM
00478 6384 A6 OO LDA A X
00479 6386 90 6633 JSR RECORD
00480 6389 08 INX
00481 638A 9C IA CPX TP4
00482 ,6 38C ?6 FO BNE RCOMR
00483 638E 96 22 LDA A CHKS'-1
00484 6390 RO 663Θ JSR PECORD
00485 6393 4F CLR A
00486 6394 39 RTS
STORE NEW FILE TYPE
STARTING ADORESS INTO TPl FIND FILE .
CHECK IF RIGHT ONE
MARKER FILE?
YES. WRONG FILE TYPE
SET NEW CURR FILE SIZE SET NEW FILE TYPE
ABS FILE SIZE-CURR FILE SIZE FILE LARGE ENOUGH? FILE TOO SMALL
WRITE PARTIAL PREAMRLE RECORD THE HEAOING CLEAR CHECKSUM STARTING ADDRESS INTO INDEX LOAD INFO OUT OF CORE AOD IT TO THE CHECKSUM RESTORE CHECKSUM RELOAD 8YTE RECORD BYTE
DONE RECORDING BOOY? ~ : NO, RECORD "ORE LOAO CHECKSU" INTO ACCA RECOPO CHECKSUM
709808/102 5 ORIGINAL
Page 144 CJBPG 06/04/75 36:54.05
00488 00489 00490 00491 00493 00493 00494 00495 00496 00497 0049« 00499 ,00500
•00501 00502 00503 00504 00505 00506 00507 00508 0 0509 00510 00511 00512 00513 00514 00515 00516 00517 .00513" 00519 00520 00521 00522 00523 00524 0052-5 00526 00527 00528 00529 00530 00531 00532 00533 00534 00535 00536 00537 00538 00539 00540 00541 '0054?
■Β·
* S'
THIS ROUTINE LOADS A FILE FPOM THE TAPE ANO EITHER LOADS IT INTO MEMORY OR COMPARES IT WITH WHAT IS IN MEMORY. THERE ARE FOUR INSTRUCTIONS HANDLED BY THIS ROUTINE: . "
Π LOAO
2) VERIFY
3).FORMAT LOAD
4) LOAD BINARY
ALL FOUR INSTRUCTIONS PERFORM THEIR OPERATIONON THE FILE POINTED TO 8Y THE NUMBER IN THE »-REGISTER. THE LOAD AND THE VERIFY INSTRUCTIONS PEQUIRE A STARTING ADDRESS OR STARTING REGISTER NUMBER WHICH IS FOUND IN THE Y-REGISTER. THE
FILE TYPE, WHICH IS DETERMINED WHILE THE TAPE IS RUNNING» TELLS THE ROUTINE WHETHER IT IS A LOAD DATA ; . OR A LOAD PROGRAM !VERIFY DATA OR VERIFY PROGRAM). THE FORMAT LOAD LOADS THE. CONTENTS OF THE FILE INTO MEMORY 8EGINNING AT THE ADDRESS IMMEDIATELY FOLLOWING THE FORMAT LOAD INSTRUCTION
AND» ONCE THE LOAD IS COMPLETE« EXECUTION OF THE NEW CODE IS BEGUN.· THE LOAD BINAPY INSTRUCTION LOADS A FILE OFF THE TAPE 4ND STORES IT IN MEMORY AS A SPECIAL PROGRAM.
6395 6396 6397 6398 639A 6390 63A0 63A3 63A6 63AA 63AB 63AD 63AF 63Bl 6384 63B6 63B« 638A 63BC 633E 63C0 63Cl 63C3 63C4 63C6 63C8 63CA 63CD
4C 4C 4C
97 BD 6163 BO 6551 BD 660E BD 65BE 27 BD 6566 20 F3 OE 27 CE 0098 D6
96
ei oi
2E Cl 27 4A 40
27 50
27 9A
97 BD 61CC 7C 0020
FLOAD L08IN LOAD VERIFY
CHKHD
FILEOK
NTSCRO
INC A
INC A
INC A
STA A
JSR
JSR
JSR
JSR
BEQ
JSR
8RA
LDX
BEO
LDX
LOA R
LDA A
CMP A
BGT
CMP B
BEQ
TST A
BEO
TST B
BEO
ORA A
STA A
JSR
INC
SETUP
FIND
RDHD
PIGHT
FILEOK
RETRY
CHKHD
CFSZ TYPERR
«YR
TYPE
LOAD AMO RUN EMTRY POINT LOAD BINARY ENTRY POINT LOAD ENTRY POINT VERIFY ENTRY POINT ~ "
FIND FILE
BEGIN READING THE FILE
CHECK IF IT IS RIGHT FILE
YES. CONTINUE
NO, FIND PIC1HT FILE CHECK HEAOPJfi AGAIN
WRONG FILE TYPE SET INDEX TO Y-REG ADDRESS DTFL · DATA FILE?
#2 LOAD BINARY?
TYPERR YES» WRONG FILE TYPE
PRGM FILE? NTSCPD YES. NOT SECURED
NTSCRO
FLAG
FLAG
TOBIN
TP7 VERIFY?
YES» DON'T SET SCRD PRGM BIT SET SECRD PRGM BIT CONVERT ITS STARTING ΛΟΟΡ TO BINARY ADJUST ADDRESS TO SYS ADQR
709808/1025
ORiQINAi. INSPECTED
Page 145 CJBPG 06/04/75 36:54.05
00543 63D0 DE 20 MEMOVF LDX A TP7
00544 63D2 OF IE STX TP6
00545 6304 80 OA ENDADD BSR ENDADD
00546 63D6 BD 6489 JSR CHADRS
00547 63D9 28 14 8MI ADROK
00548 6308 27 OF BEQ CHKO
00549 63D0 86 07 LDA -«7
00550 630F 39 RTS
00551 63E0 DE 26 CHKO LOX B CFSZ
00552 63E2 OF 20 STX TP7
00553 63E4 BD 4848 ADROK JSR ADD7
00554 63E7 DE 20 LDX 8 TP7
00555 63E9 DF IA STX TP 4
00556 63ES 39 RTS
00557 63EC 5D TST
00558 63ED 26 EE BNE B MEMOVF
00559 63EF DE IE LDX TP6
00560 63Fl 06 88 LOA W
00561 63F3 27 4E 8EQ STPTLD
00562 63F5 BD 40FF JSR S4DFF
00563 63F8 08 INX
00564 63F9 Cl 03 DTFL CMP A #3
00565 63FB 26 46 BNE STPTLD
00566 63FD 09 DEX
00567 63FE DF CA STX UIP
00568 6400 OS TYPERR SNX A
00569 6401 20 40 SRA STRTLD
00570 6403 81 02 NTDTFL CMP 8
00571 6405 26 06 3NE NTDTFL
00572 6407 U C8A 8
00573 6408 2 E 29 BGT DTFLl
0 0 574 6404 86 11 LDA #17
00575 640C 39 RTS
00576 6400 5D TST
00577 640E 27 19 BEQ SPEC
00578 6410 Cl 02 CMP A «2
00579 6412 26 F6 8NE A TYPER»
00580 6414 OE 23 LDX B SPADRS
00581 6416 flD 71 8SR B CHADRS
00582 6418 28 C3 8MT MEMOVF
ÖQ533 64 IA Df Ü4 STX SPGM
00584 64 IC 96 D5 NOTSEC LDA A FLAG
00585 64 IE 84 FB S=EC AND SJF8
00586 6420 Dft 23 LDA TYPE
00587 6422 Cl 04 CMP S4
00588 6424 26 Ol 8NE NOTSEC
00539 6426 IB A8A
00590 6427 97 D5 OTFLl STA FLAG
00591 6429 DE 54 LOX A SPGM
00592 6428 DF IE STX TP6
00593" 64?0 80 81 3SR ENDAOO
00594 642F DE 54 LOX SPG«
00595 6431 ?0 10 BRA STRTLD
00596 6433 80 61CC JSP TOBIN
00597 6436' 96 20 LDA TP7
STARTING ADDR INTO TP6
CHECK ADDRESS ADDRESS OUT OF RANGE?
MEMORY OVEPFLOW ERROR
NO. OF BYTES INTO TP7 STARTING ADDP + NO. OF BYTES
STORE ENDING ADDR INTO TP4
EQUAL TO EDPM?
NO, GREATER THAN; ERROR STARTING INTO INDEX
IF VERIFY» START VERIFYING CLEAR 1ST BYTE IF LOAD AT 2ND BYTE
LOAD & RUN? NO, START LOAD
'/ES, SET UIP TO PRGM ♦ S BEGINNING STARTING ADDR INTO ΪΝΟΕΧ AGAIN
OATA FILE?
NO. BINARY FILE LOAD BINARY S, DATA FILE?
NO» OKAY
YES, WRONG FILE TYPE
VERIFY BINARY?
YES, SET UP STARTING ANO ENDING AOORS LOAD RINARY?
NO, WRONG FILF TYPE LOAO STARTING ADDR OF S^G-SPEC PSGM TOO PIG?
YES, ERROR RESET SPGM TO NEW AOORESS
CLEAR SECURED BINARY
SECUPEO BINARY?
NO, LOAD
YES» SET SEC BIN BIT AGAIN!
STORE NEW FLAG
INTO TP6
CONVERT STAHTING REG NO TO BINARY
STARTING ADOR OF S FIND ENDING ADDRESS LOAO STARTING
7 0 9808/1025
i. IsWi
Page 146 CJ8PG 06/04/75 36:54.05
00598 6438 27 03 RNOERR BEQ A LT256
00599 643A •86 18 LOA «24
00600 643C 39 LT256 RTS
00601 6430 80 2F BSP ENDADR
00602 64 3F 80 48 BSP- CHADRS
00603 6441 28 F7 STRTLO BMI RNOERR
00604 6443 7F 0022 CLR CHKSM
00605 6446 RO 65F9 RD8YTE JSR SPCHl
00606 6449 BO 6501 JSR B READ
00607 644C 06 88 LDA W
00608 644E 26 07 BNE A LOBYTE
00609 6450 Al 00 CMP X
00610 6452 27 05 BEQ A CMPOK
00611 6454 86 10. LDA P16
00612 6456 39 LDBYTE RTS A
00613 6457 A7 00 CMPOK STA A X
00614 6459 22 ADD A CHKSM
00615 6458 97 22 STA CHKSM
00616 645D INX
00617 645E 9C IA CPX TP.4
00618 6460 26 E7 BNE RDBYTE
00619 6462 BD 6501 JSR A READ
0062Π 6465 91 22 CMP CHKSM
00621 6467 27 03 BEO A LDCMPL
00622 6469 86 OE LDA «14
00623 6468 39 LDCMPL RTS A
00624 646C 4F CLR
00625 6460 39 RTS
REG. NO.<256? ILLEGAL AODRESS
FIND ENDING ADORESS REGISTER EXIST?
RtG NOT EXIST« ERROR CLEAR CHECKSUM FINO END OF SECOND PREAMBLE READ BYTE
VERIFY?
YES» COMPARE IT WITH BYTE IN CORE EQUAL» NO ERROR VERIFY FAILED
LOAD! STORE BYTE INTO CORE ADD BYTE TO CHECKSUM RESTORE CHECKSUM INCR ADDRESS
NOT FINISHED» READ ANOTHER BYTE READ CHECKSUM CHECKSUMS EQUAL?
YES. LOAD OR VERIFY COMPLETE CHECKSUM ERROR
70 9ΊΒ 0 8 / 1 0 2 5
ORIGINAL INSPECTED
Page U7. CJ8PG 06/04/75 36:54.05
00627 646E 96 21 ENOAOR LDA A TP7S
00628 6470 80 4058 JSR SAORS
00629 6473 OB . INX
00630 6474 08 INX
00631 6475 08 INX
00632 6476 08 INX
00633 6477 08 INX
00634 6478 08 INX
00635 6479 08 INX
00636 647A 08' INX
00637 6478 DF IA STX TP 4
00*3ί3 6470 OF 20 STAOR STX TP7
00630 647F OE 26 LDX CFSZ
00640 64Rl OF IE STX TP6
00641 6483 BD 4840 JSR SUB7
00642 6486 DE 20 LOX TP7
00643 648« 39 RTS
00645 6489 OF 14 CHAORS STX TPl
00646 648B 06 15 LOA 3 TPlS
00647 6480 OO OC SUB R . EOPM+1
00648 648F 96 14 LDA A TPl
00*49 6491 92 OB S8C A EOPM
00650 6493 39 RTS
LOAD «EG NO.
FIND- ITS SYSTEM AOOPESS
ENDING ADOPESS INTO TP4 ENDING 4D0RESS INTO TP7
CURR FILE SIZE INTO TP6 ENDING AODR-CFSZ=STARTInG ADDR SET INDEX TO STARTING ADDRESS
709808/1025
ORIGINAL INSPECTED
Page 148 CJBPG 06/04/75 36:54.05
00652 00653 .00654 00655 00656 00657 00658 00659 00660 0066! 00662 00663 00664 •00665 00666 00667 00668 00669 00670 00671 00672 00673 0067*· 00675 00676 00677 00678 00679 0068Π 00681 00682 0068?
» THIS ROUTINE IDENTIFIES THE FILE POINTED
* TO 8Y THE NUMBER IN THE X-REGISTEP.
» WHEN THIS ROUTINE IS FINISHEO» THE STACK WILL
* CONTAIN:
* FILE TYPE IN T
« CURRENT FILE SIZE IN Z
* ABSOLUTE FILE SIZE IN Y ■* FILE NUMRER IN X
* THIS INFORMATION WILL ALSO QE PRINTED
* OUT ON THE PRINTER IF THE PRINT SWITCH IS ON.
00685 00686 00687 •00638 00689 00690 00691 00692 00693 00694 00695 00696 00697 00698 00699 00700 00701 00702 00703 00704 00705 00706
6494 6497 649A 6490 649F 64Δ1 64A3 64A6 64A8 64AA 64AC 64AE 6480 6482 64R5 6487 64R9 64f?C 64βΕ 64C0 64C2 64 C 64C6 64C8 64CA 64CC 64CF 6401 640* 6407 640A 6400 64OF 64El 64E2 64E5 64E7 64E8 64EB 64EE 64Fl
BO 6168 PO 6551 SD 65AA
96 84
97 CE 6518 DF 8D 2D
96 D5 2A 86
97 5F BO 483E 80 80 IE 7F 0022 OE 80 80 DE 80 22 80 OF DE .80 IC =0 5075 80 BD 57Fl 7E 613E =?D 5075 CE 0058 DF OE 4F ■
PO 57B0
OF
39
RO 488C
BO 55F4
RD 740A
OE 2D
IOENT JSR JSR JSR LDA A AND A STA A LDX STX BSR LDA A BPL LDA A STA A
TKA JSR BSR BSR CLR LOX 3SR BSR LDX 9SR BSR LDX 9SR JSR 3SR JSR JMP
HSSG JSR LOX STX LDX CLR A '- JSR STX RTS
PRINFO JSR JSR JSR LDX
SETUP
FIND
CHECK
FLAG
a$9D
FLAG
a IDTBL
M.SS6
FLAG
TKA
#520.
BUFF+7
BINRCD+2
EOLO
MSSG
CHKSM
CHKSM
PPINFO
MSSG
CFSZ
PRINFO "
MSSG
AFSZ
PRINFO
RLANK
IDPRNT
POLLU
TPNOFF
QLANK
«S58
BFPTR
LDMSG W FIND FILE-CHECK IF IT IS PIGHT FILE
RESET CASSETTE OP FLAG
LOAD STARTING ADDR OF IO TABLE
SAVE IT IM W
TRACK B?
YES, PUT MINUS SIGM On FILE NO.
NO» PRINT FILE NO.
CLEAR CHECKSUM WOPD " " "
LOAn FILE TYPE PRINT FILE TYPE
LOAD CUR=EMT FILE SIZE
PRIMT CURRENT FILE SIZE "
LOAD ABSOLUTE FILE SIZE PRINT ABSOLUTE FRE SIZE
PUT FILE NUMBER IN X BLANK OUT RUFFER
SET RUFF PTR TO 8EG OF BUFFER LOAD MESSAGE PTP
LOAD MESSAGE
STORE MESSAGE PTR
8INBCD CONVERT BINARY TO SCO STKUP+55 STACK UP
XRO ZERO OUT X-PEGISTER
T2
7 0 9808/1025 ORiGSNAL INSPECTED
Page 149 CJBPG 06/04/75 36:54.05
00707 64F3 .27 09 BEQ A EQLO
00708 64F5 OF 92 STX A XR+2
00709 64F7 86 03 LDA «3
00710 64F9 97 90 STA A XP
00711 64FR BO 7406 JSR A NOR
00712 64FE 96 90 EQLO LOA A XR
00713 6500 4C INC A
00714 6501 48 ASL
00715 6502 48 ASL
00716 6503 CE 0060 LDX A «8UFF+8
00717 6506 80 4EA4 JSR DGTS
00718 6509 96 09 IDPRNT LDA A PSFLG
00719 6508 28 OA BHI «+12
00720 650D 48 ASL A
00721 650E 2A 04 8PL »+6
00722 6510 96 12 LOA SFLG
00723 6512 27 03 BEQ *+5
00724 6514 7E 6020 JMP PRTOR1V
00725 6517 39 RTS
00727 6518 26 IDTBL FCB 526
00728 6519 29 FCB S29
0072*3 6514 2C FCB S2C
00730 6518 25 FCB 525
00731 651C 84 FCB SB4
00732 6510 39 FC8 S39
00733 651E 30 FC8 S30
00734 651F ?5 FCB $25
00735 6520 B5 FC8 SB5
00736 6521 33 FCB S33
00737 6522 25 FCB 525
0073a 6523 24 FC3 $24 -
00739 6524 AO FCB SAO
00740 6525 21 FCB 521
00741 6526 38 FCB S38
LOAD 4 BCD DIGITS INTO X
SET EXPNT TO 3 · NORMALIZE THE NUM8ER LOAD NEW EXPNT
LOAD DIGITS INTO BUFFER PROGRAM RUNNING?
PRINT IF RSFLG=OO?
NO PRINT IF RSFLG=Ol AND SFLG=O
FILE:
type:
USED MAX!
709808/1025 ORiGlMAL IMSFECTED
Page 150 cjbpg 06/04/75 36:54.05
00743 6527 CE 0090 CONVERTS THE (7ILE NUMBER TO A «XR THE CASSETTE TO THE
00744 652A RO 61CC ·» BINARY AND CHANGES * 1) POSITIVE FILE TOBIN
00745 6520 96 20 « PROPER TRACK • 2) NEGATIVE FILE- TP7 NC=TRACK A
00746 652F 27 03 » θ FNOK NO.=fRACK B
00747 6531 7E 6101 * THIS ROUTINE <y ERR6
.00748 6534 06 05 FILENO LDX A FLAG
00749 6536 17 JSR SET INDEX TO X-REG AOORESS
00750 6537 98 91 LDA A. XR+1 CONVERT ITS CONTENTS TO RIN/
00751 6539 2A 03 BEQ Δ SAME
00752 653B 4F JMP A FILE NO. > 255?
00753 653C 97 06 FNOK LDA TPOS YES, ILLE6AL ARGUMENT
00754 653E 96 91 TBA A XR+1
00755 6540 2A 06 EOR Pt TRACK4
00756 654? 86 12 BPL «S12 SAME TRACK?
00757 6544 CA 80 CLR A #580 YES. DON'T SET TPOS=LOST
00758 6546 20 04 STA B TRACK
00759 6548 36 16 SAME LDA R *S16 YES. TfOS=LOST
00760 654A C4 IF BPL A «S7F FILE NO. 0OSITIVE?
00761 654C 07 05 LDA FLAG YES» TRACK A
00762 654E 97 OO ORA ADATA NO, TRACK B SELECT
00763 6550 39 BRA SET TRACK β
007A4 TRACKA LDA
00765 . AND TRACK A SELECT COED
00766 TRACK STA SET TRACK A
00767 STA RESTORE FLAG
00768 RTS CHAN6E TRACKS
00769
00770
- 00771
0077?
709808/1025
ORIGINAL !MSFEGTED
-. 174 -
Page 151 CJ8PG 06/04/75 36:54.05
00774 00775 00776 00777 00778 00779 00780 00781 00782 007R3 00784 00785 00786 00 787 00783 00789 00790 00791 00792 00793 00794 00795 00796 00797 00798 00799 008O0 00801 00802 00803 00804 00805 00806 00807 00808 00809 00810 00811 00812 00813 00814 00315 00Ή6 00817
THIS SUBROUTINE PERFORMS A FAST FILE SEARCH TO THE FILE POINTED TO BY THE NUMBER IN THE X-REGISTER.
00819 00820
6551 8D 6553 9F 6555 6557 6559 6558 6550 BD
6560 BD 6563 7C 6566 SD 6569 656B 656D 656F BD 6572 6574 6576 BD 6579 6578 657C 657E 657F 7F 6532 9F 6584 6586 6588 9* 658Λ 658B 658D 7C 6590 6592 6594 7A 6597 6599 6593 «590 7C 65A0 65A2 65A4 RD 65A7 7E
04
7C
D6
03
OE
17
66CD
660E
002A
66D3
07
21
10
66D3
2A
03
66C9
06
OF
002A
7C
21
•11
06
03
00D7
17
OE
00D7
00
57
05
0007
C7
00
6698
6681
FIND
RETRY NTLOST
FAST
FNEX
DCFN
FLTX
COUNT
BSR
STS
LOA A.
AND A
BNE
LDA A
JSR
JSR
INC
JSR
LDA A
CMP A
BNE
JSR
LOA A
BEQ
JSR
.LDA A
LSR A
BCC
RTS
CLR
STS
CMP A
SLS
LDA A
LSR A
3CS
INC
LDA A
3SR
DEC
3RA
LDA A
BSR
IfJC
BRA
STA A
JSR
JMP
FILENO
STACK
TPOS
#3
NTLOST
*$17
RETGP+4
RDHD
KNWALL
STOP
FILE
TP7S
FNEX
STOP
KNWALL
FAST
RETGP
TPOS _
DCFN-3
KNWALL
STACK
TP7S
FLTX
TPOS
DCFN FILE
COUNT
FILE
NTLOST
«S57
COUNT
FILE
NTLOST
ADATA
OSRCH
GSPCH NO, BEGIN FILE SEA»C« REVERSE FAST READ DATA=O
FIND FIRST GAP IN REV DIR READ ITS HEADING SET KNOW ALL FLAG
FILE=XFILE?
NO, CHECK DIRECTION TO GO
IF KNOW ALL ABOUT HEADING. RETURN SLO RETURN TO GAP SLOW
TPOS=GAP?
NO, FAST PEWIND TO THE GAP
CLEAR KNOW ALL FLAG
FILE < XFILE?
NO, CHECK TAPE POSITION
TPOS=GAP?
YES, DON'T CHANGE FILE NO.
YES, INC FILE *iO.
REVERSE FAST PEAD OiTA=O DECP FILE NO.
FORWARD FAST READ DAIA=O
IMCR FILE NO.
START TAPE
DATA SEARCH
GAP SEARCH
709808/1025 OBfQLMAL IMSP2Ü7ED
Page 152 CJRPG 06/04/75 36:54.05
00 «2 2 65ΔΑ 7D 002A CHECK TST A KNWALL
00823 65AD '2h OE BNE A FIN
00fl?4' 65AF PD 660E JSR PDHD
00825 65R2 PO 66C9 JSR B RETGP
00826 6535 8D 07 BSR B RIGHT
00827 65B7 27 04 BEQ FIN
00*28 65B9 80 C4 BSR FNEX
00829 65BB 20 ED BRA CHECK
00830 65BD 39 FIN RTS A
0083? 65BE 96- 07 RIGHT LDA FILE .
0O833 65C0 91 21 CMP TP7S
00«34 65C2 26 04 BNE NTRFL
00835 65C4 5F CLR
00836 65C5 07 7B STA FNDCMO
00837 65C7 39 AGAIN RTS
00838 65C8 7A 002D NTRFL DEC FLCTR
00839 65CB 26 FA BNE AGAIN
00*4(1 65CD .86 12 LDA »18 '
00841 65CF 20 62 BRA ERR
KNOW ALL FLAG SET? YES» FINISHED NO. PEAD HEADING RETURN TO THE GAP RIGHT FILE? YES» RETURN NO, LOOK FOR RIGHT ONE CHECK NEW FILE
LOAD FILE NO.
IS IT THE RIGHT ONE?
NO, DECR FILE CHECK CTR SET EXIT FLAG CLEAR FIND CMMD FLAG
DEGR FILE CHECK CTR FAILED CHECK 5 TIMES? FILE NOT FOUND
7 09 808 / 10 2 5 ·' OhKMNAL INSPECTS)
Page 153 CJBPG 06/04/75 36:54.05
00843 008*4 00845 00846 00847 008*8 00849 00850 00«51 00852 00853 00854 00855 00856 00857 00858 00859 00860 00861 00362 00863 00864 00P65 00*66 00867 Q0P6B 00370 00871 00872 00873 00874 00875 00*76 00877 00878 00879 00*30 00881 00882
♦ READ SERVICE ROUTINES •β
6501 6503 65D5 6507 6509 650B 650D 65DE 650F 65El 65E2 65E4 65E6 65E7 65E8 65EA 65EC 65EE 65F0 65F3 65F5 65F6 f>5F9 65FB 65F0 65FF ■6601 6603 6604 6606 6608 6609 6608 6600
96 2A FC
96 C6. FO 86
97 SC 4F
36
CR 5A
96 2A F8 32 50 2C
98 2C 06 C6 FB 78 002C 24 E9 39
BO 6699 06 00 * 06 2A FC C6 96 5A
96 2A FB 50
2A F4 96 39
READ
TRANS TRANSl
READO
PAST SRCHl
NTONE NOTRN
LDA A 8PL LDA A LOA LDA A STA A CLR A PSH A AOD P OEC B LDA A 8PL PUL A TST B •8GE AOD A LOA LDA ASL BCC RTS JSR LDA P LOA B BPL LDA B LDA A DEC Β LDA A RPL TST B BPL LOA A RTS
ACTL LOOK FOR EMO OF 9TH 8IT
»-2 FOUND ITS END?
ADATA VES. RESET TRANSITION BIT
«-3 · YES» SET READ OFFSET
MASK SET MASX=I
SAVE BYTF. BEING REAO
S24 AOD THRESHOLD TO OFFSET (T=216 USEC:
OECR TIMING CTR
ACTL TRANSITION OCCURRED?
TRANSl NO« CONTINUE IN LOOP
RELOAD BYTE REING READ.
READO CTR>=0· PIT=O
MASK CT»<0» BIT=I
ADATA RESET TRANSITION BIT
a-5 SET READ OFFSET
MASK SHIFT MASK TO- NEXT BIT »STN
TRANS CARRY CLEA», SYTE NOT FIMISHEO
OSPCH GET PAST SWITCH-TO-1WRITE"GLITCH
AOATA RESET TRANSITION BIT
ACTL TRANSITION?
SPCH1+2
«22 SET PEO THRESHOLD
40ATA RESET TRANSITION
. OEC«3 TIMING CTR
ACTL TRANSITION?
NOTRN NO. CCNTIMiJE
SIT=O?
NTONE YES» COMT LOOKING FOR 1ST ONE
ADATA RESET TRANSITION PIT
709808/1025
Page 154 CJ3PG 06/04/75 36:54.05
- 177 -
00S84 660E «56 77 RDHD LOA A «577
00835 6610 97 oo· STA A ADATA
00886 6612 CE FFF9 LDX a-7
00887 6615 BD 6699 JSR DSRCH .
00888 6618 80 DC 8SR PAST
00.889 661A 80 35 SSR READ
00890 661C 97 89 STA A -W+l
00891 661E ■57 22 STA A CHKSM
00892 6620 50 AF RORST 8SR READ
00893 6622 A7 2A STA A S2AfX
00894 6624 98 22 ADD A CHKSM
008Q5 6626 97 22 STA A CHKSM
00896 6628 08 INX
00897 6629 26 F5 BNE RDRST
00398 662B SD A4 3SR READ
00899 6620 91 22 CMP A CHKSM
00900 662F 27 05 BEQ HDRED
00901 6631 36 OE LDA A #14
00902 6633 7E 619F ERf? JMP ERRMSG
00903 6636 96 89 HDRED LDA A W+l
00904 663a 97 07 STA A FILE
00905 663A 39 RTS
FORWARD SLOW REAH DATA=O START TAPE
SET INDEX TO HEADING TEMP OFFSET DATA SEARCH
FIND END OF 1ST PREAMBLE READ FILE NO.
SAVE IT UNTIL HEADING IS »EAD CORRECT INITIALIZE CHECKSUM READ NEXT BYTE OF HEADING STORE IT IN TE^PS ADD IT TO CHECKSUM RESTORE CHECKSUM
NO, REAO ANOTHER BYTE YES. READ CHECKSUM CHECKSUMS EQUAL? YES» HEADING READ CHECKSUM ERROR
STORE NEW FILE NO. IN FILE
709808/1025
OBSQIMAL INSPECT!
Page 155 CJBPG 06/04/75 36:54.05
00907 00908 00909 00910 00911 00912 00913 00914 00915 00916 00917 00918 00919 00920 00921 00922 00923 00924 00925 00926 00927 00928 00929 00930 00^31 0093? 00933 00934 00936 00937 00938 00939 00940 00941 00942 00943 00944 00945 00946 00947
* RECORD SERVICE ROUTINES,
663R 663D 663E 6640 6642 6644 6646 6648 6643 664E 6650 6652 6654 6656 6657 6659 665B 665D 665F 6660 6662 6665 6667 6668 666A 666C" 666E 6670 6672 6674 6676 6677 t>679 6679 667D
C6 E2 5C
26 FD D6 C8 D7 C6 FA 7F 002C 7C 002C CB 95 2C
27 CR 5A
?6 FD
06 C8
07 02
C6 FA 78 002C 24 E7 39
DE DF R6 97 3D 96' 97 4F
BD C2 86 C6 F5 20 C9
RECORD LDA B INC B BNE LDA P EOR STA R LDA B
N09TH CLR INC
BYTE ' AOD R BIT A BEQ ADO B
BIT DEC B BNE LDA EOR B STA B NOP LDA B ASL BCC RTS
PART LDX STX LDA A STA A BSR LDA A STA A
PREMBL CLR A BSR LDA A LDA B BRA
«-30
ADATA ADATA
MASK
MASK
«18
MASK
BIT
«36 '
BIT AOATA 3580 ADATA
MASK BYTE
SPGM
SPADRS
«$77
AOATA
DSRCH
«$67
ADATA
RECOPD #$80 «-11 MO9TH WAIT 130 USEC FOR 9TH 3IT
9TH 8IT SET WRITE OFFSET
SET MASK=I AOD ZERO COUNT (0=108 USECI IS BIT A ONE OR A ZERO?
ADD 0-1 DIFFERENCE (1=324 USECJ DECR TIMING CTR TIMIMG CTR=O?
YESt CHANGE DATA OUT 3IT -
SET WRITE OFFSET SHIFT MASK LEFT ONE done With ςγτε?
YES, RETURN
SAVE SPGM STARTING ADDRESS FORWARD SLOW PEAD OATA=O START TAPE OATA SEARCH FORWARD SLOW WRITE OATA=O
SET fiCCA TO ALL ZEPOES WRITE <? ZEROES LOAD 7 ZEROtS AND A ONE SET TIMING CTR RECORD RESET OF PREAMBLE
7098-08/1025 QRKSINAl SHSPSOTSO
- 179 Page 156 CJBPG 06/04/75 36:54.05
00949 667F 96 07 RCDHD LDA A FILE
00950 .6681 97 22 STA A CHKSM
00951 6683 80 86 8SR RECORO
00952 6685 CE FFF9 LDX #-7
00953 6688 A6 2A " MRHD LDA A S?A,X
00954 668A 9R 22 ADO A CHKSM
00955 668C 97 22 STA A CHKSM
00956 668E A6 2A LDA A S2A,X
00957 6690 8D A9 BSR RECORD
00958 6692 08. INX
00959 6693 26 F3 BNE MRHD
00960 6695 96 22 LDA A CHKSM
00961 6697 80 A2 BSR RECORD
00962 6699 20 DB BRA PREMBL
LOAD FILE NO.
INITIALIZE CHECKSUM RECORD FILE NO.
SET INDEX TO HEADING TEMP OFFSET LOAD OTHER HYTES IN HEADING ADD IT TO CHECKSUM RESTORE CHECKSUM RELOAD HEADING BYTE RECORD NEXT «YTE OF HEADING INCR HEADING TEMP PTR NO, DO NEXT BYTE YES 9 LOAD CHECKSUM RECORD CHECKSUM RECORD 2ND PREAMBLE
709808/1025
Page 157 CJ8PG 06/04/75 36:54.05
00964 6693 86 06 » SETARC-H ANO LOA A * SET NO. OF TRANSITIONS CTR.
00965 6690 D6 OO O LOA 8 TAPE MOVEMENT ROUTINES. RESET TRANSITION HlT
009*6 669F OE « CLI RESTART TAPE IF INTERRUPTED
00967 .66AO 02 OSRCH NOP TRANSITION?
00968 66Al OF BTOCC SEI #6 NOtCHECK AGAIN
00969 66A2 07 OO NOQIT STA ß - ADATA YESi OECR NO. OF TRANS CTR
00970 66A4 7D 0001 TST NOt LOOK'FOR ANOTHER
00971 66Δ7 F6 8PL
00972 66A9 4A DEC A TPOS =DATA
00973 66AA 26 Fl 8NE ADATA
00974 66AC 86 02 LDA A ACTL LOAD .35" 3 60 IPS
00975 66AE 97 06 STA A NOBIT
00976 661^O 39 RTS SEARCH SPEED?
00977 66Bl CE 0190 LDX BTOCC YES. GO TO LOOP
00978 66B4 96 OO LDA A «2 LOAD .75" « IO IPS
00979 6636 A5 20 . BIT A TPOS TRANSITION?
009Ö0 66*3 27 03 GSHCH BEQ CES. START ALL OVER
00981 66B4 CE 1388 LDX #400 NO» DECR CTR
00983 6630 D6 Ol LDa H AOATA FOUND GAP? NO. CONTINUE LOOPING
009«4 66RF 29 FO 3MI ' «520
00985 66Cl 09 OEX CNTLP TPOS=GAP
00986 66C2 26 F9 CNTLP BNE «5000
00987 66C«. 86 Ol LDA A ACTL ... - ... . —
00988 66C6 97 06 STA A GSRCH PEVERSE SLOW READ OATA=O
00.939 66C5 39 RTS START TADE
00990 66C9 «0 08" ISGAP BSR CNTLP OATA SEARCH
00991 66C3 86 37 LDA A «1 GAP SEARCH
00992 66CD 97 OC STA A TPOS
00993 66CF 80 CA RETGP esR STOP
0099a 66Dl 80 OE BSR - STOP " READ
00996 6603 96 OO LDA A #537 STOP TAPE
00997 6605 84 FO AND A ADATA WAIT FOR TAPE TO STOP '
00993 6607 10 ORA A DSRCH
0Q999 6609 97 OO STOP STA A GSRCH WAIT DONE?
01000 660=3 CE 3004 LDX ADATA
01001 660ε 09 DEX *5>F0
01002 66DF 26 FD 3NE #$10
01003 66El 39 RTS ADATA
01004 WAIT «12500
01005
01006 WAIT
01007
01003
709808/1025
- 181 Page 158 CJ8PG 06/04/75 36:54.05
01010 66E2 5F 28 LOOK CLR B VALID
01011 66E3 «0 23 NTINVT BSR FNDVTP
0101? 66E5 27 78 8EQ ATI
01013 66E7 96 03 LDA A «3
01014 66E9 81 OA CMP A BEG
01015 66EB 23 2F 8LS «52F
01016 66ED 81 03 CMP A PASS2
01017 66EF 22 BHI
01018 66Fl 5D 08 FOOT TST B END
01019 66F2 26 BNE
01020 66F4 5C EC PASS2 INC B NTINVT
01021 66F5 20 57 BRA »$57
01022 66F7 86 BEG LDA A
01023 66F9 5F 02 CLR B KWE
01024 66FA 20 17 BRA #$17
01025 66FC 86 2E END LDA A SAVE
01026 66FE 91 El KWE CMP A NTINVT
01027 6700 27 2E BEQ SAVE
01028 6702 97 CD .STA A STOP
01029 6704 8D 08 '8SR VALID
01030 6706 80 09 SSR NTINVT
01031 6708 26 04 BNE 84
01032 670A «6 06 FNOVTP LDA A TPOS
01033 670C 97 C3 STA A STOP
01034 670E 20 38 BRA COT
01036 6710 80 02 VALID BSR BDATA
01037 6712 96 Ό000 LOA A SO
01038 6714 CE 2E LDX SAVE
01039 6717 96 OO LDA A ADATA
01040 6719 97 STA A
01041 6718 08 78 NOHOLE INX ATI
01042 671C OF 4E20 STX #20000
01043 671E 8C 19 CPX VLDTP
01044 6721 27 03 8EO 9CTL
01045 6723 96 F 4 LDA A NOHOLE
010Δ.6 67?5 2A 00C8 BPL #200
01047 6727 CE P2 LDX WAIT
01043 672A 80 BSR
01049 672C 37 13 LIGHT PSH 8 «19
010?0 672D R6 15 LDA Δ «SI 5
01051 672F C6 OO LDA a AOATA
01052 6731 07 04 STA R INPUT
01053 6733 06 04 LDA B 24
0105* 6735 CS IF BIT B OFF
01055 6737 27 BEQ
01056 6739 33 03 PUL P RCTL
01057 673A 96 LOA A
0105R 673C 39 VLOTP RTS
FIRST PASS
LOOK FOR 2 1/2 FT OR HOLE 2 1/2 FTt FOUND VALID TAPE HOLE. CHECK DISTANCE
YES» BEGINNING OF TAPE <=1 1/2 FT?
NO, 2 FT
FIRST PASS?
NO. AT END OF TAPE YES, INCR PASS WORD TO 2ND PASS
FORWARD FAST READ DATA=O FIRST PASS
KNOW WHICH END
REVERSE FAST READ OATA=O SAME DIRECTION?
YES, CONT LOOKING FOR 2 1/2 FT NO, SWITCH DIRECTIONS AND CONT LOOKIN
BACK TAPE ACROSS HOLE HOLE HIT, CONTINUE IN NOOP
LOST BUT IN VALID TAPE
CHECK IF CARTRIDGE IS OUT RESET EOT S, COT INTERRUPT BIT
LOAD TAPE STATUS START TAPE
INCREMENT DISTANCE CT»
2 1/2 FT?
YES, CHECK IF IN VALID TAPE NO, HOLE BEEN HIT?
NO, CONTINUE IN LOOP
WAIT UNTIL PAST .023" HOLE SAVE Β ACCUM
ENP OF TAPE ERROR
TAPE SPOOLED OFF? YES, GIVE ERROR
NO, RELOAD ACC8
HOLE HIT?
70 9808/1025
INSPECTED
Page 159 cJRPG 06/04/75 36:54.05
- 182 -
01060 01061 01062 01063 0106* 01065 01066 01067 01069 01070 01071 01072 01073 01074 01075
6730 6740 6742 6744 6746 6747 67Δ-9 6748 6740
6751 6753 6754 67=56 6753
RD 6168 97 2B 9F 7C 86 17 · OE
«3700 20 FC 20 16 97 96 44
24 E6 96 7E 619F
REWIND JSR
STA A STS LDA A CLI . STA A ' BRA
STOPl BRA
COT LOA A STA A LDA A LSR A BCC LDA A
OFF JMP
SETUP PEwFLG STACK #517
ADATA *-2
STOP #515 ADATA · INPUT
VLDTP
#20
EPRMSG
SET REWIND FLAG REVERSE FAST READ DATA=O ENABLE COT CHECK
CARTRIDGE OUT? NO. IT IS IN CAPTRIDGE OUT ERPOR
0 9 8.08/1025 OH!f
Page 160 CJBPG 06/04/75 36:5*.05
01077 01078 01079' 01080 01081 01082 01083 01084 01085 01086 01087 01088 01089 01090 01091 01092 01093 01094 01095 01096 01097 01098 01099 01100 01101 01102 01103 01104 01105 01106 01107 01108 01109 01110 01111 01112 01113 01114 01115 01116 01117 01118 01119 01120 01121 01122 01123 01124 01125 011?6 01127 01128 01129 01130 01131
* THIS ROUTINE IS THE COT AND EOT INTERRUPT
* ROUTINE. IT HANDLES THE SITUATIONS WHERE THE
* CARTRIDGE IS REMOVED IN THE MIDDLE OF
* A CASSETTE ROUTINE AND WHERE THE TAPE HITS EITHER
* THE LOAD POINT OR EARLY WARNING HOLES
* ON THE TAPE.
675B 4F 675C OF 675D 675F 8Δ
6761
6762 6764 CE 6767 BD 676A 8D 676C C4 676E C3 6770 6772 6774 6776 6778 677A 677C 677E 4F 677F 6781 9E 6783 OE
6785 *F
6786 6E 6783 9E 678A 678C 6780 PA 678F 6701 6793 fJO 6796
6798 679A 4F
6799 679D 4C 679E 67A0 67A2 67A4 67A6 67A8 67AA 67AC 67AE BD
HOLE
00 37
00
61A8
66DE
CO
DF
40
2E
D7
3C
03
96
OC
CD
06 8D 8A
00 7C 2E
3C
06
05
66E2
E9
Bl
D7
D6 02 3D 03 7A IE 77 00 66DS
OVER
HIT
CLR A ADATA SO SEI-SEI WORKS!!!
SEI «$37
LDA A
ORA A ADATA READ SLOW
TAB «25000
STA A WAIT START TAPE
LDX LIGHT
JSR £$DF WAIT 2"
BSR «S40 TAPE SPOOLED OFF?
AND B SAVE FAST
EOR B STOPl OPPOSITE DIRECTION
STA B #$3C · SAVE TAPE STATUS
BSR BCTL STOP TAPE
LDA A VALID
STA A HIT DISABLE EOT & COT INTERRUPT
BSR STOPl BACK TAPE ACROSS HOLE
BNE HIT HOLE?
BSR TPOS
CLR A' SAVSTK NO. FALSE HOLE
STA A SVINS TPOS=LOST
LDS RESET STACK PTR
LDX X ' LOAD STARTING ADOR OF IMSTR
CLR A STACK
JMP SAVE DO INSTR OVER AGAIN
LDS
LDA A EOT RELOAD TAPE STATUS
ASL A TPOS FOPWARD DIRECTION?
BPL KNOWN NO, END OF TAPE
LDA A LOOK
BNE OVER POSITION'KNOWN?
JSR STOPl WHICH HOLE?
BRA DO REWIND AGAIN
BSR FILE
CLR A
STA A' TPOS FILE=O
INC A BDATA
STA A a$3D TPOS=GAP
LDA A RCTL RESET EOT % COT INTERRUPT P
LDA A MRKBOT
STA A MARKl ENABLE EOT S. COT INTE»RH»T
LDA A #t77
BNE AOATA HARK BEG OF TAPE?
LDA A WAIT-3 FORWARD SLOW READ DATA=O
STA Δ
JSR MOVE TAPE I"
709808/1025
<£\JiSl
Page 161 cjbpg 06/04/75 36:54.05
- 184 -
01132 67R1 80 98 BSR A STOPl
01133 67B3 96 LDA REWFLG
01134 67B5 26 OE BNE ISRWND
01135 6 78 7 6569 JMP A NTLOST
01136 678A 96 D7 ΕΡΔ5Ε LDA A FILE
01137 67BC 97 21 STA A TP7S
01138 67BE 86 3D LDA A 4$3D
01139 67C0 97 03 STA BCTL
01140 67C2 BD 6555 JSR FINO+4
01141 67C5 61BE ISRWND JMP TRNOFF
01142 67C8 6251 MARKl JMP FILEO
01143 67C8 BO 66Ε2 EOT JSR A LOOK
01144 67CE 96 LDA A SAVE
01145 67D0 48 ASL
01146 67Dl 2R AE BMI A OVER
01147 67D3 86 12 LDA B «18
01148 67D5 D6 LDA FNDCMD
01149 6707 26 05 BNE B FNDERR
01150 6709 06 VLDA MPKBOT
01151 670Β 29 DO BMI A ERASE
01152 6700 4C INC
01153 67DE 619F FNDERR JMP ERRMSG
CHECK REWIND FLAG REWIND» YOU ARE DONE NOT REWIND» CONTINUE WITH INSTRUCTION
MOVE TAPE TO GAP OF MARKER FILE
DETERMINE IF REALLY EW HOLE
FORWARD DIRECTION?
YES. BEG. OF TAPE; OO INSTR OVER FILE NOT FOUND
FIND?
ERASE TO END OF TPAE?
NO» END OF TAPE
709808/1025
ORIGINAL
■2653-151
Page 162 CJRPG 06/04/75 36:5*.05
.01155
01156
01157
01159
01160
01161
01162
01163
01165
01166
01167
01168
01169
01170
7FFA 7FFA 7FFC 7D4A 704A-7D4C 7D4E 7D<50 706A 7DAA 7D6C 7D6E 7D70 7D72
6758 6758
6398 6395 62ΔΕ 673D
62A2
610C 6*94 6397
ORG S7FFA
FD8 HOLE
FOB HOLE ·
0R6 S7D4A
FOB VERIFY
FOB FLOAO
FOB RCOATA
FOB REWIND
ORG S706A
FOB PCPRGM
FD8 FRCRO
FDB MARK
FDB IOENT
FDB LOAD
70 9808/102
ORlGSMAL INSPECTED
Page 163 cjflPG 06/04/75 36:54.05
01173
END
SYM80L TARLE ACTL 0001 BDATA 0002 8CTL 0003 '- INPUT 0004 IOIN 0005
ADATA 0000 TGL 0007 UFLG 0008 RSFLG 0009 EOM OOOA EOPM 0008
ERROR 0006 RND OOOE OIGFLG OOOF W2 0010 Wl 0011" SFLG 0012
STKFLG OOOD TPl 0014 TPlS 0015 TP2 0016 TP2S 0017 TP3 0013
DCNTR 0013 TP4 001A TP4S 0015 TPS OOIC TP5S 001D TP6 001E
TP3S 0019 TP7 0020 TP7S 0021 · T13 0022 T12 0023 TH 0024
T°6S 001F T9 0026 T8 0027 T7 0028 T6 0029 TS 002A
TlO 0025 T3 002C T2 002D Tl 002E ISTK 002F ISTACK 0051
T4 0028 SPGM 0054 EXTRA 0056 BUFF 0058 PEAL 0068 IMAG 0070
TA 0052 AT2 0080 W 0088 XR 0090 YR 0098 ZP OOAQ
.ATI 0073 LSTX 0080 BKWRT 0088 8KKC 003Δ SOL7 00C6 UPP 00C8
TR OOAfl SAVE 002E FLCTR 0020 MASK 002C REWFLG 0028 KNWALL 002A
UIP nOCA . FNDCMD 007B STACK 007C SVINS 008A SAVSTK 00*0 SPADRS 0023
MRKSOT 007A AFSZ 0024 TYPE 0023 CHKS" 0022 RFPTR 0016 FLAG 0005
CFSZ 0026 FILE 00D7 SADRS 4D58 TSFR 49CE ADD7 4348 SU87 4340
TPOS 00D6 BLANK 5D75 LOMSG 57BD 8IN8CD 488C STKUP 55EF XRO 7&0A
FRMT 5CA8 DGTS 4EA4 PRTDRV 6-020 ROLLU 57Fl SETUP 6168 CRTIN 6176
NOR " 7406 STERR 61B9 TRNOFF 6.1BE T08IN 61CC ERR6 5101 NOOK 6105
ERRMSG 619F MRKOK 61E4 FINDl 6213 BEGIN 6219 ADOSLK 6233 NO^1ORE 623B
MARK ' 61DC START 624C FILEO 6251 NXTFL 6255 MRKPRE 6269 MRKMR 6274
NOSLK 623F FIN2 6256 FRCRD 62Λ1 RC=RRM 62Λ2 STRIN 62A0 RCDATA 62AE
FINl 6280 NTS8N 62DD COMT 62F6 CHKEND 6301 EMOFND 630A RDATA 6316
PCDOK 6289 RNOK 631D ILLSRG 632E RGNTO 6331 FINPCO 6348 NTMPKR 635E
RNERR 631Δ RCDMR 637E FLOAD 6395 LOSIN 6396 LOAD 6397 VERIFY 6393
FLRGE 6373 FILEOK 63AD NTSCPD ft 3CA mEMOVF 6300 ENOADO 63EO CHKO 63EC
CHKHD 63A0 OTFL 6403 TY0ERP 640A NTOTFL 6400 NOTSEC 6427 SPEC 6429
ADROK- 63EF RNOERR 643A LT256 643D STRTLD 6443 PDFiYTE 6449 LDRYTt 6*57
DTFLl 6433 LOCMPL 646C ENDADP 646E STAOR 647D CHAQPS 64«9 IDEnT 6494
CMPOK 6459 MSSG 6407 PR IMFO A4EA EQLO 64FE IDPRNT 6509 ΙΟΤβί 6518
TKA 64B2 FNOK 6534 SAME 653E TRACKi 654« TPACK 654C FIN=O 6551
FILENO 6527 NTLOST 6569 FAST 6579 FNEX 6=57F OCFN 6590 FLTX 659<i
RETRY 6566 CHECK 65AA FIN 653D RIGHT 658E AGAIN 65C7 NTRFL 6 5CS
COUNT 65A2 TRANS 65DE TPANSl 65El READO 65EC PAST 65F6 SRCHl 65F9
READ 6501 NOTRN 6603 RDHD.-':·. 660E PORST 6620 ERR 6633 HO^ED •6036
NTOMt 65FF NO 9 TH 6648 BYTE 664E 8IT 6656 PART 6668 PRE^fiL 6676
RECORD 6638 MRHO 6668 DSRCH 669R 3T0CC 669D NOBIT 6fj9F GSPCH 6681
RCOHD 667F ISGAP 66C4 RETGP 66C9 STOP 66D3 WAIT 660E LOOK 66E2
CNTLP 668D FOOT 66Fl PASS2 66F4 BEG 66F7 END 66FC KWE 66FE
NTINVT 66E3 VALID 6710 NOHOLE 671B LIGHT 672C VLOTP 673C REVi IND 6730
FNDVTP 670A COT 6740 OFF 6758 HOLE 6758 OVER 6781 HIT 6758
STOPl 6748 ERASE 67BA ISRWND 67C5 MARKl 67C8 EOT 67C8 FnDERR 670E
KNOWN 6798
««»»ERROR 201 NAM EXIO
rtn ofli
216 U1* c. U I
NAM SIGMA
392 »»»»ERROR 201
582 NAM LINK
709808/1025
Pa'ge 164 CJBPG 06/04/75 36:54.05
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 ;00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 00044 00045 00046 00047 0004β 00049 00Λ50 000S1 00052 00053 00054 00055
NAM
CJ8P6
0000 0001
0001 0001
0002 0001
0003 0001
0004 0001
0005 0001
0006 0007 0008 0009 OOOA OOOB 0000 OOOE OOOF 0010 0011 0012 0013
0014 0015 0016 0017 0019 0019 001A 0013 OOIC 001D 001E 001F 0020 0021
0001 0001 0001 0001 0001 0002 0001 0001 0001 0001 0001 0001 0001
0001 0001 0001 0001 0001 0001 0001 0001
oooi oooi
0001 0001
oooi
0001
0022 0001
0023 0001
0024 0001
0025 0001
0026 0001
»THIS FILE. DEFINES THE BASE PAGE READ/WRITE «ALLOCATION FOR CJ. ADDRESSES ARE HEX 0 THRU FF
INCLUSIVE.
ADATA RMB
ACTL RMB
BDATA RMB
BCTL RMB
INPUT RMB
IOIN RMB
PERIPHERAL ACCESS REGISTER PERIPHERAL CONTROL REGISTER PERIPHERAL ACCESS REGISTER PERIPHERAL CONTROL REGISTER MAINFRAME INPUT PORT I/O ROM INPUT PORT
»FOLLOWING IS THE STATUS AREA. IT IS PERMANENT «READ/WRITE USED TO RETAIN THE STATUS OF THE MACHINE
ERROR RMB TGL RMB UFLG RMB RSFLG νRMB EOM 'RMB EOPM RMB STKFLG RMB RND RMB DIGFLG RMB W2 RMB Wl RMB SFLG RMB OCNTR RMB
1 1 1 1 1 2 1 1 1 1 1 1 1
«FOLLOWING IS THE »USED FOR TEMPORARY ERROR WORD (NON-ZERO IMPLIES ERROR) TOGGLE SWITCHES ARE RETAINED HERE USER FLAGS ARE KEPT HERE USER PRGM RUN/STOP FLAG END Ορ USER R/W WQRD (PAGE ADRS ONLY) END OF PROGRAM MEMORY (16 BIT PNTR) AUTO-STACK FLAG (NEG IMPLIES LIFT ENA DISPLAY ROUND SETTING DIGIT ENTRY FLAG - ÖCO ACC. FOR COMPILER BCD ACC. FOR COMPILER STEP FLAG FOR SINGLE STEP MO.DE DIGIT COUNTER FOR COMPILER
■BYTE TEMPORARY AREA STORAGE OF POINTERS» ETC.
ΤΡΓ
TPlS
TP2
TP2S
TP3
TP3S
TP4
TP4S
TP5
T°5S
T°6
TP7 TP7S
RMB RMB R Mo RMB RMB RMB RMB RMB RMB RMB RMB RMB RM8 RMH
«FOLLOWING IS THE 1-BYTE TEMPORARY
•USED FOR TEMPORAPY STORAGE OF FLAGS» ETC.
T13 T12 TIl TlO T9
RMfJ RMB RMß
70 9808/1025 ORIGINAL IMSFECTED
Page 165 CJ8PG 06/04/75 36:54.05
00 056 00057 0005? 00059 00060 00061 0006? 00063 00064 00065 00066 00067 00068 00069 00070 00071 00072 00073 00074 00075 O O 076 00077 00078 00079 00080 000«l 000«2 000B3 000*4 00085 000β6 00037 00058 00069 00090
0027 0023 0029 002A 0 OO 2C 0020 002E
0001 0001 0001 0001 0001 0001 0001 0001
RM8
OO0S2 00093 00094 00095 00096 00097 0009P. 00099 OOIOO oomi 00102 O01O3 00194 00105 00106 00107 00108 00109 00110
002F 0022 0051 0001
0052 0002 0054 O002 0056 0002
0058 0010
0068 0008
007O 0O08
"0078 0008
0030 0008
0038 0008
0090 0008
009« 0008
OOAO 0008
00A8 0008
0030 0008
RMB RMB RMB RMS
T7 T6 T5 T T3 T2 Tl β
»FOLLOWING IS THE INTERNAL SYSTEM -STACK. THE STACK •ALLOWS FOR 7 USER SUBROUTINES, 7 SYSTEM «SUBROUTINES« AND ONE INTERRUPT.
RM8
ISTK RMB ISTACK RMB
34 1
(STARTS HERE; BUILDS DOWN) «FOLLOWING ARE 3 PERMANENT POINTERS
TA RMB SPGM RMB EXTSA RMB ·
INSERT START PNTR/FLAG. SPECIAL P=?6M POINTER EXTRA POIMTEP FOR FUTURE ROMS
•FOLLOWING IS THE PRINTER/DISPLAY BUFFER. •(ALSO USED AS DIGIT STACK BY CORDIC)
BUFF RMB
»FOLLOWING ARE 4 ARITHMETIC TE*
»(ALSO USEO BY PRINTER DRIVER FOP DOTS)
REAL RMB. - 8 — _.
IMAG RM8
ATI RM8
AT2 RMB
»FOLLOWING IS THE WORKING REGISTER FOR THE »FLOATING POINT MATH SUBROUTINES
W RMB
»FOLLOWING ARE THE USER STACK REGISTERS
XR RM3 β
YR RMB
ZR PMB
TR PMB β
•FOLLOWING IS THE LAST X REGISTER
LSTX RMB
•FOLLOWING IS THE BUFFERED KEYBOARD KEYCOOE •STORAGE AREA. IT WILL 9UFFFR i? <£YS ♦LOCATION RKWRT MUST ALWAYS BE ZF.QO. IF •NON-ZERO. THE NEXT KEYCOOE WILL ALWAYS
IS
709808/1025
ORK
Page 166 CJBPQ 06/04/75 36:54.05
00111 00112 00113 00114 0P115 00116 00117 ooiia 00119 00120 00121 OO 122 00123 00124 00125 00.126 00127 00128 00129 00130 00131 00132 00133 00134 00135 00136 00137 00138 00139 00140 00141 00142 00143 00144 00145 00146 00147 00148 00149 00150 00151 00152 00153 00154 00155 00156 00157 ooise 00159 00160 00161 00162 00163 00164 00165
«BE IN LOCATION BKKC
00B8 OOBA
00C6 00C8 OOCA OOCC OOCD 0000 0003 0005 0006 0007
0002 OOOC
0002 0002 0002 0001 0003 0003 0 0001 0001
onoi
oooe OOEO 00E8 OOFO 00F8
0008 0008 0008 0008 0008
BKWRT-BKKC
RMB RM8
2 12 BUFFEREO. KEYBOARD W»ITE POINTER NEXT AVAILABLE KEYCOOE
»FOLLOWING ARE SOME MORE PERMANENT STORAGE «LOCATIONS AND POINTERS.
S0L7 RHB
UPP RMB
UIP RMB
ALPHA RMB
101 RMB
102 RMB IT7 RMB FLAG RMB TPOS RM8 FILE RM8
«FOLLOWING APE «ALPHA REGISTERS. «OUT OF USER P/W SINGLE OPERATION LOCATlQN USPR PROGRAM POINTER USER INSTRUCTION POINTER • MEmOPY ALPHA FLAG I/O CHANNEL 1 POINTER/FLAG I/O CHANNEL 2 POINTER/FLAG SYNTAX TA3LE POINTER CASSETTE OPERATION FLAG CASSETTE TAPE POSITION INDICATOR CASSETTE FILE INDICATOR
(A-E) OF THE 10 (A-J) USER
THE OTHER 5 (F-J) ARE TAKEN ON POWER ON.
AR RR CR OR ER
RMB RMB RMB
RMS RMa
8 8 8 8 8
«THIS CONCLUDES BASE PAGE READ/WRITE
«USER PROGRAM m£moRY FOLLOWS IMMEDIATELY HEREAFTER
»FOLLOWING ARE SOME EQUATES DEFINING STARTING «ADDRESSES OF COMMONLY USED SYSTEM SUBROUTINES
00RA SOBB EQU "•272
7E00 MT EQU 077000
003D TERMM7 EQU «975
0040 IMED EQU 3100
OOCO PARCD EQU »300
0080 PAREX EQU •5200
0000 NTRL EQU OO
sEcn DOTS EGU . S5EC0
6020 PRTORV EQU S602O
5CA8 FRMT . EQU S5CA8
5075 BLANK EOU S5D75
57B0 LONSG EOU S578D
55R2 ROLLD EQU S55B2
57Fl ROLLU EGU S57FI
550A PSO EQU S55DA
55E9 TXL EQU S55E9
55EF STKUP EQU 555EF
749B MAD EQU $7498
74AA CMP EQU S74AA
7406 NOR EQU $7406
709808/1025
JHSPHOTED
Page 167 CJBPG 06/04/75 36:54.05
00166 ' -7424 TXW EOU $7424
00167 7438 TXXR EOU 5743B
00168 7452 EXXR EOU $7452
00169 753B ARSR EQU 5753B
00170 7586 OVUNF EQU $7586
00171 75DD OVERF EQU S75DD
00172 74OA XRO EQU S740A.
00173 75C8 XRNINE EQU *75C8
00174 75Fl UNDRF EQU $75F1
00175 7689 IMULT EQU $7689
00176 7669 ODG EQU . S7669
00177 75FC FPA EQU S75FC
00178 . 75F6 FPS EQU $75F6
00179 7735 FPM EQU S7735
OOIRQ 7793 FPO EQU S7793
00181 763D FPAEX EQU $7630
001 «2 7780 FPMEX EQU $7780
00183 7521 LSHIFT EQU $7521'
00184 7489 ZEP-OX EQU S7489
00185 7416 XZEROO EQU "57416
00186 7417 XZER02 EQU " $7417
50187 73E6 RECIP EQU $73E6
00188 73F3 TXRX EQU S73F3
00189 (S^OO CONST EQU $6800
00190 6898 FPOSRC EGU •56898
001<U 68A9 TAN EQU $68A9
0019? 69C3 ATN EQU S69C3
00193 6A46 DSZERO EQU S6A46
- 00194 6AS8 NTLN EQU S6A58
00195 6AC9 E Χ» Ν EQU $6AC9
00196 6R94 SIN EQU T6B94
. 00197 - 6R9A COS EQU S6B9A
00198 6HF2 ASIN EQU S68F2
00199 6RF7 ACOS EQU S6F3F7
002(10 6C5D PHl EQU S6C5D
00201 6C8D PH2 EQU $6C8D
00202 6D34 PH3 EQU S6D34
00203 ADOO PH* EQU S6DO0
00204 6E47 LSFT8 EQU «6E47
00205 ' 6E65 SORT EQU $f£65
00206 *F2C MA08 EQU S6F2C ·
00207 S3E4 CMP8 EQU $F3E4
00208 6F52 IOUPX EOU S6F.52
002O9 6FA7 LOGlO EQU $6FA7
00210 6FE9 YUPX EQU 116Ρε9
00211 7328 RTOP EQU ' S7328
00212 7386 PTOR EQU ■57386
00213 OPT LIST,MEM
709808/1025
Page 168 CJRPG 06/04/75 36:54,05
00216 5300 CE· 1000 NAM EXIO [N ACCB (5
00217 or 24 ORG S5300
00218 Al OO #$1000
00219 27 20 • ROMID TIl
00220 C6 08 » A ο.χ
00221 og 24 IS PAS Rfc*3
00222 07 24 * ROM ADDRESS IN B #B
00223 DE 24 * CODE ] B TIl
00?24 5300 SC 4f>00 B TIl
00?25 5303 ?6 EF ROMID LDX TIl
00226 5305 O* 24 * I/O CODE STX #$4800
00227 5307 CO 08 RMl CMP RMl
00228 5309 D7 24 BEQ B TIl .
00229 530B DE 24 LDA R #8
00230 5300 Al Ol AOD B TIl
00231 530F 27 07 STA TIl -
0023? 5311 ^C 1000 LDX A ItX
O0233 5314 26 EF CPX RM3
00214 5316' C6 05 BNE 1 «siooo
00235 531Θ 39 RM2 LDA RM2
00236 531A sue B «5
00237 531C STA
0023R 531E LDX
00239 5320 CMP
00?4(ί 5322 BEQ
00?4i 5325 CPX
00?42 5327 BNE
00243 5329 ' LDA
00244 RM3 RTS
SES IN ACC4. ROUTINE RETURNS IX(ALSO IN TH) OR ERROR
FIRST ROM ADDRESS SET IT
CHECK PRIMARY COOc FOUND A MATCH.
BUMP ADDRESS TO NEXT ROM
LOAD NEXT POM ADDRESS LAST ONE CWECKED? NOT YET
BACK UP TO PREVIOUS ROM
LOAD ROM POINTER CHECK SECONDARY CODE FOUNO A MATCH ' BACK TO RO^ ONE?
NOT YET
LOAD ERROR CODE RETURN
70-8 8 0-8/10-2
ORIGINAL INSPECTED
Page 169 CJBPG
- 192 06/04/75 36:54.05
00246 532A DE CA ft IOFMT β I/O CONTROL LOAD INSTR POSTER.
00247 532C E6 01 B SECOND 3YTE OF INSTR
00248 532E C& 70 UIP MASK CALL CODE NUMBER ·
00249 5330 17 \
00250 5331 27 .ιε * «570 RUNNING PRINT
00251 5333 HO ce IOFMT MAINFRAME LOCATE RO" ADDRESS
00252 5335 26 46 PNPRT POM NOT FOUND
00253 5337 OE CA LDX 8 POMID' INSTR POINTER
00254 5339 E6 01 LOA B SPSl SECOND 8YTE
00255 533s? C4 OF AND B UIP MASK LETTER COOE
00256 5330 58 TBA 8 l.X TIMES TWO .
00257 533E D7 25 8EO #$F SET LOWER HALF OF POINTER
00258 5340 OE' 24 I0F1 BSR LOAD POINTEP
00?59 5342 EE 05 8NE A TlO LOAD ADDRESS OF ROUTINE
00260 5344 4F LDX TU
00261 534S AD OO LDA 5»X MAKE I/O ROM CALL
00262 5347 DE CA AND A
00263 5349· 96 06 ASL 0»X LOAD ERROR WORD
00264 534B 26 Ol STA UIP W6.S AM ERROR
00?6S 534D 08 LDX ERROP NO ERROR» RU^P INSTR POINTER
00266 534E DF CA LDX I0F2 SET INSTR POINTER
00?67 5350 39 I0F1A CLR RETURN
0026* S351 7E JSR UIP CALL PRINT
00269 LDX
00270 LDA $5218
00271 I0F2 8NE
00272 INX
00274 L8 RNPRT STX
RTS
JMP
709808/1025
5354 5 06/04/75 36:54. 04 STBIN EQU - 193 - S62AD JSR ■9 A FILE # B EXTRA C\J
5356 /S2AD D5 LOBIN EQU 05 S6396 LDA » FINOS A R LIMl
5358. 6396 26 » ANO #4 ΙΟΙ ■ * STORE TO TAPE CARTRIGE.
Page 170 CJ8PC 535A· 54 * SPST - SPSTS STA FLAG IOl + l AS A SECURED PROGARM
00276 535C IC SPSOA RTS LIMIT 102+1
00277 535E D5 PROGRAM LDA R SPGM LIMl
00279 5360 04 STOPES IT SPSl STA R SPSOA 102
00280 5362 17 * USER PARAMETERS: RTS FLAG SECURE 9IT
00281 5364 05 * XR .· A
00282 5366 ■a- SPS1-2 FINO LOWER LIMIT
00283 5367 OO * SPECIAL SPSTS LOA A FLAG NULL PROGRAM?
00284 53A9 86 FB » SPSTS SPST ORA YES
00285 536R 9A RSR O, X
00286 536C 80 IA CPX SPSO SECURED SPGM?
00287 536E 9C BEQ A YES
00288 536F 27 LOA TP4 SET NEW FLAG
00289 5372 DA BIT
00290 5374 CS 8WE A «STBIN FINO END OF SPGM
00291 5376 26 STA A O, X
00292 5378 97 SPSO DEX A FLAG
00P93 537A" 09 LDA tfSFB SET ENO+1 FOR CASSETTE
00294 5378 A6 BEQ R FLAG
00295 5370 27 INX- P
002q6 537F 08 STX «22 CALL ATAPE
00297 OF CLR ERROR
00298 4F 62A0 LDX CLEAR SECURE RIT
00299 CF OO
00300 AD 05 THE UPPER
00301 5380 96 FB * THE VALUE IN IX, SECURE MEMORY
00302 5382 84 05 » SET ERROR
00303 5384 97 LIMIT LDX
00304 5386 39 16 BNE
00305 5338 C6 06 LDX LIMIT OF MEMOPY ANO RETURNS
00306 •538A D7 LDA
00307 538C 39 CMP
00308 538E "" BLS S0FCIAL ROM THERE?
00^09 LDX YES
00310 LIMl RTS . LOAD SLOT A
00312 56 LOAD TEST PART
00313 OE OA I0K=I02? - - -
00314 26 CD YES. ΚΖΈΡ ΊΟ1
00315 DE CE NO, LOAO 102
00316 06 Dl
00317 Ol 02
00313 23 DO
00319 OE
00320 39
00321
00322
00 323
709808/102 5
ORIGINAL
Page 171 CJBPG 06/04/75 36:54.05
00325 53RF 80 EF- * ERASES PREVIOUS FILE S SPGM AND DATA REGISTERS - . _ FIMD LOWER LIMIT
00326 5391 DF 54 *
00327 5393 9C OB 8SR LIMIT SPECIAL KILL MEMORY LIMIT NULL PROGRAM?
00328 5395 27 F7 ■KILL STX SPGM USER PARAMETERS: öLOBIN YES
00329 5397 09 CPX EOPM XR - 0«X COLLAPSED ALL? LOAD STARTING ADDRESS
00330 5398 6F OO KILl BEO LIMl EPROR YES MAKE CALL
00331 539A 20 F7 DEX BSR SPLl
00332 CLR 0»X LDX KILL
00333 BRA KILl JSR SPGM
00334 LDA A EOPM
00336 * SPLD 8EQ
00337 « BSR
00338 « LOADS A LDX ' PROGRAM FROM CARTRIDGE.
00339 * STX
00340 539C SD Fl RTS SPECIAL
00341 539E CE 6396 *
00342 53Al AO OO SPCAL LIMIT ERASE MEMORY
00343 53Δ3 96 06 SPLD #24
00344 53Δ5 27 02 CALLS A SPGM CALL TAPE
00345 53A7 8D E5 SPSl CASSETT ERROR?
00346 53A9 OE 54 BSP SPGM NO
00347 53A3 OF 08 LDA R OtX
00348 53Δ0 39 CPX
00349 SPLl BEQ SET «REGS TO ZERO
00350 LDX
00351 JMP
00353 *
00354
00355 -53AE 80 OO PROGRAM
00356
AMAf -J
53R0 C6 IS *
00357 5382 9C 54
0035ft 53R4 ?7 C7 SPCAL
00359 5396. DE 54
00360 53fl«i' 6E OO
00361
00362
003*3
709808/1025
ORiGiMAL KS^GTfi
Page 172 CJBPG 06/04/75 36:54.05
00365 00366 00367' 00368 00369 00370 00371 00372 00 373 00374 00375 00376 00377 •00378 00379 00380
SPTAP
LOADS A SPGM THROUGH GIO POM FROM PiPER TAPE. TAPE FORMAT: ADDRESS»SIZE»DATA,CHECKSUM,SIZE.DATA...
00 383 00384 00385 00386 00387 00388 00389
53RA βη 53RC C6 53RE FO 3000 53Cl 26 53C3 07 53CS 80 37FD 53C8 20 D9 53CA C6 53CC 07 53CE 20 D9 7O40 7040 539C 7042 53AE 7044 5356 7046 S354 7048 53BA 7O7C 707C 53?A
SPTAP
BSR
LDA
SUB B
BNE
STA
JSR
BRA
LDA B
STA B
BRA
ORG
FOB
FOB
FDB
F03
FDB
ORG
FDB
KILL
«S20
S3000
SPTl
TP7+1
S37FD
SPLl-6
«5
EPROR
SPLl
$7040
SPLD
SPCAL
SPST
SPSTS
SPTAP
SJD7C
IOFMT ERASE DATA REGS
GIO ROM PRESENT?
NO
ZERO CHECKSUM GIO ROM JUMP CHECK FOR EPROR SET ERROR
709808/1025
ORIGINAL INSPECTED
Page 173 CJRPG 06/04/75 36:54.05
00392 7250 NAM t 2E EQU SIGMA ACCUMULATE ROUTINES ROUTINE IMPLEMENTS THE DOURLE VARR PARAMETERS: NUMBER - A •I+XP' OR Tl A VALUE OF 1 ANO ·Υ· INTO REGS ·Ι· [R STACK OPERATION
00393 ORG β $7250 SUMMATION OF ·χι NUMPER - A •J+XR« OR A VALUE OF JR
00394 4CB3 USMEM EQU 2D S4CB3 THIS USER RETURNED VALUES: A T2 R LAST DiVGE OF RAM
00395 55AC XEY < 2C S55AC XR I B T3 B STKUP REG J
00396 t 08 • YR J B 1 «8 A EOM SET FOR AUTO STACK
00397 ACCM 4CB3 B USMEM B •I-XR·
00398 ACCP 05 INC A XEYl •J-XR» *SF8 POINTER
00399 09 INC «9 STKFLG
00400 4CB3 STA USMEM T13 LOAD JR INTO XR
00401 CCR A XEY A T12 STACK RESULT
00402 STA A SET ·+· OR ·-· FLAG T13
00403 STA TXX POINTER TO IR
00404 LDA STKUP
00405 JSR PCL-ACC RETUPNEO VALUES: SET OTHER MACRO FLAGS «$F0 LOAO IR INTO XR
00406 BSR XR •I· PEG. INDICATOR T12
00407 7250 LOA YR STO +»- I T13
00 408 7251 4C JSR EXCHANGE XP ANO YR TXX
00409 725?.· 4C JMP JSR •J· REG. INDICATOR
0O410 7254 97 55AC XEYl LDA STO + ♦- J
OOMl 7255 5F -C OEC
0O412 7257 07 { LOA
00413 7259 Π7 C STA
00414 725R 86 t STA
00415 725E RO t STA
00416 7260 8D t LOX
00417 7262 86 t BSR
00418 7265 =50 V JSR
00419 7E LDA
00421 y STA
00422 LDX
00423 BRA
00424 >
00425
00426 55EF RACC
00Δ.27 7268 OA
00*28 7263 RO
00429 7260 96 F8
00430 726E 4A OD
00431 7270 C6 22
00432 7272 07 23
00433 7274 97 22
00434 7276 07 61
0 0435 727=5 DE 55EF
0043ft .727A 80 FO
00437 727D «0 23
00438 727F 86 22
00439 7281 97 56
00440 7283 OE
00441 20
709808/1025
.; ORIGINAL INSPECTED
~ 197 -
Page 174 CJRPQ 06/04/75 36:54.05
00443 . ♦
00444 ' . ♦ .00445 * 00.446 *
00447 *
00448 ·. 00449. * 0045Π «
00451 *
00452 ' ♦
00453 »'
00454 · *
00455 *
00456 ' · ·
00457 ·
00458 *
00459 7285 96 F9 MSOEV LDA A
00460 7287 .2A 05 BPL
00461 7289 86 06 LDA A 004-62 7288 97 06 STA A
00463 7280 39 RTS
00464 72SE RO 55EF JSR
00465 7291 CE 00E8 LOX
00466 7294 RD 45 8SR
00467 7296 CE 0078 LDX
00468 7299 BO 73F3 ' JSR
00469 729C CE 0OF8 LDX
00470 729F 80 3A BSR
00471 72Al CE 0078 LOX 0047? 72A4 BD 7793 JSR 00473 72A7 CE 0078 LDX 00*74 72AA 80 32 BSR
00475 72AC CE 00E8 LDX
00476 72AF 30 7735 JSR
00477 7232 CE OOFO LDX 0047R 72B5 BD 75F6 JSR 00479 72B8 CE 0080 LDX 00*80 72R8 80 21 BSR 0043-1 72BD CE 6838 LOX 00432 72CO 80 19 BSR
00483 72C2 CE 00F8 LDX
00484 72C5 3D 75F6 JSR
00485 72CR CE 0080 - LDX
00486 72CR RO 7793 JSR
00487 72CE »Ο 6Ε65 JSR
00488 7201 86 80 LDA A
00489 7203 97 OO STA A
00490 72D5 10 55EF JSR
00491 72D8 CE 0078 LDX
00492 72D8 7E 743B TXX JMP
00493 720E 7E 73F3 TXR JMP
MEAN - STANDARD OEVIATION
THIS ROUTINE CALCULATES THE MEAM -AND STANDARD OEVIATION GIVEN THE FOLLOWING ALPHA REGISTER VALUES:
CR - SUM txt
DP - SUM ιΧλ2»
ER - N (tfOF TERMS) RETURNED VALUES:
XR - MEAN
YR - STANDARD DEVIATION FORMULAS IMPLEMENTED:
MEAN = (SUM ·Χ·)/Ν
S.D. = SQRT(C(SUM «Xa2')-(SUM ·X ι)»(MEAN))/(N-I))
ER +
#6 ERROR
STKUP
TXX
PATl
TXRX
HER
TXX
#AT1
FPO
#AT1
TXR
&CR
FPM
«OR
FPS
«AT2
TXR
TXX
#ER
FPS
«AT2
FPD
SORT
PS80
STKFLG
STKUP
«ATI
TXXR
TXRX (+) NUMBER? YES
NO» SET ERROR STACK OPERATION
LOAD SUM «X·
COPY XR INTO TEMP. LOAD ·Ν· INTO XR DIVIDE »N» INTO SAVE THE MEAN
MEAN*SUM'X«
SUMιΧλ2 «-mcAN*SUMι X « SAVE PARTIAL RESULT LOAD A FLOATIMG
»Ni-1.0
S.O. SOUAREO FINISH S.D.
SET AUTO STACK LOAD MEAN INTO XR
709808/1025
ORIGINAL INSPECTED
- 198 Page 175 CJ3PG 06/04/75 36:54.05
00495 72El &C « SIGMA ROUTINES PARAMETERS * ER i - NEW »X» «ι «Χα2·, AND »Ν». JPER STX LOX T12 •SAVE REG POINTE» 0PER1+3 POINTER
00496 72E? 97 - NEV! 'X· - NEW SUM : EXECUTE ·+' OR '-» LDA 8RA A T13 FPA SAVE RESULT
00497 72Ε4 CE - CURRENT 5IGM INC - NEW SUM VALUE 8EO OPERl DO AOD T12
00498 72Ε7 ?O - CURRENT sIGP STA - NEW IN» SUM ·χι RELOAD «X« INTO XR JSR FPS TXR
00499 72Ε9 CE = CURRENT LDX SUM «Χλ2Ι BRA
00500 72EC ?0 ROUTINE IMPLEMENTS THE SINGLE VARS » RETURNED VALUES 8SR A "Ν« 'X · a2 75FC OPERl JSR
00501 72EE CE » SUMMATION OF «X * XR LDX A T13
23 ·
O0502 72Fl AO » THIS * USER * CR 8SR «ATI EXECUTE ·+· OR '-» BF
00503 72F3 CE * XR * DR LDX TXR ·Χ·
00504 72F6 RQ * CR t BSR «CR •Χλ2· LOAD 1.0 INTO X»
00505 72F9 CE λ LOX OPER
00506 7?FC ?0 < OSR .«ATI EXECUTE '+· OP ·-·
00507 72FE CE 22 ί LDX TXX
00508 7301 SQ i 007a ■ BSR *AT1 SET ENTRY FLAG RESTOPE ·Χ·
00509 730 3 CE i F5 LOX FPM
00510 7306 CO * DR 00E8 3SR «OR SAVE »Χ» ·-« OPERATION DEPENDING
00511 7308 CE » ER IF LDX OPER <» ON SPECIFIER FLAG T13 (0-AOD).
00512 7308 20 0 07ft «SR «S6838
00513 E8 LOX TXX 23 f
00514- 0 073 BRA «ER 22
00515 7735 OPER 05
00516 OOFO «ATI 75F6
00517 73ÖD OF TXX 03
0051β 730F 683«
00519 73 ΙΊ 27 08 * PERFORMS »+· OR
00520 7313 00F8
00521 7316 ?0 05
0052? 731« *O 0073
00523 731? DE CE
0052* 7310 20
0052S
0C526
0052?
00528
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
709808/1025
ORiGi^AL
Page 176 cjbpg 06/04/75 36:54.05
00543 731F CF. 0008 * CREG * B ALPHA REGISTERS A-J. ' ' CLEAR A-E ORG S7C4E SIGMA +
00544 7322 80 OB » B FDB SIGP SIGMA -
00545 7324 06 OA • CLEARS B «AR LAST PAGE OF RAM · FDB SIGM
00546 73?6 5A B CLG ORG S7C56 ACCUM +
00547 7327 07 14· CREG LDX B EOM 8UILD AOORESS FOB ACCP ACCUM -
00548 7329 C6 08 BSR FOB ACCM
00549 732B 07 15 LOA 8 TPl ADDRESS OF F-J ORG S7C6E MEAN S, S.O.
00550 7320 OF. 14 OEC A #SD8 TOTAL COUNT FOB MSDEV
00551 732F C6 28· STA TP1 + 1 ZERO BYTE . 0RG- S7C76 -
00552 7331 47 OO LOA B TPl BUMP .ADDRESS FDB RACC
00553 7333 08 STA «40« DONW WITH FIVE REGS YET? - FDB CREG --
00554 7334 5A' LDX O,X NO
00555 7335 ?6 FA CLG LOA
00556 7337 39 STA
00557 INX CLG+2 ' * INSTRUCTION' ADORESS TABLE INSERTS
00558 DEC «
00559 BNE"
00560 7C4E RTS
00561 7C4E 72E2
00563 7C50 7?E1
00564 7C56
00565 7C56 7251
00566 7C58 7250
00567 7C6E
00568 7C6E 7285
00570 "7C76
00571 7C.76 7268
00572 7C78 731F "
.00574
00575
00577
00578
00579
709808/1025
ORIGINAL INSPECTED
Page 177 CJBPG 06/04/75 36:54.05
00582 78FF 39 NAM » LINK RRTN THE LINKAGE
00583 7PFF OPT »THIS ROUTINE ♦INST»2+$7C00=ROUTIME RRTN
005β4 7«FF ORG •TABLE FOR CJ LISTtNOMEM RRTN ADDRESS
00585 7BFF S78FF RRTN RTS PRTN
005R6 73FF FOB RRTN RETURN FOR OUMMYS
00587 7BFF DEFINES FD8 RRTN NOP
005R8 78FF '7RFF FOB RRTN 0
00589 7C00 7(?FF FOB RRTN 1
0059ο 7C02 7RFF FOB RRTN (M
00591 7C04 7RFF FD8 RRTN 3
00592 7C06 7PFF FOB RRTN 4
00593 7C08 73FF FOB RRTN S
00594 7C0A 78FF FOB RRTN 6
00595 7C0C 7PFF FOB RRTN 7
00596 7C0E 7BFF FD8 RRTN 8
00597 7C10 78FF FOB RRTN 9
0059« 7C12 78FF FD8 RPTN
00599 7C14 78FF FOB RRTN +
00*00 7C16 78FF FOB PRTN
00601 7C19 7BFF FOB RRTN *
00602 7ClA 78FF FDB RRTN /
00603 7ClC 73FF rDB RPTN ENTF.R
00604 7ClE 78FF " FOB PRTN EEX
00605 7C20 7PFF FOB RRTN CHS
00606 7C22 78FF FOB PRTN CLX
00607 7C24 78FF FOB - RRTN CLEAR
00608 7C26 78FF FOB RRTN XEY
00609 7C28 78FF FDR RRTN ROLL DOWN
00610 7C2A 7SFF FOB RRTN PI
00611 7C2C 78PF FDB RRTN LAST X
00612 7C2E 79FF FOB PRTN SIN
00613 7C30 7«FF FDB RRTN COS
00614 7C3? 7*FF FOB RRTN TAN
00615 7C34 7HFF F08 RPTN ARCSIN
00616 7C16 78FF FOB RRTN ARCCOS
00617 7C3* 78FF FOB RRTN ARCTAN
00618 7C3A 78FF FOB RRTN LN
00619 7C3C 78FF FOB PRTN LOG
00620 7C3E 78FF FOB RRTN Eax
00621 7C40 78FF FDB PRTN 1OaX
00622 7C42 78FF FD8 RRTN YAX
00623 7C44 78FF FDB PPTN ROLL UP
00624 7C46 73FF FOB . RRTN SORT X
00625 7C4fl 78FF FOB RRTN 1/X
00626 7C4A 7RFF FOB RRTN SIGMA ♦
00627 7C4C 78FF FOB RPTN SIGMA -
00628 7C4E 78FF FOB R TO P
00629 7C50 FOB P TO R
00630 7C52 F08 ACC+
00631 7C54 FDB ACC-
00632 7C56 INT
00633 7C58
00634 7C5A
00635
00636
709808/1.0 25
•ORIGINAL IMSPEOTED
Page 178
06/Q4/75 36:54.05
00637 7C5C 7HrF FDS RRTM OEGPEES
0063« 7C5E 7<?=Τ FOB PPTM TO D.MS
00639 7C60 7RFF FDB RRTN FROM O.MS
006£Q 7C62 7^FF F.08 RRTN IF+
00641 7 C-S 4 7r<FF FD3 RPTM IF-
0064? 7C66 7^FF FDB RRTN IFO
0 0643 7C^B 7RFF FOB PRTN IFX=Y
00644 7C6A 7RFF FOB RRTN IFX<Y
00645 7C6C 7UFF FD8 RPTN ' IFX>=Y
0064ft 7C6E 79FF FOB PRTN MEAM« STO DEV
00647 7C70 7BFF FDB PRTN. ft OF R1S
006-*« 7C7? 7RFF ■ FOB RRTN LIST STACK
0064g 7C74 7RFF FDß PRTN ROUND X ·
00650 7C76 7=FF FD8 RRTN RCL ACC +
00651 7C7B 7BFF ' FDS RPTN CLR A THRU J
00652 7C7A 7PFF ■ FDB RRTN LINE FEED
00653 7C7C 75FF FOB RRTN GRADS
00654 7C7E 7P.FF FDB - RRTN RADIAMS
00655 7C90 7BFF FDB PRTN SFG 1
00656 7CB2 7^FF FD3 DRTN SFG 2
00657 7C34 7HFF FDb RPTN SFG 3
0065P. 7C36 7RFF FOB RRTN SFG 4
00659 7C3B 7=FF FOB RRTN SFG 5
00660 7C=SA 7BFF FDB RRTN SFG 6
00661 7CBC 7?FF FOB PPTN SFG 7
006^2 7CSE 7"FF FOH PoTtM SrG β
00663 7C*?0 7-FF FOd PRTN IF SFG 1
00664 7C92 7-FF FOB PRTN IF SFG 2
00^65 7C94 ~ = FF FDB RRTN IF SFG 3
00-66 7C96 7mFF FD3 RRTN IF SFG 4
00*^7 7C33 7PFF FDB PRTN IF SFG 5
006^8 7C9A 7^fF FDB BPTN IF S^G 6
006*9 7C9C 7^FF FOB PPTN IF SFG 7
00670 7C9F. 73FF FOB RPTN IF SFG a
00671 7 CAO 73FF FOR PRTN CFG 1
00672 7CA2 7hFF FDB RPTM CFG 2
00673 7CA4 7JFF FD3 RPTM 'CFG 3
00674 7CA6 75FF FOB RRTN CFG 4
O0675 7CAq 7BFF FDB ο Ρ TM CFG H
00676 7CAA 7PFF FOB PRT1N CFG 6
00677 7CAC 7=>FF F03 PRTN CFG 7
00678 7CAE 7KFF FOS PRTN CFG H
00*79 7CB1 7-FF FOB PRTN IF CFG 1
O O 6? Π 7CB2 73FF FOB RPTN IF CFS 2
006Sl 7CB4 7^FF FDB PRTM IF CFG 3
0CSP2 7CB6 7«FF FOB RPTN IF CFG 4
00·=·Η3 7C30· 7BFF FOB PRTM IF CFG 5
ο η ή« 4 7C^A 73FF FD3 PRTN IF CFG 6
TCBC 7^FF FOrI PPTN IF CFG 7
O O γ» -* 6 7C3E 7f,FF FDB ο ο TN IF CFG 3
006^7 7CCO 7BFF FD3 PPTN GOTO L-iL X
006ΛΗ 7CC 2 7:jlFF FDB RRTN GOSUR L*L <
006«9 7CC4 7-SFF FOc? P ο T>M GOTO X
O O 690 7CC6 7»FF FOft PPTM GOS'in X
00*>91 7CC"i 7°FF FOB r-RTM STO A
709808/102
ORIGINAL JNSPECTSD
Page 179 CJBPG 06/04/75 36:54.05
00692 7CCA 7BFF FD8 RRTN STO R
00693 7CCC 73FF .FDB RRTN STO C
00694 7CCE 7BFF FOB RRTN STO D
00695 7C00 7RFF FDB RRTN STO E
00696 7CD2 7RFF FOB RRTN STO F
00697 7CD4 7RFF FDB RRTN STO G
00698 7CD6 7BFF FDB RRTN STO H
00699 7COa 7RFF FOR RRTN STO I
00700 7COA 7SFF FD8 PRTN STO J
0070Γ 7CDC 78FF FOB RRTN STO+ A
00702 7COE 7RFF FDB RRTN STO+ B
00703 7CE0 7BFF FD8 RRTN CTO+ C
00704 7CE2 7BFF FDB RRTN STO+ O
00705 7CE4 7RFF FDB RRTN STO+ E
00706 7CE6 79FF FD3 PRTN STO+ F
00707 7CEB 7RFF FDB RRTN STO+ G
00708 7CEA 78FF FDB RRTN STO+ H
00709 7CEC 79FF FOB RPTN STO+ I
00710 7CEE 7RFF FDS RRTN STO+ J
00711 7CF0 78FF " FD8 RRTN STO- A
00712 7CF2 7RFF FD8 PPTN STO- 8
00713 7CF4 7RFF FOB RRTN STO- C
00714 7CF6 7RFF FDB RRTN STO- D
00715 7CF8 7BFF fob' RRTN STO- E
0 0716 7CFA 78FF FDB RRTN STO- F
00717 7CFC 7RFF FOB RRTN STO- G
0071ft 7CFE 73FF FOB RRTN STO- H
00719 7000 7HFF FOB RRTN STO- I
0072Π 7O02 7RFF FDB RRTN STO- J
00721 7004 7RFF FDB RPTN STO* A
00722 7D06 7RFF FOB RRTN STO* B
00723 7.008 7RFF FOB RRTN STO* C
00724 700A 78FF FOB PRTN STO* O
00725 7O0C 7»FF FOB RRTN STO* E
00726 700E 73FF FOB RRTN STO* F
00727 7DlO 7<?PF FDB RRTN STO* G
00728 7012 7RFF FOB ORTN STO* H
00729 7Ü14 7RFF FOB PRTN STO* I
00730 7016 7BFF FOB PPTN STO* J
00731 701* 7O.FF FDB RRTN STO/ A
00732 7DlA 7RFF FOB RRTN STO/ 3
00733 70 IC 7RFF FOR RRTN STO/ C
00734 70 IE 7RFF FDB RRTN STO/ D
00735 7020 73FF FD8 PRTN STO/ E
00736 7022 7?»FF FOB PPTN STO/ F
00737 7024 7BFF FDB RPTN STO/ G
00738 7026 7RFF FOB PRTN STO/ H
00739 7028 78FF FOB RRTN STO/ I
00740 7O2A 79FF FOB RPTN STO/ J
00741 7O2C 7RFF FDB RPTN RCL-A
00742 7O2E 7RFF FD8 RRTN RCL 8
00743 7030 7RFF FOB RRTN RCL C
00744 7032 78FF FDB ORTN RCL O
00745 7D34 7RFF FOB PRTN RCL E
00746 7D36 78FF FOB RPTN RCL "F
709808/1-0 25
ORIGINAL INSPECTED
Page 180 CJBPG 06/04/75 36:54.05
00747 7D38 7BFF eft 7BFF FOB RRTN RCL G
00748 7D3A 7"FF " 7BFF FDB RRTN RCL H
00749 703C 7BFF 7BFF FOB RRTN RCL I
00750 7D3E 7BFF 7BFF FDB RRTN RCL J
00751 7040 7BFF 7BFF FOB RRTN CALL A (LOBIN).
00752 7042 7BFF 7BFF FOB PRTN CALL B (RUMBIN)
00753 7D44 79FF 78FF FDB RRTN CALL C (RCBIN)
00754 7D46 7BFF 7BFF FOB PRTN CALL D (RCBINSC)
00755 7D48 7RFF 7RFF FDB RRTN CALL E (PTAPE)
00756 704A 7BFF 7BFF FOB RRTN VERIFY FILE
00757 704C 73FF 7BFF FOB RRTN LOAD S, RUN
00758 7D4E 7BFF 7BFF FDB RRTN- RECORD DATA
00759 7Ü50· 7BFF 7BFF- FOB RRTN REWIND
00760 7D52 78FF · 7BFF FOB RRTN PAUSE
00761 7054 7BFF 7BFF FDB RRTN FOR 3 TO G
00762 7056 7BFF 7BFF FD8 RRTN FOR C TO H
00763 7D58 7BFF 7BFF FDB RRTN , FOR A TO F
00764 705A 78FF 7BFF FOB PRTN NEXT A · .
00765 705C 7BFF 7BFF FOB RRTN NEXT 8
00766 7D5E- 7PFF 7BFF FD8 RPTN NEXT C
00767 7D60 7BFF 7BFF FOB RRTN RUIM/STOP
00768 7062 7BFF 7BFF FDB PRTN ENO
00769 7064 7BFF 7BFF FDB- RRTN PRINT
00770 7066 7BFF FDB RPTN RETURN
00771 7D68 78FF FD8 PRTN ALPHA TERMINATOR
00772 706A 7RFF FDB RPTN RECORD PROGRAM-
00773 7D6C 7BFF FDB RRTN RECORD PROTECTED
00774 7D6E 7RFF FDB RRTN MARK FILE
00775 7070 7BFF FDB PRTN IDENTIFY FILE
00776 7072 7BFF FD8 RPTN LOAD FILE
00777 7074 7BFF FDB RRTN THIS RIT PATTERN IS UNUSED
00778
00779 7076 FDB PRTN FIXED
00730 7078 FOB RRTN SCI
00781 707A FOB RRTN SCI 3
00792 7D7C FDB PRTN FORMAT
00733 7D7E FOB RRTN LABEL
007«4 7060 FOB PRTN GOSUR LBL
007Λ5 70«2 FOB RRTN GOTO LBL
00786 7084 FDB PRTN RCL PCL ALPHA
00787 7D86 FDB PRTN • STO RCL ALPHA
00 788 7D83 FDB RRTN STO RCL + ALPHA
00789 70PA FDB PRTN STO »CL - ALPHA
00790 7D8C FOB RRTN STO »CL · ALPHA
00791 7O(3E FD8 PRTN. STO RCL / ALPHA
0079? 7090 FDB RRTN STO 0
00793 70.92 FOB RRTN STO 1
00794 7D94 FOB RRTN STO*. 0
00795 7096 '" FDB RRTN STO+ 1
00796 7098 FDB RRTN STO- 0
00797 7D9A FDB RRTN STO- 1
007<?8 709C .FD9 PRTN STO» 0
00799 709E FOB RRTN STO» 1 ·
00300 7040 F08 PRTN STO/ 0
00801 70AP FOB RRTN STO/ I ·
709808/1025
ORIGINAL INSPECTED
Page 181 CJRPG 06/04/75 36:54.05
00β02 70 A4 7RFF F08 RRTN RCL O O O
00803 70Afi 73FF ■ FOB RPTN RCL 1 1 1
00604 7DA8 7RFF FOB RRTN RCL RCL O O
00*05 70AA 7BFF FOB RRTN RCL RCL 1 1
00ΡΠ6 •7OAC 73FF FOB RRTN STO RCL O
O0S07 7DAE 7RFF FOB RRTN STO RCL 1
OOPOS 7DR0 7PFF FOB - RRTN STO RCL+ O
00809 7D82 7BFF FDB RRTN STO RCL+ 1
00*510 7084 7=3FF F08 RRTN STO RCL-
00P11 70R6 7PFF FDB RRTN STO RCL-
ooai? 7088 7RFF FOB RRTN STO RCL*
00*13 7Ö8A 7RFF FDB ■ RRTN STO RCL*
00314 7DBC • 7RFF FDB PRTN STO RCL/
00*15 70BE 7RFF FD9 RRTN STO RCL/
O0P16 70CO 7RFF FDB RRTN GOSUB O
00M7 70 C2 78FF FDB PRTN GOSUB 1
oooia 70C4 7RFF FD8 PPTN GOSUR 2
00319 70C6 7RFF FOB RRTN ' G0SU8 3
on?2o 70C8 7RFF FOB PRTN GOSUB 4
00321 7DCA 7RFF FD8 RRTN GOSUB 5
00 = 22 7OCC 7RFF F08 RRTN G0SU8 6
00323 70CE 7=>FF FOB PPTN GOSUB 7
00324 7000 7RFF FDB- PRTN GOSUB 8
00825 7002 73FF F08 RRTN G0SU8 9
00*26 70D4 7RFF F08 RRTN G0SU8 10
00-527 7006 7HFF FOB PRTN GOSUB 11
00928 7008 7RFF FDB RRTN GOSUB 12
00*29 7ODA 7RFF FOB RRTN GOSUB 13
00330 7onc 7BFF FDB RRTN G0SU8 14
00831 70OE 78FF FDB RRTN GOSUB 15
00332 7OEO 73FF FDB PPTN GOTO O
00333 7-0 E 2 73FF FOB RRTN GOTO 1
00*34 70E4 7BFF F08 PRTN GOTO 2
00335 70E5 7RFF FOB RRTN GOTO 3
00836 70E8 7RFF FOB RRTN GOTO 4
00337 7OEA 7RFF FDB RRTN GOTO 5
0 0338 70FC 7RFF FOB PRTN GOTO 6
0OS39 7DEE 7HFF FD8 RPTN GOTO 7
00*40 7OFO 7BFF FOB RPTN ■ GOTO 8
00341 7DF2 78FF F08 RRTN GOTO 9
00342 70F4 7BFF FOB RRTN . GOTO 10
00843 70f6 7RFF FOB RRTN GOTO 11
00844 7DFR 7PFF FOB RRTN GOTO 12
00845 70FA 7RFF FOB PRTN GOTO 13
00346 7OFC 7RFF FOB PRTN GOTO 14
00847 70FE 7RFF FOB RRTN GOTO 15
709808/1025
Iirt!.w'*i>
Page 182 CJ8PG 06/04/75 36:54.05
00850
END
SYMROL 1 TARLE ACTL . 0001 8DATA 0002 8CTL 0003 INPUT * IOIN 0005
ADATA 0000 TGL 0007 UFLG 0008 RSFLG 0009 EOM 0004 EOPM 0003
EOOOR 0006 RND OOOE DIGFLG OOOF W2 0010 Wl OQOA SFLG 0012
STKFLG OOOD TPl 0014 TPlS 0015 TP2 0016 TP2S 0011 TP3 0018
DCNTR 0013 TP4 001A TP4S 001B TP5 OOIC TP5S 0017 TP6 001E
TP3S 0019 TP7 0020 TP7S 0021 T13 0022 T12 0010 TIl 0024
TPAS 001F T9 0026 T8 0027 T7 0028 T6 0023 T5 0 02A
TlO 0025 T3 002C T2 0020 . Tl 002E ISTK 0029 ISTACK 0051
T4 002« SPGM 0054 EXTRA 0056 8UFF 0058 REAL 002F IMAG 0070
TA 0052 AT2 0080 W 0088 XR 0090' YR 0068 ZR OOAO
ATI 0078 LSTX 0080 BKWRT, 00B8 SKKC 008A S0L7 0098 UPP 00C8
TR 00A8 ALPHA OOCC 101 OOCD 102 OODO IT7 00C6 FLAG 0005
UIP 00C4 •FILE 00D7 AR 00D8 8R OOEO CP 0003 DR OOFO
•TPOS 00D6 SDB8 OOBA MT 7EOO TERMN7 0030 IMED O0E8 PARCD OOCO
ER OOFS MTBL 0000 DOTS 5EC0 PRTORV 602D FRMT 0040 BLANK 5D75
PAREX 0080 ROLLD 5582 ROLLU 57Fl PSD 55DA TXL 5CA8 STKUP 55EF
LOMSG 5780 CMP 74AA NOR 74D6 TXW 7424 TXXR 55E9 EXXP 7452
ΜΔΟ 7498 OVUNF 7586 OVEPF . 750D XRO 740Δ XRNINE 7438 UNDRF 75Fl
AOSR 753^ QDG 7669 FPA 75FC FPS 75F6 FPM 75C8 FPD 7793
IMiJLT 7639 FPMEX 7780 LSHIFT 7521 ZEROX 7489 XZEROQ 7735 XZER02 7417
FPAE< 7630 TXRX 73F3 CONST 6800 FPD8RC 6898 TAN 7416 ATN 69C3
RECIP 73E6 NTLN 6A58 EXPN 6AC9 SIN 6394 COS 68A9 ASIN 63F2
DSZERO 6A4ft PHl 6C50 PH2 6C8D PH3 6D34 PH4 689A LSFT8 6E47
ACOS 68F7 MAD8 6F2C CMP8 53E4 IOUPX 6F52 LOGlO 6000 YUPX 6FE9
SORT 6E65 PTOR 7336 ROMID 5300 RMl 5305 RM2 6FA7 RM3 5329
RTOP 7328 I0F1 5337 I0F1A 5347 I0F2 534E RNPPT 5316 STBIN 62A0
IOF^T 512Δ SPSTS .5354 SPST 5356 SPSO 5366 SPSOA 5351 SPSl 5370
LOBIN- 6396 LIMl 538E KILL 538F KILl 5393 SPLD 537A SPLl 53A9
LIMIT 53*0 SPTAD 538A SPTl 53CA USMEM 4C83 XEY 539C ACCM 7250
SPCAL 53AE XEYl 7265 RACC ' 7268 MSDEV 7285 TXX 55AC TXR 72DE
ACCP 72"5I SIGP 72E2 OPER 7300 OPERl 7318 CREG 7203 CLG 732F
SIGM 72El 731F
RRTM 73FF. 3 ·
TOTAL ERRORS
218 NAM CONST
303
»«««ERROR 201
324 NAM TAN »»«»ERROR 206
327 FLAG EOU BUFF+1S »««»ERROR 206
333 AOORST EOU TP7 »»»«ERROR 206
335 TS EOU REAL »♦«»ERROR 201
4flO NAM ATN »»»»ERROR 206 483 FLAG EOlJ 8UFF+15
7Ö98Q8/ 1 025
INSPECTED
Page 183
»»»»ERROR 206 • 484 EXP EOU BUFF+14 »»»«ERROR 206 487 ADORST EQU TP7
- 206 -
48BSHIFTl EOU Tl »»»»ERROR 206 "
489 SHIFT2. EQU T2 ««»»ERROR 206 ■
491 TEMP EOU T »»»»ERROR 201
567 NAM DSZERO «»»»ERROR 206
570 DIGIT EQU BUFF »«»«ERROR 201
589 NAM NTLN «»»»ERROR 206
592 FLAG EQU BUFF+15 «»»»ERROR 206
593 EXP EQU BUFF+14 »«»»ERROR 206
594 SHIFTl EQU Tl »«»»ERROR 206
595 SHIFT3 EQU T3 «»«»ERROR 206
596 TEMP EQU T4 «»»«ERROR 206
597 TS EQU PEAL «»»»ERROR 201
665 NAM EXPN »»»«ERROR 206
668 FLAG EOU BUFF+15 »»«»ERROR 206
669 EXP EQU RUFF+14 »«»»C.QR0R 206
671 AOORST EQU TP7 »»«»ERROR 206
672 SHIFTl EQU Tl »»«»ERROP 206
673 AOORS EQU TP6 ««»«ERROR 206
674 ZQFLAG EQU TPS «««»ERROR 206
675 DIGIT EQU 8UFF ««»«ERROR 206
676 TRIG EQU TRIG1-14 ««««ERROR 201
788 NAM SIN ««««ERROR 206
791 FLAG EQII BUFF+15 »«»»ERROR 206
792 TS EQU REAL »»»»ERROR 206
793 QAO EQU BUFF+13 »»»«ERROR 206
794 TEMP EQU T4 »«»»ERROR 201
851 NAM ASIN «»»»ERROR 206
854 TS EQU REAL ««««ERROR 206
855 ADDRST EQU TP7 ♦»«»ERROR 206
856 FLAG EQU BUFF+15 »«»«ERROR 206
857 XTS EQU IMAG
709808/(1025
j ■ . ■ ■ - ·- ·
ί Page 184 ' " · ·' "^- 20?--
. »»««ERROR 201
qpO NAM PHl - «»»«ERROR 206
923 DIGIT ECU BUFF 20ή
»»««ERROR 206 925 ADDCIST EOU TP7
»»«»ERROR 206
9?6 QOIGIT EQU TP3. «»««ERROR 206 " ·
927 SHIFTl EQU Tl »«««ERROR 206
92« ZOFLAG EQU TP5 »•««ERROR 201
965 NAM PH2 »«««ERROR 206 • 963 SHIFT3 cQU T3 »«««ERROR 206
969 FLAG EOU 3UFF+15 »•««ER-^OR 206
970 AOORS EOU TP6 »«««ERROR 206
971 SHIFT2 EOU »««»ERROR 206
972 TS EQU REAL
70 9808/10
L INSPECTED
Page 185 CJ3PG 06/04/75 36:54.05
00215 00218 00219 00220 00221 00222 00223 00224 00225 00226 00227 00228 002?9 00230 00231 00232 00233 00234 00235 00236 00237 00238 00239 00240 00241 00242 00243 00244 00245 00246 00247 .00248 00249 00250 00251 00252 00253 00254 00255 00256 00257 00258 00259 00260 00261 00262 00263 00264 00265 00266 00267 00268 00269 00270 00271
6800
OPT LIST.MEM
NAM CONST
OPT OBl6,HEM
ORG CONST
6800 6808 HO 6310 6618 6.820 6828 6830 6838 6340 6848 684E 6854
»THIS FILE CONTAINS THE CONVERSION CONSTANTS USED IN «THE MATH SUFiPOUTINES. BOTH THE T"IG AND LN CONSTANTS «USED RY THE MATH ALGORITHMS HAVE ONLY THE MANTISSA «STORED. ALSO« FOP EACH SET, EACH SUCCESSIVE CONSTANT «IS LEFT SHIFTED ONCE FROM THE PRECEEOING CONSTANT. «PROPER VALUE ALIGNMENT IS PERFORMED DURING EXECUTION «OF EACH ALGORITHM.
«ALL OTHER CONSTANTS ARE STORED AS FULL «FLOATING POINT NUMBERS.
2/28/75 REV B
GRADS/UNIT CIRCLE ( 400 )
$02>SOO,S40,<S00»S00,$00.SO0.SOO RADIANS/UNIT CIRCLE ( 2PI )
• R. FUHRMAN
*
FIRST FCB
β
A2PI FCB
*
FC3
FCB
ΡΙ02 FCB
»
GRAD ONE
FCB
FCB
FCB DEGREE FC8 FCB FCB FCB
TRIGl
$62»Sa3»$18.S53,S07»$18 DEGREES/UNIT CIRCLE ( 360 )
GRADS/QUADRANT ( 100 )
$02.$O0tSl0."500.SOO.SOO.SOOfSOO RADIANS/QUADRANT ( PI/2 )
$00»$OOfS15,.'570i'S79.$63»j;26»S80 DEGREES/QUADRANT < 90 J
SOIfSOO. 590.. 500. 500, 500.SOOiSOO GRADS/RADIAN ( 200/PI )
RADIANS/RADIAN ( 1 )
SOOfSQO.SlOtSOOf-SOn', SOQ.SOO.SQO DEGREES/RADIAN { 180/PI )
SO 1«$00,557,529,^57,$79,S51,S31 ARCTAN« 1 )
S78,S53.S98.S16,533,S97 ARCTAN( .1 )
S99,S66»S86,S52.S49,S12 ARCTAN( .01 )
S99,S99«S66,566.S86,S67 ARCTANt .001 )
709808/1025
Page 186 CJBPG 06/04/75 36:54.05
00272 685Α 99 ' β. . FCB FCB $99,$99,$99,$66,566,$67
00273 «· ARCTAN( .0001 )
00274
00275 6860 99 β FCB FCR S99,$99,$99,599,$66,$67 "
00276 ft OPT ARCTANt .00001 )
00277
00278 6866 99 « FCB $99,$99,£99.$99,$99,$67
00279 ■β LN( 2 )
00280
00281 686C 69 β FCB S69,$31,$47.Sl8,$05,560
00282 ■0· LN( 1.1 )
00283
00284 6872 •95 * FCB 595, $31, $01 ,$79,-580, 543
00285 » LN( 1.01 )
00286
00287 6878 99 * FCB $99,$50,533,$08,$53, 517
00288 LNt 1,.0Ol )
00289
00?90 68 7Ε 99 FCB $99«$95,$00,$33»530,584
00291 » LNt 1.0001 )
00292
00293 6384 99 β FC8 $99, $99, $5.0, $00, "533, 533
00294 LN{ 1.00001 )
00295
00296 688Α 99 » $99,$99,$95,$00,S00,$33
00297 LN( 10 )
00298 LNlO
00299 6890 00 $0 0, 500,523.502.558,SSO,$92,599
00300 LIST
70980-8*/ 1025
- 210 Page 239 PL0T 07/09/75 07:57.00
00239 0024(J 00241 00242 00243 002&4 00245 00246 00247 00248 00249 00250 00251 00252 00253 00254 00255 00256 00257 0025? 00259 00260 00261 00262 00263 00264 00265 00266 00267 00268 0026«? 00270 00271 00272 00273 0027* 00275 00276 00277 0027P 00279 0028(1 00281 00282 002R3 00284 00285 00286 "00287 00288 0028Q 00290 00291 00292 00293
3BD0
ORG
OGTZR
S3BD0
3BD0 3BD2 4C 39D3 3B 38D5 8B 3SD7 8B 33D9 3305 BO 38DE 3SE0 2A 3BE2 -7E 38E5 3BE7 BD 3BEA 4F 33EB 33ED 33EF 38Fl BO 33F4 33F6 3BFfl 38FA 38FC 33FE 7F 3COl 3C02 3C03 3C04 3C06 3C0S OE 3C0A 3C0H DF 3COO 3C0F CE 3C12 OF 3C14 7Δ 3C17 3C19 7C 3ClC CE 3ClF RD 3C22 3C25 7Δ 3C28 BO 3C2B 7F
80
07
08
14
2E
3924
2E
03
3C54
A8
55EF
09
B9
OD
3CA0
89
3C
OF
OO
04
0000
2E 28 28
28
E5
03E8
28
002O
03
0078
0073
75FC
3C00
0009
3AP3
0009
DGTZ5
0GTZ2
DGTZl
DGTZ3
DGTZ4
THIS ENABLES THE USER TO POSITIOM THE PEM BY
PRESSING DIRECTION STEP KEYS. BY HOLDING THE KEY DOWN THE STEP IS REPETED. STEPS ARE 0.1* OF FULL SCALE FOR 25 STEPS (REPETED). ANO THEN INCREASED TO 1.0« INCREMENTS. UPON EXITING
THE USER COORDINATES ARE UPTURNED IN THE X AND Y REGISTERS.
OTO
DTl
0T3
LDA A
INC A
ADD
ADD A
ADD A
STA A
JSR
LDA A
BPL
JMP
BSR
JSR
CLR A
STA A
STA A
STA A
JSR
LDA A
BNE
LDA A
STA "Δ
LDA A
CLR
COM a
LSR A
LSR A
CMP A
BNE
LDX
DEX
STX
BNE
LOX
STX
DEC
BNE
I'.C
LDX
JSR
JSR
DEC
JSR
CLR
«P200
Tl
INIT
Tl
DTO
DT7
PENU
STKUP
RSFLG
BKWRT+1
STKFLG
SETUP
BKWRT+1
DT4A
ADATA INPUT ADATA
Tl
DT4
T4
T4
DTl
#1000
T4
T2
DT3
ATI
«ATI
FPA
PANGE
RSFLG
MOV
RSFLG EXIT.
RIGHT
LEFT
DOWN
SAVE KEY CODE
EXIT COMMAN? NO
LIFT THE PEN
RESET FLAGS
INITIALIZE ALL
NEW KEY? YES
KEYROiRO SELECT
READ <EY BOARD SCAN RESET SELECT COOE -
FIX KEY CODE
KEY RELEASED LOAD TIME -COUNT
TIME NOT UP
SET FAST REPETE TIME
SAME STEP 1.0 * STEP
AOO DELTA ADJUST
MAKE STEP MOVE
709808/1025 ORIGINAL
7£S -j
- 211 Page 240 PLOT 07/09/75 07:57.00
00294 3C2E 20 C4 0T4 DT9 BRA A OTl ANOTHER STEP
00295 3C30 7F 00B9 CLR A 8KWRT+1 CLEAR KEY PUFFER
00296 3C33 3E DT4A WAI A WAIT FOR KEY
00297 3C34 96 BA LDA BKKC
00298 3C36 97 2E STA A Tl SAVE COMMAND
00299 3C38 81 22 CMP «042 EXIT?
00300 3C3A 27 18 BEQ A 0T7 YES
00301 3C3C 81 25 CMP #045 STOP KEY?
00302 3C3E -27 14 DT5 OTlO,. BEQ A 0T7 YES
00303 3C40 81 14 CMP #®24 UP?
00304 3C42 27 OC BEQ A DT6
00305 3 C 44 81 IC CMP #034 DOWN?
00306 3C46 27 08 BEO A DT6
00307 3C4R 81 23 - CMP «©43 LEFT?
00308 3C4A 27 04 BEQ DT6
00309 3C4C 81 24 CMP <*P44 RIGHT?
00310 3C4E 26 EO DT6 BNE A DT4
00311 3C50 80 4E BSR A SETUP INITIALIZE
00312 3C52 20 C8 DT7 BRA DT3
00313 3C54 86 08 LDA R *8
00314 3C56 97 24 0T8 STA 8 TIl XYFLG=Y
00315 3C58 BO 55EF JSR A STKUP PUSH UP STACK
00316 3C5ß C6 80 LDA *S80
00317 3C5O 07 OD STA A STKFLG SET AUTO STACK
00318 3C5F 86 10 LDA #510
00319 3C61 80 39A6 JSR GET LOAO OFFSET
00320 3C64 86 20 LDA tf$20
00321 3C66 RO 3973 JSR A INDX
00322 3C69 80 75F6 JSR FPS MINUS POSITION
00323 3C6C BD 39AA JSR TEMPI
00324 3C6F 4F CLR
00325 3C70 BO 39A6 JSR GET LOAD SCALE
00326 3C73 CE 0058 LDX «BUFF
00327 3C76 RO 7793 JSR FPD (POSITION-OFFSET)/SCALE
00328 3C79 CE 0000 LDX «0
00329 3C7C OF 94 STX XR+4
00330 3C7E OF 96 STX B XR+6 ZERO NON-SIGNIFICANT OI
00331 3C80 BO 38C3 JSR R ADJST
00332 3C83 27 D3 8EQ A DT8
00333 3C85 06 26 LDA A T9
00334 3Ca7 07 09 STA PSFLG RESTORE PSFLG
00335 3C89 96 2E LDA β Tl KEY COOE
00336 3C8B 81 22 CMP a<ü42
00337 3C80 27 06 8EQ OTlO EXIT KEY
00338 3C8F 50 TST
00339 3C90 2A 03 3PL A DTlO NOT PROGRAM EXECUTIOM
00340 3C92 90 4800 JSR A S4800 RETURN TO KEYROAPD '-1OOE
00341 3C95 7F 00B9 CLR RKWRT+1 CLEAR KEY BUFFER
00342 3C98 96. 04 LDA #4 106
00343 3C9A 97 00 STA AOATA RESET CHANNFL
00344 3C9C 7F 0000 CLR AOATA
00345 3C9F 39 RTS
7098 08/10
- 212 Page 241 PLOT 07/09/75 07:57.00
00347 3CA0 CE 0078 SETUP SETUP A #AT1 CLEAR STEP BUFFER
00348 3CA3 8D 7489 A ZEROX
00349 3CA6 CE 1388 LDX «5000 SET TIME LOOP
00350 3CA9 OF 2B JSR A T4
00351 3CA8 86 19 LDX A «25 STEP COUNTER
00352 3CAD 97 2D STX A T2
0 0 353 3CAF 7C 0078 LDA A ATI
00354 3CB2 86 10 STA A #$10 STEP=.1%
00355 3CS4 97 7A INC A AT1+2
00356 3C86 4F LDA B XYFLG=X
00357 3C87 97 24 STA A TIl ZERO KEY BUFFER
00358 3CB9 97 B9 CLR BKWRT+1
00359 3CBS 96 2E STA 3 Tl
00360 3CB0 C6 08 STA A #8 VERTICAL COMMAND?
00361 3CBF 81 IC LDA #5134
00362 3CCl 22 08 LOA STl XYFLG=Y
00363 3CC3 07 24 CMP A TIl UP?
00364 3CC5 81 14 BHI #@24 NO
00365 3CC7 26 06 STA A SET2
00366 3CC9 20 08 CMP A SET3 LEFT?
00367 3CCB 81 23 STl 8NE A #943 NO
00368 3CCD 26 04 BRA SET3
00369 3CCF 86 80 SET2 CMP #580 NEGATIVE STEP
00370 3CDl 97 79 BNE AT1 + 1
00371 3CD3 86 20 SET3 LDA #$20 POINTER TO POINT
00372 3CD5 RO 3973 STA INDX SET IT
00373 3C08 OF 20 LOA TP7 LOAD INTO XR
00374 3CDA 7E 7438 JSR A TXXR
00375 β- STX
00376 JMP
00377 A NEG NUMBER?
00379 3CDD 96 91 RANGE RANGE A XR + 1 NO
00380 3CDF 27 03 PANl
00381 3CEl BD 3BAl : LDA A 7ERXR
00382 3CE4 96 90 P4N1 8EQ A XR EXPONENT>3?
00383 3CE6 81 03 JSR #3 NO
00384 3CE8 2F 09 LOA RAM?
0038R 3CEA 86 03 CMP #3 SET EXP TO 3
00386 3CEC «37 90 BLE XR
00387 3CEE CE 9999 LOA #$9999 SET TO M4X
00388 3CFl OF 92 STA XR + 2 POINTER
00389 3CF3 OE 20 RAN2 LDX TP7 SAVE CORO.
00390 3CF5 7E 73F3 STX TXRX
00391 LOX
0039? JMP
00393
709808/10
Tabellenseite 1
00223 Netz ein und Supervisor
00226 Diese Routine ist die Netzeinschaltsequenz und
00227 Der Supervisor für CY.
00229 Netzausfall/Vektor neu starten
00230 Netzeinschaltung beginnt hier
00231 Stapelhinweismarke initialisieren
00232 Mögliches Test-ROM nehmen
00233 Ist es da?
00234 Abzweigen, wenn nicht
00235 Anderenfalls Steuerung übernehmen lassen
00236 ACCA = Alles Einsen
00237 AIO nun an allen Ausgängen
00238 BIO nun an allen Ausgängen
00239 Datenregisterauswahl vorbereiten
00240 Α-Daten auswählen
00241 B-Daten auswählen
00242 Index löschen
00243 Auf Basisseite bewahren
00244 Seitenadressen erhöhen
00245 Neuen Index wieder speichern
00246 Speicherprüfwort nehmen
00247 Im "vorgeschlagenen" Speicher speichern
00248 War der Speicher da außerhalb?
00249 Abzweigen wenn ja
00250 Anderenfalls ACCB = Seitenadresse der leeren Seite
00251 R/B ganz löschen 00253 Schon fertig?
00255 Ende der Speicheradresse bewahren
00256 Eine Seite unterstützen
00257 Und Ende des Programmspeichers
00258 Adresse auf Seite nehmen
00259 Alpha-Register initialisieren
00260 Laufende End-Hinweismarke nehmen
00261 1/0-1 initialisieren
00262 1/0-2 initialisieren
7 0S808/1025
00263 00264 00265 00266 00267 00268 00269 00270 00271
Seitenadresse erzeugen Auswahlcode-Spur A laden
Kassettenspur A setzen
Festkonffliabit nehmen Verbindungswort setzen
Zahl fiir gerundete Anzeige laden
Im gerundeten Wort bewahren
MSB'S der verkürzenden Adresse nehmen
Um 1 ROM verschieben
Tabellenseite
00272 00273 00274 00275 00276 00277 00278 00279 00280 00281 00282 00283 00285 00286 00289 00290 00291 00292 00293 00294 00295 00296 00297
Wiederherstellen
Schon beendet?
Abzweigen wenn ja
Anderenfalls laufende ROM-Adresse laden
Drittes ROM-Wort nehmen
Ist es eine JMP-Anweisung?
Verkürzung fortsetzen wenn nicht
Anderenfalls Initialisierung anbieten
Verkürzung fortsetzen
Modifiziertes EOPM nehmen
In spezieller Programmhinweismarke bewahren
End-Hinweismarke nehmen
Zehn Register initialisieren
Hinweismarke wiederherstellen
Netzeinschalt-I/O-Fehler
Abzweigen wenn ja
Verbindungs-Auswahlcode laden
Verbindungs-Auswahlcode senden
Verbindungsbedingungen nehmen
I/O-Transfer sperren
Bit für automatischen Start zum Übertrag schieben
Abzweigen wenn kein automatischer Start
Druckpuffer ausblenden
709808/1025
00298 00299 00300 00301 00302.
00303 00304 00305 00306 00307 00308 00309 00310 00311 00312 00313 00314 00315 00316
Anderenfalls Pufferadresse nehmen Für "Ladenachricht" bewahren Nachrichtenadresse für automatischen Start nehmen Nachricht in Puffer geben
Automatikstart drucken
Adresse für "Laden und Gehen" nehmen CCA initialisieren
Kassette rufen
Fehler erzeugt?
Abzweigen wenn nicht
Puffer ausblenden
Pufferadresse nehmen
Für "Ladenachricht" bewahren
"Ausgefallene" Nachrichtenadresse nehmen
Nachricht in Puffer geben
Druck ausgefallen
Speziellen Kassettenfehler ausgeben
ACCB = "LaufIJ-Instruktion
Lauf
Tabellenseite 3
00322 00323 00326 003 28 00329 00330 00331 00332 00334 00335 00336 00337 00338 00339
Der Supervisor folgt. Er ist der
Steuerabschnitt für die gesamte Maschine
Unterbrechungen freigeben
Alpha-Betrieb zurückstellen
Einzeloperationsplatz löschen
BCD-ACC.löschen
BCD-ACC. löschen
BLABR-Ziffernzähler löschen
Zweites Byte initialisieren
Adresse für Einzeloperationsplatz nehmen
In den Instruktionszähler setzen
Haupttabellenadresse nehmen
Zeitweise in Index bewahren
Zur Anzeigeansteuerung gehen
709808/1
00342 00344 00345 00346 00347 00348 00349 00350 00351 00352 00353 00354 55 00356 00357 00358 00359 00360 00363 65
00368 00369 00370 00371 00372 00373 00374
Wenn eine Taste verfügbar war, wird ihr Code zurückgegeben
in einen Akkumulator
Laufende Suchtabellenadresse nehmen
Rückschritt-Taste?
Abzweigen wenn nicht und suchen
Anderenfalls Prüfbetrieb
Abzweigen wenn Programmbetrieb
Anderenfalls "OPS" ausführen
Irgendeine Präfixtaste gedrückt?
Abzweigen wenn ja und vergessen
Tabelleneintritt in ACCB geben
Tabellen-Terminator?
Nach "Terminator gefunden" gehen
Zwei MSB'S ausblenden
Passendes gefunden?
Ja; nach "Passendes gefunden" gehen
Nein; fortfahren
Ein Byte folgt
Index erhöhen
Suche fortsetzen
"Tabellenterminator gefunden" wird hier behandelt
Fehler oder "ODER"-Bedingung? Fehler! Zur Fehlerbehandlung gehen Tabellenadresse bewahren Tabellenstartadresse nehmen Haupttabelle? Nein, fortfahren Anderenfalls Betrieb prüfen
Tabellenseite
Fortsetzen wenn Laufbetrieb Anderenfalls Index wieder laden Über den Laufbetrieb erhöhen
709808/1025
"ODER"-Bedingung Neue Tabellenadresse nehmen Tabellenadresse wiederherstellen Neue Tabellenadresse nehmen Zeitweilig im Index bewahren Suche fortsetzen "N"-Bit ausblenden Im Fehlerwort bewahren Zur Fehlerausgaberoutine gehen Tabelleneintritt testen Bit 6 (7=0) nehmen Zur unmittelbaren Ausführung gehen Adresse HI nehmen Tabelleneintritt nehmen Verdoppeln C .in MSW schieben MSW wiederherstellen LSW wiederherstellen Neue Taste nehmen Instruktionscode nehmen Ein Einzeloperationsplatz speichern ACCB = Instruktion Programmbetrieb?
Nein; zur Ausführung gehen Anderenfalls Instruktion speichern Aufwickeln Ja; teilweise Codeoperation Für teilweise Ausführung "Teilweise Ausführung" durchführen Einzeloperationswort nehmen Teilcode addieren Wiederherstellen Neue Tabelfenadresse bilden Üb erwachung s anh ang Seitenverschiebung und C nehmen ACCB verdoppeln In LS-Wort speichern
709808/1025
00424 00425 00426 00427 00428 00429
In C verschieben MS-Wort wiederherstellen Tabellenadresse nehmen Routinenadresse nehmen ACCA (aber nicht C) löschen Zur Ausführung gehen
Tabellenseite
00430 00432 00433 00434 00435 00436 00437 00438 00439 00440 00443 00444 00445 00446 00447 00448 00449 00450 00451 00452 00453 00454 00455 00456 00457 00458
Zifferneintritt-Hinweismarke löschen
Stapelanhebung freigeben
Fehlerwort nehmen
Ja; Fehler drucken
Hinweismarke für Benutzerinstruktion nehmen
Auf nächste Instruktion zeigen
Aktualisierung bewahren
Nächste Benutzerinstruktion nehmen
Gültigkeit der neuen Hinweismarke prüfen
Durch Ausführung von (UIP)-(EOPM)
Fehler wenn ungültige Adresse
stehenbleiben?
Abzweigen wenn nicht
Bit "wir tun es" nehmen
Zur Spitze zurückkehren, wenn gestoppt
Anderenfalls Schrittmarke nehmen
Bei Schritt abzweigen
Anderenfalls Stapelmarke prüfen
Fortfahren, wenn Anhebung gesperrt
Anderenfalls Programm stoppen
Zurück zum Tastenfeld gehen
Fehler laden
In Fehlerplatz bewahren
Benutzerzustand Null nehmen
Instruktionshinweismarke zurückstellen
Fehler drucken
709808/1025
Tabellenseite
00471-00484 RDKEY1 Ist die Unterbrechungs-Dienstroutine zum Bearbeiten einer Tastenfeldunterbrechung. Der Tastencode für die gedrückte Taste wird im Pufferbereich am Platz (BKWRT+D+BKKC gespeichert, wenn der Puffer nicht voll ist. Wenn diese Routine bei RDTGL1 eingegeben wird, wird die laufende Bedingung der Verbindungsschalter gelesen. Wenn keine Veränderung zwischen (DGL) und den laufenden Stellungen festgestellt wird, wird das B-Register gelöscht.-Wenn eine Differenz vorhanden ist, zeigt das B-Register an, welche Bits verändert wurden, und die neuen Stellungen werden in TGL gespeichert.
Laufende I/O-Auswahl nehmen Tastenfeld auswählen (Kassettenbit bewahren) Ausgeben Tastencode eingeben Bits invertieren In LSB1S schieben I/O-Auswahl nehmen Tastenfeld ausblenden Tastenfeld sperren Läuft Kassette?
Abzweigen wenn nicht R/S-Taste?
Abzweigen wenn nicht Anderenfalls Bandpositions-Hinweismarke zurückstellen Null zu MSB von Lauf/Stopp-Marke Kassette abschalten Taste "Marke setzen"?
Zurück wenn nicht Läuft Programm?
Abzweigen wenn ja Anderenfalls zurück Lauf/Stopp-Marke nehmen Lauf/Stopp-Taste?
Ja; verarbeiten Tasten "Marke setzen"?
709808/1025
OO517 00518 00519 00520 00521
Ja; verarbeiten Läuft Programm? Abzweigen wenn nicht Anderenfalls Taste ignorieren 0 zu MSB
Tabellenseite
OO522 OO523 OO524 00525 00526 00527 00528 00529 00530 00531 00532 OO533 00534 00535 00536 OO537 00538 00539 00540 00541 00542 00543 00544 00545 00546 00548 OO55O
Von Lauf/Stopp-Marke
Neue Marke wiederherstellen
Taste puffern?
Abzweigen wenn ja und puffern
Schrittmarke zurückstellen
Anderenfalls zurückkehren
Lauf/Stopp-Marke prüfen
Fortsetzen wenn B7=0
ACCA vorstellen
Verbindungsmarke
Marken zurückstellen
Von Unterbrechung zurückkehren
Schrittr-Taste?
Abzweigen wenn ja
ACCB vorstellen
Eingangsmarke löschen
Marken zurückstellen
Schreibhinweismarke laden
Ist Puffer voll?
Ja, Taste ignorieren und zurückkehren
Nein, Schreibhinweismarke laden
Tastencode an nächsten Platz speichern
Schreibhinweismarke für nächste Taste erhöhen
Aktualisierte Schreibhinweismarke speichern
Von Unterbrechung zurückkehren
Verbindungsschalter werden hier gelesen
Unterbrechungen sperren
709808/1
00552 00553 00554 00555 00556 00557 00558 00559 00560
00562 00563 00564 00565 00568 00572 00573 00574
Verbindungsauswahl-Code laden
Auswahlcode ausgeben
Verbindungsbedingungen eingeben
Bits invertieren
I/O-Transfer sperren
Unterbrechungen wieder freigeben
Alte Bedingungen laden
Trigonometrie und Format ausblenden
Automatik Start und Format ausblenden
Neues Wort kombinieren
Alte Bedingungen nehmen
Neue Bedingungen speichern
Alte Bedingungen bewahren
ACCB = geänderte Bits
zurück
Routine zum Setzen von Grad, rad, Neugrad
Alte Einstellung nehmen
Alten Betrieb ausblenden
Neue Stellung anfordern
Tabellenseite
00581 00582 00583 00584 00585 00586 00587 00588 00589 00590 00591 00592
Alten Anzeigebetrieb nehmen
Alte Stellung ausblenden
Neue Stellung anfordern
Aktualisierung bewahren
Instruktions-Hinweismarke nehmen
Um Eins vorbewegen
Aktualisierung bewahren
Rundungseinstellung nehmen
Größer als
Ignorieren; RAM/Instruktions-Fehler
Bewahren
Zurück
709808/1025
Tabellenseite
00610-00619 Diese Routine steuert die Anzeige an, während auf die nächste Taste gewartet wird. Sie prüft ob eine Taste nach Anzeige jedes Zeichens und liest die Verbindungsschalter ab nach jedem vollständigen Durchlauf (16 Zeichen) durch die Anzeige. Wenn sich die Schalter geändert haben, führt ein Betriebswechsel zur Beendigung des vorherigen aufgebauten Codes (falls möglich), und eine Formatänderung führt zu einem neuen Format des Anzeigepuffers.
Pausenfaktor nehmen
00624 00625 00626 00627 00628 00628 00630 00631 00632 00633 00634 00635 00636 00637 00638 00639 00640 00641 00642 00643 00644 00645 00647 00648 00649 00650 00651 00652 00653
Bewahren Ungerade Zahl sperrt Pause Pausenfaktor bewahren Ist eine Taste verfügbar?
Abzweigen wenn ja Anzeigepuffer initialisieren Tastenpuffer leer?
Abzweigen wenn ja Unterbrechungen sperren Tastenhinweismarke erniedrigen Laufenden Tastencode laden Schleifenzähler vorstellen Nächsten Tastencode laden An neuem Platz wiederherstellen Ist Schleife fertig?
Nein; Pufferlöschung halten Ja; Unterbrechung wieder freigeben Zurück Verbindungsschalter lesen Abzweigen wenn kein Betriebswechsel Pause oder Anzeige?
Wechsel ignorieren wenn Pause Aufgebaute Instruktion nehmen Zwei-Byte-Instruktion?
Abzweigen wenn ja Auswischen den Alten Rückkehrvektor Einfügungsbetrieb gesetzt?
709808/1025
ΌΟ654 00655 00656 00657 00658 00659 00660
Abzweigen wenn nicht
Anderenfalls Einfügung beenden
System zurückstellen
Alte Bedingung wiederherstellen
Auswischen den Rückkehr-
Vektor und beenden
Die vorhergehende Operation
Tabellenseite
Anzeige-S.C. laden
Index = Pufferadresse
Pufferadresse bewahren
Letzte Pufferadresse nehmen
ASCII-Zeichen abrufen
Für Kommaprüfung bewahren
Kommaindikator (MSB) ausblenden
ASCII-Verschiebung beseitigen
Fortsetzen, wenn erlaubter Code
Anderenfalls Leerstelle durch Fehler laden
Puffer-Hinweismarke erhöhen
Aktualisierten Wert bewahren
Index auf Zeichendecodierungstabelle setzen
Im Zwischenspeicher bewahren
ZeichenverSchiebung zur Tabellenadresse addieren
Neue Adresse wiederherstellen
Index wiederherstellen
ACCB = "Leer"
Segmente abschalten
ACCB vorstellen
Komma abschalten
S.C. und Zeichenhinweismarke ausgeben
Wartezähler für "Segment ein" laden
Erniedrigen
Schleife fortsetzen
Neue Segmentinformation nehmen
709808/1025
00687 00688 00689 00690 00691 00692 00693 00694 00695 00696 00697 00699 00702 00703 00704 00705 00706 00707 00708 00709 00710 00711 00713 00715
Segmentinformation ausgeben
Originalzeichen nehemn
Abzweigen wenn kein Komma
Anderenfalls Komma-Code (CB2) laden
Komma erleuchten
Zeichenhinweismarke erhöhen
Auf neue Taste prüfen
letzte Ziffer laden, warten
Zum Warten gehen
ACCB = "leer"
Zeichen 15 abschalten
Anzeige sperren
Zurück wenn Null
Anderenfalls Ansteuerung fortsetzen
Zifferneinschaltzeit laden
Zum Warten gehen
Tastenpuffer leer?
Abzweigen wenn ja
Anderenfalls Anzeige sperren
ACCB vorstellen
Komma abschalten
Neue Taste nehmen und zurück
Zeichendecodierungstaste
Alle Eingänge müssen auf derselben Seite seinl
Tabellenseite
00717 00719
00723 00752 00753 00762
00765
Eine "Null" gibt ein gegebenes Segment frei
Codierung ist A, B, C, D, E, F, G, Dezimalpunkt in Bits 7 bis 0
Leer
Zeichen einfügen
Alle Segmente und DP
Warteschleife in einem anderen ROM für Einschaltbetrachtungen
Warten
709808/1
Tabellenseite 12
Tabellenseite 13
00788-00791 Dies ist die Fehlerausgaberoutine. Sie nimmt eine Fehlernummer auf den Basisseitenplatz "Fehler" entgegen und gibt die zugeordnete Buchstabennachricht an den thermischen Drucker (ohne Rücksicht auf das Bit" Papier alle".)
00793-00797 Alle Hauptrahmen-Fehlernummern sind positiv und spezifizieren einfach die Nummer in den Nachrichtenlisten. Zum Beispiel bedeutet 1 die erste Eingabe, 2 die zweite Eingabe usw. MSB des ersten Zeichens jeder Eingabe wird gesetzt um seinen Start anzuzeigen.
00799-00804 Alle Fehlernummern für I/O-Einrichtungen sind negativ und die ROM-Identifizierungsnummer ist in Bits B6 bis B4 enthalten. Bits B3 bis BO enthalten die Tabellenverschiebung wie oben für Hauptrahmenfehler beschrieben ist. Es ist zu beachten, daß I/O-ROMS auf maximal 15 Fehlernachrichten begrenzt sind.
00806-00809 Hauptrahmen-Fehler 1-5 sind in einem laufenden Programm maskierbar. Wenn die Benutzermarke für 6 gesetzt ist, wenn sie auftreten, wird die Marke 5 gesetzt und das Programm läuft weiter.
00811-00813 Fehler Null ist ein Spezialfehler, der von den SYNTAX-Tabellen erzeugt wird und benutzt wird, numerische Adresse zu terminieren, nachdem sie von einer nicht-numerischen Taste empfangen wurden.
00817 Lauf/Stopp-Marke nehmen
00818 Lauf?
00819 Erzeugen wir nicht
00820 Fehlernummer nehmen
00821 Maskierbare Fehler?
00822 Abzweigen wenn ja
00823 Maskierbare Fehler?
00824 Abzweigen wenn ja
00825 Maskierbare Fehler?
00826 Abzweigen wenn ja
00827 Bit für Marke 6 setzen
00828 Marke 6 gesetzt?
709808/1025
00829 00830 00831 00832 00833 00834 00835 00836
Abzweigen wenn nicht Anderenfalls ACCB vorstellen Benutzermarke 5 setzen Marken wiederherstellen Fehler auslöschen Programmablauf fortsetzen Ablauf stoppen Laufende Programmadresse nehmen
Tabellenseite
In Programmhinweismarke bewahren
Fehlernummer nehmen
Abzweigen wenn kein Fehler
Tastenunterbrechung sperren
Schleifenzähler vorstellen
"Boden"-Taste nehmen
Herunterbewegen
Hinweismarke-Zähler erniedrigen
Fortfahren wenn nicht beendet
Alte Taste zurück auf Spitze setzen
Schreibindikator nehmen
Puffer voll?
Abzweigen wenn ja
Anderenfalls diese Eingabe registrieren
Neuen Indikator bewahren
Systemunterbrechung wieder freigeben
Vorherige Instruktion beenden
ACCA vorstellen
Tastenpuffer leeren
Zifferneingabe beenden
Stapelanhebung freigeben
Puffer ausblenden
Hinweismarke vorstellen für
Die Ladungsnachricht routine
Tabellenhinweismarke für Fehlernachricht nehmen
709808/1025
00863 00864 00865 00866 00867 00868
00869 00870 00871 00872 00873 00874 00875 00876 00877 00878 00879 00880 00881 00882 00883 00884 00891
Fehler nehmen Abzweigen wenn Hauptrahmenfehler Anderenfalls I/O-Identifizierungsnummer ausblenden ROM-Adresse erzeugen Fehlertabellenverschiebung nehmen
In ROM-Identifizierungszwischenspeicher (LSB'S) bewahren
Index = Fehlertabellenadresse -1 ACCA = Fehler ACCA = Tabellenverschiebungsnummer Tabellensuchadresse vorschieben Laufende Eingabe nehmen Weitersehen wenn positiv Anderenfalls Verschiebungsnummer erniedrigen Fortfahren wenn nicht Fehlerwort löschen ACCA für LDMSG nicht -0 machen Fehlerbemerkung zum Puffer Fehler drucken Alpha-Betrieb?
Abzweigen wenn ja Anderenfalls Spitze zurückkehren
"Zum Alpha" ausführen Division durch Null
Tabellenseite
00895 00897 00899 00901 00903 00905 00907 00909 00911 00913
I/O-Vorrichtung Unerlaubtes Argument Speicherüberlauf Etikett nicht gefunden GOSÜB-Überlauf Fohlendes GOSUB Taste nicht definiert Unrichtige SYNTAX Fehlende FOR-Anweisung Summenprüfungsfehler
709808/102
00915 Datei zu klein
00917 Verifizierung falsch
00919 Falscher Dateityp
00921 Datei nicht gefunden
00923 Ende des Bandes
00925 Kassette draußen
00927 Beschütztes Band
00929 Gesicherter Speicher
00931 Papier zu ende
00933 Unerlaubte Adresse
Tabellenseite 16
00937 Ende
SYMBOLTABELLE
Error = Fehler
Tabellenseite 17
Tabellenseite 18
00161-00170 Es folgen die SYNTAX-Tabellen für CJ. Diese Tabellen definieren zusammen mit der Supervisor-Suchroutine die vom Tastenfeld empfangenen Tastenfolgen. Es gibt vier mögliche Aktionen, die ausgeführt werden können, nachdem ein Zusammenpassen mit dem laufenden Tastencode gefunden wurde: 1) Unmittelbare Ausführung einer Funktion, 2) Zurückstellung auf eine neue Tabelle für weiteres Suchen, 3) Sprung zu einer gegebenen Adresse und Ausführung eines Zwischencodes, 4) Hinzufügung eines Aufbaucodes zum Instruktionsregister und Rückstellung auf eine neue Suchtabelle.
00179 Zurück
709808/1025
00197 Laden und laufen
00199 Einfügen
00201 Herausnehmen
00204 Speicherherausnahme
00210 Hier beginnt die Haupttabelle
Tabellenseite 19
00250 Druck
00254 Herunterrollen
00256 Hochrollen
Tabellenseite 20
00270 Verschieben
00272 Löschen
00295 Eingeben
00297 Zurückspulen
00299 Programm laden
00301 Auflisten
00303 Programm aufnehmen
00305 Ende
00312 Etikett
Tabellenseite 21
00321 Schritt
00322 Rückschritt
00326 "ODER" für Laufbetrieb
00327 "ODER" für Programmbetrieb 00361 SYNTAX-Fehle
00363 Sekundärtabellen
00365 Löschen
709808/10
Tabellenseite 22
00392 SYNTAX-Fehler 00400 (Alpha-Tabelle) 00410 Verschieben
Tabellenseite 23
00434 Verschieben
00436 Band markieren
00439 Grad
00441 Rad
00443 Neu-Grad
00445 Festkommabetrieb
00448 Gleitkommabetrieb
00451 Gleitkommabetrieb 3
00454 Nach Alpha
00456 Runden
00458 Verifizieren
00460 • Daten zurückrufen
00462 Identifizieren
00476 Von D.MS
00482 Nummer von R1S
00484 Stapel auflisten
Tabellenseite 24
00504 Aufnahmegesichert
00506 Binär laden
00508 Binär laufen
00510 Binär aufnehmen
00512 Gesichert binär aufnehmen
00514 P-Band
00540 SYNTAX-Fehler
709808/1025
Tabellenseite 25
00542 Zum Etikett gehen
00546 Nach X gehen
00549 (Alpha-Tabelle)
00551 GOSUB-Etikett
00558 (Alpha-Tabelle)
00567 SYNTAX-Fehler
00578 Tabellender dritten Ebene
Tabellenseite 26
00611 (Zifferntabelle)
00625 STO löschen (Alphä-Register löschen)
00634 (Alpha-Tabelle)
00640 (Alpha-Tabelle)
Tabellenseite 27
00666 Fehler Null (Spezialfall)
Tabellenseite 28
00673 Aufbauroutine für Programmsprachenadresse
00675-00680 Nach Eingabe und Fall durch diese Liste von Erhöhungs-Instruktionen enthält ACCA die richtige BCD-Ziffer, die durch'"den Benutzer eingegeben wurde.
00684 1 zum Ziffernzähler addieren
00685 ACCB für Rotation setzen
00686 Übertrag löschen
00687 W1 nach links rollen (LSW)
00688 W2 mit übertrag rollen
00689 ' Zähler erniedrigen
00690 Fortfahren wenn nicht Null
7 09808/1025
00691 00692 00693 00694 00695 00696 00697 00698 00699 00700 00701 00702 00703 00704 00705 00706 00707 00709 00711 00712 00714-00715
"ODER" neue BCD-Ziffer W1 wiederherstellen Ziffernzähler nehmen Instruktion nehmen Adresse mit vier Ziffern?
Abzweigen wenn ja Adresse mit drei Ziffern?
Abzweigen wenn ja Anderenfalls zwei Ziffern Abzweigen wenn 2 eingegeben Anderenfalls nächste Taste nehmen Vier Ziffern eingegeben?
Abzweigen wenn ja Anderenfalls nächste Taste nehmen Drei Ziffern eingegeben?
Abzweigen wenn ja Anderenfalls nächste Taste nehmen Behandlung des Dezimalpunkt-Terminators BCD/Binär-Umwandlung Instruktionstyp prüfen
Die folgende Routine führt eine BCD/Binär-Umwandlung auf W1 und W2 durch
00718-00722 BCD/Binär-Umwandlung auf W1 und W2 mit binärem Resultat in TP7 und TP7S. Resultat ist gleich L+64H+32H+4H, wobei L = binärer Wert der unteren zwei BCD-Ziffern und A = binärer Wert der oberen zwei BCD-Ziffern
Tabellenseite 29
00724 00725 00726 00727 00731 00733 00739 00741 00743 00747
MS-BCD-Ziffern nehmen In binär umwandeln ACCB für Multiplikationen vorstellen Ergebnis mit 4 multiplizieren 4* (hohe Binärziffern) bewahren mit 32 multiplizieren 32* (hohe Binärziffern) bewahren mit 64 multiplizieren 64H+32H ausführen 64H+32H+4H ausführen
709808/1025
00748 Untere zwei BCD-Ziffern nehmen
00749 In binär umwandeln
00750 L+34H+32H+4H ausführen
00752 Abzweigen wenn kein Übertrag
00753 Anderenfalls TP7 um eins vorschieben
00754 Index löschen
00755 BCD-Plätze löschen
00756 Mit Binärwerten in TP7 und TP7+1 zurückkehren
00758-00759 Diese Routine führt eine BCD-Binär-Umwandlung auf ACCB-Bit zurückgeführten Binärzahlen in ACCA aus.
00761 ACCA = BCD-Ziffern
00762 ACCA = LS-Ziffer
00763 ACCB = MS-Ziffer
00764 Binär = MS-Ziffer * 10+LS-Ziffer 00769 ACCA = Binär
00771-00773 Diese Routine prüft den Instruktionstyp, prüft diesen Typ auf Überlauf und fügt Adressen- oder Etikett-Information ein, wenn gültig
00776 Mit Instruktion vergleichen
00777 Abzweigen wenn JMP oder JSR
00778 Datenspeicherungsinstruktion?
Tabellenseite 30
00779 Mit Instruktion vergleichen
00780 Abzweigen wenn ja
00781 LS-Binär nehmen
00782 In Ordnung; Daten bewahren
00783 In Supervisor fortfahren
00784 MS-Binär nehmen
00786 Fehler wenn ja
00787 LS-Binär nehmen
00788 Übertrag = B7
00789 LSB von MSW = B7
00790 LSB wiederherstellen
00791 Im zweiten Byte bewahren
00792 "ODER" in Instruktion
709808/1025
00793 Mit Adresse wiederherstellen
00794 In Supervisor fortfahren
00795 MS-Binär nehmen
00796 In Ordnung wenn Null
00797 Fehler laden
00798 Im Fehlerwort bewahren
00799 Zum Fehlerausgang springen
00801 Alpha-Tabellen-Teilausführungscode
00810-00813 ACC = 7, wenn "H"-Taste und ACCA = 0, wenn "A"-Taste.
00817 Instruktion nehmen
00819 Ja; einzelnes Byte
0082O JMP oder JSR?
00821 Abzweigen wenn ja
00822 Alpha-Taste zu groß?
00823 Abzweigen wenn ja
00826 Neue Instruktion wiederherstellen
00827 Tasten-"Nummer" zur Etikettverschiebung addieren
00828 Im zweiten Byte bewahren
00829 In Supervisor fortfahren
00830 Zwei-Byte-Instruktion?
00831 Abzweigen wenn ja
00832 Alpha-Taste zu groß?
00833 Abzweigen wenn ja
Tabellenseite 31
00834-00837 Neue Instruktion = Alte Instruktion - 264 multipliziert mit 5 + ACCA
00840 + "Tastennummer"
00841 Neue Instruktion wiederherstellen
00842 In Supervisor fortfahren
00843 JMP-Instruktion?
00844 Abzweigen wenn ja
00845 JSR-Etikett laden
00846 Bewahren
00847 JMP-Etikett laden
00848 Fortfahren
709808/1025
Tabellenseite 32
00859 Diese Routine behandelt die Ausführung der vom Benutzer definierbaren Funktion I
00876 Instruktion nehmen
00877 Abzweigen wenn "Ruf"-Instruktion
00878 Alpha-Taste bewahren
00879 Schalterstellung nehmen
00880 Überwachungsanhang?
00881 Abzweigen wenn nicht
00882 Anderenfalls drucken
00883 Fehler "Papier zu Ende"?
00884 Abzweigen wenn ja
00885 Alpha-Taste wiederherstellen
00886 Etikett-Verschiebung addieren
00887 Etikett finden
00888 Abzweigen wenn gefunden
00889 Fehler laden
00890 Bewahren
00891 Ausgeben
00892 Routinenadresse bewahren
00893-00896 Prüfen·ob zwei identische Etiketten aufeinanderfolgen, und, falls zutreffend, die Rückkehr nicht stapeln.
00897 Stapelhinweismarke nehmen
00898 Subroutinenüberlauf?
00899 Abzweigen wenn nicht
00900 Fehler laden
00901 Ausgeben
00902 Programmhinweismarke LO nehmen
00903 Bewahren
00904 Programmhinweismarke HI nehmen
00905 UDF-Marke addieren
00906 Bewahren
00907 ACCA = alles Einsen
00908 R/S-Marke setzen 00910 Schrittmarke löschen
709808/1025
Tabellenseite 33
00911 Tastenpuffer leeren
00912 Fortfahren
00914 Aufbau der "Formatanweisung"
00916 "Alpha"-Nummer bewahren
00917 Alpha-Taste zur Instruktion addieren
00918 Sicherstellen, daß MSB = 0
00919 Instruktion wiederherstellen
00920 Alpha-Ausgabe-Instruktion?
00921 Abzweigen wenn ja
00922 SYNTAX-Fehler laden
00923 Hauptrahmen-RufInstruktion?
00924 Fehler wenn ja
00925 In Supervisor fortfahren
00926 Zum Tastenfeld-Alpha gehen
Tabellenseite 34
00935 Ziffernannahmetabelle für Marken- und RufInstruktionen
00937-00938 Die folgende Tabelle empfängt I/O-Einrichtungs-Nummern und packt sie in die im Aufbau befindliche Instruktion
00947-00949 Vorrichtungs-Rufnummer in die vier MS-Bits von ACCA bewegen.
00951 In der Instruktion bewahren
00952 Neue SYNTAX-Tabellenadresse nehmen
00953 Für nächste Suche, bewahren
00954 Nächste Taste nehmen
00956-00957 Die folgende Tabelle empfängt Markennummern-Information und packt sie in die im Aufbau befindliche Marken-Instruktion
00968 Laufende Instruktion nehmen
00969 Abzweigen wenn nicht eine Markeninstruktion
00970 Marke 1 = "Marke 0"
00971 Neue Instruktion erzeugen
00972 Bewahren
00973 Ausführen
709808/1025
00974 Rundungseinstellung bewahren
0097 5 Ausführen
00977 Routine für Programmspeicherlöschung
00979 Index = Benutzerzustand
00980 NOP zum laufenden Zustand
00981 Hinweismarke vorschieben
00982 Ende des Programmspeichers?
00983 Abzweigen wenn nicht
00984 Zur speziellen "END"-Anweisung gehen
Tabellenseite 35 00987 Ende SYMBOLTABELLE Error = Fehler
Tabellenseite 36
00222-00225 Anzeige-Formatgeber für CJ. Tm Laufbetrieb wird das X-Register angezeigt. Bei eingestelltem Programmbetrieb werden der Programmzähler und die Bestimmungsadresse angezeigt
00227 Welcher Betrieb?
00228 Abzweigen wenn Programmbetrieb
00229 Alpha-Marke gesetzt?
00230 Abzweigen wenn nicht
00231 Anderenfalls Puffer löschen
00232 "Alpha" anzeigen
00233 Anderenfalls Laufformatgeber benutzen
00234 Index = Benutzerzustand
00235 Unrichtige Programmhinweismarke aktualisieren
00236 Lauf?
00237 Wenn ja, hier kein Format geben
00238 Anderenfalls Puffer löschen
709808/1025
00239 00240 00241 00242 00243 00244 00245 00246 00247 00248 00249 00250 00251 00253 00254 00255 00256 00257 00266 00270
Systemadressenverschiebung beseitigen
Programmhinweismarke nehmen
Systemverschiebung wiederherstellen
In BCD umwandeln
Pufferadresse nehmen
"P" nehmen
Zeichenzählung setzen
Zeichen laden
Ziffernzähler setzen
Ziffern laden
Einfügungsbetrieb?
Abzweigen wenn nicht
Pufferhinweismarke positionieren
"Einfügungs"--Zeichen nehmen
bewahren
Laufende Instruktion nehmen
Anzeige erleuchten?
Abzweigen wenn ja
Abzweigen wenn UPP in Datenregistern ist
Ziffern laden und zurückkehren
Tabellenseite
00272 00273 00274 00275 00276 00277 00278 00279 00280 00281 00282 00283 00284
"Alpha"-Nachricht nehmen
Zeichenzählung nehmen
Zeichen bewahren
Nächsten Zeichen nehmen
Pufferhinweismarke positionieren
Zeichenzählung erniedrigen
Fortfahren wenn nocht nicht beendet
Anderenfalls zurückkehren
BCD-Adressen nehmen
Zum Zwischenspeicher für Ladung bewegen
Pufferhinweismarke setzen
Ziffernzähler setzen
Ziffern laden
709808/1025
26331S1
Hinweismarke setzen Instruktion für Nachrichtentyp decodieren "LBL"-Nachricht nehmen Zeichenzählung nehmen Laden und zurückkehren "A-"Nachricht nehmen Zeichenzählung nehmen Laden und zurückkehren Eins aufstellen "REG"-Nachricht nehmen Zeichenzählung nehmen Laden und zurückkehren DGTS überträgt BCD-Ziffern zum Puffer Zeichen/Schiebe-Zähler in ACCB laden Byte in Puffer löschen LSW nach links rollen MSW nach links rollen Bit in Pufferwort rollen Ziffern/Verschiebungs-Zähler erniedrigen Schon vier Verschiebungen?
Nein, nächstes Bit rollen Ja, Ziffern/Schiebe-Zählerverfahren ACCB mit gerade geladener Ziffer laden In ASCII umwandeln Im Puffer wiederherstellen Ziffern/Schiebe-Zähler wieder laden Fertig?
Ja, zurück Nein, vordere Null geladen?
Ja, nächste Ziffer über sie laden Nein, Pufferhinweismarke erhöhen
Nächste Ziffer in nächsten Pufferplatz laden
709808/1025
Tabellenseite 38
00331-00335 Diese Routine ist der Ausführungscode für alle JSR-Anweisungen. Sie prüft auf Niveau-Überlauf (größer als 5), bewahrt die Rückkehradrssse im Stapel und überträgt die Steuerung an die richtige JMP-Routine für den gewünschten Typ der Übertragung.
003 37 JSR-Marke setzen
00338 Auf Eins
003 39 Alten Stapel auswischen
00340 Rückkehr-Vektor
00341 Stapel auf Index
00342 Subroutinen-Überlauf?
00343 Abzweigen wenn nicht
00344 Fehler laden
00345 Im Fehlerwort speichern
00346 Zurück zum Supervisor
00347 Anweisungshinweismarke nehmen
00348 Instruktion nehmen
003 49 Abzweigen wenn einzelnes Byte
00350 Anderenfalls Rückkehrhinweismarke erhöhen
00351 Im Zwischenspeicher bewahren
00352 LS-Byte nehmen
00353 In den Stapel schieben
00354 MS-Byte nehmen
00355 In den Stapel schieben
00356 Welcher Typ von JSR?
00357 Abzweigen, wenn ABS oder LBL
00359 Abzweigen wenn ja
00360 Anderenfalls JSR LBL X ausführen
00361 Absolut oder Etikett?
00362 JSR LBL ausführen
00363 JSR ABS ausführen
00365-00367 Diese Routine führt absolute Sprünge und absolute JSR1S in Abhängigkeit vom Eingangspunkt aus.
00369 Alten Stapel auswischen
00370 Rückkehr-Vektor
00371 JSR-Marke löschen
709808/1025
00372 Index = Instruktionsadresse
00373 CCR = erstes Byte
00374 ACCA = MSB'S der Adresse 003 75 ACCB = LSB1S der Adresse
00376 B7 = B8 der Adresse
00377 Übertrag = B7 der Adresse
00378 B7 von ACCB = B7 der Adresse
00379 Adresse = Adresse + 256
00380 LS-Bits bewahren
00381 MS-Bits bewahren
Tabellenseite 39
00382 Adressen-EOPM ausführen
00384 Fehler wenn Adressei EOPM
00385 Adresse nehmen
00386 ACCB = Instruktion vorhanden 003 87 Mögliches zweites Byte?
00388 Zustand Null?
00389 Ja; fortfahren
003 90 Nein; erstes Byte prüfen
003 91 "erstes" Byte nehmen
00392 2-Byte-Instruktion?
00393 Abzweigen wenn nicht
00394 Adresse erhöhen
00395 Programmhinweismarke aktualisieren
00396 Aufbauen
00397 Instruktionshinweismarke aktualisieren
00398 Zum Supervisor zurück
00400-00404 Diese Routine setzt die Benutzerinstruktions-Hinweismarke und die Benutzerprogramm-Hinweismarke auf die Adresse des in Frage stehenden Etiketts wenn sie dieses Etikett findet. Wenn das Etikett nicht existiert, ergibt sich ein Fehler.
00406 Alten Stapel auswischen 00407. Rückkehrvektor 00408 JSR-Marke löschen
709808/1025
00409 Instruktionsadressen nehmen
00410 ACCA = Etikett
00411 Etikett auffinden
00412 Abzweigen wenn Etikett gefunden
00413 Fehler laden
00414 Im Fehlerwort bewahren
00415 JSR-Marke testen
00416 Abzweigen wenn nicht JSR
00417-00418 Anderenfalls den gespeicherten Rückkehrvektor auswischen
00419 Zurück zum Supervisor
00421-00425 Diese Routine empfängt ein Etikett in ACCA und kehrt mit der R/W-Adresse dieses Etiketts in das Index-Register zurück. Die Suche beginnt bei Zustand 0 des Benutzerprogramms. Wenn kein Etikett gefunden wurde, wird das N-Bit gesetzt.
00427 Startadresse initialisieren
00428 ACCB = Etikettinstruktion
00429 Adresse erhöhen
00430 Ende des Speichers?
00431 Abzweigen wenn ja
00432 Etikett-Instruktion?
00433 Abzweigen wenn nein
00434 Anderenfalls Adresse erhöhen
00435 Richtiges Etikett?
00436 Nein, suchen
Tabellenseite 40
00437 Ja; zurück
00438 N-Bit (Fehler) setzen
00439 Zurück
00441-00446 Diese Routine setzt die Benutzerinstruktions-Hinweismarke und die Benutzerprogramm-Hinweismarke auf den absoluten Wert des ganzzahl Teils des X-Registers. Wenn die resultierende Adresse außerhalb des Bereichs liegt, entsteht ein Fehler und es findet keine Änderung der Hinweismarken statt.
00448 Alten Stapel auswischen
00449 Rückkehrvektor
709808/1025
00450 JSR-Marke löschen
00452 Abzweigen wenn negativer Exponent
00453 Exponent erhöhen
00454 Mit +4 vergleichen
00455 Abzweigen wenn größer
00456 X-Register umwandeln
00457 MSB'S des Ergebnisses nehmen
00458 Seitenadresse erhöhen
00459 LS-Bits nehmen
00460 Auf gültige Adresse prüfen
00461 Fehler laden
00462 Auf JSR prüfen
00463 Adresse Null nehmen
00464 Fortfahren
00466-00470 Diese Routine setzt -die Benutzerinstruktions-Hinweismarke und die Benutzerprogramm-Hinweismarke auf die die Adresse des im X-Register gefundenen Etiketts. Wenn das Etikett gefunden wird, tritt keine Änderung der Hinweismarken auf.
00472 Alten Stapel auswischen
00473 Rückkehrvektor
00474 JSR-Marke löschen
00475 ACCA für Etikett Null vorstellen
00477 Wenn negativ, Etikett Null finden
00478 ACCB = Anzahl der internen Ziffern
00479 Mehr als 2?
00480 Fehler wenn ja
00481 X-Register umwandeln
00482 Binäres Resultat nehmen
00483 Nach Etikett suchen
00484 Abzweigen wenn gefunden
00485 Anderenfalls Fehler
00487-00491 Diese Routine überträgt den ganzzahl Teil des X-Registers nach W1 und W2 für eine BCD/Binär-Umwandlung. Nach Eingabe ist ACCB = Anzahl der ganzzahligen Ziffern und Index = Registeradresse
709808/1
Tabellenseite 41
004 9 3 Spezialeingabe nur für X-Register
00495 Index vorstellen
00497 Vier Mantissenziffern nehmen
004 9 8 In BCD-Umwandlungsworten bewahren
00499 ACCB = -(Ziffernverschiebungszählung)
00500 Keine Verschiebung; zurück
00501 Anderenfalls Drehzähler laden
00502 Wort mit höchstem Stellenwert verschieben
00503 LSW drehen
00504 Drehzähler ernidrigen
00505 Fortfahren wenn nicht Null
00506 Ziffern/Schiebe-Zähler erhöhen
00507 Fortfahren, wenn nicht Null
00508 In Binär umwandeln
Tabellenseite 42
00532 Spezialangabe für "Lösch"-Routine
00534 Speichersicherungsinformation nehmen
00535 Sicherungsbit löschen 0053 6 Marke wiederherstellen 00537 Einfügungsbetrieb löschen
00539 Diese Routine führt die Endanweisung aus
00541 Stapelhinweismarke zurückstellen
00542 Benutzermarke löschen
00543 R/S-Marken löschen
00544 256 = Benutzerzustand Null
00545 UPP vorstellen und zurückkehren
Tabellenseite 43
00554-00556 Diese Routine behandelt die Rückkehr von der Subroutineninstruktion. Sie prüft erst, ob ein JSR
i: u: / 1 fi? r,
00558 00559 00560 00561 00562 00563 00564 00565 00566 00567 00568 00569 00570 00571 00572 00573 00574 00575 00576 00577 00578
ausgeführt worden ist. Wenn nicht, ergibt sich ein Fehler
Alten Stapel auswischen
Rückkehrvektor
Stapel auf Index
Wurde GOSUB ausgeführt?
Abzweigen wenn nicht
Anderenfalls MSW der Adresse nehmen
UDF zurück?
Abzweigen wenn ja
In Instruktionshinweismarke bewahren
LSW der Adresse nehmen
In Instruktionshinweismarke bewahren
Zurück zum Supervisor
Fehler laden
Im Fehlerwort bewahren
Zurück zum Supervisor
UDF-Marke entfernen
Programmhinweismarke HI wiederherstellen
Programmhinweismarke LO nehmen
Wiederherstellen
Lauf stoppen
Zurück zum Tastenfeld
Tabellenseite
Ende
SYMBOLTABELLE
Error = Fehler
Tabellenseite
Diese Routine verarbeitet die Lauf/Stopp-Taste
709808/1025
00224 00225 00225 00227 00228 00230 00231 00232 00233 00235 00236 00236 00238 00239 00240 00241 00242 00243 00244 00245 00246 00247 00248 00249
Unterbrechungen sperren R/S-Marke nehmen B7 auf C schieben Abzweigen wenn B7 1 war Abzweigen wenn B6 1 ist (Lauf)
Programmhinweismarke nehmen 1 subtrahieren
In Instruktions-Hinweismarke bewahren Tastenpuffer löschen Schrittmarke löschen Neue Marke wiederherstellen Unterbrechungen freigeben Zurück
R/S-Marke löschen Instruktions-Hinweismarke nehmen Programmhinweismarke bewahren ACCB vorstellen Eingabemarke setzen Marken wiederherstellen Marke speichern Zurück wenn B6 = Null auf B7 Zurück
Tabellenseite
00258 00262-00266
00268 00269 00270 00271 00272 00273
SUBADD-16 Bit - zweier Komplement-Addition/Subtraktion
Diese Subroutine führt entweder TP7-TP6 oder TP7+TP6 aus abhängig vom Eingangspunkt, wo TP7 und TP6 im Speicher gespeicherte 16-Bit-Worte sind. Die Inhalte des Index werden zerstört. Das Ergebnis wird in TP7 und TP7+1 gespeichert.
MSB'S einer-komplementieren LSB'S einer-komplementieren Index = Anzahl
Für zweier-Komplement erhöhen Anzahl wiederherstellen LS-Bits nehmen
7098 0 8/1025
OO274 00275 00276 00277 00278 00279
Addieren
Wiederherstellen
MS-Bits nehmen
Addieren
Wiederherstellen
Zurück
Tabellenseite
00286-00289
Diese Routine führt eine Binär/BCD-Umwandlung auf dem Indirect-Register durch. Maximaleingang ist Dezimal 9999. Die BCD-Ziffern werden in T2 und T1 mit MS-Ziffern NT2 gespeichert.
Binärzahl bewahren
LS-BC-Akkumulatbr löschen
MS-BCD-Akkumulator löschen
Subtraktion von 1000 vorbereiten
Subtraktionswert bewahren
TP7=TP7+TP6 ausführen
Wiederherstellen wenn negativ
Anderenfalls LS-BCD-Wort erhöhen
Subtraktion fortsetzen
Binärzahl wiederherstellen
BCD-Ziffer speichern
Subtraktion von 100 vorbereiten
1001S ausführen
Subtraktion von 10 vorbereiten
10'S ausführen
LS-BCD-Ziffer nehmen
Mit LS-BCD-Wort kombinieren
Resultat wiederherstellen
Umwandlung komplett
LSB1S des Subtraktionsworts nehmen
Für Test nach rechts verschieben
ACCB = Drehzählung
C für Drehung löschen
LSW nach links drehen, C = B7
00315 00316 00317 00318 00319 00320 00321 00322
MSW nach links drehen, BO = C
Drehzähler erniedrigen
Schon vier Drehungen?
LSB nach C verschieben
C = 1 bedeutet 10's fertig
Wiederverschieben
C = 1 bedeutet 100's fertig
1000's fertig durch Fehler
Tabellenseite
00331 Benutzermarke-Subroutinen 00333 Benutzermarke setzen
00335-00337 Diese Routine hat acht Eingangspunkte, jeweils einen für jede Benutzermarke. Bei Eintritt muß ACCA Null sein und das Übertragsbit muß gesetzt sein.
Das C-Bit ist gesetzt und durch ACCA rotiert,
mit Stopp an der richtigen Position für jede Marke
B7 = Marke 8, während BO = Marke
"ODER" im Benutzermarkenwort
Neuen Zustand wiederherstellen
Zurück
Subroutine für Benutzermarkenlöschung
Diese Routine hat acht Eingangspunkte, jeweils einen für jede Benutzermarke. Bei Eingang muß ACCA Null sein und das Übertragsbit muß gesetzt sein.
Das C-Bit ist gesetzt und durch ACCA rotiert, mit Stopp an dem richtigen Platz für jede Marke. B7 = Marke 8, während BO = Marke
ACCA einer-komplementieren
Marke löschen
Markenwort wiederherstellen
Zurück
Subroutine für "IF"-Markensetzung
Diese Routine hat acht Eingangspunkte, jeweils einen für jede Benutzermarke. Bei Eingang muß ACCA Null sein und das Übertragsbit muß gesetzt sein.
00376-00379 Das C-Bit ist gesetzt und durch ACCA rotiert, mit
00339-00344
00347 00348 00349 00351 00353-00355
00357-00363
00365 00366 00367 00368 00370 00372-00374
709808/1025
Stopp am richtigen
Tabellenseite 4
00380-00382
00384 00385 00386 00387 00389 00391-003
00395-00401
Platz für jede Marke. B7=Marke 8/ während BO-Marke
ACCA = Markenzustand
ACCA = 0 bedeutet nicht gesetzt
Marke gesetzt; zurück
Programmhinweismarke modifizieren und zurückkehren
Subroutine für "IF"-Markenlöschung
Diese Routine hat acht Eingangspunkte, jeweils einen für jede: Benutzermarke. Bei Eingang muß ACCA Null sein und das Übertragsbit muß gesetzt sein.
Das C-Bit ist gesetzt und durch ACCA rotiert, mit Stopp an dem richtigen Platz für jede Marke. B7 = Marke 8, während BO = Marke
ACCA = Markenzustand
ACCAO bedeutet "Marke gesetzt"
nicht gesetzt; zurück
Tabellenseite
Tabellenseite
Ende
SYMBOLTABELLE Error = Fehler
709808/1025
Tabellenseite
00222 00225 00226 00227 00228 00229 00230 00231 00232 00233 00235 00236 00239 00240 00243 00245 00246 00255 00257 00258 00259 00260 00261 00262 00263 00264 00265 00266 00267 00268 00269 00270 00271
Diese Routine für IF-, IF+ und IFO aus
Abzweigen wenn ja
Anderenfalls Instruktions-Hinweismarke nehmen
Eine Instruktion überspringen
Laufende Instruktion nehmen
Zwei-Byte-Instruktion?
Abzweigen wenn nicht
Anderenfalls vorwärts bewegen
Hinweismarke wiederherstellen
Zurück
Mantissenvorzeichen nehmen
Nicht angetroffen wenn negativ
Mantissenvorzeichen nehmen
Nicht angetroffen wenn positiv
X nehmen
Abzweigen wenn nicht
Anderenfalls Test fortführen
Zurück wenn Bedingung angetroffen
"Rückwärtssinn"-Marke setzen
Null auf weniger als Marke
Index vorstellen
X-Register übertragen
Index vorstellen
Subtrahieren
Mantissenvorzeichen nehmen
Mantissenziffer nehmen
Index vorstellen
X-Register wiederherstellen
Vorzeichen des Ergebnisses testen
Abzweigen wenn negativ
Anderenfalls auf Null testen
Abzweigen wenn O-Ergebnis
tiberspringungsmarke nehmen
709808/1025
Tabellenseite
00272 00273 00274 00275 00276 00279
Rückwärtssinn wenn gesetzt Anderenfalls Sinn festhalten Nicht angetroffen wenn X-Y Überspringungssinn zurückhalten Anderenfalls Sinn umkehren
Diese Routine behandelt die Ausführung aller "FOR-"Anweisungen
C-Register-Ädresse nehmen
Bewahren
Schleifen-Anhebungsadresse nehmen
Instruktion "FOR C" nehmen
Bewahren
B-Register-Adfesse nehmen
"FOR B"-Instruktion nehmen
Bewahren
A-Register-Adresse nehmen
"FOR A"-Instruktion nehmen
Schleifenvariablen-Adresse bewahren
Schleifenerhöhung nehmen
Schleifenanhebungs-Adresse bewahren
"FOR"-Instruktion bewahren
Arithmetische Zwischenadressen nehmen
X-Register übertragen
Schleifenerhöhungs-Adresse nehmen
Ins X-Register bewegen
Schleifenvariablen-Adresse nehmen
1 addieren
Schleifenvariablen-Adresse wiederherstellen
Durch Äkutalisierte Zahl ersetzen
Ende der Speicherhinweismarke nehmen
Seitenadresse erniedrigen
Bewahren
Instruktionshinweismarke nehmen
"Next"-Instruktion nehmen
709808/1025
00309 Verschiebung beseitigen
00310 Mit 2 multiplizieren
00311 Mit 4 multiplizieren
00313 Alpha-Register-Verschiebung addieren
00314 In LS-Bits der Hinweismarke bewahren
00315 Alpha-Register-Hinweismarke nehmen
00316 "Schleifenende"-Prüfung vornehmen
00317 Vorzeichen des Ergebnisses nehmen
00318 Mantissenziffer nehmen
00319 Zwischenadressen für X-Register nehmen
00320 X-Register wiederherstellen
00321 O-Ergebnis?
00322 Fortfahren wenn ja
00323 Schleifenerhöhungs-Adresse nehmen
00324 Vorzeichen verschieden?
00325 Fortfahren wenn nicht
00326 Anderenfalls zurück
Tabellenseite 54
00327 Laufende Benutzeradresse nehmen
00328 "FOR"-Instruktion für Suche nehmen
00329 Benutzerzustand schon Null? 003 30 Fehler wenn ja
00331 Anderenfalls Such-Hinweismarke erniedrigen
00332 Ist dies die "FOR"-Anweisung?
00333 Abzweigen wenn nicht
00334 Anderenfalls neue Instruktionsadresse bewahren
00335 Zurück
00336 Fehler laden
003 37 Bewahren für Ausgabe
003 38 Zurück
003 41 Fließ, "1"
709808/1025
OO364-OO369
Diese Routine behandelt alle 7 8 Speicherregister-Instruktionen. Sie schließen Registerarithmetik/ Indirect usw. für alle RückrufInstruktionen ein. Das X-Register wird zum letzten X kopiert. TP7, T1 und T2 und T3 werden von dieser Routine benutzt. Die Gleitkomma-Routinen werden abgerufen falls notwendig.
Eingangspunkt für Division Eingangspunkt für Multiplikation Eingangspunkt für Subtraktion Eingangspunkt für Addition Arithmetikoperator bewahren Rückrufmarke löschen Zifferneingabe im Gang? Abzweigen wenn nicht Anderenfalls beenden MSB setzen Anhebung freigeben Rückrufmarke aufsetzen Instruktionsadresse nehmen Instruktion nehmen In ACCA bewahren UND in T3 Alpha-Register? Abzweigen wenn nicht Ein oder zwei Bytes? Abzweigen wenn zwei Bytes Instruktionsverschiebung entfernen In BCD umwandeln Registernummer nehmen In R/W-Adresse umwandeln Zweites Byte nehmen Verschiebung entfernen Register im Benutzerspeicher? Abzweigen wenn ja Basisseitenadresse nehmen Für Modifikation bewahren Adresse erzeugen Ende der Speicherseite nehmen
7 0 9808/1025
00404 00405 00406 00407 00408 00409 00412 00413 00414
Eine aufstellen
In MS-Bits der Adresse bewahren
Adresse auf der Seite nehmen
In LS-Bits der Adresse bewahren
Verschiebung entfernen
Registernummer mit acht multiplizieren
Zur Adresse addieren
Wiederherstellen
Index = Adresse
Tabellenseite
00415 00416 00417 00418 00419 00420 00421 00422 00423 00424 00425 00426 00427 00428 00429 00430 00431 00432 00433 00434 00435 00436 00437
Fortsetzen Zweites Byte nehmen Adresse auf B7 schieben MSB zum übertrag Übertrag nach B7 Systemadresse erzeugen Abzweigen wenn Fehler Instruktion nehmen Möglich Indirekt? Abzweigen wenn ja Möglich Indirekt? Abzweigen wenn nein Möglich Indirekt? Abzweigen wenn nein Für Register Null vorstellen Registerexponent nehmen Register Null wenn negativ ACCB = Anzahl der Ziffern Größer als Abzweigen wenn ja Neue Adresse erzeugen MS-Binär nehmen Fehler wenn nicht Null
709808/1025
00438 00439 00440 00441 00442 00443 00444 00445 00446 00447 00448 00449 00450 00451 00452 00453 00454 00455 00456 00457 00458 00459 00460 00461 00462 00463 00464 00466 00468
LS-Binär nehmen
Systemadresse erzeugen
Abzweigen wenn kein Fehler
Fehler laden
In Fehlerwort bewahren
Zurück
Rückrufmarke nehmen
Null enthält Speicherinstruktion
Registeradresse bewahren
X zum letzten X
Stapel aufwärts?
Registeradresse wiederherstellen
Rückruf
Instruktion nehmen
Zwei-Byte-Instruktion?
Abzweigen wenn ja
Instruktions-Hinweismarke nehmen
Anheben zum Überspringen des zweiten Byte
Wiederherstellen
Zurück
Arithmetikmarke nehmen
Null enthält keine Arithmetik
Registeradresse bewahren
Arithmetische Zwischenadresse nehmen
X in Zwischenspeicher übertragen
Registeradresse nehmen
Operationsmarke nehmen
Ja; Addition durchführen
Ja; Subtraktion durchführen
Tabellenseite
00470 00471 00472 00473
Ja; Multiplikation durchführen Division durch Fehler Aufwickeln Multiplizieren
709808/1025
00474 00475 00476 00477 00478 00479 00480 00481 00482 00483 00484 00486-00491
00493 00494-00497
00500 00501 00502 00504 00505 00506 00507 00508 00509 00510 00511 00512 00513 00514 00515 00516 00517
Aufwickeln
Subtrahieren
Aufwickeln
Addieren
Registeradresse nehmen
F.P.-Nummer speichern
ZwJs^henadresse nehmen
X-Register wiederherstellen
Programmzähler prüfen
Nummer speichern
Programmzähler prüfen
Diese Subroutine wandelt alle numerischen Registeradressen in die akuteile R/W-Adresse des Registers um. Sie prüft dann auf Gültigkeit und erzeugt Fehler 7, wenn ungültig bzw. Löschung von ACCA wenn gültig. Die Adresse wird in das Indexregister zurückgegeben. Bei Eingang ist ACCA = Registeradresse.
Null nach ACCB
Registeradresse mit acht multiplizieren durch dreimalige Linksverschiebung.
8 zum Ergebnis addieren
Übertrag zu MSB'S addieren
Ergebnis für Subtraktion bewahren
Registerstartadresse nehmen
Für Subtraktion bewahren
EOM-Registeradresse durchführen
Ergebnisnehmen
Für später bewahren
Ende des Programmspeichers nehmen
Für Subtraktion vorbereiten
Registeradresse-EOPM ausführen
Abzweigen wenn kein Fehler
Fehler laden
Fehler bewahren und zurück
Index = gültige Adresse
Kein Fehler; ACCA löschen
Zurück
7-0 9808/1025
00519 00520 00521 00522 00523 00524
X-Register-Exponent nehmen
Register auf Null wenn negativ
ACCB = Anzahl der Ziffern
Zuviele?
Abzweigen wenn nicht
Fehler laden
Tabellenseite
00525 00526 00527 00528 00529 00530 00531 00532 00533 00534 00540 00541 00542 00543 00544 00545 00546 00547 00548 00549 00550 00551 00552 00553 00554 00555 00556 00557
Bewahren
Zurück
RegisterStartadresse nehmen
Bewahren
Zwischen Hinweismarken löschen
X-Registeradresse nehmen
X-Register umwandeln
MS-Bits des Ergebnisses nehmen
LS-Bits nehmen
Ergebnis mit 8 multiplizieren
MS-Bits bewahren
LS-Bits bewahren
Registerstartadresse nehmen
Für Subtraktion bewahren
Subtrahieren (EOM-Registeradresse)
Fehler wenn Seite Null oder negativ ist
Ergebnis nehmen
Bewahren
Alte Hinweismarke nehmen
Für Subtraktion bewahren
Neu-Alt ausführen
Abzweigen wenn negatives Resultat
Altes EOPM nehmen
Bewahren
Neues EOPM nehmen
Bewahren
Altes EOPM nehmen
Löschen
709808/1025
00558 Neues EOPM nehmen
00559 Benutzerzustand Null?
00560 Fehler wenn ja
00561 Instruktions-Hinweismarken-Adresse nehmen
00562 R/S-Marke nehmen
00563 Im Lauf?
00564 Abzweigen wenn ja
00565 Anderenfalls Programm-Hinweismarken-Adresse nehmen 00567 Hinweismarke -TP5 ausführen
00571 In Ordnung wenn Hinweismarke £ TP5
00572 Anderenfalls Lauf/Stopp prüfen
00573 Fehler bei Lauf
00574 Anderenfalls UPP auf Null setzen
00576 Neues EOPM nehmen
00577 Alles gelöscht?
00578 Abzweigen wenn ja
00579 Speicher löschen
Tabellenseite 59
00580 Hinweismarke erhöhen
00581 Fortfahren
00582 Neues EOPM nehmen
00583 Bewahren
00584 Aufstellen
00585 Instruktion dort nehmen
00586 Zwei-Byte-Instruktion?
00587 Abzweigen wenn nicht
00588 Anderenfalls NOP zum letzten Zustand
00589 Zurück
Tabellenseite 60
00632 Ende
SYMBOLTABELLE
7 0 9808/1025
Error = Fehler
Tabellenseite
00222-00223
00232 00233 0O234 00235 00236 00237 00238 00239 00240 00241 00242 00243 00244 00245 00246 00247
Diese Routine enthält alle Codes für alle tiberarbeitungsfunktionen auf CJ.
ACCA für möglichen Fehler vorstellen
Information "Speichersicherung" nehmen
Sicherungsbit zum Übertrag bewegen
Abzweigen bei Speichersicherung
Anderenfalls Programmhinweismarke laden
Zu speichernde Instruktion nehmen
In ACCB bewahren
Abzweigen wenn 1—Byte-Instruktion
Anderenfalls Programmhinweismarke vorschieben
Ende des Speichers?
Abzweigen wenn nicht
Mögliches Alpha zurückstellen
Speicherüberlauffehler laden
Fehlernummer bewahren
Zurück
Aufbauen
Einfügungsbetrieb gesetzt
Abzweigen wenn nicht
Zwei-Byte-Instruktion?
Abzweigen wenn nicht
Speicher fallenlassen
Speiche^ fallenlassen
Instruktions-Hinweismarke nehmen
Instruktion nehmen
Erstes Byte bewahren
Zweites Byte nehmen
Abzweigen wenn kein zweites Byte
Anderenfalls zweites Byte speichern
ACCA für Tastenaufzeichnung löschen
Programm-Hinweismarke nehmen
Verbindungen nehmen
709808/1025
00263 00264 00265 00266 00267 00268 00269 00270 00271
Tastenaufzeichnungsbetrieb gesetzt?
Abzweigen wenn nicht
Tasten aufzeichnen und zurück
Laufende Instruktion prüfen
Abzweigen wenn ein Byte
Anderenfalls Hinweismarke vorschieben
Hinweismarke vorschieben
Ende des Speichers?
Abzweigen wenn ja
Tabellenseite
00272 00273 00274 00275 00276 00277 00278 00279 00280 00281 00282 00283 00284 00285 00286 00287 00288 00289 00290 00291 00292 00293 00294 00295
Anderenfalls neue Programmhinweismarke bewahren
Zurück
Zwei-Byte-Instruktion?
Abzweigen wenn ja
Anderenfalls Instruktion in Speicher prüfen
Zwei-Byte-Instruktion?
Abzweigen wenn ja
Herausnahme-Hinweismarke bewahren
Speicher erhöhen
Index vorstellen
Adressen modifizieren
Fortfahren
Laufende Instruktion in Speicher nehmen
Zwei-Byte-Instruktion?
Abzweigen wenn ja
Anderenfalls folgende Instruktion nehmen
Abzweigen wenn ein NOP
Anderenfalls Speicher fallenlassen
Zu speichernde Instruktion nehmen
Speichern
Zweites Byte nehmen
Speichern
Index vorstellen
Einfügungsstart bewahren
709808/1025
00296 00297 00298 00299 00302 00304 00305 00306 00307 00308 00309 00310 00311 00314 00316 00317 00318 00319 00320 00321 00322 00323 00324 00325 00326
Einfügungsende nehmen
Aufbewahren
Adressen modifizieren
Fortsetzen
Geschützter Speicher?
Zurück wenn ja
Einfügung?
Beenden wenn gesetzt
Laufende Benutzeradresse nehmen
Für Einfügungsstart bewahren
Zurück zum Supervisor
Einfügung beenden
Zurück
Geschützter Speicher?
Zurück wenn ja
Einfügung?
Ignorieren wenn ja
Programm-Hinweismarke nehmen
Laufende Adresse bewahren
Instruktion nehmen
Laufende Instruktion bewahren
Zwei-Byte-Instruktion?
Abzweigen wenn nicht
Speicher anheben
Speicher anheben
Tabellenseite
00327 00328 00329 ΟΘ33Ο 00331 00332 00333 00334
Index initialisieren
Herausgenommene Instruktion nehmen
Zwei-Byte-Instruktion?
Abzweigen wenn nicht
Zwei Zustände herausgenommen
Adressen modifizieren
Auf Tastenaufzeichnung prüfen
Alte Adressen nehmen (Tastenfeld-Aufzeichnung bewegte sie)
7 09808/1025
Wiederherstellen Zurück Index für Modifizierung bewahren Index für Suche vorstellen Um Eins nach vorne überspringen Um Eins nach vorne überspringen Schon beendet?
Abzweigen wenn nicht Anderenfalls zurück Nächste Instruktion nehmen Anderenfalls auf JMP oder JSR prüfen Abzweigen wenn nicht Auspacken und Adresse prüfen Abzweigen wenn keine Modifikation nötig Nicht Null; modifizieren Anderenfalls LS-Bits testen Keine Modifikation wenn Null Alte Adresse modifizieren Abzweigen wenn negatives Resultat Instruktion ausblenden Alte InstruktiQnsadresse entfernen Alte Instruktion wiederherstellen ACCB = LS-Bits der neuen Adresse Neue Adresse packen Neue LS-Bits wiederherstellen "ODER" in neuen MS-Bits Neue MS-Bits wiederherstellen Fortfahren ACCA = ACCB = Minimaladresse Fortfahren Programm-Hinweismarke nehmen Instruktion nehmen Hinweismarke erhöhen Ende des Speichers?
Abzweigen wenn ja Laufende Instruktion nehmen Alte Instruktion bewahren Neue Instruktion übertragen
709808/1025
00377 00378 00379 00380 00381
Fortfahren Eins aufbauen Instruktion nehmen Byte-Instruktiai ? Abzweigen wenn nicht
Tabellenseite
Anderenfalls auswischen
Fehler setzen
Instruktion abgestoßen?
Abzweigen wenn nicht
Fehler laden
Bewahren
Programm-Hinweismarke wiederherstellen
Zurück
Programm-Hinweismarke nehmen
Neue Instruktion nehmen
An neuem Platz bewahren
Speicher-Hinweismarke erhöhen
Ende des Speichers?
Abzweigen wenn nicht
Anderenfalls 1 aufbauen
NOP zum letzten Zustand
Zurück
GOTO/GOSUB-Adresse auspacken und prüfen
Zweites Byte der Instruktion nehmen
Adresse herausziehen
ACCA = MS-Bits
ACCB = LS-Bits
Instruktionscode ausblenden
MS-Bits bewahren
LS-Bits bewahren
Basisseitenverschiebung addieren
Adressenmodifikation notwendig?
Einfügungsstart nehmen
709808/1025
00418 00419 00420 00421 00422 00423 00424 00425 00426 00427 00428 00429 00430 00431 00432 00433 00434 00435 00436
Für Test "Angegriffen" bewahren
Für Test "Feld" bewahren
Für Test "B-A" bewahren
Einfügungsende nehmen
Für "B-A" bewahren
B-A nach TP7
Ergebnis nehmen
Abzweigen wenn nicht Null
Alpha-Marke/Hinweismarke zurückstellen
Index für Schrittroutine wiederherstellen
Zurück
Ergebnis für Modifikationen bewahren
Startadresse - 1 nehmen
Speicher-Hinweismarke erhöhen
Feldgrenze?
Abzweigen wenn nicht
"A"-Grenze?
Abzweigen wenn nicht
Anderenfalls "B"-Hinweismarke nehmen
Tabellenseite
00437 00438 00439 00440 00441 00442 00443 00444 00445 00446 00447 00448 00449 00450
Für nächsten Test "Feld" bewahren
Für Test "Angegriffen" bewahren
Benutzeradresse wiederherstellen
Fortsetzen
Fertig?
Abzweigen wenn ja
Anderenfalls nächsten Feldtest nehmen
Bewahren
Neu "angegriffen"-Wert nehmen
Bewahren
Arbeitsadresse wiederherstellen
Benutzerinstruktion nehmen
Anderenfalls auf JMP oder JSR prüfen
Abzweigen wenn 6s nicht ist
709808/1025
00451 00452 00453 00454 00455 00456 00457 00458 00459 00460 00463 00464 00465 00466 00467 00469
Auspacken und Adresse prüfen
Abzweigen wenn nicht
Anderenfalls Adresse modifizieren
Neue Adresse £ 2047?
Abzweigen wenn ja
Anderenfalls Instruktionsmaskierung nehmen
Mit Instruktion UNÖ-verknüpfen
Instruktion wiederherstellen
ACCB = LS-Bits der neuen Adresse
Neue Adresse packen
Neue LS-Bits bewahren
"ODER" in neuen MS-Bits
Instruktion wiederherstellen
Fortfahren
ACCA und ACCB = Maximaladresse
Fortfahren
Listenseite
00476-00492
00496 00497 00498 00499 00500 00501 00502 00503
Diese Routine behandelt die Schritt- und Rückschrittfunktionen sowohl im Lauf als auch im Programmbetrieb. Im Laufbetrieb führt "Schritt" lediglich eine Benutzerinstruktion aus. Im Programmbetrieb veranlaßt "Schritt" folgendes: 1) Schritt über die laufende Instruktion, angezeigt durch UPP, 2) Auflisten dieser Instruktion, falls Verfolgungsbetrieb, 3) Eingang in den Alpha-Betrieb wenn die Instruktion ein Alpha-Initiator war. "Rückschritt" arbeitet nur im Programmbetrieb und bewirkt folgendes: 1) Rückschritt zur vorherigen Instruktion, 2) Ausgang aus Alpha-Betrieb wenn diese Instruktion ein Alpha-Initiator war. Sowohl Schritt als auch Rückschritt beenden den Einfügungsbetrieb wenn er bei ihrem Abruf gesetzt ist
Schutz-Marke nehmen
Schutz-Bit nehmen
Zurück wenn geschützt
Auf Einfügung prüfen
Betrieb nehmen
Abzweigen wenn Programmbetrieb
In Instruktionshinweismarke bewahren
R/S-Marken-Information nehmen
7 0 9 808/1025
00504 00505 00506 00507 00508 00509 00510 00511 00512 00513 00514 00515 00516 00517 00518 00519 00520 00521 00522 00523 00524 00525 00526
Schrittmarke setzen
Laufende Benutzerinstruktion nehmen
Stoppbefehl?
Abzweigen wenn ja
Anderenfalls RSFLG = $
Marke bewahren
Ausführen
Tastenaufzeichnungsbetrieb gesetzt?
Abzweigen wenn nicht
ACCA für Tastenaufzeichnung vorstellen
Tastenaufzeichnung ausführen und Schritt
Fehler?
Zurück wenn ja
Alpha-Betrieb?
Abzweigen wenn nicht
Anderenfalls "nach Alpha ausführen"
Zurück zum Supervisor
Laufende Instruktion nehmen
Zwei-Byte-Instruktion?
Abzweigen wenn nicht
Formatinstruktion?
Abzweigen wenn nicht
Anderenfalls zweites Byte nehmen
Tabellenseite
00527 00528 00529 00530 00531 00532 00533 00535 00536 00537
Formatinstruktion vom Alpha-Typ
Abzweigen wenn nicht
Anderenfalls Alpha-Marke setzen
Um eins nach vorne bewegen
Um eins nach vorne bewegen
Alpha-T ermi nator
Abzweigen wenn ja und Alpha zurückstellen
Ende des Programmspeichers?
Abzweigen wenn ja
Anderenfalls neue Programmadresse bewahren
70 9 808/1025
Beenden
Hier beginnt "Rückschritt"
Auf Einfügung prüfen
Eins zurück
Eins zurück
Programm-Hinweismarke zum Zwischenspeicher zur Prüfung
Hinter Adressen-Null zurückgeschoben?
Abzweigen wenn nicht
Anderenfalls UPP auf Zustand Null setzen
Alpha-Betrieb löschen
Herausnehmen
Instruktion nehmen
Zwei-Byte-Instruktion?
Abzweigen wenn ja (UPP in Ordnung)
Anderenfalls um Eins nach vorne bewegen
Formatinstruktion?
Abzweigen wenn nicht
Anderenfalls zweites Byte nehmen
Alpha-Instruktion?
Abzweigen wenn nicht
Alpha-Betrieb löschen
Her au snehmen
Laufende Programmhinweismarke nehmen
Im Einfügungsbetrieb?
Abzweigen wenn ja
Anderenfalls zurück
Für "Einfügung zu Ende" bewahren
GOTO's modifizieren und UPP in Index zurück
Tabellenseite
Ende
SYMBOLTABELLE
Error * Fehler
709808/1025
Täbellenseite
00221-00228
00230 00231 00232 00233 00234 00235 00236 00237 00238 00239 00240 00241 00242 00243 00244 00245 00246 00247 00248 00249 00250 00251 00252 00253 00254 00255 00256 00257
Diese Subroutine empfängt in ACCA entweder ein ASCII-Zeichen oder Null. Wenn ACCA =0, wird angenommen, daß Zeichen im Benutzerspeicher sind und die Ausgabe wird von dort aufgebaut. Wenn ACCA ein Zeichen ist, gibt die Routine einfach dieses Zeichen in die laufende Ausgabeleitung, die aufgebaut wird, und zurück zum Aufrufer. Beim ersten Eintritt muß T13 auf Null gesetzt werden (T13 = Feld). Diese Routine baut die Leitung an den Plätzen real und imaginär auf.
Laufende Lauf/Stopp-Marke nehmen
Für Ausgangsprüfung bewahren
Einzelzeichenbetrieb?
Abzweigen wenn ja
Auf Stoppbefehl-Prüfung setzen
Aktualisierung wiederherstellen
Anderenfalls Programm-Hinweismarke nehmen
Zum ersten Zeichen schieben
Zum Zeichen schieben
Ende des Spechers?
Beenden wenn ja
Anderenfalls aktualisierte Hinweismarke bewahren
Zeichen nehmen
Fortfahren wenn nicht Null
Anderenfalls eine Leerstelle laden
Alpha-Terminator?
Abzweigen wenn ja
End-Anweisung?
Abzweigen wenn nicht
Anderenfalls um Eins zurück
UIP wiederherstellen
Ausgabe beenden
Druckkommanäo?
Abzweigen wenn nicht
Feldindikator nehmen
Druck ignorieren wenn Eins schon erledigt
Anderenfalls Druckmarke setzen <
Feldindikator setzen
709808/1025
00258 Zifferneingabe beenden
00259 Format X-Register
00260 Äußerstes rechtes Zeichen nehmen
00261 Leerstelle?
00262 Abzweigen wenn nicht
.00263 Anderenfalls Puffer nach rechts verschieben
00264 Mit Entfernung anhängender Leerstellen fortfahren
00265 Zeichenadresse - 1 des linken Endes nehmen
00266 Zeichenadresse nehmen
00267 Zeichen nehmen
00268 Leerstelle?
00269 Abzweigen wenn ja
00270 Anderenfalls entsprechenden Zeichenreihenplatz nehmen
00271 Abzweigen wenn er leer ist
Tabellenseite 7o
00272 Anderenfalls diese Zeile beenden
00273 Index für volle Prüfung bewahren
00274 X-Register-ASCII übertragen
00275 Das äußerst rechte Ende der
00276 im Aufbau befindlichen Zeichenreihe
00277 Schon fertig?
00278 Abzweigen wenn nicht
00279 Anfangsindexwert nehmen
00280 Wird auf äußerst linkes Zeichen gezeigt?
00281 Zeilenüberlauf wenn ja
00282 Zeichenreihen-Zeichen links vom X-Register nehmen
00283 Zeile voll wenn nicht Null
00284 Anderenfalls Programm-Hinweismarke nehmen
00285 Einzelzeichenbetrieb? 00285 Abzweigen wenn nicht
00287 Anderenfalls zurück zum Abrufer
00288 Befehl "Neue Zeile"?
00289 Abzweigen wenn ja
709808/102
00290 00291 00292 00293 00294 00295 00296 00297 00298 00299 00300 00301 00302 00303 00304 00305 00306 00307 00308 00309 00310 00311 00312 00313 00314 00315 00316 00317 00318 00320 00321 00322 00323 00324 00325 00326
11 Umschalt"-Befehl?
Abzweigen wenn neine
Anderenfalls Schiebemarke verbinden
Fortfahren
Schiebemarke nehmen
Abzweigen wenn Verschiebung nicht aufgerufen
Anderenfalls laufendes Zeichen prüfen
Abzweigen wenn durch Umschaltung nicht beeinflußt
Anderenfalls untere Grenze prüfen
Abzweigen wenn nicht beeinflußt
Umgeschaltetes Zeichen erzeugen
Feldindikator nehmen
Abzweigen wenn "Druck" bereits empfangen
Anderenfalls ersten verfügbaren Platz finden
Suchadressen vorschieben
Laufenden Inhalt nehmen
Suche fortsetzen wenn voll
Anderenfalls neues Zeichen bewahren
Letzter verfügbarer Platz
Abzweigen wenn noch nicht voll
Anderenfalls Zeilenüberlauf
Äußerst rechte Adresse +
Zurück in die Zeile
Laufendes Zeichen nehmen
Abzweigen wenn nicht leer
Anderenfalls noch einmal Rückschritt
Pufferadresse bewahren
ASCII für rechtes Ende bewegen
Linke Eins Position in Puffer
Umschalten fertig?
Abzweigen wenn nicht
Letztes Zeichen bewahren
Anfängliche Puffer-Hinweismarke nehmen
Zeile nun voll?
Abzweigen wenn ja
Anderenfalls Zeichen links vom X-Register nehmen
709808/102S
Tabellenseite 71
00327 Überlauf wenn nicht null
00328 Was kommt als nächstes?
00329 Bewahrte R/S-Marke nehmen
00330 Abzweigen wenn keine Änderung nötig
00331 Anderenfalls alte Marke wieder herstellen
00332 Zeichenzähler setzen
00333 Zeichen am rechten Ende nehmen
00334 Abzweigen wenn nicht null und drucken
00335 Anderenfalls Prüfung auf Nullreihe fortsetzen
00336 Alle Zeichen geprüft?
00337 Ja; Nullzeile; kein Druck; zurück
00338 Index vorstellen für Zeilenbewegung
00339 Zwischenaufbaupuffer
00340 Zum Ausgangspuffer
00341 Leerstellen im Ausgangspuffer ÖO342 An den entsprechenden Plätzen
00343 Wo Nullen gefunden wurden
00344 Im Zwischenpuffer
00346 Einzelzeichenbetrieb?
00347 Drucken wenn ja
00348 Stopptaste gedrückt?
00349 Drucken wenn nein
00350 Schritt?
00351 Drucken wenn ja
00352 Anderenfalls Druck überspringen
00353 Ausgabevorrichtung rufen-
00354 Peldhinweismarke zurückstellen
00355 Laufende^ Zeichenreihe ausgeben
00356 Index für Löschung vorstellen
00357 Zeilenpuffer löschen
00360 Feldhinweismarke nehmen
00361 Fortfahren wenn in Alphabetrieb
00362 Anderenfalls wieder X-Register
00363 Pufferstartadresse nehmen
00364 Ganz linkes Zeichen nehmen
00365 ■ Pufferhinweismarke erhöhen
709808/1025
00366 Schon fertig?
00367 Abzweigen wenn ja
00368 Anderenfalls nächstes Zeichen nehmen
00369 Durch anderes ersetzen
00370 Neues Zeichen nach ACCB übertragen
00371 Hinweismarke einstellen
00372 Puffer-Rechtsverschiebung fortsetzen
00373 Ganz linkes Zeichen ersetzen
00374 Durch eine Leerstelle und
00375 Zurück
00376 Welcher Betrieb?
00377 Abzweigen wenn Programmbetrieb
00378 Betriebsart nehmen
00379 Abzweigen wenn in Laufbetrieb
00380 Anderenfalls Instruktion speichern
00381 Instruktionsregister löschen
Tabellenseite 72
00382 Zweites Byte vorbereiten
00384 Alphamarke setzen
00385 Fehler erzeugt?
00386 Abzweigen wenn ja
00387 Nächste Taste nehmen
00388 In ASCII umwandeln
00389 Schrittbefehl?
00390 Abzweigen wenn nicht
00391 Anderenfalls "Schritt" ausführen
00392 Rückschrittbefehl?
00393 Abzweigen wenn nicht
00394 Anderenfalls "Rückschritt" ausführen
00395 ASCII bewahren
00396 Im Speicher speichern
00397 Fehler?
00398 Abzweigen wenn ja
00399 Zeichen nehmen
7.0 9808/1025
00400 Instruktionsregister zurückstellen
00401 Alphaterminator?
00402 Abzweigen wenn nicht
00403 Anderenfalls Alphamarke zurückstellen
00404 Zum Supervisor zurückkehren
00405 Null nach ACCA
00406 Feldhinweismarke löschen
00407 Schiebemarke zurückstellen
00408 ACCA setzen
00409 Alphamarke setzen
00410 Index vorstellen
00411 Zeilenpuffer löschen
00414 Nächstes Zeichen nehmen
00415 ACCA in ASCII umwandeln
00416 Instruktion nehmen
00417 Ausfallkode ausblenden
00418 Abzweigen wenn Drucker
00419 Anderenfalls Zeichen in Realteil geben
00420 Vorrichtung rufen
00421 Fehler erzeugt?
00422 Abzweigen wenn ja
00423 Letzte Zeichenausgabe nehmen
00424 Alphaterminator?
00425 Abzweigen wenn ja
00426 Anderenfalls Instruktionshinweismarke zurückstellen
00427 Bewahren
00428 Fortfahren
00429 Ausgabe zum Puffer
00430 Letzte Zeichenausgabe nehmen
00431 Alphaterminator?
00432 Abzweigen wenn ja
00433 Anderenfalls fortfahren
00435 Feldhinweismarke löschen
00436 Umschaltanzeiger löschen
Tabellenseite 73
Index vorstellen
T0 9808/1025
- 3,74 -
00438 Zeilenpuffer löschen
00441 ASCII ausgeben
00442 ASCII-Tabellenadresse nehmen
00443 Für Modifikation bewahren
00444 Tastencode zu LSB's addieren
00445 Ergebnis wieder herstellen
00446 Neuen Index wieder herstellen
00447 ACCA = ASCII-Zeichen
00448 Zurück
Tabellenseite 74
00458 - 00460 Diese Datei, definiert die ASCII-Stellung für CJ. Eingänge sind in der Reihenfolge der Tastencodes von 0 bis oktal
00473 Schrittbefehl
00474 Rückschrittbefehl 00499 Leerstelle
00511 Umschalten
Tabellenseite 75
00512 Druck
00523 Nicht benutzter Tastencode
00524 Neue Zeile
00527 - 00531 Code zur Auswahl der Druckvorrichtung wenn EOM negativ ist, wird die Ausgabevorrichtung durch den Inhalt von T6 und T5 spezifiziert. TOM muß durch den Rufer gesteuert werden und nach Beendigung auf den richtigen Wert zurückgestellt werden.
00534 Ende des Speicherwortes nehmen
00535 Nicht innerer Drucker wenn negativ
00536 Anderenfalls Drucker rufen
00537 Vorrichtungsadresse nehmen 00533 Vorrichtung rufen
7 0 9808/1025
Tabellenseite 76
Symbol-Tabelle ERROR = Fehler
Ende
Tabellenseite 77
00219 - 00220 Diese Routinen führen den ganzzahligen und den Bruchteil des ursprünglichen Argumentes zurück
00226 X in letztem X bewahren
00227 Index auf Mantisse setzen'
00228 (EXP + 1)/2 = Ganze Worte zu löschen
00229 Zurück wenn negativ (schon Bruch)
00232 Schleife zum Löschen ganzer Worte
00233 Ausgang von Schleife
00234 Paar von Mantissenziffern löschen
00235 Hinweismarke verschieben
00236 Prüfen ob fertig
00237 Halbes Wort löschen?
00238 Ja, Wort laden
00239 Obere Hälfte löschen
00240 Ergebnis wieder herstellen
00241 Ergebnis jetzt normalisieren
00242 X in letztem X bewahren
00243 Exponent prüfen
00244 Positiv, Größe des Exponenten prüfen
00245 Negativ^ kein ganzzahliger Teil, löschen
00246 Exponent >
00247 Ja, (X) ist ganzzahliger Teil
00248 Exponent nehmen
00249 1 addieren, so daß EXP/2 auf richtiges Wort zeigt
00250 . Erstes Byte der Hinweismarke löschen
00251 EXP + 1 durch 2 dividieren
00252 ·' Worthinweismarke bewahren
709808/102
- lie -
00253 Worthinweismarke in X laden
00254 War EXP + 1 ungerade?
00255 Ja, zweite Hälfte des Byte löschen
00256 Zweite Hälfte löschen
00257 Wort in X wieder herstellen
00258 Auf nächstes Wort in X-Register zeigen
00259 Löschung fertig?
00260 Ja, Ausgang
00261 Nächstes Wort löschen
00262 Operation fortsetzen
00263 Zurück
Tabellenseite 78
00266 X-Register löschen
00270 RTS-Marke bewahren
00271 S-Register löschen
00272 Gemeinsamer Ausgangspunkt der Sperre der Stapelanhebung
00273 Marke für Start von neuer Dateneingabe löschen
00274 Zurück zum Supervisor
Tabellenseite 79
00277 Register-Übertragungsroutinen
00281 Eingabetaste
00282 Unverändert
00284 RTS-Marke bewahren
00285 Stapel anheben
00286 Zurück zum Supervisor
00291 Y-Register-Adresse nehmen
00292 Register vertauschen
Tabellenseite 80
00295 Herunterrollen
00298 Zähler/Hinweismarke laden
00299 Wort von X laden
709808/1025
00300 Wort von T laden
00301 X in T speichern
00302 Wort von Z laden
00303 T in X speichern
00304 Wort von Y laden
00305 Z in Y speichern
00306 Y in X speichern
00307 Zähler/Hinweismarke erniedrigen
00308 Fortfahren
00309 Zurück zur rufenden Routine
00312 Letztes X zum X-Register zurückrufen
00316 Zifferneingabe?
00317 Abzweigen wenn nein
00318 Anderenfalls terminieren
00319 MSB setzen
00320 Anhebung freigeben
00321 Stapel anheben wenn freigegeben
00322 Indexregister auf letztes X setzen
00323 X zum letzten X übertragen
Tabellenseite 81
00326 PSD, teilweises Herunterschieben des Stapels
00327 Führt die Operation Z->Y, T->Z aus
00331 Zähler/Hinweismarke laden
00332 Wort von T laden
00333 Wort von Z laden
00334 In Z speichern
00335 In Y speichern
00336 Zähler erniedrigen
00337 Nicht fertig
00338 Zurück zur rufenden Routine 00341 TXL, X zum letzten X übertragen
00345 Adresse des letzten X nehmen
00346 X-Register übertragen
709808/1025
Tabellenseite 82
00349 STKUP führt die folgende Operation durch
00351 T verloren
00352 - 00355 Diese Operation tritt nur auf wenn die
Marke für automatische Stapelanhebung gesetzt ist. Wenn in die Routine bei STKÜP2 eingetreten wird, wird die Operation immer durchgeführt.
00360 Testbedingung für Marke "automatischer Stapel" in B
00361 Automatische Anhebung ist nicht freigegeben
00362 Unterbrechungen sperren bei der Anhebung des Stapels
00363 Stapelhinweismarke im Zwischenspeicher bewahren
00364 Schleifenzähler laden
00365 Zwei Worte von Z laden
00366 Worte in T. speichern
00367 Zwei Worte von Y laden
00368 Worte in Z speichern
00369 Zwei Worte von X laden
00370 Worte in Y speichern
00372 Zähler erniedrigen, auf nächsten Platz zeigen
00373 Registerverschiebung fortführen
00374 Ursprüngliche Stapelhinweismarke wieder laden
00375 Unterbrechungen freigeben
00376 Automatikstapel-Hinweismarke löschen
00377 Zum rufenden Punkt zurückkehren 00380 Stapel-Löschroutine
00385 Unterbrechungen sperren
00386 Stapel-Hinweismarke bewahren
00387 Stapel-Hinweismarke mit Löschwert laden
00388 Schleifenzähler-Hinweismarke initialisieren
00389 Zwei Bytes löschen
00390 Schleifenzähler/Hinweismarke erniedrigen
00392 Löschen fortsetzen
00393 Stapelhinweismarke wieder herstellen
00394 Unterbrechungen freigeben
00395 Zurück
709808/1025
Tabellenseite
00398 00402 00404 00407 00412 00413 00414 00415 00416 00417 00418 00419 00420
Drucktastenausführung Zifferneingabe beendet Drucken und zurück Stapeldrucken Zifferneingabe beenden Zähler setzen Zähler bewahren Datenpositioniern Laufende Daten in X-Register in Format bringen X-Register drucken Schleifenzähler erniedrigen, fertig Nein, fortfahren Zurück
Tabellenseite
00423-00425 Zifferneingabe-Routinen. Hiermit behandelte Tasten umfassen die Zifferntasten CO-9), Dezimalpunkt , Vorzeichenwechsel und Exponenteneingabe
00434 Vorzeichenwechsel-Routine
00435 Teil von Exponenteingabe ist eingeschlossen
00440 RTS-Marke bewahren
00441 Prüfen ob EEX-Marke gesetzt ist
00442 EEX-Marke prüfen, gesetzt?
00443 Ja, Vorzeichen des Exponentenmodifikators wechseln
00444 Nein, Mantissenvorzeichen wechseln
00445 Vorzeichenwechsel
00446 Aktualisiertes Vorzeichenwort speichern
00447 Stapelmarke nicht modifizieren
00448 Negatives Bit anhängen (Exponent-Indikator)
00449 Aktualisierten Wert bewahren
00450 Vorzeichenwechselmarke laden
00451 ' Laufenden Wert des Exponenten laden
00452 Exponenten-Modifikator subtrahieren
00453 ' Exponent wieder herstellen
709808/1025
00455 00456 00457 00458 00459 00460 00461 00462 00463
00464 00465 00466 00467 00469 00470 00471
Ist dies Vorzeichenwechsel- oder Exponenten-
eingabeziffer?
Ziffer eingeben
Exponenten-Modifikator komplementieren (CHS)
B-Register vorstellen Modifikator zum Exponenten addieren Auf Über-/Unterlauf prüfen Nichts, zurück
Über-/Unterlauf aufgetreten, neuen Eingang setzen
Zurück Letzte im Exponentenmodifikator benutzte Ziffer
laden Neue benutzte Ziffer speichern Alte Ziffer mit 10 (binär) multiplizieren A * 8 durchführen durch Verschiebung um drei Plätze * 10 vollenden durch Durchführung Von zwei Additionen Nun neue Ziffer zum Exponenten-Modifikator addieren Neuen Exponenten-Modifikator bewahren Prüfen welches Vorzeichen Exponenten-Modifikator haben sollte Negativ Bit gesetzt?
Ja, Vorzeichen wechseln Nein
Tabellenseite
00479 00483 00484 00485 00486 00487 00489 00490 00491
Dezimalpunkt-Eingabe-Routine RTS-Marke bewahren Neue Ziffern-Eingabe?
Nein, Marke setzen Stapel anheben, wenn freigegeben X-Register für neue Eingabe löschen Exponent für Fall 0.000.... löschen Exponent für Pormatxoutine löschen Dezimalpunktmarke setzen
709808/1025
00492 Neuen Markenwert bewahren
00493 Automatische Stapelanhebung sperren
00494 RTS fertig?
00495 Abzweigen wenn nicht
00496 Anderenfalls zurück
00497 Stapelhinweismarke erhöhen
00498 Letzten Rückkehrvektor herausnehmen
00499 Zurück zum Supervisor
Tabellenseite 86
00502 Exponenteneingabe-Routine 503 enthält
Routine für Eingabe von Ziffern in Mantisse
00507 RTS-Marke bewahren
00508 Setzen der EEX-Marke vorbereiten
00509 Ist EEX-Marke schon gesetzt?
00510 Ja, Ausgang von Routine
00511 EEX-Marke setzen
00512 Neuen Markenwert bewahren
00513 Platz für Exponenten-Modifikator löschen
(A war CL)
00514 Letzte zwischengespeicherte Exponentenziffer löschen
00515 Zählerteil der Ziffernmarke bewahren
00516 Dies ist kein neuer Eingang, zurück
00517 Neuer Eingang, Stapel anheben
00518 X-Register für neuen Eingang löschen
00519 A auf 1 für neue Mantissenziffer setzen
00520 Mantissenzähler laden
00521 Zähler bewahren
00522 Zähler = 10?
00523 Ja, Eingang ignorieren
00524 Zähler durch 2 dividieren, Rest in CA bewahren
00525 Zähler war ungerade, Ziffernverschiebung überspringen
00526 Neue Ziffer positionieren
00530 Zähler bewahren
00531 Erstes Byte für Zähler löschen
00532 Zähler in Index laden
00533 Neue Ziffer zur Mantisse addieren
7 0 9 8 0 8/1025
00534 00535 00536
Ergebnis speichern Zähler erhöhen Zurück zum Supervisor
Tabellenseite
00539 00543 00544 00552 00553 00554 00555 00556 00557 00558 00559 00560 00561 00562 00563 00564 00565 00566 00567 00568 00569 00570 00571 00572
00573 00574 00575 00576 00577 00578 00579
Z iffernannahme-Routine
Passende Ziffer aufbauen
Im A-Register
RTS-Marke bewahren
Laufenden Zustand prüfen
Keine neue Eingabe
Stapel anheben, wenn freigegeben
X-Register für neue Eingabe löschen
Exponent für Formatroutine löschen
Exponent 2 für Format löschen
War Ziffer eine
Ja; "Anfangsnull"-Bit setzen
Nein/ Ziffer in Mantisse eingeben
Nur "Anfangsnull"-Bit gesetzt?
Abzweigen wenn nicht der Fall
Andere Anfangsnull?
Zurück wenn ja
Erste Ziffer eingeben die nicht Null ist
EEX-Marke gesetzt?
Nein andere Marke prüfen
Ja, neue Ziffer in Exponent eingeben
Dezimalpunkt-Marke gesetzt?
Ja
Nein, B auf 1 für Wert für Addition zu EX
setzen
Exponent erhöhen
Ziffer bewahren
Test auf über-/ünterlauf
Überlaufausgang
Kein überlauf, Ziffer wieder laden
Ziffer in Mantisse eingeben
Mantisse =
709808/1025
00580 00581 00582 00583 00584 00585 00586 00587 00588 00589 00590 00591 00592
Nein, Ziffer in Mantisse eingeben
Ja, Exponent zwischenzeitlich erniedrigen
Prüfen ob Unterlauf aufgetreten ist
Unterlauf?
Nein fortfahren
Neue Zifferneingabe setzen und herausgehen
War eingegebene Ziffer
Ja, ignorieren
EXP2 für Formatgebung wieder herstellen
Wert des Exponenten ins X-Register
Ziffer in Mantisse eingeben
"Anfangsnull"-Marke nehmen
In D.E.-Marke bewahren-
Tabellenseite
00593 00599 00603 00604 00605 00606 00607 00608 00609 00610 00611 00612 00613 00614 00615 00616 00617 00618 00619 00620 00621
Zurück zum Supervisor
Zugriff zu mathematischen Funktionen
X bewahren, Index laden
Addieren
Zumgemeinsamen Ausgang gehen
X bewahren, Index laden
Subtrahieren
Zum gemeinsamen Ausgang gehen
X zum letzten X übertragen
Index-Register auf Y setzen
Zurück
X bewahren, Index laden
Multiplizieren
Stapel fallen lassen
X bewahren, Index laden
Dividieren
Zum gemeinsamen Ausgang gehen
X zum letzten X übertragen
TAN X ausführen
Zum letzten X übertragen
ARC TAN X ausführen
709808/102
00622 00623 00624 00625 00626 00627 00628 00629 00630 00631 00632 00633 00634 00635 00636 00637 00638 00639 00640 00641 00642 00643
Letztes X bewahren
χ ausführen Letztes X bewahren E ausführen Letztes X bewahren LNX ausführen X in letztem X bewahren 1/X ausführen X in letztem X bewahren SIN X ausführen X im letzten X bewahren ARC SIN X ausführen X in letztem X bewahren COS X ausführen X in letztem X bewahren ARC COS X ausführen X zum letzten X
■v
10 ausführen X zum letzten X Υ ausführen X zum letzten X LOG X ausführen
Tabellenseite
00652 00653 00654 00655 00656 00657 00658 00659 00660 00661
Subroutine zum Laden von Nachrichten in
den Puffer
Erstes Zeichen laden
Nachrichten-Hinweismarke erhöhen
Nachrichten-Hinweismarke speichern
Index mit Puffer-Hinweismarke laden
MSB auf Null
Listenroutxnenruf?
Nein, Fehlermeldung
Rückverschiebung addieren um ASCII zu nehmen
Zeichen in Puffer speichern
Puffer-Hinweismarke erhöhen
709808/1025
00662 Bewahren
00663 Nachrichten-Hinweismarke wieder laden
00664 Anderes Zeichen laden
00665 Nachrichtenladung fertig?
00666 Ja, zurück
Tabellenseite 90
00669 PI eingeben
ΌΟ673 Zifferneingabe?
00674 Abzweigen wenn nein
00675 Anderenfalls beenden
00676 MSB setzen
00677 Anhebung freigeben
00678 Stapel anheben wenn freigegeben
00679 Index-Register auf PI setzen
00680 PI übertragen
00681 PI in ROM bilden
Tabellenseite 91
00687 Hochrollroutine
00689 3 mal herunterrollen und zurück
00695 Druckpuffer löschen
00696 Leerstellen drucken
Tabellenseite 92
Tabellenseite 93
00755 Ende Symbol Tabelle
Tabellenseite 94
00222 Null
00223 Eins
709808/10
00224 Zwei
00225 Drei
00226 Vier
00227 Fünf
00228 Sechs
00229 Sieben
00230 Acht
00231 Neun
00232 Dezimalpunkt
00233 Pluszeichen
00234 Minuszeichen
00235 Stern (Multiplikation)
00236 Divisionszeichen
00237 Eingabe
00243 Exponenten-Ε ingabe
00246 Vorzeichenwechsel
00249 X löschen
00252 löschen
00257 X und Y vertauschen
00260 Nach unten rollen
00266 Letztes X
Tabellenseite
Hochrollen
Quadratwurzel
Karfch^isch/Polar
Tabellenseite
00329 Polar/karthesisch
00340 Ganzzahl
00343 Gerad
00347 Nach D.MS
00352 Von D.MS
709800/1
Tabellenseite 97
00387 Mittelwert und Standardabweichung
00392 Anzahl der Register
00397 Stapel drucken
00403 Runden
00408 ACC+ zurückrufen
00414 Alpharegister löschen
00420 Abstand
00425 Neue Grade
00430 Rad
Tabellenseite 98
00470 Speichern ·
Tabellenseite 99
00494 Zurückrufen
00498 5 Hauptrahmenrufe
00502 Verifizieren
00508 Laden und gehen
00513 Daten aufnehmen
00519 Zurückspulen
00546 Druck
Tabellenseite
00551 Zurück
00557 Alpha Ende
00561 Programm aufnehmen
00567 Aufnahme gesichert
00572 Markieren
00576 Identifizieren
00581 Laden
00585 Ein leerer Schlitz
00586/ Festkomma
00589 Gleitkomma
709808/1025
00592 Gleitkomma 3
00598 Etikett
00601 GOSUB-Etikett
Tabellenseite 101
00603 GOTO-Etikett
00605 Rückruf indirekt
00610 Speicherung indirekt
00639 Zwei Speicherungen
00649 Zwei Rückrufe
Tabellenseite 102
00667 Alpha drucken
00677 Zeile
00682 Umschalten
Tabellenseite 103
00690-00695 Diese Routine ergibt eine Programm-Auflistung, von der aus der Programmzähler setzt, bis eine Endanweisung erreicht wird oder bis die Lauf-/ Stopp-Taste gedrückt wird. Sie bewirkt auch eine Tastenaufzeichnung im Programmbetrieb, wenn der Schalter "alles drucken" eingeschaltet ist.
00715 GIO-Eingang
00716 GIO-Marke speichern
00718 Listenmarke auf Null setzen
00719 Index auf Benutzerpositions-Hinweismarke setzen
00720 UPP in W+4 bewahren
00721 Instruktion laden
00722 In SVINS bewahren
00724 Überwachungsanhang?
00725 Ja, gesicherter Speicher unbeachtlich 007'27 GIO-Marke speichern 00729 ACCB mit neuer RS-Marke laden
709808/1025
00732 ÖO733 00734 00736 00737 00738 00739 00742
Listenmarke .NE. 0 setzen
Index auf Benutzerpositions-Hinweismarke
setzen
UPP in W+4 bewahren
Instruktion laden
Instruktion bewahren
Endinstruktion?
Nein, RS-Marke = $ CO setzen
Ja, RS-Marke = $ 40 setzen
Neue Lauf/Stojpmarke speichern
Gesichertes Programm?
Tabellenseite
00746 00748 00750 00752 00753 00754 00755 00756 00757 00758 00759 00760 00761 00762 00763 00764 00766 00767 00770 00771 00773 00774 00775 00776
RS-Marke =
Puffer ausblenden
Index auf Benutzerpositions-Hinweismarke setzen
PC in BCD umwandeln
Index auf Pufferbeginn setzen
ACCA = NO setzen, von Ziffern*4
PC in Puffer geben
Instruktion laden
Puffer-Hinweismarke erhöhen
Puffer-Hinweismarke nochmal erhöhen
Puffer-Hinweismarke speichern
Alpha-Marke gesetzt?
Nein, keine Alpha-Zeichenreihe
MSB gesetzt?
Ja, Alpha zu Ende falls nicht Druck
Tabelle, Umschaltung oder Zeile?
Nein, ASCII speichern
Ja, Tabellenadresse laden
Tabellenverschiebung in ACCB setzen
Tabelle, Umschaltung oder Zeile drucken
Druckbefehl?
Ja, auflisten
Alpha-Terminator?
Ja, Alpha beenden
709808/1025
00777 00778 00779 00780 00781 00782 00783 00784 00785 00786 00787 00788
00789 00791 00792 3 00794 00795 00796 00797
Nein, Ist es eine "END"?
Nein, als Leerstelle behandeln
Ja, Alpha-Marke löschen
Index für Tabellenstart setzen
Instruktionszähler löschen
Zähler = Instruktion?
Ja, ASCII gefunden
Nein, Tabellenadresse erhöhen
Nächstes ASCII-Zeichen laden
MSB gesetzt?
Bit 6 gesetzt?
Ja, mehr als eine von spezifischen
Instruktionen
Instruktionszähler erhöhen
Oberste 2 Bits löschen
Tabellenadresse erhöhen
Instruktionszähler erhöhen
Zähler = Instruktion?
Ja, Adresse gefunden
Vielfach-Instruktionszähler erniedrigen
IF = 0, dies nicht, benutzte Instruktion
multiplizieren
Tabellenseite
00798 00799 00800 00801 00802 00803 00804 00806 00807 00808 00809 00810 00811
Zählung fortsetzen
Byte hinter Byte mit obersten zwei Bits laden
MSB gesetzt? Nein, Adresse gefunden
Ja, dieses Bit löschen
Neue zu zählende Instruktion speichern
Um teilweise Tabellenstartadresse zu laden
Suche wieder starten
Mnemonik in Puffer laden
Puffer-Hinweismarke auf Operandenfeld setzen
Speichern
Index auf Puffer-Hinweismarke setzen
Instruktion laden
Keine Operanden-Instruktion?
709808/1025
00812 00813 00814 00815 00816 00817 00818 00820 00821 00822 00823 00825 00826 00827 00829 00830 00831 00832 00833 00834 00835 00836 00838 00839 00841 00842 00844 00845 00846 00848 00850 00851
Ja, fertig
Marken-Instruktion?
Nein, weiterprüfen
Ja, untere drei Bits ausblenden
Eins hinzuaddieren
Ergebnis in ASCII umwandeln
Operand in Pufferspeicher
Nein, weiterprüfen
Ja, ASCII L laden
Im Puffer speichern
Puffer-Hinweismarke erhöhen
Nein, weiterprüfen
ASCII X laden
Operand speichern
Nein, weiterprüfen
Verschiebung abziehen
10 abziehen
ASCII-Code für A bis J erreicht?
Nein, noch einmal 10 abziehen
Ja, Operand speichern
Keine Operanden-Instruktionen?
Ja, fertig
Nein, weiterprüfen
ASCII A in ACCB laden
Ja, Operand = A
Nein, ASCII B in ACCB
Ja, Operand = B
Nein, Operand =* C
Operand speichern
Ja, fertig
Rechten Pfeil laden
Im Puffer speichern
Tabellenseite
00853 00854 00855 00856
5 addieren um zweiten Buchstaben zu nehmen Zweites Zeichen speichern War es ein "H"? Nein, fertig
709808/1025
00857 Ja, Puffer-Hinweismarke erhöhen
00858 ASCII "D" laden
00859 Operand in Puffer speichern
00861 Keine Operanden-Instruktion?
00862 Ja, fertig
00863 Ist Instruktion ein Etikett?
00864 Nein, Operand laden
00866 GIO? Ja, zurück
00867 Etikett ohne Operand drucken
00868 Puffer ausblenden
00869 Index auf Pufferanfang setzen
00870 ACCB mit ASCII-Minuszeichen laden
00871 Gedankenstriche speichern
00872 Puffer-Hinweismarke erhöhen
00873 4 Gedankenstriche?
00874 Nein, weitere Eins in Puffer laden
00875 Puffer-Heinweismarke erhöhen
00876 Puffer-Hinweismarke speichern
00878 Index auf Benutzerpositions-Hinweismarke setzen
00879 Auf zweites Byte zeigen
00880 Hinweismarke für zweites Byte bewahren
00881 Zweites Byte in ACCB laden
00882 Format-Instruktion?
00883 Nein, weiterprüfen
00888 Alphadruck?
00889 I/O-Ziffer ausblenden
00891 Existiert ROM?
00892 Ja, ASCII laden
00893 Zweites Byte wiederladen
00894 Auch in ACCA geben
00895 ASCII-Ziffer in Puffer geben
00897 Buchstabe ausblenden
00898 Ruf-Ziffer-Ruf?
00899 Nein, Buchstabe in ASCII umwandeln
00901 Alpha laden
00902 Alpha-Marke setzen
00903 Alpha in Operand speichern
00904 Auf Operandenfeld zeigen
709808/1025
Tabellenseite
00909 00910 00912 00914 00915
00916 00917 00918 00919 00920 00922 00923 00925 00926 00927 00928 00929 00930 00931 00935 00936 00937 00938 00939 00940 00944 00945 00946 00947 00948 00949 00950 00951 CO952 00953
Ziffer in ASCII umwandeln
Im Puffer speichern I/0-ROM-Adresse speichern
$ 25 hinzuaddieren $ 25 hinzuaddieren um Adresse von ASCII-Nachricht
zu nehmen Alpha-Marke löschen Zweites Byte wieder laden Buchstabe ausblenden Buchstabe = O?
Ja, Alpha-Marke setzen Nein, prüfen, ob ID's gleich ID-Zahl 1 laden Mit ID-Zahl 2 vergleichen Nicht gleich, kein Operand Index auf zweites Byte setzen Zweites Byte wieder laden I/O-Ziffer ausblenden Ziffer = 0, fertig Ja, ASCI-Ziffer in Puffer geben Mit 4 multiplizieren Zum Multiplizieren mit 5 addieren Ergebnis zu tiefer Basisadresse addieren wiederherstellen BF-Hinweismarke auf Mnemonikfeld setzen wiederherstellen Instruktion auch in ACCB geben Zwei-Byte-Instruktionen mit Zwei-Ziffer-Operand?
Nein, weiterprüfen Operand nur im zweiten Byte Operand in BCD umwandeln Index-Puffer-Hinweismarke setzen Operand > 100? (A-O) Nein, Operand ist eine Zahl Ja, untere zwei BCD-Ziffern laden In ASCII A bis O umwandeln
709808/1025
00954 00955 00956 00957 00958 00959 00960 00961 00962
Operand speichern
Fertig
Instruktion laden
Etikett im Operandenfeld?
Nein
Etikett im Operandenfeld?
Nein
Ja, L in ACCB laden
In Puffer geben
Tabellenseite 108
00963 00965 00966 00967 00968 00969 00970 00971 00972 00973 00974 00975 00976 00977 00978 00979 00980 00981 00982 00983 00984 00985 00986 00987 00988
Pufferhinweismarke erhöhen
Anzahl der Ziffer * 4 laden
Festkomma, Gleitkomma oder Gleitkomma
Nein, Anfangsnull nicht unterdrücken
Ja, Anfangsnull bei Operand unterdrücken
Ziffern in Puffer geben
Fertig
Zwei-Byte-Instruktionen mit Registeroperand?
Nein, Operand ist absolute Adresse
LSB erstes Byte ist Teil des Operanden
Operand in BCD umwandeln
Index auf Puffer-Hinweismarke setzen
R an Operandenanfang setzen
In Puffer speichern
Puffer-Hinweismarke erhöhen
Anzahl der Ziffern * 4 laden
Drei Ziffern in Puffer geben
Untere 4 Bits der Instruktion ausblenden
11-Bit-Operand in BCD umwandeln
Index auf Puffer-Hinweismarke setzen
Anzahl der Ziffern # 4 laden
Vier Ziffern in Puffer geben
Oberen Teil des Operanden speichern
Zweites Byte um ein Bit nach links verschieben
LSB des ersten Byte in Übertrag schieben
709808/1025
- £95 -
00989 00990 00993 00994 00996 00997 00998 00999
01000 01001 01002 01003 01004 01005 01007 01008 01009 010CÜ6 01017
In zweites Byte rotieren
Index auf Operand setzen
GIO? Ja, zurück
Nein, Zeile drucken
Erhöhen
Ende des Benutzer-Programmspeichers?
Ja, Speicherüberlauf
Benutzer-Positions-Hinweismarke wieder
herstellen
Papier zu Ende?
Ja, Liste oder Tastenaufzeichnung stoppen
Nein, RS-Marke prüfen
Auflisten fortsetzen?
Ja, nächste Zeile
Speicherüberlauf-Fehler
Instruktion laden
End-Instruktion?
Nein, kein Abstand
Nein, Lauf/Stopp-Marke löschen
Auflisten?
Tabellenseite
01018 01019 01029 01033 01037 01040 01042 01046 01051 01054 01056 01066 01067
Nein, Tastenaufzeichnung
Ja, Alphamarke löschen
Ziffer
Etikett
Immer noch Zifferneingabe
UPP bewahren
Neue Instruktions-Hinweismarke setzen
UPP wieder herstellen
"Lauf" verschieben
Adresse
Puffer nach links verschieben
Ziffern-Eingabemarke wiederherstellten
Befehl wiederherstellen
709808/1025
Tabellenseite
01074 01077 01078 01080 01081
ASCII-Buchstabe
Ziffern-Eingabemarke bewahren
Überspringen
XR in Format bringen
Drucken
Tabellenseite
01085 Ende Symbol-Tabelle
Tabellenseite
0232-0238
00241 00242 00243 00244 00245 00246 00247 00248 00249 00250 00251 00252 00253
Diese Routine wandelt den in Zweier-Komplement-Form gespeicherten Exponenten in sein BCD-Äquivalent um. Das Zweier-Komplement des Exponenten muß in ACCA sein, bevor in dieser Routine eingetreten wird. Die Antwort wird in XPNT gespeichert, wenn die Umwandlung abgeschlossen ist. Ist Vorzeichen des Exponenten positiv? Nein, positiv machen Ja, Startwert des Zählers laden Zehnerspalte erhöhen Zehn von ABS (Exponent) abziehen Wenn> 0, Exponent unvollständig Wenn < 0, Zehn zur Einerspalte addieren Zählerwert in ACCB Gleich Zehnerspalte Des Exponenten,verschieben Um vier Plätze nach links Gesamten Exponenten nehmen Exponent in XPNT speichern
Tabellenseite
00258-00262 Diese Routine bringt die im X-Register ge-
709808/1025
speicherten Daten in Format. Die Information über die Formatart findet sich in TGL und die Ziffern-Eintrittsmarke ist in die IGFLG enthalten. Folgende drei Formate sind möglich:
00266-00277 Bei Zifferneingabe wird Festkomma-Format verwendet. Festkomma-Format geht in Gleichtkomma-Format über, wenn es zu groß für die Anzeige wird. Im PWR3-Betrieb wird mit einem Exponenten angezeigt, der die Dreierpotenz gerade unterhalb dem tatsächlichen Exponenten ist. Diese Betriebsart geht auch in gewöhnliches Gleitkomma-Format über, wenn die Mantisse zu groß für die Anzeige ist. Die größte erlaubte Rundung im BWA3-Betrieb ist sieben; jeder größere Rundungsfaktor wird zu sieben.
00281 00282 00283 00284 00285 00286 00287 00288 00289 00290 00291 00292 00293 00294 00296 00297 00298 00299 00300 00301 00302 00303
Dezimalpunkt-Hinweismarke = 0 setzen Längen-Hinweismarke = 0 setzen Numerische Überlaufmarke löschen Gleichtkomma-Überlaufmarke löschen Exponent laden In BCD umwandeln Exponent in ACCB laden Ziffern-Eingabemarke laden Anfangsnullen?
Ja Z if ferne ingabe Ja Nein, Verbindungschalter laden Formatart-Bits maskieren Wenn < /0IO, Gleitkomma ' Wenn >|® 10, Festkomma Rundungsfaktor laden Rundung =7?
< = 7, Rundung nicht beachten Rundung auf 7 setzen Neue Rundung = 7 speichern Binären Exponenten in ACCA geben
709808/J
00304 00305 00306 00307 00308 00309 00310 00311 00312 00313 00314
00315 00316 00137 00318 00319 00320 00321 00322 00323 00324 00327 00328 00329 00330 00331 00332 00334 00335 00336 00338 00339 00340 00342 00343 00344
Positiv?
Nein, positiv machen
PWR3-Zähler löschen
PWR3-Exponent aus dreien aufbauen
Tatsächlichen und PWR3-Exponent vergleichen
Schon PWR3, Gleitkomma benutzen
Real>PWR3, Aufbau fortsetzen
Vorzeichen des Exponenten testen
Minus, PWR3-Exponent aufgebaut
Plus, PWR3-Exponent nehmen
Differenz zwischen tatsächlichem Exponenten
und PWR3 finden
Positiv?
Nein, positiv machen
Differenz in Dezimalpunkt?Hinweismarke speichern
PWR3-Exponent nach ACCA übertragen
In BCD umwandeln
Rundungsfaktor wieder laden
Dezimalpunkt-Hinweismarke zu Rundung addieren
Rundung + Dezimalpunkt + 1 = positiver Zähler
Gleitkomma-Überlaufmarke setzen
Mantisse laden
Keine Zifferneingabe, Gleitkomma
Zifferneingabe, Überlauf prüfen
Ziffernzähler ausblenden
Mehr als zehn Ziffern gedrückt?
Ja, Überlauf prüfen
Nein, Positionszähler = Ziffernzähler
Exponent laden
EEX-Exponent subtrahieren
Gleitkomma-Überlauf
Ja, Gleitkomma-Überlauf
Nein, Festkomma
Exponenten nach ACCA schieben
Rundung + Exponent + 1 = Positionszähler
Festkomma-Überlauf?
Ja, Gleitkomma
70 9808/102
00345 Nein, Festkomma
00347 Nur Dezimalpunkt und Nullen?
00348 Ja, Nullen eingeben
00349 Ziffernzähler nehmen
00350 Anzahl der Anfangsnullen zum Ziffernzähler addieren
00351 Nein, mehr als zehn Ziffern gedrückt?
00352 Ja, Überlauf prüfen
00353 Nein, Ziffernzähler wieder nehmen
00354 Dezimalpunkt-Hinweismarke speichern
00355 Nein, Mantisse laden
00356 Ja, Längenhinweismarke = Exponent setzen
00357 Mantisse laden
00358 Anzahl der Nullen hinter Dezimalpunkt laden
00359 Entsprechenden Exponenten aufstellen 00360-00361 Anzahl der Anzeige zugeführten Nullen nehmen
00363 Zehn davon?
00364 Nein, Mantisse mit Nullen laden
00365 Ja, Anzeige mit Nullen füllen
Tabellenseite 115
00366 Ja, Gleitkomma-Überlauf
00367 Puffer-Hinweismarke speichern
00368 X-Register-Hinweismarke speichern
00369 Ziffer in ACCA laden
00370 Positionszähler gerade?
00371 Nein, Ziffern in unterer Hälfte
00372 Ja, Ziffern in
00373 Oberen halben
00374 Byte; schieben
00375 Nach unten
00376 X-Register-Hinweismarke erniedrigen
00377 Unteres Halbes Byte maskieren
00378 . Indexregister ändern von
00379 X-Register-Hinweismarke auf Piffer-Hinweismarke
00380 . Ziffer geladen; zurück
709808/1025
00381 Puffer-Hinweismarke setzen.
00382 Leerstellenkode laden
00383 Leerstelle in Puffer speichern
00384 Puffer-Hinweismarke erniedrigen
00385 Weitere Leerstelle laden
00386 Zurück
00387 Leerstellen in Anzeigepuffer laden
00388 Puffer-Hinweismarke ans Ende des Mantissenbereichs setzen
00389 Positions-Hinweismarke auch in ACCB
00390 Positions-Zähler/2 nehmen
00391 Puffer-Hinweismarke = 222 + Positionszähler/2
00392 Zweites Byte Indexregister
00394 Erstes Byte Indexregister
00395 Übertrag löschen
00398 Rundungsziffer laden
00399 Mit 5 vergleichen
00400 Kleiner als 5?
00401 Nein, Übertrag setzen
00402 Positionszähler wieder testen
00403 Negativ?
00404 Nein, Hinweismarke erniedrigen
00405 Positionszähler erniedrigen
00406 Ziffer laden
00407 Zähler = Dezimalpunkt-Hinweismarke?
00408 Nein, kein Dezimalpunkt
00409 Ja, Tastenunterbrechung sperren
00410 Ziffer auf Stapel bewahren
00412 Dezimalpunkt gedrückt?
00413 Numerischer Überlauf?
00414 Wenn Überlauf, Dezimalpunkt eingeben
00416 Zifferneingabe?
00417 Nein, Rundungsbetrieb prüfen
00418 Ja, Gleitkomma-Überlauf
00419 Nein, Dezimalpunkt unterdrückt ~
00420 Ja, Dezimalpunkt
709808/1025
Tabellenseite 116
00422 00423 00424· 00425 00426 00427 00428 00429 00430 00431 00432 00433 00434 00435 00437 00438 00439 00440 00441 00442 00443 00444 00445 00446 00447 00448 00430 00451 00452 00453 00454 00455 00456 00458 00459 00461 00462
Kein Dezimalpunkt
Dezimalpunktcode laden
Im Puffer speichern
Puffer-Hinweismarke erniedrigen
Ziffer wieder in ACCA laden
Tasten-Unterbrechung freigeben
übertrag zur Ziffer addieren
übertrag löschen
Ziffer + Übertrag < 10?
Ja, kein übertrag
Nein, Übertrag setzen
BCDO in ACCA geben
BCD in ASCII umwandeln
Ziffer in Puffer speichern
Mantisse fertig?
Ja, immer noch Übertrag?
ACCA mit BCDO laden
Positionszähler erniedrigen
Puffer-Hinweismarke erniedrigen
Null in Puffer laden
übertrag laden
Übertrag?
Nein, Mantissen-Vorzeichen laden
Übertrag löschen
BCD-Exponent laden
Ist er = 99?
Ja, XR-Hinweismarke = RD 226 setzen
Speichern
Positions-Hinweismarke - 9 setzen
Numerisches Überlaufbit setzen
Puffer-Hinweismarke zurückstellen
Mantisse ohne Rundung wieder laden
überlaufmarke für PPR3 gesetzt?
Ja, Gleitkomma-Überlauf
Verbindungsschalter-Register laden
Ja, PPR3-Überlauf prüfen
Gleitkomma-Überlauf?
709808/1025
00463 00464 00465 00466 00467 00468 00469 00471 00472 00473 00475
Ja, Gleitkomma-Überlauf Eins entsprechend übertrag laden
Puffer-Hinweismarke erniedrigen Anfang des Mantissen-Bereichs im Puffer erreicht?
Nein, Übertrag in Puffer laden Exponent laden
In BCD umwandeln
PWA3-Format?
Nein, Festkomma-Überlauf Ja, PPR3-überlaufmarke setzen Gleitkomma-Überlaufmarke setzen
Tabellensette
00476 00478 00479 00480 00481 00482 00483 00484 00485 00486 00487 00488 00489 00490 00491 00492 00493 00494
00497 00498 00499 00500 00501
Dezimalpunkt = 0 setzen Mantissen-Exponent für PWR3 laden Mantissen-Überlauf?
Keiner, übertrag laden Ja, in Gleitkomma lesen Eins an Pufferplatz speichern Als nächstes zum Dezimalpunkt Exponent laden Um eins erhöhen In BCD umwandeln Mantissen-Vorzeichen laden PWR3-überlaufmarke löschen Mantissenvorzeichen wieder herstellen Positiv?
Nein, MinusZeichencode laden Puffer-Hinweismarke erniedrigen Minus- oder Leerstelle speichern Puffer-Hinweismarke an den Anfang des Exponentenberöichs stellen Gleitkomma oder EEX?
Weder noch, kein Exponent Gleitkomma?
Ja, Exponent in XR Nein, EEX-Exponent aufstellen
709808/1025
00503 EEX-Exponent null?
00504 .NE.O, Vorzeichen prüfen
00506 Vorzeichen-Wechselmarke gesetzt?
00507 Ja, Vorzeichen-Exponent negativ
00508 EEX-Exponent (nicht 0)laden
00509 Sein Vorzeichen prüfen
00510 Ziffern-Eingabemarke wieder laden
00511 Anfangsnullen-Bit löschen
00512 Nur Dezimalpunkt und Nullen?
00513 Ja, negativer Exponent
00514 BCD-Exponent laden
00515 Wenn Null, Exponentenyorzeichen plus
00516 Exponent von XR laden
00517 Exponenten-Vorzeichen plus?
00518 Nein, Minuszeichen-Code laden
00519 Exponenten-Vorzeichen speichern
00520 Puffer-Hinweismarke erhöhen
00521 BCD-Exponent laden
00522 Auch in ACCB geben
00523 Zehnerspalte des
00524 Exponenten in oberen
00525 halben Byte; schieben
00526 nach unten
00527 BCD in ASCII umwandeln
00528 Zehnerspalte speichern
00529 Puffer-Hinweismarke erhöhen
00530 Einerspalte nehmen
Tabellenseite 118
00531 BCD in ASCII umwandeln
00532 Einerspalte des Exponenten speichern
00533 Leerstellen-Code in ACCA geben
00534 Dezimalpunkt-Code in ACCB geben
00535 Index auf Pufferanfang -1 setzen
00537 Leerstelle?
00538 ' Ja, noch kein Anfang der Zahl
709808/1025
00540 00541 00542 00543 00547 00548 00549 00550 00551 00552
Leerstelle?
Ja, laden von Kommas starten Dez imalpunkt?
Nein, weitersehen Kommaposition finden Zeichen laden Ende der Zahl erreicht?
Ja, fertig Nein, Komma eingeben Zeichen mit Komma wiederherstellen
Tabellenseite
00559-00566
Diese Routine wandelt die karthesischen Koordinaten in den X- und Y-Registern in polare Form um. Die X-Koordinate muß im X-Register und die Y-Koordinate muß im Y-Register sein. Als Ergebnis wird der Radius im X-Register und der Winkel im Y-Register wiedergegeben
00575 X in letztem X bewahren
00577 Sowohl X als auch Y=O?
00578 Ja, fertig
00579 Auf zweites Divisionsargument zeigen
00580 Y durch X dividieren
00581 RRCTAN Y/X finden
00582 Ist X negativ?
00583 Nein, Winkel ist richtig
00584 Winkel in Y geben
00585 X löschen
00587 XR-Exponent = 2 setzen
00585 Winkel-Vorzeichen negativ?
00589 Ja, Vorzeichen wechseln
00590 Vorzeichen auf 180° Verschiebung geben
00591 200 Neugrad laden
00594 Neugrad?
00596 Rad?
00597 180° laden
709808/1025
00598 00600 00602 00604 00606 00608 00610
in X speichern
PI in X laden
Verschiebung zum Winkel addieren
Winkel = 90 Grad?
Nein, Winkel auch in Y geben
1/COS-Winkel
X/COS-Winkel
Tabellenseite
00613 00617-00619
00625 00626 00627 00628 00629 00630 00631 00632 00633 00634 00635 00636 00637
Radius positiv machen
Diese Routine führt die komplementäre Operation
zur oben beschriebenen Karthesisch/polar-Routine
durch
X im letzten X bewahren
Winkel nach X übertragen
COS des Winkels nehmen
Auf zweites Multiplikationsargument zeigen
Radius + SIN des Winkels
Auf ATl zeigen
X-Koordinate in ATl bewahren
Winkel wieder nach X übertragen
SIN des Winkels nehmen
Auf zweites Multiplikationsargument zeigen
Radius + COS des Winkels
y-Koordinate in Y geben
Auf ATl zeigen
Tabellenseite
00647 Ende Symboltabelle
Tabellenseite
Punkt-Matrizen für Drucker— gespeichert: Punkte
709808/1025
00229 Abstand
00235 Vorzeichen wechseln
00241 Kleines E
00247 Rundungsζeichen
00253 Dollarzeichen
00259 Prozentzeichen
00265 Undzeichen (&)
Tabellenseite 123
00272 Apostroph
00278 Klammer auf
00284 Klammer zu ·
OO29O Stern
00296 Pluszeichen
00302 Komma
OO3O8 Minuszeichen
00314 Dezimalpunkt
00320 Schrägstrich
Tabellenseite 124
Tabellenseite 125
00388 Doppelpunkt
00394 Größer/gleich-Zeichen
00400 Kleiner/als-Zeichen
OO4O6 Gleichheitszeichen
00412 Größer/als-Zeichen
00418 Fragezeichen
OO424 Kommerzielles Bei-Zeichen
Tabellenseite 126
709808/1025
Tabellenseite 127
Tabellenseite 128
00589 Divisionszeichen 00595 Rechter Pfeil
. Tabellenseite 129
00602 PI
00608 Pfeil nach oben
00614 Pfeil nach unten
00620 Deutsche Zeichen
Tabellenseite 130
00652 Spanische Zeichen
00653 Oberseite unten? 00658 N-Balken
Tabellenseite 131
00683-00696 Diese Routine gibt die ASCII-Daten in den
Puffer, wandelt sie um in ihre Punktmatrix-Äquivalente und druckt sie auf dem Drucker. Umwandlung und Druck erfolgen auf Zeile bei Zeile Basis, wobei ein adaptives Vier-Paß-System verwendet wird. Zum Beispiel druckt sie Zeile 1 der Zeichen 1/5, 9 und 13 auf dem ersten Paß, Zeile 1 von 2, 6, 10 und 14 dem zweiten usw., es sei denn, die Anzahl der zu druckenden Punkte in irgendeinem Paß überschreitet 10. In diesem Fall werden die Zeilendaten gleichzeitig mit zwei Zeichen für nur diesen speziellen Paß gedruckt.
709808/1025
00699 OO7O4-OC7O6
0070J 00710 00711 00712 00714 00715 00717 00718 00719 00720 00724 00726
Γ'-ucker-Ausfallcode = llOl in unteren vier Bits
der A-Daten
Druckauswahlen in oberen vier Bits der A-Daten:
Drucker-Ladecode ist 101 in Bits 3,4 und 5 von
BCTL. Das Drucker-Schieberegister ist mit Bit
der B-Daten verbunden.
Verbindungsschalter-Register laden
Druck ein oder Überwachung?
Ja, drucken
Nein, zurück
Verbindungschalter Freigabe aussenden
Verbindungsschalter laden
Ausfallcode löschen
Papier zu Ende?
Nein, drucken
Ja, Fehlercode laden
Papiervorschub
SPH = 0 setzen
Tabellenseite
00728 00730 00734 00735 00736 00737 00738 00740 00741 00743 00744 00747 00748 00749 00750 00751
Zeilen-Hinweismarke = 1 setzen
Paßzähler setzen
SPL = real setzen
Positions-Hinweismarke auf letztes Zeichen zeigen
Tasten-Unterbrechung sperren
ASCII-Code laden
LOP außerhalb des obersten Bits
Ja, als Leerstelle behandeln
ASCII Verschiebung subtrahieren
Ja, als Leerstelle behandeln
Punkt-Vektoradresse hoch laden
Mit vier multiplizieren
Wenn übertrag, Adresse hoch erhöhen
Zu Multiplikation mit fünf addieren
Wenn übertrag Adresse hoch erhöhen
Tabellenadresse tief zur Verschiebung addieren
709808/1025
00752 00753 00754 00755 00756 00757 00758 00759 00760 00761 00762 00763 00764 00765 00766 00767 00768 00769 00770 00771 00772 00773 00774 00775 00776 00777 00778 00779 00780 00781
In Adresse tief speichern
Wenn Übertrag, Adresse hoch erhöhen
Adresse hoch speichern
Positions-Hinweismarke speichern
Punkt-Matrixadresse laden
Spaltenzähler laden
Spaltenzähler erniedrigen
Punktspalte laden
Punkt einer Zeile auswählen
Ist es eine Null?
Nein, eins in Punktreihe laden
Punktzähler erhöhen
Auf nächste Spalte zeigen
Aufbau des Punktvektors fertig?
Nein, nächsten Punkt laden
Index mit Stapel-Hinweismarke laden
Punktvektor auf Stapel speichern
Stapel-Hinweismarke erhöhen
Positions-Hinweismarke für untere Hälfte laden
Um vier erniedrigen
Zurückspeichern
Index mit Positions-Hinweismarke laden
Positions-Hinweismarke < $
Nein, nächstes ASCII-Zeichen umwandeln
Punktzähler laden
Auch in ACCB geben
Punktmarken um ein Bit nach rechts verschieben
Anzahl der Punkte ausblenden
Anzahl der Punkte > 10 j
Nein, Punktmarke nicht setzen
Tabellenseite
00782 00783 00784 00785 00786
Ja, Punktmarke setzen Punktmarken bewahren und Punktzähler löschen Positions-Hinweismarke laden Ende der gesamten Zeile?
709808/1025
Ja, Papiervorschub 15 zur Positions-Hinweismarke addieren Beginn des nächsten Passes zu speichern Positions-Hinweismarke in Index laden Paßzähler verschieben Warten bis zur Beendigung der Abschaltzeit Drucker-Auswahlcode laden Drucker einschalten Drucker-Schieberegister freigeben Punkte zum Drucker aussenden Punkte zum Drucker aussenden Mehr als 10 Punkte auf diesem Paß?
Ja, Nullzähler = -10 Null in Druckerregister schieben Nullzähler erhöhen 10 Nullen geladen?
Ja, drucken Punkte zum Drucker aussenden Punkte zum Drucker aussenden Drucken Drucker-Schieberegister abschalten Auf nächste Punktmarke zeigen Alle vier Pässe gedruckt?
Nein, nächsten Paß drucken Nach dem Einbrennen zwei Millisekunden warten Tastenunterbrechung freigeben Drucker abschalten Zeilen-Hinweismarke verschieben Minus, Druck fertig Papiervorschub Papiervorschub Stapel-Hinweismarke erniedrigen Index mit Stapel-Hinweismarke laden Punktvektor laden Punkte zum Drucker aussenden Übertrag setzen Nächsten Punkt in Position rotieren
709808/1025
Tabellenseite
00837 00838 00840 00841 00843 00845 00847 00848 00853 00854 00856 00857 00858 00863 00864 00865 00867 00868 00869 00870 00871 00872 00873
Zeichen fertig?
Nein, weiteren Punkt aussenden
Tastenunterbrechung sperren
7,5 Millisekunden Abschaltzeit laden
25,5 Millisekunden auf Zählung laden
Drucker einschalten
Drucker abschalten
Tastenunterbrechung freigeben
Positions-Hinweismarke speichern
2,0 Millisekunden Einbrennzählung laden
Pulszähler setzen
Paßzähler laden
Komplementieren
Oder mit Drucker-Auswahlcode
Druck starten
Druck für 2,0 Millisekunden halten
Druckimpuls abschalten
Druckimpuls 15 Mikrosekunden heraushalten
Druck fertig?
Ja, Positions-Hinweismarke wieder laden
Zurück
Druckimpuls zurück einschalten
Druckimpuls für 15 Mikrosekunden halten
Tabellenseite
00877 Ende Symbol-Tabelle
Tabellenseite
Gleichstellungstabelle
Tabellenseite
Kassetten-Initialisierungs- und Ausgangsroutinen 709 808/1025
00172 00173 00176 00177 00180 00181 00183 00184 00186 00191 00192 00194 00196 00200 00201 00202 00204 00205 00206 00208 00210 00211 00212 00213 00215 00216 00218 00219 00220
Tastenunterbrechung sperren
Startadresse der Instruktion bewahren
Stapel-Hinweismarke bewahren
Prüfen ob Kassette draußen
TPOS = verloren
Prüfen ob Kassette immer noch draußen ist
Band abgespult?
BOT- und COT-Unterbrechungsbit zurückstellen
Ziffern-Eingabemarke löschen
Dateizähler = 5 setzen
Marke für Befehlsauffindung setzen
EOT- und COT-Unterbrechung freigeben
Kassetten-Betriebsmarke setzen
Index auf Rückkehradresse setzen
Instruktion ausführen
Summen-Prüfungsfehler?
Adresse der gerade ausgeführten Instruktion laden
Summenprüfungsfehler bei Verifizierung?
Ja, nicht wieder versuchen
Versuchszähler erhöhen
Versuchszähler ausblenden
3 mal Fehler?
Ja, Fehler drucken
Nein, nochmal versuchen
Sicherstellen, daß Band gestoppt
Stapel-Hinweismarke zurückstellen
EOT- und COT-ünterbrechung sperren
Tasten-Unterbrechung freigeben
Kassettenbetriebsmarke laden
Tabellenseite
00221 Löschen
00220 Wiederherstellen
00225 Exponent laden
00226 Erhöhen
00227 > 0?
709808/1025
00228 00230 00231 00232
Unerlaubtes Argument
Kleiner als Null?
Nein, Fehler
Ja, Zahl in binär umwandeln
Tabellenseite 13g
00236-00240
00244 00245 00246 00248 00249 00251 00253 00254 00255 00256 00258 00259 00260 00261 00263 00264 00265 00266 00267 00268 00269 00270 00271 00272 00274 76 00278
Diese Routine markiert die im Y-Register enthaltene Anzahl von Dateien. Die Größe jeder Datei findet sich im Z-Register. Die Startdatei-Nummer ist im X-Register. Aufnahme gesperrt? Nein, Aufnahme möglich Aufnahmesperre Index auf X-R-Adresse setzen Inhalt in binär umwandeln Anzahl der zu markierenden Dateien >255? Anzahl der zu markierenden Dateien = Anzahl der zu markierenden Dateien bewahren Index auf ZR-Adresse setzen Inhalt in binär umwandeln Dateigröße = 0. Unerlaubtes Argument Dateigröße in TP5 bewahren Startdatei-Nummer in binär umwandeln Neue Dateinummer laden
Wenn = 0, alles für Markierung einstellen Neue Datei + Anzahl der Dateien > 255? Ja, unerlaubtes Argument Neue Datei = alte Datei? Nein, Datei finden Ja, Bandposition prüfen Im Spalt?
Ja, nicht suchen, Markierung beginnen Datei auffinden Prüfen ob rechte Datei Marke für Auffindbefehl löschen Laufende Dateigröße = 0 setzen Absolute Dateigröße setzen
709808/1025
00280 00282 00283 00284 00285 00287 00288
Dateigröße >255, kein Durchhang
Absolute Dateigröße <
Nein, Durchhang addieren
Ja, markierte Dateigröße auf 80 setzen
Neue absolute Dateigröße = 80 setzen
25 Byte-Durchhang addieren
Größe plus Durchhang > 255?
Tabellenseite
00290 00294 00295 00296 00297
00298 00299 00301 00303 00307 00308 00311 00312 00313 00314 00315 00316 00317 00318 00319 00320 00321 00322 00323 00326 00328 00331
Ja, nur genug Durchhang bis =256
Dateityp = leer setzen
Neue Dateinummer laden
Wenn nicht Null, Markierung beginnen
Wenn Null, Markierung für Marke für Bandbeginn
setzen
Band für Ladung von Punkt zurückspulen
Teil von Präambel markieren
Vorwärts langsam Daten schreiben =
Spalt aufnehmen
Band wieder starten wenn unterbrochen
Index auf Markierung von 3" Spalt setzen
Ja, Übergang bewirken
Erste Präambel schreiben
Überschrift aufnehmen
Markierungsdatei?
Ja, fertig
Nein, Index mit Anzahl der Bytes laden
ACCA mit nur Einsen setzen
Byte aller Einsen aufnehmen
Byte-Zähler erniedrigen
Fertig? Nein, anderes Byte markieren
Ja, Dateinummer erhöhen
Anzahl der zu markierenden Dateien erniedrigen
Fertig? Nein, nächste Datei markieren
Absolute Dateigröße = 0 setzen
Typ = Markierungsdatei
Anzahl der Dateien < 0, bis Ende des Bandes
löschen
• 709808/1025
Löschen auf Ende der Bandmarke setzen Gegenwärtigen Bandzustand laden Vorwärts schnell schreiben
Tabellenseite
00341-00361
Diese Routine nimmt Information aus dem Inneren des Rechners in die Datei auf, auf die durch die Zahl im X-Register gezeigt wird. Es gibt vier Aufnahme-Anweisungen:
1) Format für Aufnahme
2) Programm aufnehmen
3) Daten aufnehmen
4) binär speichern
Die Instruktion "Programm aufnehmen" speichert das Programm beginnend mit der gegenwärtigen Programmposition in der Datei auf dem Band. Die "Aufnahmeformat"-Instruktion tut das gleiche mit der Ausnahme, daß das Programm als gesichertes Programm gespeichert wird. Die Datenaufnahmeinstruktion benutzt die Startregister-Nummer im Y-Register und die Anzahl der Register im Z-Register, um Daten in eine Datei auf dem Band zu speichern. Die Instruktion "binär speichern" speichert ein spezielles Programm auf dem Band.
00364 00365 00367 00368 00369 00372 00375 00376 00377 00380 00381 00382
Eingang-Aufnahmeformat
Eingang Programm-Aufnähme
Gesicherter Speicher?
Nein, Aufnehmen
Fehler bei gesichertem Speicher
Binären Eingangspunkt speichern
Aufnahme gesperrt?
Nein, Aufnahme möglich
Aufnahme gesperrt
Binär speichern?
Nein, fortfahren
Endadresse in TP4 speichern
709808/1025
00384 00390 00391 00393 00394 00395
- 3U"-
Start von Spezialprogramm laden
Startadresse in TP7
Binärer Dateityp
Aufnahme von Spezialprogramm gesichert?
Nein, Typ =
Ja, Typ =
Tabellenseite
00399 00400 00402 00403 00404 00405 00406 00407 00408 00409 00410
Index auf YR-Adresse setzen
Inhalt in binär umwandeln
Daten aufnehmen
Systemadresse nehmen
Adresse in Index geben
Startadresse außerhalb des Bereichs?
Ja, unerlaubtes Argument
Nein, Inhalt des Speichers laden
Adresse erhöhen
Laufende Dateigröße erhöhen
Übertrag in hoher 8? Nein, auf Ende prüfen
709808/1025
00442-00443
Laufende Dateigröße erhöhen
Ende?
Ja, Ende gefunden
Ende des Speichers?
Nein, in Schleife fortfahren
Endadresse in TP4 bewahren
Formataufnahme?
Auf gesicherten Programmtyp setzen
Unerlaubte Adresse
Endadpesse auffinden
Z-Register-Adresse in Index
Inhalt in binär umwandeln
Anzahl der Register > 255; Ja Fehler
Anzahl der Register laden
Anzahl der Register =
Ja, unerlaubtes Argument
Anzahl der Register mit 8 multiplizieren
Neue laufende Dateigröße speichern
Endadresse wieder laden
Startadresse auffinden
Existiert Register?
Register existiert nicht, Fehler
Auf Datentyp setzen
Tabellenseite
00451 00453 00454 00455 00457 00458 00461 00463 OO467 00468
Neuen Dateityp speichern
Startadresse in TP1
Datei auffinden
Prüfen, ob die richtige
Markierungsdatei?
Ja, falscher Dateitype
Neue laufende Dateigröße setzen
Neuen Dateityp setzen
Absolute Dateigröße - laufende Dateigröße
Datei groß genug?
709808/1025
00469 00471 00472 00473 00474 00475 00476 00477 00478 00479 00481 00482 00483 00484
Datei zu klein
Teilweise Preambel schreiben
Überschrift aufnehmen
Summenprüfung löschen
Startadresse in Index
Info aus Rechnerinnerem laden
Zur Summenprüfung addieren
Summenprüfung wiederherstellen
Byte wieder laden
Byte aufnehmen
Aufnahmekörper fertig?
Nein, mehr aufnehmen
Summenprüfung in ACCA laden
Summenprüfung aufnehmen
Tabellenseite
00490-00493
00494 00495 00496 00497 00498-00512
Diese Routine lädt eine Datei vom Band und lädt sie entweder in den Speicher oder vergleicht sie mit dem Speicherinhalt. Es gibt vier von dieser Routine behandelte Instruktionen:
1) laden
2) verifizieren
3) Format laden
4) binär laden
Alle vier Instruktionen führen ihre Operation *uf der Datei aus, auf die durch die Zahl im X-Register gezeigt wird. Die Lade- und die Verifizier-Instruktion benötigen eine Startadresse oder Startregisternummer, die im Y-Register gefunden wird. Der Dateityp, der während des Bandlaufs festgelegt wird, zeigt der Routine an, ob die Daten oder ein Programm geladen werden soll (Daten oder Programm verifizieren) Die Anweisung "Format laden" lädt den Inhalt der Datei in den Speicher, beginnend bei der Adresse, die unmittelbar der Formatladeinstruktion folgt und, nachdem das Laden fertig ist, wird die Ausführung des neuen Codes begonnen. Die Instruktion "binär laden" lädt eine Datei vom Band und speichert sie im Speicher als Spezialprogramm.
Lade- und Lauf-Eingangspunkt Eingangspunkt für "binär laden"
7 09808/1025
00517 00518 00520 00521 00522 00523 00524 00525 00527 00528 00532 00533 00534 00535 00536 00537 00538 00540 00541 00542
Lade-Eingangspunkt
Värifizier-Eingangspunkt
Datei auffinden
Datei-Lesen beginnen
Prüfen, ob richtige Datei
Ja, fortfahren
Neir, richtige Datei auffinden
Überschrift wieder prüfen
Falscher Dateityp
Index auf Y-Register-Adresse setzen
Datendatei?
Binär laden?
Ja, falscher Dateityp
Pr ogr airundat ei ?
Ja, nicht gesichert
Värifizieren?
Ja, Programmsicherungsbit nicht setzen
Programmsicherungsbit setzen
Startadresse in binär umwandeln
Adresse auf Systemadresse einstellen
Tabellenseite
00544 00546 00547 00549 00552 00553 00555 00557 00558 00559 00561 00562 00564
Startadresse in TP6
Adresse prüfen
Adresse außerhalb des Bereichs?
Speicherüberlauffehler
Anzahl der Bytes in TP7
Startadresse + Anzahl der Bytes
Endadresse in TP4 speichern
Gleich EOPM?
Nein, größer; Fehler
Start.dn Index
Wenn värifizieren, värifizieren starten
Erstes Byte löschen wenn beim zweiten Byte geladen
Laden und Laufen?
709808/1025
00565 00567 00568 00570 00571 00572 00573 00574 00576 00577 00578 00579 00580 00581 00582 00583 00585 00587 00588 00589 00590 00592 00593 00594 00596
Laden starten
Ja, UIP auf Programmanfang setzen
Startadresse wieder im Index
Datendatei?
Nein, binäre Datei
Binäre und Datendatei laden?
Nein, in Ordnung
Ja, falscher Dateityp
Binär värifizieren?
Ja, Start- und Endadressen aufstellen
Binär laden?
Nein, falscher Dateityp
Startadresse von Spezialprogramm laden
Spezialprogramm zu groß?
Ja, Fehler
Spezialprogramm auf neue Adresse setzen
Gesichertes Binärbit löschen
Binär gesichert?
Nein, laden
gesichertes Binärbit wieder setzen
Neue Marke speichern
Startadresse von Spezialprogram in TP6
Endadresse auffinden
Startadresse laden
Startregisternummer in binär umwandeln
Tabellenseite
00599 00601 00602 00603 00604 00605 00606 00608 00609 00610
Unerlaubte Adresse
Endadresse auffinden
Existiert Register?
Register existiert nicht, fehler
Summenprüfung löschen
Ende der zweiten Preamble auffinden
Byte lesen
Värifizieren?
Ja, mit Byte im Inneren des Rechners vergleichen
Gleich, kein Fehler
7 09808/1025
- 331 -
00611 00613 00614 00615 00616 00618 00619 ΌΟ62Ο 00621 00622
Verifizierung fehlgeschlagen
Laden! Byte im Inneren speichern
Byte zur Summenprüfung addieren
Summenprüfung wiederherstellen
Adresse erhöhen
Nicht fertig, anderes Byte lesen
Summenprüfung lesen
Summenprüfung gleich?
Ja, laden oder värifizieren fertig
Summenprüfungsfehler
Tabellenseite
00627 00628 00637 00638 00640 00641 00642
Registernummer laden Systemadresse finden Endadresse in TP4 Endadresse in TP7 Laufende Dateigröße in TP6 Endadresse - CFSZ = Startadresse Index auf Startadresse setzen
Tabellenseite
00654-00657
00658 00659 00660 00661 00662-00663
Diese Routine identifiziert jeder Teil, auf die durch die Zahl im X-Register gezeigt wird. Wenn diese Routine fertig ist, enthält der Stapel:
Dateitype in T Laufende Dateigröße in Z Absolute Dateigröße in Y Dateinummer in X
Diese Information wird auch auf dem Printer ausgedruckt, wenn der "Druck"-Schalter eingeschaltet ist.
Datei auffinden
Prüfen ob es die richtige Datei ist
Kassettenbetriebsmarke zurückstellen
709808/1025
00672 00673 00676 00678 00680 00682 00683 00684 00686 00687 00689 00690 00693 00695 00697 00698 00700 00701 00703 00704 00705
Startadresse der ID-Tabelle laden
In W bewahren
Spur B?
Ja7 - auf Dateinummer geben
Nein, Dateinummer drucken
Summenprüfungswort löschen
Dateityp laden
Dateityp drucken
Laufende Dateigröße laden
Laufende Dateigröße drucken
Absolute Dateigröße laden
Absolute Dateigröße drucken
Dateinummer in X geben
Puffer ausblenden
Pufferhinweismarke auf Pufferbeginn setzen
Nachrichtenhinweismarke laden
Nachricht laden
Nachrichtenhinweismarke speichern
Binär in BCD umwandeln
Stapel anheben
X-Register auf Null
Tabellenseite 149
00708 00710 00711 00712 00717 00719 00721 00723 00121 00731 00735
Vier BCD-Ziffern in X laden
Exponent auf drei setzen
Zahl normalisieren
Nächsten Exponenten laden
Ziffern in Puffer laden
Läuft Programm?
Drucken wenn RS-Marke = 00?
Nein, drucken wen RS-Marke = 01 und S-Marke
Datei: .
Typ:
Benutzt
= 0
709808/1025
Tabellenseite
00745-00747
00748 00749 00752 00753 00755 00756 00759 00760 00762 00763 00764 00765 00766 00768 00769 00770 00771
Diese Routine wandelt die Dateinummer in binär um und ändert die Kassette auf die richtige Spur.
1) positive Dateinummer = Spur A
2) negative Dateinummer = Spur B Index auf X-Registeradresse setzen Inhalt in binär umwandeln Dateinummer > 255?
Ja, unerlaubtes Argument
Gleiche Spur?
Ja7 nicht TPOS = verloren setzen
Ja, TPOS = verloren
Dateinummer auf positiv?
Ja, Spur A"
Nein, Spur B ausgewählt
Spur B setzen
Auswahlcode Spur A
Spur A setzen
Marke wieder herstellen
Spuren vertauschen
Tabellenseite
00776-00778
00785 00786 00787 00788 00789 00792 00793 00796 00797 00799 00800
Diese Subroutine führt eine schnelle Dateisuche nach der Datei durch, auf die durch die Zahl im X-Register gezeigt wird
Nein, Dateisuche beginnen
Umkehren schnelle Lesedaten =
Ersten „Spalt in Rückwärtsrichtung finden
Überschrift lesen
Marke für "Weiß alles" setzen
Datei = X-Datei?
Nein, einzuschlagende Richtung prüfen
Wenn Überschrift ganz bekannt, langsam zurück
Langsam zum Spalt zurück
TPOS = Spalt?
Nein, schnell zum Spalt zurück spulen
709808/1025
00802 Marke "weiß alles" löschen
00805 Datei < X-Datei?
00806 Nein, Bandposition prüfen
00807 TPOS = Spalt?
00808 Ja, Dateinuinmer nicht ändern
00809 Ja, Dateinummer erhöhen
00810 Daten = 0 für schnelles Lesen umkehren 00812 Dateinummer erniedrigen
00814 Daten = 0 für schnelles Lesen vorwärts
00816 Dateinummer erhöhen
00818 Band starten
00819 Datensuche
00820 Spaltsuche
Tabellenseite 152
00821 Marke " weiß alles" gesetzt?
00823 Ja, fertig
00824 Nein, Überschrift lesen
00825 Zurück zum Spalt
00826 Richtige Datei?
00827 Ja, zurück
00828 Nein, nach richtiger sehen
00829 Neue Datei prüfen
00832 Dateinummer1laden
00833 Ist es die richtige?
00834 Nein, Datei-Prüfhinweismarke erniedrigen
00835 Ausgangsmarke setzen
00836 Befehlauffindungsmarke löschen
00838 Datei-Prüfhinweismarke erniedrigen
00839 Prüfung fünfmal falsch?
00840 Datei nicht gefunden
Tabellenseite 153
00845 Lese-Dienst-Routinen
709808/1025
00870 -
Nach Ende des neunten Bit sehen
Ende gefunden?
Ja, Übergangsbit zurückstellen
Ja, Lese-Verschiebung setzen
Maskierung = 1 setzen
Gerade gelesenes Byte bewähren
Schwellwert zur Verschiebung addieren
Zeitgabezähler erniedrigen
Übergang stattgefunden
Nein, in Schleife fortfahren
Gerade gelesenes Byte wieder laden
Zähler <- = O,Bit =
Zähler > 0, Bit =
Übergangsbit zurückstellen
Leseverschiebung setzen
Maske zur nächsten Bitposition verschieben
übergang gelöscht, Byte nicht beendet
Hinter Umschaltung auf Schreiben gehen
Übergangsbit rückstellen
übergang?
Lese-Schwellwert setzen
Übergangsbit zurückstellen
Zeitgabezähler erniedrigen
Übergang?
Nein, weiter warten
Ja, weiter nach erstem sehen
Übergangsbit zurückstellen
Tabellenseite
Daten,= 0 für langsames Lesen vorwärts Band starten
Index auf zeitweilige Verschiebung der Überschrift setzen
Datensuche
Ende der ersten Präambel finden
709808/ 1 02S
00889 00890 00891 00892 00893 00894 00895 00897 00898 00899 00900 00901 00904
Dateinummer lesen
Bewahren bis die Überschrift richtig gelesen'ist
Summenprüfung initialisieren
Nächstes Byte der Überschrift lesen
Im Zwischenspeicher speichern
Zur Summenprüfung addieren
Summenprüfung wiederherstellen
Nein, anderes Byte lesen
Ja, Summenprüfung lesen
Summenprüfungen gleich?
Ja, Überschrift gelesen
Summenprüfungsfehler
Neue Dateinummer in Datei speichern
Tabellenseite
Aufnahmedienst-Routine
180 ms auf neuntes Bit warten
Neuntes Bit schreiben
Schreibverschiebung setzen
Maske = 1 setzen
O-Zählung addieren
Ist Bit eine 1 oder eine
0-1 Differenz addieren
Zeitgabezähler erniedrigen
Zeitgabezähler =
Ja, Datenausgabebit wechseln
Schreibverschiebung setzen
Maske um Eins nach links verschieben
Fertig mit Byte?
Ja, zurück
Spezial-Programm-Startadresse bewahren
Daten = 0 für langsames Lesen vorwärts
Band starten
Datensuche
Daten = 0 für langsames Schreiben vorwärts
ACCA ganz auf O setzen
709808/1025
00944 Acht Nullen schreiben
ΟΘ945 Sieben Nullen und eine Eins laden
00946 Zeitgabezähler setzen
00947 Rückstellung der Präambel aufnehmen
"Tabellenseite 156
00949 Dateinummer laden
00950 Summenprüfung initialisieren ΌΟ951 Dateinummer aufnehmen
00952 Index auf zeitweilige Verschiebung der Überschrift setzen
00953 Andere Bytes in Überschrift laden
00954 Zur Summenprüfung addieren
00955 Summenprüfung wiederherstellen
00956 Überschrifts-Byte wieder laden
00957 Nächstes Byte der Überschrift laden
00958 Zwischenspeicher-Hinweismarke der Überschrift erhöhen
00959 Nein, nächstes Byte
00960 Ja, Summenprüfung laden
00961 Summenprüfung aufnehmen
00962 Zweite Präambel aufnehmen
Tabellenseite 157
00966 Such- und Bandbewegungs-Routinen
00969 Nummer des Übergangszählers setzen
00970 Übergangsbit zurückstellen
00974 Band wieder starten wenn unterbrochen
00975 Übergang?
00976 Nein, wieder prüfen
00977 Ja, Nummer des Übergangszählers erniedrigen
00978 Nein, nach anderer sehen 00980 TPOS = Daten
00983 Laden
00985 . Suchgeschwindigkeit?
00986 Ja, zur Schleife gehen
709808/1025
00987 00988 00989 00990 00991 00993 00997 00998 00999 01000 01003 01004 01005 01007
Laden
Übergang?
Ja/ alles starten
Nein, Zähler erniedrigen
Spalt gefunden? Nein, Schleife fortfahren
TPOS = Spalt
Daten = 0 für langsames Lesen rückwärts
Band starten
Datensuche
Spaltsuche
Lesen
Band stoppen
Auf Bandstopp warten
Warten fertig?
Tabellenseite
01010 01011 01012 01013 01015 01017 01018 01019 01020 01022 01023 01024 01025 01026 01027 01028 01030 01031 01033 01036
Erster Paß
Zweieinhalb Fuß oder Loch sehen
Zweieinhalb Fuß, gültiges Band gefunden
Loch, Abstand prüfen
Ja, Bandbeginn
Nein, zwei Fuß
Erster Paß?
Nein, Bandende
Ja, Paßwort auf zweiten Paß erhöhen
Daten = 0 für schnelles Lesen vorwärts
Erster Paß
Wissen, welches Ende
Daten = 0 für schnelles Lesen rückwärts
Gleiche Richtung?
Ja, weiter nach zweieinhalb Fuß sehen
Nein, Richtungen schalten und weitersehen
Band zurück über Loch
Loch gefunden, in Schleife fortfahren
Verloren aber in gültigem Band
Prüfen ob Kassette draußen
709808/102
01037 . EOT und COT-Unterbrechungsbit zurückstellen
01039 Bandstatus laden
01040 Band starten
01041 Abstandszähler erhöhen
01044 Ja, prüfen ob im gültigen Band
01045 Nein, Loch angetroffen?
01046 Nein, in Schleife fortfahren
01048 Warten bis nach 0,023 "-Loch"
01049 B-Akkumulator bewahren
01050 Fehler "Ende des Bandes"
01054 Band abgespult?
01055 Ja, Fehler ausgeben
01056 Nein, ACCB wieder laden
01057 Loch angetroffen?
Tabellenseite 159
01061 Rücklaufmarke setzen
01063 Daten = 0 für schnelles Lesen rückwärts
01070 COT-Prüfung freigeben
01072 Kassette draußen?
01073 Nein, eingelegt
01074 Fehler "Kassette draußen"
Tabellenseite 160
0179-01084 Diese Routine ist die COT- und EOT-Unterbrechungsroutine. Sie behandelt die Situation, bei denen die Kassette mitten in einer Kassettenroutine entfernt wird und wo das Band entweder auf den Ladepunkt oder auf frühe Warnlöcher im Band trifft.
01087 So arbeitet SEI-SEI
01090 Langsam lesen
01092 Band starten
01094 Zwei "warten"
01095 Band aufgespult?
01096 Schnell
01097 Gegenrichtung
709 8 0 8/1025
01098 Bandstatus bewahren
01099 Band stoppen
01101 EOT- und COT-Unterbrechung sperren
01102 Band zurück über Loch
01103 Loch angetroffen?
01105 Nein, falsches Loch
01106 TPOS = verloren
01107 Stapelhinweismarke zurückstellen
01108 Startadresse der Instruktion laden 01110 Instruktion nochitial durchführen
01112 Bandstatus wieder laden
01113 Vorwärtsrichtung?
01114 Nein, Ende des Bandes
01116 Position bekannt?
01117 Welches Loch?
01118 Wieder zurückspulen 01121 Datei = 0
01123 TPOS = Spalt
01124 EOT- und COT-Unterbrechungs-Bit zurückstellen 01126 EOT- und COT-Unterbrechung freigeben
01128 Bandbeginn markieren?
01129 Daten = 0 für langsames Lesen vorwärts 01131 Band 1 "bewegen"
Tabellenseite 161
01133 Rücklaufmarke prüfen
01134 Rücklauf, fertig
01135 Kein Rücklauf, mit Instruktion fortfahren 01140 Band zum Spalt der Markierungsdatei bewegen 01143 Prüfen ob schon Frühwarn-Loch
01145 Vorwartsrichtung?
01146 Ja, Bandbeginn; Instruktion ausführen
01147 Datei nicht gefunden
01149 Finden?
01150 Bis Ende des Bandes löschen? 01152 Nein, Ende des Bandes
709808/1025
Tabellenseite
Tabellenseite
Ende
SYMBOLTABELLE Error = Fehler
Tabellenseite
00003-00004
00006 00007 00008 00009 00010 00011 00013-00014
00016 00017 00018 00019 00020 00021 00022
Diese Datei definiert die Basisseiten-Lese/Schreib-Zuordnung für CJ. Adressen sind hexadezimal 0 bis FF einschließlich
Periphäres Zugriffsregister Periphäres Steuerregister Periphäres Zugriffsregister Periphäres Steuerregister Hauptrahmen-Eingangstor I/0-ROM-Eingangstor
Es folgt der Zustandsbereich. Er wird dauernd für Lese/Schreiben gebraucht, um den Status der Maschine zu erhalten
Fehlerwort (Fehler wenn nicht Null) Verbindungsschalter werden hier festgehalten Hier werden Benutzermarken gehalten Benutzerprogramm-Lauf/Stopp-Marke Ende des Benutzer-R/B-Wortes (nur Seitenadresse) Ende des Prograinmspeichers (16-Bit-Hinweismarke)
Stapelautomatik-Marke (Anhebung freigegeben, wenn negativ)
Setzen der Anzeigerundung Z ifferneingabemarke BCD-Akkumulator für Compiler
709808/102
00026 00027 00028 00030-00031
BCD-Akkumulator für Compiler Schrittmarke für Einzelbetrieb Ziffernzähler für Compiler
Es folgt der Zwei-Byte-Zwischenbereich, der für die Zwischenspeicherung von Hinweismarken usw. benutzt wird.
00048-00049 Es folgt der Ein-Bit-Zwischenbereich, der für die Zwischenspeicherung von Marken usw. benutzt wird.
Tabellenseite
00065-00067
00070 00072 00074 00075 00076 00078-00079
00083-00084 00091-00092
00096 00103 00107-00110
Es folgt der interne Systemstapel. Der Stapel erlaubt sieben Benutzer-Subroutinen, sieben System-Subroutinen und eine Unterbrechung.
(Starts hier; baut ab) Es folgen die drei ständigen Hinweismarken Starthinweismarke/Marke einfügen Spez ialprogramm-Hinwei smarke Zusätzliche Hinweismarke für zukünftige ROMs
Es folgt der Drucker/Anzeige-Puffer (auch als Ziffernstapel durch CORDIC benutzt)
Es folgen die vier arithmetischen Zwischenspeicher (auch benutzt von der Druckeransteuerung für Punkte)
Es folgen die Arbeitsregister für die Gleitkomma-Mathematik-Subroutinen Es folgen die Benutzer-Stapelregister Es folgt das Register "letztes X"
Es folgt der gepufferte Tastenfeld-Tastencode-Speicherbereich. Er puffert zwölf Tasten. Platz BKWRT muß immer Null sein. Wenn BKWRT + 1 nicht Null ist, ist der nächste Tastencode immer
Tabellenseite
00111 00113 00114 00116-00117
am Platz B KKC Schreib-Hinweismarke für gepuffertes Tastenfeld Nächster verfügbarer Tastencode
Es folgen einige weitere ständige Speicherplätze und Hinweismarken.
7 0 9808/1025
00119 00120 00121 00122 00123 00124 00125 00126 00127 00128 00130-00132
00140 00141 00143-00144
Platz für Einzeloperation 2633151
Benutzerprogramm-Hinweismarke
Benutzerinstruktions-Hinweismarke
Speicher-Alpha-Marke
I/0-Kanal 1 Hinweismarke/Marke
I/0-Kanal 2 Hinweismarke/Marke
Syntax-Tabellen-Hinweismarke
Kassettenbetriebsmarke
Kassetten-Bandpositions-Anzeiger
Kassetten-Datei-Anzeiger
Es folgen fünf (a-e) der zehn (a-j) Benutzer-Alpha-Register. Die anderen fünf (f-j) werden aus dem Benutzer-R/W bei Netzeinschaltung herau s genommen.
Dies schließt Lesen/Schreiben der Basisseite ab Benutzerprogramm-Speicher folgt sofort nach
Es folgen einige Gleichungen, die die Startadressen der gemeinsam benutzten System-Subroutinen definieren
Tabellenseite
Tabellenseite
00221-00223
00225 00226 00227 00228 00230 00232 00233 00234
I/O-Code ist nach ACCA geschoben worden. Die Routine führt ROM-Adressen in IX (auch in T11) oder Fehlercode in ACCB zurück (5 = keine 1/0-Vorrichtung).
Erste ROM-Adresse
Setzen
Primärcode prüfen
Passung finden
Adresse zum nächsten ROM verschieben
Nächste ROM-Adresse laden
Letztes geprüft?
Noch nicht
709808/1025
00236 00238 00239 00240 00241 00242 00243 00244
Zurück zum vorhergehenden ROM
ROM-Hinweismarke laden
Sekundärcode laden
Passung gefunden
Zurück zum ROM 1?
Noch nicht
Fehlercode laden
Zurück
Tabellenseite 169
00249 00251 00252 00253 00255 00256 00257 00258 00259 00260 00261 00262 00263 00264 00266 00268 00269 00270 00271 00272 00274
Hauptrahmen-I/O-Steuerung
Instruktionshinweismarke laden
Zweites Byte der Instruktion
RufCodenummer maskieren
Druck läuft
ROM-Adresse lokalisieren
ROM nicht gefunden
Instruktions-Hinweismarke
Zweites Byte
Buchstabencode maskieren
Mal zwei
Untere Hälfte der Hinweismarke setzen
Hinweismarke laden
Adresse der Routine laden
I/O-ROM rufen
Fehlerwort laden
Fehler
Kein Fehler, Instruktions-Hinweismarke vorschieben
Instruktionshinweismarke setzen
Zurück
Druck rufen
Tabellenseite 170
00282
Spezialprogramm-Speicherung zur Bandkassette
709808/1025
00313-00314
00316 00317 00318 00319 00321 00322 0
SPSTS speichert es als gesichertes Programm
Benutzerparameter:
XR-Dateinummer
Sicherungsbit
Untere Grenze finden
NuI1-Programm?
Ja
Gesichertes Spezialprogramm?
Ja
Neue Marke setzen
Ende des Spezialprogramms finden
Ende + 1 für Kassette setzen
Α-Band rufen
Sicherungsbit rufen
Speicher sichern
Fehler setzen
Findet die obere Grenze des Speichers und gibt den Wert zurück in IX. ->
Spezial-ROM anwesend?
Ja
Schlitz A laden
Testteil laden
Ja, 101 halten
Nein, 102 laden
Tabellenseite
00326 00328 00330 ΟΘ331 00339 00340 00341 00343
Löscht vorheriges Spezialprogramm und Datenregister
Speichergrenze
Alles zusammengebrochen?
Ja
Lädt ein Spezialprogramm von Kassette
Benutzerparameter:
XR-Dateinummer
Speicher1 löschen
709808/1025
00346 Kassettenfehler?
00347 Nein
00350 Nummernregister auf Null setzen
00356 Ruft ein Spezialprogramm
00358 Untere Grenze finden
00360 Null-Programm?
00361 Ja
00362 Startadresse laden 003 63 Rufen
Tabellenseite 172
00368 Lädt ein Spezialprogramm durch das GIO-ROM vom Papierband
00369 Bandformat: Adresse, Größe, Daten, Summenprüfung Größe, Daten, ...
00371 Datenregister löschen
00373 GIO-ROM anwesend?
00374 Nein
00375 Summenprüfung Null
00376 GIO-ROM springen
00377 Auf Fehler prüfen
00378 Fehler setzen
Tabellenseite 173
00397 Akkumulierungsroutine
00399-00400 Diese Routine setzt die doppelte Variablensummation von "X" und "Y" in die Register "I" und "J".
00401 Benutzerparameter:
00402 XR-Nummer
00403 YR-Nummer
00404 Zurückgekehrte Werte:
00405 1-"1+XR" oder "3I-XR"
00406 J-"J+XR" oder "J^XR"
00410 Marke für "+" oder "-" setzen
709808/1025
00413 00414 00415 6 00417 00418 00428 00430 00431 00432 00434 00436 00437 00439 00441
Andere Makro-Marken setzen
I-Register-Indikator
Speichern
XR und YR austauschen
Y-Register-Indikator
Speichern
Stapeloperation
Letzte Seite des RAM
Register J
Auf Stapelautomatik stellen
Hinweismarke
JR in XR laden
Ergebnis stapeln
Hinweismarke auf IR
IR in XR laden
Tabellenseite
00444 00446-00448
00449 00450 00451 00452 00453 00454 00455 00456 00457
00459 00460 00462 00464 00466
Mittelwert-Standardabweichung
Diese Routine berechnet den Mittelwert und die Standardabweichung, die durch die folgenden Alpha-Registerwerte gegeben sind.
CR - Summe "X"
DR - Summe "X*2"
ER-N (Anzahl der Terme)
Zurückgekehrte Werte:
XR-Mittelwert
YR-Standardabweichung
Angewandte Formeln
Mittelwert = (Summe "X")/N
Standardabweichung = Quadratwurzel ((( Summe "X"t 2) !(Summe "X") * (Mittelwert) ) / (N-1))
(+) Zahl? Ja
Nein, Fehler setzen Stapeloperation
Summe
Il γ Μ
laden
709808/1025
00468 00470 00472 00474 00476 00478 00480 00482 00486 00487 00489 00492
XR in Zwischenspeicher kopieren
"N" in XR laden
"N" in Summe "X" dividieren
Mittelwert bewahren
Mittelwert Summe "X"
Summe "X12" - Mittelwert* Summe "X"
Teilergebnis bewahren
1,0 in Gleitkomma laden
Standardabweichung quadriert
Standardabweichung fertig
Stapelautomatik setzen
Mittelwert in XR laden
Tabellenseite
00496 00498-00499
00500 00501 00502 00503 00504 00505 00506 00507 00508 00509 00512 00514 00516 00518 00522 00524 00526 00538 00531-00532
S igmaroutinen
Diese Routine führt die Einzelvariablensummation von "x", "Xt 2" und "N* aus
Benutzerparaiheter:
XR-Neuer X-Wert
CR-laufende Summe "X"
DR-lau£ende Summe "X φ 2"
ER = laufendes "N"
Zurückgekehrte Werte
XR-neues X
CR-neue Summe "X"
DR-neue Summe 11X φ 2"
ER-neues "N"
Eingangsmarke setzen
"X" bewahren
11+" oder "-2 ausführen
"X" in XR wiederladen
"+" oder "-" ausführen
1,0 in XR laden
11+" oder "-" ausführen
"X" wieder laden
Führt "+"- oder "-"- Operation durch in Abhängigkeit von Spezifizierermarke T13 (O-Addition).
709808/1025
00534 00536 00540 00541
Register-Hinweismarke bewahren Addition ausführen Hinweismarke Ergebnis bewahren
Tabellenseite
00546 00549 00551 00553 00555 00556 00557 00558 00559 00560 00564 00575
Löscht Alpha-Register A-J
A-E löschen
Letzte Seite des RAM
Adresse aufbauen
Adresse von F-J
Gesamtzählung
Null-Byte
Adresse vorschieben
Schon mit 5 registern nach unten?
Nein
Tabelleneinfügungen für Instruktionsadressen
Mittelwert und Standardabweichung
Tabellenseite
00586-00587 Diese Routine definiert die Verbindungs
für CJ.
00588 Instruktion 2*$ 7C00 = Routinenadresse
00590 Rückkehr für Leerstellen
00607 Eingabe
00611 Löschen
00613 Herunterrollen
00615 Letztes X
00627 Heraufrollen
00628 Quadratwurzel aus X
00632 R nach P
00633 P nach R
709808/1025
Tabellenseite 178.
00637 Grad
00638 Nach D.MS
00639 Von D.MS
00646 Mittelwert, Standardabweichung
00647 Anzahl von R1S
00648 Stapel auflisten
00649 X runden
00650 Akkumulator + Rückruf
00651 A-J löschen
00652 Zeile voll
00653 Neugrad
00654 Rad
00691 A speichern
Tabellenseite 179
STO = Speichern RCL = Rückruf
Tabellenseite 180
RCL = Rückruf
CALL = Ruf
STO = Speichern
00756 Datei verifizieren
00757 Laden und Laufen
00758 Daten aufnehmen
00759 Rückspulen
00761 Für B nach G
00762 Für C nach H
00763 Für A nach F
00764 Nächstes A
709808/1025
00765 Nächstes B
00766 Nächstes C
00767 Lauf/Stopp
00768 Ende
00769 Drucken
00770 Zurück
00772 Programm aufnehmen
•00773 Aufnahme geschützt
00774 Datei markieren
00775 Datei identifizieren
00776 Datei laden
00777 Dieses Bit-Muster wird nicht benutzt
00778 Festkomma
00780 Gleitkomma
00781 Gleitkomma 00783 Etikett
Tabellenseite 181
Tabellenseite 182
00850 Ende SYMBOLTABELLE
Error = Fehler
Tabellenseite 183
709808/1025
Tabellenseite 184
Tabellenseite 185
00222-00228 Diese Datei enthält die Umwandlungskonstanten,
die in den Mathematik-Subrautinen benutzt werden. Von den von den mathematischen Algorithmen benutzten trigonometrischen und LN-Konstanten sind nur die Mantissen gespeichert. Außerdem ist für jeden Satz jeder aufeinanderfolgende Konstante einmal verschoben gelassen von der vorhergehenden Konstante. Während der Ausführung jedes Algorithmus wird richtige Wertausrichtung durchgeführt. Alle anderen Konstanten sind als volle Gleitkommazahlen gespeichert.
00234 Neugrad/Einheitskreis (400)
00237 Rad/Einheitskreis (2pi)
00240 Grad/Einheitskreis (360)
00243 Neugrad/Quadrant (100)
00246 Rad/Quadrant (pi/2)
00249 Grad/Quadrant (90)
00252 Grad/Rad (200/pi)
00255 Rad/Rad (1)
00258 Grad/Rad (180/pi)
Tabellenseite 186
00300 Auflisten
Tabellenseite 239
00243-00249 Dies ermöglicht dem Benutzer, den Schreibstift durch Drücken von Richtungs/Schritt-Tasten zu positionieren. Der Schritt wird durch Niederhal-
709808/1025
ten der Taste wiederholt. Die Schritte betragen 0,1% der vollen Skala für 25 Schritte (wiederholt), und dann erhöht auf 1,0%-Zuwächse. Nach Ausgang werden die Benutzerkoordinaten ins X- und Y-Register zurückgegeben
Ausgang
Rechts
Links
Herunter
Herauf
Tastencode bewahren
Ausgangsbefehl?
Nein
Schreibstift anheben
Marken zurückstellen
Alles initialisieren
Neue Taste?
Ja
Tastenfeldauswahl
Tastenfeldabtastungen lesen
Auswahlcode zurückstellen
Tastencode festlegen
Taste gelassen
Zeitzählung laden
Zeit nicht herauf
Schnelle Wiederholungszeit setzen
Gleicher Schritt
1,0%-
Delta addieren
Einstellen
Schrit,tbewegung machen
Tabellenseite
00294 00295 00296 00298 00299
Anderer Schritt Tastenpuffer löschen Auf Taste warten Befehl bewahren Ausgang?
709808/1025
00300 00301 00302 00303 00305 00307 00309 00311 00314 00315 00317 00319 00322 00325 00327 00330 00334 00335 00337 00339 00340 00341 00343
Ja
Stopptaste? Ja
Herauf? Herunter? Nach links? Nach rechts? Initialisieren X-Y-Hinweismarke = Y Stapel anheben Stapelautomatik setzen Verschiebung laden Minusposition Skala laden
(Position - Verschiebung)/Skala Unwesentliche Ziffern auf Null RS-Marke wiederherstellen Tastencode Tastenausgang Keine Programmausfuhrung Zurück zum Tastenfeldbetrieb Tastenpuffer löschen Kanal zurückstellen
Tabellenseite
00348 00351 00353 00355 00358 00360 00361 00364 00366
Aufstellen
Schrittpuffer löschen Zeitschleife setzen Schrittzähler Schritt * 0,1% XY-Marke = Y Tastenpuffer auf Null Vertikalbefehl? XY-Marke = Y
709808/1025
00367 Herauf?
00368 Nein
00370 Nach links?
00371 Nein
00373 Negativschritt
00375 Hinweismarke auf zeigen
00376 Setzen
00377 In XR laden
00380 Bereich
00382 Negative Zahl?
00383 Nein
00387 Nein
00389 Exponent auf 3 setzen
003 91 Auf maximum setzen
00392 Hinweismarke
003 93 CORD, bewahren
709808/1025
- 34$ -
Betrieb des Rechners
Allgemeine Beschreibung
Alle vom Rechner ausgeführten Operationen können gesteuert oder in Gang gesetzt werden von der Tastenfeld-Eingabeeinheit aus und/oder durch Tastencodes, die in den Rechner von der Tastenfeld-Eingabeeinheit, der Magnetbandkassetten-Einheit oder peripheren Eingabe/Ausgabe-Einheiten (I/O-Einheiten) aus eingegeben werden und in modifizierter Form als Programmschritte im Programmspeicherabschnitt des Lese/Schreib-Speichers gespeichert werden. Die Beschreibung des Rechnerbetriebs wird daher im folgendem unter spezieller Bezugnahme auf die perspektivische Ansicht des Rechners (Figur 1) und die Draufsicht auf das Tastenfeld (Figur 2) gegeben, es sei denn, es ist etwas anderes angegeben .
Der Rechner benutzt umgekehrte polnische Notation (RPN) die die Benutzung eines Arbeitsstapels mit vier Registern einschließt, welche hier als X-, Y-, Z- und T-Register bezeichnet werden. Einfache arithmetische Operationen werden durch Eingabe von Daten in das X- und das Y-Register und Betätigung einer der arithmetischen Operator-Tasten ausgeführt. Das berechnete Ergebnis wird ins X-Register gegeben.
Die 16-Zeichen-Anzeige 14 zeigt jede vom Tastenfeld IO aus eingegebene Zahl und jedes berechnete Ergebnis an. Der thermische 16-Spalten-Drucker 16 kann so aufgerufen werden, daß er die gerade angezeigten Daten druckt. Darüberhinaus sind die Anzeige 14 und der Drucker 16 werfevolle Programmierungshilfen.
99 Der dynamische Bereich des Rechners geht von -9,999999999 χ 10
99
bis 9,999999999 χ 10 . Wenn ein berechnetes Ergebnis außerhalb dieses Bereichs liegt, wird die Nachricht ÜBERLAUF gedruckt. Alle Rechnungen erfolgen auf zwölf Stellen, jedoch hängt die Genauigkeit der ausgeführten Funktiomyab» Gewöhnliche arith-
70 9808/1025
metische Funktionen sind auf eine Zählung in der zwölften Zif-•fer genau.
Zusätzlich zu den vier Arbeitsregistern X, Y, Z, und T, die den Ärbeitsstapel bilden, enthält der Rechner in der Grundausführung 10 ständig vorhandene Datenspeicherregxster und einen Programmspeicher für 472 Schritte. Der Programmspeicher kann auf 2008 Programmschritte erweitert werden, indem ein Lese/ Schreib-Speicher eingefügt wird, wie weiter oben beschrieben ist. Zusätzliche Datenspeicherregister' können vom Benutzer benannt werden, falls benötigt.
Der Rechner kann mit einem Programm betrieben werden, welches auf einer externen Magnetbandkassette gespeichert ist, welche in die Magnetbandkassetteneinheit 12 eingesetzt ist. Auf solchen Magnetbandkassetten können entweder bereits vom Hersteller aufgenommene Programme gespeichert sein, oder aber vom Benutzer geschriebene Programme.
Durch Einfügen vom wahlweisen einsteckbaren I/O-ROMS in einen oder beide der dafür auf der Rückseite des Rechners vorgesehenen Schlitze,, kann der Rechner mit einer oder mehreren peripheren I/O-Einheiten verbunden werden. Diese können z.B. ein X-Y-Schreiber, ein Lochstreifenleser, ein Streifenlocher, ein Digitizer oder ein Sfcitendrucker sein. Zusätzlich kann der Rechner mit den meisten BCD-kompatiblen Geräten mittels einer universellen Interface-Sammelschiene verbunden werden.
Tastenfeld
Figur 2 zeigt die Aufteilung des Tastenfeldes des Rechners und enthält die jeder Taste zugeordnete mnemonische Bezeichnung. Viele Tasten haben sowohl eine Erstfunktion, die durch die Bezeichnung auf der Taste selbst erläutert ist, sowie eine zweite Funktion, die durch die Bezeichnung oberhalb der Taste erläutert ist, mit Ausnahme einer Taste ENTER (Eingabe) einer Taste DECIMAL POINT (Dezimalpunkt) und einer Gruppe von Tasten A bis 0, die in der linken oberen Ecke des Tastenfeldes ange-
7-09808/1025
ordnet sind und deren verschiedene Funktionen durch Bezeichnungen unterhalb der Taste erläutert sind. Mit der Ausnahme der Tasten A bis 0 können diese verschiedenen Funktionen dadurch eingegeben werden, daß vor der Betätigung der gewünschten Taste eine Leertaste gedrückt wird, die im rechten oberen Teil des Tastenfeldes angeordnet ist (im folgenden als Taste BLANK bezeichnet). Die alternativen Funktionen, die unterhalb der Tasten A bis 0 aufgeführt sind, stellen alle Programmierfunktionen dar, die durch einfache Betätigung ihrer zugeordneten Tasten eingegeben werden, wenn sich der Rechner im Programmbetrieb befindet. In Verbindung mit dieser Gruppe von Funktionen ist keine vorherige Betätigung der BLANK-Taste nötig.
Einige von diesen und anderen Tasten auf dem Tastenfeld sind Zeichen zugeordnet, die sich unterhalb der Taste befinden. Diese Zeichen können gedruckt werden und werden automatisch in den Rechner eingegeben, indem ihre zugeordneten Tasten gedrückt werden, wenn sich der Rechner im ALPHA-Betrieb befindet, wie weiter unten im Detail beschrieben ist.
Die beiden Schalter auf dem Tastenfeld werden benutzt, um die verschiedenen Druck- und Rechen-Betriebsarten zu wählen. Der Drucker wird auf die Stellung ALL gesetzt, wenn er automatisch jede Tastenfeldoperation drucken soll. Um Papier zu sparen, kann der Druckerschalter in die Stellung OFF gestellt werden. Der Druckerschalter kann in die Stellung NORMAL gestellt werden, in der ein Druck während der Programmeingabe stattfindet, jedoch nicht während der Ausführung von Funktionen. Die NORMAL-Stellung ist nützlich zur Vermeidung einer manuellen Druckerabschaltung, wenn oft unerwünschtes Drucken während der Ausführung von Funktionen vermieden werden soll. Der Rechner druckt verschiedene Nachrichten ohne Rücksicht auf die Stellung des Druckerschalters, z.B. Nachrichten über den Zustand von peripheren I/O-Einheiten und Fehlermeldungen, die unrichtige Operationen anzeigen. Eine Liste von ausdruckbaren Fehlermeldungen befindet Bich weiter unten. Der Betriebsartenschalter wird in die . Stellung RUN gebracht, wenn Funktionen vom Tastenfeld aus ausge-
709808/1025
führt werden oder wenn ein Programm ablaufen soll, das im Lese/ Schreib-Speicher enthalten ist.
Die 16-Zeichen-Anzeige zeigt während längerer Tastenfeld- oder Programmausführungen an, daß der Rechner in Betrieb ist, indem sie auf jedem Zeichenplatz in der Anzeige einen Bindestrich wiedergibt. Eine angezeigte Zahl kann zu jeder Zeit gedruckt werden, indem einfach die PRINT-Taste gedrückt wird.
Die Tasten für Zahleneingabe auf dem Tastenfeld sind wie auf einer Addiermaschine angeordnet. Zahlen werden Ziffer für Ziffer in den Rechner von links nach rechts eingegeben und können einen Dezimalpunkt enthalten. Vor der Eingabe einer zweiten Zahl in den Rechner wird die erste durch Betätigung der ENTER-Taste fixiert. Die Eingabe einer negativen Zahl in den Rechner wird nach der eingegebenen Zahl die Vorzeichenwechseltaste (+2f-) gedrückt. Große Zahlen können in wissenschaftlicher (Gleitkomma-) Notierung eingegeben werden, indem die EEX-Taste zwischen Eingabe von Mantisse und Exponent betätigt wird.
Das X-Register kann immer während einer Zahleneingabe gelöscht werden, indem die Taste CLX gedrückt wird. Alle vier Register des Arbeitsstapels können durch Betätigung der Taste CLEAR gelöscht werden. Die Taste RESET (Rückstellung) kann benutzt werden, um eine Tastenfolge zu löschen, welche noch nicht vollständig war.
ein Rechnungen, bei denen zwei Zahlen und/arithmetischer Operator beteiligt sind, werden ausgeführt durch Eintasten der ersten Zahl, Fixierung dieser Zahl im Y-Register durch Betätigung der ENTER-Taste, Eintasten der zweiten Zahl und schließlich Betätigung der Taste für den ausgewählten arithmetischen Operator, Im X-Register wird dann das Ergebnis angezeigt.
Rechnungen, bei denen mehr als eine arithmetische Operation beteiligt ist, werden durchgeführt durch Eintasten der ersten Zahl, Fixierung dieser Zahl und Eintasten der folgenden Zahlen,
709808/1025
- 35Ö -
wobei auf jede Zahl der passende arithmetische Operator folgt. Nur die erste Zahl muß durch Betätigung der ENTER-Taste fixiert werden. Jede folgende Zahl, welche nach Betätigung einer Taste für einen arithmetischen Operator eingegeben wird, wird automatisch fixiert.
Die letzte in den Rechner vor Betätigung einer Operator-Taste eingegebene Zahl wird automatisch an einem Platz gespeichert, welcher mit LAST X (letztes X) bezeichnet ist. Diese Zahl kann ins X-Register zurückgerufen werden und nach Betätigung der Operator-Taste benutzt werden durch Betätigung der BLANK-Taste, gefolgt von der Taste LAST X. Solch ein Rückruf bewirkt auch ein automatisches ENTER, genauso wie das Eintasten einer Zahl nach Betätigung einer arithmetischen Operatortaste. Der LAST X-Platz wird nicht durch Betätigung der Tasten CLEAR oder CLX gelöscht.
Einfache arithmetische Operationen ähnlich den oben angeführten erfordern lediglich die Benutzung der Register X und Y des Arbeitsstapeis. Kompliziertere Funktionen benötigen gegebenenfalls auch die Register Z und T. Die vier Register des Arbeitsstapels kann man sich als vertikal übereinander angeordnet denken, und zwar in der Reihenfolge X, Y, Z und T von unten nach oben. Vom Tastenfeld aus eingegebenerZahlen gelangen automatisch in das X-Register. Eine darauffolgende Betätigung der ENTER-Taste dupliziert diese Zahl ins Y-Register, während die zuvor im Y-Register gespeicherte Zahl inssT-Register geschoben wird. Die zuvor im T-Register gespeicherte Zahl geht verloren. Die Betätigung der ENTER-Taste bewegt also den Inhalt der Stapelregister nach oben. In ähnlicher Weise wird bei Betätigung einer arithmetischen Operatortaste das Rechenergebnis ins Y-Register gegeben, und die vorherigen Inhalte der Register Z und T werden nach unten in die Register Y bzw. Z geschoben.
Der Inhalt der Stapelregister läßt sich durch einige Steuertasten auf dem Tastenfeld manipulieren. Die Taste X£?Y tauscht den Inhalt der Register Y und X gegeneinander aus, ohne daß die Register Z und T in Mitleidenschaft gezogen werden. Die
709808/1025
Taste R^ rollt den Inhalt jedes Stapelregisters nach unten ins nächste Register, wobei der Inhalt des X-Registers ins T-Register gegeben wird. Eine ähnliche Operation wird in Aufwärtsrichtung mittels der Taste R^ ausgeführt. Die Betätigung der BLANK-Taste gefolgt von der Betätigung der Taste STACK bewirkt das Drucken des Inhalts jedes Stapelregisters in der Reihenfolge T bis X.
Gedruckte und angezeigte Zahlen erscheinen normalerweise im Festkommaformat mit zwei Ziffern rechts vom Dezimalpunkt. Zur Auswahl eines anderen Festkommaformats, wird die BLANK-Taste betätigt, gefolgt von der Betätigung der Taste iFIX und einer der numerischen Tasten 0 bis 9. Die numerische Taste gibt dann die Anzahl der Ziffern rechts vom Dezimalpunkt an. Wenn ein berechnetes Ergebnis oder eine vom Tastenfeld aus eingegebene Zahl zu groß für das jeweilige Festkommaformat ist, wird vom Rechner automatisch ein Gleitkommaformat gewählt. Der Benutzer kann entweder ein Standard-Gleitkommaformat oder ein spezielles Gleitkommaformat für angezeigte und gedruckte Zahlen wählen. Das Standard-Gleitkommaformat wird durch aufeinanderfolgender Betätigung der Tasten BLANK und SCI, gefolgt von einer numerischen Taste gewählt. Wie im Falle des Festkommaformats gibt'.-.die numerische Taste die Zahl der Ziffern rechts vom Dezimalpunkt an. Das spezielle Gleitkommaformat wird gewählt,durch aufeinanderfolgender Betätigung der Tasten BLANK und SCI3, gefolgt von einer numerischen Taste. Wenn dieses Format gewählt wird, erscheinen die gedruckten und angezeigten Zahlen mit Exponenten, die immer gerade Vielfache von drei sind.
Zehn feste Datenspeicherregister werden automatisch für den Benutzer bereitgestellt, für die Speicherung von Zahlen, die z.B. Zwischenergebnisse von Rechnungen darstellen können. Jedes dieser Register kann eine Zahl speichern und ist für Speicherung und Rückruf zugänglich durch Betätigung der Tasten STO und RCL gefolgt von einer der Tasten A bis J, welche die einzelnen Register bezeichnen. Zusätzliche DatenspeicherEegister
709808/1025
können vom Benutzer nach Bedarf benannt werden.
Alle Datenspeicherregister werden automatisch gelöscht, wenn der Rechner eingeschaltet wird. Zum Löschen der festen Datenspeicherregister A bis J ohne Beeinträchtigung der übrigen Register wird die Taste STO und dann die Taste CLEAR betätigt. Zusätzliche, vom Benutzer benannte Datenspeicherregister werden dadurch gelöscht, daß in ihnen die Zahl Null gespeichert wird, oder indem eine Löschroutine benutzt wird, die weiter unten beschrieben ist.
Arithmetische Operationen können mit dem Inhalt des X-Registers und eines Datenspeicherregisters direkt ausgeführt werden, ohne daß erst die gespeicherte Zahl zurückgerufen wird. Das Ergebnis wird in das Datenspeicherregister eingegeben, ohne daß der Inhalt des X-Registers beeinträchtigt wird. Diese Operationen werden durch Betätigung der Taste STO, gefolgt von der gewünschten arithmetischen Operatortaste und gefolgt von der Taste oder den Tasten zur Bezeichnung des gewünschten Datenspeicherregisters ausgeführt.
Indirekte Speicher- und Rückrufoperationen können durch Spezifizierung einer Registerbezeichnung ausgeführt werden, die die Bezeichnung des Registers enthält, in welcher die gewünschten Daten gespeichert sind. Diese Operationen werden genauso ausgeführt wie direkte Speicher- und Rückrufoperationen, mit der Ausnahme, daß die RCL-Taste vor der Taste betätigt wird, die das Zwischenregister bezeichnet. Nur der absolute Ganzzahlwert des Inhalts des Zwischenregisters wird als indirekte Registernummer benutzt. Vorzeichen und Bruchteile werden ignoriert.
Die oben beschriebenen Registerarithmetik- und indirekten Speicheroperationen können zur Durchführung indirekter Registerarithmetik kombiniert werden. Die allgemeine Tastenfolge ist STO, gefolgt von der gewünschten arithmetischen Operatortaste, gewünscht von RCLy gefolgt von der Bezeichnungstaste
709808/1025
- 3S3 -
für das Speicherregister. In jedem Fall wird die gewählte arithmetische Operation mit dem Inhalt des X-Registers und dem Inhalt des durch den Inhalt des Registers bezeichneten Registers ausgeführt, welches in der Tastenfolge bezeichnet ist. Als Ergebnis wird in das in der Tastenfolge bezeichnete Register gegeben, und das X-Register bleibt unverändert.
Zusätzliche Datenspeicherregister können vom Benutzer bei Bedarf benannt werden. Diese Datenspeicherregister werden aus dem Teil des Lese/Schreib-Speichers für den Benutzer gebildet, welcher noch nicht mit Programmanweisungen gefüllt ist. Die zusätzlichen Datenspeicherregister werden durch Betätigung der numerischen Tasten benannt, welche die gewünschte Zahl von zusätzlichen Datenspeicherregxstern darstellen, gefolgt von der BLANK-Taste, gefolgt von der STO-Taste. Wenn der ungefüllte Teil des Benutzer-Lese/Schreib-Speichers nicht groß genug für die Annahme einer bestimmten Datenspeicherbenennung ist, wird eine Fehlermeldung SPEICHERÜBERLAUF gedruckt und die versuchte Benennung wird ignoriert. Zusätzliche Speicherregister bleiben benannt bis die Benennung entweder geändert wird oder der Rechner abgeschaltet wird. Der Inhalt von zuvor benannten Datenspeicherregistern wird durch eine darauffolgende Benennung nicht verändert, sofern die vorherige Benennung innerhalb der folgenden Benennung liegt. Wenn nicht genug Programmspeicherraum für die Annahme einer spezifizierten Registerbenennung verfügbar ist, wird eine Fehlermeldung SPEICHERÜBERLAUF gedruckt, und die Benennung wird ignoriert. Der Benutzer kann bis zu 250 zusätzliche Datenspeicherregister benennen, wenn der Rechner mit dem wahlweisen Lese/Schreib-Speicher 103 ausgerüstet ist, der in Figur 3 dargestellt ist. Dieser Register sind mit 000 bis 249 bezeichnet. Der Teil des Benutzer- Lese/Schreib-Speichers, welcher nicht als Datenspeicherregister benannt ist, ist für die Speicherung von Programmschritten verfügbar. Diese Anordnung führt zu einer wirksameren Nutzung des Lese/Schreib-Speichers, als sie in solchen Rechnern möglich ist, die voneinander getrennte feste Bereiche für die Programm- und Datenspeicherung besitzen. Die obengenannte Tastenfolge für die Benennung zusätzlicher Datenspeicherregister kann entweder manuell oder unter Programmsteuerung erfolgen, so daß dem Benutzer genügend Flexibilität für die neue Konfiguration des Benutzer-
70980 8/1025
Lese/Schreib-Speichers zur Verfügung steht, um den Rechner jeder Zeit an seine spezifischen Bedürfnisse anzupassen. Dadurch wird das bei bekannten Rechner aft auftretende Problem vermieden, daß zuviel Programmspeicherraum und zuwenig Datenspeicherraum zur Verfügung steht bzw. umgekehrt. Zusätzlich zu dieser Flexibilität bei der Speicherdefinition ist beim erfindungsgemäßen Rechner ein vollständiger Schutz jedes Speicherbereichs vorhanden. Das bedeutet, daß der Rechner den Benutzer daran hindert, Daten in ein Speicherregister einzugeben, welches nicht vorher als Datenspeicherregister benannt war, und den Benutzer in ähnlicher Weise an der Eingabe von Programmschritten in benannte Datenspeicherregister hindert. Wenn der Benutzer versucht, Daten in ein Datenspeicherregister zu geben, welches nicht vorher benannt worden war, wird eine Fehlermeldung UNERLAUBTE ADRESSE gedruckt.
Ein Block von benannten Datenspeicherregistern kann dadurch gelöscht werden, daß erst der Block herausgenommen wird und er dann neu benannt wird. Wenn z.B. die Datenspeicherregister 000 bis 042 benannt worden sind und gewünscht ist, die Register 010 bis 024 zu löschen, läßt sich dies dadurch erreichen, daß zunächst die Register 000 bis 009 benannt werden und daß dann die Register 000 bis 024 benannt werden. Das Ergebnis ist, daß die benannten Datenspeicherregister OCtO bfts 024 gelöscht werden, während die Register 000 bis 009 unverändert bleiben.
Zusätzlich zu den zuvor diskutierten vier einfachen arithmetischen Funktionen gibt es 24 wissenschaftliche Funktionen, die durch Tasten auf dem Tastenfeld dargestellt werden. Diese Tasten sind in einem Block gruppiert und befinden sich in der Nähe der rechten Seite des Tastenfeldes unmittelbar links von den Schaltern für Drucker und Steuerung. Jeder dieser Tasten für wissenschaftliche Funktionen ist eine Brst- eine Alternativ- und eine inverseteunktion zugeordnet. Eine Erstfunktion wird einfach durch Betätigung der gewünschten Taste angegeben. Die Alternativfunktion, die oberhalb der Taste angegeben ist, wird, wie oben beschrieben, durch vorherige Betätigung der BLANK-Taste gewählt. Die ipverse Funktion wird durch vorherige Betätigung
709808/1025
der Taste f eingegeben.
Winke^Detreffende Funktionen, z.B. trigonometrische Funktionen und Winkelumwandlungen können mit Grad (dezimal), rad oder Neugrad ausgeführt werden. Der Rechner wird automatisch auf die Eingabe von Winkelwerten in Grad eingestellt, wenn eingeschaltet wird. Der Benutzer kann eine der drei Winkeleinheiten durch aufeinanderfolgende Betätigung der BLANK-Taste und einer der numerischen Tasten 1, 2 und 3 spezifizieren, wobei 1 für Grad, 2 für rad und 3 für Neugrad gilt.
Eine Umwandlung von dezimalen Winkeleinheiten in Grad, Minuten und Sekunden ist möglich, indem die BLÄNK-Taste und dann die Taste-^DMS gedrückt werden. Eine Umwandlung von Grad, Minuten und Sekunden in die äquivalente dezimale Form der jeweils gewählten Winkeleinheiten ist möglich durch aufeinanderfolgende Betätigung der Tasten BLANK und D.MS-*. Bei Ausführung der Umwandlung von dezimalen Grad, rad oder Neugrad in Grad, Minuten und Sekunden enthält das ins X-Register zurückgegebene Ergebnis den dezimalen Teil der Sekunden.
Drucker st euerung
Eine ALPHA-Betriebsart kann durch ^weilmalige Betätigung der Taste CALL ALPHA (Alpha rufen) gewählt werden. Diese Taste wird auch mit einmaliger Betätigung benützt, um Zugriff zur Steuerung von peripheren I/O-Einheiten zu nehmen, die mit dem Rechner verbunden sind. Nach zweimaliger Betätigung dieser Taste erscheint die Nachricht ALPHA auf der Anzeige, um anzuzeigen, daß der ALPHA-Betrieb gewählt wurde. Der Benutzer kann dann selektiv die verschiedenen alphanumerischen Tasten auf dem Tastenfeld betätigen, um eine gewünschte Nachricht zu bilden. Nach Eintasten der letzten alphanumerischen Taste der Nachricht kann der ALPHA-Betrieb beendet werden und die Nachricht kann gedruckt werden, indem die Taste CALL ALPHA noch einmal gedrückt wird. Für den Fall, daß die gewünschte Nachricht eine Länge von 16
709808/10-25
Zeichen oder mehr hat, erfolgt das Drucken automatisch nach jedem 16. eingetasteten Zeichen.
Eine Reihe von Tasten auf dem Tastenfeld übernimmt Steuerfunktionen in der ALPHA-Betriebsart. Z.B. wird die ENTER-Taste zu einer Taste NEW LINE (neue Zeile). Die Betätigung dieser Taste bewirkt, daß der Rechner alle eingetasteten alphanumerischen Zeichen druckt und dann das Papier des Druckers für eine neue Zeile vorschiebt. Aufeinanderfolgende Betätigungen der Taste NEW LINE bewirken, daß das Papier um jeweils eine Zeile vorgeschoben wird. Die Taste X»?Y wird zu einer Steuertaste SPACE (Abstand) während des Alphabetriebs und wird benutzt, um Abstände in eine Nachricht aus alphanumerischen Zeichen einzufügen. Die Betätigung der Taste PRINT (Druck) an einer ausgewählten Position innerhalb der alphanumerischen Nachricht bewirkt, daß der Rechner die gerade im X-Register gespeicherte Zahl an dieser Position innerhalb der alphanumerischen Nachricht druckt. Die Zahl erscheint rechtsbündig auf der Zeile, es sei denn, daß ihr alphanumerische Zeichen folgen. Sie wird auch in den jeweils gewählten speziellen Fest- oder Gleitkommaformat gedruckt. Dieses Merkmal ist nützlich für den Druck von Etiketten (Labels) und berechneten Ergebnissen in derselben Zeile. Die gedruckte Zahl erscheint immer auf derselben Zeile wie die alphanumerische Nachricht, vorausgesetzt, daß genügend Raum für sie innerhalb des 16-Spalten-Druckfeläes vorhanden ist. Wenn der verfügbare Raum zu klein ist, wird die gesamte Zahl in der nächstfolgenden Druckzelle gedruckt. Für den Fall, daß der Benutzer beim Eintasten einer alphanumerischen Nachricht einen Fehler macht, kann die ALPHA-Betriebsart ohne Drucken der Nachricht gelöscht werden, indem der Steuerschalter in der rechten unteren Ecke des Tastenfeldes in die Stellung PRGM und dann zurück in die Stellung RUN gebracht wird. Diese Schalterbetätigung hat keine Wirkung auf die in den vier Registern des Arbeitsstapels oder im Rechner gespeicherten Zahlen.
709808/1025
- 3S7 -
Programmierung
Zusätzlich, zur manuellen Ausführung von vom Tastenfeld aus eingegebenen Befehlen kann der Rechner auch automatisch mittels eines Programms betrieben werden, welches im Benutzer-Lese/Schreib-Speicher enthalten ist. Das Programm wird in Form einer modifizierten Version der Tastencodes gespeichert, welche jeder der Tasten zugeordnet sind. Anders als bei einigen Rechnern, bei denen nur ein Teil der Tasten programmierbar ist, erlaubt der erfindungsgemäße Rechner dem Benutzer den Einschluß jeder Tastenfolge in ein Programm, welche auch beim manuellen Betrieb des Rechners möglich ist. Zusätzlich enthält das Tastenfeld einen Block von Tasten, die Programmsteuerfunktionen darstellen. Dies sind z.B. Tasten für Abzweigungen und Etikettierung von Subroutinen, Qualifizierertasten und Schleifentasten zur automatischen Wiederholung von Programmsegmenten. Diese Programmsteuertasten befinden sich im linken Drittel des Tastenfeldes. Sie enthalten auch die Alternativfunktionen, die unterhalb der Tasten A bis 0 bezeichnet sind. Die Grundausführung des Lese/Schreib-Speichers hat eine Kapazität für die Speicherung von 472 Programmschritten an Plätzen 0000 bis 0471. Durch Hinzufügung eines wahlweisen Lese/Schreib-Speichers kann die Programmspeicherkapazität auf 2008 Programmschritte erhöht werden. Jeder Schritt enthält eine Programmanweisung, die entweder durch eine einzelne Tastenbetätigung vorgegeben ist, z.B. durch die Tasten + oder PRINT, oder durch eine Tastenfolge, z.B. Taste STO gefolgt von A, oder Taste BLANK gefolgt von SIN. Passende Tastenfolgen werden automatisch kombiniert, wenn ein Programm eingegeben wird. Im Benutzer-Lese/Schreib-Speicher wird dann ein einzelner Instruktionscode gespeichert, der die Gesamtfolge darstellt. Diese Instruktionscode wird intern mittels einer Reihe von Firmware-Syntaxtabellen gebildet. Diese Tabellen definieren eine Anzahl von Tastenfolgen, die zu jeder gegebenen Zeit gültig sind, zusammen mit den ihnen entsprechenden Instruktionscodes. Diese Anordnung unterscheidet sich von der bei bekannten Rechnern, bei
709808/1025
denen jede Tastenbetätigung einen gesonderten Platz im Speicher beansprucht. Die Anordnung im erfindungsgemäßen Rechner hat den Vorteil, daß ein größeres Programm bei gleichen Speicherbedarf gespeichert werden kann. Sie ist auch deshalb vorteilhaft, weil die Programmausführung effizienter ist, da dann weniger Syntaxprüfung erforderlich ist. Dies ergibt sich aus der Tatsache, daß eine teilweise Syntaxprüfung effektiv bereits bei der Programmeingabe ausgeführt worden ist, wenn erkannt wird, daß bestimmte Tastenfolgen zu einem einzelnen internen Instruktionscode führen.
Der Programmspeicherbereich des Benutzer-Lese/Schreibspeichers des Rechners kann vor Eingabe jedes neuen Programms gelöscht werden, ohne daß der Inhalt der Datenspeicherregister oder der Register des Arbeitsstapel verändert wird. Dies geschieht dadurch, daß der Steuerschalter in die Stellung PRGM gebracht wird und dann aufeinanderfolgend die Tasten K und N betätigt werden. Zum Löschen des gesamten Lese/Schreib-Speichers kann der Rechner abgeschaltet werden.
Der Rechner enthält einen internen Programmzähler, mit welchem bestimmbar ist, welcher Programmschritt angezeigt, gedruckt oder ausgeführt wird. Viele Programmtasten und Instruktionen steuern den Betrieb des Programmzählers, wobei dem Benutzer ermöglicht wird, Programm einzugeben, zu überarbeiten, ablaufen zu lassen und aufzunehmen. Der Programmzähler kann auf jeden beliebigen Schritt gestellt werden, wenn sich der Rechner im PRGM-Betrieb befindet, indem die Taste GOTO gefolgt von den Programmschritt im Speicher darstellenden numerischen Tasten betätigt wird. Wie bei der Spezifizierung benannter Datenregister brauchen nur die wesentlichen, den Speicherplatz darstellenden Ziffern eingetastet werden, wenn diesen Betätigungen sofort die Betätigung einer nichtnumerischen Taste oder der Dezimalpunkttaste folgt. Soll z.B. der Programmzähler auf Platz 0025 gesetzt werden, wird der Rechner in den RÜN-Betrieb geschaltet
7 0 9808/1025
und die Tastenfolgen GOTO 25. oder GOTO 0025 werden eingegeben. Der Rechner wird dann auf PRGM-Betrieb geschaltet, und der laufende Speicherplatz 0025 zusammen mit der Zahl der Speicherplätze zwischen ihm und dem Ende des Programmspeicherbereichs werden angezeigt. Der Programmzähler kann während der Eingabe eines Programms manuell inkrementiert oder dekrementiert werden, indem die Tasten STEP (Vorwärtsschritt) oder BKSTEP (Rückwärtsschritt) gedrückt werden. Der Programmzähler wird bei Eingabe jedes Programmschritts automatisch inkrementiert. Er wird automatisch auf den Programmschrittplatz 0000 gesetzt, wenn die Taste END betätigt wird, während sich der Rechner im RUN-Betrieb befindet, immer wenn der Rechner eingeschaltet wird und immer wenn der Programmspeicherteil des Benützer-Lese/Schreib-Speichers gelöscht wird.
Ein Programm wird eingegeben, indem der Programmzähler auf den gewünschten Anfangsschritt-Platz gesetzt wird und indem dann der Rechner auf PRGM-Betrieb geschaltet wird und das Programm eingegeben wird. Bei jeder Programmschritteingabe listet der Drucker die Programmschrittinstruktionen auf und druckt den nächsten Programmschritt-Platz. Die letzte Schrittinstruktion jedes Programms muß END sein.
Der Drucker listet automatisch jeden Programmschritt-Platz und jede Programmschritt-Instruktion während der Programmeingabe auf, wenn der Druckerschalter in der Stellung NORM steht. Wenn sich der Rechner im PRGM-Betrieb befindet, listet der Drucker auch jeden Programmschritt-Platz auf, wenn der Programmzähler manuell 'inkrementiert oder dekrementiert wird. Jeder Teil eines gespeicherten Programms kann aufgelistet werden, indem der Programmzähler auf den gewünschten Anfangsschrittplatz gesetzt wird und die Taste LIST betätigt wird. Das Auflisten kann durch Betätigung der Taste RUN STOP beendet werden. Das Auflisten hört automatisch auf, wenn die Instruktion END auftritt.
709808/1025
Nachdem ein Programm eingegeben wurde, kann es dadurch ausgeführt werden, daß der Rechner in den RUN-Betrieb geschaltet wird, der Programmzähler auf den Anfang des Programms gestellt wird und die Taste RUN STOP betätigt wird. Die Programmausführung läuft solange, bis entweder eine STOP- oder END-Instruktion angetroffen wird. Der Benutzer kann die Programmausführung jederzeit anhalten, indem er die Taste RUN STOP drückt.
Als Programmierungshiife zur Benennung eines Platzes in einem Programm können Etiketten (Labels) benutzt werden. Die Etikettinstruktion befindet sich unmittelbar vor dem Programmbereichj, auf -weichen sie sich bezieht. Der Programmzähler kann dann durch eine passende Abzweiginstruktion, z.B. GOTO, auf den Stikettenplatz gesetzt werden. Die Etikettierung stellt •sin Tsrfahren sum Adressieren von Prograramsegmenten unabhängig Ton -lan Speicherplätzen im Speicher dar. Eine bei der Eingabe und der Korrektur von Programmen oft benutzte zeitsparende Technik besteht darin, Etiketten wenn immer möglich für Abzweigung zu verwenden. Wenn das Programmschritte eingefügt oder herausgenommen werden, brauchen die Äbzweiginstruktionen nicht verändert zu werden. Sobald das Programm befriedigend arbeitet, können die ursprünglich in Verbindung mit den Abzweiginstruktionen verwendeten Etiketten durch absolute Programmschritt-Plätze im Speicher ersetzt werden.
Sin Etikett kann durch aufeinanderfolgender Betätigung der Taste LABEL und einer oder mehrerer alphanumerischer Tasten zur Bestimmung des Etiketts eingegeben werden. Wenn z.B. gewünscht ist, ein Etikett 01 am Speicherplatz 0050 zu bilden, wird der Programmzähler zunächst auf diesen Speicherplatz gesetzt und dann wird die Tastenfolge LABEL 01 eingegeben. Ein etikettiertes Programmsegment kann unter" Programmsteuerung oder manuell vom Tastenfeld aus ausgeführt werden. Zur Ausführung eines Sät .06 etikettierten Programmsegmentes vom Tastenfeld aus, ist es lediglich erforderlich, die Tastenfolge GOTO LABEL 6 RUN einzugeben.
709808/1025
Die Ausführung einer Abzweiginstruktion stellt den Programmzähler auf einen vorgegebenen Speicherplatz. Die Programmausführung wird dann automatisch von diesem Speicherplatz aus
fortgesetzt. Es sind sowohl absolute als auch berechnete Abzweiginstruktionen für den Benutzer verfügbar. Eine absolute Abzweiginstruktion bewirkt, daß der Programmzähler auf einen •festen Platz gesetzt wird, der als Etikett spezifiziert werden kann. Die aufeinanderfolgende Betätigung der Taste GOTO
und numerischer Tasten für den Speicherplatz oder die aufeinanderfolgende Betätigung der Taste GOTO, der Taste LABEL und alphanumerischer Tasten für das Etikett sind Beispiele für
absolute Verzweigungsinstruktionen.
Eine berechnete Verzweigungsinstruktion hat das Ergebnis,
daß der Programmzähler auf einen Speicherplatz gesetzt wird, der durch den jeweiligen Inhalt des X-Registers bezeichnet
wird. Abhängig von der Verzweigungsinstruktion zeigt der absolute Ganzzahlteil des Inhalts des X-Registers entweder einen Programmschritt-Platz oder ein numerisches Etikett an. Die
allgemeine Folge für die Eingabe von berechneten Verzweigungsinstruktionen ist GOTO X oder GOTO LABEL X. Diese Anordnung
für berechnete Verzweigungsanweisungen stellt einen Fortschritt gegenüber dem Stand der Technik dar, wo der Benutzer einen begrenzten Satz von Stimmungsadressen für jede berechnete Verzweigungsinstruktion vordefinieren mußte und dann die eine Adresse des Satzes berechnen mußte, welche zu einem gegebenen Zeitpunkt benutzt werden sollte. Beim erfindungsgemäßen Rechner gibt der Benutzer lediglich den BeStimmungsplatz ins X-Register vor der Ausführung der Verzweigungsinstruktion. Zusätzlich hat der Benutzer mehr Flexibilität, da die Verzweigung entweder zu einem berechneten festen Speicherplatz oder zu einem berechneten Etikett führen kann.
IF-Instruktionen bewirken, daß der Rechner logische Vergleiche zwischen den Inhalten d es X- und des Y-Registers oder dem
jeweiligen Zustand einiger Programm-Marken macht, wie weiter
709808/1025
unten beschrieben ist. Wenn der Vergleich "wahr" ist, wird die nächste Prograinmschritt-Instruktion ausgeführt. Wenn jedoch der Vergleich "falsch" ist, wird die nächste Programmsehritt-Instruktion übersprungen. Die auf eine IF-Instruktion nächstfolgende Programmschritt-Instruktion ist üblicherweise aber nicht notwendig eine Verzweigungs-Instruktion. Acht IF-Instruktionen und die ihnen zugeordneten Tastenfolgen sind im folgenden in Tabelle 3 dargestellt.
X-i-Y? IF X ^ Y
X = Y? IF X=Y
X > Y ? IPX2Y
X^O? IF-
X > 0 ? IF +
X = O? IF 0
IST MARKE N GESETZT? IF SFG N
IST MARKE N GELÖSCHT? IF CFG N
Eine Subroutine ist eine Folge von Programminstruktionen, die wiederholt benutzt werden kann, sogar in verschiedenen Programmen, jedoch nur einmal in den Speicher' eingegeben werden muß. Ein Programm kann jederzeit zu einer Subroutine abzweigen oder eine solche aufrufen, indem die Instruktion GOSUB benutzt wird. Nachdem dann die Subroutine ausgeführt worden ist, bewirkt eine Rückkehrinstruktion (RETURN) am Ende der Subroutine, daß die Programmausführung an dem Schritt fortgesetzt wird, der der Instruktion GOSUB folgt. Die Instruktion GOSUB ruft eine Subroutine auf, indem sie entweder einen Programmschritt-Platz oder ein Etikett spezifiziert. Es kann auch eine berechnete Verzweigungsform sein ähnlich der berechneten GOTO-Instruktion. Bis zu sieben Subroutinen können ineinander geschachtelt werden. Die Rückführungen erfolgen nach dem Prinzip "zuletzt hinein, zuerst hinaus", so daß die Rückkehrreihenfolge der Aufrufreihenfolge immer entgegengesetzt ist.
FOR-NEXT-Instruktionen erlauben die Wiederholgung jeder Instruktionsfolge . Die FOR Und NEXT-Instruktionen bilden eine
709808/1025
Schleife, in der die zwischen ihnen angeordnete Instruktionsfolge wiederholt wird. Jeder FOR-NEXT-Instruktion ist ein Paar von Datenspeicherregistern zugeordnet. Datenregisterpaare A und F, B und G, sowie C und H sind für diesen Zweck verfügbar. Das erste Register jedes Paars wird in der FOR-Instruktion spezifiziert und ist der Schleifenzähler. Das zweite Register jedes Paars hält den Endwert fest. Wenn die Registerpaare A und F bzwο B und G benutzt werden, wird der Schleifenzähler bei jeder Schleifenausführung um Eins erhöht. Wenn jedoch das Registerpaar C und H benutzt wird, ifird der Schleifenzähler so inkrementiert, wie durch den Inhalt des Registers D spezifiziert ist. FOR-NEXT-Instruktionen können ineinandergeschachtelt werden, jedoch nur bis maximal drei, da nur drei Registerpaare verfügbar sind.
Marken können als programmierbare Indikatoren eingesetzt werden, um dem Rechner die Möglichkeit su geben, Entscheidungen zu treffen oder um den Benutzer über bestimmte Programmbedingungen in Kenntnis zu setzen. Jede dieser Marken ist entweder gesetzt oder gelöscht, und dieses Setzen oder Löschen kann manuell vom Tastenfeld aus oder unter Programmsteuerung erfolgen. Zusätzlich werden alle Marken durch Betätigung der END-Taste, durch Ausführung einer END-Instruktion innerhalb eines Programms oder durch Einschalten des Rechners gelöscht. Acht Marken sind im Rechner verfügbar. Marken 1 bis 4 stehen für allgemeine Anwendungen im Programm zur Verfügung, während die Marken 5 bis 8 bestimmte Funktionen haben. Im allgemeinen Gebrauch wird eine Marke durch eine bestimmte Programmfolge oder ein Ereignis gesetzt. Später im Programm kann dann der Zustand der Marke geprüft werden, um eine spätere Aktivität zu bestimmen. Die Marken 1 bis 4 können gesetzt werden- durch Betätigung der Taste SFGCFG, gefolgt von einer numerischen Taste zur Bestimmung der Marke. Diese Marken können gelöscht werden durch zweimalige Betätigung der Taste SFGCFG gefolgt von der entsprechenden numerischen Taste. Die Marken 5 und 6 werden zum Abfangen bestimmter Fehlermeldungen benutzt. Wenn die Marke 6 gesetzt ist, wird die unterdrückbare Fehlermeldung
709808/1025
z.B. ÜBERLAUF nicht gedruckt. Stattdessen wird automatisch die Marke 5 gesetzt, wenn ein unterdrückbarer Fehler auftritt. Die Marke 7 wird automatisch gesetzt, wenn eine STOP-Instruktion ausgeführt wird. Wenn Daten eingegeben werden, bevor eine Programmausführung fortgesetzt wird, wird die Marke 7 gelöscht. Wenn jedoch keine Daten eingegeben werden, bevor die Programmausführung fortgesetzt wird, bleibt Marke 7 gesetzt. Die Marke 8 kann von dem Satz ausgeschaltet werden,um durch aufeinanderfolgende Betätigung der Taste SFGCFG während der Programmausführung Zustände zu löschen.
Verschiedene Tasten auf dem Tastenfeld dienen der Ausführung von Überarbeitungsfunktionen an einem gespeicherten Programm. Wenn ein Programm nicht wie erwartet läuft, besteht der erste vom Benutzer unternommene Schritt gewöhnlich darin, daS eine Auflistung des Programms geprüft wird. Um sin vollständiges Programm aufzulisten, wird der Prcgrammzähler auf den ersten Platz des Programms gesetzt, und die LIST-Taste wird betätigt. Ein Teil eines Programms kann aufgelistet werden, indem der Programmzähler auf den gewünschten Platz gesetzt wird und dann die LIST-Taste betätigt wird. Die Taste RUN STOP kann betätigt werden, um das Auflisten anzuhalten.
Eine oft benutzte Methode zum Prüfen eines fehlerhaften Programms besteht darin, daß man es Instruktion für Instruktion ausführt. Dies kann dadurch erfolgen, daß, während sich der Rechner im RUN - Betrieb befindet, der Programmzähler auf den ersten Platz des Programms gesetzt wird und dann aufeinanderfolgend die STEP-Taste betätigt wird. Bei jeder Betätigung der STEP-Taste wird die jeweilige Instruktion ausgeführt, der Programmzähler wird zur nächsten auszuführenden Instruktion wextergeschaltet und das jeweilige Ergebnis wird angezeigt.
Um eine Programmschrittinstruktion zu ändern, wird der Programmzähler auf den gewünschten Platz gesetzt, die PRGM-Betriebsart gewählt, die neue Instruktion wird vom Tastenfeld
709808/1025
aus eingegeben, und der Rechner wird zurück auf RÜN-Betrieb geschaltet. Wenn die neue Instruktion zwei Programmschritte benötigt, während die alte Instruktion mit einem auskam, schiebt der Rechner automatisch den Rest des Programms um einen Schritt weiter, so daß die neue Instruktion angepaßt wird. Alle betroffenen Verzweigungsinfetruktionen werden automatisch neu numeriert. Ähnliches geschieht, wenn die neue Instruktion nur einen Schritt benötigt, während die alte Instruktion zwei Schritte benötigt hatte. Der Rechner verschiebt dann ebenfalls den Rest des Programms um einen Schritt und numeriert die betroffenen Verzweigungs-Instruktionen neu.
Programminstruktionen können herausgenommen werden, indem der Programmzähler auf den Platz der nicht gewollten Instruktionen gesetzt wird, der Rechner auf PRGM-Betrieb geschaltet wird, und dann die Taste DELETE (Herausnahme) gedrückt wird. Der Rechner verschiebt automatisch den Rest des Programms, so daß der leere Schritte ausgefüllt wird, und numeriert alle betroffenen Verzweigungs-Instruktionen neu. Ein vollständiger Block von Instruktionen kann herausgenommen werden, indem der Programmzähler auf den ersten nicht gewollten Schritt gesetzt wird, der Rechner auf PRGM-Betrieb geschaltet wird, und dann die DELETE-Taste je einmal für jede Instruktion in der Folge betätigt wird. Jedesmal,wenn eine Instruktion herausgenommen wird, wird die neue Instruktion durch den Rechner verschoben, so daß der Programmschritt-Platz gedruckt wird, es sei denn der Rechner ist abgeschaltet.
Eine oder mehrere Instruktionen können in ein Programm eingefügt werden, indem erst der Programmzähler auf den Platz gesetzt wird, an welchen die erste neue Instruktion kommen soll. Der Rechner wird dann auf PRGM-Betrieb geschaltet, die Taste INSERT (Einfügung) wird betätigt, und die gewünschte neue Instruktion wird eingetastet. Die Einfügungsoperation wird dadurch beendet, daß der Rechner auf RUN-Betrieb geschaltet wird oder daß eine der Überarbeitungstasten gedrückt wird mit Ausnahme von MEMORY (Speicher) oder DELETE. Der
709808/1025
Rechner numeriert automatisch alle Verzweigungs-Instruktionen neu, die von der Einfügungsoperation betroffen werden.
Der Programmspeicherteil des Benutzer-Lese/Schreib-Speichers kann dadurch gelöscht werden, daß der Rechner auf PRGM-Betrieb geschaltet wird und die Tasten MEMORY und DELETE aufeinanderfolgend betätigt werden. Diese Operation füllt den Programmbereich mit NOP-Instruktionen, was "keine Operation" bedeutet. Auf dem Tastenfeld befindet sich eine NOP-Taste, mit welcher der Benutzer NOP-Instruktionen in sein Programm eingeben kann. Diese Anordnung ist zum Beispiel wünschenswert in Fällen, in denen der Benutzer einen Platz für ..möglicherweise spätere Eingabe einer ausführbaren Instruktion reservieren will.
Instruktionen, die eine zu druckende alphanumerische Nachricht bilden, können ebenfalls überarbeitet werden, indem die gerade beschriebenen verschiedenen Tasten benützt werden. Der einzige Unterschied besteht darin, daß der Rechner zuerst auf ALPHA-Betrieb geschaltet werden muß, wie oben im Abschnitt "Druckersteuerung" beschrieben ist. Eine Ausnahme besteht darin, daß der Rechner sich nicht im ALPHA-Betrieb befinden muß, wenn der Benutzer versucht, alphanumerische Instruktionen herauszunehmen. Anderenfalls wird bei Betätigung der DELETE-Taste der Buchstabe O eingegeben.
Bandbetrieb
Die in den Rechner eingebauten Magnetbandkassetten-Einhfeit 12 erlaubt dem Benutzer eine dauerhafte Aufnahme seiner Programme und Datenblöcke auf eine externe Magnetbandkassette. Jedes solche Programm bzw. jeder solche Datenblock kann anschließend sooft wie gewünscht zurück in den Rechnerspeicher eingelesen werden. Für die Steuerung des Betriebs der Magnetbandkassetten-Einheit 12 sind im linken Teil des Tastenfeldes 10 fünf Tasten vorgesehen, die alle programmierbar sind. Ihre Erstfunktionen sind LOAD (Laden), REWIND (Zurückspulen), RECORD (Aufnehmen),
709808/1025
LIST (Auflisten) und L. Jede externe Bandkassette hat eine Kapazität von ungefähr 96 OOO Programmschritten oder die Kapazität von ungefähr 12 000 Datenspeicherregistern. Ein Aufnahmesperrschieber auf jeder Bandkassette kann so gestellt werden, .daß er ein ungewolltes Löschen der auf der Kassette gespeicherten Information verhindert, indem er die Ausführung einer Aufnahmeinstruktion (RECORD) verhindert.
Die Magnetbandkassetten-Einheit 12 führt eine routinemäßige Prüfung aus, um sicherzustellen,, daß alle Information die von einer externen Magnetbandkassette in den Rechner geladen wird, genau der ursprünglich aufgenommenen Information entspricht. Wenn während einer Datenladungs- oder Programmladungs-Operation ein Fehler festgestellt wird wird eine erneute Ladung versucht. Wenn.die Information nach drei solchen automatischen Versuchen nicht erfolgreich in den Rechner geladen werden kann, wird die Ladeoperation angehalten und eine Fehlermeldung SUMMENPRÜFUNGSFEHLER wird ausgedruckt. Typische Ursachen für. einen solchen Fehler sind abgenutzte oder teilweise gelöschte Bänder oder ein verschmutzter Magnetkopf .
Bevor Programme oder Daten auf eine leere Bandkassette geladen werden können, müssen eine oder mehrere Bandmarkierungs-Instruktionen (MARK TAPE) ausgeführt werden. Jede Bandmarkierungs-Instruktion führt zur Aufnahme eines Blocks von leeren Dateien auf einer Spur des Bandes. Auf jeder Bandkassette sind zwei Spuren verfügbar, von denen jede unabhängig von der anderen für die Informationsspeicherung und -wiedergewinnung verwendet werden kann. Die erste Spur kann durch Spezifizierung einer positiven Dateinummer in jeder Bandinstruktion benutzt werden. Die zweite Spur kann in ähnlicherweise benutzt werden,indem eine negative Dateinummer spezifiziert wird. Dem Anfang jeder Datei ist ein .leerer Bereich zugeordnet, der als Trennung zwischen den Dateien dient. Einen Datei-Identifizierer enthält die sich auf eine bestimmte Datei beziehende Information, wie Dateinummer,
709808/1025
Dateityp, absolute Dateigröße, tatsächliche Dateigröße usw. Ein Teil jeder Banddatei, "Dateikörper" genannt, wird für die tatsächliche Programm- und Datenspeicherung benutzt. Die in der Bandmarkierungs-Instruktion spezifizierte absolute Dateigröße bestimmt die Größe dieses Dateikörpers.
Jede Bandmarkierungs-Instruktion, die durch aufeinanderfolgende Betätigung der Tasten BLANK und MARK (Markieren) eingegeben wird, initialisiert eine Spur auf der Bandkassette, indem ein Block von Leerdateien zusammen mit den passenden Datei-Identifizierungen gespeichert wird. Der Ganzzahlteil von in den Registern Z, Y bzw. X gespeicherten Zahlen spezifiziert die Größe jeder Datei, die Anzahl der Datein im Block und den Zahlenbenenner für die erste Datei. Die Größe jeder Datei ist in Programmschritten ausgedrückt. Um die Dateigröße in Programmschrittsn su bestimmen, die für die Aufnahme einer gewünschten Anzahl von Datenspeicherregistern benötigt wird, wird die Anzahl der Datenspeicherregister lediglich mit 8 multipliziert.
Nachdem die spezifizierte Anzahl von Dateien markiert worden ist, wird automatisch eine Zusatzdatei markiert und das Band wird auf den Anfangder Zusatzdatei gestellt. Die Zusatzdatei wird markiert, um die Markierung zusätzlicher Dateien zu einem späteren Zeitpunkt zu erleichtern, und hat daher keinen Dateikörper. Programme oder Daten können nun in jeder markierten Datei gespeichert werden oder es können weitere Dateien markiert werden, beginnend mit der Zusatzdatei. Dateien werden in numerischer Reihenfolge markiert und benannt, beginnend mit Datei 0 auf der ersten Spur und Datei -0 auf der zweiten Spur.
Die Bandmarkierungs-Instruktion hat für neue und bereits benutzte Bandkassetten das gleiche Format. Wenn jedoch Dateien auf einem gebrauchten Band markiert werden, ist es wichtig, alle alten Datein zu überspielen oder zu löschen. Dadurch werden unerwartete Ergebnisse vermieden. Alte Dateien können
TO 9808/1025
dadurch gelöscht werden, daß einfach neue Dateien in genügender Menge oder genügender Größe markiert werden/ die über die alten Dateien hinausreichen. Sie können auch gelöscht werden durch Spezifizierung einer negativen Anzahl von Dateien in irgendeiner Bandmarkierungs-Instruktion. Wenn z.B. -1 im Y-Rdgister während einer Zeit gespeichert ist,· während der eine Bandmarkierungsinstruktion ausgeführt wird, wird eine einzelne Datei markiert, und der Rest der spezifizierten Spur wird automatisch gelöscht.
Eine Identifizierungs-Instruktion (IDENTIFY), die durch aufeinanderfolgender Betätigung der BLANK-Taste und einer IDENT-Taste eingegeben wird, überträgt die Datei-Identifizierungsinformation, die einer benannten Datei zugeordnet ist, in die Register des Arbeitsstapels. Die Nummer der gewünschten Datei wird im X-Register vor Ausführung der Instruktion gespeichert. Nach Ausführung der Instruktion wird im T-Register eine dem Dateityp entsprechende Zahl gespeichert, im Z-Register die Anzahl der in Benutzung befindlichen Schritte gespeichert, im Y-Register die ursprünglich markierte Dateigröße gespeichert. Selbstverständlich verbleibt die Dateinummer im X-Register gespeichert. Die verschiedenen Dateitypen und ihre zugeordneten Zahlbenennungen sind in Tabelle 4 dargestellt.
0 PROGRAMMDATEI
1 GESICHERTES PROGRAMM
2 DATENDATEI
3 BEREITS VOM HERSTELLER AUFGENOMMENES PROGRAMM
4 GESICHERTES, BEREITS VOM HERSTELLER AUF- ■ GENOMMENES PROGRAMM
5 LEERE DATEI
6 ZUSATZDATEI
Als zusätzliche Hilfe für den Benutzer wird der Inhalt der vier Register des Arbeitsstapeis zusammen mit den Etiketten DATEI, TYP, BENUTZT und MAX automatisch gedruckt, wenn eine Identifizierungs-Instruktion vom Tastenfeld aus ausgeführt wird.
709808/1025
Die Ausführung einer Aufnahme-Instruktion die durch Betätigung der RECORD-Taste eingegeben wird, nimmt den Inhalt des Programmspeicherteils des Benutzer-Lese/Schreib-Speichers von einem jeweiligen Platz bis zur END-Instruktion auf eine benannte Banddatei auf. Wenn keine END-Instruktion angetroffen wird, wird der Rest des Programmspeicherteils des Benutzer-Lese/Schreib-Speichers aufgenommen. Vor Ausführung der Instruktion sollte der gewünschte Anfangsplatz im Y-Register gespeichert werden, und die Nummer der gewünschten Datei sollte im X-Register gespeichert werden. Wenn die benannte Datei zu klein ist oder das Band geschützt ist, wird die RECORD-Instruktion gelöscht und eine Fehlermeldung ausgedruckt.
Die Ausführung einer Lade-Instruktion, die durch Betätigung der LOAD-Taste eingegeben wird, lädt Programme oder Daten von einer gewünschten Banddatei in den Benutzer-Lese/Schreib-Speicher. Der Dateityp legt fest, ob Programme oder Daten geladen werden. Vor Ausführung einer LOAD-Instruktion sollte der gewünschte Anfangsschritt-Platz im Speicher im Y-Register gespeichert werden, und die Nummer der gewünschten Datei sollte im X-Register gespeichert werden. Wenn die Datei vom falschen Typ ist oder wenn nicht genügend Raum im Lese/Schreib-Speicher verfügbar ist, wird die LOAD-Instruktion gelöscht und eine Fehlermeldung ausgedruckt.
Eine Instruktion "Laden und gehen", die durch Betätigung der Taste LD&DO eingegeben wird, stellt eine programmierbare Methode für automatisches Laden und Ausführen eines spezifizierten Programms bereit. Vor Ausführung der Instruktion sollte der Anfangssehritt-Platz im Speicher im Y-Register gespeichert werden und die Nummer der gewünschten Datei sollte im X-Register gespeichert werden. Ein extrem langes Programm kann in Segmente aufgeteilt werden, von denen jedes in eine separate Datei geladen wird. Eine Instruktion "laden und gehen" kann zum Ende jedes Programmsegmentes hinzugefügt werden,, um automatisch in Aufeinanderfolge die Programmsegemente
709808/102S
.aufzurufen und auszuführen.
Die Ausführung einer Datenaufnahme-Instruktion (RECORD DATA), die durch aufeinanderfolgende Betätigung der Tasten BLANK und RECORD eingegeben wird, nimmt den Inhalt eines Blocks von numerierten Datenspeicherregistern in einer spezifizierten Datei auf. Vor Ausführung der Instruktion sollte die Anzahl der aufzunehmenden Datenspeicherregister im Z-Register gespeichert werden, die erste Registernummer sollte im Y-Register •gespeichert v/erden und die Dateinummer sollte im X-Register gespeichert werden. Wenn die spezifizierten Register nicht vorher benannt worden sind, wenn die Datei su; klein ist oder vom falschen Typ ist, oder wenn das Band geschützt ist, wird die Datenaufnahme-Instruktion gelöscht und eine Fehlermeldung wird ausgedruckt.
Wie oben dargestellt wurde, wird die LOAD-Instruktion sowohl für das Laden von Daten als auch von Programmen in den Rechner benutzt. Der Dateityp legt fest, ob Programme oder Daten geladen werden» Vor dem Laden von Daten sollte die Registernummer für die Anfangsdaten im Y-Register gespeichert werden und die Dateinummer sollte im X-Registsr gespeichert werden. Die Daten werden Register für Register, beginnend mit dem Startregister, geladen. Wenn die Datei vom falschen Typ ist oder eine unzureichende Anzahl von Datenspeicherregistern benannt worden ist, wird die Instruktion gelöscht, und eine Fehlermeldung wird gedruckt.
Die Ausführung einer Verifizierungs-Instruktion, die durch aufeinanderfolgende Betätigung der BLANK-Taste und einEr VARIFY-Taste eingegeben wird, vergleicht die auf einer Banddatei aufgenommene Information mit dem Programm oder den Daten, die gerade im Rechnerspeicher enthalten sind. Zur Verifizierung einer Programmdatei sollte der Anfangsschritt-Platz im Y-Register und die Dateinummer im X-Register ge-
709808/1025
speichert werden. Zum Verifizieren einer Datendatei sollten die Anzahl der Datenspeicherregister im Y-Register und die Dateinummer im X-Register gespeichert werden. Die Verifizierungsinstruktion wird am leichtesten direkt hinter einer Lade- oder Aufnahmeoperation ausgeführt, da die richtigen Zahlen schon
im Y- und im X-Register gespeichert sind. Wenn die Information in der Datei nicht identisch mit der im Benutzer-Lese/Schreib-Speicher gespeicherten ist, wird eine der Fehlermeldungen
KEINE VERIFIZIERUNG oder SUMMENPRÜFUNGSFEHLER gedruckt. Keine dieser beiden Fehler bewirkt ein Stoppen der Programmausführung, wenn Marke 6 gesetzt ist. In diesem Fall wird von jedem der Fehler automatisch die Progamm-Marke 5 gesetzt. Eine
Aufnahme-Sicherungsinstruktion, die durch aufeinanderfolgende Betätigung der Tasten CALL und RECORD eingegeben wird, stellt eine Methode für eine vertrauliche Programmaufnahme auf das
Band dar. Bei Ausführung dieser Instruktion wird ein Programm auf eine spezifizierte Datei aufgenommen, ähnlich wie bei der Programmaufnahme-Instruktion, mit der Ausnahme, daß der Dateityp als Typ 1 bezeichnet wird. Vor Ausführung der Instruktion sollte im Y-Register der Anfangsschritt-Speicherplatz gespeichert sein, und die Nummer der gewünschten Datei sollte
im X-Register gespeichert sein. Die Ausführung der Aufnahme-Sicherungsinstruktion beeinträchtigt nicht den Inhalt des
Speichers. Ein gesichertes Progamm kann zurück in den Rechner geladen werden wie jedes andere Programm und dann in normaler Weise ausgeführt werden. Sobald jedoch ein gesichertes Programm in den Rechner geladen worden ist,führt jeder Versuch
eine Auflistung, Aufnahme oder Überarbeitung des Programms
zum Druck der Fehlermeldung GESICHERTES PROGRAMM. Wenn ein
gesichertes Programm in den Rechnerspeicher geladen worden
ist, werden all übrigen im Speicher befindliche Programme
automatisch gesichert. Datenspeicherregister werden jedoch
nicht betroffen. Der gesicherte Speicher kann gelöscht werden, was auch durch Abschalten des Rechners geschieht.
Zum automatischen Laden eines in der Banddatei 0 gespeicherten Programms in den Rechnerspeicher und zur Initiierung der
709808/1025
Ausführung dieses Programms kann der Rechner im automatischen Startbetrieb (AUTOSTART) auf das Einschalten des Rechners hin betrieben werden. Der automatische Startbetrieb wird dadurch gewählt, daß der Betriebsartenschalter des Rechners (rechts unten auf dem Tastenfeld) in die Position AUTOSTART gebracht wird. Dieser Schalter wird von der Rechner-Firmware abgefragt. Wenn festgestellt wird, daß sich der Schalter in der AUTOSTART-Position befindet, wird das Band nach der Datei 0 abgesucht, und der Dateityp wird abgefragt. Wenn die Datei 0 vom Typ 0 oder 1 ist, wird sie automatisch in den Rechnerspeicher geladen und die Ausführung wird bei Platz 0000 initiiert. Wenn irgendwelche Fehler während der Ladung dieser Datei auftreten, wird der AUTOSTART-Betrieb gelöscht, eine Fehlermeldung wird gedruckt, und der Rechner wird in den RUN-Betrieb zurückgeschaltet. Der AUTOSTART-Betrieb ist vorteilhaft, da er eine automatische Speicherdefinition ohne Eingriff seitens eines möglicherweise ungeübten Benutzers ermöglicht. Zusätzlich wird dadurch die automatische Wiederaufnahme der Ausführung eines Programms ermöglicht, nachdem die Netzspannung, z.B. nach einem Netzausfall, wiederkommt.
Die Gruppe der Tasten A bis 0 enthält eine Gruppe von Spezialfunktionstasten, die vom Benutzer so programmiert werden können, daß sie vom Benutzer definierte Funktionen aufrufen und ausführen. Jede derart definierte Funktion ist im Effekt eine Subroutine, die mit einem Etikett beginnt und mit einer RETURN-Instruktion endet. Für diese Gruppe von Tasten sind Leerauflagen vorgesehen, auf die der Benutzer Beschriftungen für die definierten Funktionen bringen kann. Jede definierte Funktion.· kann vom Tastenfeld aus ausgeführt werden, indem lediglich die gewünschte Taste betätigt wird, oder sie kann während der Programmausführung unter Benutzung einer GOSUB-Instruktion aufgerufen werden.
Jede Spezialfunktionstaste wird dadurch programmiert, daß die Instruktionen in den Rechnerspeicher eingegeben werden, die die definierte Funktion enthalten. Jede definierte Funktion
709808/1025
enthält ein Etikett und eine RETURN-Instruktion, wie im Fall der oben beschriebenen Subroutinen. Jede definierte Funktion kann im Benutzer-Lese/Schreib-Speicher beginnend an einem ausgewählten platz gespeichert werden. Bis zu sieben spezielle Funktionen können ineinander geschachtelt werden. Bevor ineinandergeschachtelte Funktionen aufgerufen werden, sollte die END-Taste betätigt werden, um den Verschachtelungszähler zurückzustellen.
Falschen Dateineingabe, falsche Tasten- oder Programm-Instruktionssyntax und falsche Rechnungen werden dem Benutzer durch gedruckte Fehlermeldungen angezeigt. Anders als bei bekannten Rechnern, die numerische Fehlermeldungen verwenden und somit die Benutzung einer erläuternden Tabelle erfordern, sind die vom erfindungsgemäßen Rechner gedruckten Fehlermeldungen in sich selbst verständlich,als Aussage über den angezeigten Fehler.ASCII-Zeichen, die jeder möglichen Fehlermeldung entsprechen, werden im Rechnerspeicher gespeichert. Nach Feststellung eines Fehlers und Auswahl einer entsprechenden Fehlernummer durch die ROM-Ausführungsroutinen überträgt ein Fehlerausgaberoutine die ASCII-Zeichen zum Drucker, welche die der ausgewählten Fehlernummer zugeordnete Fehlermeldung bilden. Eine Liste der möglichen Fehlermeldungen, die sich aus verschiedenen unrichtigen Rechneroperationen ergeben, zusammen mit den zugeordneten Fehlerquellen befindet sich im folgenden in Tabelle 5. Ein Stern auf der linken Seite einer Fehlermeldung zeigt an, daß sie mittels der oben beschriebenen Marken unterdrückbar ist.
F ehlermeldungen
^ÜBERLAUF - Zahl oder Ergebnis überschreitet Rechenbereich ^QUADRATWURZEL AUS NEGATIVER ZAHL
*DIVISION DURCH NULL
"LOGARITHMUS AUS ZAHL^=O
*KEINE I/0-VORRICHTUNG - keine periphere I/O-Einheit angeschlossen
7 0 9808/1025
UNERLAUBTE ADRESSE - Unrichtiger Prograitimschritt-Platz oder
falsches Speicherregister spezifiziert
UNERLAUBTES ARGUMENT - Mathematisch inkorrektes Funktionsargument spezifiziert
SPEICHERÜBERLAUF - Programminstruktion, Daten-Speicherregister-Benennung oder vom Band geladenes Programm bzw. Daten überschreiten den verfügbaren Speicherraum
ETIKETT NICHT GEFUNDEN
GOSUB-ÜBERLAUF - Mehr als sieben Subroutinen oder
Spezialfunktionen ineinandergeschachtelt
FEHLENDES GOSUB
TASTE NICHT DEFINIERT - Gerade aufgerufen Spezialfunktion
ist nicht definiert
UNRICHTIGE SYNTAX
FEHLENDE FOR-ANWEISUNG
^SUMMENPRÜFUNGSFEHLER - Unkenntliche Information vom Band gelesen
DATEI ZU KLEIN
*KEINE VERIFIZIERUNG - Programm oder Daten auf Banddatei nicht
identisch mit Speicherinhalt
^FALSCHER DATEITYP
DATEI NICHT GEFUNDEN
ENDE DES BANDES - Bandende oder Bandriß während Ausführung
einer Dateimarkierungs-Instruktion erfaßt
KASSETTE DRAUßEN - Magnetbandkassefeteneinheit enthält keine
Bandkassette
GESCHÜTZTES BAND - Der Aufnahmeschieber der Bandkassette ist
•so eingestellt, daß er Markierungs- und Aufnahmeoperationen verhindert
GESICHERTER SPEICHER - Es ist ein Versuch gemacht worden, ein gesichertes Programm aufzulisten, zu überarbeiten oder aufzunehmen
PAPIER ZU ENDE - Papierversorung für Drucker zu Ende
Tabelle 5
709808/102 5
Einsteck-I/O-ROM für Kurvenschreiber
Mittels eines Kurvenschreiber-I/O-ROMs, welches in eine von zwei peripheren I/O-Einstecköffnungen 18 auf der Rückseite des Rechners eingesteckt werden kann, kann mit dem Rechner ein X-Y-Schreiber verbunden werden. Die Kombination des Rechners mit einem X-Y-Schreiber schaft ein System, welches graphische Lösungen für komplizierte Probleme finden kann. Öie Funktionen des Schreibers werden vom vom Rechner mittels Instruktionen gesteuert, die vom Tastenfeld aus oder unter Programmsteuerung ausgeführt werden können. Der Schreiber kann in üblicher Weise benutzt werden, um Kurven zu schreiben, die mathematische Funktionen darstellen, um Istogramme oder Karten zu schreiben oder um alphanumerische oder Spezialzeichen zu zeichnen. Zusätzlich kann die Kombination Schreiber/ Rechner als Digitalisierer benutzt werden, um früher in Sechner/Schreiber-Systemen nicht verfügbare Funktionen auszuführen. Im Digitalisierbetrxeb kann das Rechner/Schreiber-System benutzt werden, um Kurven und Figuren in numerischer Koordinatenwerte umzuwandeln.
Im Digitalisierbetrxeb kann der Benutzer den Schreibstift des Schreibers über verschiedene Punkte der Schreibfläche schieben, und zwar mit Hilfe von Tastenfeldinstruktionen. Sobald der Schreibstift sich genau über einem gewünschten Punkt befindet, überträgt der Schreiber die Koordinaten dieses Punktes zum Rechner. Diese Information kann dann vom Rechner benutzt werden, um Kurvenlänge, eingeschlossene Fläche oder andere Parameter zu berechnen, die untersetzte Punktdaten benötigen.
Der Zeichenbereich, der durch BegrenzungsSteuerungen auf dem Schreiber und eine SCALE-Instruktion (Skala) wird in jeder Koordinatenrichtung in tausend Skaleneinheiten geteilt. Z.B. hat eine Zeichenfläche von 10 χ 10 cm eine Digitalisierungsauflösung von 0,1 mm. Die sich aus der Digitalisierung eines Punktes ergebenden Koordinatenwerte werden in den Registern
709808/1025
des Arbeitsstapels gespeichert und beziehen sich auf den mit der SCALE-Instruktion gewählten Koordinatenursprung.
Die SCALE-Instruktion baut für einen gegebenen Zeichenbereich die Vollskalawerte in Benutzereinheiten auf. X . , X , Y .
min max mm
und Υ entsprechen genau den zugeordneten horizontalen und vertikalen Grenzen des Zeichenbereichs, der mittels Einstellung der Grenzsteuerungen auf den Rechner definiert ist. Diese Instruktion bestimmt auch einen Punkt innerhalb oder außerhalb des Zeichenbereichs, wo sich der Koordinatenursprung befindet.
Zur Vorbereitung der Ausführung einer SCALE-Instruktion sollten die Werte von X . , X , Y . und Y in den Registern
mxn max rain max 3
T, Z, Y bzw. X gespeichert werden. Die SCALE-Instruktion kann dann ausgeführt werden durch aufeinanderfolgende Betätigung der Tasten CALL, 1 und F. Die vom Benutzer ausgewählten Skalenwerte bleiben wirksam, bis eineneue SCALE-Instruktion ausgeführt wird oder der Rechner abgeschaltet wird. Es ist wichtig, daß sichergestellt ist, daß die Werte Xminf x max' Y min und Y in die richtigen Stapelregister eingegeben worden sind.
Ilia. X
Wenn dies nicht zutrifft, wird die Fehlermeldung UNERLAUBTES ARGUMENT gedruckt. Wenn der Rechner eingeschaltet wird, wird eine automatische Wertzuordnung gemacht, so daß X . = Y . =
mm mm
0 und X = Y = 9999 ist. Diese automatischen Grenzwerte
max max
können natürlich durch nachfolgende Ausführung einer SCALE-Instruktion verändert werden.
Der Digitalisierungsbetrieb kann gewählt werden durch Ausführung einer der vier Schreibstift-Richtungs-Tastenfolgen CALL
1 E, CALL 1 J, CALL 1 N und CALL 1 0. Sobald der Digitalisierungsbetrieb gewählt worden ist, ist es lediglich erforderlich, eine der Richtungstasten E, J, N oder 0 zu betätigen, um den Schreibstift nach oben, nach unten, nach links bzw. nach rechts zu bewegen. Jedesmal wenn einer dieser Richtungstasten betätigt wird, bewegt sich der Schreibstift um einen Inkrementabstand, der gleich einer Benutzereinheit in der spezifizierten Richtung ist. Wird die Richtungstaste nicht losgelassen, be-
0 9808/1025
wegt sich der Schreibstift Inkrement für Inkrement mit wachsender Geschwindigkeit weiter, wodurch der Schreibstift bequemer, und schneller an den gewünschten Punkt gebracht werden kann.
Der Digitalisierungsbetrieb läßt sich aufheben, indem entweder die Taste M oder die Taste RUN STOP betätigt wird. Zu diesem Zeitpunkt werden die Koordinatenwerte der jeweiligen Schreibstiftposition in das X- und das Y-Register eingegeben. Falls der Digitalisierungsbetrieb unter Programmsteuerung gewählt worden war, wird durch Betätigung der Taste M das Programm wieder gestartet. Die Betätigung der Taste RUN STOP hält die Ausführung des Programms auf.
Eine EXIT-Instruktion (Ausgang), die durch aufeinanderfolgender Betätigung der Tasten CALL,1 und M eingegeben wird, gibt die Koordinatenwerte der jeweiligen Schreibstiftposition in die Register X und Y. Diese Instruktion ist unabhängig vom Digitalisierungsbetrieb, ist aber nützlich, wenn die laufenden X- und Y-Koord±naten der Schreibstiftposition als Bezug benötigt werden.
Der Digitalisierungsbetrieb ergibt sich im einzelnen aus den entsprechenden Teilen der Firmware-Listen. Die Hauptroutine hat fünf Eingangspunkte, die durch Tasten E, J, M, N und 0 aufgerufen werden können. Diese Eingangspunkte bilden den äquivalenten Tastencode für spätere Bezugnahme und dienen zur Initialisierung verschiedener Hinweismarken. Im Fall, daß die Routine durch die M-Taste (EXIT-Instruktion) eingegeben worden ist, rechnet die Routine sofort die X- und Y-Koordinaten der jeweiligen Schreibstift-Position aus Information in den Schreiberregistern aus und gibt die Steuerung an den Rechner zurück, ohne daß der Zustand einer Marke RSFLG geändert wird. Falls der Eingang über eine der Tasten E, J, N oder 0 erfolgte, wird der Schreibstift angehoben, und der Arbeitsstapel wird hochgeschoben, so daß im X-Register intern Rechnungen ausgeführt werden können. Eine Routine SET UP wird aufgerufen, um das Schrittinkrement des
709808/1025
Schreibstiftes auf zehn absolute Sehreibereinheiten, die Anfangswartezeit auf ungefähr 0,5 Sekunden, die Richtung des Schritts entsprechend Bestimmung durch den Tastencode und verschiedene Marken intern zur Routine zu bringen. Die SET UP-Routine prüft dann jedes Loslassen der Eingabetaste oder eine neue Tastenbetätigung. Wenn die Taste solange niedergedrückt bleibt, bis die 0,5 Sekunden Wartezeit überbrückt sind, wird ein Schrittinkrement zur jeweiligen Schreibetiftposition addiert, die Wartezeit wird auf ungefähr 1 Sekunde erhöht und eine Zählung der Schrittzahl in der gewählten Richtung wird gestartet. Nach 25 Schritten in derselben Richtung wird das Schrittinkrement auf 100 Einheiten oder 1% des Zeichenbereichs erhöht, der Schreibstift wird in die neue Position bewegt,und die Schleife wird solange fortgesetzt, wie die Taste niedergedrückt bleibt. Wenn ein gegebener Schritt zu einer Bewegung des Schreibstiftes aus dem Zeichenbereich heraus führt, wird eine passende Grenzkoordinate substituiert. Wenn die Taste losgelassen wird, wird der Eingangspuffer gelöscht, und die Routine wartet auf eine weitere Richtungstastenbetätigung. Wenn die nächste betätigte Taste die RUN STOP-Taste ist, wird die jeweiligen Schreibstiftkoordinaten berechnet und in den Registern X und Y gespeichert.
Einsteck-ROM für allgemeine Eingabe/Ausgabe
Ein allgemeines I/O-ROM kann in einen der Einstecköffnungen 18 auf der Rückseite des Rechners eingesteckt werden und bildet ein acht-Bit-paralleles,8esfechenserielles Interface für den Anschluß einer großen Vielfalt von peripheren 1/0-Einheiten an den Rechner. Dieses ROM überträgt Daten im Halbduplex-Betrieb und stellt einen Pufferspeicher für jedes Zeichen oder Datenbyte bereit. Obwohl der Rechner selbst nur ASCII-codierte Information verarbeitet, kann das allgemeine I/O-ROM Daten in jedem acht-Bit-Binärcode übertragen. Dieser Codes werden dann mittels eines Umwandlungsprogramms in ASCII umgewandelt.
709808/1025
Verschiedene Instruktionen, die entweder vom Tastenfeld aus oder unter Programmsteuerung ausgeführt werden können, sind dem allgemeinen I/O-ROM zugeordnet. Diese Instruktionen enthalten Routinen und Subroutinen, die im allgemeine I/O-ROM selbst gespeichert sind und finden sich detailliert auf den Tabellenseite 187 bis 220. Auch kann Figur 3 zum Verständnis des Zusammenwirkens zwischen den dem allgemeinen I/O-ROM zugeordneten Instruktionen und der restlichen Rechner-Hardware herangezogen werden. Jedem wahlweise auf der Rückseite des Rechners einsteckbaren I/O-ROM ist ein separater numerischer Auswahlcode zugeordnet, der in jeder I/O-Instruktion spezifiziert werden muß, welcher sich auf dieses I/O-ROM bezieht. Der dem allgemeinen I/O-ROM zugeordnete Auswahlcode ist 2.
Eine Dateninstruktion, die in den Rechner durch aufeinanderfolgende Betätigung der Tasten CALL, 2 und 0 eingegeben wird, wird benutzt, um für die I/O-Datenleitungen eine positiv "wahre" oder negativ "wahre" Logik auszuwählen. Diese Auswahl erfolgt durch.passendes Einstellen des Vorzeichens einer im X-Register gespeicherten Zahl vor der Ausführung der Dateninstruktion. Negativ "wahre" Logik wird automatisch gewählt, wenn der Rechner eingeschaltet wird.
Eine Markeninstruktion, die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und N eingegeben wird, wird benutzt, um den Logikpegel und den Rückmeldungsmodus für die Marken-Leitung des Rechners einzustellen. Eine Rückmeldungs-Steuerleitung ECH kann durch Eingabe von 0 ins X-Register und Ausführung der Markeninstruktion gesperrt werden. Ähnlich kann die Leitung ECH freigegeben werden, indem die Zahl 1 ins X-Register gegeben wird und die Markeninstruktion ausgeführt wird. Die Leitung ECH wird automatisch gesperrt, wenn der Rechner eingeschaltet wird. Der Logikpegel der Markenleitung wird durch das Vorzeichen der ins X-Register eingegebenen Zahl vorgegeben, -!bevor die Markeninstruktion ausgeführt wird. Negativ "wahre" Logik wird automatisch gewählt, wenn der Rechner eingeschaltet wird.
709808/1025
Eine Schreibinstruktion, die in den Rechner durch aufeinanderfolgende Betätigung der Tasten CALL, 2 und C eingegeben wird, wird benutzt, um das Vorzeichen, die Ziffern und den Dezimalpunkt der gerade im X-Register gespeicherten Zahl zur peripheren I/O-Einheit zu übertragen. Die Zahl erscheint rechtsbündig in einem Feld, das durch das jeweilige Zahlenformat des Rechners vorgegeben ist. Zeichen für Wagenrücklauf und volle Zeile werden automatisch auf die Zahl folgend übertragen,
Eine Instruktion "X schreiben", die in den Rechner durch aufeinanderfolgende Betätigung der Tasten CALL, 2, und A eingegeben wird, wird die gleiche Funktion wie die WRITE-Instruktion aus, mit der Ausnahme, daß die Übertragung der Zeichen für Wagenrücklauf und volle Zeile unterdrückt wird.
Die Zeichen für Wagenrücklauf und volle Zeile werden zusammen mit einem Abstandszeichen als Abgrenzungen in Verbindung mit Schreibinstruktionen verwendet. Die Abstandszeichen werden benutzt, um das'Oatenfeld zu füllen, während die Zeichen für Wagenrücklauf und volle Zeile zur Begrenzung des Datenfeldes dienen.
Eine Feldinstruktion, die in den Rechner durch aufeinanderfolgende Betätigung der Tasten CALL, 2 und D eingegeben wird, wird benutzt, um die Datenfeldbreite für Schreibund X-Schreibinstruktionen wirksam werden zu lassen. Diese Datenfeldbreite wird automatisch auf 16 Zeichen gestellt, wenn der Rechner eingeschaltet wird. Eine Feldbreite von 1 bis 127 Zeichen kann durch Eingabe der Feldbreite ins X-Register und Ausführung der Feldinstruktion gewählt werden. Wenn die durch eine Schreib- oder X-Schreibinstruktion übertragene Zahl zu groß für das benannte Feld ist, wird ein Feld von #-Zeichen übertragen.
Eine Buchstaben-Schreibinstruktion, (WRITE ALPHA), die in den Rechner durch aufeinanderfolgende Betätigung der Tasten CALL, 2, CALL, GEWÜNSCHTE ZEICHENTASTE, CALL, wird benutzt,
709808/1025
um einen I/O-Alphabetrieb ähnlich dem Alphabetrieb zu wählen, der gewählt werden kann, wenn der Rechner alleine arbeitet. Die ASCII-Äquivalente der Zeichen, die in der Buchstaben-Schreib-Instruktion spezifiziert sind, werden zur peripheren I/O-Einheit übertragen.
Eine Instruktion READ X (X lesen), die in den Rechner durch aufeinanderfolgende Betätigung der Tasten CALL, 2 und B eingegeben wird, wird benutzt, um eine Zahl von der peripheren I/O-Einheit ins X-Register einzugeben. Die Zahl kann in Freifeldformat erscheinen oder mit den Abgrenzungen, die in einer AbgrenzungsInstruktion spezifiziert werden.
Eine Begrenzungsinstruktion, die in den Rechner durch^aufeinanderfolgende Betätigung der Tasten CALL, 2, und E eingegeben wird, erlaubt dem Rechner, drei ASCII-Zeichen als Begrenzer zu spezifizieren, die der Dateneingabe in den Rechner über die X-Lese-Instruktion zugeordnet sind. Die spezifizierten Begrenzer, die mit 1 bis 3 etikettiert sind, müssen in die Register X, Y bzw. Z eingegeben werden. Wenn weniger als drei Begrenzer spezifiziert sind, muß das nicht benutzte Stapelregister mit Nullen gefüllt werden. Der Begrenzer 1 führt als zusätzliche Funktion das Setzen der Programm-Marke 4 durch. Bekannte Rechner hatten sehr begrenzte Dateneingabemöglichkeiten wegen der Einschränkung durch feste Begrenzer. Indem dem Benutzer die Spezifikation von Begrenzern erlaubt wird, wird erheblich mehr Flexibilität und Kontrolle über numerische Dateneingabe erreicht. Da die Erkennung des Begrenzers 1 durch den Rechner die Programm-Marke 4 setzt, kann der Benutzer Datenblocks unbekannter Länge eingeben, indem einfach die Blocks mit dem Begrenzer voneinander getrennt werden. Dies vermeidet z.B. Verzögerungen bei der Rechnung die auftreten, wenn auf Daten gewartet wird, die nicht verfügbar sind.
Eine WBYTE-Instruktion, die in den Rechner durchaaufeinanderfolgender Betätigung der Tasten CALL, 2 und F eingegeben werden, werden benutzt,um das 8-Bit-Binärgquivalent einer im
709808/1025
X-Register gespeicherten Ganzzahl auszugeben. Die Ganzzahl muß TBwischen O und 255 liegen.
Eine RBYTE-Instruktion, die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und F eingegeben wird, wird verwendet, um ein 8-Bit-Binärzeichen von einer periphären I/O-Einheit aus einzugeben und sein Dezimaläquivalent ins X-Register zu getjen.
Eine UND-Instruktion, die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und H eingegeben wird, wird benutzt, um die 8-Bit-Binäräquivalente der in den Registern X und Y enthaltenen Zahlen zu kombinieren, indem eine logische UND-Operation ausgeführt wird. Das Ergebnis wird in dezimaler Form umgewandelt und ins X-Register gegeben.
Eine ODER-Instruktion, die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und I eingegeben wird, wird benutzt, um die 8-Bit-Binäräquivalente der in den Registern X und Y enthaltenen Zahlen zu kombinieren, indem eine logische ODER-Operation durchgeführt wird. Das Ergebnis wird in dezimaler Form umgewandelt und ins X-Register gegeben.
Eine Rotations-Instruktion, die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und J eingegeben wird, wird benutzt, um die Bits des 8-Bit-Binäräquivalenz der im X-Register gespeicherten Zahl um einen Platz nach rechts zu rotieren. Das Ergebnis wird in dezimaler Form ins X-Register gegeben.
Eine Instruktion DUMP PROGRAMM (Programm abladen), die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und M eingegeben wird, gibt im Programmteil des Benutzer-Lese/Schreib-Speichers gespeicherte Instruktionen aus, beginnend mit dem Programmschritt-Platz,der durch die Zahl angezeigt wird, welche im X-Register gespeichert ist und
709808/1025
endend, wenn eine.END-Instruktion angetroffen wird.
Eine Instruktion EROGRAMM LADEN, die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und L eingegeben wird, wird benutzt, um Programm-Instruktionen von einer peripheren I/O-Einheit in den Rechnerspeicher einzugeben, beginnend mit dem Programmschritt-Platz, der durch die im X-Register gespeicherte Zahl angezeigt wird, und solange, bis eine END-Instruktion angetroffen wird. Wenn die Programmladeinstruktion unter Programmsteuerung ausgeführt wird, setzt der Rechner automatisch die Ausführung dieses Programms bei der Instruktion fort, die als nächste der Programmladeinstruktion folgt, nachdem das neue Programm von der I/O-Einheit geladen worden ist.
Eine Listeninstruktion, die in den Rechner durch aufeinanderfolgender Betätigung der Tasten CALL, 2 und K eingegeben wird, wird benutzt, um eine Programmliste auszugeben, beginnend an dem Programmschritt-Platz, der durch die jeweilige Stellung des Programmzählers angezeigt wird, und endend, wenn eine END-Instruktion angetroffen wird. Die Liste wird in vier Spalten zu 50 Schritten für die Benutzung mit einem seitenbreiten Zeilendrucker aufgeteilt. Die Auflistung hält alle 200 Schritte an, um dem Benutzer zu ermöglichen, neues Druckerpapier einzulegen. Das Auflisten kann dann durch Betätigung der Taste K fortgesetzt werden. Die Listeninstruktion kann nur vom Tastenfeld aus ausgeführt werden und ist nicht programmierbar.
Ein REMOTE-Betrieb kann gewählt werden durch Eingabe von -2 in das X-Register gefolgt von einer aufeinanderfolgenden Betätigung der Tasten CALL, 2 und N. Diese Betriebsart ist nützlich, da sie bewirkt, daß der Rechner bei jeder 1/0-Instruktion wartet, bis die periphäre I/O-Einheit die entsprechende Operation beginnt. Normalerweise gibt der Rechner eine I/O-Instruktion aus und wartet dann, bis die periphere I/O-Einheit die Fertigstellung der Operation signalisiert.
709808/1025
Die Fertigstellung der Operation wird dadurch angezeigt, daß die periphäre I/O-Einheit die Marken-Leitung auf einai niedrigen Pegel zieht. Das bedeutet, daß die periphäre I/O-Einheit immer auf Instruktionen vom Rechner wartet. Der REMOTE-Betrieb ist nützlich in einem System, welches einen Rechner für das Sammeln von Daten und einen anderen Rechner für die Ausführungen von Rechnungen mit diesen Daten benutzt. Die Rechner können über allgemeine I/0-ROMs verbunden werden. Der die Daten sammelnde Rechner wird dann jedesmal auf REMOTE-Betrieb geschaltet, wenn er fertig für die Übertragung von Daten zum anderen Rechner ist. Diese "zwei-Prozessor-Anordnung" mit einem Rechner, der die I/O-Operationen zwischen ihnen steuert, bietet ein extrem schnelles und flexibles System für die Sammlung und Reduzierung von Daten.
709808/1025

Claims (7)

Hewlett-Packard Company Int. Az.: Case 993 PATENTANSPRÜCHE
1.) Elektronischer Rechner mit einem Eingabe-Tastenfeld, einem Speicher für Programme und Daten, einem Prozessor und eine Ausgabe-Einheit, dadurch gekenn?zeichnet , daß der Speicher eine bewegliche Grenze zwischen Programmund D^tenspeicherbereich aufweist.
2. Rechner nach Anspruch 1,·dadurch gekennzeichnet, daß der Speicher eine Vielzahl von Registern aufweist, die als Programm- und als Datenregister verwendbar sind, unddaß die Grenze zwischen Programm- und Datenspeicherbereich durch Eingabe der gewünschten Anzahl von Datenregistern wählbar ist.
3. Rechner nach Anspruch 1 und/oder 2, dadurch gekennzeichnet , daß er eine Lese- und Aufnahmeeinheit für externe Datenträger aufweist, und.daß durch Einschalten des Rechners;.:ein auf einem externen Datenträger gespeichertes Programm automatisch in den Speicher einlesbar und anschließend ausführbar ist.
4. Rechner nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet", daß er eine Magnetbandkassetteneinheit für zweispurige Magnetbänder aufweist und daß auf beide Bandspuren Dateien für Programme und/oder Daten aufnehmbar sind, wobei eine wahlweise Zugriffsmöglichkeit zu beiden Bandspuren besteht.
5. Rechner nach Anspruch 4, dadurch gekennzeichnet, daß der einen Bandspur positive und der anderen Bändspur negative Dateinummern zugeordnet sind.
709808/1025
- 38? -
6. Röchner nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet , daß er einen Ausgabedrucker aufweist, dessen Papierbreite ein Vielfaches der zu druckenden Zeilenlänge beträgt und der das Papier in mehreren nebeneinanderliegenden Spalten bedruckt.
7. Rechner nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet , daß in den Speicher über das Tastenfeld einzelne Instruktionen durch aufeinanderfolgender Betätigung mehrerer Tasten eingebbar sind und daß die den einzelnen Tasten zugeordneten internen Instruktionscodes intern zu einem einzigen Instruktionscode zusammengefaßt werden, der in ein einzelnes Speicherregister paßtl
3. Rechner nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet , daß er einen X-Y-Schreiber aufweist, dessen Schreibstiftposition vom Tastenfeld aus steuerbar ist und daß die Koordinaten der jeweils eingestellten Schreibstiftposition vom Rechner anzeigbar bzw. auidruckbar sind.
709808/1025
Leerseite
DE19762633151 1975-07-21 1976-07-23 Programmierbarer elektronischer rechner Withdrawn DE2633151A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/597,957 US4089059A (en) 1975-07-21 1975-07-21 Programmable calculator employing a read-write memory having a movable boundary between program and data storage sections thereof

Publications (1)

Publication Number Publication Date
DE2633151A1 true DE2633151A1 (de) 1977-02-24

Family

ID=24393657

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19762633151 Withdrawn DE2633151A1 (de) 1975-07-21 1976-07-23 Programmierbarer elektronischer rechner

Country Status (6)

Country Link
US (1) US4089059A (de)
JP (1) JPS5213745A (de)
CA (1) CA1094690A (de)
DE (1) DE2633151A1 (de)
GB (1) GB1573013A (de)
HK (1) HK34483A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2842654A1 (de) * 1977-09-30 1979-04-05 Canon Kk Elektronisches geraet mit anzeigeeinrichtung und druckwerk

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4500956A (en) * 1978-07-21 1985-02-19 Tandy Corporation Memory addressing system
NL7906416A (nl) * 1979-08-27 1981-03-03 Philips Nv Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden.
JPS57169879A (en) * 1981-04-13 1982-10-19 Canon Inc Electronic equipment with printer
EP0546977A3 (en) * 1991-12-13 1994-10-19 Ibm Method and apparatus for solving numerical problems that use a plurality of processing elements operating in parallel
US6189137B1 (en) * 1997-11-21 2001-02-13 International Business Machines Corporation Data processing system and method for simulating “include” files in javascript
US7028071B1 (en) * 2000-01-28 2006-04-11 Bycast Inc. Content distribution system for generating content streams to suit different users and facilitating e-commerce transactions using broadcast content metadata
US8533439B2 (en) * 2005-11-07 2013-09-10 Atmel Corporation Elastic shared RAM array including contiguous instruction and data portions distinct from each other
US7913103B2 (en) * 2007-08-31 2011-03-22 Globalfoundries Inc. Method and apparatus for clock cycle stealing
KR101275698B1 (ko) * 2008-11-28 2013-06-17 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 데이터 처리 방법 및 장치
JP1577390S (de) * 2016-09-12 2017-05-29
JP1577389S (de) * 2016-09-12 2017-05-29
CN116071759B (zh) * 2023-03-06 2023-07-18 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种融合gpt2预训练大模型的光学字符识别方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3461434A (en) * 1967-10-02 1969-08-12 Burroughs Corp Stack mechanism having multiple display registers
US3548384A (en) * 1967-10-02 1970-12-15 Burroughs Corp Procedure entry for a data processor employing a stack
US3588841A (en) * 1969-03-27 1971-06-28 Singer Co Programmable electronic calculator
US3596257A (en) * 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
US3878513A (en) * 1972-02-08 1975-04-15 Burroughs Corp Data processing method and apparatus using occupancy indications to reserve storage space for a stack
JPS5031844A (de) * 1973-07-20 1975-03-28
US3902054A (en) * 1973-09-13 1975-08-26 Texas Instruments Inc Calculator system having keyboard with double entry protection and serialized encoding
US3892958A (en) * 1974-01-11 1975-07-01 Hewlett Packard Co Inverse/complementary function prefix key
JPS5062437U (de) * 1974-10-09 1975-06-07
JPS60191657A (ja) * 1984-03-09 1985-09-30 Toyota Motor Corp 鋳造用溶湯保持炉

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2842654A1 (de) * 1977-09-30 1979-04-05 Canon Kk Elektronisches geraet mit anzeigeeinrichtung und druckwerk

Also Published As

Publication number Publication date
JPS6141432B2 (de) 1986-09-16
US4089059A (en) 1978-05-09
GB1573013A (en) 1980-08-13
HK34483A (en) 1983-09-16
CA1094690A (en) 1981-01-27
JPS5213745A (en) 1977-02-02

Similar Documents

Publication Publication Date Title
DE2633151A1 (de) Programmierbarer elektronischer rechner
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
EP0346801B1 (de) Verfahren und Anordnung zur Ausführung eines Programms in einem heterogenen Mehrrechnersystem
EP0108969B1 (de) DMA-Steuereinrichtung zur Übertragung von Daten zwischen einem Datensender und einem Datenempfänger
DE2655241A1 (de) Programmierbarer rechner
DE2449547A1 (de) Computer- und datenverarbeitungsanlage
DE2228742A1 (de) Programmierbare Rechenmaschine
DE1774870C3 (de) Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage
DE2744251A1 (de) Mehrprogramm/mehrprozess-computersystem
DE1190704B (de) Rechenanlage
DE2365569A1 (de) Elektronischer rechner
EP0632668B1 (de) Verfahren zum Aktualisieren eines Systemprogramms in einer Vermittlungseinrichtung
DE1499224C3 (de) Datenverarbeitungsanlage mit Kellerspeichereinrichtungen
EP0171572B1 (de) Verfahren zur Herstellung eines Filmkartenduplikats sowie Filmkartenkamera zur Durchführung des Verfahrens
DE2507405C2 (de) Anordnung zum Synchronisieren gleichzeitig auszuführender Tasks für Peripheriegeräte einer Datenverarbeitungsanlage
DE1181948B (de) Elektronische Datenverarbeitungsmaschine
Pocklington AMAP-A General Optical Mark Reader Form Evaluation Program
DE1188839B (de) Elektrische Rechenanlage
ATE30976T1 (de) Verfahren zur sicherung einer von einem lieferant in einem tragbaren magnetischen traeger gespeicherten software.
DE1934441C3 (de) Befehlswerkgesteuertes Rechenwerk für einen Digitalrechner
DE1774181C3 (de) Datenspeichereinnchtung
DE1296430B (de) Steuerschaltung fuer den Zugriff eines Rechenwerkes und mindestens einer peripheren Einheit zum Hauptspeicher eines programm-gesteuerten Ziffernrechners
EP0651313B1 (de) Verfahren zur Datensicherung und Datenrücksicherung
DE1549457C3 (de) Datenverarbeitungsanlage
DE2519395C3 (de) Anordnung zur Steuerung der Befehlsfolge in Datenverarbeitungseinrichtungen mit Speicherprogrammierung

Legal Events

Date Code Title Description
8128 New person/name/address of the agent

Representative=s name: SCHULTE, K., DIPL.-ING., PAT.-ASS., 7030 BOEBLINGE

8141 Disposal/no request for examination