CA1171546A - Word processor and display - Google Patents

Word processor and display

Info

Publication number
CA1171546A
CA1171546A CA000402510A CA402510A CA1171546A CA 1171546 A CA1171546 A CA 1171546A CA 000402510 A CA000402510 A CA 000402510A CA 402510 A CA402510 A CA 402510A CA 1171546 A CA1171546 A CA 1171546A
Authority
CA
Canada
Prior art keywords
function
cursor
text
display
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
CA000402510A
Other languages
French (fr)
Inventor
Beth R. Hopper
Dan M. Howell
Robert A. Kolpek
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
Application granted granted Critical
Publication of CA1171546A publication Critical patent/CA1171546A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/106Display of layout of documents; Previewing

Abstract

WORD PROCESSOR AND DISPLAY
ABSTRACT OF THE DISCLOSURE

A word processor supports two display modes, one un-formatted mode comprising display of a partial page and another formatted mode displaying format of an entire page of text. Both modes impose minimal burden on the display allowing use, for example, of standard display chips with a variety of monitors including a standard TV set or TV
monitor. Other advanced functions include simple addition, movement and deletion of text units or blocks; simplified underscore, underscore deletion, word underscore and word underscore deletion; and an uncluttered insert display re-gardless of the extent of inserted text. The hyphenate function is improved by informing the operator, via the dis-play, of the relation between, not only the right margin and the hyphenate candidate, but also the relation between the hyphenate candidate and the actual preceding line en-dings.

Description

5~

IIORD PROCESSOR AN~ DISPIAY
FIELD OF T~IE INVEN~ION
i The present invention relates to text manipu~ating devices or word processors arranged to respond to operator selected text and format for ultimately produclng documents, but at an intermediate state for producing a visible image to assist the operator in selection and formating decisions especially during editing. The present invention is more particularly directed to those ~ord proce~sors which include displays (such as for example, cathode ray tubes) having the capability of producing a visible image of multiple lines of text, although it should be apparent that the invention can be employed in general purpose digital processors to effect word processing functions.

BACKGROU~D OF THE INVENTION

There are, at the present time, a wide variety of commercially available devices within the field of the invention and the capability of these devices is truly remarkable. They can be characterized as including a keyboard with a plurality of keys thereon (similar to a typewriter). Depression of one or a combination of keys generates a unique coded signal (or keycode) which has the effect of providing a particular graphic or executing a function (such as carrier return, tab, etc.) with corresponding code storage; the keyboard forms one of -the two major input capabilities. The other input capability is provided by a device for reading/recording on replaceable media; typically today, that media is magnetic, in the form of a card, tape or disc. Devices within the field of the invention also include some type of printing arrangement for printing with an impact, ink ~et or other prin-ter, a document including multiple lines of text in operator selected format; typically the document is the final desired product. Another ,.. .

