DE2801981C2 - - Google Patents

Info

Publication number
DE2801981C2
DE2801981C2 DE2801981A DE2801981A DE2801981C2 DE 2801981 C2 DE2801981 C2 DE 2801981C2 DE 2801981 A DE2801981 A DE 2801981A DE 2801981 A DE2801981 A DE 2801981A DE 2801981 C2 DE2801981 C2 DE 2801981C2
Authority
DE
Germany
Prior art keywords
memory
data
segment
block
sections
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.)
Expired
Application number
DE2801981A
Other languages
English (en)
Other versions
DE2801981A1 (de
Inventor
Gavin Lee Austin Tex. Us Douglas
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2801981A1 publication Critical patent/DE2801981A1/de
Application granted granted Critical
Publication of DE2801981C2 publication Critical patent/DE2801981C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/123Storage facilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers

Description

Die vorliegende Erfindung betrifft eine Einrichtung zum Steuern einer Textverarbeitungsmaschine nach dem Oberbegriff des Anspruchs 1.
In den amerikanischen Patentschriften No. 37 53 239 und 37 81 813 ist ein Verfahren und eine Anordnung für eine fortlaufende Aufzeichnung (Log) der Verwendung von Speicherblocks in einem seriellen Massenspeicher beschrieben, wobei einzelne Blocks zur Speicherung von neuen und revidierten Textseiten zugeordnet werden. Dadurch ist es bei der Bedienung einer Textverarbeitungseinrichtung nicht mehr notwendig, die fortlaufende logische Folge von Speicherblöcken zu verfolgen, die den einzelnen Seiten eines zu erstellenden oder zu revidierenden Dokuments entsprechen. Diese fortlaufende Aufzeichnung (Log) wird dabei in einem Block am Anfang des Speichers nach jedem Speichervorgang oder nach jedem Löschvorgang aufgezeichnet.
Eine Unzugänglichkeit dieses Verfahrens ist die übermäßig lange Zugriffszeit, die nach einem Speichervorgang unter Umständen benötigt wird, um jenen Speicherblock zu erreichen, in welchem die fortlaufende Aufzeichnung (Log) einzutragen bzw. neu zu schreiben ist. Der bewußte Speicherblock kann örtlich verhältnismäßig weit von dem Speicherplatz entfernt sein, wo sich der Textspeichervorgang abgespielt hat. Durch die oft wiederholten Zugriffsbewegungen über lange Strecken, die bei dem genannten Verfahren vom Zugriffsmechanismus abverlangt werden, erhöht sich die Abnützung dieser elektromechanischen Teile. Im weiteren ist in diesen Patentschriften die Möglichkeit nicht berücksichtigt worden, daß beim Lesen des Log im Speicher oder beim Aufzeichnen dieselben Fehler auftreten können. Ganz offensichtlich können Daten im Speicher verloren gehen, wenn beim Auslesen des Log im Speicher sich ein Fehler einschleicht. Dies würde umfangreiches Wiedereintasten durch die Gerätebedienung nötig machen, und zwar nicht wegen irgendwelcher Fehler des im Speicher aufgezeichneten Textes, sondern wegen der Fehler im Log.
Die genannten Patentschriften beschreiben eine fortlaufende Logaufzeichnung mit einem Abschnitt das Speicherband betreffend, in welchem durch Hinweisbits der Belegungsstatus (belegt oder frei) jedes Blocks auf dem Speicherband bezeichnet ist. Steckt in einem Block ein gravierender Fehler, ein Banddefekt, der das Aufzeichnen oder Lesen verhindert, dann wird dieser Block als belegt bezeichnet. Es läßt sich also nicht unterscheiden, ob ein belegter Block gültigen Text gespeichert hat, oder wegen irgendwelcher Fehler nicht benutzbar ist.
Beim Verfahren nach den genannten Patentschriften ist auch nicht an Situationen gedacht, in denen Text aus einem Speicher nicht mit Erfolg in eine Textverarbeitungseinrichtung eingegeben werden kann, wenn beim Lesen Fehler auftauchen. Es sei beispielsweise angenommen, daß zwei Seiten (Blöcke) vom Band gelesen und in den Textverarbeitungsspeicher überschrieben, aber von der Gerätebedienung nicht überprüft worden sind. Es sei weiter angenommen, daß mit dem zweiten Block kein gültiger Text gelesen worden ist, weshalb diese Seite gar nicht im Speicher steht. Speichert nur die Bedienung diesen ganzen Text ohne Überprüfung zurück, obwohl bei einer solchen das Fehlen eines Textteils hätte bemerkt werden können, so würde schließlich das Aufzeichnungslog nachgeführt. Der Loginhalt würde das Löschen einer Textseite aus der betreffenden Arbeit, d. h. Speicherraumverlust, anzeigen, wenn statt dessen die Gerätebedienung Speicherraum freihalten müßte, um den verlorenen Text wiedereinzutasten.
Es ist deshalb die Aufgabe der Erfindung, eine Einrichtung zum Steuern einer Textverarbeitungsmaschine anzugeben, die eine wirkungsvolle automatische Steuerung des Speicherns und Wiederauslesens segmentierten Textes ermöglicht, ohne daß die Bedienungsperson umfangreiche Verzeichnisse der verwendeten Speicheradressen führen muß.
Gelöst wird diese Aufgabe der Erfindung durch die im Hauptanspruch angegebenen Merkmale.
Vorteilhafte Ausgestaltungen und Weiterbildungen des Gegenstandes der Erfindung sind den Unteransprüchen zu entnehmen.
Auf diese Weise wird durch die Erfindung der Vorteil erzielt, daß die Textsegmentaufzeichnung und Wiedergabe automatisch gesteuert wird, so daß die Bedienungsperson der Mühe enthoben ist, eine eigenhändige, z. T. umfangreiche Speicheradressenprotokollierung vorzunehmen.
Die Erfindung wird nunmehr anhand einer bevorzugten Ausführungsform der Erfindung in Verbindung mit den beigefügten Zeichnungen näher beschrieben. In den Zeichnungen zeigt
Fig. 1 ein Blockschaltbild eines Teils eines Textverarbeitungssystems mit einem segmentierten seriellen Bitspeicher, der erfindungsgemäß angesteuert werden kann,
Fig. 2 und 3 die einleitende Arbeitsweise des Systems, wobei das zuletzt auf den neuesten Stand gebrachte Verzeichnis im Speicher für die Steuerung des Zugriffs zu diesem Speicher benutzt wird,
Fig. 4 bis 9 die willkürliche Auswahl eines Blocks,
Fig. 10 die Auswahl des nächstfolgenden Blocks,
Fig. 11 die Anschaltung eines Kurzzeitspeichers bei der Auswahl sowohl des nächstfolgenden Blocks, als auch bei der Aufzeichnung des Blocks,
Fig. 12 eine Teil-Leseauswahl eines Blocks,
Fig. 13 bis 20 die Aufzeichnungsoperation eines Blocks,
Fig. 21 die Fortschreibung als Teil der Aufzeichnung eines Blocks und
Fig. 22 die Fehlernachführung in Verbindung mit der Aufzeichnung eines Blocks.
Demgemäß werden ein Verfahren und eine Anordnung zum Speichern und Abrufen von Textblöcken aufgezeigt, die normalerweise Seiten eines Dokumentes darstellen und die als eine Folge von nicht gekennzeichneten Abschnitten unterschiedlicher Größe auf Segmenten eines Serienspeichers abgespeichert sind. Die fehlende Kennzeichnung soll dabei bedeuten, daß in dem Text keine Seitenzahl oder irgendeine andere fortlaufende Angabe enthalten ist. Die Anordnung versucht dabei, eine möglichst gute Ausnutzung des verfügbaren Speicherplatzes dadurch zu erreichen, daß die Blöcke in den Segmenten des Speichers dicht beisammen abgespeichert werden.
In diesem Speicher werden Daten seriell von und nach einem Speichersegment übertragen, jedoch kann ein wahlfreier oder pseudowahlfreier Zugriff zu dem Speichersegment auf der Ebene eines der Abschnitte erfolgen. Alle Segmente sind von fester und gleicher Länge. Jedes Segment enthält auch eine Anzahl von Abschnitten, wobei jeder der Abschnitte eine feste und gleiche Länge aufweist.
Da die Daten seriell ohne Kennzeichnung einer laufenden Nummer (Seitenzahl) abgespeichert werden, läßt sich irgendein Text nicht allein durch die Untersuchung der gespeicherten Textteile erkennen. Aus diesem Grund wird verfahrensgemäß ein Verzeichnis geführt, aus dem die laufende Nummer der Blöcke und der Ort dieser Blöcke im Speicher feststellbar sind. Diese fortlaufende Aufzeichnung besteht aus zwei Teilen: 1. aus einer Systemliste, d. h. einer Liste der logischen Reihenfolge der benutzten Speichersegmente und 2. aus einem Systemlog, das eine fortlaufende Aufzeichnung der Datenkennzeichnung eines jeden Speichersegmentes im Speicher ist.
Die Anordnung versucht dabei die einzelnen Blöcke auf die Segmente des Speichers zu packen, jedoch nicht notwendigerweise auf unmittelbar nebeneinander liegende Speichersegmente. Ein Block kann beispielsweise über mehrere Speichersegmente gehen und die in der Systemliste aufgeführten Speichersegmente stellen eine Gruppe von Blöcken, beispielsweise ein aus mehreren Seiten bestehendes Dokument dar. Die Systemliste gibt daher die logische Reihenfolge der Speichersegmente und nicht ein Verzeichnis ihrer tatsächlichen Reihenfolge an. Es sei beispielsweise die hypothetische Liste von Speichersegmenten betrachtet: f/m/d/e. Das Segment f liegt örtlich und logisch vor dem Segment m. Das Segment m liegt logisch jedoch nicht örtlich vor dem Segment d. Die beiden Segmente d und e liegen örtlich nebeneinander, obgleich die beiden Segmente m und d und die beiden Segmente f und m örtlich nicht nebeneinander liegen. In der Liste ist dabei jede Kombination von aufeinanderfolgenden, nicht aufeinanderfolgenden, örtlich vor- und nachher liegenden Anordnungen von Segmenten möglich. Die Liste kennzeichnet die logische Reihenfolge, in der die Daten abgespeichert sind.
In diesem Beispiel folgt beispielsweise m dem Segment f, und das Segment d folgt dem Segment m. Das Segment d folgt nicht dem Segment f, und hinter dem Segment e folgt kein weiteres Segment. Das Segment m geht dem Segment d voraus, und das Segment f geht dem Segment m voraus. Das Segment f geht nicht dem Segment d voraus und dem Segment f geht gar kein Segment voraus.
Das Systemlog der Kenndaten der Speichersegmente stellt ein Verzeichnis darüber dar, wie jeder Abschnitt eines jeden Segmentes derzeit in der Anordnung benutzt wird. Jedem Abschnitt eines Segmentes ist dabei nur eines der folgenden Charakteristika in dem fortlaufenden Systemlog zugeordnet: 1. nicht benutzt, verfügbar, 2. Fehler, unbrauchbar, 3. nur Daten, oder 4. Blockbeginn und Daten. Ein Datenblock (Seite) kann dabei über mehrere Abschnitte eines Speichersegments oder sogar über mehrere Speichersegmente gehen. In einem Abschnitt kann nicht mehr als ein Datenblock vorkommen. Wenn ein Datenblock über mehrere Speichersegmente geht, dann liegen sie in der Systemliste nebeneinander. Wenn ein Block Abschnitte eines Segmentes überspannt, dann liegen diese Abschnitte in dem Speichersegment hintereinander. Ein einzelner Block wird durch eine Anfangskennzeichnung des Blocks in dem Systemlog und durch die Anfangskennzeichnung eines nächstfolgenden Blocks oder durch das Ende der Systemliste begrenzt. Abschnitte, in denen kein Text gespeichert ist, (Fehler, unbrauchbar oder unbenutzt, verfügbar) die zwischen Blockanfängen liegen, ändern daran nichts. Die Nummer eines Datenblocks (Seitenzahl) wird durch die relative Lage des Blockanfangs gemäß Aufzeichnung in der Systemliste bestimmt. Beispielsweise findet man den Block Nr. 3 dadurch, daß man durch Überprüfung der Systemliste und des Systemlogs der Kennzeichen den dritten Blockanfang ermittelt. Das Auffinden irgendeines Blocks mit der Nr. i wird beispielsweise dadurch ermöglicht, daß man das Speichersegment, das den Anfang des i-ten Blockes enthält, ermittelt und dann den richtigen Abschnitt liest, sowie die darauffolgenden, nur Daten enthaltenden Abschnitte dieses Segmentes oder nachfolgender Segmente in der Systemliste bis 1.) ein weiterer (i + 1) Blockanfangsabschnitt festgestellt wird oder 2.) die Liste endet. Nicht benutzte oder fehlerhafte und daher unbrauchbare Abschnitte werden übersprungen.
Das fortlaufende System-Verzeichnis, welches sowohl die erwähnte Liste als auch das Log umfaßt, steckt in einem wahlfreien Speicher der Anordnung und wird dann im segmentierten, seriellen Speicher aufgezeichnet. Um Widersprüche zu vermeiden, die bei Stromausfall auftreten können, wenn dabei die im wahlfreien Speicher aufgezeichneten Log-Daten gelöscht werden, werden diese Daten jedesmal in den seriellen Speicher überschrieben, nachdem eine Datenaufzeichnung in ihm erfolgt ist. Die Log-Daten werden zur Erhöhung der Zuverlässigkeit und zur Verkürzung der Zugriffszeit während eines Speichervorganges an mehreren, örtlich getrennten Stellen des seriellen Speichers aufgezeichnet. Bei jedem Speichervorgang wird das örtlich am nächsten liegende Log auf den neuesten Stand gebracht. Das Log umfaßt auch den Stand eines Aktivitätszählers, der bei jeder Nachführung erhöht wird. Die neueste und richtige Logeintragung kann beim Inbetriebsetzen des Systems auf diese Weise ermittelt werden.
Das Systemlog unterhält auch Aufzeichnungen jener Speicherabschnitte, welche nicht-ausmerzbare Fehler enthalten, damit keine Benutzung dieser Abschnitte versucht wird. Zusätzlich ist die Zahl dieser fehlerbehafteten Abschnitte festgehalten und der Benutzer der Textverarbeitungseinrichtung wird gewarnt, wenn diese Zahl einen vorgegebenen Wert erreicht. Diese Warnung verhindert die weitere Benutzung nicht, bedeutet aber, daß unter Umständen die Zuverlässigkeit der Speichereinrichtung fraglich ist.
Wenn der Benutzer der Textverarbeitungseinrichtung willkürlich einen Block auswählt, dann kann dieser Block durch ihn überprüft und korrigiert werden. So kann dieser Block beispielsweise durch zusätzlichen Text erweitert werden, so daß er nicht länger in dem Speicherplatz, den er zuvor im Speicher eingenommen hat, untergebracht werden kann. Wenn das Ende dieses Blocks ein Speichersegment mit der nächsthöheren Block-Nummer mitbenutzt, kann es zu Schwierigkeiten kommen. Wegen dieses möglichen Konflikts wird das System alle sich an das Ende des ausgewählten Blockes anschließenden Daten, die dieses Segment mitbenutzen, nach einem anderen Speicherort überführen, wenn ein solcher Konflikt mit anderen Daten vorliegt. Diese den Konflikt verursachenden Daten werden vor dem ursprünglichen Lesen des angeforderten Blockes nach einem anderen Ort überführt und zwar über einen Pufferspeicher mit wahlfreiem Zugriff, der die angeforderten Daten hält. Diese Daten werden dann nach einem anderen Segment übertragen, das zunächst nicht in der Systemliste oder dem fortlaufenden Systemlog enthalten ist. Diese an einem anderen Ort abgespeicherten Daten werden nicht in das Systemlog aufgenommen, wenn 1) dies nicht nach Abspeicherung der ursprünglich angeforderten und korrigierten Daten im Speicher tatsächlich notwendig ist, oder 2) wenn nicht bei dem Versuch Fehler auftreten, die angeforderten Daten in dem Segment abzuspeichern, von dem sie ursprünglich kamen, oder aber 3) wenn der auf den ursprünglich angeforderten Block folgende Block nicht ebenfalls ausgewählt ist. Falls die Daten nicht an einem anderen Ort untergebracht werden können, wird der Datenblock doch abgerufen, und dem Benutzer wird diese besondere Bedingung mitgeteilt. Dieses im Log nicht gekennzeichnete Segment wird als Kurzzeitspeicher bezeichnet.
Alle Daten, die bei einer solchen Überführung nach einem neuen Speicherplatz nicht gelesen werden können, werden im Kurzzeitspeicher durch unverwechselbare Fehlercodes gekennzeichnet. Daher wird während dieser Umspeicherung der Inhalt eines Blockes nicht zusammengezogen, und alle Blockanfänge bleiben erhalten.
In Fig. 1 ist ein Teil eines Textverarbeitungssystems mit einer Datenverarbeitungsanlage 1 gezeigt, die an einer Adressenleitung 2 angeschlossen ist, über die in einem Steuerspeicher befindliche Befehle adressiert und über die Leitung 4 an den Prozessor abgegeben werden. Ein Systemtaktgenerator 5 liefert die Taktsignale über die mit C bezeichneten Leitungen. Die Datenverarbeitungsanlage 1 überträgt über Leitung 6 Steuersignale an einem segmentierten, externen seriellen Speicher 9, der beispielsweise ein Plattenspeicher, dessen verschiedene Spuren die einzelnen Segmente darstellen, oder auch ein Magnetbandspeicher sein kann, dessen Datenblöcke die Segmente darstellen. Der Speicher 9 liefert Unterbrechungs- und Statusinformation über Leitungen 7 bzw. 8 an die Datenverarbeitungsanlage 1.
Ein Speicher 21 mit wahlfreiem Zugriff dient der Speicherung von Textdaten, der Erzeugung und Korrektur von Text und dient insgesamt als Pufferspeicher für die Rückspeicherung von Daten im externen Speicher 9. Die Speichersteuerung 18 steuert den Zugriff zu dem Speicher 21 über eine Freigabeleitung 17, eine Datenleitung 19 und eine Adressenleitung 20. Eine unmittelbare Datenübertragung zwischen externem Speicher 9 und Arbeitsspeicher 21 unter Umgehung der Datenverarbeitungsanlage 1 wird über eine Direkt-Speicherzugriffssteuerung 13 durchgeführt. Die Daten werden zwischen der Direkt-Speicherzugriffssteuerung 13 und der Speichersteuerung 18 über die Datenleitung 15 und zwischen externem Speicher und Direkt-Speicherzugriffssteuerung 13 über Datenleitung 12 übertragen. Die Adressenleitung 14 weist dabei auf die entsprechende Adresse im Arbeitsspeicher 21 hin, bei der entsprechend einem Freigabesignal auf der Leitung 16 Daten gelesen oder eingeschrieben werden sollen. Von der Direktspeicherzugriffssteuerung 13 nach dem externen Speicher 9 übertragene Steuersignale und vom externen Speicher 9 nach der Direkt-Speichersteuerung übertragene Statussignale laufen über Leitungen 11 bzw. 10. Die Datenverarbeitungsanlage 1 überträgt die zum Lesen oder Schreiben im Arbeitsspeicher erforderliche Adresse über die Adressenleitung 22 an die Speichersteuerung 18. Die Daten werden zwischen Datenverarbeitungsanlage und der Speichersteuerung 18 in Verbindung mit einem auf Leitung 24 liegenden Freigabesignal über Datenleitung 23 übertragen.
Der Steuerspeicher 3 wird gewöhnlich als Festwertspeicher ausgeführt, bei dem die Befehle fest eingespeichert sind. Selbstverständlich läßt sich der Steuerspeicher auch in Form eines Speichers mit wahlfreiem Zugriff ausführen, so daß jedes Mal beim Einschalten des Systems die Befehle neu in den Steuerspeicher geladen werden müssen. In einer anderen Ausführungsform können Datenverarbeitungsanlage 1 und Steuerspeicher 3 vollständig durch eine kombinatorische logische Schaltung ersetzt werden, so daß kein Prozessor und keine Befehle verwendet werden. Die im folgenden noch zu beschreibenden Flußdiagramme machen es einem mit der Technik und Entwicklung logischer Schaltung vertrauten Fachmann möglich, die zur Durchführung der Erfindung erforderlichen logischen Schaltungen zu entwerfen. Diese Flußdiagramme sind jedoch so angelegt, daß sie es einem Programmierer ohne weiteres gestatten, eine digitale Datenverarbeitungsanlage für einen Zugriff zu einem segmentierten externen Speicher und für eine laufende Aufzeichnung der Benutzung dieses Speichers gemäß dem hier verwirklichten Erfindungsgedanken zu programmieren.
Fig. 2 zeigt die Anlaufphase des Systems, bei der eine Anzahl von im externen Speicher 9 aufgezeichneten Verzeichnissen untersucht werden, um das zuletzt erstellte Systemlog festzustellen, das sich aus einem Zählerstand in einem Aktivitätszählerfeld ermitteln läßt. Dabei geht man zunächst von der Annahme aus, daß der externe Speicher 9 eine Anzahl X von Systemlogs enthält. Block 31 zeigt, daß die Register "Zähler" und "Lesen OK" auf Null gebracht und das Register N auf Eins eingestellt werden. Im Block 32 wird die Verzeichnisnummer N aus dem Speicher 9 gelesen. Bei 33 wird die gelesene Zahl auf Lesefehler untersucht. Bei erfolgreichem Lesevorgang wird bei 36 des Registers N um 1 erhöht, und bei 37 wird der Inhalt des N-Registers mit X verglichen. Angenommen der Inhalt des Registers ist nicht größer als X, denn müssen weitere Verzeichnisse gelesen werden, und dieser Vorgang wird durch Auslesen des nächsten Systemverzeichnisses mit Nr. N aus dem Speicher 9 wiederholt, wie dies bei 32 angedeutet ist. Angenommen, daß bei 33 der Lesevorgang erfolgreich verlaufen ist, wird bei 34 das "Lesen OK"- Register auf Eins eingestellt, und der am Beginn des Verzeichnisses eingespeicherte Zählerstand des Aktivitätszählers wird mit dem Inhalt des Zählerregisters bei 35 verglichen.
Ist der Inhalt des Aktivitätszählers größer als oder gleich Null, dann wird das Verzeichnis, wie bei Block 38 angegeben, in den Arbeitsspeicher 21 eingespeichert. (In diesem Beispiel wird der Zählerstand des Aktivitätszählers bei dem ersten Vergleich des Zählerstandes des Aktivitätszählers mit dem Inhalt des Zählerregisters immer gleich oder größer sein als der Inhalt des Zählerregisters, da das Zählerregister zu Anfang auf Null eingestellt war.) Bei 39 wird das Zählerregister mit dem Inhalt des Aktivitätszählers geladen, und bei 36 wird der Inhalt des Registers N um Eins erhöht. Jedesmal dann, wenn der Inhalt des Aktivitätszählers größer ist als der Inhalt des Zählerregisters, wird ein Verzeichnis im Arbeitsspeicher 21 eingespeichert. Wenn bei 37 alle Verzeichnisse gelesen sind, dann ist das im Arbeitsspeicher 21 liegende Verzeichnis dasjenige, das mit dem höchsten Zählerstand des Aktivitätszählers mit Erfolg gelesen worden ist.
Geht man von Fig. 2 auf Fig. 3 über, dann wird nach erfolgreichem Lesen aller Verzeichnisse das Register "Lesen OK" bei 40 überprüft, ob der Inhalt 0 oder 1 ist. Ist der Inhalt eine Eins, dann wurde ein gültiges Verzeichnis aus dem Speicher 9 entnommen, und der Ablauf geht im Block 42 zurück an den Benutzer des Textverarbeitungssystems. Wenn jedoch kein gültiges Verzeichnis gelesen wurde, dann wird bei 41 der Benutzer davon verständigt, daß ein gültiges Verzeichnis nicht vorliegt, wodurch ein weiterer Zugriff zum externen Speicher 9 verhindert wird.
In den Fig. 4 bis 9 wird ein beliebiger Block ausgewählt, wobei eine durch den Benutzer und wiederum durch das Textverarbeitungssystem an die Verzeichnis- und Steuerschaltung gekennzeichnete beliebige Seite aus dem externen Speicher 9 abgerufen und in den Speicher 21 mit wahlfreiem Zugriff eingespeichert wird. Dieser Vorgang beginnt in Fig. 4 mit folgenden Annahmen. Für dieses Beispiel soll die angeforderte Blocknummer im N-Register enthalten sein und wird mit N bezeichnet, die im Arbeitsspeicher liegende Anfangsadresse, bei der die vom externen Speicher 9 abgerufenen Daten abgespeichert werden sollen, wird mit B bezeichnet und ist im B-Register eingespeichert, und die nicht benutzte Kapazität des Arbeitsspeichers 21 wird mit M bezeichnet und ist im M-Register abgespeichert. Die Kapazität M ist eine ganze Zahl, die die Größe des Arbeitsspeichers 21 und des Puffers B anzeigt. Dies ist die Anzahl ganzer Abschnitte im Speicher 9, die der Pufferspeicher B unter den gegebenen Umständen aufnehmen kann. Für eine beliebige Blockauswahl muß M mindestens gleich der Anzahl der Abschnitte eines Segments minus 1 sein. Für dieses Beispiel sei angenommen, daß jedes Segment im externen Speicher 9 acht Abschnitte enthält. Daher muß M mindestens gleich 7 sein.
Am Anfang wird bei 46 geprüft, ob ein Block N vorhanden ist, wobei die Systemaufzeichnung des Verzeichnisses abgetastet und die Daten- und Blockanfangsabschnitte gezählt werden. Ist der Datenblock N nicht vorhanden, dann können natürlich auch keinerlei Textdaten aus dem externen Speicher 9 nach dem Arbeitsspeicher 21 übertragen werden. Das anschließend beschriebene Verfahren wird für die Einstellung der Speichersteuerung für die Abspeicherung eines weiteren, auf den letzten zuvor eingespeicherten Block folgenden Textes durchgeführt.
Das in der Speichersteuerung verwirklichte System wird wohl am besten an diesem Punkt genau beschrieben, nämlich die Verwendung von Auswahlzeigern und Aufzeichnungszeigern. In dem System werden zwei in Registern abgespeicherte Zeiger verwendet, die auf Speicherplätze im segmentierten externen Speicher 9 hinweisen. Diese Zeiger enthalten jeweils ein einem Segment im Speicher 9 entsprechendes Feld und ein weiteres einem bestimmten Abschnitt in diesem Segment entsprechendes Feld. Der Auswahlzeiger SP soll dabei auf den nächsten Abschnitt eines anzusteuernden oder aufzurufenden Segmentes hinweisen. Da in diesem System ein Block nur teilweise gelesen werden kann, wie dies in den nachfolgenden Flußdiagrammen im einzelnen noch gezeigt ist, und um diesen teilweisen Lesevorgang zu einem späteren Zeitpunkt fortzusetzen und zu beenden, weist der Zeiger SP nicht immer auf den Anfang eines Blockes hin. Wenn sowohl das Segmentfeld als auch das Abschnittsfeld von SP Null ist, dann wurden alle Daten ausgewählt. Blöcke können nur noch erzeugt, nicht jedoch revidiert werden, wenn der gesamte Zeiger SP Null ist.
Der Aufzeichnungszeiger RP weist auf den letzten im externen Speicher abgespeicherten Abschnitt eines Segmentes hin. Wenn das Abschnittsfeld des Aufzeichnungszeigers RP gleich Null ist, dann zeigt dies, daß das im Segmentfeld bezeichnete Segment in keinem Teil mit einer Aufzeichnung versehen ist. Der Zeiger RP kann niemals logisch größer oder gleich SP sein, wie dies aus der Systemliste und dem Systemlog hervorgeht. Bei dieser Definition gilt, daß dann, wenn der Inhalt des Auswahlzeigerregisters gleich Null ist, der Auswahlzeiger als nicht vorhanden betrachtet wird. Die Zeiger können wohl auf das gleiche Speichersegment, jedoch nicht auf den gleichen Abschnitt dieses Segmentes hinweisen.
Nach Abschluß einer Blockspeicheroperation ist der logisch zwischen RP und SP liegende Bereich in dem Systemlog bezüglich der Datenkennzeichnung als unbenutzt gekennzeichnet mit Ausnahme der durch Fehler unbenutzbaren Abschnitte. Ist der Auswahlzeiger Null, dann wird der zwischen RP und dem Ende der Systemliste liegende Bereich in dem Systemlog als unbenutzt gekennzeichnet. Jedes Segment, das keine Daten enthält, wird aus der Systemliste entfernt. Dadurch wird sichergestellt, daß für nachfolgende Arbeiten Speicherplatz zur Verfügung steht.
In Fig. 4 werden für den Fall, daß ein Block nicht vorhanden ist, bei 49 beide Felder des SP-Registers auf Null eingestellt. Das Kurzzeitregister wird dabei gelöscht. Bei 50 wird das Segmentfeld des RP- Registers auf das letzte in der Systemliste befindliche logisch folgende Segment mit Daten eingestellt, und bei 51 wird das Abschnittsfeld des RP- Registers auf den letzten mit Textdaten versehenen Abschnitt der im Segmentfeldabschnitt von RP angegebenen Segmentnummer eingestellt. Bei 52 wird der Benutzer davon in Kenntnis gesetzt, daß der Block nicht gefunden wurde. Der Auswahlzeiger wird daraufhin so eingestellt, daß er anzeigt, daß es keinen weiteren abgespeicherten Text zum Auswählen gibt, und der Aufzeichnungszeiger wird so eingestellt, daß Text unmittelbar hinter dem zuletzt im externen Speicher 9 eingespeicherten Block im Arbeitsspeicher 21 abgespeichert werden kann.
Bei 46 soll nunmehr der wahrscheinlichere Fall betrachtet werden, daß der bezeichnete Block N vorhanden ist. Beginnt der nächste Block N+1 auf dem gleichen Segment des Speichers, auf dem auch der Block N endet, dann kann es zu einer Störung kommen. Das Problem besteht darin, daß dann, wenn der Text im Block N abgerufen und erweitert wird, dieser neue Text nicht mehr in denselben Speicherplatz paßt, aus dem er entnommen wurde. Wenn der nächste Textblock nicht im gleichen Segment beginnt, in dem der bezeichnete Block N endet, dann kann es keine Schwierigkeiten geben, da jede Ausdehnung eines Textes über die Segmentgrenze in einem bisher unbenutzten Segment abgespeichert würde. In Block 47 Fig. 4 sei der störungsfreie Fall betrachtet. Dann wird bei 48 der Kurzzeitspeicher gelöscht, und das Verfahren wird bei C in Fig. 7 fortgesetzt. Bei 70 wird dann das Segmentfeld des SP-Registers auf die Nummer des ersten Segmentes, in dem der Block N abgespeichert ist, eingestellt. Diese Information wird dem Verzeichnis entnommen. Bei 71 wird das Abschnittsfeld des SP-Registers auf die Nummer des ersten Datenabschnittes des Blockes N aus dem Systemaufzeichnungsabschnitt des Verzeichnisses entnommene Information eingestellt. Ist bei 72 der anzusteuernde Block der erste Block eines Dokumentes, dann wird bei 73 das Segmentfeld des RP-Registers auf die Segmentnummer des Speichers 9 eingestellt, der das erste Segment des Blockes N bei 73 enthält, und bei 74 wird das Abschnittsfeld des RP-Registers auf Null eingestellt.
Bevor in Fig. 8 fortgefahren wird, soll angenommen werden, daß der angeforderte Block N nicht der erste Block ist, so daß der Ablauf bei 75 fortgesetzt wird, wo das Segmentfeld des RP-Registers auf die Nummer des letzten Datensegmentes des Blockes N-1 eingestellt wird und bei 76 das Abschnittsfeld des RP-Registers auf die Nummer des letzten Abschnittes eingestellt wird, auf dem Daten des Blockes N-1 gespeichert wurden.
Fährt man bei D in Fig. 8 fort, dann bestimmt die Entscheidung bei 78 ob ein partieller Lesevorgang vorliegt dadurch, daß festgestellt wird, ob im Arbeitsspeicher 21 ausreichend Speicherplatz zur Verfügung steht, um irgendeinen jenseits des Auswahlzeigers, aber noch auf dem gleichen, durch das Segmentfeld des Auswahlzeigers gekennzeichneten Segments liegenden Abschnitt aufzunehmen. Wenn bei 78 M (die Speichergröße in Abschnitten) groß genug ist, um alle Abschnitte des Blockes N in dem durch das Segmentfeld im RP-Register bezeichneten Segment aufzunehmen, dann werden bei 79 die Textabschnitte des SP-Segmentes mit dem Block N bei der Adresse B in den Arbeitsspeicher 21 eingelesen. Treten keine Lesefehler auf, dann geht es bei 80 weiter nach D 1 in Fig. 9. Wenn jedoch Lesefehler auftreten, dann werden bei 81 Lesefehlercodes vor jedem Speicherplatz in jedem Lesefehler enthaltenden Abschnitt im Pufferspeicher B eingespeichert, wodurch dem Benutzer angezeigt wird, wo Lesefehler aufgetreten sind, worauf das Verfahren weiter nach D 1 läuft.
Wenn bei 78 in Fig. 8 M nicht groß genug war, den Block N im SP-Segment aufzunehmen, dann wird bei 82 dem Benutzer mitgeteilt, daß der Lesevorgang nicht vollständig durchgeführt ist. Wenn bei 83 mit M gleich Null der Speicher als voll gekennzeichnet ist, dann läuft das Verfahren weiter nach D 1 und wenn M nicht gleich Null ist, dann wird bei 84 soviel aus dem Block N im Segment SP ausgelesen, als der Arbeitsspeicher 21 aufnehmen kann. Alle in den Arbeitsspeicher 21 eingelesenen Daten werden auf Fehler überprüft, und es werden, falls erforderlich, gemäß 80 und 81 Fehlercodes eingegeben.
Ab D 1 in Fig. 9 wird bei 86 angenommen, daß wegen unzureichender Pufferkapazität ein Teil-Lesevorgang erforderlich war. Bei 87 wird das Auswahlzeigerregister auf das nächste nicht gelesene Segment und den Abschnitt des Blockes N eingestellt, so daß das Lesen an diesem Punkt fortgesetzt werden kann, wenn Speicherplatz im Arbeitsspeicher 21 zur Verfügung steht. Wenn bei den in den Arbeitsspeicher 21 eingeschriebenen Daten Fehlercodes vorkommen, dann wird der Benutzer davon in Kenntnis gesetzt. Ist dies nicht der Fall, geht das System zurück an den Benutzer.
In Fig. 9 soll bei 86 nunmehr der Fall betrachtet werden, bei dem kein teilweises Lesen erfolgt ist. Bei 91 wird das M-Register um die Anzahl der soeben gelesenen Datenabschnitte vermindert. Wenn bei 92 der Block N+1 in dem Segment SP vorhanden ist, dann wurde der ganze Block N gelesen und bei 93 wird das Abschnittsfeld des SP- Registers auf den Blockanfangsabschnitt des Blockes N+1 eingestellt. Der Auswahlzeiger zeigt damit auf den Anfang des nächsten Blockes in der logischen Folge von Blöcken auf dem Dokument. Zu diesem Zeitpunkt wird eine Überprüfung auf Fehlercodes im Arbeitsspeicher 21 durchgeführt und der Benutzer von gegebenenfalls vorhandenen Fehlercodes in Kenntnis gesetzt.
Ist bei 92 der Block N+1 in dem Segment SP nicht enthalten, dann wird die Systemliste des Verzeichnisses bei 94 daraufhin überprüft, ob auf das durch das Segmentfeld im SP-Register bezeichnete Segment ein weiteres Segment folgt. Ist dies nicht der Fall, dann wird bei 98 das SP-Register auf Null eingestellt und damit angezeigt, daß keine weiteren Blöcke vorhanden sind, die gelesen werden können. Nach Mitteilung von gegebenenfalls zuvor in den Arbeitsspeicher 21 eingelesenen Fehlercodes wird das System an den Benutzer zurückgegeben. Wenn bei 94 festgestellt wird, daß auf das durch den Auswahlzeiger festgelegte Segment ein weiteres Segment folgt, dann wird das Segmentfeld des SP- Registers auf das nachfolgende Segment eingestellt, und das Abschnittsfeld des SP-Registers wird auf diesen ersten Datenabschnitt dieses nächstfolgenden Segments bei 95 eingestellt, wobei diese Information aus dem Verzeichnis abgerufen wird. Wenn bei 96 das Abschnittsfeld des SP- Registers auf den Abschnitt eines Blockanfangs eingestellt ist, dann ist das Lesen des angeforderten Blockes beendet, und das System wird nach Mitteilung von im Arbeitsspeicher gegebenenfalls liegenden Fehlercodes an den Benutzer zurückgegeben. Zeigt jedoch das Abschnittsfeld des SP-Registers nicht auf einen Blockanfang eines nächstfolgenden Segmentes, dann wird bei 97 die Adresse B um die Menge der soeben gelesenen Daten erhöht, und das Verfahren geht weiter nach D und fährt mit dem Lesen des nächsten Segmentes fort.
Nunmehr sei in Fig. 4 bei 47 die Möglichkeit eines Konfliktes angenommen. D. h., daß der nächste Block (N+1) im gleichen Segment wie der angeforderte Block liegt. Dieser Konflikt tritt dann ein, wenn der angeforderte Block erweitert wird, so daß in dem Segment, in dem der Block N endet nicht genügend Platz vorhanden ist, um den erweiterten Block N aufzuzeichnen, ohne dabei Daten in den Abschnitten einzuschreiben, in denen der Block N+1 abgespeichert ist.
Geht man nunmehr nach B in Fig. 5 über, dann wird bei 55 ein mit ES bezeichnetes leeres Segment im Speicher 9 aufgefunden. Dieses leere Segment wird durch Bezugnahme auf das Verzeichnis als ein Segment ermittelt, für das das Systemlog weder Daten, noch wegen Fehler unbenutzbare Abschnitte aufweist, und das auch nicht in dem die Systemliste enthaltenden Teil des Verzeichnisses enthalten ist. Wenn bei 56 angenommen wird, daß im Speicher 9 ein leeres Segment zur Verfügung steht, dann werden bei 57 die einen Konflikt hervorrufenden Daten aus dem den Block N enthaltenden letzten Segment in die Adresse B des Arbeitsspeichers 21 eingelesen. Diese störenden Daten sind dabei alle diejenigen Daten des Segments, in dem der Block N endet und die auf das Ende des Blockes N folgen. Der Arbeitsspeicher 21 wirkt für diese Daten als zeitweiliger Pufferspeicher, so daß diese später nach dem Segment ES übertragen werden können. Wenn bei 58 beim Lesen der einen Konflikt hervorrufenden Daten Fehler festgestellt werden, dann werden für alle diejenigen aus dem Speicher 9 in den Arbeitsspeicher 21 eingelesenen, fehlerbehafteten Abschnitte, wie bei 59 angezeigt, Fehlercodes in den Arbeitsspeicher 21 eingeschrieben. Nach Einschreiben der Fehlercodes oder wenn keine solche vorhanden sind, werden die einen Konflikt verursachenden Daten aus dem Arbeitsspeicher ausgelesen und, bei 60 angedeutet, in das Segment ES eingeschrieben.
Dieser Schreibvorgang wird bei 61 auf Schreibfehler überprüft, und beim Auftreten von Schreibfehlern werden die Datenkennzeichnungen des soeben eingeschriebenen Segmentes ES zeitweilig bei 62 für eine Anzeige von Daten in jedem Abschnitt eingestellt, wodurch eine erneute Verwendung dieses Segmentes bei einer versuchten Rückspeicherung der Daten verhindert wird. Das Verfahren läuft dann zurück nach 55, wo dann der Versuch unternommen wird, ein weiteres leeres Segment für eine Rückspeicherung der störenden Daten aufzufinden.
Wenn bei 61 angenommen wird, daß beim Rückspeichern der Daten keine Fehler aufgetreten sind, dann geht das Verfahren weiter nach B 1 in Fig. 6. Bei 65 in Fig. 6 wird der Kurzzeitspeicher auf das Segment ES eingestellt. Bei 66 wird die das Segment ES betreffende notwendige Information aufbewahrt, so daß sie später in das Verzeichnis aufgenommen werden kann, sollte sie schließlich benötigt werden. (Sie wird beispielsweise dann benötigt, wenn die abgerufenen Daten erweitert werden, da sonst die in dem Kurzzeitspeicher abgespeicherten störenden Daten überschrieben würden.) Die für das Segment ES aufbewahrte Information ist die Segmentnummer, aus der die rückübertragenen Daten entnommen wurden, sie wird im A-Register abgespeichert und als A bezeichnet, sowie die Datenkennzeichen (unbenutzt - verfügbar, Fehler - unbenutzt, Daten oder Daten- und Blockanfang) des jetzt existierenden Segmentes ES. Fährt man fort nach 67, dann werden alle Segmente, die bei der Rückübertragung von Daten Schreibfehler aufwiesen, freigegeben. In Fig. 5 Block 62 waren bekanntlich diejenigen Segmente, bei denen Schreibfehler aufgetreten waren, in das Systemverzeichnis aufgenommen worden, um Daten in allen deren Abschnitten anzuzeigen. Die Freigabe des Segmentes unterstellt dabei, daß diese Datenabschnitte im Systemlog als nicht benutzt gekennzeichnet werden. Diese Segmente wurden niemals in der Systemliste aufgenommen.
Nach Freigabe aller derjenigen Segmente, in denen Schreibfehler aufgetreten sind, wird das Verfahren in Fig. 7 bei C fortgesetzt, so daß der angeforderte Block in den Arbeitsspeicher 21 eingeschrieben werden kann. Betrachtet man nochmals Fig. 5, dann wird bei einem möglichen Konflikt bei der versuchten Rückspeicherung von einen Konflikt verursachenden Daten, wenn bei 56 kein freies Segment aufgefunden wird, der Kurzzeitspeicher gelöscht und dem Benutzer bei 63 mitgeteilt, daß keine Rückspeicherung möglich ist. Das Verfahren läuft weiter nach B 2 in Fig. 6. Nachdem alle Segmente, bei denen Schreibfehler vorgekommen sind, freigegeben worden sind, läuft das Verfahren weiter nach C.
Eine weitere Art der Systemoperation ist die Auswahl des nächstfolgenden Blockes unter der Annahme, daß bereits eine willkürliche Auswahl eines Blockes stattgefunden hat. Wichtig hierbei ist, daß am Ende der zuvor abgelaufenen Blockauswahloperation der Auswahlzeiger auf denjenigen Block eingestellt worden ist, der bei der Auswahloperation des nächstfolgenden Blocks angesteuert werden soll, wobei zu Beginn der Auswahloperation für den nächstfolgenden Block keine Ersteinstellung des Auswahlzeigers erfolgt. In Fig. 10 beginnt dieses Verfahren mit einer vom Benutzer kommenden Anforderung, den Block N in die Pufferspeicheradresse B des Arbeitsspeichers 21 einzulesen, der eine Kapazität M aufweist. Bei 101 wird der Systemlogteil des Verzeichnisses abgefragt, ob es tatsächlich einen Block n gibt. Ist dies nicht der Fall, dann wird das Auswahlzeigerregister bei 103 auf Null gestellt, und bei 104 wird dem Benutzer mitgeteilt, daß der Block im Speicher 9 nicht aufgefunden wurde. Bei 105 geht das Speichersteuersystem wieder an den Benutzer zurück.
Es sei nunmehr aufgenommen, daß bei 101 im Systemlog des Verzeichnisses festgestellt wurde, daß ein Block vorhanden ist. Dann wird bei 102 das Unterprogramm SCPAD (Kurzzeitspeicher) aufgerufen.
Dieses Unterprogramm (Kurzzeitspeicher) ist in Fig. 11 gezeigt. Wenn bei 108 das Kurzzeitspeicherregister leer ist, läuft das Verfahren zurück an den Anrufer, nämlich Punkt D in Fig. 10. Das Verfahren fährt dann bei D in Fig. 8 fort mit dem Übertragen von Daten aus dem nächstfolgenden ausgewählten Block nach dem Arbeitsspeicher 21. Wenn jedoch der Kurzzeitspeicher nicht leer ist, dann wird das Kurzzeitspeichersegment logisch in die Liste der Segmente in der Systemliste nach folgendem Verfahren aufgenommen. Bei 109 wird die Systemliste des Verzeichnisses für eine Einfügung der auf die Nummer des Segmentes A folgenden Segmentnummer des Kurzzeitspeichers auf den neuesten Stand gebracht. Segment A ist dabei das Segment, aus dem auf einen zuvor gewählten Block folgende Daten nach dem Kurzzeitspeicher übertragen wurden. Bei 110 wird das Systemlog des Verzeichnisses insoweit berichtigt, daß die tatsächlichen Datenkennzeichen des Kurzzeitspeichersegments berücksichtigt werden. Bei 111 wird das Systemlog des Verzeichnisses zur Berücksichtigung der neuen Datenkennzeichen des Segments A berichtigt. Diejenigen Abschnitte des Segments A, die nach dem Kurzzeitspeicher übertragen worden sind, werden nunmehr in dem Systemlog als nicht-benutzt gekennzeichnet. Bei 112 wird das Segmentfeld des SP-Registers auf das Segment des Kurzzeitspeichers eingestellt. Bei 113 wird das Kurzzeitspeicherregister gelöscht, und das System läuft wieder nach Punkt D in Fig. 10. Von diesem Punkt aus wird das Einlesen des angeforderten Blocks in den Arbeitsspeicher 21 fortgesetzt. Es sei darauf hingewiesen, daß die Daten aus dem Kurzzeitspeichersegment und nicht aus den Daten des Segments A ausgelesen werden, aus dem diese Daten nach dem Kurzzeitspeicher übertragen worden sind.
Eine andere Arbeitsweise des Systems ist das teilweise Lesen eines Datenblocks, das in Fig. 12 beginnt. In diesem Fall fordert ein Benutzer, daß das Lesen eines zuvor teilweise gelesenen Blocks aus dem externen Speicher 9 nach dem Arbeitsspeicher 21 bei der Pufferadresse B fortgesetzt wird. Wird die Pufferkapazität M größer als Null, dann kann das Lesen eines Blocks oder eines Teils des Blocks bei D in Fig. 8 fortgesetzt werden.
Eine wichtige Operation der Speicheraufzeichnung und Steuerung findet statt, wenn ein Block im externen Speicher aufgezeichnet werden muß. Für diese Aufzeichnung müssen die entsprechenden Segmente und deren Abschnitte ausgewählt werden, und diese Information muß aufgezeichnet werden. In Fig. 13 beginnt eine solche Aufzeichnung mit einer Anforderung durch den Benutzer, daß der Speicherinhalt an der Adresse B im Arbeitsspeicher 21 an den externen Speicher 9 am Block N übertragen werden soll. Der Block soll dabei M Abschnitte aufweisen.
Bei 116 wird das Systemlog des Verzeichnisses abgefragt, ob im Speicher 9 Aufzeichnungsblöcke existieren. Sind keine Blöcke vorhanden, dann muß für die Aufzeichnung ein leeres Segment ausgewählt werden, und die Register für den Auswahlzeiger, für den Kurzzeitspeicher und für den Aufzeichnungszeiger müssen eingestellt werden. Bei 117 wird ein leeres Segment aufgefunden und in die Systemliste in den Bereich des Verzeichnisses aufgenommen. Bei 118 wird das SP-Register auf Null eingestellt und das Kurzzeitspeicherregister gelöscht. Bei 119 wird der Segmentteil des RP-Registers auf das in der Systemliste befindliche Segment, eingestellt, und das Abschnittsfeld im RP-Register wird zu Null gemacht. Dieser Ablauf wird bei 120 fortgesetzt. Wenn bei 116 ein Block vorhanden ist, dann läuft das Verfahren unmittelbar nach 120. Wenn ein Block vorhanden ist, dann wird angenommen, daß die Aufzeichnungs- und Auswahlzeiger bereits eingestellt sind, da bei Vorhandensein von Blöcken angenommen wird, daß bereits ein Versuch, einen dieser Blöcke auszuwählen, durchgeführt wurde, bevor ein Aufzeichnungsverfahren stattfinden kann.
Bei 120 wird das SP-Register daraufhin überprüft, ob es Null ist. Das SP-Register ist dann Null, wenn zuvor keine Blöcke vorhanden waren oder wenn Blöcke vorhanden sind und der Aufzeichnungszeiger auf den letzten Abschnitt in den bestehenden Blöcken hinweist. In anderen Fällen ist das Auswahlzeigerregister nicht Null, und das Verfahren läuft weiter nach H in Fig. 14.
Wenn der Auswahlzeiger nicht gleich Null ist, dann weist der Auswahlzeiger auf den nächsten Block eines oder mehrerer Blöcke hin, und der Aufzeichnungszeiger liegt vor dem Auswahlzeiger. Die Aufzeichnung beginnt bei dem Aufzeichnungszeiger, muß jedoch vor Erreichen des Auswahlzeigers beendet werden. Somit wird in Fig. 14 bei 122 das Kurzzeitspeicherregister daraufhin untersucht, ob es leer ist. Ist dies der Fall, dann ist hier keine Möglichkeit eines Konfliktes gegeben, bei dem der Aufzeichnungszeiger bis an den Auswahlzeiger heran kommen könnte, so daß der Ablauf weiterführt nach G für eine fortgesetzte Aufzeichnung, wie dies noch beschrieben wird.
Ist der Kurzzeitspeicher nicht leer, dann muß bestimmt werden, ob der Text, der ursprünglich vor dem Speicherinhalt des Kurzzeitspeichers lag, erweitert worden ist, so daß er nicht länger in das einen Block enthaltende Segment paßt, welcher nach dem zuvor ausgewählten Block beginnt, der abgespeichert werden muß. Wenn also angenommen wird, daß der Kurzzeitspeicher nicht leer ist, dann wird bei 123 überprüft, ob zwischen dem Aufzeichnungszeiger und dem Auswahlzeiger genügend Speicherplatz für die Aufnahme des Blockes N vorhanden ist. Ist dies der Fall, dann kann die Aufzeichnung weitergehen nach D. Ist jedoch nicht genug Speicherplatz vorhanden, dann wird das zuvor in Verbindung mit Fig. 11 beschriebene Unterprogramm SCPAD (Kurzzeitspeicher) abgerufen. Durch Abrufen dieses Unterprogramms wird der Kurzzeitspeicher an die Systemliste und das Systemlog übertragen, so daß das gerade ablaufende Aufzeichnungsverfahren in den nunmehr unbenutzten Abschnitt des Aufzeichnungszeiger und Auswahlzeigersegments einschreiben kann.
Das Verfahren läuft weiter nach G in Fig. 15 oder würde bereits bei G angelangt sein, wenn in Fig. 13 bei 120 der Auswahlzeiger auf Null eingestellt worden wäre. Bei 126 wird das Abschnittsfeld des RP-Registers überprüft, um zu bestimmen, ob der Aufzeichnungszeiger nach dem Ende eines Segmentes weist. Ist dies der Fall, dann läuft das Verfahren weiter nach I, zu welchem Zeitpunkt ein weiteres Segment für die Aufzeichnung aufgefunden werden muß, wenn ein solches vorhanden ist. Zeigt jedoch der Aufzeichnungszeiger nicht auf das Ende eines Segmentes, dann wird bei 127 der Inhalt des Arbeitsspeichers 21 daraufhin überprüft, ob er Null ist. Dies ist ein Teil der Aufzeichnung, da bei der Überführung von Datenabschnitten und Segmenten vom benutzten zum nicht benutzten Zustand Daten vom Speicher 9 nach dem Arbeitsspeicher 21 übertragen und diese Daten dann im Arbeitsspeicher 21 gelöscht werden, worauf nach Löschen dieser Daten die Aufzeichnung angefordert wird.
Angenommen, daß Daten aus dem externen Speicher entfernt werden sollen, so daß der Speicherinhalt des Arbeitsspeichers 21 zu Null wird, dann geht der Ablauf bei 127 Fig. 15 nach J in Fig. 16. Bei 133 in Fig. 16 werden alle Abschnitte des Systemlogs des Verzeichnisses zwischen, jedoch nicht einschließlich der Position des Aufzeichnungszeigers und des Auswahlzeigers, auf unbenutzt eingestellt. Der Status irgendwelcher aufgezeichneter fehlerhafter Abschnitte zwischen Aufzeichnungszeiger und Auswahlzeiger wird nicht verändert. Bei 134 wird das Verzeichnis daraufhin durchsucht, ob in der Systemliste irgendwelche leeren Segmente vorhanden sind. Ist das der Fall, dann werden bei 135 diese Segmente aus der Systemliste entfernt, so daß das System sie als benutzbare leere Segmente betrachtet. Der Ablauf geht dann weiter nach L in Fig. 18. Enthält die Systemliste keine leeren Segmente, dann läuft das Verfahren unmittelbar zu L.
In Fig. 18 verbleibt nur noch, bei diesem Löschabschnitt der Aufzeichnung von Daten das Verzeichnis auf den neuesten Stand zu bringen und dieses berichtigte Verzeichnis im externen Speicher 9 abzuspeichern. Bei 148 wird ein Zähler Y auf Eins gesetzt, der die im externen Speicher 9 abgespeicherten Verzeichnisse zählt. Bei 149 wird der Aktivitätszähler ganz zu Beginn des Verzeichnisses im Arbeitsspeicher 21 um Eins erhöht. Bei 150 wird dann das Verzeichnis an dem für Verzeichnisse vorgesehenen Speicherplatz im Speicher 9 aufgezeichnet, der der augenblicklichen Position des dem Speicher 9 zugeordneten Lese/Schreibkopfes am nächsten liegt. Wenn bei 151 während der Aufzeichnung eines Verzeichnisses keine Aufzeichnungsfehler vorkommen, dann geht das Verfahren wieder an den Benutzer zurück. Tritt bei 151 ein Aufzeichnungsfehler auf, dann wird bei 152 der Zähler Y um Eins im Zählerstand erhöht, und es wird bei 153 bestimmt, ob der Zählerstand im Zähler Y die Anzahl der Verzeichnisse X überschreitet. Ist dies nicht der Fall, dann gibt es weitere Aufzeichnungsplätze für Verzeichnisse im Speicher 9, und es wird bei 154 ein neuer Versuch unternommen, das Verzeichnis in der nächsten besonders zugeordneten Aufzeichnungsfläche für Verzeichnisse abzuspeichern. Ist Y größer als X, dann gibt es keine weiteren Aufzeichnungsflächen für Verzeichnisse, und dem Benutzer wird mitgeteilt, daß die Verzeichnisse fehlerhaft sind und daß der externe Speicher nicht länger benutzbar ist.
In Fig. 15 war die unmittelbar vorhergegangene Diskussion auf die Löschung bei der Aufzeichnung gerichtet worden, wenn bei 127 M gleich Null ist. Es sei nunmehr angenommen, daß aus dem Arbeitsspeicher 21 Text nach dem externen Speicher 9 zurückübertragen werden soll, wobei M nicht gleich Null ist. Der Aufzeichnungszeiger wird nunmehr auf Aufzeichnung eingestellt, und bei 128 wird, beginnend mit dem ersten auf den Aufzeichnungszeiger folgenden Abschnitt soviel von den im Arbeitsspeicher 21 enthaltenen Daten aufgezeichnet, als auf den nicht fehlerbehafteten Abschnitten des durch das Segmentfeld des Aufzeichnungsträgers ausgewiesenen Segmentes möglich ist. Die Aufzeichnung wird dann unmittelbar vor dem durch das Aufzeichnungsfeld des Aufzeichnungszeigers bezeichneten Abschnitt gehalten, wenn der Aufzeichnungszeiger in diesem Segment angetroffen wird. Bei 129 werden die neu in dem Speicher 9 aufgezeichneten Daten auf Fehler überprüft. Sind keine Aufzeichnungsfehler vorhanden, dann wird das Unterprogramm "Berichtigen" bei 130 abgerufen.
Das Berichtigungsprogramm läuft gemäß Fig. 21 ab, wobei das Register M bei 176 um die soeben aufgezeichnete Datenmenge verringert wird (die Anzahl der Abschnitte von Daten im Arbeitsspeicher 21). Bei 177 wird die Arbeitsspeicheradresse B um die soeben aufgezeichnete Datenmenge erhöht. Die Systemaufzeichnung wird berichtigt und gibt damit die neuen Daten oder Daten- und Blockanfangsabschnitte an, die bei der Aufzeichnung benutzt wurden. Schließlich wird bei 179 das Abschnittsfeld des RP-Registers auf den letzten Abschnitt, auf dem eine Aufzeichnung versucht wurde, eingestellt, unabhängig davon, ob dies ein Fehlerabschnitt war oder nicht. Zu diesem Zeitpunkt geht das Verfahren wieder nach 131 in Fig. 15.
Es sei angenommen, daß bei 129 Fig. 15 in den soeben aufgezeichneten Daten Fehler aufgetreten sind. Das Verfahren läuft dann weiter nach K Fig. 17. Zunächst wird bei 138 das Unterprogramm SCPAD (Kurzzeitspeicher) abgerufen, das in Fig. 11 gezeigt und zuvor beschrieben wurde. Ist der Kurzzeitspeicher leer, dann läuft das Verfahren unmittelbar nach 139, und ist der Kurzzeitspeicher nicht leer, dann wird das Kurzzeitspeichersegment in das Verzeichnis eingebracht, und das Verfahren geht weiter bei 139. Wenn bei 139 weitere zusätzliche leere Segmente im Speicher 9 vorhanden sind, dann wird das Unterprogramm ERRUP (Fehlerberichtigung) abgerufen.
In Fig. 22 beginnt das Unterprogramm ERRUP bei 182 durch Berichtigung des Systemlogs des Verzeichnisses zur Kennzeichnung des Fehlerabschnitts. Für jeden aufgezeichneten Fehlerabschnitt wird bei 183 der Fehlerabschnittszähler um Eins erhöht. Bei 184 wird überprüft, ob der Inhalt des Fehlerzählers gleich dem Fehlergrenzwert ist. Der Fehlergrenzwert ist eine vorbestimmte Zahl, die um Eins größer ist als die Anzahl der Fehlerabschnitte, die ohne Warnung an den Benutzer zulässig sind. Wird dieser Grenzwert erreicht, dann wird bei 185 der Benutzer benachrichtigt, daß der Fehlergrenzwert erreicht ist. Nach dieser Benachrichtigung oder wenn der Zählerstand den Grenzwert nicht erreicht hat, geht das Verfahren wieder bei Fig. 17 bei G an den Anrufer zurück. Dann werden bei Fig. 15 weitere Aufzeichnungsversuche unternommen, falls das angezeigt ist.
In Fig. 17 sei bei 139 angenommen, daß keine weiteren leeren Segmente vorhanden sind. Dann wird bei 140 geprüft, ob für den aufzuzeichnenden Block n ein Blockanfang aufgezeichnet ist. Ist der Blockanfang aufgezeichnet, dann wird das Unterprogramm ERRUP in Fig. 22 abgerufen. Am Ende dieses Unterprogramms werden keine weiteren Versuche zur Aufzeichnung von Daten unternommen, und der Benutzer wird bei 144 davon in Kenntnis gesetzt, daß nicht alle aufzuzeichnenden Daten aufgezeichnet worden sind. Dann läuft das Verfahren weiter nach L in Fig. 18, so daß das Verzeichnis berichtigt und erneut im Speicher 9 abgespeichert werden kann. Wenn bei 140 ein Blockanfang für den Block N nicht aufgezeichnet ist, dann wird das Abschnittsfeld des Aufzeichnungszeigers auf den nächstfolgenden Abschnitt dieses Segments bei 142 eingestellt, und es wird bei 143 zwangsweise ein Blockanfang eingeleitet. Das verhindert den Verlust von Blockanfängen und die damit zusammenhängende Umnumerierung von nachfolgenden Blöcken.
Nunmehr soll der Ablauf nach Fig. 15 ab I besprochen werden, wenn für die Aufzeichnung ein anderes Segment angesteuert werden muß. Gemäß Fig. 19 wird bei 158 die Systemliste des Verzeichnisses daraufhin untersucht, ob ein in der Systemliste enthaltenes Segment hinter dem durch das Segmentfeld des RP-Registers bezeichneten Segment liegt. Ist dies der Fall, dann wird bei 149 bestimmt, ob dieses dahinterliegende Segment für eine Aufzeichnung zur Verfügung steht. Ein dahinter liegendes Segment wird dann als für eine Aufzeichnung zur Verfügung stehend angenommen, wenn 1. der Segmentabschnitt des SP-Registers nicht auf dieses nächstfolgende Segment hinweist und wenn 2. das nächstfolgende Segment keine Blockanfänge enthält. Steht dieses nächstfolgende Segment zur Verfügung, dann wird bei 160 der Segmentabschnitt des RP-Registers auf die laufende Nummer des nächstfolgenden Segments eingestellt, und das Abschnittsfeld des RP-Registers wird auf Null gebracht. Damit kann die Aufzeichnung vom Anfang dieses nächstfolgenden Segments an gemäß der Arbeitsweise fortgesetzt werden, wie sie bei G in Fig. 15 beginnt.
Ist das nächstfolgende Segment für eine Aufzeichnung nicht verfügbar, dann wird bei 161 der Inhalt des Kurzzeitspeicherregisters überprüft. Ist der Kurzzeitspeicher nicht frei, dann wird bei 160 für die Nichtaufzeichnung in dem nicht zur Verfügung stehenden nächsten Segment eine Ausnahme gemacht. An diesem Punkt wird das Segementfeld des RP-Registers auf das nächstfolgende Segment und das Abschnittsfeld des RP-Registers auf Null eingestellt, so daß die Aufzeichnung nach G fortfahren kann. Dieses Segment wird dann zur Aufzeichnung benutzt, da der Kurzzeitspeicher später mit eingebracht werden kann, wenn dies wegen Fehlern bei der Aufzeichnung in diesem nächstfolgenden Segment nötig werden sollte.
Wenn bei 161 der Kurzzeitspeicher leer ist, dann wird bei 162 das Verzeichnis daraufhin überprüft, ob leere Segmente vorhanden sind. Wenn ein leeres Segment vorhanden ist, dann wird das leere Segment in die Systemliste hinter dem laufenden RP-Segment aufgenommen, und das Verfahren läuft weiter bei 160, wie oben beschrieben. Ist kein leeres Segment vorhanden, dann läuft das Verfahren weiter nach I 2 in Fig. 20. Vor Verlassen der Fig. 19 sei darauf hingewiesen, daß bei 158 dann, wenn in der Systemliste hinter dem RP-Segment kein Segment liegt, das Verfahren nach 162 springt und dort bestimmt, ob ein leeres Segment vorhanden ist oder nicht. Dies ist der Fall, bei dem der Aufzeichnungszeiger auf das letzte Segment in der Systemliste hinweist.
Gemäß Fig. 20 bei I 2 wird bei 166 der zwischen dem Aufzeichnungszeiger und dem Auswahlzeiger und ohne diese beiden Zeiger vorhandene Speicherplatz berechnet. Ist der Auswahlzeiger auf Null gestellt, dann ist definitionsgemäß der Speicherplatz gleich Null. Wenn bei 167 der Speicherplatz Null ist, dann läuft das Verfahren nach K 1 in Fig. 17. In diesem Fall wird der Benutzer davon in Kenntnis gesetzt, daß nicht alle Daten aufgezeichnet sind und das Verfahren mit der Berichtigung des Verzeichnisses und der Wiedereinspeicherung des berichtigten Verzeichnisses im Speicher 9 fortgesetzt wird. Wenn der im Speicher 9 zwischen Aufzeichnungszeiger und Auswahlzeiger liegende Speicherraum größer als M ist (Inhalt des Arbeitsspeichers 21), dann geht das Verfahren weiter nach I 1 Fig. 19. Von dort läuft das Verfahren nach 160 Fig. 19, wie bereits beschrieben. Wenn in Fig. 20 bei Block 168 der im Speicher 9 zwischen Aufzeichnungszeiger und Auswahlzeiger liegende Platz kleiner ist als der Speicherinhalt des Arbeitsspeichers 21, dann wird bei 169 der Benutzer davon in Kenntnis gesetzt, daß nicht alle Daten aufgezeichnet sind, worauf das Verfahren weiter nach 170 läuft, wo M dann auf den berechneten Speicherplatz eingestellt wird. Das Verfahren geht dann weiter nach I 1 Fig. 19. In Fig. 19 wird das Aufzeichnungszeigersegmentfeld auf das nächstfolgende Segment eingestellt und das Abschnittsfeld des Aufzeichnungszeigers auf Null. Das Verfahren geht dann weiter nach G in Fig. 15 für eine Fortsetzung der Aufzeichnung vom Aufzeichnungszeiger nach dem Auswahlzeiger. Das System hält dann an, bevor der Aufzeichnungszeiger den Auswahlzeiger überläuft.
Zusammenfassend kann gesagt werden, daß ein System und ein Verfahren zum Speichern und Abrufen von Textblöcken und deren Abschnitten für ein Textverarbeitungssystem geschaffen wurden. Diese Textblöcke die normalerweise Seiten eines Dokumentes darstellen, sind als Folge von nicht näher bezeichneten Abschnitten unterschiedlicher Größe auf Segmenten eines seriellen Massenspeichers abgespeichert. In dem System wird eine möglichst hohe Ausnutzung des normalerweise nicht benutzten Systemspeicherraumes dadurch versucht, daß die Speicherblöcke auf einem Speichersegment dicht gepackt werden. Ein Systemverzeichnis mit einer Systemliste und einem Systemlog liegt in einem Speicher des Systems mit wahlfreiem Zugriff und wird auf dem segmentierten externen Speicher aufgezeichnet. Das Systemlog wird jedesmal dann in dem externen Speicher aufgezeichnet, wenn auch dort Daten aufgezeichnet werden. Zur Verkürzung der Zugriffszeit während der Aufzeichnung und für erhöhte Zuverlässigkeit wird das Systemlog an mehreren Orten, die nicht nebeneinander liegen, auf dem Speicher aufgezeichnet. Das am nächsten liegende Systemlog wird bei jeder Datenspeicherung auf den neuesten Stand gebracht. Das Systemlog enthält einen Aktivitätszähler, der bei jeder Berichtigung entsprechend fortgeschrieben wird, so daß beim Systemanlauf das zuletzt benutzte und daher richtige Systemlog wieder aufgefunden werden kann.
Dieses Systemlog enthält eine Aufzeichnung von Speicherabschnitten mit nicht korrigierbaren Fehlern, so daß kein weiterer Versuch zur Benutzung dieser Abschnitte unternommen wird. Außerdem wird eine Zählung dieser fehlerhaften Abschnitte aufrechterhalten, und das Textverarbeitungssystem wird benachrichtigt, wenn dieser Zählerstand einen vorbestimmten Wert erreicht hat.
Bei Zugriff zu einem ausgewählten Datenblock sucht das System alle Daten, die auf den ausgewählten Block im gleichen Segment folgen, in dem der ausgewählte Block endet, auf. Diese in Konflikt miteinander stehenden Daten werden vor dem ersten Lesen des angeforderten Blockes rückgespeichert, wobei diese Rückspeicherung über einen Pufferspeicher mit wahlfreiem Zugriff erfolgt, in dem letztlich die angeforderten Daten liegen werden. Diese Daten werden nach einem anderen Speichersegment zurückgespeichert, das zunächst in der Systemliste nicht enthalten ist. Diese zurückgespeicherten Daten werden dann nicht vom Systemlog erfaßt, wenn 1.) dies nicht tatsächlich erforderlich ist, nachdem die ursprünglich angeforderten und berichtigten Daten wieder im externen Speicher abgesperrt worden sind und 2.) solange nicht Fehler auftreten bei dem Versuch, die angeforderten Daten auf dem Segment, von dem sie ursprünglich kamen, wieder abzuspeichern, oder 3.) wenn der auf den ursprünglich angeforderten Block nachfolgende Block ebenfalls ausgewählt wird. Lassen sich die Daten nicht zurückspeichern, dann wird trotzdem der Zugriff nach diesem Datenblock durchgeführt, und das System wird von dieser Bedingung in Kenntnis gesetzt. Das nicht in das Systemlog überführte Segment wird als Kurzzeitspeicher bezeichnet. Alle Daten, die bei der Rückspeicherung nicht gelesen werden, werden in diesem Kurzzeitspeicher durch unverwechselbare Fehlercodes dargestellt. Somit werden bei der Rückspeicherung alle Blockanfänge festgehalten.
Wenn der Arbeitsspeicher nicht den ganzen angeforderten Block annehmen kann, dann wird eine Teilauswahloperation verwendet, und es werden dabei so viele Abschnitte des Blockes übertragen, als es in dem Arbeitsspeicher des Textverarbeitungssystems vollständige, ganzzahlige Abschnitte gibt, und zwar findet eine Übertragung vom externen Speicher nach dem Arbeitsspeicher statt, worauf anschließend der Rest des Blockes nach dem Arbeitsspeicher des Textverarbeitungssystems übertragen wird, wenn dieser Arbeitsspeicher wieder Platz zur Aufnahme von weiteren Textdaten aufweist.
Die Segmente werden dadurch zusammengerückt, daß zunächst ein Block gelesen und anschließend der Block ohne Berichtigung zwischen Lesen und Aufzeichnen wieder aufgezeichnet wird. Auf diese Weise werden nicht benutzte Abschnitte zur Bildung vollständiger nicht benutzter Segmente verschoben, so daß diese unbenutzten Segmente aus der Systemliste entfernt werden können.