LE979~024 output capability is provided by the display (usually an electronic display such as a cathode ray tube) which is capable of displaying a visible image made up of multiple lines each with multiple character locations. Responding to the input devices and controlling the output devices, is typically a microcomputer (although mini-computers and even main frame computers can also be used~.
Notwithstanding the truly remarkable capability of devices currently available, there is a desire for further improvement. One very important area in which improvement can be obtained is that relating to the electronic display where a number of trade-offs have been made in the past.
Some devices have what is termed "full page" display capa-bility in that the electronic display is capable of dis-; lS playing up to 65 lines of text (which can be considered to constitute an entire page). Since it is the purpose of the electronic display to enable the operator to preview what the printer would produce if it were initiated into action, it was believed essential that the operator be able to distinguish, on the electronic display, all the variouscharacters which the printer is capable of producing. This implies a certain minimal level of visible resolution. This resolution requirement coupled with the capability of dis--playing up to 66 lines of text, each line including gener--ally 80 to 100 characters or more, dictates size of the ; electronic display, and this size carries with it cost and space requirements that it is one objective of the invention to improve. Other devices within the field of the invention include electronic displays which are incapable of dis-playing a so-called full page of text, and typically these electronic displays produce a visible image consisting of from 6 to about 30 lines of text. Obviously, with this reduced requirement, the size of the electronic display can be relaxed without sacrificing resolution. Since, however, this electronic display does not produce an image corres--ponding to an entire "page" it is impossible for the oper-ator to accurately preview the appearance of an entire page.

~979-024 ~1'7~

The prior art does illustrate prior approaches to the solution of this problem. Fackler et al, in, "Light Emit-ting Diode Editing Display" IBM TDB, Vol. 22 No. 7 December 1979, pp2614-16 illustrates how two rows of vibrating LED's may be used to display a fully readable single line of text and an associated image of a full page of text displayed at a resolution inadequate for resolution of each character bul adequate ~or format presentation. Other suggestions direc ed at CRT displays are Bringol,"Abbreviated Character Font Display", IBM TDB, Vol. 19 No. 9 February 1977 pp3248-49; Webb, "Combination of Alphanumeric and Formatting Data ; on CRT Display" IsM TDB Vol. 15.No. 7 December 1972 and Lindsay, "Segmented Display" IBM TDs, Vol. 14 No. 5 October 1971, ppl528-29. Bringol illustrates a new font which can give a viewer quick access to a particular portion of a page without`actually displaying text. Webb illustrates a CRT
display which, in addition to displaying a few (-3) lines or line portions of text simultaneously displays format infor-mation to locate the displayed line portions. Finally, Lindsey shows how a display of 40-70 characters in length can be used to access varioùs line segments as selected by an operator for editing.
In addition, U~S. Patent 4,168,489 discloses Full Page Mode System for Certain Word Processing Devices which allows a full page of text to be displayed on a 10x5 inch screen which is generally considered too small for displaying a full page of text. This is accomplished by displaying only five of the fourteen dot rows per character vertically and reducing the current to the CRT horizontal deflection cir-cuit by a factor of three by switching an inductor into thedeflection circuit. Sea also Haak Patent 4,230,974. The assignee of patent 4,168,489 announced a video type 1000 which has one mode of display with a 23 line capacity, b~t has another mode for displaying 66 lines on the same 10x5 inch CRT.

It is thus one ~bject of the present invention to pro-vide a display which is of the size normally associated with ~-`'79~024 '~ 5~6 - less than full page displays, but which is capahle of giving the operator an accurate preview of what the printer would produce.
.
Commercially available electronic displays and compon--ents can he arrayed in a spectrum of relatively simple devices having relatively limited resolution, up to more complex, bigger and more expensive de~ices wi~h increasing resolution. At the lower end of the spectrum is a standard TV set and a standard TV monitor, which is identical to a standard TV set with the radio frequency circuitry elimin-ated. As is well known to those skilled in the art, charac-ters can be displayed on an ordinary cathode ray tube screen by employing coded signals each character being associated with a different code. A character generator is provided ~` lS which responds to different codes and generates video signals capable of causing a dot-like image of associated characters to be displayed. Commercially available componentry includ-es video control integrated circuits for controlling the interaction of such a character generator, and horizontal and vertical synchronizing signal~ to convert a string of coded signals representing characters into a video signal which, when displayed on a cathode ray tube will portray a visible image comprising a sequence of the characters cor- -responding to the sequence of coded signals. -The commer-cially available integrated circuits are, however7 con-figured to be compatible with the resolution of standard TV
sets, 50 that the number of characters per line and number of lines per screen is limited to less than the number of ; character spaces per typical line of text, and less than the numher of typical lines per page. It is another object of the present invention to enable the foregoing capability, i.e., that of giving the operator the benefit of a full page preview from an electronic display whose area is inadequate to display a full page of text with adequate resolution, and to achieve this object using commercially available cathode ray tube integrated circuits (chips).

``~79-024 ~:~7~S4~

Another area of improvement relates to the insertion and deletion of the underscore symbol. Present technology complicates the insertion or deletion of the underscore symbol especially when the insertion or deletion is to be effected without disturbing pre-existing character symbols.
In addition it is desirahle to allow insertion or deletion of multiple underscore symbols, relative to pre-existing character symbols with a minimum of operator action.

Present day technology allows the operator to change format of existing text by altering margins relative to pa1e boundaries. However, it is also desirable to allow the operator to alter the relationship of the text to existing page boundaries without altering the format of the text relative to itself.

To assist the operator in editing functions it is common to use a cursor symbol on a display to indicate ; exactly where in existing text any editing will be accom-plished. To vary the editing location to any selected location of pre-existing text the operator has available on the keyboard, cursor positioning controls to allow the operator to move the cursor position to the desired editing location. However, it is sometimes necessary to position the cursor with respect to a rectangular grid as opposed to pre-existing text. It is therefore desirable to allow the operator to readily identify cursor position with respect to such a rectangular grid.

In order to assist the operator in editing functions the display, in one mode, shows both tab and indent tab function locations via unique graphics. Other functions, e.g., carrier returns (CR) temporary left or right margirl ; (TL,TR) are not displayed unless the cursor is positioned ; to overlie such functions. At that time, the function is displayed via further unique graphics.

... .. , . ~ , . .

LE -024 1~7i546 In the same mode of display since less than a full page of text is displayed the machine supports scrolling.
To maintain contextual reference, however, scrolling (vertically only) breaks screen displays at convenient paragraph or sentence boundaries, if possible.

In some word processors the insertion operation may serve to generate an unusually confusing dispIay. More speci~ically, the insertion functions must relocate each display element beyond the insert location, one display element space to the right for each display element added to the document. Since the quantity of text to be added ; is developed time sequentially the serial relocation of many lines of text can be distracting. To avoid this effect, once an insert function is identified, the entire line to the right is opened up (a hole is created) for in-sertion, by relocating all characters to the right of the insert location, in a single step. Thereafter, as in-serted characters are added the "hole" is filled. When completely filled an addiitonal hole is created until the insert is completed.

In one mode (unformatted) of display, the unnecessary word spaces on the display are created for display con-venience and have no real existence relative to the docu-ment being created or edited. Accordingly, the cursor controls prevent the cursor from being located in any area not occupied by text and/or functions.

In another mode (formatted) of display a novel hyphen-ation function is supported which shows the operator infor-mation respecting not only the hyphenation candidate in its relation to the right margin but also its relation to the average preceding line ending. This allows greater unifc,rm-ity in line endings without the necessity for justification.

~6 ~,r.979--024 . 7 In order to further assist operator formatting decisions on request the display ~ill indicate the right and left margins and tab grid. Since these parameters may well vary within a document the actual locations identified for these parameters is dependent on cursor location.

Contrary to the unformatted display, in the formatted display non-text filled locations have a real existence and therefore the cursor controls allow the cursor to be posi-tioned within or without the text filled area. Performing an insert function to a document location outside of exist~
ing text produces a text matrix having special attributes.
For one thing such text matrix (termed a block) can be treated as an entity separate and apart from the document ~- text. It can be moved in a simple fashion relative to other document text or deleted, for example.
, To produce the formatted and unformatted displays the processor uses the same basic document but applies different rules in creating the display. The former display is created by observing constraints imposed on the document by margins, indents, tabs, etc. In addition, the specific effect of any of these constraints can be varied under operator con-trol. To achieve the effect of a full page formatted dis-play without the necessary resolution to distinguish each display character, the display provides resolution sufficient to resolve only printable character/graphic filled locations from unfilled locations, i.e., each prin~able character or graphic is treated and displayed identically. On the other hand, the unformatted display simply extracts a string of i~ text characters or punctuation graphics and strings them along, breaking lines substantially only when display capa-city is reached i.e., margin effects are not displayed as such.
:
Finally, using high rate digital signals in connect-on with CRT's whose phosphors were not desiyned for such signals ~q79-024 - 8 -can produce an effect termed "blooming" i.e., the imageactually displayed is increased in size as a consequence of the interaction between CR~ characteristics and the particular driving signal. By use of appropriate logic to monitor the video signal along with signal shaping the effect of "blooming" can b~ controlled.
` SUMMARY OF THE IN_ENTION

The invention meets these and other objects of the invention by providing an electronic display for a word processor operating in two different modes; in a first (or text) mode the electronic display is capable of producing a visible image including a number of lines, less than the normal number of lines included on a full page, each line including a number of character locations which are less than typical number of character locations on a line of a page. This mode is employed when the operator is initially keying in and editing text characters, and ~he display is essentially unformated in that the operator's decisions as to the number of lines per page, the location of the margins on a page, and most other formating decisions do not in-fluence the format of the display. For example, aside fro~paragraph endings the operator need not key in line endings.

The same electronic display, is, however, capable of operating in a second mode, and in this second mode it is capable of displaying a preview of a full page; however, since the area o the electronic display is incapable of displaying a full page with a resolution required to dis-tinctively identify each character, the display merely indicates whether or not a character is located at each character position. In this second or page mode the display is fully formated in that character filled positions are located between the operator selected margins and on a number of lines per page which is operator selected.

5~6 _g_ Architecturally the inventive word processor includes a display (for example, the aforementioned cathode ray tube) ~ and apparatus to generate a composite video signal includ-; ing horizontal and vertical synchronizing signals necessary ; 5 to properly drive the display. The composite video signal i5 generated from one of two refresh random access memories (RAM),one for each mode of the display. The output of each of the refresh RAMS is coupled to a tri-state bus which provides an input to one of two character generators, a conventional character ~enerator for the first (or text) mode, which is capable of displaying a number of different graphic characters (including text, puncutation, etc.) used by an operator in making up a document, and the other charac-ter generator which may only distinguish filled from unfilled character locations. The foregoing apparatus is capable of operating the display in the two aforementioned modes with the use of a standard CRT chip by appropriately selecting the font for a character filled locatlon in the second mode of display to be less than the space normally occupied by a character, so that the limited capability of the standard ; CRT control chip is nevertheless capable of designating what appears to the operator to be a number of character locations greater than the control chip was designed for. However, in order to achieve the foregoing functions the processor which responds to key operations provides a document memory into which are stored the unique keycodes generated by the key-board in response to the actuation of each key or group of keys. When the operator is inputing text for the creation of a document, the computer loads one of the associated refresh RAMs as text characters are keyed in so that the operator continually sees a display of the document being created. This irst ~text mode) display, however, carries essentially no format informat~on therefore comprising essentially only a text stream to normally fill each line text of the display. Two exceptions are operator keyed carrier return and tab functions (or required carrier return and tab). However, in order to maximi2e the amount of text included on each display line, in this first or text 7:~5~6 ~ L~79-024 mode, a tab function is displayed as a single unique graphic, regardless of the number of spaces actually associated with the operator keyed tab Eunction and stored in document memory. In addition when reviewing already keyed text, other functions are not displayed unless the cursor, under operator control, is located to coincide with the operator keyed function, at which time a unique graphic which iden-tifies the function at that location is superimposed over the cursor. At any time during the keying of text, or after text keying is completed, the operator can switch to the second (or page image) mode. On such command, the processor loads the other refresh RAM so as to control the display in the page image mode. While the time taken by the processor to write either of the refresh RAMS is short, it is per-cievable, however, once the RAMS are written, the operatorcan switch from one display mode to the other almost instan-taneously. In the second or page image mode, the operator has available a number of formating commands such as re-adj-usting global or temporary margins, moving the initial writing point, adjusting the number of lines per page as well as others which will be described.

The keyboard also has associated with it a number o~
cursor positioning control keys which can be used by the operator to move the cursor. The cursor can be used, in the second (or page image) mode to indicate the new location of a margin, writing point, last line per page, etc. The cursor can also be employed in the first display mode (text) to indicate the memory position at which some editing fur,c-tion is to be performed. In keeping with the philosophy for the use of the two different display modes, the cursor, in the text mode, is constrained to move only within a pre-existing text field; whereas in the page image mode the cursor can be moved out of a pre-existing text field, al-though it is constrained to remain within an operator se~-lected paqe size. ~hen the cursor is maved out of the textfield, in the page image mode, the cursor is blinked. Since the page image mode is intended to represent a preview of the printer produced document, the display within the oper-, .

LE9 ~ 024 1 ~7i S46 ator selected page area consists only of printable graphics,i.e., functions are not displayed. However, in the page image mode, a split screen display is generated and various prompt commands or mode indicators axe displayed external to the outline of the page.

While the keyboard includes function keys for switch-ing from text mode to page image mode or back, the pro-cessor will automatically induce a transition in the dis-play mode, if the operator keys a printable character in the page image mode. The text displayed following such a selec-tion of a printable character will be the text in the vicin-ity of the cursor position, since it is that position at which the operator has selected the addition or insertion of the printable character. In addition to editing (inserting, lS deleting, etc.) text from previously typed or stored text, the processor is also capable of manipulating text segments (or blocks) which the operator has designated to be inserted outside the pre-existing text. These blocks are inserted, in the page image mode (and hence in the ultimately produced printed document) at the position designated by the operator by positioning the cursor. For text mode display the blocks are shown at the paragraph boundary following the block insertion. Each block has associated with it its own format including margins, tabs, etc. Once inserted, blocks can be manipulated separate and apart from the text, that is, they can be moved relative to the text, or kheir margins adjus~ed by simple commands keyed in at the keyboard. At the same time, operator invoked first writing point changes will also affect the associated text blocks in the same fashion as other text is affected.
In accordance with a further feature of the invention underscore operation is simplified in a number of respects.
Firstly, one bit of the byte which identifies a character in document memory is dedicated to the underscore graphic.
Accordingly, an existing text character can be underscored, 5~6 or an underscore of such character can be deleted, by simply - setting or resetting the dedicated bit. This operation, of course, does not affect adjacent characters or their pre-existing coded representations. Furthermore, the underscore function is enhanced to perform a full word underscore or word underscore deletion. The same operation (setting or resetting the dedicated underscore bit) is merely repeated once for each character in a word, selected by cursor loca-tion, when the command is asserted. The word boundaries are determined by spaces, or functions surrounding text yraphics.
In accordance with a further feature of the invention, ~ hyphena-tion function ls simplified for the operator. Some ; prior art word processors are arranged to request a hyphen-ation decision from the operator when no word ending is located in a "hot zone" in the vicinity of the end of the line. The operator, however, in connection with these prior art devices is required to make the hyphenation decision based only on the relation of the word ending to the righl:
margin. In accordance with the present invention, in ad-dition to this information, the operator is presented withinformation as to the average location of line endings for an immediately preceding numoer of lines, and in this fashion, the operator's line ending decision can result in a line ; ending which is more uniformly aligned with the immediatel~
preceding line endings.

In accordance with another aspect of the invention, the electronic display in the page mode can display an operator selectable page outline from among one or more predetermined page sizes. Margins are specified with respect to the selected page outline, and cursor positioninq is also con-strained by the selected page outline.
.~
In accordance with another aspect of the invention, the page image mode, in addition to displaying an operator positionable cursor , provides , as an operator option , display of a pair of ghost cursors, each tracking the po-1~7~5a~j -13~
sition of the cursor in one of horizontal and vertical dimensions so that cursor position at any location in an imaginary rectangular grid can be obtained.

In accordance with still a further aspect of the in-vention, the particular lines included in a text mode dis-play (or screen) are selected in accordance with not only cursor location, but also sentence boundaries so that, if possiblej when scrolling forward the beginning of a sentence or paragraph boundary which appeared on the last line of the previous screen a~pears on the first line of the display.

Finally, while the page image displayed is not normall~
used for entry or deletion, under certain limited conditions it can be so used. For example certain functions (CR, RCR, TAB, etc.) can be inserted in page image. Those same func-tions can be deleted in an error correcting backspace opera-tion in page image.
;
BRIEF DESCRIPTION OF THE DRAWINGS
;' The invention will now be explained so as to enable those skilled in the art to make and use the same in the following portions of the specification when tak~n in con-junction with the attached drawings in which like reference characters identify identical apparatus and in which;

Figure 1 i5 a block diagram illustrating significant components of the present invention;

Figure 2 is an illustration of the typical keyboard which forms one of the input devices for use with and a com-ponent of the present invention;
,:
Figures 3A-3C illustrate a correlation between text and a portion of a page irnage mode display for an alternate em-bodiment of the invention;

54l6 Figure 4 is a more detailed block diagram of portions of the inventive apparatus, particularly associated with the display;

Figures 5-10 are schematics of the circuits used in different ones of the functional blocks of E'igure 4;

Figures llA-llD illustrate the page image mode display for the same document with a cursor positioned at four dif-ferent locationsi Figures llE-llG are three text mode displays required to illustrate, in text mode, the entire document displayed in the page image mode displays of any of Figures llA-llD;

Figure 12 is a representation of document memory which will produce the display as shown in Figures llA-llG, in connection with the present invention;

Figure 13 is a high level flow diagram which is useful in understanding the overall processing performed in accor-dance with the present invention;
Figure 14 is a map showing several significant func-tional components of system RAM in accordance with the present invention;
' Figures l5A-15C provide a detailed flow diagram of t:he interrupt handler processing;

Figures 16.1-16.18 provide a detailed flow diagram for the main system routine in accordance with the present invention;

Figures 17.1-17.12 illustrate a detailed flow diagram for text mode processing in accordance with the present invention;

~ r-LE979-029 ~. ~. 7~ 6 Figures 18.1-18.11 illustrate a detailed flow diagram for the cursor related processing in accordance with the present invention;

Figures 19.1-19.31 illustrate a detailed flow diagram for the page image mode processing in accordance with the present invention;

Figures 20.1~20.12 provide a detailed flow diagram of the graphics processing in accordance with the present ; invention; and Figures 21.1-21.4 illustrate typical hyphenate function displays in accordance with the present invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
The basic objective of the invention is to provide the operator with an instrument which is natural and easy to use 15 without, at the same time, sacrific~ng a great deal in terms ~ of equipment complexity or cost. To this end, the system of .~ th~ invention includes at least a keyboarding entry unit, a processor or processor like device for responding to the input information and manipulating that information so that . 20 it can be employed by the remaining system components, a printer which is arranged to print the completed document : when it has achieved the form desired by the operator, ; . replaceable media memory to allow the document to be stored, and later recalled and edited or printed without r~quiring re-key boarding of the information which had been previously keyboarded, and a display unit to assist the operator in entry, editing and formatting functions.
~, Preferably, the display unit is a cathode ray tube, ~nd features of the invention impose minimal burden on the CRT
so that a relatively inexpensive cathode ray tube even down to and including a conventional TV set or monitor can be used as the display. Associated with the display, to enable it to be used effectively, is additional hardware providing at least for refresh memory and associated logic and control hardware for use of the display in either of its two modes.

In a first or text mode, typically used when the oper-ator is`keyboarding text, the display is unformatted in that 5 the operator's previous selections as to margins (either permanent or temporary, tabs, page length1 and the like play no part in the form of the display viewed by the operator.
The display consists of a series of lines of text starting with the first line keyboarded ~y the operator, line length 10 being dependent almost solely on the amount of text that can be accomodated in a horizontal text line on a display. The operator need not key in carrier returns and thus, initial keyboarding is essentially unformatted. The only format decisions which are reflected on the display are operator lS ente~red carrier returns (for example, such as those used at the end of a paragraph) and required (indent) tabs (for example, at the beginning of a paragraph)O The former format decision is exhibited on the display typically by prematurely terminating a line, the latter format decision `~ 20 is illustrated on the display by the use of a single unique symbol, (regardless of the actual length of the desired indent tab which the printer will ultimately produce).

On succeeding lines an indent will occur on the display aligning the text to the right of the rightmost previous 25 required tab. This indenting is terminated by a required carrier return. Some functions are displayed by unique graphics when the cursor is at their location.
;

At any time during the initial keyboarding the operato~
can preview what the keyboaxded text would look like if 30 printed, by switching the display to the page image mode with the use of controls readily aocessible on the keyboard.

In the page image mode the same display is capable of allowing a preview of an entire page of text ~for example, LE979-024 117iS46 up to 78 lines of text). Resolution limits imposed by the size of the display screen force a change in character font, so that any character or punctuation graphic re~ardless of its identity is displayed in identical fashion. Accordingly, ` 5 it will be impossible for the operator to read the page previewed on the display in the page image mode, but on the - other hand, the format of that page, i.e., text filled versus empty locations will be readily apparent~

Readily accessible controls on the keyboard allow the 10 operator to change the format of this page or the entire document by altering left or right margins (permanent) or imposing or altering temporary left or right margins. Like-wise, the length of the page (the number of lines of text) can be increased or decreased (up to the limit of 78 lines 15 displayable on the screen). In addition, the first writing ` point on a page can be altered; selected portions of the text can be moved with respect to other portions of the text or the tab grid can be altered~ And in response to any or all of these format changes, the display will, substantially 20 immediately provide the operator with a preview of a page that would be printed under the newly imposed format.

To assist in formatting commands in the page image mode, a cursor (the intensity of which is greater than text) is provided whose position is con~rolled by control keys on 25 the keyboard. Various format commands are interpreted in connection with cursor position, so that for example, if the operator desires to move the left margin, the cursor is first positioned horizontally at the appropriate location for ~he desired left margin, and then the left margin command 30 is asserted. To further assist in format changes the operator may superimpose a grid on the page showing the right margin, left margin, tab points, first writing line and last writing line. Each of these functions is con-trolled from the keyboard either on a document, temporary or 35 page end basis. When the cursor is positioned at a location which is occupied by text, it is on continuously, however, .. ..

LE979-024 117~546 when it is moved to a location outside of the text filled - area, it will blink, and if the operator performs an insert concurrent with a blinking cursor, a block insert is provided which automatically assumes independent formatting for the block (temporary margins, tab points, etc.) based on the starting point of the insertion. The text forming the block is inserted in a special location in document memory and is movable as a unit in the page image mode with respect to ; text not in the block.
',:
In the page image mode, the previewed page does not ~ occupy the entire area of the screen, rather a split screen ; effect can be implemented with the right hand portion of the display utilized for prompting messages and the llke.

In the page image mode the page being previewed is illustrated along with an outline of a page size, and while a default page size is the typical 8.5xll", other and special page sizes can be employed and will be appropriately shown on the display.
;
` While the text mode is the normal mode used for input operations, it is also normal mode used for editing func-tions. To assist the operator, the tex~ mode also provides a cursor, which is movable under operator control However, in contrast with the page image mode, in the text mode, the cursox cannot be positioned outside of a text filled area.
When the cursor position corresponds to that of a function (which is normally not shown) a unique graphic will be shown to identify the function existing at that location so that the function may be deleted, for example. If the operator desires to insert text whether it be character, word or longer, an insert command is asserted; responsive to the insert command, the line of text to the right of the cursor is moved to the next line, leaving the remaining portion of the line on which the cursor exists, available for inser-tions. If the operator's insertions exceed that capacity, a new blank line is displayed for additional insertions, and LE979-024 ~7~ 54~

so on until the operator again asserts the insert command which has the effect of removing the system from the insert mode and deleting any unused insert blank spaces.
.~
In the text mode, in addition to displaying text keyed in by the operator, the first line of the display is em-ployed for mode and prompting indicators.

As the operator keys in text, either during normal input operation, or in the insert mode, automatic pagination is effected.

Another powerful revision feature implemented in accor-dance with the invention is the information presented to thP
operator at the time a hyphenation decision is re~uired.
Typically, a hyphenate decision will be encountered in the page mode, after the operator has specified left and right 15 margins. As is conventional, the last five or six character spaces on a line are considered a "hot zone" so that if a word endinq does not fall in the "hot zone", a hyphenate decision is required. Under these circumstances the display will automatically switch out of the page display mode to a 20 hyphenate mode in which the entire word requiring a hyphen-ation decision will be displayed, and in addition the oper~
ator's selected right margin will be displayed via a graphic character such as an arrow, a further graphic character or second arrow will indicate the actual average line ending 25 for a previous predetermined number of lines on the page.
The operator then merely positions the cursor at the loca-tion at which the hyphen is desired (and the cursor is constrained to move only within the word) whereafter assert-ing a special command will both return the display to the 30 page mode and record the operator 15 hyphenate decision.

Reference is now made to Figure 1 which is a block diagram illustrating important characteristics of the in-vention particularly related to the display features. As is shown in Figure 1 the inventive system includes an input \
1.~7~ ~6 .~ -20-unit, the keyboard 10, for a processor 20. In an embodiment of the invention which has been constructed, the processor ; 20 is implemented via the IBM OPD minicomputer which is more completely described in U.S. Patent 4,170,414; those skilled in the art will understand, of course, that the use of this particular processor is not at all a feature of the in-vention. As is shown in Figure 1, the processor also is arranged to control a printer and a replaceable media recorder (such as magnetic tape, card or disc); these 10 devices are not further shown or described in this appli-cation since, while they provide important capabilities to the overall word processing system they are, in and of themselves conventional, as is their association with the processor 20.
, Figure 1 also illustrates data and address bus 21 and 22 respectively of the processor 20. Data bus 21 is buf-fered and coupled to internal bus 31, which in turn, is coupled both to a text refresh random access memory (here-inafter text RAM 25) and a page display refresh random 20 access memory (hereinafter page RAM 26) as well as the CRT
controller 27. Outputs of the text RAM 25 or page RAM 26 along with the CRT controller 27 are input to the character generator 28 or psuedo character generator 29 to drive logic 30 to effect drive of CRT 32. As the operator keys in text, 25 or as text is read from replaceahle media, it is used to fill the "document memory", which is actually random access memory internally available to the processor 20. In an embodiment of the invention which has actually been con-structed, the document memory consisted of a memory capable 30 of storing up to two documents, so that, for example, while one was being printed, the operator could work with the other; hereinafter when we refer to the "document memory", we will be referring to the active document memory. The document memory contains information indicating the text 35 characters keyed in by the operator and the order in which they were keyed in along with the typewriter functions normally associated with such text, along with functions to ' L~979-024 ~7~

be defined hereinafter. The document being created is also partially defined by one or more tables which are also created by the processor 20 in the course of text entry.
Thus, the'document itself is defin'ed partially by the con-5 tents of the referred to tables. It should be noted thatthis form of document memory ,distinguishes from the many prior art word processors in which a document memory maps to the final printed document. In any event, in addition to responding and storing the codes generated by the keyboard in the course of operation, the processor 20 also writes the text RP~I 25 since it is from the text RAM 25 that the CRT 32 is driven. In an embodiment of the invention which has been constructed text RAM 25 was arranged to allow the display of 14 lines of 52 characters per line; and without signifi-lS cantly altering parameters it is believed that this capacitycan be increased, for example, to 16 lines each of 64 charac-ters since text RAM had 1024 byte capacity, 7 bits of each ~` byte defining the font and the eighth bit used for under-core. In order to generate the text mode display on the CRT
32, the CRT controller 27 repeatedly addresses the text RAM
25 so its contents are placed on the internal display bus 31 which, as is illustrated in Figure 1 is coupled to a charac-- ter generator 28 and a psuedo character generator 29, the reason for which will become clear hereinafter. However, the 25 combination of text RAM 25, bus 31 and character generator 28 operate in an entirely conventional manner. For example, a series of 8 bit character defining codes from the text RAM
25, defining a line of text, are provided repeatedly to character generator 28 to result in a series of binary signals which are used to intensity modulate the CRT 32 and provide thereon a display consisting of the line of text .
Thus, for example the character generator 28 may include a typical read only storage character generator. As is sho~m in Figure l the serial output string from the character generator 28 passed through logic circuit 30 before pre-sentation to the CRT 32; the function of this logic circuit 30 will become apparent as this description proceeds, at this point suffice it to note that signals are added in the LE979-024 11 7iS46 logic circuit 30 to denote the cursor position, for example, and in some embodiments of the invention to control the Z
axis modulation for image enhancement purposes especially when the invention is used with a CRT 32 which is not par-; 5 ticularly designed for text display.

Those skilled in the art will recognize, in the CRTcontroller 27 a conventional device, which, in response to clocking signals, provides addressing signals to the text RAM 25 so as to read it out to provide the appropriate input 10 to the character generator 28 properly coordinated with CRT
deflection. The CRT controller 27 is progra~mable via the processor 20, within limits to provide a selected number of characters per row and rows per screen. Among the various parameters of the CRT chip which are selectable, scans/data 15 row, characters/data row and data rows/frame are the most significant. The software, in one embodiment, sets the parameters as shown below:
Parameter Text Pa~e Ima~e (FAX) Scans/data row 15 3 Characters/data row 64 132 ~ata rowsfframe 16 64 The term scan refers to a single swaep and data row, corres-- ponds to a line, such as a line of text. Therefore, 15 scans/data row allows each character to include 15 pixels, 25 vertically. Likewise 16 data rows/frame allows 16 lines of text to be displayed. In practice, several character posi-tions (horizontally) and data rows or lines (vertically~ are not used. In addition, two lines of those available in text ; mode are used in the message line, leaving 12 lines of text.
30 In page image, of the 132 positions available only 85 charac--ter positions are used for display of a page and its cont-ents, the remainder (less positions not used) are dedicated to various prompts and messages.

In the text mode the ~RT chip 27 is capable of ad-35 dressing the required number of characters. As will be described the page image RAM 26 cooperates with the CRT
controller 27 in exactly the same fashion. That is, the CRT
controller reads the RAM 26 to supply, on the bus 31 a byte stream representing the desired image, which is seralized 5 and used to control the CRT. Wh~le Fig. 1 shows the RAM's 25 and 26 as separate from each other that separation is only functional as there is no r~ason why they cannot be ` located on the same partitioned chip. In addition, since the RAMs are used alternately they can in fact be implemented 10 by a single RAM of capacity sufficient, at any one time, to perform the function of either text RAM 25 or page RAM 26.
Furthermore, there is no fundamental reason why this RAM
capacity cannot be integrated with the processor's internal RAM so long as either a D~ operation is used for refresh or 15 some time multiplexing is used so both the processor 20 and CRT 32 can both use the same memory chip. In the embodiment we built the page RAM 26 also had 1024 byte capacity, how-ever, each bit represented a character, so it was capable of storing 128 characters per row for 64 rows per screen. Of 20 these we used 85 characters per row for our page image, the - rest, 43 characters per row was available in ou~ split screen for prompts, etc.
While this, and other available CRT control chips are programmable in that they are capable of varying the number 25 of characters per row and the number of rows per screen, they do typically have limits which makes it impossible to display a full page. That is, for example, up to 156 characters per row and 78 rows per page or screen. Of course, RAM 26 would have to be extended (beyond 1024 bytes) 30 to store an 156x78 character screen or page. In order to provide the desired display we must somehow provide a translation between the text characters (for example, the alphanumerics that the operator desires to appear on the printed paye or the display) and the display characters, 35 since the CRT control chip is incapable of providing a one-to-one correspondence between display characters and text characters. Accordingly, in one embodiment of the invention we group text characters into a two-by-two array, and define LE979-024 ~71~6 that two-by-two array of tex~ characters as a single display character identified by a single byte. Now our limits of 156 characters per row is reduced to 78 display characters per row, well within the capability of the control chip, and 5 the requirement of 78 rows per screen is reduced to 39 rows per screen, also well within the capability of these conven-tional chips. While we have suggested a 2x2 ar~ay it is of course possible to employ other, larger arrays, for example 3x2 or 2x3 with existing 8 bit bytes. While there is no 10 theoretical reason why even larger arrays could not be used, 3x3 or larger arrays would reauire 9 bits or more to dis-tinguish the various combinations of filled and unfilled locations.

Figure 3A illustrates an exemplary two-by-two array of 15 text characters containing, respectively, upper case e, space, lower case g and period; Figures 3B and 3C illus-trate, respectively, 10 pitch and 12 pitch displays corres-ponding thereto~ It will be noticed that any character location, regardless of character identity, is displayed as 20 a pel array which is 3 high by 3 or 4 wide within which is a two-by-two pel array which is turned on if any character or punctuation is present and is off if the location is empty.
To implement this, the page RAM 26 stores bytes which are significantly different from that stored by the text RAM 25.
Z5 The text RAM 25 stores, as is well known to those skilled in the art, an 8 bit byte for each character (or space), which is translated by the character generator 2~ into a seauence of binary signals for use by the display. On the other hand, the page RAM 26 stores an 8 bit byte for each two-by-30 two array of text characters, corresponding to a singledisplay character. Since there are 15 different combina-tions in which the two-by-two array can be filled or un-filled, 4 bits will suffice to define the particular array configuration. The remaining 3 or 4 bits can be used for 35 other functions, such as defining cursor placement with regard to any one of the four different text characters represented by this display characterO Of course, it is LE979-024 ~7i546 necessary for the processor 20 to write the appropriate signals to the page RAM 26, and the manner in which that is effected will be described. From the preceding, it should be apparent that the pseudo character generator 29 then has the function of inter~reting the 4 bits defining the par-ticular stored display character and serializing the re-sulting binary signals so that the appropriate displav is produced, for example, that shown in Figure 3B or 3C.

The preceding description of a display scheme is not that actually employed in an embodiment of the in~ention actually constructed. In that embodiment the CRT controller 27 was a CRT video timer-controller (VTAC) desi~nated CRT
5027 and available from SMC Micro Systems Corp., Hauppauge, New York. This particular chip is capable of displaying up to 132 characters per row, but if 132 characters per row are chosen, then it will only provide addressing for 32 rows.
Otherwise, (for 96 characters per row, or less) it will address 64 rows per screen. In the embodiment we contructed we selected 132 characters per row and used the most signi-ficant row address bit DR4 and divided it by 2 in a flip-flop, to generate an equivalent to the unavailable DR5 which we called DR6. This gave us the ability to address 64 rows ; per screen and addressing for 132 characters per row.

It is also possible to go beyond the 132 character/row and 64 rows/screen with this particular chip as follows.
Either parameter is established by the chip's addressing outputs, used to read ~P~I 26. That is, the chip will read or output 132 different addresses between horizontal fly-back, and likewice address 64*132 addresses between vertical 30 retraces. To increase these parameters we take the least significant bit of an address and multiply its rate. Thus, take H0-H7 where H0 is the least significant bit and halve the pulse width with a faster clock, giving an externally generated H(-1) to indicate the externally generated bit is less significant than the internally generated H0. So, in-stead of eight address bits per row tlimited to a maximum count of 132) we now have nine bits which are limited to 264. With this new address set we can address up to 264 characters per row, or any lesser number with any one of a variety of decoding schemes. Further, we can, as we do, 5 split the page image screen and put 85 characters per row in about 50~ of the screen width. By using the same technitlue we can increase the row count, per screen, above 64.

Before describing the apparatus in detail, reference is made to Pigure 2, which illustrates the keyboard 10, as it 10 appears to the operator. The keyboard 10 is, in many re-spects similar to conventional word processors in that it includes a first field o keys 150 which include typical typewriter alphanumeric symbols and functions. In order to further widen the numher of unique key codes available from 15 the keyboard 150, a code key 137 is provided which is used, in connection with the simultaneous depression of another key within the field 150. The combination provides a key code which is different Erom that which is obtained when only the other key within the field 150 i5 depressed. Th~ls, 20 for example, a first code is produced by the keyboard 10 when key 136 is depressed and a second different code is produced when the keys 136 and 137 are depressed simultane-ously.

Two additional control key fields, 151 and 152 are also 25 provided. Key field 151 includes keys 101-103 to effect, respectively, a media read, a printing operation, and a media recording operation. In addition, keys 104-106 pro-vide for placing the device in an insert mode, a review mode or a delete mode, respectivelv. The insert key 104 can be 30 asserted in text or page imaye mode. When asserted in text mode it will cause the processor 20 to remove any text on the line at which the cursor is positioned, which is to tho right of the cursor, that text is moved down to the next adjacent line, and the following text is adjusted accord-35 ingly, so that the operator sees, on the display 32, atleast a portion of a line which is available for text inser-LE979-024 1~1546 tion. If the operator's insertion~exceeds this capacity, when in the insert mode, an additional blank line is provi-ded, and all following text is moved down accordingly. In page image, insert will perform a text or block (if the 5 cursor is blinking) insert depending on the cursor position.
In either event if a (printable) character is entered the device will switch thereafter to the text mode.' Review can be asserted in text or page image mode. In the latter mode, each subsequent assertion will produce an 10 image of the next seq'uential page on the display, unless key 111 (up cursor) is simultaneously asserted in which case the next preceding page image is produced. A similar effect is produced in text mode, except that rather than pages, each assertion will call up a different screen (maximum of 12 ; 15 lines) either the next screen or the preceding screen if the up cursor (key 111) is also asserted. Rather than displaying an entirely different set of 12 lines per screen, the processor will attempt to maintain a sentence or para-graph continuity, on default the last (or first) line of one 20 screen is the first (or last) line of the next.

The delete key is a modifying command and therefore must be used with another command. It has the expected effe'ct, namely it can delete a block of text (in the page mode) or in text mode it can delete a character for each 25 depression of cursor right'(114), a word (key 110), as well as word (122) or character underscore. It can also be used to delete previously entered functions as is explained later.

The remaining key field (152), includes control keys 30 107 and 108 which can be used by the operator to control the display mode, either the text or page image mode. In the page mode asserting key 108 has no effect. However, in the text mode, asserting key 107 will align the beginning of a sentence/ paragraph containing the cursor to the top line of 35 the screen. The manner in which this is effected will be LE979-024 ~715~6 described hereinafter.

Keys 109-114 are provided to control cursor movement.
Keys 109 and 110, for example, move the cursor one word to the left or right, respectively in -text mode. In paae mode 5 these keys are ineffective. In a similar fashion, keys 111-114 are provided to move the cursor up or down, right or left, either a single line space or character space per depression. As will be explained, in the text mode the cursor is constrained to move within the field of existing 10 text. That is, cursor right (key 114) will, at the end of text in one line, go to the leftmost character in the next line, even if the line ending is not at the right edge of the screen. In text mode, with the cursor at the top of the screen asserting cursor up (key 111) will scroll the screen 15 up. Similar action occurs with cursor at the bottom of the screen and assertion of cursor down (key 112)o Like action can be effected with cursor left and right. In page image the cursor can be moved anywhere within the page boundaries, the cursor blinks when it is not over text. The manner in 20 which the key codes generated by assertion of any of these keys is used to implement the function will be descr-bed hereinafter.

Within the key field 150 itself, a majority of the kevs and the results produced are conventional and will not be 25 further described. However, the effect of actuating certain of the keys is worthy of brief comment. Several keys produce typewriter functions, i.e., index, backspace, carrier return, tab and space. The backspace is an error correcting back-space only when initially keying the document, continuing to 30 key the document, revising in insert mode or under certain special conditions in fax mode. Otherwise, backspace is similar to a left cursor command. The Req backspace is al-ways merely a cursor left.

Each of the keys to be discussed hereinafter will pro-35 duce the function described when the key itself is depressed LE979-024 1~7i5'~6 in combination with actuation of the code key 137 (i.e., a coded function).

Depression of key 116 enables the operator to change i the position of the first writing point. For exa~ple, with 5 the page image display, the operator can move the cursor to the point at which it is desired the text to begin. Actu-ation of key 116 will then effect this function. The - reformating effected by changing the first writing point does not alter the integral relationship of the document and lO this is effected by appropriately changing the global and temporary right and left margins along with first and last writing line in a manner to be explained hereinafter.

Depressing the key 117 provides a page ending code which is used to demark the end of a page. This ïs used by 15 the processor 20 to format text, as will be described.
Depression of key 118 puts the inventive apparatus in a format mode; this is used to superimpose on the page image a tab grid and horizontal and vertical ghost cursors each parallel to an associated grid, which track the document 20 cursor in a single dimension, respectively. Second depres-sion of key 118 restores the original page image.

In the page image mode the display includes a repre-sentation of the document boundaries so the operator can view the relationship of margins, etc. with respect to the 25 document boundaries~ For example, a common document bound-ary size might be ~ l/2 x ll". Keys ll9 and 120 can be used to display document boundaries of different but predetermlned sizes. For example, key ll9 can cause an envelope display, and key 120 might cause a display simulatina the shape of ~n 30 IBM card. Similar document boundaries could be called up by other conventional techni~ues.

Keys 125 and 126 respectively, establish temporary right margins and temporary leLt margins at the present cursor position. Therefore, an operator desiring to change LE979-024 ~L 71546 or insert a temporary right margin, for example, would first move the cursor, using any of the keys 109-114 to an appro-priate location, and then actuate key 125. The temporary margins will be applied, by the processor 20 to the text in 5 the paragraph at which the cursor is located. The effect of temporary margins are cancelled at required carrier returns as is the effect of other temporary parameters. Margins af-fect text display only in page image mode.

Bermanent margins for the document can be selected by 10 the operator in a similar fashion using keys 124 and 132, respectively. However, only in page image mode.

Key 123 provides a key code requiring return to the beginning of a document, and is used in either mode.

Key 12~ provides for word underscore in text mode only.
15 In use, the operator positions the cursor to lie somewhere within a word which it is desired to underscore. At that time, key 122 is asserted, and the processor 20 sets an underscore indicating bit in the document memory for each byte associated with each character in thç identified word.

Keys 129 and 131, respectively, provide for tab sets and clears, used in page image only. Key 130 is similar except it provides for temporary tab registers. Temporary tab registers are, like temporary margins, effective until a required carrier return is encountered. Xeys 129 and 131, 25 respectively, set or clear the temporary or global tab register depending on cursor location when the command is assertecl.

Keys 128 and 135 allow the processor 20 to switch between the two documents in the document memory, key 128 30 calling up document A and key 135 calling up document B. In addition, when recalling document B, for example, after working on document A, the portion of document B which is displayed and the position of the cursor within document B

~ L7:~s~i ~ 31-are the same as the conditions existing when document A was called up.

Key 134 is used, in page image, to designate the number of lines on a page. In use, the operator positions the 5 cursor at what is desired to be the last line on a page and then asserts key 134.

Key 133 is used to move blocks of text and is used in page image, only. In accordance with the present invention the document is broken down into main text, and one or more lO text adjuncts which are termed blocks~ Text blocks, or simply blocks, while constituting a portion of the document, have an identity separate and apart from the main text, and key 133 allows blocks to be moved, individually, relative to the main text. A block insert is implemented, after keying 15 in the main text. This is effected by simply positioning the cursor in the page image mode outside of main text.
Since the cursor is ou~side the main text field, the display 32 will show it blinking; asserting the insert key 104 places the machine in a block insert mode. The operator can 20 thereafter key in text, and as text is keyed in, display 32 shifts to the text mode to display the keyed in text. The text is stored in the document memory, along with the main ; text, but its beginning and end carries block delimiters to identify the block. Key 133 then can be used, by firstly 25 positioning the cursor at a desired location for the block and then asserting key 133 to move the block thereto. If there is more than one block in the document, the block which moves in response to assertion of key 133 is the block last operated on.

Similar techniques could be used for simplifying operator action on initially keying in main text by suitab:le modification to the system disclosed herein. More partic-ularly, rather than requiring the operator to identify a -- left margin and first writing line before inserting text, 35 the software could be modified to pick up these parameters ,E9 79 - O 24 7:~5~~

from the operator's cursor positioning decision when in-itially keying in text.

~ any of the functions briefly described in connection with the key field ~50 can be deleted in a similar fashion by operating the delete key 106 along with another key.
This places the machine in a delete condition such that rather than inserting the thereafter asserted keys function, that function, if present at the cursor position, is deleted.
This applies, for example, to permanent or temporary mar-gins, temporary tabs and word underscore. Likewise, a blockcan be deleted, by asserting the block move key 133 when the inventive device is in the delete condition, in text mode.
The delete condition is active when (and only when) the delete key is depressed, i.e.l it is not a toggling function like insert, for example.

Finally, key 136 provides for clearing the document memory; in the embodiment of the invention in which the document memory is capable of holding two documents, the clear function is effective for the document being worked on.
Although some of the functions described above in relation to the keyboard are implemented via codes which are generated by simultaneous depression of more than one key, those skilled in the art will have no di~ficulty in under-standing that this is not at all essential to the invention,and, with the addition of one or more keys, or a rearrange-ment of the functions performed by the available keys, the particular function implemented by simultaneous action of more than one key, could be implemented by the action of only a single key, the only requirement being that different functions are identified by unique key codes, generated by the depression of a key or group of keys.

Refer to Figure 4; a detailed block diagram of the apparatus interacting with the processor 20 and the display 32. As is shown in Figure 4, the processor 20 has a data 117 ~ ~6 out bus 21A which may, for example, be 8 bits wide which is provided as an input to a buffer 40, the output of the buffer 40 is coupled to the internal bus 31 which may also be, for example, 8 bits wide. A second buffer 41 drives a data input bus 21s to the processor 20 which may, for ex-ample, also be 8 bits wide, from the same internal bus 31.

The processor 20 also has an address bus 22 which may, for example, be 10 bits wide which provides an input to selectors 42 and 43 which have a multiplexing function in that they select one of their two inputs and provide it as an addressing output to the associated text RAM 25 or page RAM 26. The other inputs to the selectors 42 and 43 are provided by the output of the CR~ controller 27 over a bus 60. Control signals input to the selectors 42 and 43, from the logic 58 make a selection; of course, when ~he processor is writing into the text RAM 25 or page RAM 26, the selector passes the address from the processor address bus 22, where-as, when it is actually desired to display, the selector 42,43 passes addressing information from the CRT controller 27 to read out the associated text RAM 25 or page RAM 26.
The internal bus 31 is also used to transfer status informa-ton from t~e processor 20 to a status latch 50 which pro-vides various ~ontrols to the logic circuits 58. The status latch 50, in an embodiment of an invention which has been constructed includes a bit for page image mode, a bit for highlight, a bit for black on white or reverse image, a bit for blanking, a bit for ghost cursor (split), a bit for blinkiny and a bit indicating when the vertical sync pulse, from the CRT controller 27, is active. The buffer 51 enables the processor 20 to read the contents of the status latch 50 at any time; since it is mainly useful for experimental operations, it is not at all necessary for providing the features described herein.

Display of cursor position is partly controlled by the CRT chip 27 which receives cursor position information from the processor 20 over the data bus 31. However, several 1,E979-024 1~7~5'~6 features of the invention provide ghost cursors, a ver-tically moving ghost cursor identifies the horizontal row of the cursor, and horizontally moving ghost cursor defining the vertical column of the cursor. Display of these cursors ernploys a pair of comparatorc 48 and 49 indicating the location of the horizontal and vertical ghost cursors, respectively To provide these signals the comparators are provided with information as to the real time development of the raster, and this is implemented via the bus 60 which carries 10 bits of sweep identifying information, 7 bits providing character counts and 4 bits providing what is in effect line count information. Selector 47 provides the line count, and lowest order bit of character count to the comparators 48 and 49, for comparison purposes. The other input to comparators 48,49 is SP0-11 and EP0-11 from address latch 45 which provides 12 bits of address for each cursor.

The output of the qomparators (the signals SE4, from start comparator 48; and EE4 from end comparator 49) are provided to the logic circuit 58 to form the ghost cursor illumination which is merged with the basic video signal in a manner to be explained.

The output of the comparators (SL4 and EL4) are pro-vided to logic 58 to form a highllght condition (from start position SL4 to end position EL4 ) to be merged with the basic video signal in a manner to be explained As will be explained hereinafter, in the course of text entry, the processor 20 forces the display apparatus to the text mode, and in that mode continually updates text RAM 25, so that it reflects the contents of the internal document memory of processor 20. When the processor 20 is not actu-ally engaged in writing text RAM 25, the RAM is read out on a continuous basis via the control signals provided by the CRT 27. Each 8 bit byte in the text R~q 25 corresponds to a different character, space, etc., which is input to the character generator 52, in concert with 4 bits of row count information to generate, for that byte, an N bit word where ~E979-024 ~ 54~

N is the width of any character box. In the embodiment we constructed each character is 10 pels or columns wide by fifteen pels or rows high. This count is provided to latch 53. Actually, only seven bits of the 8 bit byte are used by the character generator 52, the eighth bit corresponds to the underscore bit. This is coupled directly to the latch 53. The latch 53 loads a shift register 54 with the N bits, and the contents of the shift register are read out by the appropriate timing signals to generate a serial signal stream CO which is input to the logic circuit 58. The underscore bit is read out of latch 53 and provided directly to the logic circuit 58. The underscored bit is simply a binary signal indicating, during the appropriate row time, whether an underscore graphic is to be displayed. The CO
signal stream is the binary signal stream identifying the character, UNDC is the underscore signal stream.

In an entirely similar manner, but with substantially different results, the page RAM 26 is read out by the CRT
controller chip 27. However, in the page image mode when the page R~M 26, is read, the signals on the internal bus 31 are coupled through a latch 55 to a shift register 56, which performs functions substantially similar to the function of the shift register 54. As will be explained hereinafter, the page RAM 26 is written by the processor 20 on a one bit per character basis in ~ fashion that maps directly to the CRT screen, in this respect, similar to the text RAM 25 where each byte corresponds to a character or space. Accor-dingly, each memory location in the page RAM 26 corresponds to a unique position on the CRT screen. The presence of a one bit at a memory location in the page RAM 26 corresponds to the presence of a character ~or punctuation graphic) on the CRT screen at the corresponding location. The page R~M
26 is read out a byte at a time, and the 8 bits are serial-ized in the shift register 56. Each bit, provided to the pixel select circuit 57 is used to generate a binary signal depending on the presence or the absence of a bit from the page RA~ 26. Thus, the timing signals Fco, FCl (correspor,d-LE979-024 1~7iS46 ing to one of four columns) and Ro,Rl (corresponding to one of three rows) is used to generate the serial bit stream F*CLO which is input to the logic circuit 58. The pixel select network 57 could be any fixed switching network (such as a ROM) which is enabled by a bit from the shift register and which is addressed by the timing signals.