Claims (3)

1. Einrichtung zum Steuern einer Textverarbeitungsmaschine, mit einer Steuereinrichtung, einem Textpufferspeicher sowie einer Steuerschaltung zur Steuerung der Abspeicherung von Daten hinsichtlich beschriebener und freier Blöcke und mit einem seriellen Speicher, der ein Speichermedium aufweist, das in Segmente und innerhalb der Segmente in Abschnitte unterteilt ist, wobei während des Speicherns und Lesens von Text ein Protokoll mit Daten geführt wird, das für den Inhalt aller Segmente und Abschnitte indikativ ist, dadurch gekennzeichnet, daß an die Steuereinrichtung (3, 1; Fig. 1) eine Speichersteuerung (18) angeschlossen ist, die einen Speicher mit wahlfreiem Zugriff (21) sowohl mit der genannten Steuereinrichtung, als auch mit einer Direktspeicherzugriffssteuerung (13) verbindet, welch letztere den seriellen Speicher (9) für segmentierte Speichermedien steuert, wobei für den Datentransport zwischen den Speichern zur Speicherung von Textdaten und Maschinenprotokolldaten in den bestimmten Abschnitten und Segmenten ein Lese-/Schreibwandler vorgesehen ist, und daß eine Steuerschaltung vorgesehen ist, die nach Beendigung der Speicherung redigierter Textdaten anschließend an die Anfangsspeicherung von Prüfdaten die Speicherung der neuesten Maschinenprotokolldaten auf einem der vorbehaltenen Abschnitte, und zwar auf jenem, der örtlich einem Schreib-/Lesewandler am nächsten liegt, vornimmt.
2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß ferner eine Vorrichtung (1, 9) vorgesehen ist, die innerhalb der Maschinenprotokolldaten Benutzungszahlen speichert und jedes Mal die Benutzungszahlen um 1 erhöht. Wenn Textdaten auf dem Speichermedium gespeichert werden.
3. Einrichtung nach Anspruch 1 und/oder 2, dadurch gekennzeichnet, daß eine Vorrichtung (13, 15, 16) zur Übertragung von in den Abschnitten der Segmente eines segmentierten Speichers (9 ) gespeicherten Textdaten zu dem Speicher (21) einer Textverarbeitungsmaschine mit einer Vorrichtung (11, 13) zur Ansteuerung eines Abschnittes des segmentierten Speichers, mit einer Vorrichtung zum Lesen von Daten aus den erwähnten Abschnitten, mit einer Vorrichtung zum Schreiben von Daten, die aus den erwähnten Abschnitten gelesen wurden, in den Speicher (21) der Textverarbeitungsmaschine, mit einer Vorrichtung zur Prüfung der Daten, die in den Speicher (21) der Textverarbeitungsmaschine geschrieben wurden, auf Fehler und mit einer Vorrichtung zum Auffinden eines Lesefehlers in den Daten, die in den Speicher der Textverarbeitungsmaschine geschrieben wurden und zum Überschreiben der genannten Daten mit Fehlercodes in einer Anzahl, die der Anzahl der möglichen Codes entspricht, die in einem Abschnitt speicherbar sind, vorgesehen ist.
DE19782801981 1977-01-25 1978-01-18 Verfahren zum steuern einer textverarbeitungseinrichtung beim speichern und lesen von text Granted DE2801981A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/762,379 US4189781A (en) 1977-01-25 1977-01-25 Segmented storage logging and controlling