Accordingly, the input to the loyic circuit 58, either F*CLO, or the combination of CO and UNDSC (in the page image mode or text mode, respectively) serve to define, for the most part, the basic configuration of the display. The logic circuit 58 adds to this signal stream, in a manner to be explained, cursor position, any highlighting by the processor 20, ghost cursors, if selected, and character enhancement.
Before describing the logic circuit 58, reference is made to Figure 5 which describes the clock circuit 59.

As is shown in Figure 5, the clock circuit 59 which provides timing signals for the CRT chip 27 and the logic circuit 58, comprises a crystal oscillator operating at appropria~e frequency (~n one embodiment of the invention the crystal operated at 12 MHz). The signal is provided to a pair of counters 70 and 71, both operated as divid~rs.
The counter 70 provides a carry out (RCC) which divides the input rate by 10. This output is coupled to an AND gate 72 where it is ANDED with the signal FAX*. Thus, in the text mode (not FAX or page image) the output of A~D gate 72 is a clocking signal at 1.2 MHz which is coupled through OR gate 73 and inverter 74 to provide the dot carry clock (hereinaf-ter DCC). In addition, the counter 70 provides column count signals ~C0 through C3) which divide the input rate by progressively high powers of 2. The signal DCC provides one pulse per character.

In a similar fashion, the counter 71 is operated as a divider and its 2 outputs ~FCo, FCl) are respectively the input rate divided by 2 and 4. These signals are coupled to LE979-024 ~7~S46 AND gate 75 whose third input is the signal FAX. Thus, in the page image mode the output of AND gate 75 is at a 3MHz rate (12 ~IHz divided by 4) which, when coupled through the OR gate 73 and inverter 74 provides DCC~ The outputs of the counter 71 are also used in other portions of the logic circuit as well as, for example, in the pixel select cir-cuits 57. Thus, in page image the character clock is 2.5 times as fast as in text, this accounts for our ability to display at a rate of approximately 130 characters per row in page image ve~sus 52 characters per row in text.

The logic circuit 58 is shown in schematic fashion in Figures 6 through 10.

Referring now to Figure 6, circuitry is illustrated to develop the signal VDATA2. Figure 8 illustrates how that signal, in conjunction with several others is used to generate the composite video VIDCOMP. Figures 7, 9 and 10 illustrate the developmen~ cf certain input signals used in the circuits of Figures 6 and 8.
.
Referring again to Figure 6, AND gate 82 is provided with input signals RlL, and R3L as well as the output of inverters 80 and 81 which are driven by R2L, and R~L respec-tively. Each of these input signals is basically one of the row defining signals R0 through R3 provided by the CRT chip 27 in respose to DCC, synchronized with HSNYC (also provided by the CRT chip 27). Accordingly, AND gate 82 is satisfied for the 10th row of each character, which is a row which is illuminated for the underscore graphic. The output of AND
gate 82 is provided as one input to AND gate 83 whose other two inputs are FAX* and UNDSC. Accordingly, AND gate 83 provides an output for each character (whose underscore bit has been set), during the tenth row of that character's display and only i.n the text mode. Thus, the output of AND
gate 83 is the underscore graphic. This is added to the basic binary signal stream CO in OR gate 84, and provides one input to AND gate 85.

LE979-024 ~7~6 Since each character in the text mode is ten columns wide inverter 86 driven by the timer output C3 is used in conjunction with AND gate 85 to blank columns 9 and 10 which are cleared on signal C0. Accordingly, the output of AND
gate 85 is ~he display stream with underscore graphic added for text mode display. For page image display the basic binary signal stream F*CLO is coupled through lnverter 92 to NAND gate 93 whose other input is the signal C~RS*. The output of NAND gate 93 is input to NAND gate 94. The other input to NAND gate 94 is developed in the NAND gate 91 by combining the signals EDGE and FAX. The first signal is, as will be explained hereinafter, developed to draw document boundaries in the page image mode and the second is the status signal indicating page image mode. Thus, the output of NAND gate 94 is the page image binary signal for all locations (with FAX data cleared at the cursor location).
This signal is ORed with the text image defining stream in OR gate 87. Of course, only one of the inputs to OR gate 87 is active at any time since FAX and FAX* are mutually exclu-sive.

To see the development of the cursor image in the pageimage mode reference is made to Figure 7. As shown in Figure 7 OR gate 162 is provided with signals CRV*, a signal developed in the CRT chip to define the position of the ~5 cursor, and the signal BLN~ which is alternately high and low if the cursor is to be blinked, which it is in the page image mode, when the cursor is outside a text field area.
The output of OR gate 162 is provided to inverter 163, the output of which is provided as ona input to OR gate 164.
The output of OR gate 164 (CRVl) is provided as a si~nal input to a flip-flop 90 whose clock input is coupled to DCC.
The output of the flip-flop 90 (CURS~ provides an input to the exclusive OR gate 88 whose other input is the output o:c OR gate 87. Accordingly, the output of exclusive OR gate 88 is a signal stream which is either text mode video (inclu-ding underscore characters) or a page image video includin~
the page boundary and cursor video, for both text and page image.

The use of a ghost cursor feature has already been explained, and the location of the ghost cursors are deter-mined by the comparators 48 and 49, produclng the signals SE4 and EE4 (for the location of horizontal and vertical ghost cursor, respectively). These signals are provided to an OR gate 166, the output of which is coupled to AND gate 165. The other two inputs to the AND ATE 165 are SPLIT
(one of the status signals, which is on in the page image mode and only when the ghost cursors are to be displayed) and the signal CRV* (to clear the ghost cursors/FAX data at the main cursor location). Thus, the output of AND gate 165 defines the ghost cursors and is the other input to OR gate 164. Accordingly, the signal CRVl, in addition to defining cursor location for both text and page image mode, in the page image mode also defines the position of the ghost cursors. As a result, the signal CURS also carries cursor ; and ghost cursor information as an input to exclusive OR
gate 88.

Exclusive OR gate 89, one of whose inputs is the output of OR gate 88, provides a highlighting feature. The presence of the gate allows areas to be highlighted (displayed as a reverse ima~e). In other words, for ~he portion of the screen which is highlighted, an otherwise normally on pixel is off and an otherwise normally off pixel is on. This is simply effected by rendering ~he other input to exclusive OR
~ate 89 active for the entire period during which the high-lighted portion of the screen is being displayed. The signals SL4 and EL4 provide respectively, time definitions of the start and end of the highlighted field. Thus, the combination of inverter 95 and AND gate 96 provide a signal which is high during the portion of a field to be high-lighted. This signal, delayed by one clock count in the flip-flop 97 is provided to pass AND gate 99 (in the text mode). The signal HILIT, a status signal partially enables AND gate 102 to provide the active input to exclusive OR

~979-024 ~ 5~6 ~40-; gate 89 to provide the highlighting functions. In the page image mod~e the delayed highlighting output of flip-flop 97 is further delayed in flip-flop 98 where, in a similar fashion it is coupled through ~ND gate 100 in the presence of FAX through OR gate 160 and AND gate 161.

Accordingly, the signal VDATA2 includes all character graphics, cursor position, underscoring and highlighting.

Reference is now made to Figure 8 to illustrate the further development of the video signal. A status signal BONW is input to exclusive OR gate 165 the other input of which is the signal VDA'rA2~ Accordingly, in the presence of the signal BONW the entire screen is highlighted or re-versed imaged. The output of exclusive OR gate 165 (VDATA33 is one input to AND gate 166 the other input to which is the NOR gate 168. The output of NOR gate 168 (BLEN) enables the video which would otherwise be output by AND gate 166 to be blanked~ The inputs to NOR gate 168 define three conditions, any one of which is sufficient for blanking. Blanking can be accomplished by the status signal BLANK which is effective for the entire screen. The signal AD15P (which is indicative of processor writing into an active refresh memory, and is therefoxe active for the processor access time) or the signal BL provided by the CRT chip 27 which defines those portions of the video which are outside the area being written. It is therefore, effective only for those portions of the screen for which the signal BL is active. Thus, the output of the AND gate 109 (VIDEX) is the blanked video.

The remaining portion of Figure 8 is used for character enhancement, and may not at all be necessary depending upon a particular monitor or the display being used. For those high resolution displays with phosphors axranged for digital dis-play, the enhancement provided by the remaining logic of Fig-ure 8 may not be essential. Figure 8 is useful, however, when the CRT being used is that of a commercially available TV receiver or monitor whose phosphor is subject t~ "bloom-~7:~5~6 ing" when dri~en by a digital signal of repetition rate higher than a predetermined rate. Character enhancement or prevention of "blooming" is effected by reducing the duty cycle of the drive to the- grid of the CRT depending on the 5 frequency of its input. Since this can only be determined by noting a successive number of pulses to the video, the output of AND gate 166 is pro~rided as an input to a four stage shift register 167. This enables the remaining logic to look one bit in the future (at stage A) and two bits in 10 the past (stage D). The "present" video output provided is one input to AND gate 177. This partially enables AND gate 177, the other input wili determine the pulse width. Under certain circumstances (particularly bit combinations in the register 167) the other enabling input to AND gate 177 will 15 be a half pulse width. The NAND gates 169, 170, 178 pick out particular bit combination patterns and clock flip-flop 171 for the patterns (in stages A-D) of 0101; 0111; 1100; 1101;
1110; and 1111. Whenever such a bit pattern is detected flip-flop 171 is set, gate 172 is partially enabled, and is 20 fully ena}~led at the .rate, and duty cycle of TWMHD (a 12 ~5Hz signal). On the other hand, gate 173 passes the signal TWMHD
for all text mode (FAX*) display; as will be seen, the upper pair of gates 172 and 174 handles all non-cursor represen-ting pulses and the lower row of gates 173 and 175 handles 25 the cursor representing pulses. Since one input to gate 173 is FAX*, the FAX cursor is not subject to width limitation as a result of the gates 169-170 and 178.

For non-cursor signals in text mode which are selected by the gates 169-170 and 178 (and hence set flip-flop 171) 30 the signal TWMHD passes gates 172,174 and 176 to, in effect, slice the pulse width output of gate 177. Accordingly, for selected pulse combinations, a single pulse has its width reduced by gate 177 to limit "blooming". Similar action i~:
produced in gates 173, 175 for text cursor representing 35 pulse~, i.e., one or more of the pulses will be reduced in width.

5~6 ., The gates 174 and 175 are personalized for noncursor and cursor representing pulses ~y their inputs from inverter 183 and shift register 182, respectively. In te~xt mode, cursor representing pulse times are identified by an output of gate 179, which is suitably delayed in register 182 to match the delay of register 167 and flip~flop 171. This partially enables gate 175 which is fully enabled at the 12MHz rate and duty cycle by the output of gate 173 (in text mode only). On the other hand, in page i~age mode, gate 180 is enabled. Because one input is ncc, the normally four pulse wide CRV0 is reduced to three pulse widths at the outputs of gates 180,181. This reduced width page image cursor is coupled through the inverter 183 to pass gate 174 and 177. Although the actual pulse count out of gate 177 for the page image cursor is only three, the visual effect is that of a four pel wide curso~ because of "blooming" on the monitor.

Transistor Ql and Q2 provide, in effect an OR gate to sum the horizontal and vertical sync, through exclusive OR
gate 127 with the output of AN~ gate 177 which is the com-plete video exclusive of the synchronizing signals. The result, availa~le at the tap, is VIDCOMP which can be di-rectly provided to a C~ display. Accordingly, the logic 58 develops an unformatted VIDCOMP in text mode and a formatted VIDCOMP in FAX mode.

Figure 9 illustrates how the signal BLNK* (used as an input to OR gate 162 in Figure 7) is developed. That is, the signal VSYN (available from the CRT chip 27) is used as a clocking input to a rate multiplier 184. The output of the rate multiplier is used to clock a flip-flop 129 which is cleared by the status signal BLINK. Accordingly, the signal BLNK alternates in polarity once for each eight times VSYN is produced. This provides for the blinking cursor in that the cursor is illuminated for eight screens and blanked in the next eight. (Of course, only when the signal BLINK
is active).

~79-024 ~ 6 -~3-Figure 10 illustrates the proc~uction of thc sigl7~1 EDGE. The input sig]lals to the gates of Pigllre 10, that is, R0 Rl define the third row of any charaeter box in the page image mocle. Tl~e sicJnals DR~ through V~ clefine character lines, the sicJnlls lln or llnx (wherc n is an integcr) are c-olumll si(3nl1s c1c~irlillcl cl~a1-acter eolllmns and tl-~e sigr~als FC0 and FCl derinc clot positions within a column. rhc lo~ic in Figure 10 thus E~rovides an output throu~h the i;~verter 186 concurrellt with the sweep writing first line, last line, first column and last column. The concatcnation of these sicJnals is the si~nal ~nGE c]eining the bollndaries of the document. In a man1ler tc> be explained documents of other si~es can be provided on the display screen.

We can now explain how our display in page image can illustrate 85 charaeters per data row t~ith 64 data rows per sereen using a CI~T ehip capahle of writing either 132 char-acters per data row with 32 data rows per sereen or 96 char-aeters per data row with 6~ data rows per screen. ~e set up the CRT chip to write 132 eharacters per data row and pro-20 vide a simulated least significant row address bit, expan-ding row addressing from 32 to 64 rows. Our refresh RP~ had 1024 byte capacity which, since we used 1 bit per character allowed for 8192 characters or more than enoug}l for our 64 rows of a 5 charaeters eaeh.

Figures 11~ through llG illustrate respeetively, several different page image and text rnode displays of a sincJle document ancl Figure 12 represents a map of document mcmory which will produce the displays ShOWIl in Figurcs 11~ through llG.

Figures ll~-lln illustrate four cli~ferent page innage mode displays of the same documellt the only clifrerellce between the ~our displays is causecl by the fact t}lat the cursor is located in differcnt areas in each of the four displays. Because the number of lines of tcxt in the page 35 ~cing displayed in Figures ll~-llD exceeds the text mode display capacity, the document which is shown in the display of Figures llA-llD cannot be illustrated on a single text mode screen. Rather, three different screens are required.
Figure llE shows the first screen constituting roughly the S first one-third of the document, Figure llF shows the second screen constituting essentially the middle thixd of the document and Figure llG shows the last or third screen constituting e~sentially the last third of the doucment.

A comparison of Figures llA-llD with Figures llE-llG
10 will illustrate effectively that the text making up the document is not readable in the page image mode displays whereas it is readable in the text mode displays; on the other hand, the document's format which is explicitly il-lustrated in Figures llA-llD is not directly revealed in 15 Figures llE-llG.

Referring now to Figure llE, and reviewing the screen vertically from the top, the uppermost feature of the screen is "the message line"; this is an area of the screen which is set aside for operator prompts and the like, and it is 20 effectively used, for example, to indicate to the operator what mode the machine is in (for example, insert mode, etc).
The message line is demarcated from the document text by the dotted line. While the message line is generic to all page image displays, the remainder of Figs. llE-G is specific to 25 an exemplary document display. Immediately below the dotted line separating the message line from the text, is text relating to the addressee, brief reference to Figure llA
allows the reader to correlate the location of the addressee data in page image mode display. Immediately below the 30 addressee text, and contained within a pair of horizontally directed dotted lines and a pair of vertically directed lines, is addressor data, which is shown in text mode vertically below the addressee data. Reference to the page image display shows that the addressor data is actually a 35 text block, and as formatted will appear on the same lines of the document as does the addressee data but displaced to ~E979-024 1~71546 the right Thus, it should be apparent that the horizontal dash lines set off block from main text; and as will be discussed the vertically directed solid lines indicate temporary mar~ins. The small rightward directed arrows adjacent each of the vertically directed solid lines indi-cates that the temporary margins are to the right of the global margins .
Immediately below the dashed horizontal line demarcing the block from the main text, is a continuation of the main text of the document. Note that the tab preceding the "W"
(merely shown as a rightward directed arrow) is actually reflected in the page image mode display as a plural space indent; as has been described above the text mode display does not illustrate, except symbolically, the actual extent of a tab.

Referring now to Figure llE and llF, note that the last two lines of text in Figure llE form the first two lines of text in Figure llF. Thi6 is an example of the overlap between two adjacent text mode screens, which as will be demonstrated below, is a function of sentence/paragraph boundaries.

The fourth through the eighth lines of text in Figures llF (braced by a pair of vertically directed solid lines) begins with a pair of graphic sym~ols indicating temporary margins, the relation between the temporary and global margins is indicated by the leftward directed arrows. The absence of horizontally directed dash lines indicates that while this paragraph is subject to temporary margins, it is a component of main text and does not comprise a block.

The last two lines of text on the screen shown in Figure llF is preceded by another graphic indicating a tab. Reference again to any of Figures llA-llD indicate the extent of the tab, a parameter which is not explicitly illustrated in the text mode display. Finally, reference to Figure llG clearly indicates the concluding lines of text in LE979-024 ~ 6 ~ 46-the document; note also that the f1rst line o~ text in Figure llG is the last line in the text in Fiyure llE.

In the text mode display of Figure llG, the plural rightward directed arrows indicate several tab functions, concluded with a required t~b (shown as an underscored tab graphic), reference to any of ~igures 11A through llD indi-cates the actual effect of these tab functions.

Returning now to Figures llA-llD, this page mode dis-play is atypical in that the Figures illustrate the page mode display including format assisting graphics, which are only displayed as an operator actuated option. The format assisting graphics include the horizontally moving ghost cursor, the vertically moving ghost cursor, an indication of the first writing line, an indication of the left and right margins which are applicable to the text associated with the cursor location, as well as an indication of the effective tabs which are also associated with text in the vicinity of the cursor location. Note, for example that the cursor location is different in Figures llA and llB, and so is the indication of the left and right margins Note also the difference between the effective tab positions. Inasmuch as the cursor, in the display of Figure llB is located within the blocX, the message "BL" appears outside the document area in the display, this message appears so long as the cursor is located within this or any other block. Reference to Figure llC illustrates that the cursor is located within the text subjected to margins different from the document margins, and this can be confirmed by comparing the margin indicators in Figures llA and llC. Finally, the cursor in Figure 11D is located in still another portion of text associated with a tab grid which is not the same as either Figures llA or llC, although the right and left margin indicators are identical in Figures llA and llD.

Figure 12 is a representation of a portion of document:
memory, and the information contained therein, which is .

LE97~-024 capable of generating the display~of Figures llA-llG. In Figure 12. text information (or codes) is indicated by the character X, other functions are illustrated by the use of various combinations of alphabetic symbols and in some cases some of these alphabetic symbols are separated by semi-colons, it should be empha~ized that ~he semi-colons in the drawing are solely for purposes of illustration and have no counterpart in document memory. The codes TL, TR and TT are multi byte codes indicating horizontal location as well as the particular function. The tab code (TT) we used is 13 bytes long including a bit for each character position, which bit is set or reset to indicate the presence or absence of a tab stop. Further, the horizontal lines are also used for purposes of explanation and do not have any counterpart in document memory. Document memory is, as has been mentioned before, one contiguous memory; Figure 12 is broken into several parallel lines solely for illustrative convenience, it would be more appropriate to illustrate it the document memory as a single unbroken line or storage array.

Referring now to the upper lefthand portion of Figure 12, the first line of text display is indicated as comprising a plurality of character codes concluded by a carrier return CR. Likewise, the second and third display lines are similar and each concludes with a CR. As will be seen in ; 25 discussing other portions of text, the line ending CR is only used when the oper~tor intends to prematurely terminate the line, (relative to display width) otherwise no line ending at all need be keyed by the operator. Immediately following the third CR are a number of block start bytes, a block insert begin code, and two codes TL,TR providing for temporary left and right margins, and finally, a temporary tab TT code. Immediately following the block start bytes are three lines of text for the block, each terminated by CR. Concluding the block is an end of block byte (BLIE).
The actual TT codes are not shown in Figs~ llE-G since those codes are not displayed in this embodiment. If desired, of course, ~hey could be displayed by changes which should be ~E979-024 11.7~546 apparent. Following the block codes are a series of codes representing the salutatlon, terminated with CR. This is followed by a further CR byte to provide the line space between the salutation and the remaining text, see Figure llA, for example. Note that this line space is not evident on the text mode display. A code indlcating an indent tab follows which is represented in the text mode display by the rightwardly directed arrow graphic. Following that is a sequence of codes for a plurality of characters forming the next three lines of text, this sequence terminates with a CR, since the operator intends the line to terminate early, as is illustrated in any of Figures llA-llD. Following this code is a byte for another line space. Thereafter, codes are inserted for the temporary left and right margins.
Following the temporary margin codes is another sequence of codes corresponding to the text in the intermediate paragraph of the document; this sequence concludes with a required carrier return (RCR). This is used rather than the normal carrier return so that the effect of temporary left and right margins is terminated in the following portions of the text. This code is followed by a further byte for a line ; space. The last paragraph of text is initiated with several bytes for temporary tabs. After the tabs are established another text sequence follows, concluded by another required carrier return; this is used to cancel the temporary tab register set up immediately before this text sequence.
After another CR code for a line space, the signature line is provided. This includes a tab sequence concluding with a required tab. Following that is several text characters concluded with a CR code. Because of the required tab, the line below the signature line begins at the same place as the signature line and this location in text is concluded by a further required carrier return, to cancel the indent tab.
Thereafter, the author/ typist initials appear followed by a CR. The last byte in the document memory is EOD indicating end of document.

L~979-024 117~46 The manner in which operator input is stored in document memory to achieve a result illustrated for example, such as that shown in Figure 12, and the manner in which a document memory containing a sequence such as that as shown in Figure 12 results in the display shown in Figures llA-]lG will be explained in the following portions of the specification in-cluding a series of examples and description of~associated flow charts.
Before discussing the functions of the processor 20, in response to operatox keyed inputs, in order to explain how the functions alluded to hereinbefore are actually achieved it is wort.hwhile to outline the functions performed by the processor. Thus, Figure 13 is a simplified flow diagram of the processing, and Figure 14 is a memory map of the pro-cessor's internal RAM.

As shown in Figure 13 the processor 20 goes through asequence of steps in order to respond to operator key actu-ation to provide the operator with the appropriate display.
The processor 20 is normally in a wait condition waiting key operation detection. When processor 20 recognizes key actuation, it determines at function 200 if a delete key is actuated (depre~sed/released). If it has been, the proces-sor merely sets/resets a delete condition (a flag) at func-tion 201 and returns to the wait loop to await further key actuations.

On the other hand, if the delete key was not the actuated key, then the processor determines at function 202 if a coded function has been actuated. If it has been, function 203 processes this function, and may call other 30 routines if necessary. The particular processing depends, of course, on the function itself. Pollowing the process-ing, the processor 20 returns to the wait loop for addition-al key actuations.

On the other hand, if function 202 did not detect 35 actuation of a coded function key, then function 204 de-LE979-024 11 7~S46 ~50~
termines whether or not the machine is in the page image ode. If it is, function 205 determines whether or not it is also in the delete condition by checking the flag set back at function 201. If it is, then function 213 processes those delete functions which are allowed, and that concludes the processing in r~sponse to the particular key actuation.
., Function 205 and 215 relate to actuation of outboard keys, i.e., keys in the set 151 or 152 (see Figure 2), and of course, the particular processing depends upon the particular actuated key.

Function 208 operates on function key actuation, and in that event function 209 provides for insertion of the function at the appropriate location in document memory and perhaps in the display itself, and the processor returns to lS the wait loop. The location in which the function is inser-ted depends on cursor location, and perhaps on other fac-tors which will be explained hereinafter. If, in the page image mode the key actuation was neither an outboard key nor a function, then it must be a character. As has been ex-plained, the page image mode does not display unique charac-; ters and therefore it is not desirable to use this for text entry. Accordingly, in that event function 210 switches the display to the text mode, either for addition of text, if the cursor is located so as to continue typing into the docu-ment, or in the insert mode. When the condition stated above is true, unction 211 will allow the character to be left in the keyboard queue (if untrue, the character will not be placed in the queue) and thereafter the processor returns to the wait loop.

The processor 20 also supports strikeover typing where the operator keys in text over existing text (not in an in-sert mode). ~his action replaces the existing text, charac-ter for character, with the keyed in text.

~E979-024 ~7~

-Sl~
If back at function 204 it was determined that the ma-chine was not in the page image mode, then function 212 (simi-lar to function 205) is performed. If not in the delete con-dition, function 214 determines if the key entered was a character key. If so, function 217 stores the code corres-ponding to the character in the document memory at the appro-priate location ~of the cursor) and the machine xeturns to the wait loop. If not a character key, function 215 deter-mines if it is an outboard key if it is function 218 is per-formed (similar to function 207). If not an outboard key nora character, the key must be a function which is then stored by function 216 at the appropriate location~

Not shown in Fiure 13, of course is the particular pro-cessing carried out in response to actuation of different keys, nor how the display is controlled in either text or page image mode.

Prior to discussing particulars of the programming of processor 20 reference is made to Figure 14 which indicates in a general fashion the manner in which internal RAM of the processor 20 is employed. Omitted from the memory map of Figure 14 is the memory area allocated to program storage itself. Although in an embodiment of the invention which has been constructed~ that program was present in the internal RAM, those skilled in the art will understand that is not essential to the invention since a program could also be stored in ROM. Initially, as the operator actuates various keys, coded signals corresponding to actuated keys are progressively stored in the keyboard queue 224. The processor 20 extracts codes from the queue usually in the 30 order in which they are entered, and eventually generally stores the related coded signals in the document memory 222.
During text entry, the machine is in the text display mode and to effect a text display, the processor 20 generates a ~c~:t table (or table A), which is located in portion 221 of the RAM. In conjunction with generating the text table 221 and document memory 222, the processor 20 writes in a text LE979-024 il 7 L~46 RAM buffer 25 to eEfect a display in connection with the apparatus shown in Figure 4. In the course of this pro-cessing, the processor 20 also keeps track of various para-meters in a number of pointers, counters, etc., which are generally included in the RAM area 223. At any time in the course of text entry, or thereafter, the operator may select the page image mode. In page image the processor must format the entire document up to the page selected for displaY to determine how to format the page selected for display. Once this is accomplished the processor 20 reviews the contents of the document memory 222 and creates a page table (or table B) which is stored in portion 220 of the RAM. Erom the data stored in document memory 222 the processor 20 then writes in a page image RAM buffer 26, to effect the appropri-ate display. In a fashion entirely similar to the textdisplay processing, the page image display processing also relies on a variety of pointers and counters from the RAM
portion 223.

The writing of page boundaries for a single page size is provided for in the logic of Fig. 10. Other page boun-daries may, in the alternative, be displayed with the use of the OR memory 227. This is a lK byte portion of RAM into which page boundaries of a selec~ed size is written by the processor 20 on appropriate command. When writing page image RAM 26, the processor OR's each byte, as it is de~e-loped, with the corresponding byte of the OR memory 227. If desired, the logic of Fig. 10 could be eliminated and all page boundaries could be implemented via the OR memory 227.
The particular page size written into OR memory 227, and from there to the display, is determined by software (or firmware), examples of which will be described. In the alternative the EDGE developing hardware could be ~odified to make it more flexible so it could generate a selected page outline from a repertoire of outlines.

~E979-024 1~L7~

System Software In general the processing effected to w~ite either text or page image display has similar purpose. The processor examines document memory in the vicinity of the cursor and based on a set of fixed rules (different for page image and text) displays sequentially the characters found and arranges the display (line endings, etc) based on a combination of mode and codes encountered. Since the text mode display is essentially unformatted, display of any portion of document memory can begin at any point. To the contrary, the page image display, since it is formatted, depends heavily on preceding text format to determine the location of the first character on a page as well as the margins in effect for the beginning of the page. If the document had previously been formatted (and if the format is not altered) the processor saves significant signposts to allow rapid writing of the page RAM 26. The information forms the page queue. If the page queue is not available or no longer accurate, it must be recreated before display can begin in page lmage for at least the portion of the document which precedes the dis-played segment. The software which controls processor 20, to effect the functions briefly described above, and to be described in more detail hereinafter, can be divided into six segments. An interrupt processor (shown in Figures 15A-15C) the purpose of which i~ to respond to changes in thekeyboard state, that is, depression and/or release of the various keys, and from this to build a keyboard queue for use by other routines. The main system program ~shown in Figures 16.1~16.18) the function of which is to firstly respond to the keyboard queue and from that information, build the document memory, and call other routines as neces-sary to respond to the information passed or derived from the keyboard queue. A sentence processor, or text mode associated set of routines (illustrated in Figures 17.1 through 17.12) which, when called and based on information in the document memory, builds the text table referred to here-.

LE979-02~ ~7~

inafter, and in conjunction with the text table and the docu-ment memory writes into the text mode refresh R~M 25. A set of cursor routines (illustrated in Figures 18.1 through 18.11) which manage cursor position in both the text and page image 5 display modes. A set of FAX or page image routines (illus-trated in Figures 19.1 through 19.31) which, when called and in response to the document memory both build tXe page table and page queue referred to hereinbefore as well as write to the page image refresh R~ 26. And finally, a series of 10 graphic routines (illustrated in Figures 20.1 through 20.12) which are used by the page image routines for the purpose of drawing page outlines other than the standard 8 1/2 x 11 page outline which is, in effect, "drawn" by the hardware referred to previously. The graphic routines also put up the tab grid, temporary margins, ghost cursors and active margin indicators, as well as first and last writing line indicator.

The main function provided by the interrupt handler is to translate codes derived from the keyboard 10 into inter-nal system codes, and store, in the order of receipt, thecodes in a keyboard queue. The main system control program initializes various portions o~ the system hardware on power up, and thereafter is in a wait mode which is terminated when one or more signals are detected in the keyboard queue.
The main system control program examines the contents of the keyboard queue in response to the particu~ar contents of that queue either processes it itself, or calls other rou-tines for processing, or both. These other routines can be divided into those routines directed to page image display mode, and other routines directed to text display mode.
Both these groupings of routines respond to the various inputs, to alter the associated display if necessary in accordance with the input as well as in accordance with previously input text, functions, etc. Both of these group-ings of other routines operate with the document memory,various page parameters such as left and right margins, number of lines on the page, etc. Both the text routines ~E979-024 ` ~$7il~6 and page image routines, in -the course of writing the asso-ciated text RAM or page image RAM also construct an asso-ciated table to speed up the processing , especially cursor control. Each of these tables is line organized, that is, there is an entry for each line on the display. In a first table (table A) which is related to text mode operations, the table includes 5 bytes per (display) line for the entire document, the first byte comprising 6 bits indicating a PAD
distance ~that is, the distance from the left edge of the screen to the first displayable character in the line) and two control bits, one indicating the presence of a carrier return (ox required carrier return) in the line and the other indicating the presence of a sentence ending in the line. The second and third bytes for each line point to the ; 15 location, in document memory of the first character on the line. The fourth byte indicates a quantity for an indent tab, if such exists on the line as well as bits indicating the presence of active temporary left or temporary right margins. Finally, the fifth byte is reserved for an indent amount on the line for any block in that line. The other table (table B), related to page image display, includes six bytes per line of the portion of the document on the dis-play. The first byte includes seven bits for the quantity PAD, and a single bit indicating format change on that line.
The second byte indicates the length of the line segment in character spaces. The third and fourth bytes point to the location, in document memory, of the first character for the line. The fifth and sixth bytes of an entry in table B con-tain the address to another entry in table B which describes an additional segment on the line, if any.

INTERRUPT HANDLER
....
Figure 15 A-C is a flow diagram of the interrupt handler.
As shown in Figure 15A, on detection of an interrupt, the processor 20 determines the source of the interrupt, printer interrupts or recorder interrupts are appropriately ~.7~ 6 handled by routines not disclosed herein. If the processor determines that the interrupt is neither printer, recorder or keyboard originated, it is considered an extraneous interrupt and is merely reset. On the other hand, when a keyboard originated interrupt is detected, processing continues at decision blocks 244-246. The first determines if a keyboard inhibit bit (flàg) is on, which is set in the course of servicing a printer or recorder interrupt. If that is not the case, and if this is considered a normal keyboard interrupt, then the processing skips to function 247 (~igure 15B). The normal keyboard interrupt is that whose source lies in a key depression or release. In addition, certain repeat key capabilities are provided when a key remains depressed, and this function is implemented by a timer on the keyboard interface, when enabled. Thus, deci-sion block 246 determines whether or not the timer has been enabled due to depression of a particular one of a selected one of the keys on the keyboard 10.
Function 247 determines whether or not the key is a make/break entry, meaning that a different code is generated on making as opposed to breaking. In either event, (functions 248 or 253) the keyboard interrupt code is translated to an internal code set. If the particular key made is not a make/break entry, decision block 249 determines whether or 25 not it is a typamatic input. If it is such input, decision - block 256 determines whether or not the keyboard queue is empty. If it is not, function 257 sets a flag to terminate page image processing early. Note however, that the code is not stored in the keyboard queue, this is to prevent storing 30 a series of similar codes in the queue. If on the other hand, the queue is empty then decision block 258 determines if this particular character is an allowed typamatic (if it is not, this indicates the character is not a typamatic and no further processing is performed). If it is allowed deci-sion block 250 checks to see whethex the code key is de-pressed, and if it has been, function 259 sets the code bit.
Regardless of prior processing, func-tion 251 determines if this is a control entry, referring to a space, carrier ~7~;416 return, tab, required tab or required carrier return. For any of these functions it is necessary to terminate the page imaqe processing early, and therefore, function 260 sets a flag to this effect. In any event function 252 stores the translated code in the keyboard queue for processing by the main system program.

A]so illustrated in Figure 15B is the processing per-formed in the event that the key depression is a make/break entry, subsequent to translation of the code to an internal code set and storage in the keyboard queue. Decision block 254 determines if the key depressed is the cursor key, if it is then function 255 enables the typamatic interrupt, that is enables the referred to timer, and that concludes this processing.

Returning now to Figure 15A, if decision blocks 245 and 246 responded to a make/break typamatic interrupt, then the processing performed i9 shown in Figure 15C. If decision block 261 indicates that the code key is depressed, then processing is terminated, i.e. the interrupt is ignored. If the review key has been depressed, as determined at decision block 262, then function 264 merely disallows or clears the referred to typamatic or timer interrupt. If the review key had not been depressed function 263 resets the typamatic in-terrupt bit and will store the previously entered cursor code on the keyboard queue if the queue was empty, otherwise the code is not stored. Reviewing Figures 15A to 15C, it will be seen that a keyboard queue is built, in response to sequen-tial key actuations of the keyboard 10. Under certain con-ditions flags will be set to terminate page image processing early, the effect of this will be seen as this description proceeds.

Referring now to Figure 16.1 through 16.18, and es-pecially Figure 16.1, functions 265 through 269 are per-formed only on power on or reset. As illustrated, these -~E979-024 functions provide for initiallzing the apparatus including appropriate internal status pointers, document memory, the text and page image refresh RAMs, the "OR~ memory as well as setting up the CRT controller parameters for the page image S mode. Function 26g, to complete the initialization operation calls the routine KBFAXSET which itself calls KBP~GEIM (the latter shown in Figure 16.12). Set up of the CRT controller merely refers to passing certain parameters to that chip so that it will appropriately coact with the other devices to refresh from the page image ~ 26.

Onc~ the processor returns from the routines called at function 26~, function 270 is performed to check the key--board queue, if empty, the processor remains at function 270 until the keyboard queue has one or more codes therein for processing. If the queue is empty FAX messages, if any, are dequeued and displayed.

TEXT DISPLAY MODE

In order to describe the manner in which the routines illustrated in Figures 15 through 21 operate in the text display mode, those functions will he described including ; writing to the text refresh RAM, and in that regard, effect-ing cursor movement in response to actuation of the various cursor movement keys, providing for word underscore, delete word underscore, character underscore, dele~e character underscore as well as scrolling.

Before beginning the discussion some terms will be defined to assist the reader in understanding the descrip-tion. Firstly, the processor 20, in the text mode, supports a number of registers r the majority of which are internal to the processor RAM. The one external register is STATUS
(corresponding to the status latch 50 (Figure 4). The following internal registers shown in the table below main-tain the quantities identified opposite their name in the table.

~ .

.~979-024 Register Function ITABPOS . Indent tab position INDEXPAD Quantity or amount to pad for index found on previous line SENTPTR Pointer to next unfilled location in text refresh R~M
WORDLEN Counts length of word du-ring a look ahead to see if the word will fit on the current line WORDCTR Counts the length of a word as the word is dis-played CHARCTR Counts the number of character~ that have been displayed on the current line DOCPTR Pointer to the address in document memory of the next character that has not yet been displayed TABAPTR Pointer to the text ta-ble ttable A~
LPAD Amount to pad with spaces from the left edge of the display to first display-able character LINEL~N The maximum length of a line on the display For this description we will assume that the machine is in text display mode, and that the operator is keying in characters or functions. In initially keying in a document 35 the operator actuates key 123 (T) in concert wlth key 137 (code~; resulting in a "coded T". This is recognized by KBINTROT and stored (function 252 Fig. 15B) in the keyboard queue. The main system recognizes the entry (function 634 Fig. 16.2), sets DOCPTR (function 635) and, if in text mode 40 calls KBSENTEN (function 638). The latter is illustrated beginning at Fig. 17.1. There, functions 638-641 initialize certain (software) registers. If there is no text in memory this concludes the processing. In that case there is no need to use coded "T".
Thereafter, siynificant processing awaits insertion of further data representing the desired document. Assuming the operator keys in information Eor a new document then function 270 (Eig. 16.1) will recognize that thè keyboard queue is not empty, the processor will examine the contents of the first position of the ke~-hoard queue, and in our example, function 271 will recognize a character or required space. Eunction 272 will store that code in the document memory. Function 273 then calls KBSNMDRT (routine to call the sentence modifier routine (see Figures 16.17)). As shown, function 274 calls KBSENMOD (see ~igure 17.6). As lS shown, functions 277 and 278 obtain the text table (table A) pointer and the address of the cursor, i.e., the location in document memory relating the cursor to text on the dis-play. Function 279 sets a bit in STATUS to indicate that sentence modify processing is taking place and function 281 sets LPAD and LINELEN. The parameters which are used, namely a PAD amount of 5 character spaces and a line length of 52 characters are parameters which have been employed in an embodiment of the invention which has actually been constructed. As pointed out previously, these may be varied well within available technology and components, and parti-cularly, the line length may be increased for example up to 64. Functions 285-287 determine whether or not the parti-cular line has an active temporary left margin, right margin or a block insert, and this is determined by reference to the text table. Thereafter, function 280 sets INDEXPAD if there is a preceding index function. Function 282 gets ITABPOS, function 283 o~tains the value DOCPTR and function 284 computes the address of the text table at which point processing will terminate. Since the text table is in a rigid format, this is easily determined from TABAPTR. The routine thereafter skips to a point A (Figure 17.1).

LE9 79 - O 2 4 1~7159L6 In keying the first character of a document the proces-sing is relatively simple, requiring on]y writing the appro-priate text table entries and illserting one byte to RAM 25 to display the character. As more and more characters are entered into the keyboard queue (and from there to document memory) additional entries are made to the text table and to the RAM 25. The RAM is rewritten beginning with the line the cursor is on. To explain this processing we will, in the following description, assume that a quantity of text exists in document memory and the refresh RAM 25 is being written.
As shown in Figure 17.1, the processing determines if the cursor is pointing to a block insert, BLIE, BLIB, (BLIE
and BLIB refer to internal codes designating block insert end and block insert beginning, respectively), or a temporary tab. Assuming it is not, function 292 moves the cursor off the screen. This merely requires setting the cursor loca-tion to some non-displayed location. The processing con-tinues through functions 233 and 294 with no significant effect. At function 295, if INDEXPAD is not zero, function 296 is performed to load CHARCTR with INDEXPAD. The sum of CHARCTR plus LPAD is, as a consequence of performing func-tion 297 stored as the PAD in the text table. On the other hand, if INDEXPAD is zero, then ITABPOS is transferred to CHARCTR (function 639). Function 298 writes into the indent tab byte of the text table. Thereafter, functions 298 through 303 are performed with no significant effect at this time. Function 304 sets a flag to indicate that no char-acters have yet been displayed, and func~ion 305 sets a flag to indicate that no characters have been looked past on the current line. As will be seen, before anything is displayed, the processing determines if a particular word containing the first character on the line will fit on the line, the flags~set by functions 304 and 305 are used to keep track of this look ahead process. Function 306 deter-35 mines if the process has gone past the end of the display,and this is determined by comparing the present position - (-the contents of CHARCTR) with LINELEN. Function 308 thereafter displays five required blanks (the required blank _E979-024 ~7~6 is indicated by the character ~). On the other hand, if a TLM is active then function 640 is performed to load ~ in position 1-4 and 6 and "1" (vertical bar) in position 5.
Since functions 30~, 640 write to the refresh R~M 25, the result of performing function 640 on each line subject to a TLM is the vertically directed solid line, as seen in Fig.
llF, for example. Function 311 calls a routine PAD and passes to it the quantity in C~ARCTR. This routine is shown in Figure 17.8, and it is used in effect to write the text refresh RAM. The writing occurs at function 314, and the register SENTPTR keeps in step with the writing so that it always indicates the next unfilled position. The processing then returns to point A7 (Figure 17.2). Via function 316 DOCPTR is obtained. Functions 317 and 318 provide for zeroing of INDEXPAD and WORDLEN, and saving the contents of DOCPTR in a register TEMP. Thereafter, function 321 stores the DOCPTR in the text table, providing a ready cross-reference in the text table to the document memory addressof the first character on the line. Since we have assumed that the code which initiated this processing referred to a regular character, function 324 will branch to point D
~Figure 17.3). There an EOS (end of sentence) indicator is cleared (function 325). Functions 327 and 328 then incre-ment TEMP and WO~DLE~, which provide an access to the next character in document memory and track of the length of the word that is being processed. Function 329 determines if the current word will fit on the line so far; this merely requires comparison between WORDLEN plus CHARCTR and LINELEN. Assuming it will, the processing branches to A2 (Fig. 17.2) where on this pass function 320 determines that the first character hac indeed been passed. Therefore, function 321 need not be performed. Similar processing continues until the end of the word is recognized, such as for example, at function 330. Assuming that this is a normal end of word, the program jumps to point E ~Figure 17.3) where function 331 determines if the current word will fit on the line. Assuming it will, the program jumps to point F (Figure 17.4~ where function 332 resets the register ~E979-024 1~7i 546 WORDCTR to zero. Thereafter, function 333 compares the con-tents of WORDC~R with WORDLEN, since the latter indicates the length of this word whereas the former is zero, func-tions 334 et seq. will be performed. In effect, functions 333 through 339 form a loop which is traversed once for each character in the word, and depending on the character, the routines CDSB or DSB are called, the former to display (i.e.
write to the R~M) a space or a character depending on cursor position, the latter to display (i.e. write to the RAM) a 10 character. Each time the loop is traversed WORDCTR is incremented. The routines called are shown in Figure 17.1.
Depending on the entry points to these routines function 348 may or may not be performed, it is only performed to indicate that the character in this location will be displayed only if the cursor is on it. Reference to Figure 17.4 indicates that CDSB is called to display a required space or an under-scored required space. As will be seen, carrier returns (CR) as well as required carrier returns (RCR) also call CDSB rather than DSB. In any event function 349 sets a flag 20 to indicate at least one character has been displayed on the current line, function 350 determine~ whether or not to set the cursor on this character, by comparing the character position found in SENTPTR, with the cursor position. In the event the cursor is not to be set on the character then function 351 25 is performed to determine if the processor has gone past the end of the display. Assuming it has not, function 352 is performed and, if the character to be displayed is not a character (such as a CR, RCR, etc.) then some or all of functions 353-355 are performed to determine what must be dis-30 played. In any event, function 358 through 360 are performedto display the character (that is to write to the text refresh RAM), and increment SENTP~R, C~ARCTR and DOCP'rR.
The process then returns to the calling routine (Figure 17.4) wherein the loop is again repeated until such time that 35 function 333 determines that the entire word has been dis-played. When it is determined that the entire word has been displayed function 344 determines if the previous character ~as not a space, for it is was not, then a special function must be processed. If the previous character was a ~pace then function 40 345 determinffs ii the end of sentence was found. As-~'7;~lSi46 suming it was not the program loops to point A4 (Figure 17.2) : wherein the next word is examined in a manner ~imilar to that previously described.

At some point in this processing, function 331 (Figure 17.3) will indicate that the current word will not fit on the line. In that event function 347 is performed to deter-mine if processing has gone past the end of the display. As-suming it has not, functions 348 and 349 are performed, the first calls PAD (Figure 17.8) to fill the rest of the line 10 with spaces (in other words, since the word will not fit on the line no portion of the word will be displayed there and any former contents are blanked out) and function 349 incre-ments SENTPTR to point to the address of the location in the text refresh RAM corresponding to the first position on the 15 next line of the display. Thereafter, function 350 is per-formed to determine if SENTPTR has gone past the end of the display. Assuming it has not the program loops back to point A3 (17.1) where the parameters LPAD and LINELEN are again reset tfunction 294) and additional characters are ex-20 amined and displayed to fill out the new line. At somepoint in the processing, an end of sentence may be recog-nited. If function 361 (Fig. 17.2) determines that a space was preceded by a period then some or all of functions 362-366 are performed. End of sentence is recognized as a peri-25 od space space sequence. Function 366 sets in table A anindicator (to be used in the curs~r routines) for end of sentence (EOS). Function 366 also increments WORDLEN by uni-ty to account for the second space, and the next word is ex-amined.

; 30 During the display operation, if at any time function 344 (Figure 17.4) determines that a word ending was not via a space, then a special function has been recognized, the program loops to poin~ G ~Figure 17.5) for that processing.
The character's identity is determined, in a specified 35 order, in one of functions 367 through 374. As shown in Figure 17.5, when a carrier return is recogni2ed tfunction LE979-024 ~7~

375) a bit is set to indicate a CR for appropriate writing in the text table ~function 376) and a call to CDSB, to display a space unless the cursor i5 on it. Required car-rier returns, in addition, termlnate indent tabs, and any temporary margins. After a return from CDss entered via a carrier return, processing loops back to point El (at func-tion 347--Figu~e 17.3) indicating end of line. ~

On the other hand, tabs and required tabs both call DSs (functions 380-381, 383-384--Fig. 17.S) for display of the right directed arrow (see Fig. llE, F and G for examples).
The corresponding functions 382 and 385 reset the status bit to indicate no characters have been displayed on the current line and the return is to point A4 (function 318-Figure 17.2). Recognition of an insert code results in a display (functions 378-379--Fig. 17.5) similar to the end of a current line. This leaves the remainder of the current line blank for the inserted characters. As will be seen, when insert is again encountered any remaining space is deleted and the display is closed up. Indexes are recognized (func-tion 372) to ensure that an index is effected and maintain-ing current horizontal position, INDEXPAD is loaded with CHARCTR (function 386), ~ia functions 387 and 388 CDSB is performed and the return is as the end of a current line.

End of document code is recognized (function 373) and function 389 appropriately writes the text table. Function 390 re-initializes LPAD and LINELEN, so as to be ready for additional keying and display, function 391 calls CDSB for display. Function 392, in the event the end uf display is not reached, calls BLEND (function 393) which blanks to the end of the display.

The routine BLEND is shown in Figure 17.9. As shown there functions 394 through 396 determine how far to blank on the current line and then call PAD (Figure 17.8) to effect that purpose. On return, function 397 through 399 35 form a loop, blanking an additional line on each iteration LE979-024 ~ i5~6 of the loop until function 398 determines the end of the display has been reached.

Accordingly, via the foregoing functions the initial text entered by the operator results in building a keyboard queue, which is then used to both fill the document memory and then write the text table and the text refresh RAM.

The operator can, after keying in initial or "normal"
text, key in text "blocks", a discussion of that however wilI be postponed until aEter a description of the page image mode. Prior to that discussion, however, reference will be made to the cursor routines to indicate how cursor motion is constrained during text mode display.

TEXT CURSOR PROCESSING
-- .

Assuming the operator has actuated one of the cursor 15 keys; in the course of processing (of Figure 16.1) function 400 will identify a code, in the keyboard queue, correspond-iny to a cursor movement key, and the processing loops to point J (Figure 16.8). At tha~ point, the display mode is ` determined, and assuming that function 401 determines that 20 the machine is in the text mode, function 402 examines whether or not the function input was cursor right. Depend-ing on the particular cursor motion required, one of the routines KBSCRT (for cursor right), KBSCLT ~for cursor left), KBSCUP (for cursor up) or KBSCDN (Eor cursor down) is 25 called (assuming the processor is not in the insert mode which is tested for at functions 403-405). These routines are shown in Figures 18.5, 18.8, 18.6 and 18.~, respectively.
On the other hand, if in insert mode different processing - shown at entry AE (Fig. 16.18) or at entry point AF (Fig.
30 16.10) is effected. Discussion of cursor processing in in-sert mode will be postponed.

- Turning to Figure 18.5, a text cursor right is ex-ecuted as shown. Function 450 determines if the next LE97~-024 ~.'7~ 4~

displayed character from the document memory is on the next line of the display. Since the text table indicates the address in document memory of the first character on the next line of the display, function 450 need merely compare 5 the address of the next displayable character with the - corresponding entry in the text table for the next line of display. ~ssuming that the next display character is not on the next line, function 451 determines if the cursor is on an EOD code; for if it is, the cursor cannot be mo~ed for-10 ward, in fact, it is not moved at all. If that is not the case, the cursor is moved to the next displayed character by writing an appropriate address in the CRT chip at function 45~. On the other hand, if the next displayed character is on the next line, function 453 determines if the cursor is lS presently on the last line of the display, if it is, the routine DOCROLL is called to scroll the display. Either at the conclusion of scrolling, or i~ no scrolling is required, function 454 moves the cursor to the first displayed charac-ter on the next display line by appropriately writing to the 20 CRT chip. Thereafter, function 455 determines if the cursor was last on a character which is displayed only with the cursor thereon. If that is the case then the function which has previously been displayed is replaced by a space, at function 456. Function 457 looks at the new chaxacter the 25 cursor is on, and if it is one of those which must be dis-played only if the cursor is on it, then function 458 re-places the space with the appropriate function by altering the contents of the text RAM at the cursor location.
From the foregoing it should be apparent that the operator 30 is not capable of moving the cursor, in text mode, to any location which does not presently contain a character (or space) which is actually being displayed~ More particular-ly, the operator cannot position the cursor on blanked areas of the display. Furthermore, specially de~ined functions, 35 i.e., CR,RCR, INDEX or REQUIRED SPACE are normally displayed as a space, and will only carry an appropriate graphic if the cursor is located thereon. Figure 18.8 illustrates the processing carried out for cursor left, which is to a LE979-024 ~ 546 similar effect. ~

The processing carried out for cursor up is shown in Figure 18.6. As shown there, function 413 determines if the cursor is on the first display line. If it is, function 414 determines if the cursor is at the start of document, for if it is, the cursor cannot be moved up or back at all, and this ends the process. On the other hand, function 416 de-teîmines if the cursor is on the first line of the display, and if it is, then the routine RVDOCROLL is called to scroll the document back so as to allow the cursor to move up.
After the processing, or if that routine is not called, function 417 moves the cursor to the start of the prior line, i.e., the leftmost displayed position. Thus, not only does the cursor up move the cursor up one line if possible, it also moves the cursor to the start of the previous line.
Thereafter, functions 418 to 421 determine whether or not the previously displayed character must be changed since the cursor has left it, or if the character newly associated with the cursor must be changed because the cursor is on it.
20 Again, the processing illustrates how cursor movement is constrained. The processing for cursor down motion is shown in Figure 18.9; in view of the preceding discussion, discus-sion of this proc~ssing is not believed necessary.

As seen, because of cursor movement, a scrolling may be 25 effected, either forward or reverse. The routine RVDOCROLL
is shown in Figure 18.7. As shown, functions 422 through 425 set a display line counter to zero, and then examine the first line of display to determine the presence of CR, RCR, or EOS. If a line thus examined has one or more of these 30 codes then the loop is exited to function 427. In this fashion, the first line in the display having one of those codes is selected, and the display line counter, which has been incremented each time the loop was traversed, function 424, identifies the first lile so found with that code. If, 35 on the other hand, the screen did not contain any of these codes, then at the last line of the display, function 425 1,E979-024 ~ 7~4~

jumps to function 426 to reset the display line counter to zero. Accordingly, either following function 423 on identi-fication of one of thesè codes, or following the completion of function 426, function 427 calculates the top line of a 5 new display by reducing the present value of the display top line by 11 less than a number in the display line counter.
This provides for a "carry-over" in a reverse scroll to maintain sentence or paragraph boundaries. With this calcu-lated top line value , function 428 calls SE~TROLL. This 10 routine is shown in Figure 17.6. The routine SENTROLL, starts with the new top line as calculated, to create a new display from the text table and document memory.