Publications (2)

Publication Number Publication Date
DE2801981A1 DE2801981A1 (de) 1978-07-27
DE2801981C2 true DE2801981C2 (de) 1988-04-14

Family

ID=25064877

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19782801981 Granted DE2801981A1 (de) 1977-01-25 1978-01-18 Verfahren zum steuern einer textverarbeitungseinrichtung beim speichern und lesen von text

Country Status (9)

Country Link
US (1) US4189781A (de)
JP (2) JPS5393733A (de)
AU (1) AU513551B2 (de)
BR (1) BR7800454A (de)
CA (1) CA1187197A (de)
CH (1) CH629901A5 (de)
DE (1) DE2801981A1 (de)
ES (1) ES466291A1 (de)
NL (1) NL7800768A (de)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5779577A (en) * 1980-11-05 1982-05-18 Toshiba Corp Retrieval device for picture information storage
CA1226369A (en) * 1983-10-19 1987-09-01 Louie D. Tague Method and apparatus for data compression
US5159669A (en) * 1988-12-15 1992-10-27 Xerox Corporation Automatically creating a second workspace operation record including history data and a unit ID based on a first workspace operation
EP0405859B1 (de) * 1989-06-30 1997-09-17 Digital Equipment Corporation Verfahren und Anordnung zur Steuerung von Schattenspeichern
EP0465019B1 (de) * 1990-06-29 1997-05-14 Oracle Corporation Verfahren und Gerät zur Verwaltung von Zustandsidentifizierern zur effizienten Wiederherstellung
US6239794B1 (en) * 1994-08-31 2001-05-29 E Guide, Inc. Method and system for simultaneously displaying a television program and information about the program
US5890699A (en) * 1994-02-10 1999-04-06 Nippondenso Co., Ltd. Fluid flow control rotary valve
US8793738B2 (en) 1994-05-04 2014-07-29 Starsight Telecast Incorporated Television system with downloadable features
US6396546B1 (en) * 1994-05-20 2002-05-28 United Video Properties, Inc. Electronic television program guide schedule system and method
US20050204384A1 (en) * 1994-08-31 2005-09-15 Gemstar Development Corporation Method and apparatus for displaying television programs and related text
US6769128B1 (en) * 1995-06-07 2004-07-27 United Video Properties, Inc. Electronic television program guide schedule system and method with data feed access
US5894564A (en) * 1995-06-07 1999-04-13 International Business Machines Corporation System for identifying memory segment bounded by previously accessed memory locations within data block and transferring thereof only when the segment has been changed
US6323911B1 (en) 1995-10-02 2001-11-27 Starsight Telecast, Inc. System and method for using television schedule information
US8850477B2 (en) 1995-10-02 2014-09-30 Starsight Telecast, Inc. Systems and methods for linking television viewers with advertisers and broadcasters
US5940073A (en) 1996-05-03 1999-08-17 Starsight Telecast Inc. Method and system for displaying other information in a TV program guide
US8635649B2 (en) * 1996-12-19 2014-01-21 Gemstar Development Corporation System and method for modifying advertisement responsive to EPG information
US6687906B1 (en) 1996-12-19 2004-02-03 Index Systems, Inc. EPG with advertising inserts
JP4062577B2 (ja) 1997-07-21 2008-03-19 ジェムスター ディベロプメント コーポレイション 表示及び記録制御インタフェースのためのシステム及び方法
US6604240B2 (en) 1997-10-06 2003-08-05 United Video Properties, Inc. Interactive television program guide system with operator showcase
US7185355B1 (en) 1998-03-04 2007-02-27 United Video Properties, Inc. Program guide system with preference profiles
US6564379B1 (en) 1998-04-30 2003-05-13 United Video Properties, Inc. Program guide system with flip and browse advertisements
US20020095676A1 (en) * 1998-05-15 2002-07-18 Robert A. Knee Interactive television program guide system for determining user values for demographic categories
TW420777B (en) * 1998-05-29 2001-02-01 Bridgewell Inc A query method of dynamitic attribute database management
CN1867068A (zh) 1998-07-14 2006-11-22 联合视频制品公司 交互式电视节目导视系统及其方法
US6898762B2 (en) 1998-08-21 2005-05-24 United Video Properties, Inc. Client-server electronic program guide
WO2001001678A1 (en) 1999-06-28 2001-01-04 Index Systems, Inc. System and method for utilizing epg database for modifying advertisements
AU5775900A (en) 1999-06-29 2001-01-31 United Video Properties, Inc. Method and system for a video-on-demand-related interactive display within an interactive television application
US20010047298A1 (en) 2000-03-31 2001-11-29 United Video Properties,Inc. System and method for metadata-linked advertisements
US6681309B2 (en) * 2002-01-25 2004-01-20 Hewlett-Packard Development Company, L.P. Method and apparatus for measuring and optimizing spatial segmentation of electronic storage workloads
US7984468B2 (en) 2003-11-06 2011-07-19 United Video Properties, Inc. Systems and methods for providing program suggestions in an interactive television program guide
US8640166B1 (en) 2005-05-06 2014-01-28 Rovi Guides, Inc. Systems and methods for content surfing
US8095951B1 (en) 2005-05-06 2012-01-10 Rovi Guides, Inc. Systems and methods for providing a scan
US9113107B2 (en) 2005-11-08 2015-08-18 Rovi Guides, Inc. Interactive advertising and program promotion in an interactive television system
US20070156521A1 (en) 2005-12-29 2007-07-05 United Video Properties, Inc. Systems and methods for commerce in media program related merchandise
US7792815B2 (en) 2006-03-06 2010-09-07 Veveo, Inc. Methods and systems for selecting and presenting content based on context sensitive user preferences
US8316394B2 (en) 2006-03-24 2012-11-20 United Video Properties, Inc. Interactive media guidance application with intelligent navigation and display features
US7985134B2 (en) 2006-07-31 2011-07-26 Rovi Guides, Inc. Systems and methods for providing enhanced sports watching media guidance
US8832742B2 (en) 2006-10-06 2014-09-09 United Video Properties, Inc. Systems and methods for acquiring, categorizing and delivering media in interactive media guidance applications
US7801888B2 (en) 2007-03-09 2010-09-21 Microsoft Corporation Media content search results ranked by popularity
US8407737B1 (en) 2007-07-11 2013-03-26 Rovi Guides, Inc. Systems and methods for providing a scan transport bar
US10063934B2 (en) 2008-11-25 2018-08-28 Rovi Technologies Corporation Reducing unicast session duration with restart TV
US9166714B2 (en) 2009-09-11 2015-10-20 Veveo, Inc. Method of and system for presenting enriched video viewing analytics
US8359616B2 (en) 2009-09-30 2013-01-22 United Video Properties, Inc. Systems and methods for automatically generating advertisements using a media guidance application
US8479062B2 (en) 2010-12-03 2013-07-02 International Business Machines Corporation Program disturb error logging and correction for flash memory
US9736524B2 (en) 2011-01-06 2017-08-15 Veveo, Inc. Methods of and systems for content search based on environment sampling
US9848276B2 (en) 2013-03-11 2017-12-19 Rovi Guides, Inc. Systems and methods for auto-configuring a user equipment device with content consumption material

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781813A (en) * 1971-06-30 1973-12-25 Ibm Machine log system
US3997876A (en) * 1972-06-07 1976-12-14 International Business Machines Corporation Apparatus and method for avoiding defects in the recording medium within a peripheral storage system
US3942155A (en) * 1973-12-03 1976-03-02 International Business Machines Corporation System for packing page frames with segments
US3911403A (en) * 1974-09-03 1975-10-07 Gte Information Syst Inc Data storage and processing apparatus