The forward document scroll, FDOCROLL, is similar to the processing shown in Figure 18.7 with three exceptions, 15 instead of examining the first line of the display, as does function 422, the last line of the display is examined.
Rather than looking at the next line of a display, at func-tion 426 an earlier line is examined, and instead of reduc-ing the old top line value to achieve the new display top 20 line value, in doing a forward scroll that value is calcu-lated by increasing the present displayed top line number by the appropriate amount.

In addition to simple cursor motion right, left, up or down, the cursor can be advanced one word forward or back (ln text mode only) via keys 109,110 ~Fig. 2). When one of these ~eys is depressed an indicative code is inserted in the keyboard queue. It is examined by the main system pro-gram, via K (Fig. 16.1 to Fig. 16.5) where it is recognized at function 701. Processing skips, via O (to Fig. 16.11).
30 Depending on whether key 109 or 110 (for forward or reverse motion, respectively) was depressed either function 702 or 703 will recognize the code. Accordingly, functions 704 or 705 will determine if the machine is in insert mode, if not~
either KBSWCFW or KBSWCBK is called via functions 708 or 35 709. Discussion of cursor motion in insert mode will be temporarily postponed. The sub-routines are illustrated in LE g ~ 9- o 24 ~L~L7~

Figs. 18.10 and 18.11, respectively.

Fig. 18.10 shows the processing for moving the cursor`
forward one word. Functions 712, 715 and 718 form a loop which is traversed once per character until a word ending is located. Each time the loop is traversed TEXT CUR F~D is called (Fig. 18.5) to move the cursor forward one character.
When a space is located function 714 sets the function flag.
On reaching the character or required space beyond the word ending the flag is reset tfunction 717) and processing returns. Similar processing is carried out for word reverse (Fig. 18.11) except that TXT CUR RV is called ~function 725) to back up the cursor. In either processing if EOD or start of document is encountered processing terminatesO

~NDERSCORE
In this section we will discuss the functions under-score, delete underscore, word underscore and delete word underscore.

If in the course of processing the keyboard queue the processor determines, at Eunction 437 that an underscore 20 code is detected, then function 438 is performed. At func-tion 438 the document memory location corresponding to the present cursor position is examined. This is found by referring to DOCPTR. This point in the document memory is examined and if a character is located there the underscore 25 bit for that character (bit 7) is set; a similar storage will be effected in the text refresh RAM as will be ex-plained. On the other hand, if the document memory does not contain a character at this location, then the operation is ignored. Thereafter, function 273 calls KBSMDRT which will 30 call KBSENMOD to modify the display. On the other hand, if the operator had asserted keys 137 and 122 (see Figure 2) simultaneously, indicating a desire to perform a word under-score, then in the course of processing, function 439 deter-mines that a coded function has been read from the queue.
35 The function 441 (Figure 16.3) recognizes a coded I (the ~7~6 ` LE979-024 wor~ underscore key-122) and therefore functions 442 and 443 would call firstly KBWUSCOM (Figure 16.13) passing a "set"
flag.
To see this processing in detail we now refer to Figure 16 13.

KBW~SCOM begins at function 444 to scan the document memory backward to find the beginning of the current word.
; This is determined by locatinq a space (or a function or a buried code) immediately preceding a character. Thereafter, function 445 scans the document memory forward until the end ; of the current word is found, this again requires locating a character followed by a space (or function or buried code).
In the course of forward scanning through the document memory, from the beginning of the word, function 445 either 15 sets or clears the underscore bit of each character. Since the program was entered, at function 443 passing a "set"
flag, each underscore bit in the document memory is set via function 445. After function 445 the subroutine returns to Figure 16.3. Function 443 is a call to KBSWCBK, the pro-20 cessing for which is shown in Fig. 18.11. The function ofthis subroutine i5 to move DOCPTR to the beginning of the ; word, so that when KBSENMOD is later run to re~write the display, the entire word becomes underscored~ More partic-ularly, with DOCPTR now pointing to the beginning of the 25 word, following the call to KBSWCBK, function 273 (Fig.
16.1) calls KBSNMDRT (Fig. 16.17) which calls KBSENMOD (Fig.
17.6) to rewrite the text display from the cursor location forward. To ensure that the coded I (key 122) produces underscoring of an entire word, the processing first writes 30 document memory (KBWVSCOM--Fig. 16.13), moves the cursor backward to the word initiation (KBSWCBK) and then rewrites the text display (KBSENMODFig. 17.6).
Before describing operation of delete underscore and delete word underscore we will examine how the processor 35 enters and leaves the delete condition. When the operator asserts the delete key 106 (Figure 2) the code in the queue is recognized at function 446. Thereafter, function 448 T 1~ 79- 0 24 ~7~L5~6 scts the dclete eondition on dcpression and rcscts thc~
dclete eondition on lift; tlle delcte eondition is mcrely a Elag m~intaincd ~y the proeessor, so that the flay is sct so long as the key is deprcssed, Lut as soon as the key is relcasecl, tlle flag is reset. ~ecordincJly, delete is a mode or funetioll modifier, by itself it llas no funetion. Proees-sing then skips to unetioll 449 to loo]; at thc nc~t entry in the clueue.

~eeordinc11y, wllcn thc next eode is recogni7ecl, the 10 proccssor at funetioll 459 clctcrrnines that thc r)roeessor is in the delete eondition (assum:illg the delcte mode flag is set). ~eeordinyly, the proeessing skips via point I to funetion 460 et seq (see Figure 16.7). In the eourse of tllis proeessing, funetion 462 will reeognize t}~at the entry is the delete hypllen or delete underseore and the eursor is on a eharaeter. ~eeordinyly, funetion ~63 clelctes the underseore bit of the eharaeter in the display refresh ~M
(loeated at eursor loeation) and in the doeument memory, (loeated via DOCPT~). Following that funetion 464 ealls 20 KBSCRT for a eursor right funetion. Thereafter, the pro-eessing returns to funetion 449 to read the ne~t eode in the queue.

If, rather than a simple delete underseore, the I (key 122) was aetuated in a delete eondition, then fl~netion 642 25 would reeoynize the eode. Aeeordingly, proeessinq similar to that deseribed in eonneetion with word underseore is effeeted exeept -that rather than "setting" the unclerseore bit in doeument m~mory, that bit is elcarccl by funetion 643.
Proecssing eontirlues at funetion 644, to eal] ~ S~CBK and then with KBS~N~IOD to rewrite the display.

Most of the rest of thc proeessiny in ligure 16 relates to ~X or page image moclcs (wllieh will be diseusse(l Lclow) c~:ec~t for thc in~crt mode operations~

~E979-024 117~5~6 INS~RT
If, in processing the key~oard queue the processor recognizes assertion of the insert key 104 (Figure 2) func-tion 465 directs the processing via point Q to Figure 16.9.

At this point function 643 recognizes an entry to the insert mode. Function 644 checks that the machine is in text mode, and if so, function 645 opens the document memory.
By this function, all codes in document memory to the right of DOCPTR are moved down to the maximum extent possible so that all available memory is directly adjacent DOCPTR. The processing then skips (AC) to function 273 tFig. 16.1) to call KBSNMDRT (Fig. 16.17. I'here function 274 calls KBSEN~IOD
(Fig. 17.6) to rewrite the display. This rewriting begins at the beginning of the display line in which the cursor is located. KBSENMOD rewrites the lines on the display, how-ever when the document memory had been opened (function 645) an insert character was recorded in document memory. In the course of rewriting the display, when that character is encountered (function 323--Fig. 17.2) the processing skips to point C (Fig. 17.3). There function 646 recognizes the insert character, this results, at function 348, in blanking the remainder of the line. Thereafter the remainder of the text display is written. Accordingly, going to insert mode opens up both document memory and the portion of the display to the right of the cursor. However, the "opening" or "hole"
is of different extent. In document memory the "hole" is as large as possible. In the refresh RAM the "hole" is the re-mainder of the line the cursor is on. As new text is now added, KBSENMOD adds the new text into the previously blanked area on the display by continually moving the insert character ahead of inserted text. When the inserted text completely fills the previously blanked space, the insert character is pushed down to the next line with similar results, i.e., the next display line is blanked for the provision of additional inserted text. On the other hand when the main program recognizes the insert character in the keyboard queue, and the machine is in insert mode, then L~979-024 iL~L7159~6 function 647 (Pig. 16.9) recognizes ~n exit from insert rnode. ~ccordingly, function 648 closes the document memory, resets the insert bit (exiting insert mode~ and function 649 directs the processing to call KBSNMDRT which in turn calls 5 KBSENMOD to rewrite the text display to in effect "remove"
any existing blank space to close up the display. If in insert mode, the operator operates either key 109 or 110, move forward or reverse, then function 701 (Fig. 16.5) directs processing (via O) to Fig. 16.11. Since the machine 10 is in insert mode, function 706 or 707 is performed to look for a next or preceding word initiator, when found function ` 710 or 711 moves the "hole" in document memory to that location. Processing then skips, via AC, to function 273 to rewrite the display to illustrate the new inser-t location.

PAGE IMAGE OR FAX MODE PROCESSING

To explain the processing performed to write the page image display (refresh RAM 26) we will assume that the opera-tor has keyed in some text, and now wishes to examine the image the already keyed in text will produce if printed. To 20 effect this the operator asserts key 108 (Figure 2) the page image key.

When the code corresponding to that key is detected at function 465 (Fig. 16.1) the processing skips to Q (Fig.
16.9) where function 650 recognizes the code and causes func-25 tion 652 to be executed.

Before describing the page image processing in detail,some terms will need to be defined to assist the reader in understanding the description. Firstly, the processor 20, in the page image mode supports a number of registers, the 30 majority of which are internal to the processor. The inter-nal registers shown in the following table maintain the quantities identified opposite their name in the table.

~E979-024 ~,7~5~

Re~ister ~unction -WORDCTR Counts the length of a word during a look ahead to .see if the word will fit on the current line.
CHARCTR ~ character counter giving the pre-sent position on the current line;
this position or count does not in-clude anything in PAD ~left margin, temporary left margin or index amounts) but does include indent TAB amounts on the line in which the indent TAB occurs.
DOCPTR Points to document memory.
FAXPTR Points to the page image refresh RAM
display memory.
INDEXPAD Pad arnount for index found on pre-vious line.
TEMPLMAR Current temporary left margin amount.
TEMPRMAR Curren~ temporary right margin amount.
DEFLMAR Default left margin.
TABBPTR Table B pointer.

Table B, as mentioned above is the page image or FAX
25 table created during running the page image program for cross-reference between cursor movement and document memory.
The table provides 8 bytes for each line in the display of display memory, these include one byte for the PAD amount plus an indicator indicating whether ox not temporary para-30 meters are modified on the line, one byte for the length ofthe line in character counts, two bytes for the address in document memory of the first character on the line, and two bytes for a link to the next segment, this may be to the ne~ct line or to a location in document memory for a block insert if such appears in that line, and finally two bytes for each line are presently unused.

~E979-024 On POWER UP or RESET function 269 sets the CRT con-troller 27 for page display, via KBFAXSET and KBPAGEIM
shown in Fig. 16.12. As shown in Figure 16.12, when KBPAGEIM
is called, func-tion 466 calls K~PAGEPRC. passing to it the lo-cation in document memory of the start of the current page.
On first processing text for a page display a page review queue or simply page queue is created which, among other things identifies for each page the start of the page, i.e., the address in document memory of the first character on the page, as well as an inclication of the tabs and margins in ef-fect at the beginning of a page. In the absence of any changes to text on preceding pages, function 4~6 merely re-fers to the page review queue for the necessary information.
KBPAGEIM is shown in Figure 19.1. Initially, function 468 stores the start of a document, i.e., a document memory ad-dress. Thereafter, function 469 calls a subroutine GDGRID
(Fig. 19.28) which can put up or delete the format line and column. As shown therein, this subroutine calls GDGRAFOR
(see Fig. 20.1) which merely ensures that the grid area of the display memory is blanked (function 528). Following that function 529 determines whether the GRID is to be dis-played. If it is, functions 530 and 531 are performed, and when the subroutine GDGRAFOR is discussed, the manner in which this is effected will become clear. At this point, 25 however, assume the GRID is not to be displayed. Function 532 calls GDGRAFOR to clear the "OR" memory of any margins or tab display. Functions 533 and 535 determine whether a dif-ferent page outline is to be displayed. Assuming no such special page outline is to be displayed, function 537 calls SETGHOST. Figure 19.26 illustrates tha~ subroutine. Func-tion 538 determines if the GRID indicator is on. If it is, functions 539 and 540 may be performed. However, assuming it is not then SETGHOST returns and thereafter GDGRID re turns.

The preceding description is based on the assumption that the special page images "CARD" and "ENVELOPE" are not ~E979-024 ~L~L7~ 6 required. Nor~ally -the hardware (~ia EDGE) writes the image of a ~.5 x 11 inch page on the screen to both inform the operator of the correct paper size for printing and to allow the operator to see the relationship between the document 5 margins and the actual page boundaries. In accordance with the invention the operator can select other page sizes, "CARD" refers to an 80 column punch card outline (an IBM
card) and "ENVELOPE" refers to an envelope outline. Asser-tion of keys 119 to 120 (see Fig. 2) selects one or the other 10 of these images. Thus functions 533 or 535 check to see whether one of the special images had been selected; if so the OR memory is appropriately written. The manner in which this is effected is described in connection with a discussion o~ Figs. 20.1-20.12. However, it should be emphasized that 15 other images could also be written in this fashion.

Thereafter, function 470 (Fig. 19.1) sets up the docu-ment parameters, for example, margins, location of first wri-ting line and number of lines per page. If these have not previously been selected by an operator, default parameters 20 are selected and stored. Thereafter, function 471 determines if the hyphen flag is set, we will later explore the proces-sing in the event that flag is set, but at this point we will assume it is not. Thereafter function 473 gets the address of the cursor location and function 474 determines 25 if the cursor is on a buried code. Functions 474-476 are arranged to jump the cursor past a block insert. In the course of writing the page image or FAX refresh RAM, first the main text is written, that is "blocks" are skipped via functions 474-476. Thus, if either the cursor is not on a 30 buried code or once the code has been passed, function 477 sets the display pointer FAXPTR to START, i.e., the begin-ning of the refresh ~M 26. Thereafter, function 478 sets FMTPTR. This is a pointer to the format or "OR" memory.
Function 479 dequeues page image messages. These messages 35 result in mode indicators or prompts on the display; "3L" in Fig~ llB is an example. Function 480 checks to see if the return immediate flag is set. That flag ma~ be set at ~7~ 6 functions 257 or 260 (see Fig. 15B). Assuming it is not functicn 482 determines if the first writing line has been reached, and assuming that the first writing line has not been reached, function 483 will be performed to determine if a block insert is being processed. Assuming it is not, func-tion 484 calls EBLR indicating an entire line is to be blanked (see Figure 19.21). As shown in Figure 19.~1 the subroutine includes a loop of functions 542-545 which calls DISPLAY (Figure 19.22), to display a space each time DISPLAY
is called, and it is called once per loop. Each time the loop is traversed the number of positions to be blanked is decremented, and when either the number of positions to be blanked is equal to zero or a number of character spaces are blanked which is greater than th~ number of spaces on a line, the loop is terminated. In the latter event, function 546 advances FAXPTR and ~MTPTR to the next line and a return is effected. Reference to Figure 19.22 shows how DISPLAY
operates. A register, FAX~YTE eight bits long i5 loaded serially, and when it is full it is output to the FAX RAM at 20 a locatiors addressed by FAXPTR. The bit which is loaded on each pass of DISPLAY is a 1 if a character or graphic is to be displayed by a dot at that location, and is a ~ otherwise If a 1 is loaded from FAXBYTE to the refresh RAM, then a 4 x 4 pixel is illuminated, otherwise it is not. Refer-25 ring now in more detail to Figure 19.22, function 547 shiftsFAXBYTE left, 1 bit. Function 548 sets an indicator to indicate that someth:ng has been displayed on this line.
(This indicator will be checked by other routines). Functior;
549 determines if a character is to be displayed or not. If it is, function 550 sets the low bit. Otherwise, function 551 does not set the bit. Function 552 determines if th bits in FAXBYTE will go past the right edge of the display and if they would function 553 sets an indicator to note an attempt to pass the edge of the page. If that is not the 35 case function 554 increments FAXCTR and function 555 deter-rmT:~

7~46 memory or O~ memory~. Thereafter, functions 557 and 558 increment E`MTPTR so it points to the next byte in the forma-t or OR memory and function 558 stores the result of the logical OR operation mentioned above in the refresh RAM at FAXPTR and then increments FAXPTR.

Function 559 clears FAXBYTE and FAXCTR. Thereafter, function 560 is executed to increment CHARCTR to increment the number of characters written on the current line. This function is also performed in the event that FAXBYTE is not full.

The display routine in summary is used to display a single character as either a dot or space. To do this FAXBYTE is shifted to the left one position, the rightmost bit is either set or not set depending on whether a dot is to appear at that position or not, and when FAXBYTE is full it is put into the refresh RAM and cleared out to accept eight more bits.

When EBLR returns (Figure 19.1) function 485 stores eight zeros in the page table for this line inasmuch as there is nothing on the line. The loop of functions 482-485 is continued until the first writing line is reached. At that point, processing skips via point D to function 486 (see Figure 19.33.

As shown in Figure 19.3 in the initial processing, function 497 increments the number of lines displayed on the page so far, in the course of our example the result of function 497 would be 1. Function 498 checks INDEXPAD, and if it is non-zero, function 499 sets the PAD amount to INDEXPAD.

On the other hand, if INDEXPAD is zero, then the TEMPLMAR
(temporary left margin) is used to set PAD (function 500).
Thereafter, function 505 zeros INDEXPAD and the PAD amount is stored in the page table. Function 503 there~

,,;
.,, ~--LE979-024 ~15~6 ~ -80-after calls EBLR for the PAD amount. AS before EBLR blanks out the P~D amount and function 504 zeros CHARCTR, there-after the processing skips to point F (Figure 19.4). In pertinent part this processing includes zeroing WORDCTR
(func-tion 508) and assigning a temporary document pointer TEMP used in the look ahead to determine if the next word will fit on the line. Thereafter, function 509 gets the next character from the document memory; this is pointed to by TEMP. Functions 510 through 517 examine this character to determine if it is an insert codel bloc~ insert begin, a space or some other special function. Assuming it is not, function 518 increments WORDCTR and function 51~ determines if the word will fit in on the line so far. Assuming it will, function 520 checks to see if the hyphen flag is set 15 and assuming it is not, the processing loops bac~ to func-tion 509 to get another character from the memory. In this fashion, a series of characters are retrieved to either find a space (function 514), a speeial function (function 517) or determine at function 519 that the line length has been ;~20 exceeded. Assuming a spaee is first found the processing skips through point H2 (see Figure 19.7) to display the ;word, assuming the hyphen flag is not set. Functions 563 through 567 check for an insert code, a bloek insert and for the presence of the cursor, assuming none of these are true, 25 then funetion 569 determines if this is the first eharacter to be displayed on this line. In our example, it is, and thus processing moves to function 570 to check whether DOCPTR bytes have been set in the page table; assuming they have not, functions 571 and 572 are performed to determine 30 whether this is a special function ~and assuming it is not) whether the character is a spaee. If it is, function 573 sets an indicator that this is a space, on the other hand, function 574 sets an indieator that this is a character.
Thereafter, function 575 calls DISPLAY to display a space or 35 character depending on the indieator that had been set at functions 573-574. Since we have already discussed the manner in which DISPLAY operates, we will continue with the processing, where function 576 determines whether or not the 5~6 character just displayed was a space. Assuming it was not, the processing skips through point Hl to continue displaying the present ~ord. Function 577 increments DOCPTR to point to the next location in the document memory and similar function continues. When the end of the word is reached function 576 skips to point F (Figure 19.4). I'he processing at this point first looks to see if the next word in the document memory will fit on the line, and if it will, simi-lar processing is effected.

In this fashion, each line of the page RAM is written, taking into account first the page width and page margins.
In this first processing as we have noted at function 512, the processing skips past blocks in document memory.

Aside from characters and spaces, the charactér re-15 treived from document memory could be a special function which is recognized at function 517 (Figure 19.4). In that case, the processing skips to point H (Figure 19.7). After processing through functions 561, 563, 56S, 567 and 569, if function 571 recognizes a special function, the pro-20 cessing skips via point K to what is in effect, a directory, ; shown in Figure 19.8. There, depending upon the specific special function found, the processing skips to one of a number of dif~erent points. For example, if the special function found is a carrier return, processing continues to point Ml (Fig. 19.12). There, unctions 577 and 578 incre-ment DOCPTR and CHARCTR and set a flag to indicate the text has been processed in this block or line; the processing then skips to point Gl (Fig. 19.6). There function 579 checks to see if CHARCTR is less than 85, if it is, function 580 sets the byte in table B for the length of the line to the quantity in CHARCTR. The remaining functions 581-586 provide for writing other parameters in the page table. In the event that CHARCTR is greater than 85 then function 587 sets the length in the page table equal to 85. In the event that a block insert is being processed function 588 calls SKIP to skip to the end of the line. In the event that the 7~5~

special function was a required carrier return rather than a earriel- return, then preceding function ~77 (Fig. 19.12), functions 589 and 590 would be performed to indicate in the page table that a temporary parameter is set (since required 5 carrier re-turns terminate temporary margins and other tem-porary parameters) and accordingly, function ~90 resets the temporary parameters.

Processing for a required space merely requires a call to DISPLAY since it is not considered a word ending (see Fig.
``~ 10 19 . 9), Processing for an index is shown in Fig. 19.10. Func-tion 777 stores in INDEXPAD the sum CHARCTR plus PAD. This is the character position on the display at which the index was encountered. Function 778 increments CHARCTR and func-15 tion 779 sets a flag to indicate that text within the currentblock has been processed so that any temporary parameters en-countered will not modify the default parameters. Thereaf-ter, processing sklps via Gl to Fig. 19.6 where line ending housekeeping is performed.

When the next line is proeessed (see Fig. 19.3) fune-tion 498 will determine that IN~EXPAD is non~zero (since it was written at funetion 777). Aeeordingly, that value is transferred to PAD at funetion 499 and INDEXPAD zeroed at function 505. Accordingly, an index Eunetion ends one line, 25 and begins the next vertically below the index.

Processing for a temporary left margin is shown at Fig.
19.17. Function 780 writes to the page table to indicate a temporary parameter has been changed on the current line.
unction 781 cheeks f CHA~CTR is non-zero. If it is, pro-30 cessing skips via Gl to advance to the next line (beforeprocessing the temporary margin). Since DOCPTR is not incre-mented the next line will begin with the TLM. There funetion 782 will advanee FAXPTR to the beginning of the line and ~E979-024 :1~'7;~5~

FAXCTR and F~AXsYTE are zeroed (by function 783). ~unctions 784-787 ensure that TLM is legal (greater than zero and less than 85). Functions 788 and 789 store the new TLM and save the global left margin, respectively. To begin writing the 5 new line assuming a block insert is not processed function 790 (Fig. 19.18) calls EBLR to blank the TLM amount. Func-tion 792 zeros CHARCTR and function 793 advances DOCPTR past the TLM codes in document memory. Function 794 retains tne PAD amount, function 795 sets a flag to indicate DOCPTR has 10 already been set in the page table for the current line.
Function 796 checks if this is a bloc~ insert, if so function 797 changes the default parameters to the TLM becomes a glo-bal left margin for this block.

Processing for a temporary right margin is shown in 15 Fig. 19~13. The primed functions 780', 784', et seq. all have counterparts in the left margin processing; accordingly, no further discussion is deemed necessary.

Processing for an indent tab and tab is shown in Fig.
19.16. The tab processing comprises functions 901-903.
20 Function 901 determines the current display position from the left margin. Function 902, with a pointer to the active tab grid compares the present distance to the next higher tab position. The quantity is returned at function 903.
Function 906 calls EBLR to blank out the required amount to 25 the next tab point. Assuming the function is not an indent tab (checked at function 904) the next word is checked.

On the other hand, for an indent tab, function 900 is first performed to set a flag to distinguish tab and indent tab. The flag is checked at function 904. For indent tabs, 30 function 905 is perfcrmed which sets TLM to the current po-sition.

Processing for a temporary tab is shown in Fig. 19.11.
In order to ease tab limitations, the processor manipulates .`E979-024 each different tab grid as a unit. It is located in document memory and a pointer is used to access the grid when re-quired. In the processing, function 907 provides for wri-ting a bit to the page table to indicate a parameter change.
5 Function 908 rewrites the tab grid pointer to point to the new tab grid. Function 909 increments DOCPTR past the tab bytes. That concludes the processing unless a b`lock insert begin is being processed. If that is the case function 911 changes the default parameters to point to the active tab 10 grid.

Comparing the foregoing page image mode processing with the corresponding sentence (or te~t) mode processing reveals that in text mode, carrier returns, required carrier returns and index functions are displayed as unique graphics only 15 when coincident with the cursor (see Fig. 17.5). On the other hand, tab and required tab are always displayed, however tab and required tab do not display the actual tab function (see Fig. 17.5). Temporary left and temporary right margins are also displayed as a ~ertical line corres-20 ponding to the ma~gin with a left or right arrow indicatingthe relation between the temporary margin and the previously effective margin (see Fig. 17.11).

In contrast, as just explained, in page image mode the functions are not displayed via graphics; however, the 25 effects of the functions are displayed by displaying text formatted in accordance with the functions.

At the conclusion of writing the page refresh RAM for the main text, the processor returns to process any blocks.
This processing is either at the conclusion of a page or the 30 end of a document, wh?re if processing was not terminated early, function 467 (Figure 16.12) calls KBFAXBI, at function 589. That processing is shown at Figure 19.2.

As shown there function 590 sets a block insert indi-cator, to indicate that a block insert is being processed.

LE979-024 ~ ~ f ~6 Function 591 moves the page table pointer (TABBPTR) to the beginning of the block insert section, i.e. an unused por-tion of table B and function 592 sets the document pointer to the beginning of document memory. Thereafter, function 593 calls FINDCODE; that subroutine is shown in ~igure 19.30. In general, the processing here looks for a speci-fied character code in document memory incremen~ing DOCPTR
until the required code is found.- Function 594 stores an invalid code for the comparison so that the first test, at function 597 will never be satisfied. The processing loops through functions 595 through 618 looking for a match. In the subject under discussion, function 612 will find a block insert beginning code and correspondingly, function 613 sets DOCPTR to 4 plus the address of the block insert begin code, 15 so that on the return the DOCPTR points to the first charac-ter in the block insert, and function 614 adds 6 to the return register to indicate to the calling program what type of code was found. As will be explained later, a block in-sert includes an initial 3 byte sequence comprising BLIs (a 20 block insert begin byte) TL and TR (temporary left and right ;~ margins). Returning now to Figure 19.2, therefore, functions ` 620 and 621 can determine whether the code found is tempor-ary left, temporary right, temporary tab or EOD (by using ~he return register as a multiple branch point). Assuming 25 that the temporary code found is not any of these then it can be assumed that the block insert begin code had been found. Function 622 gets the document line number for this block, this is accessible via the table B pointer. Func-tions 623 and 624 can therefore determine if the document 30 line number, determined at function 622, is on this page, if not, the processing loops back to function 593 again looking for a block insert on this particular page. Assuming a block insert for this page is found, functions 627 through 630 are performed. As shown in Figure 19.2 these functions 35 make the appropriate entries to the table B, namely, func-tion 627 sets up a link in a table B entry for the block insert line number; function 628 stores the document parameters in the defau~t parameters; function 629 stores ~715~
-~6-the active parameters and function 630 indicates that no text has yet been displayed in the current block so any temporary parameters found will modify the default para-meters. Processing thereafter skips to point A0 (shown in Figure l9.1). In this pass, contrary to the previous de-scription, when function 482 is performed then the program skips to point D (Figure 19.3) function 486 will indicate that a block insert is being processed, thereafter functions ~32 and 633 are performed to follow the links to the last link and to store the address of the block insert for table s at the last link; this provides a link from the main text document line to the block insert which is to appear at the same line on the display. Following that processing, func-tion 492 again determines that a block insert is being 15 processed, and processing skips to point El. At this point functions 498 through 500 are performed again to set a new P~D amount. Thereafter, when decision point 501 determines a block insert is being processed, function 50~ is called to skip past the PAD amount (subroutine SKIP is shown in 20 Figure 19.31). The overall purpose of the subroutine is to skip in the OR memory and the refresh RAM past the pre-viously written text, instead of blanking as is done with the PAD amount for main text. The processing shown in Figure 19.31 should be apparent to those skilled in the art 25 in that FAXCTR and FAXBYTE are used as previously described, except that zeros are not loaded. Instead the values al-ready in refresh RAM remain unchanged. Thereafter, CHARCTR
is zeroed (fu~ction 504) and the processing skips to Figure 19.4. Each line of the block insert is processed identi-30 cally to main text`except that, through the use of SKIPinstead of EBLR, the previously written text is maintained instead of being blanked over. Furthermore, by maintaining links in table B between main text on a line and the block for the line, coordination between CURSOR movement is main-35 tained, as will be explained.

LE9 79 -O 2 4 ~L~ 71.~46 ALTERNATE ~ Y_AY ~IB 1~ IrN l Now that writing the FAX refresh RAM has been explained, we can illustrate how that RP~I is written for the alternate display embodiment of Figs. 3A~3C. In the embodiment illus-trated in Figs. 19.1 to 19.31, each bit of the refresh RAM ismapped to a unique location on the display. Since our CRT
chip 27 did not provide us with a sufficient address space, we expanded the addressing capacity. In the alternate em-bodiment we can live with the limited addressing capacity since we are not uniquely mapping each bit of the refresh RAM. Rather we define a display character as comprising a
2 x 2 array of text, reducing our addressing requirements in half, both vertically and horizontally. Now the CRT chip which gave us 96 characters/row and 64 rows/screen or 132 15 characters/row with 32 rows per screen is entirely adequate since to display 132 text characters per row we need only half that number of unique addresses horizontally (thus the 96 is sufficient). Alternatively, the 32 vertical addresses per screen is adequate since we need only that many to show 64 rows. Note that both Fig. 3B and Fig. 3C show a single display character (stored in one byte of refresh RAM) but ac--tually represents four text characters in a 2 x 2 array.
However, to write the RAM we must first format two lines, i.e. following all active formatting rules identify which 25 character positions on each of two lines are occupied by an alphanumeric or punctuation graphic. The processing de-scribed in Figs. 19.1-19.31 provides the func~ion for only one line at a time. Thus, it must be modified -to first for-mat two lines. Once the two lines are formatted, each 2 x 2 30 array is examined. Depending on its filled vs. unfilled conditions a 4 bit code is derived and a buffer su_h as FAXBYTE stores the code representing that display character.
This code is then written to RAM since each such code maps to the display. As the RAM is read by the CRT chip, the 35 code is used with a ROS character generator to provide the display character of Figs. 3B or 3C.

~ LE979-024 117~546 -88- ~ -CURSOR MOVEMENT IN FAX
.
In order to explain cursor motion in page image or FAX
mode, we will assume that the operator has keyed in some quantity of text, and that text is being displayed in the 5 page image mode; and thereafter, the operator keys one of the cursor control keys; e.g., 109-114 (see Figure 2). As explained, the interrupt routine places a code corresponding to the particular depressed key ln a keyboard queue; subse-quent to the interrupt, the main system program, at function 10 270 (Figure 16.1) determines that the keyboard queue is not empty. Processing skips via point J (Figure 16.8) where, since we have assumed we are neither in text mode nor in insert mode, one of functions 433-436 would recognize a cursor right, cursor left, cursor up or cursor down, respec-15 tively. Note that word cursor left or word cursor right isnot recognized at all in page image mode (recognized in text mode at function 701 (Fig. 16.5) and if a key is depressed in that mode, the processing, after passing function 436 loops back via point F to function 449 (Figure 16.1) to bump 20 the keyboard queue, in effect disregarding either of these key depxessions.

Depending on which cursor key was actuated, either KBFCRT, KBFCLT, KBFCUP, OR KsFCBN is called via functions 428-431. The processing in response to a cursor right 25 motion ~function 428) is illustrated in Figure 18.4, the processing in response to a cursor up motion is shown in Figure 18.1 and the processing in response to a cursor down motion is shown in Figure 18.2. The processing in response to a cursor left is not specifically illustrated, but will 30 become clear as Figure 18.4 is di~cussed.

- Turning now to Figure 18.4, it will be recognized that in page image mode cursor right will only move the cursor within a line, and therefore, at function 651, if it is recognized that the cursor is at the end of a line, the ~E979-02~ 7 processing terminates. Assuming that the cursor was not at the end of the line prio~ to the cursor right command, function 776 increments the register (horizontal) defining cursor position. Then function 652 checks to see if the format grid is being displayed, if it is, func~ion 653 increases the value of the character counter which is tracking the horizontal ghost cursor, so it will~ be mo~ed one character to the right. Thereafter, function 654 sets a value "anticipated segment" to be equal to the former seg-10 ment in which the cursor was located, in Table B. With thisparameter function 655 calls FINDSEG, the processing for which is shown in Figure 18.3.

The routine FINDSEG is used to locate a segment, a particular main text line, or block in which the cursor will 15 be located. The sub-routine is entered with the parameter ANTICIPATED SEG, already set.

Referring now to Figure 18.3, function 660 sets another value TEST SEGMENT to be equal to the segment which begins at this particular display line; this is extracted from 20 Table B. Thereafter, functions 661 and 664-666 examine each segment in turn, by determining first ~hether the segment contains data, and thereafter, if the cursor is located before the beginning of the segment or after the end of the segment. Assuming for purposes of discussion that the first 25 segment examined contains data, but the cursor is located beyond the segment, i.e., the cursor is not to the left of the end of the segment, then function 662 checks to see if this line in the display has an additional segment. If it does, function 676 increments the test segment to identify 30 the next segment on the line and the preceding functions are repeated. Movement of the cursor forward, can result in the cursor being located (1) beyond any segment on the line containing data, (2) located in an area of the line between segments, (3) maintained in the existing segment, or (4) 35 entered into a new segment. Taking these particular cases in order, if the cursor has moved beyond any segment on the LE979-024 1~i 71~46 line then function 662 will identify the fact that the line has no additional segments, thereafter function 663 sets the blink flag. This will result in a blinking cursor which indicates that the cursor i5 not pointing to any text.
5 Thereafter, function 675 sets the parameter segment found equal to the last segment on which the cursor was located, function 674 checks if the reformat flag is set~(on cursor right it will never be set); if it is, function 672 calls the subroutine REFORMAT, and thereafter function 673 sets 10 the parameter, associated segment (~AB~P~R) e~ual the seg-ment found, thereafter the suhroutine returns.

If in the alternative (2) the cursor is located on a position on the display line between tex-t segments, at some point function 664 will identify the cursor as not being to 15 the right of the segment start (that is, as soon as it is past the segment that the cursor is immediately to the right of) function 665 will set a low flag and the loop will continue examining additional segments to the right of the cursor, each such examination will result in additional 20 passes through function 664, 665 until function 662 identi-fies that all segments on the line have been examined, and then function 663 et seq., previously discussed is then repeated with the same results.

On the other hand (3), the cursor can remain in the 25 anticipated segment. In this event function 664 and 666 will indicate that the cursor is right of the segment start and left of the segment end, when the particular segment in which the cursor is located, is identified. Vnder our assumptions function 667 will determine if the segment is 30 the anticipated segment, and therefore, function 675 et seq.
are again performed.

The final possibility (4) is that the segment in which the cursor is found is changed from the anticipated segment.
In this event, function 667 is performed but the exit is to 35 function 668. If the segment that the cursor is in, is LE979-024 ~.17~546 found to he a block, then function 669 writes the warning sL
(see for example, Figure llC). On the other hand, if the segment is not a block then function 670 ensures that any ~L
warning is deleted~ Function 671 then sets the segment found equal to the test segment and functions 672 and 673 are performed.

Accordingly function 655 finds the segment in which the cursor is located. Function 656 determines if a format change has occurred (the manner in which this is determined 10 and the results which follow will be explained). Depending on the outcome at decision block 656, function 657 may or may not be performed. Functions 657-659 execute housekeeping functions. Function 657 controls the contents of registers identifying the horizontal and vertical ghost cursors; func-15 tion 657 may increment or decrement either the horizontal orvertical register (in the CRT chip 27) by one count to move either the horizontal or vertical cursor forward or back.
Function 658 implements the decision made at function 663 (see Figur~ 18.3) which changes the bit in the status regis-20 ter indicating whether or not the cursor is to be blinked.Finally, function 659 controls the horizontal and vertical registers which identify the cursor position, either incre-menting or decrementing one of those registers by one count.

Althou~h not illustrated, the routine page image cursor 25 reverse KBFCLT is identical to the functions shown in Figure 18.4 with the exception that function 651 determines if the cursor was at the beginning of a line rather than the end and function 653 decreases rather than increases the ghost cursor position.

In addition to moving the cursor forward or back, page image mode also supports moving the cursor up or down.
XBFCUP or cursor up is shown in Figure 18.1, and KBFCDN is shown in 18.2.

LE979-024 1~7~546 As shown in Figure 18.1 function 677 determines if the cursor is on the first line of the display. If it is, it cannot be moved up and therefore, the processing ends.
Assuming it is not on the first line of the display function 678 subtracts one from the cursor register indicating ver-tical position, this in effect, will move the cursor up one ; line on the display because the cursor position is deter-mined in this register. Function 679 determines if the format grid is being displayed, if it is, function 680 must 10 be performed so that the vertical ghost cursor tracks the vertical position of the cursor. Eunction 681 calls a routine to determine if a printer warning is appropriate (to prevent the operator from moving the cursor too close to the top of the page, so close that the page cannot be adequately 15 supported by the paper bail). Function 682 and function 683 determine if the cursor was above or below text (cursor blinking~, in either event function 697 sets the anticipated segment register to be equal to the last seqment in which the cursor was located and function 698, with this parameter, 20 calls FINDSEG. The cursor need not be located on text, but as will become clear it must be associated with some text in order to appear in the text mode display if a switch is made without moving the cursor, this processing ensures that the cursor, even through it is not on any text~ is associated 25 with some text in the document~

On the other hand, assuming that the cursor was not off text, function 684 determines if the prior line (the line the cursor is being moved into) is empty. If it is, then an above text flag is set to indicate that the cursor is 30 above a text segment. Thereafter, function 699 stores the segment the cursor was previously associated with as the an-ticipated segment and then calls FINDSEG function 691.

On the other hand, if the prior line is not empty, then function 686 determines whether the line the cursor was moved 35 from had a format change. If so, function 687 must be per-formed to set the reformat flag to call the subroutine REFORMAT during the FINDSEG routine, so that the cursor is maintained relative to the appropriate format. In the event the reformat flag need not be set or after it is, function 688 sets the anticipated segment to the prior segment, the 5 segment the cursor was associated with prlor to its movement.
; Function 6B9 determines if this segment had a required car-rier return, which also may change the format. If it does, then function 691 sets the reformat flag. ~fter the flag is - set, or if setting is not required then FIMDSEG is again 10 called (function 691).

A review of this processing indicates that FINDSEG is called after identification is made for the anticipated seg-ment, and after certain flags have been set indicating whether reformatting is required and indicating whether or 15 not the cursor has moved off text. FINDSEG, previously dis-cussed locates the actual segment associated with the cur-sor (if one exists). Thereafter, function 692 calls FINDDOCX. The information developed so far has identified the cursor location in terms of the display (that is a 20 horizontal and vertical position for the cursor) has also identified a particular segment of text within which the cursor is located, or with which the cursor is most nearly associated. Using this information as well as the other information in Table B, FINDDOCX returns with a document 25 memory address DOCPTR (this is either he address of the character with which the cursor is associated, the leftmost character in a block if the cursor is off text and to the left of the block, the rightmost character in a block, if the cursor is off text and to the right of that block, a 30 particular character in the first line of a block if the cursor is off text and above that block, or a particular character in the last line of the block if the cursor is off text and below that block). Function 693 determines if the format has been changed, i.e., whether REFORMAT was run 35 during the running of FINDSEG. If it ha~ been, function 694 is called to adjust the ghost cursor position. Thereafter _~979-024 ~7:~46 function 695 and 696 are performed for the purposes pre-viously described.

Referring now to Figure 18.2, the processing for a cursor down motion is described (KsFCDN) and in many re-5 spects this is similar to the processing shown in Figure18.1, but will be briefly described. Function too, rather than checking for the cursor on the first line, checks for the cursor on the last line. Function 701 and 7~5 relate to an alarm function for the printer, if cursor movement will 10 result in inadequate gripping of the paper by the paper bail. Function 702 adjusts the cursor register in the CRT
chip and function 704 performs the same function for the ghost cursor location. Function 708 determines if there was a format change on the last segment (the segment with which - 15 the cursor had been associated) since the cursor down motion ;is moving forward in the document. If there had been no format change, function 713 uses the location of the next segment as the anticipated segment in calling PINns~G. On the other hand, if a format change had occurred, function 709 20 determines if that was because of an RCR. If it was, function 722 determines if the prior segment was in text, and if it was then function 723 sets the active right and left margins and tab grid to those at the beginning of text, since that is what is required by the RCR. If the prior 2S segment was not in text then function 724 sets the REFORMAT
flag so that the appropriate formatting can occur during the running of FINDSEG. If the format change was not due to a RCR, after the preceding processing, functions 710 and 711 determine if the last character was the end of a block or 30 main text. Depending upon the outcome, and whether or not the last character was an EOD or EOB, either the next seg-ment is used as the anticipated segment or, at function 712 the below text flag is set and the previous segment is used as the anticipated segment in calling FINDSEG. Following the 35 running of that subroutine, the processing continues identically to that previously discussed for page image cursor up.

~E979-024 --ss--In the course of processing document memory in order to write th~ page image or FAX RAM, processing for each new word begins at point F (Figure 19.4). At this point, depen-ding upon what the code encountered in document memory is, 5 the processing adapts accordingly, for example, an insert code results in a skipping to the next non-null character in document memory, i.e. processing skips over the`'`hole", a block insert begin calls a subroutine to skip past the block insert ~block inserts are processed by FAXBI, called after 10 the main text processing is concluded),a space character is indicative of the end of a word (assuming the hyphen flag is not set) and processing skips to point H2 (Figure 19.7).
Aside from a regular character the only other codes recog-nized fall into the category of special functions, this is 15 recognized at function 517, and the processing skips via point H to Figure 19.7O A word ending can be either a space or a special function, so long as it is not a required space. Thus, at Figure 19.7 function 727 determines if the code is a required space, if it is, it is treated as merely 20 another character in a word to be displayed and the proces-sing skips via point F2 back to Figure 19.4. On the other hand, if this is a word ending that is a space, or a special function other than a required space, then processing con-tinues (Fig. 19.7) at function 561 (either from function 727 25 or skipping to H2 from ~igure 19.4). At this point, assuming the hyphen flag is not set and assuming khat the code is not for an insert or a block insert be~in, function 567 deter-mines of the cursor should be set on the current character.
Cursor location in the page image mode may or may not corres 30 pond to a location in document memory. It does if the cursor is within main text or a block, but if the cursor is in neither location, which is achieved by cursor motion then there is no address in document memory which corresponds to the cursor location. Function 567, to determine if the cur-35 sor is to be set, merely requires comparing the documentpointer to the location saved when the FAX routine was en-tered. If they are equal then SETCURS is called via func-7~LS~i : ..
.

tion 568. Assuming for the moment that they are not the same, then the processing continues to display that charac-ter, including calling DISPLAY at function 575, and assuming the character displayed is not a space, processing loops back ; 5 via Hl to increment DOCPTR and then reenter the loop just discussed. If in the course of displaying the current word the cursor location is encountered DOCPTR is equal to the cursor location, then SETCURS is called as described above.
That processing is shown in Figure 19.25. As shown, func-10 tion 728 sets an indicator to indicate that the cursor has been set. Function 729 determines if the horizontal position of the cursor should he left unchanged. This flag (detected by function 729) is set by the main program on temporary mar-gin changes from the keyboard so that the cursor and DOCPTR
15 track with the paragraph in which the cursor was located.
~ Function 730 determines if the current cursor position would -~ move the cursor past the right edge of the page; since the right edge of the page is a relatively fixed parameter, de-pending on the particular page outline being displayed, it 20 can be easily determined whether the counter position would place the cursor past the right edge of the page. If so, function 731 indicates that the cursor is to be set at the right edge of the page. Function 732 e~fects setting the horizontal position of th~ cursor, i.e., writing to the hori-25 zntal cursor position register in the CRT chip 27. There-after, function 733 sets the vertical position of the cursor similar to function 732. This requires writing to a parti-cular (vertical cursor) register in the CRT chip 27. Func-tion 734 determines whether there is any text in the docu-30 ment, this is easily effected by referring to Table B. Ifthere is no text in the document, then function 735 blinks the cursor; this is effected by setting the appropriate bit in the status register (see Figure 4). Function 736 is exe-cuted after function 735 or Eunction 734, depending on whe-35 ther there is any text in the document, to set parameters inthe document memory that apply to the cursor position. If the cursor is located in a block, these parameters are deter-~7:1~4~

mined at the beginning of the block, if the cursor is contained in main text, then beginning with the global parameters, and by scanning through the page table looking for format parameter changes, the current parameters can be determined and written to appropriate registers. For example a register is maintained to point to document memory with the active (for the present cursor location) tab grid.
Function 737 determines if a block insert is being processed, this merely requires checking~a flag to that effect. If so, function 738 displays the BL warning (see Figure llB3. On the other hand, if a block insert is not being processed then function 739 is performed to display blanks in the warning location to ensure that no warning is displayed. Function 740 calls SETGHOST (which is discussed immediately below). Thereafter, the subroutine concludes ; after executing function 7~1 to copy the default parameters into a cursor routine default parameter location.

Referring now to Figure 19.26, the subroutine SETGIIOST is illustrated. As shown, function 53~ first determines if the grid indicator is on, and this merely requires reference to a specific flag to that effect. If it is not, there is no need to set the ghost cursors and therefore the subroutine returns. On the other hand, if the grid indicator is on, then function 539 determines if the display is in page mode, if not, the ghost cursors are not displayed and the subroutine can return. If both outcomes are positive then function 540 sets the horizontal and vertical ghost cursors.
The discussion in connection with move cursor routines illustrated that the routines adjusted counters tracking horizontal and vertical ghost cursor position. As those skilled in the art will understand those counters are software counters. Function 540 requires writing and parameters in the counters into the hardware registers 48 and 49 (see Figure 4) and the manner in which these hardware registers operate to cause the horizontal and vertical ghost cursors to be illuminated has already be explained. After function 540 the subroutine returns.

7~i4~;

9~

INSERT PROCESSING IN PAGE IMAGE

If the operator selects insert (key 104-Fig. 2) with the machine in FAX mode, the keycode is recognized at function 447A and processing skips through H to Fig. 16.6. Function 447B recognizes the insert keycode and processing skips through Q to Fig. 16.9. Function 643 recognizes the insert entry but since the machine is in page image, function 926 determines whether the cursor is blinking. A blinking cursor indicates that it is off main text. Assuming the cursor is not blinking, then functions 932-933 precedes the insert code with the text mode code and processing returns to function 270 to process the switch to text mode.
Alternatively, if the cursor was blinking, then functions 932-933 are not performed. Function 927 checks to see if there is any text. If not processing identical to that effected for a non-blinking cursor is effected. However, if there is text in the documen-t memory, function 928 determines if a block insert is possibleu If not the processing terminates, i.e. the function is ignored. If a block insert is available, functions 929-931 prepare for a block insert and functions 932 and 933 are also performed.

An implicit insert operation (insert without use of the explicit insert mode) is effected if the operator selects a CR, RCR, TAB, RTAB, R Page End, Index, Space or R Space in FAX mode. Processing for any of these codes proceeds in Fig. 16.1 through function 447 to Fig. 16.6. There, functions 100A-104A recognize different ones of these codes.
Function 105A determines if DOCPTR is a valid location for insertion. If no-t processing terminates and the entry is ignored. If a valid DOCPTR address, function 106A effects an implicit insert by storing the codes and moving following codes one code unit to make room for the new code. Function 107A then increments the keyboard queue. If the queue is empty or if the nex-t character is a graphic then function 110A call KBPAGEIM to rewrite the display. Processing returns to Fig. 16.1 when DOCPTR is located c~

LE979-024 ~i546 on the displayed page. Alternatively the queue is processed until the conditions of either functions 108A or 109A be-come true. This conditions results in a call to KBPAGEIM.

If the operator had entered a character with the machine in page image, processing is initiated in the manner de-scribed, but function 113A (Fig. 16.6) recognizes a charac-ter keycode and processing skips to R (Fig. 16.16). If the cursor is not blinking and DOCPTR is on an insert code, EOD
or BLIE (a valid location for an insertion) then function 114A stores a KBCHCD, a code to switch to text mode. Proces-sing then returns to function 270 to process the change to text mode unless this is the first entered character. In that event function llSA initiates format setting as if a co-ded 1 had been entered and then processing skips to function `~ 15 270. If the cursor is blinking, this is not the first en-tered character, and DOCPTR is not on EOD then a check is made (processing skips via AH - to Fig. 16.9), at function 928 et seq., to see if a block insert is available. If so a block insert is effected, otherwise processing terminates, i.e. the operator's entry is ignored.
:
On th~ other hand, if the operator depressed the sKSP
key (without depressing the code key 137) and the cursor was positioned (in page image) so that the preceding code was a CR, RCR, TAs, RTAB, Index or the cursor was positioned over 25 EOD or BLIE and the preceding code was a space, then that preceding code will be deleted. The deletion will occur without leaving page image. No other codes are deleted in this fashion.

The processing follows a path, beginning on Fig. 16.1, 30 where function 447A recognizes the FAX mode-processing skips to Fig. 16.6. Function 120A recognizes the error correcting (non required) backspace code - processing skips to Fig.
16.18, Function 121A checks to see if DOCPTR is at the start of a page. If not, function 122A determines if the prior 35 code is not a buried code (buried code deletion via the FAX

LE979-024 ~17~546 error correct backspace is not allowed). If not, function 123A checks for the remaining conditions. If any of the tests imposed at functions 121A-123A are failed, function 127A determines if FAX was terminated early. Depending on 5 whether or not FAX was terminated early processing continues at function 449 (Fig. 16.1) or function 107A (Fig. 16.6) .
In either event the backspace function is not performed.

However, if the tests imposed at functions 121A-123A
are passed then function 124A checks for insert mode. If 10 in insert mode DOCPTR points to that code. If not in in-sert mode then function 126A closes up document memory by deleting the byte prior to DOCPTR. Because of function 123A
this is one of the specific codes enumerated in that test.
If DOCPTR does not point to an insert code, then function 15 125A i5 performed. Decrementing DOCPTR causes it to point to the prior code, writing an insert code deletes the code previously stored there, writing the NULL code overwrites the insert code previously stored beyond the deleted code.
Processing, after either function 125A or 126A picks up at 20 function 107A (Fig. 16.6).

CURSOR MOVEMENT IN INSERT
; Cursor motion in text and FAX modes are explained above.
The effects of cursor motion vary when the machine is in in-sert mode. That processing and the resultant effects are 25 now described.
Actuation of a cursox key (text mode-insert mode) is recognized at function 400 (Fig. 16.1), processing skips via J where function 401 recognizes the text mode. Depending on whether a cursor left or right, functions 404 or 403 check 30 for insert mode. If insert mode is detected processing skip~
to either AE-Fig. 16.8 (cursor right) or AF-Fig. 16.10 (cur-sor left). For cursor right and assuming DOCPTR is not at the end of the document, function 130A determines the length - of the next code and function 131A moves the "hole" to the 35 right of the next code. Functions 132A and 133A check a fur-ther code and the one just moved past to see if they are non-LE979-024 ~ 546 displayed. If either is, functions 130P. and 131A are per-formed again; the loop of functions 130A-133A is perforrned until either of the tests imposed at functions 132A and 133A
are not met. At that time function 134A stores an insert 5 code and NULL code at DOCPTR. The net effect of cursor right is to move the "hole" in document memory past the next displayed code. Thereafter, function 273 ~Fig.~16.1) is performed to rewrite the display to move the "hole" in the display to correspond to the beginning of the "hole" in docu-10 ment memory. The processing shown in Fig. 16.10 also effectsa movement of the "hole" in document memory, but this move-ment is to the left, otherwise the effect is similar. Func-` tion 135A is included to get the cursor past the non-dis-played code after KBSCLT moves the cursor to the left.

15Alternatively, if the operator had selected a cursor up or down then, before Eunctions 411 and 412 are called to process this cursor motion, function 405 removes the machine ~ from insert mode. Thus cursor left or right is effective, ;!~ in insert, to move the insertion location, other cursor mo-i~ 20 tion cancels the insert mode.
,~
On the other hand if a cursor key is operated in FAX
mode the processing is via function 447A (Fig. 16.1) where function 136A (Fig. 16.6) recognizes the cursor key code.
Processing picks up at J (Fig. 16.8) where function 137A is ` 25 performed as is function 138A (since we have assumed insert ,. .
mode). Function 138A has the effect of removing insert mode by closing up document memory and rewriting the display.
Following function 138A, processing calls the appropriate cursor motion subroutine. Thus, in page image, any cursor 30 motion cancels insert mode.

HYPHENATION

As is well known to those skilled in the art hyphen-ation is conventionally an interactive function whereby the 35 operator is informed, by the processor, in some fashion or ;

... . , . ,, ... . , , ~ .

- \
~E979-024 ~.7~54~

other, that a particular word extends beyond a margin, and the operator indicates whether or not hyphenation is to be effected, and if so, the point at which ~he hyphen should be placed. As pointed out above it is an advantage of the 5 invention that, in the course of hypehnation, in addition to providing an operator with an indication of the extent to which the word extends beyond the margin, the operator is also informed as to the average length of the preceding lines on the page. In this fashion a more uniform right 10 margin may be achieved. The hyphenation function is a special modifier of the page imaye mode. Thus, one tech-nique for asserting the hyphenation function or requesting hyphenation information, is achieved by simultaneously depressing the page image key 108 (Figure 2) and the code 15 key 137. Other techniques for entering the hyphenation mode will be apparent to those skilled in the art. The opera-tor's depression of the foregoing key combination results in the storage of the keyboard queue of a code identifying that particular comhination. When the main system program is 20 run, and that particular code is encountered (refer to Figure 16.5) function 465 recognizes the code corresponding to the page image or FAX key and the processing skips via point Q (Figure 16.9) wherein function 650 identifies the page image mode key 108, and function 651 recognizes that it is a coded function. Accordingly, function 742 sets the hyphen flag and function 743 changes the CRT chip to the page image mode (in the manner discussed above) and calls KPBPAGEIM passing to it the identifiecation of the current page. The latter subroutine is shown in Figure 16.12 where-30 in function 466 calls KBPAGEPRG, and passing to it again,the start of the current page. This subroutine is shown in Figure 19.1.
.
Before describing the processin~ in detail, we will first describe how the operator and machine interact to achieve the overall hyphenation function. For this descrip-tion we will assume that the operator has keved in a coded LE979-024 1 ~ ~iS46 -103~
page image command and in the course of writing the FAX
~isplay the processor encounters a word which crosses the right margin. For purposes of example, we will assume the word crossing the right margin is the word "understanding".
5 At that point the writing of the F~X RAM ceases, the pro-cessor switches to text mode and produces a display on the CRT of the form shown in Figure 21.1. As shown in Figure 21.1 what is displayed is the word which crosses the right margin, an arrow, and an identification of the meaning of that arrow (right margin); meaning that the letters "tand-ing" of the word are to the right of the right margin.
~ithout any further operator action, the display then chan-ges to that shown in Figure 21.2. As shown, in addition to the preceding, a second arrow is illustrated along with the 15 legend "AVE~AGE RIGHT MARGIN", indicating that the arrow indicates the location of the average right line ending for a preceding given number of lines a~ove the line ending in the word "understanding". The given number of lines could be all the lines on a page preceding this line, or it could 20 be a smaller fixed number of lines above the line ending in the word "understanding". The given number of lines could be a smaller fixed number of lines. The manner in which this quantity is determined will become clear as the pro-cessing is described in detail. Also shown in Figure 21.2 25 is the cursor which is illustrated to the right of the last character in the word. At this point the processor inserts a hyphen and waits operator action. The operator may then actuate the cursor left key, and each time the cursor left key is actuated the cursor moves left one position and in 30 effect first opens up a "hole" in the word by moving the last character to the right (~o the next line) of the cursor location one character space. Thereafter the "hole" is moved one space left each time cursor left is operated.
Thus, for example Figure 21.3 illustrates the appearance of 35 the display after the operator has actuated the cursor left key, once~ The operator then continues operating the cursor left key until such time as the cursor is in the position at which a hyphen is desired. When the cursor is in the correct position for hyphenation the operator actuates the page image key ~108-Figure 2) to indicate the processing should terminate and the portion of the word to the left of the cursor should be maintained on the current line a hyphen S added thereafter, and the remainin~ characters of the word moved to the next line in ~he document. Now the manner in which this foregoing interaction is achieved is explained in detail.

The processing beginning at Fig. 19.1 proceeds much as did the processing for the uncoded page image, of course, the only difference being that now the hyphen flag is set.
~n the course of the processing, now function 471 will recognize the hyphen flag being set and therefore function 472 zeros two software counters TOTAL LENGTH and HYPHEN
COUNT. The processing again proceeds in the manner dis-cussed above, and when the first writing line is reached, (function 482) the processing begins to verify that each word found will fit on the line, when a word is found which fits on the line being processed, the word is displayed;
20 when a word will not fit, the next display line is begun and the appropriate entries are made in Table B. Before identi-fication of a first word, two additional software registers OLD DOCPTR and WORD LENGTH are also set to zero by function 507.

The look ahead processing to determine if a word will fit on a line is shown in Figure 19~4. Each time through this processing, if the hyphen flag is set, function 507 zeros the registers OLDDOCPTR and WORD LENGTH. When a space is recognized on a line, by function 514, function 515 checks to see if a hyphen flag is set, if it is, function 516 sets the end of word flag, the processing skips via point H2 to display the word. At the conclusion of dis-playing the word the processing loops back to that shown in Figure 19.4 where the next word is examined. On each pass 35 WORDCTR is incremented, function 519 checks to see if the word will fit on -the line so far. Assuming the hyphen LE979-024 ~ 6 flag is set (checked at function 520) each character, other than the character immediately following a space results in a negative determination at function 521, since the end of word flag is set. For the first character of a word follow-ing a space, which is within the page margins, function 521results in resetting the end of word flaq, at functi~n 522.
If, on the other hand, the space, which was the word ending for the preceding word is within the right margin, but the next character is outside the right margin, func-tion 519 10 will determine that the word will not fit on the line so far, and function 523 checks to see if the word flag is set.
If it is, then function 525 resets the end of word flag and functions 526-527 are performed. Function 526 adds one to the register HYPHEN COUNT which had been set to zero on entry of the hyphenate mode and function 527 adds C~ARCTR
(the total length on the line just ended ) to the register TOTAL LENGTH (which had also been zeroed on entry to hyphe-nate). In this fashion, each line whieh oceupies at least the entire left margin to right margin spaee inerements HYPHEN COUNT by one, and TOT~L LENGTH by the number of positions on the line.

In the more typieal ease, when the eharaeter whieh erosses the right margin is preeeded by another eharaeter, rather than a space, the seenario is a little different. Let us look at the proeessing on the first eharaeter of the word whieh ineludes a eharaeter erossing the right margin. In that proeessing, funetion 519 will determine that the word will fit on the line so far (sinee we have postulated that it is not the first eharaeter of the word that erosses the right margin). Aeeordingly, and assuming the hyphen flag is set, when funetion 521 recognizes that the word flag is set, funetion 522 will reset it. Thereafter, sinee the same word crosses the right margin, the word flag will remain reset s-~that when a charaeter is reaehed which crosses the right margin then function 519 determines that the word will not fit, funetion 523 sees the word flag reset, and therefore, function 525 is not performed. In this case, since the ~E979-~24 hyphen flag is set the processing skips to point F3 (Figure 19.5).

At that point, function 744 loads a hyphenate memory (a portion of RAM) with three carrier returns; function 745 adds 24 space codes and function 74~ adds codes or bytes selected to display -the phrase "right margin". F`unction 747 then adds a carrier return and 24 additional space codes.
This portion of RAM or the hyphenate memory is being created as a pseudo document memory which will be read by the text 10 mode routine to effect a display. The code thus far entered into the pseudo document memory provides for line spaces from the top of the screen and then spaces over to the approximate center of the screen, provides for displaying the phrase "right margin" drops down another line spaces, 15 over to a location immediately below the r in the word right. Thereafter, function 748 provides a byte selected to display a left-downwardly pointing arrow followed by a carrier return. This brings the display to the line on which the word "understanding" is displayed in Figure 21.1.
20 Thereafter, function 749 adds a number of space codes equal to 24-WORDCTR, that is the number of spaces from the begin-ning of the word to the right margin, this provides for spacing over to the beginning of the word. Thereafter, function 750 transfers bytes designating this word from 25 document memory, starting at DOCPTR (which is pointing to the beginning of the word which crosses the right margin) to the hyphenate memory. The foregoing functions thus provide for creating a document memory which can provide for display such as that shown in Figure 21.1.
Function 751 saves the cursor location (since it will be moved) and function 752 sets the cursor location to the next position in the hyphenate memory, i.e., succeeding the last character in the~word; this provides for displaying the cursor as shown in Figure 21.2. Thereafter, function 753 35 sets the software register WO~D LENGTH to the length of this word, that is, the length of word crossing the right margin.
Function 754 adds an insert code and a carrier return, the L.E 9 7 9 - 0 2 4 59~

insert code is that which is recognized by the processor as effecting a change into or out of insert mode. The follow~
ing carrier return will in effect move to display writing to ; the next line. Function 755 determines if this is the first line of a document or a block of text, if it is there is no point in determining what the average right margin is, since there are no preceding lines from which to determine an average. Assuming, however, that the word overhanging the right margin is not on the first line of text in the docu-ment page or in a block, then functions 756 through 758provide for the display shown beneath the word "understan-ding" in Figure 21.2. More particularly, function 756 adds a number of spaces equal to the algorithm shown in Figure 19.5. The expression in the inner parenthesis is the aver-15 age right margin, since it is the ratio of total length(which had been accumulating line lengths ending at or beyond the right margin), and the quantity hyphen count which is the number of such lines. This is subtracted from the difference between the left and right margin and the difference is subtracted from 24; the position from which the display of Figures 21.1-21.4 is written. Thus, at this point function 757 writes the left-upwardly directed arrow followed by a carrier return to move the display down another line. Function 758 adds a number of spaces in this follow-25 ing line which is equivalent to the quantity determined byfunction 756, so that the first character written will be immediately below the left-upwardly directed arrow. And at this point, function 758 adds the phrase "average margin".
Eunction 759 then adds an EOD byte to indicate that this is 30 the end of the (pseudo) document memory.

Thereafter, function 760 calls the sentence subroutines to write the text RAM, passing the address at the beginning of the hyphenate (pseudo document) memory. The sentence routine operates in a manner described above to write the 35 refresh RAM. When the subroutine returns, function 761 replaces the insert graphic, in the text RAM with the hypher.
, .

~E979-024 ~ 54~

graphic. Function 762 then alters the parameters in the CRT
chip to the text mode, thereby effècting the display as shown for example in Figure 21.2. At this point, function 763 is in a wait mode, awaiting operator action. The only 5 meanin~ful action that can be taken by the operator is operation of the cursor left key or operation of the page image key. Each time cursor left is depressed functions 765-770 are performed. More particularly, the insert code (in the pseudo document memory) is interchanged with the 10 prior code or codes. Thus, for example, if the operator actuates the cursor left key once, the cursor position, originally following the g, now precedes the ~, as shown in Figure 21.3. Function 767 adjusts the quantities in WORD
LENGTH and cursor location address, function 769 calls the sentence subroutine to rewrite the display and function 770 then replaces the insert graphic with a hyphenate graphic, similar to function 761. This loop is performed each time the cursor left key is depressed, such that the first time it is depressed the display of Figure 21.3 results, and if the operator depresses cursor left two additional times, the display of Figure 21.4 results.

At this time we assume that the operator actuates the page image key indicating the conclusion of hyphenate inter-action. Function 766 determines if the cursor has been 25 moved. It it has, processing skips via point H* to function 771 where the discretionary hyphen graphic is located in document memory as the sum of OLDDOCTPTR plus WOR~ LENGTH, OLDDOCTPTR pointed to the beginning of the word which was the hyphenate candidate, the sum of that quantity plus WORD
30 L~NGTH indicates the number of characters in the word which will remain on the line which is now ended, so that the hyphen graphic is placed in document memory in a manner such as shown in Figure 21.~. Thereafter, functions 772-775 are performed, and these same functions are performed if at function 766 it was determined that the cursor was not moved. More particularly, to determine the actual length o~
the line the quantity WOR~ LENGTH is added to TOTAL LENGTH, ~E9 7 ~- 0 2 4 ~7~Si9~Ç;i HYPHEN COUNT is incremented, the sum in CHARCTR is added to TOTAL LENGTH, and function 775 restores the cursor location address to that saved at function 751u Moving now to Fig.
19 . 7, as the word "understanding" is being placed in the FAXsYTE and the hyphen flag is set^(decision 561), when the "i" is encountered decision 562 will be true and force the display line to be terminated after the discretionary hyphen by turning the program to the routine which simulates a CR
(Gl - see Fig. 19. 6) .

The attached program listings do not include the hyphe-nation function.

GRAPHICS
The graphic subroutines, illustrated in Figures 20 .1-20.12 are called in the page image or FAX mode using data 15 passed to it in order to assist in formatting functions. To provide this assistance the graphics routines provides for the writing, on the display of horizontal and vertical grids with half inch and one inch markings, respectively, the graphics routine also identifies, on a horizontal line at 20 the upper portion of the screen, active tab locations, as well as the margins in effect at the location of the cursor in the document. At the left side of the screen dots repre-sent vertical position of first and last writing line. In addition, the graphics routine also draws the page outline, 25 if that outline is to be something other than the standard 8.5 inch x 11 inch page; and it should be understood by those skilled in the art that, while the present embodiment employed hardware to generate the 8.5 x 11 inch page out-line, the graphic subroutine could have been used instead.
30 The graphics routine is driven by compacted data located in a font table defining the image to be drawn, this compacted data consists of a plurality of bytes of one of two classes, either a "FIRSTBYTE" or a "COMMANDsYTE". The processing performed by the graphic subroutines manipulates the data 35 and is capable of setting and/or clearing bits in RAM. The ~7:~46 -1~.0-graphics routine capabilities can be used to either directly write the pa~e image refresh RAM, or to write the OR memory, and this capability is used to write both memories; the page outline and horizontal and vertical grids are written in the 5 OR memory, active tab and active left and right margins as well as the first writing point and last writing line are written directly into the refresh RAM.

In operating on the compressed data, the processing routine first looks at a "FIRSTBYTE" to determine the effect 10 of the succeeding one or more "coMM~NDsYTEs". The first byte determines, whether or not each selected bit location is to be set or cleared, whether or not the pointer should be reinitialized to that in existence at the time the first byte is read. The COMMANDBYTES, in effect provide for 15 manipulation of a pointer, pointing into the memory to be written, and the pointer is manipulated so as to selectively locate certain bits for manipulation. In the course of manipulating the pointer the bits passed over may be either set, cleared or skipped (in the latter event of course, the 20 bits remain in their previous condition).

Turning now to Figure 20.1, the entry point to the graphic subroutine as illustrated, and as shown there are three different entry points, a first entry point, headed GRAPHIC I, a second entry point, headed GRAPHIC II, and a 25 third entry point, headed GRAPHIC III. The first entry point will result in modification of the page image refresh RAM, the second entry point provides for modification of the OR memory and the third entry provides for modification of some other RAM location which is identified when the sub-routine, at the third entry point is called. In the embodi-ment of the invention actually constructed, this third entry poin~ is never used.

Accordingly, as shown in Figure 20.1, function 851 at the first entry, saves the FONT storage pointer which was 79-024 ~7~5~

passed by the calling routine, anc. retrieves an offset address in-to the refresh RAM, so memory locations in the refresh RAM can be modified. Similarly, function 852, at the second entry point, provides for storage of the FONT
pointer, and uses an offset address to the OR memory so locations in that memory can be modified. Thereafter, regardless of the entry point function 854 sets a bit to require setting of each memory location, if the "FIRSTBYTE"
provides for clearing or skipping, the bit set at function 854 will be modified. Function 855 checks to see if the entries in the FONT TABLE are non-zero at the address speci-fied by the pointer. Assuming the locations are non-zero (identifying an active table entry) function a56 retreives the FIRSTBYTE, and stores it at a location identified as FSTBYT. Function 857 branches on bit 7 of FSTBYT; function 860 being performed if that bit is set. Function 860 pro-vides for resetting the memory pointer (DISPTR~ to the initial entry value and re-effecting function 854. After completing function 860, or if it is not performed function 858 is performed to check bit zero of FSTBYT. If set func-tion 861 clears the bit set at function 854 or 860 so that thereafter memory bits are cleared rather than being set.
If function 861 is not performed~ function 859 is performed to check bit 1 of FSTBYT, if reset the routine returns via an error condition; but if set, or if function 859 is not performed, function 862 is performed to advance FNTPTR to the next pOsitiOIl in the FONT TABLE. Thereafter, the process-inf skips to point B Isee Figure 20.2).

Since FNPTR is now incremented, it points to what should be a command byte rather than a first byte. Accord-ingly, function 863 checks to see if this entry is non-zero.
If the entry is zero, then function 864 is performed to check bit zero of FSTBYT. If set, function 872 is performed to return to the default or initial setting of the display pointer and function 873 advances the FONT TABLE pointer.

" ~
.E979-024 ~7~546 However, if bit zero was reset then function 865 is per-formed to check bit 1 FSTBYT. If set function 873 is per-formed to advance the FONT TABLE pointer, if reset an error return is performed.

In the normal course of events, the FONT TABLE entry is non-zero and therefore function 866 is performed to copy this byte into COMBYT. Thereafter, function 867 copies bits zero to four of CO~IBYT to DISBYT. Bits 5 and 6 of COMsYT
are direction bits, and depending on the bit combinations they can direct the hardware pointer left, up, riyht or down and this is detected by one of functions 868-871.
Depending on the bit combination processing skips to one of points D-G. For purposes of explanation we shall refer to point D, assuming the bits 5 and 6 combination in COMBYT is 15 pointing left.

Refer to Figure 20.3. As shown, the processing pro-vides a loop which is performed once for each count con-tained in DISBYT. In the course of this loop, function 822 first calls GRMODBYT; the processing for which is shown in 20 Figure 20.4.

Substantively, function 877 checks bit 7 COMBYT. If reset, no modification is required. If set, then one of functions 880 or 881 will be performed to either clear or set the bit at which the display pointer is pointing. Which 25 function is performed is determined by checking bits ~ and 1 of FSTBYT. Depending upon the condition of those bit, detected by one of functions 878 or 879 the current bit is either set or reset and a return effected. Function 873 determines if an error was detected (the error return of 30 Figure 20.4) and assuming no error was detected function 874 is performed to call GRBKDSPT; the processing for which is shown in Figures 20.5 and 20.6. The processing in Figure 20.5 is effected if the graphics routine is in the bit setting mode, and the processing of Figure 20.6 is performed ~E979-0?4 ~ 546 if the graphics rou~ine is in the bit clearing mode. Refer-ring first to Figure 20.5, and assuming that function 882 has determined that the processing is in the set mode then function 883 determines if the display pointer is at the left edge. The display poin-ter points to a byte, and to select bits within the byte a mask is used, the mask normal-ly pointing to the first bit of a byte, ~ut after that bit has been operated Orl the mask may be shifted up to 7 times whereafter it returns to its original position and a display 10 pointer is decremented. Accordingly, if the display pointer is not at the left edge, then function 8~4 shifts the mask to select a different bit, function 885 determines whether or not the mask has been shifted eight times; that concludes the typical processing. Once the mask has been shifted 8 times it is back at its original position and therefore, function 886 is performed to decrement the display pointer to point to a different byte. If the display pointer is at the left edge, determined in function 883, then function 887 is performed to determine whether or not the mask has been 20 shifted 8 times. If it has not, then function 888 can be performed to shift the mask one bit position. If it has been shifted 8 times then it cannot be shifted any further and that concludes the processing.

Similar processing is effected for the processing of 25 Fig. 20.6.

At the conclusion of GRBKDSPT, function 875 is per-formed to decrement DISBYT. This loop is performed a number of times indicated in DISBYT, and function 876 checks to see if the loop has been performed the required number of times.
30 When it has the processing returns to function B62 (Figure 20.1) to select the next byte from the FONT T~BLE.

Accordingly, it should be apparent that the processing will allow the setting or clearing or skipping of selected bits in RAMo While the leftward motion has been discussed 35 in detail essentially similar processing is performed for LE979-024 ~171546 other possible directions of motion, i.e., up to the right and do~n.
,, With the ability to advance through memory, setting, clearing or skipping bits as determined by F'IRST8Y~E, coupled with the ability to return to the initial setting and operating in a different direction, it should be apparent that this routine is capable of writing a vertical or hori-~on~al line, or both, and writing the relatively short and slightly longer horizontal or vertical line indicating 1/2 inch and one inch markers, as shown, for example, in Figures llA-llB.

In addition, in order to identify first writing point, last writing line, and the active left and right margins as well as the tab grids, it should also be apparent how the FONT TABLE can be loaded during the course of processing with the active parameters defining the locations of these points, so that when graphics routine at entry point 1, calls the FONT TABLE, those acti~e parameters will be deriv-ed and used in a similar manner to locate the first writing point, last writing line, and active left and right margins as well as the active tab grid.

BLOCK PROCESSING

As has been mentioned above, the operator can, after initially keying in~ or when editing, a document including some text, add one or more text matrices which have special characteristics, allowing the operator to move such a text matrix as a unit with respect to other text in the document, or to delete the text matrix in a very simple fashion. Such a text matrix is termed a block, and in order to explain block operations we will assume that the operator has a document with some text in memory and the document is being displayed in the page image mode.

LE979-02~ ~7~5~6 In a manner described above the operator positions the cursor to ar, area which is outside of the main text, and accordingly, in a manner also described, the cursor is blinked.

l~hen the operator begins keying in text with the machine in this condition~ the insert mode key is depressed followed by the desired text. As the keyboard queue is processed, function 46S (Figure 16.1) recognizes the insert mode code and processing skips via point Q ~See Figure 16.9). At this point, function 643 recongnizes an entry to the insert mode, and function 644 determines that the machine is not in the text mode. Thereafter, function 926 determines that the cursor is not, not blinking and thus function 927 determines if DOCPTR is on EOD and the document memory is empty.
Since, in our example, this is not the case function 928 is performed to determine if the cursor is between the f irst and last writing lines and there is text on the line and there is space in document memory. Assuming all these conditions are passed, function 929 is performed to scan the document memory to locate a paragraph boundary tfollowing the position of the cursor) and at this point the document memory is opened, much as in the case of typical insert mode operation and a BLIB code is entered at the beginning of the open area. This code indicates the beginning of a block.
Function 930, using the cursor position determines the document line number for the block and the horizontal posi-tion of the block, the latter parameter is stored as a temporary left margin for this block, the former is stored in the BLIB code. Thereafter, function 931 stores a tem-porary right margin, as the document right margin a temptab register (with five unit settings), an insert code and a null code. The tab register referred to provides tabs at each fifth character space. This can he modified by the operator. The BLIE code is stored at the end of the "hole"
in document memory. Inasmuch as this insert mode code on a keyboard queue has now been processed, function 932 decre-ments the keyboard queue pointer and function 933 stores a ~E979-024 ~ 7 ~ 1~6-text mode code in the queue. In this condition, the proces-sing returns via point U and determines that the keyboard queue is not empty, since at least the text mode code (in-serted at function 933) is stored there. Since this code is that of the text mode key function 465 again recognizes the code and the processing skips via point Q again to Fig-ure 16.9. At this point,function 934 recogni~es the text mode code. Function 935 determines that DOCPTR is not a sLIE code (it was leEt on the insert code at function 10 931). Function 937 changes the CRT chip to display in text mode. ~unction 938 calls KBSENTEN (Figure 17.1) to display the document in sentence or text mode. The processing then begins at star-t of the document and rewrites table A.
Function 939 then determines whether or not the cursor is on 15 the first screen of the document; if it is not function 940 is performed to call KBSNDOCR (see Figure 17.6). At this point function 941 gets the TABAPTR and function 942 sets SENTPTR to the beginning of the display memory or refresh RAM. Function 943 obtains the cursor location address.
20 Thereafter, the functions previously performed in relation to Figure 17.6 are executed; this includes, at function 283 getting DOCPTR corresponding to the screen which will be displayed. The processing then skips via point A tsee Figure 17.1). The display proceeds much in the manner as 25 previously described until a buried code, for example BLIB
is detected. This provides, via function 944 and 945 (Fig.
17.1) appropriate entries in the text table. Since the sLIB
is considered a buried code function 322 ~Figure 17.2) skips the processing to the buried code processor via point J (see 30 Figure 17.11). Function 801 checks WORDLEN. Since the buried code is considered a word ending, if it is not sepa-rated ~rom a word by a space processing skips to point E to determine if the word thus far developed can be displayed on the line which is then being displayed. If it can, the processing will return to the buried code processor to process the buried code. Accordingly, we will assume that at this point WORDLEN is equal to zero. Accordingly, functions ~E979-024 IL~L7 lL~6 802, 813 and 816 determine if the ~uried code is a temporary ri~ht margin, temporary tab or temporary le~t margin. Since we have assumed that the buried code is a block insert begin, the processing would skip via point L (See Figure 17.12). At this point function 831 checks to see lf the buried code is a block insert begin. ~ssuming it is, func-tion 832 sets the bloc~ insert indicator, and l~ads LPAD
with the quanti-ty 6. Function 833 checks -to see if we have gone past the end of the display. ~ssuming we have not, function 834 effects the special display (for block insert) starting line. This is accomplished by calling sLKINS10 .
That processing is shown in Figure 17.10. As shown, 845 moves SENTPTR TO position 4 on the line. Function 846-displays the special character (the downwardly directed 15 arrow) and function 847 continues the line by displaying a sequence of hyphens, function 848 terminates the line with another downwardly directed arrow (for an example of this display see Figure llE)~ That concludes BLXINS10. Function 835 indicates a special starting line in text table (to pre-20 vent the text cursor from entering this line) andfunction 836 skips past the block insert code and the pro-cessing then skips to point E1 (see Figure 17.3). At this point functions 347-349 set up to display the next line.
Since back at functions 930 (Figure 16.9) a temporary left 25 margin code was inserted, in the course of the processing in text mode function 293 would identify that buried codes were ; active. Since the temporary margin is another buried code function 322 (Figure 17.2) directs the processing again to the buried code processor (Figure 17.11). At this point, 30 function 816 identifies a buried code which is a temporary left margin. Function 817 sets the TL indicator in the text table. Function 819 provides for the display of the verti-cal line (again see Figure llE) and assuming that the tem-porary left margin is greater than the global left margin 35 function 821 shows the rightward directed arrow. On the other hand, if the temporary left margin was less than the global left margin then function 822 and 823 would result in LE979-024 ~ 6 the display of a leftward directed arrow. After displaying these special graphics, function 830 bumps -the DOCPTR past the buried codes and the processing ski~s via point A4 (See Figure 17.2) to display the text in the block. ~fter dis-5 playing the text, DOCPTR reaches the buried codes corres-ponding to BLIE. This again directs the processing to the buried code processor wherein function 837 (Figure 17.12) identifies a block terminator, BLIE. Accordingly, function 838 resets the block insert indicator, the temporary left, 10 temporary righ~ indicators, resets LPAD and LINELEN to the global parameters. Function 839 resets the indent tab amount. If the end of the display has not yet been passed (detected at function 840) function 841 displays the block insert ending line with up arrows by again calling BLRINS10.
15 Function 832 indicates a special line ending in the text table and function ~43 skips past the block terminating codes to display the remainder of text on the line.
Accordingly, the preceding description should suffice to indicate the manner in which the block insert and asso-20-ciated text results in a display shown for example in Figure llE.
Furthermore, the description has indicated that when a block insert is detected an automatic switch to the text mode is effected so that the operator's entry of text in the 25 block mode is made in connection with a text mode display.
At the conclusion of keyboarding the inserted text, the operator is free to switch back to the page image mode.
In that event, and assuming that the cursor has not been moved off the page including the block insert, when the 30 page image mode keycode is recognized in the the ~eyboard queue, function 465 directs the processing via point Q to ~unction 650 (Figure 16.9). Since this is the page image mode key, function 651 determines if it is a coded function.
Assuming it is not, function 652 changes the hardware dis-~5 play chip to display in page image by calling KBPAGEIMpassing to it the identification of the current page. That processing, has already been discussed and is sho~n at Figure 16 A 12. Essentially, the only processing is to call ~E979-024 `~ KBPAGEPRG (Figure 19.1). As discussed, the initial pro-cessing to write the refresh ~AM skips block insert codes, at the conclusion of writing the refresh RAM main text function 467 (Figure 16.12) determines if a flag was set to terminate page image processing early, if such a flag was not set then function 589 calls KBF~XBI, to process block inserts. That processing is shown in Figure 19. 2, and is discussed above.
To effect a block move, the operator first positions 10 the cursor to coincide with any character in a block desired ; to be moved. When the cursor is so located, ~OCPTR is altered so as to point to the address in document memory of the character at which the cursor is located. Thereafter, if the cursor is moved wholly outside of the text filled lS area (that is it coincides neither with another block nor with any main text) then DOCPTR remains pointing at the character in the block from which the cursor was moved. At this point, when the operator has located the cursor in the desired new position for the block, key 133 is actuated 20 concurrently with the code key 137 (see Figure 2). This is a coded M or a block move instruction. When that code is reached in the keyboard queue function 447 will recognize the coded function and processing skips to point G (Figure 16.2) wherein a number of coded ~unctions are searched for.
25 Processing continues through Figure 16.3 until, at Figure 16.4, function 912 recognizes the coded M concurrent with the fact that the machine is in page image mode and that DOCPTR is located within a block. Accordingly, processing skips via point AB (Figure 16.15). At this point, function 30 913 determines that the cursor is located between the first and last writing lines. If it is not, processing terminates since the block cannot be moved beyond the last writing line or before the first writing line. Assuming however, that the cursor is properly located, function 914 determlnes if 35 there is text on this line. This is accomplished by ref-erence to Table B. Assuming there is, function 915 obtains the line number from the block (in document memory) and L~979-02~ 546 modifies it to match the vertical location of the cursor.
This code, stored in document memory, along with the links in Table s identify the location for the block, and thus function 915 has taken the first step to moving this block. ~hen the block was stored, its left rnargin ~as determilled by the location at which the cursor had ~een located when the block insert was recognized. ~ince the block is now being moved, this left margin value, which is also stored in document memory, may have to be modified.
10 Therefore, function 916 retrieves the left margin value and calculates the difference between the left margin as stored in document memory, and the present horizontal location of the cursor. With this difference, function 917 begins searching through the block for a temporary left or a tem-15 porary right margin, when found, each is modified with thequantity calculated in function 916. When no further tem-porary left or temporary right margins are found, function 918 is performed to call KBPAGEIM to display the now modi-fied page. The main function of that processing (see Figure 20 16.12) is to call KBPAGEPRG. When first called, (see Figure 19.1) main text is written. Assuming the running was not terminated early, then at the completion of main text func-tion 589 calls KBFAXBI to display the blocks in the docu-ment. That processing is shown in Figure 19.2. In the 25 course of this processing function 592 starts DOCPTR at the start of memory and function 593 locates block inserts. For each block insert found, function 622 gets the document line number and assuming it is located on the page being dis-played, then functions 627 et seq. make appropriate entries 30 in Table B. In view of the preceding discussion, ho~ever, note that since that the block's document line number has been changed as a consequence of the block move function (see function 915--Figure 16.15), the llnks written at function 627 et seq. will now be different than they had 35 originally been because the document line number for the block is now different. Significantly, the location at document memory a-t which the block codes and associated text are stored, has not been altered. However, because the LE979-02~
5;46 document line number for this block has been altered, it will be displayed in a new location.
~ no-ther function to which blocks are especially sulted is deletion. For this function, the operator posiitons the cursor to lie somewhere within a block and then actuates the dele-te key 106 with key 133 depressed (see Figure 2). This places a code in the keyboard queue corresponding to the delete condition. In the course of processing the keyboard queue, when this code is recognized at function ~59 (Figure 16.1) processing skips ~ia point I wherein several tests are encountered for the particular code and associated machine conditions. of particular interest is function 919 which identifies a delete mode, page image mode, cursor not blin-king and DOCPTR located in a block~ In that event, function 920 is conditionally performed to close the document memory if the machine is in insert mode; in our example, however, the machine is not. Function 921 is then performed to scan the document memory to locate a block insert begin code and a block insert end code straddling the DOCPTR. When those codes are found function 922 then closes the document memory for the number of bytes found between the codes, in effect wiping out the block insert codes and all codes lying there-between~ Function 923 is then performed to call KBPAGEIM to in effect rewrite the screen. Since the block has been 25 deleted from document memory, on rewriting the screen, that block will of course, not be found and therefore will not be displayed.

REFORMATTING
In order to explain the manner in which reformat-ting can be simply effected we will assume that the operator has a ~ocument in document memory, the machine is in the page image mode and the operator simultaneously depresses key 118 and 137 (See Figure 2) resulting in a coded 5. When this code is recognized in the keyboard queue, function ~47 35 will first recognize the coded entry and the processing will skip to point G (See Figure 16.2). At this point function ;46 925 will recognize the code and the fact that the machine is in page image and function 924 will set a bit calling for the format line and column display. The resulting key ac-tuations will call up a display or rewriting of ~he refresh 5 RAM and with the bit set, the format line and column will be displayed. This concludes the processing; however the opera-tor may now change document parameters. For example, assume the operator now positions the cursor to a position at which the left margin should be changed to. With the 10 cursor thus set the operator simultaneously actuates keys 132 and 137 to produce a coded L. This code is recognized at function 946 (Figure 16.2). Thereafter, func-tion 947 checks to see if the machine is in page image and the cursor is to the left of the right margin, any other posi-15 tion of the cursor is not legal for a left margin. Assumingthe test imposed by functon 947 is passed function 948 changes the left margin ko the current horizontal position of the cursor. Function 949 calls KBPAGEIM passing to it the direction to start on page 1 or the beginning of the 20 document. KBPAGEIM has been previously discussed and its function is to reformat the entire document with the new left margin. ~unction ~50 thereafter locates the original position of the cursor on the screen, so that at the con-clusion of the operation DOCPTR can be determined by ref-25 erence to Table B. A similar result is effected if a codedR is asserted, to change the right margin (see functions 951-953) Figure 16.2.
Instead of changing the left or right margins the operator could have changed a temporary left or right 30 margin; this i5 effected by either a coded Q or a coded W
(see Figure 2). In that event functions 954 or 955 would recognize the entry, ensure the machine is in page image and the cursor is in a legal position for the new temporary margin. If any of the tests are not passed then the code is 35 not recognized and no action results. However, assuming that the function is recognized one of functions 956 or 957 saves an indication as to whether or not it is the temporary left lL3~ S;4~

or temporary right margin which is being modified.
Thereafter, function 958 calls KBSTRTMP, to store a new temporary code. That processing lS shown in Figure 16.14.

; Firstly, function 959 is conditionally performed to close document memory if the machine is in insert mode. Assuming it is not, function 960 scans the document memory backward for a block insert end, block insert begin, carrier return or required carrier return. Since temporary margins are effective from such a point forward, that point must be found in order to locate the temporary margin which is to be changed. When such a code is found function 961 determines if the point located is in the correct order for the temporary code; the format of some of these codes differ and therefore, it may be necessary to relocate the scan point to point to the desired code to be changed. If the scan point must be changed function 962 is performed, each time it is performed the scan point is changed one code unit (such as BLIB, TL, etc.~ until the proper by-te is located. Function 963 determines if the code to be modified is already there.
If it is not, function 964 stores a code in documen-t memory, moving all the codes up to make room for the code.
Thereafter, function 965 writes the code in the document memory, either temporary left or temporary right is stored as the cursor horizontal position. Temporary tabs are treated somewhat differently, and will be explained below.
Function 966 determines if the temporary code is in a block.
If it is not, function 967 must be performed to scan back in the page queue to locate the page where the temporary code is, since in reformatting, we must start from that location, note that function 960 scans document memory, whereas function 967 is scanning the page queue to locate a page number. If the code is in a block, then reference to the page queue is unnecessary since blocks do not cross page boundaries. Accordingly, functioh 968 sets a bit so that the page image program will only move the cursor vertically when DOCPTR is found to maintain it within the paragraph.
Function 969 then calls KBPAGEIM to write the display.
After the display ~"

~1'7~5~6 -12~-is rewritten function 970 determines whether the cursor is on this page, and if not, function 971 is performed looking for the page located at function 967, 50 that the finally written display will include the cursor.

The coded D is associated with a temporary tab reyister and is associated with functions 972 and 973 (see Figure 16.4 in much the same fashion. A temporary tab is larger than the code for a temporary left or temporary right margin and thus, when function 965 is performed firstly, the five unit tab grid is stored in the temporary tab register. Setting or clearing tab points is effected with ~eys 129 and 131, respectively (see Fig. 2). The coded S (tab set) or coded K
Itab clear) is recognized by the main program (see Fig.
16.4) to call KBFXTBST or KBFXTBCL (see Fig. 19.27). The particular bit of the tab grid operated on is determined by cursor location, the tab register is located in document memory via a pointer to the active tab register. As shown in Fig. 19.27 setting or clearing a tàb merely requeues setting or resetting (clearing) the appropriate bit.

Another reformatting process i5 effected by changes in the first writing position or first writing line. This is effected by the operator simultaneously depressing keys 116 and 137, a coded 1. This is recognized at function 974 (see Figure 16.2). If the machine is not in the page image mode, the command is not recognized and no action results. If the machine is in the page image mode then function 976 alters the first writing point to equal the cursor location by changing the first writing line, left margin, right margin and all TLM and TRM parameters. Since all other temporary margins, etc., are relative to the global parameters, no other changes need be effected. Thereafter, function 977 calls KBPAGEIM to display the first page in the new format.
Note that the number of lines per page remains unaltered, although the last writing line changes in the same direction and amount as the change in the first writing line, i.e. the text relationship to itself is unaltered, the only change is in the relationship between the text and the page outline.

a~ "
, . . .

Claims (9)

The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
1. A word processor comprising:
input means including a keyboard with a plurality of keys associated with different graphic or function including at least two cursor control keys, said input means producing a unique key code for each actuated key or group of keys, display means including a cathode ray tube for pro-ducing a visible image of multiple lines of text, but less than a full page, in response to a periodically repeating video signal and associated horizontal and vertical sync signals, said visible image including a cursor positioned in response to actuation of said cursor control keys, control means responsive to said input means for mani-pulating and storing said unique key codes and for con-trolling said display means, wherein the improvement comprises:
display control means in said control means for gener-ating a first or second video signal in response to selection of a first or second display mode, said first video signal producing an unformatted text display having less display text lines than in a typical page, and less text character capacity per text line than in a typical page, said second video signal producing a formatted display of capacity at least equal to the number of lines in a typical page wherein a plurality of different text charac-ters are represented by an identical visible image.
2. The apparatus of Claim 1 wherein said display control means includes a first refresh RAM
a second refresh RAM
a data bus coupled to outputs of said first and second refresh RAMs, means for writing into said first or second RAMs with signals derived from said keycodes, means for reading from one or another of said RAMs to place signals on said data bus, and video signal generating means including a character generator, for generating video signals from signals carried on said data bus.
3. The apparatus of Claim 2 in which said video signal generating means includes, first signal path means, including said character generator, for generating said first video signal from reading said first refresh RAM, second signal path means, including a pseudo character generator, for generating said second video signals from reading of said second refresh RAM.
4. The apparatus of Claims 1, 2 or 3 in which said control means includes display selection means responsive to a key code corresponding to a printable character to select said first display mode.
5. The apparatus of Claim 1 in which said second video signal represents said cursor in one mode when posi-tioned within boundaries defined by previous key codes, and in a second mode when said cursor is not positioned within said boundaries.
6. The apparatus of Claim 5 in which said second video signal includes a cursor signal and wherein said cursor signal alternates periodically from one state to another to blink said cursor when said cursor is not posi-tioned within said boundaries.
7. The apparatus of Claim 1 in which both said first and second video signals includes a cursor signal and in which said control means includes a cursor position control means for generating said cursor signal located in response to said cursor control keys, first refresh RAM means for controlling said first video signal including potential cursor locations only within vertical and horizontal boundaries, second refresh RAM means for controlling said second video signal including potential cursor locations beyond said vertical and horizontal boundaries, said cursor position control means including transition means responsive to selection of said first video display mode following said second video display mode for relocating said cursor, from a location beyond said horizontal and vertical boundaries, to a location within said boundaries.
8. The apparatus of Claim 7 in which said display means includes means for periodically changing said cursor signal of said second video signal from a first to a second state when said cursor is beyond said horizontal or vertical boundaries.
9. The apparatus of Claim 8 in which said means for periodically changing said cursor signal of said second video signal changes said signal from said first to said second state and back at a rate to generate a blinking cursor.
CA000402510A 1981-05-29 1982-05-07 Word processor and display Expired CA1171546A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/268,609 US4495490A (en) 1981-05-29 1981-05-29 Word processor and display
US268,609 1981-05-29

Publications (1)

Publication Number Publication Date
CA1171546A true CA1171546A (en) 1984-07-24

Family

ID=23023736

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000402510A Expired CA1171546A (en) 1981-05-29 1982-05-07 Word processor and display

Country Status (5)

Country Link
US (1) US4495490A (en)
EP (1) EP0066139B1 (en)
JP (3) JPS581230A (en)
CA (1) CA1171546A (en)
DE (1) DE3280161D1 (en)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59149526A (en) * 1983-01-28 1984-08-27 Fujitsu Ltd Intra-field document editing processor
JPS59146333A (en) * 1983-02-10 1984-08-22 Sharp Corp Sentence processing device
DE3421919A1 (en) * 1983-06-14 1984-12-20 Canon K.K., Tokio/Tokyo MEMORY CONTROL UNIT
JPS6014292A (en) * 1983-07-06 1985-01-24 株式会社東芝 Document generator
US4959769A (en) * 1983-10-03 1990-09-25 Wang Laboratories, Inc. Structures and methods for representing and processing documents
JPS60173622A (en) * 1984-02-18 1985-09-07 Canon Inc Electronic device
US4953120A (en) * 1984-03-07 1990-08-28 Canon Kabushiki Kaisha Data processing apparatus having repeat function suppression for continuously depressed data entry keys
JPS60189568A (en) * 1984-03-09 1985-09-27 Canon Inc Information processor
JPS60229173A (en) * 1984-04-25 1985-11-14 Matsushita Electric Ind Co Ltd Input editor
JPS6174063A (en) * 1984-09-18 1986-04-16 Casio Comput Co Ltd Data output system
JPS61120275A (en) * 1984-11-16 1986-06-07 Toshiba Corp Japanese word processor
US4977536A (en) * 1984-12-10 1990-12-11 Canon Kabushiki Kaisha Document processor
JPH0751364B2 (en) * 1984-12-29 1995-06-05 カシオ計算機株式会社 Character output device
US4734689A (en) * 1985-03-07 1988-03-29 Casio Computer Co., Ltd. Display apparatus which can scroll displayed data with regard to cursor position
US4786895A (en) * 1985-08-02 1988-11-22 Xeltron, S. A. Control panel
US4894798A (en) * 1986-06-20 1990-01-16 International Business Machines Corporation Automatic stop code insertion feature for a word processing apparatus
US4924433A (en) * 1986-07-15 1990-05-08 Brother Kogyo Kabushiki Kaisha Word processor with attribute functions
JP2636220B2 (en) * 1986-07-15 1997-07-30 ブラザー工業株式会社 Document editing device
JP2636270B2 (en) * 1987-10-29 1997-07-30 ブラザー工業株式会社 Document creation device
JP2966420B2 (en) * 1988-09-30 1999-10-25 シャープ株式会社 Information processing device
US5146439A (en) * 1989-01-04 1992-09-08 Pitney Bowes Inc. Records management system having dictation/transcription capability
JPH0785237B2 (en) * 1992-02-14 1995-09-13 松下電器産業株式会社 Input editing device
JPH0818703A (en) * 1994-04-28 1996-01-19 Xerox Corp System operation method
US5694546A (en) * 1994-05-31 1997-12-02 Reisman; Richard R. System for automatic unattended electronic information transport between a server and a client by a vendor provided transport software with a manifest list
JP3800565B2 (en) 1997-02-26 2006-07-26 株式会社日本コンラックス Card dispensing device
US20030107557A1 (en) * 1997-07-30 2003-06-12 Gateway, Inc. Control of unintended single-tap actuation of a computer touch pad pointing device
US6731309B1 (en) 1998-08-28 2004-05-04 Corel Corporation Real time preview
US11204729B2 (en) 2000-11-01 2021-12-21 Flexiworld Technologies, Inc. Internet based digital content services for pervasively providing protected digital content to smart devices based on having subscribed to the digital content service
WO2002046867A2 (en) 2000-11-01 2002-06-13 Flexiworld Technologies, Inc. Controller and manager for device-to-device pervasive digital output
US10915296B2 (en) 2000-11-01 2021-02-09 Flexiworld Technologies, Inc. Information apparatus that includes a touch sensitive screen interface for managing or replying to e-mails
US10860290B2 (en) 2000-11-01 2020-12-08 Flexiworld Technologies, Inc. Mobile information apparatuses that include a digital camera, a touch sensitive screen interface, support for voice activated commands, and a wireless communication chip or chipset supporting IEEE 802.11
US7318086B2 (en) * 2000-11-20 2008-01-08 Flexiworld Technologies, Inc. System for mobile and pervasive output
US20020097408A1 (en) 2001-01-19 2002-07-25 Chang William Ho Output device for universal data output
US7202857B2 (en) * 2001-08-29 2007-04-10 Microsoft Corporation Manual controlled scrolling
US8245158B1 (en) * 2002-03-11 2012-08-14 Brad Schrick System and method for providing a keyboard type interface for a computing device
US8866745B1 (en) 2002-03-11 2014-10-21 Brad Schrick System and method for providing a touch input interface for information computing and control devices
US7480861B2 (en) 2002-10-09 2009-01-20 Microsoft Corporation System and method for converting between text format and outline format
US7539940B2 (en) * 2002-10-09 2009-05-26 Microsoft Corporation System and method for converting between text formatting or markup language formatting and outline structure
US7412646B2 (en) * 2003-10-23 2008-08-12 Microsoft Corporation Systems and methods for pagination and co-pagination
US7948448B2 (en) 2004-04-01 2011-05-24 Polyvision Corporation Portable presentation system and methods for use therewith
US20070044028A1 (en) * 2004-04-01 2007-02-22 Dunn Michael H Virtual flip chart method and apparatus
US7834819B2 (en) * 2004-04-01 2010-11-16 Polyvision Corporation Virtual flip chart method and apparatus
US20050235293A1 (en) * 2004-04-14 2005-10-20 Microsoft Corporation Methods and systems for framework layout editing operations
CN1959669B (en) * 2005-11-04 2010-08-25 鸿富锦精密工业(深圳)有限公司 System and method for displaying documents
US9348512B2 (en) * 2012-08-08 2016-05-24 Nuance Communications, Inc. Methods for facilitating text entry
US10264213B1 (en) 2016-12-15 2019-04-16 Steelcase Inc. Content amplification system and method

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3674125A (en) * 1969-12-19 1972-07-04 Ibm Data system with printing, composing, communications, and magnetic card processing facilities
US3630336A (en) * 1970-04-15 1971-12-28 Ibm Proportional spacing printer incorporating word underscore control
US4195338A (en) * 1970-05-06 1980-03-25 Bell Telephone Laboratories, Incorporated Computer typesetting
US3675208A (en) * 1970-05-28 1972-07-04 Delta Data Syst Editing system for video display terminal
US3786429A (en) * 1971-07-12 1974-01-15 Lexitron Corp Electronic text display system which simulates a typewriter
US3792462A (en) * 1971-09-08 1974-02-12 Bunker Ramo Method and apparatus for controlling a multi-mode segmented display
US3823805A (en) * 1971-11-23 1974-07-16 Redactron Corp Typewriter controlled by a record medium
US3844397A (en) * 1971-11-23 1974-10-29 Redactron Corp Automatic underlining in an automated typewriter system
US3780846A (en) * 1972-08-03 1973-12-25 Ibm Automatic erasing typewriter system
JPS5245453B2 (en) * 1972-08-09 1977-11-16
US3822363A (en) * 1972-08-09 1974-07-02 Digi Log Syst Inc Portable computer terminal using a standard television receiver
US3815104A (en) * 1973-01-18 1974-06-04 Lexitron Corp Information processing system
US3810107A (en) * 1973-01-18 1974-05-07 Lexitron Corp Electronic text display and processing system
JPS5314374B2 (en) * 1973-04-09 1978-05-17
US3829855A (en) * 1973-06-20 1974-08-13 Ibm Typing system with form programmed format control
US3868673A (en) * 1973-08-14 1975-02-25 Teletype Corp Display apparatus including character enhancement
US3976975A (en) * 1974-02-04 1976-08-24 Texas Instruments Incorporated Prompting calculator
US3903517A (en) * 1974-02-26 1975-09-02 Cummins Allison Corp Dual density display
US3915278A (en) * 1974-03-21 1975-10-28 Cpt Corp Right hand margin adjustment feature for an automated typing system
US3895375A (en) * 1974-09-03 1975-07-15 Gte Information Syst Inc Display apparatus with facility for underlining and striking out characters
JPS5827509B2 (en) * 1975-12-26 1983-06-09 株式会社日立製作所 Cursor movement control device in screen split control device
US4197590A (en) * 1976-01-19 1980-04-08 Nugraphics, Inc. Method for dynamically viewing image elements stored in a random access memory array
US4070710A (en) * 1976-01-19 1978-01-24 Nugraphics, Inc. Raster scan display apparatus for dynamically viewing image elements stored in a random access memory array
CA1084641A (en) * 1976-06-01 1980-08-26 Raytheon Company Variable size character generator
US4107664A (en) * 1976-07-06 1978-08-15 Burroughs Corporation Raster scanned display system
US4190835A (en) * 1976-09-22 1980-02-26 U.S. Philips Corporation Editing display system with dual cursors
JPS5390818A (en) * 1977-01-21 1978-08-10 Toshiba Corp Character display unit
JPS5821729B2 (en) * 1977-08-11 1983-05-02 株式会社リコー word processor
US4189727A (en) * 1978-01-12 1980-02-19 Lexitron Corporation Display advance system for a word processor
US4168489A (en) * 1978-02-13 1979-09-18 Lexitron Corp. Full page mode system for certain word processing devices
US4215422A (en) * 1978-05-22 1980-07-29 International Business Machines Corporation Selectively modifiable phrase storage for a typewriter
US4231096A (en) * 1978-10-10 1980-10-28 Eltra Corporation Digital typesetter
US4225943A (en) * 1979-01-11 1980-09-30 International Business Machines Corporation Display system for horizontally segmenting text
US4230974A (en) * 1979-04-16 1980-10-28 Teletype Corporation Cathode ray tube deflection circuit having display format selection
US4240075A (en) * 1979-06-08 1980-12-16 International Business Machines Corporation Text processing and display system with means for rearranging the spatial format of a selectable section of displayed data
DE2939489A1 (en) * 1979-09-28 1981-05-14 Siemens Ag SYSTEM FOR LOCALIZING AREAS WITH MIXED TEXT / IMAGE EDITING ON THE SCREEN

Also Published As

Publication number Publication date
JPS5875238A (en) 1983-05-06
EP0066139A3 (en) 1986-03-26
JPS5875237A (en) 1983-05-06
EP0066139B1 (en) 1990-04-25
JPS581230A (en) 1983-01-06
US4495490A (en) 1985-01-22
JPS6342306B2 (en) 1988-08-23
DE3280161D1 (en) 1990-05-31
JPS6342305B2 (en) 1988-08-23
JPS6342304B2 (en) 1988-08-23
EP0066139A2 (en) 1982-12-08

Similar Documents

Publication Publication Date Title
CA1171546A (en) Word processor and display
US4686649A (en) Word processor with alternative formatted and unformatted display modes
US4057849A (en) Text editing and display system
US4539653A (en) Formatting text/graphics using plural independent formatting mechanisms
US4785296A (en) Method and system for displaying image data
JP3734852B2 (en) Image editing method and editing system
GB2063773A (en) Method and apparatus for arranging segmented character groups in a digital typesetter
JPH05298289A (en) Word processor
JPH076214A (en) Method for change of character at inside od image
US4677585A (en) Method for obtaining common mode information and common field attribute information for a plurality of card images
CA1171540A (en) Method of entering field dependent criteria for selecting records of spatially related data in an interactive text processing system
US4370645A (en) Ghost cursor in display all codes mode
JPH0812663B2 (en) Image processing system and method thereof
EP0052723B1 (en) Method of multi-directionally positioning a cursor on a display of a text processing system
JPH0570832B2 (en)
EP0009662B1 (en) Method and apparatus for storing and reconstructing chinese-like characters
JPH08221558A (en) Method and device for filing document
KR940007820B1 (en) Apparatus and method for crt display screen
JPH0462269B2 (en)
JP2821002B2 (en) Character processing device and character processing method
JPH0542516Y2 (en)
JP2592840B2 (en) Character processor
JP2682873B2 (en) Recognition device for tabular documents
JPS61295595A (en) Line information memory system for input editor
Rosenstein Display management in an integrated office workstation

Legal Events

Date Code Title Description
MKEC Expiry (correction)
MKEX Expiry