Also Published As

Publication number Publication date
BR7800454A (pt) 1978-10-03
JPS5943787B2 (ja) 1984-10-24
CH629901A5 (de) 1982-05-14
JPS5393733A (en) 1978-08-17
US4189781A (en) 1980-02-19
DE2801981A1 (de) 1978-07-27
AU3098077A (en) 1979-05-31
JPS5911462A (ja) 1984-01-21
AU513551B2 (en) 1980-12-11
NL7800768A (nl) 1978-07-27
JPS6148182B2 (de) 1986-10-23
ES466291A1 (es) 1978-10-01
CA1187197A (en) 1985-05-14

Similar Documents

Publication Publication Date Title
DE2801981C2 (de)
DE3131341C2 (de)
DE60032531T2 (de) Aufzeichnungsverfahren, Verwaltungsverfahren und Aufzeichnungsgerät
DE69821426T2 (de) Speicheranordung, und Datenverarbeitungssystem und -Verfahren
DE1499182B2 (de) Datenspeichersystem
DE2801982A1 (de) Verfahren zum austausch von information zwischen einem externen speicher und einem arbeitsspeicher in einem textverarbeitungssystem
DE2523414B2 (de) Hierarchische Speicheranordnung mit mehr als zwei Speicherstufen
DE3718218A1 (de) Bilddaten-verarbeitungsgeraet mit aufbereitungsfunktion
DE3148773A1 (de) Verfahren zum wiederauffinden und aufbereiten verteilter information
DE2122338A1 (de) Schaltungsanordnung zur Steuerung des Datenflusses in Datenverarbeitungsanlagen
DE2421229A1 (de) Digitales datenverarbeitungssystem
DE2432608A1 (de) Speicheranordnung fuer datenverarbeitungseinrichtungen
DE1524788C3 (de) Schaltungsanordnung zum Erkennen und zum automatischen Ersetzen von schadhaften Speicherstellen in Datenspeichern
DE60037004T2 (de) Aufzeichnungsmedium mit schreibgeschützter defektliste
DE2422732C2 (de) Hierarchische Speicheranordnung
DE3804261C2 (de)
DE19827637A1 (de) Sicherungsverfahren für Betriebsdaten eines Netzelementes und Steuerungseinrichtung für ein Netzelement
DE3039285A1 (de) Datenspeicher-anordnung und datenspeicherverfahren
CH625895A5 (de)
EP0964335A2 (de) Verfahren zum gesicherten Ändern von in einer Datenbank gespeicherten Daten, Datenbanksystem und damit ausgestattetes Netzelement
DE69936674T2 (de) Speicherteilsystem und Verfahren zur Reorganisierung von multiplexierten Daten
DE2801989A1 (de) Verfahren zum steuern der abspeicherung eines textes in einem textverarbeitungssystem
EP0151789A2 (de) Speicherungsverfahren für eine in Fernmeldeanlagen, insbesondere Fernsprechvermittlungsanlagen eingesetzte Speichereinrichtung
DE102016202684B4 (de) Datenmanagementvorrichtung und datenmanagementprogramm
EP1559111B1 (de) Verfahren zum betreiben einer speicheranordnung

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 7/28

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee