Layout

Word processor with alternative formatted and unformatted display modes

4686649

Abstract

A word processor supports an unformatted mode which includes display of a partial page and supports a formatted mode which includes display of the 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 regardless of the extent of inserted text. The hyphenate fuction is improved by informing the operator, via the display, 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 endings.


Claims

What is claimed is:

1. A word processor comprising:

input means including a keyboard with a plurality of keys, each associated with a 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 producing a visible image of multiple line of text 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 manipulating and storing said unique key codes and for controlling said display means,

wherein the improvement comprises:

dispaly control means in said control means for generating one of a first and second video signal, for driving said display means, in response to selection of one of a first and second display mode respectively,

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 each of a plurality of different text characters is represented by and 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 one of said first and second RAMs with signals derived from said keycodes, means for reading from one of said RAMs to place signals on said data bus, and

video signal generating means including a character generator, for generating video signals in response to 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 data read from said first refresh RAM,

secodn signal path means, including a pseudo character generator, for generating said second video signal from data read from said second refresh RAM.

4. The apparatus of any of claim 1-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 form when positioned within boundaries defined by previous key codes, and in a second form 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 positioned 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.

10. The apparatus of claim 1 wherein said second video signal provides display including at least S characters per row and T rows/screen and wherein:

said display control means includes a page refresh RAM of byte capacity no greater than S*T/n, wherein n is an integer greater than 1, and means for generating said second video signal in response to data read from said page refresh RAM,

a conventional CRT chip emitting timing signals for reading out said page refresh RAM at U characters per row and V rows/screen, wherein S is greater than U or T is greater than V,

said display control means further includes page refresh writing means for writing said page refresh RAM with signals to display T rows of text, each of S characters per row.

11. The apparatus of claim 10 wherein S is the maximum number of characters per line of a typical text line and T is the maximum number of lines per page of a typical page.

12. The apparatus of claim 11 in which said display control means includes clocking means for developing addressing signals at a rate greater than provided by said CRT chip.

13. The apparatus of claim 11 in which said page refresh writing means writes a single bit of said page refresh RAM for each text character.

14. The apparatus of claim 13 including a pixel select circuit responsive to said timing signals and signals from said page refresh RAM for generating a binary video signal with an identical pulse sequence for each text character.

15. The apparatus of claim 11 in which said display control means writes said page refresh RAM with a different multi-bit sequence for each different formatted multi-character array to be displayed.

16. The apparatus of claim 15 in which said character array is 2.times.2 and four bits of said multi-bit sequence identify one of sixteen different multi-character arrays.

17. The apparatus of claim 13 or 15 in which said display means comprises a conventional TV monitor or TV receiver for resolving S characters per row and T rows per screen.

18. The apparatus of claim 1 which further comprises:

cursor movement control means in said display control means responsive to actuation of one of said cursor control keys, in said first display mode, for limiting displayed cursor position to within imaginary boundaries in said visible image determined by locations in said visible image of displayed characters or graphics.

19. The apparaus of claim 1 further including hyphenate means in said display control means for controlling said display means when a hyphenate decision is required, including:

means for storing a representation of a page right margin,

means for averaging text line length for n lines preceding a line requiring said hyphenate decision and generating a line length signal representing said average line length, where n is an integer greater than 1,

means responsive to said line length signal and to said right margin representation for generating video signals to display an image of a word requiring hyphenation, and relative thereto a first marker corresponding to document right mragin, and a second marker corresponding to said average line length.

20. The apparatus of claim 19 in which said control means includes cursor limiting means responsive to said hyphenate means to limit cursor movement to an area on said display corresponding to said visible representation of said word.

21. The apparatus of claim 19 or 20 including means to initially display said cursor to the right of said word image and for storing a hyphen code at a location chosen by an operator if and only if said operator chooses a location to the left of said cursor's initial position.

22. A word processor comprising:

input means including a keyboard with a plurality of keys each associated with a 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 producing a visible image in response to a periodically repeating video signal and associated horizontal and vertical sync signals, said visible image including at least S characters per row and T rows/screen and a cursor positioned in responses to actuation of said cursor control keys,

control means responsive to said input means for manipulating and storing said unique key codes and for controlling said display means,

wherein said control means includes a page refresh RAM of byte capacity no greater than S*T/n wherein n is greater than 1,

and a conventional CRT chip emitting timing signals for reading out said page refresh RAM at U characters per row and V rows per screen wherein S>U or T>V,

and said control means further includes page refresh writing means for writing said page refresh RAM with signals to display T rows of text, each row of S characters.

23. The apparatus of claim 22 wherein S is the maximum number of characters per line of text and T is the maximum number of lines per page of a document.

24. The apparatus of claim 23 in which said control means includes clocking means for developing addressing signals at a rate greater than provided by said CRT chip.

25. The apparatus of claim 23 in which said page refresh writing means writes a single bit of said page refresh RAM for each text character.

26. The apparatus of claim 25 including a pixel sheet circuit responsive to said timing signals and signals from said page refresh RAM for generating a binsary video signal with an identical pulse sequence for each text character.

27. The apparatus of claim 23 in which said control means writes said page refresh RAM with a different multi-bit sequence for each different formatted multi-character array to be displayed.

28. The apparatus of claim 27 in which said character array is two by two, and four bits of said multi-bit sequence identify one of sixteen different multi-character arrays.

29. The apparatus of claims 25 or 27 in which said display means comprises a conventional TV monitor or TV set for resolving S characters per row and T rows per screen.

30. A word processor comprising:

input means including a keyboard with a plurality of keys each associated with a 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 producing a visible image of multiple lines of text, but less than a full page, in response to a periodically repeating sync 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 manipulating and storing said unique key codes and for controlling said display means,

wherein said improvement comprises:

hyphenate means in said control means for controlling said display means when a hyphenate decision is required, including:

means for storing a representation of page right margin,

means for averaging text line length for n lines preceding the line requiring said hyphenate decision and generating a line length signal representing said average line length, where n>1,

means responsive to said line length signal and to said right margin representation for generating video signals to display an image of a word requiring hyphenation, and relative thereto a first marker corresponding to document right margin, and a second marker corresponding to said average line length.

31. The apparatus of claim 30 in which said control means includes cursor limiting means responsive to said hyphenate means to limit cursor movement to an area on said display corresponding to said visible representation of said word.

32. The apparatus of claim 30 or 31 including means to initially display said cursor to the right of said word image and for storing a hyphen code at a location chosen by an operator if and only if said operator chooses a location to the left of said cursor's initial position.


Description

FIELD OF THE INVENTION

The present invention relates to text manipulating devices or word processors arranged to respond to operator selected text and format for ultimately producing 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 word processors 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.

APPENDIX

Program listings corresponding to the flow charts are attached to the specification of parent application Ser. No. 268,609, filed May 29, 1981 and now U.S. Pat. No. 4,495,490 as an appendix including pages A1-A257.

BACKGROUND 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 jet or other printer, a document including multiple lines of text in operator selected format; typically the document is the final desired product. Another 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 capability in that the electronic display is capable of displaying up to 66 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 various characters which the printer is capable of producing. This implies a certain minimal level of visible resolution. This resolution requirement coupled with the capability of displaying up to 66 lines of text, each line including generally 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 displaying 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 corresponding to an entire "page" it is impossible for the operator to accurately preview the appearance of an entire page.

The prior art does illustrate prior approaches to the solution of this problem. Fackler et al, in, "Light Emitting 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 but adequate for format presentation. Other suggestions directed 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" IBM TDB Vol. 15. No. 7, page 2136 December 1972 and Lindsay, "Segmented Display" IBM TDB, Vol. 14 No. 5 October 1971, pp1528-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 information to locate the displayed line portions. Finally, Lindsey shows how a display of 40-70 characters in length can be used to access various line segments as selected by an operator for editing.

In addition, U.S. Pat. No. 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 10.times.5 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 circuit by a factor of three by switching an inductor into the deflection circuit. See also Haak U.S. Pat. No. 4,230,974. The assignee of U.S. Pat. No. 4,168,489 announced a video type 1000 which has one mode of display with a 23 line capacity, but has another mode for displaying 66 lines on the same 10.times.5 inch CRT.

It is thus one object of the present invention to provide a display which is of the size normally associated with less than full page displays, but which is capable of giving the operator an accurate preview of what the printer would produce.

Commercially available electronic displays and components can be arrayed in a spectrum of relatively simple devices having relatively limited resolution, up to more complex, bigger and more expensive devices with 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 eliminated. As is well known to those skilled in the art, characters 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 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 includes video control integrated circuits for controlling the interaction of such a character generator, and horizontal and vertical synchronizing signals 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 corresponding to the sequence of coded signals. The commercially available integrated circuits are, however, configured to be compatible with the resolution of standard TV sets, so 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 number 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).

Present day technology allows the operator to change format of existing text by altering margins relative to page 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.

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 margin (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.

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 one mode (unformatted) of display, the unnecessary word spaces on the display are created for display convenience and have no real existence relative to the document 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 hyphenation function is supported which shows the operator information 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 uniformity in line endings without the necessity for justification.

In order to further assist operator formatting decisions, on request the display will 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 positioned within or without the text filled area. Performing an insert function to a document location outside of existing 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 control. To achieve the effect of a full page formatted display 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 printable character or graphic is treated and displayed identically. On the other hand, the unformatted display simply extracts a string of text characters or punctuation graphics and strings them along, breaking lines substantially only when display capacity is reached i.e., margin effects are not displayed as such.

Finally, using high rate digital signals in connection with CRT's whose phosphors were not designed for such signals can produce an effect termed "blooming" i.e., the image actually displayed is increased in size as a consequence of the interaction between CRT 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 be controlled.

SUMMARY OF THE INVENTION

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 the display is essentially unformatted 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 influence the format of the display. For example, aside from 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 of the electronic display is incapable of displaying a full page with a resolution required to distinctively 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.

Architecturally the inventive word processor includes a display (for example, the aforementioned cathode ray tube) and apparatus to generate a composite video signal including horizontal and vertical synchronizing signals necessary to properly drive the display. The composite video signal is 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 generator 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 character 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 location 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 keyboard 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 first (text mode) display, however, carries essentially no format information 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 maximize the amount of text included on each display line, in this first or text mode, a tab function is displayed as a single unique graphic, regardless of the number of spaces actually associated with the operator keyed tab function 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 identifies 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 perceivable, however, once the RAMS are written, the operator can switch from one display mode to the other almost instantaneously. In the second or page image mode, the operator has available a number of formatting commands such as readjusting 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 of 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 function 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, although it is constrained to remain within an operator selected page size. When the cursor is moved out of the text field, 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 operator 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 are displayed external to the outline of the page.

While the keyboard includes function keys for switching from text mode to page image mode or back, the processor will automatically induce a transition in the display mode, if the operator keys a printable character in the page image mode. The text displayed following such a selection of a printable character will be the text in the vicinity 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, 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 their margins adjusted 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, hyphenation function is simplified for the operator. Some prior art word processors are arranged to request a hyphenation 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 right margin. In accordance with the present invention, in addition to this information, the operator is presented with information as to the average location of line endings for an immediately preceding number 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 immediately 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 positioning is also constrained by the selected page outline.

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

Finally, while the page image displayed is not normally 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 functions can be deleted in an error correcting backspace operation 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 taken in conjunction with the attached drawings in which like reference characters identify identical apparatus and in which;

FIG. 1 is a block diagram illustrating significant components of the present invention;

FIG. 2 is an illustration of the typical keyboard which forms one of the input devices for use with and a component of the present invention;

FIGS. 3A-3C illustrate a correlation between text and a portion of a page image mode display for an alternate embodiment of the invention;

FIG. 4 is a more detailed block diagram of portions of the inventive apparatus, particularly associated with the display;

FIGS. 5-10 are schematics of the circuits used in different ones of the functional blocks of FIG. 4; specificaly FIG. 5 illustrates the clock circuit 59 to FIG. 4, FIGS. 6-10 illustrate details of the logic circuit 58 of FIG. 4; specifically FIG. 6 shows development of VDATA 2, FIG. 7 shows development of CRV 1 (an input to the circuit of FIG. 6); FIG. 8 shows development of the composite video VIDCOMP; FIG. 9 shows development of BLNK*, an input to the circuit of FIG. 7 and FIG. 10 shows development of EDGE, an input to the circuit of FIG. 6;

FIGS. 11A-11D illustrate the page image mode display for the same document with a cursor positioned at four different locations;

FIGS. 11E-11G are three text mode displays required to illustrate, in text mode, the entire document displayed in the page image mode displays of any of FIGS. 11A-11D;

FIG. 12 is a representation of document memory which will produce the display as shown in FIGS. 11A-11G, in connection with the present invention;

FIG. 13 is a high level flow diagram which is useful in understanding the overall processing performed in accordance with the present invention;

FIG. 14 is a map showing several significant functional components of system RAM in accordance with the present invention;

FIGS. 15A-15C provide a detailed flow diagram of the interrupt handler processing;

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

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

FIGS. 18.1-18.11 illustrate a detailed flow diagram for the cursor related processing in accordance with the present invention;

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

FIGS. 20.1-20.12 provide a detailed flow diagram of the graphics processing in accordance with the present invention; and

FIGS. 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 without, at the same time, sacrificing a great deal in terms of equipment complexity or cost. To this end, the system of the 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 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 requiring re-keyboarding 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, and 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 operator is keyboarding text, the display is unformatted in that the operator's previous selections as to margins (either permanent or temporary, tabs, page length) 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 by the operator, line length 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 entered 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). The former format decision is exhibited on the display typically by prematurely terminating a line, the latter format decision 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 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 operator can preview what the keyboarded text would look like if printed, by switching the display to the page image mode with the use of controls readily accessible 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, 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 regardless of its identity is displayed in identical fashion. Accordingly, 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 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. Likewise, the length of the page (the number of lines of text) can be increased or decreased (up to the limit of 78 lines 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 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 controlled by control keys on 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 the desired left margin, and then the left margin command 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 controlled from the keyboard either on a document, temporary or page end basis. When the cursor is positioned at a location which is occupied by text, it is on continuously, however, 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 like.

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.5.times.11", 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 functions. To assist the operator, the text mode also provides a cursor, which is movable under operator control. However, in contrast with the page image mode, in the text mode, the cursor 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 insertions. If the operator's insertions exceed that capacity, a new blank line is displayed for additional insertions, and 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 employed 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 accordance with the invention is the information presented to the operator at the time a hyphenation decision is required. Typically, a hyphenate decision will be encountered in the page mode, after the operator has specified left and right margins. As is conventional, the last five or six character spaces on a line are considered a "hot zone" so that if a word ending 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 hyphenate mode in which the entire word requiring a hyphenation decision will be displayed, and in addition the operator'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 for a previous predetermined number of lines on the page. The operator then merely positions the cursor at the location at which the hyphen is desired (and the cursor is constrained to move only within the word) whereafter asserting a special command will both return the display to the page mode and record the operator's hyphenate decision.

Reference is now made to FIG. 1 which is a block diagram illustrating important characteristics of the invention particularly related to the display features. As is shown in FIG. 1 the inventive system includes an input 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. Pat. No. 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 invention. As is shown in FIG. 1, the processor also is arranged to control a printer and a replaceable media recorder (such as magnetic tape, card or disc); these devices are not further shown or described in this application 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.

FIG. 1 also illustrates data and address bus 21 and 22 respectively of the processor 20. Data bus 21 is buffered and coupled to internal bus 31, which in turn, is coupled both to a text refresh random access memory (hereinafter text RAM 25) and a page display refresh random 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, or as text is read from replaceable 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 constructed, the document memory consisted of a memory capable 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 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 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 defined partially by the contents of the referred to tables. It should be noted that this 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 RAM 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 significantly altering parameters it is believed that this capacity can be increased, for example, to 16 lines each of 64 characters since text RAM had 1024 byte capacity, 7 bits of each byte defining the font and the eighth bit used for undercore. 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 FIG. 1 is coupled to a character generator 28 and a psuedo character generator 29, the reason for which will become clear hereinafter. However, the 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 shown in FIG. 1 the serial output string from the character generator 28 passed through logic circuit 30 before presentation 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 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 particularly designed for text display.

Those skilled in the art will recognize, in the CRT controller 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 to the character generator 28 properly coordinated with CRT deflection. The CRT controller 27 is programmable 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 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   Page Image (FAX)
    ______________________________________
    Scans/data row   15      3
    Characters/data row
                     64     132
    Data rows/frame  16     64
    ______________________________________


The term scan refers to a single sweep and data row, corresponds to a line, such as a line of text. Therefore, 15 scans/data row allows each character to include 15 pixels, vertically. Likewise 16 data rows/frame allows 16 lines of text to be displayed. In practice, several character positions (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. In page image, of the 132 positions available only 85 character positions are used for display of a page and its contents, the remainder (less positions not used) are dedicated to various prompts and messages.

In the text mode the CRT chip 27 is capable of addressing 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 and used to control the CRT. While FIG. 1 shows the RAM's 25 and 26 as separate from each other that separation is only functional as there is no reason why they cannot be located on the same partitioned chip. In addition, since the RAMs are used alternately they can in fact be implemented 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 DMA operation is used for refresh or 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, however, each bit represented a character, so it was capable of storing 128 characters per row for 64 rows per screen. Of these we used 85 characters per row for our page image, the rest, 43 characters per row was available in out split screen for prompts, etc.

While this, and other available CRT control chips are programmable in that they are capable of varying the number 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) to store an 156.times.78 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 page or the display) and the display characters, 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 that two-by-two array of text 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 the requirement of 78 rows per screen is reduced to 39 rows per screen, also well within the capability of these conventional chips. While we have suggested a 2.times.2 array it is of course possible to employ other, larger arrays, for example 3.times.2 or 2.times.3 with existing 8 bit bytes. While there is no theoretical reason why even larger arrays could not be used, 3.times.3 or larger arrays would require 9 bits or more to distinguish the various combinations of filled and unfilled locations.

FIG. 3A illustrates an exemplary two-by-two array of text characters containing, respectively, upper case e, space, lower case g and period; FIGS. 3B and 3C illustrate, respectively, 10 pitch and 12 pitch displays corresponding thereto. It will be noticed that any character location, regardless of character identity, is displayed as 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. 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 28 into a sequence 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-two array of text characters, corresponding to a single display character. Since there are 15 different combinations in which the two-by-two array can be filled or unfilled, 4 bits will suffice to define the particular array configuration. The remaining 3 or 4 bits can be used for other functions, such as defining cursor placement with regard to any one of the four different text characters represented by this display character. Of course, it is 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 interpreting the 4 bits defining the particular stored display character and serializing the resulting binary signals so that the appropriate display is produced, for example, that shown in FIG. 3B or 3C.

The preceding description of a display scheme is not that actually employed in an embodiment of the invention actually constructed. In that embodiment the CRT controller 27 was a CRT video timer-controller (VTAC) designated CRT 5027 and available from SMC Micro Systems Corp., Hauppauge, N.Y. 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 significant 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 RAM 26. That is, the chip will read or output 132 different addresses between horizontal flyback, and likewise address 64*132 addresses between vertical retraces. To increase these parameters we take the least significant bit of an address and multiply its rate. Thus, take H.0.-H7 where H.0. 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 H.0.. So, instead of eight address bits per row (limited 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, split the page image screen and put 85 characters per row in about 50% of the screen width. By using the same technique we can increase the row count, per screen, above 64.

Before describing the apparatus in detail, reference is made to FIG. 2, which illustrates the keyboard 10, as it appears to the operator. The keyboard 10 is, in many respects similar to conventional word processors in that it includes a first field of keys 150 which include typical typewriter alphanumeric symbols and functions. In order to further widen the number of unique key codes available from 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 from that which is obtained when only the other key within the field 150 is depressed. Thus, 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 simultaneously.

Two additional control key fields, 151 and 152 are also provided. Key field 151 includes keys 101-103 to effect, respectively, a media read, a printing operation, and a recording operation. In addition, keys 104-106 provide for placing the device in an insert mode, a review mode or a delete mode, respectively. The insert key 104 can be asserted in text or page image 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 the right of the cursor, that text is moved down to the next adjacent line, and the following text is adjusted accordingly, so that the operator sees, on the display 32, at least a portion of a line which is available for text insertion. If the operator's insertion exceeds this capacity, when in the insert mode, an additional blank line is provided, and all following text is moved down accordingly. In page image, insert will perform a text or block (if the 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 image of the next sequential 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 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 paragraph continuity, on default the last (or first) line of one 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 effect, namely it can delete a block of text (in the page mode) or in text mode it can delete a character for each 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 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 the screen. The manner in which this is effected will be 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 page mode 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 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 up. Similar action occurs with cursor at the bottom of the screen and assertion of cursor down (key 112). 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 which the key codes generated by assertion of any of these keys is used to implement the function will be described hereinafter.

Within the key field 150 itself, a majority of the keys and the results produced are conventional and will not be 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 backspace only when initially keying the document, continuing to 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 always merely a cursor left.

Each of the keys to be discussed hereinafter will produce the function described when the key itself is depressed in combination with actuation of the code key 137 (i.e., a coded function).

Depression of key 116 enables the operator to change the position of the first writing point. For example, with the page image display, the operator can move the cursor to the point at which it is desired the text to begin. Actuation 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 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 is used by 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 cursor in a single dimension, respectively. Second depression of key 118 restores the original page image.

In the page image mode the display includes a representation of the document boundaries so the operator can view the relationship of margins, etc. with respect to the document boundaries. For example, a common document boundary size might be 81/2.times.11". Keys 119 and 120 can be used to display document boundaries of different but predetermined sizes. For example, key 119 can cause an envelope display, and key 120 might cause a display simulating the shape of an IBM card. Similar document boundaries could be called up by other conventional techniques.

Keys 125 and 126 respectively, establish temporary right margins and temporary left margins at the present cursor position. Therefore, an operator desiring to change or insert a temporary right margin, for example, would first move the cursor, using any of the keys 109-114 to an appropriate location, and then actuate key 125. The temporary margins will be applied, by the processor 20 to the text in 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 affect text display only in page image mode.

Permanent margins for the document can be selected by 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 122 provides for word underscore in text mode only. 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 the 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. Keys 129 and 131, respectively, set or clear the temporary or global tab register depending on cursor location when the command is asserted.

Keys 128 and 135 allow the processor 20 to switch between the two documents in the document memory, key 128 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 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 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 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 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 outside 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 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 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 suitable modification to the system disclosed herein. More particularly, rather than requiring the operator to identify a left margin and first writing line before inserting text, the software could be modified to pick up these parameters from the operator's cursor positioning decision when initially keying in text.

Many of the functions briefly described in connection with the key field 150 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 margins, temporary tabs and word underscore. Likewise, a block can 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., 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 difficulty in understanding that this is not at all essential to the invention, and, with the addition of one or more keys, or a rearrangement 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 FIG. 4; a detailed block diagram of the apparatus interacting with the processor 20 and the display 32. As is shown in FIG. 4, the processor 20 has a data 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 21B to the processor 20 which may, for example, 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 CRT 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 the processor is writing into the text RAM 25 or page RAM 26, the selector passes the address from the processor address bus 22, whereas, 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 informaton from the processor 20 to a status latch 50 which provides various controls 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 blinking 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 features of the invention provide ghost cursors, a vertically 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 employs a pair of comparators 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 SP.0.-11 and EP.0.-11 from address latch 45 which provides 12 bits of address for each cursor.

The output of the comparators (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 provided to logic 58 to form a highlight 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 actually 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 RAM 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 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 RAM 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 a 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. Accordingly, 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 RAM 26 is read out a byte at a time, and the 8 bits are serialized 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 RAM 26. Thus, the timing signals F.sub.co, F.sub.c1 (corresponding to one of four columns) and R.sub.0,R.sub.1 (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 logic 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 FIG. 5 which describes the clock circuit 59.

As is shown in FIG. 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 appropriate frequency (in 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 dividers. 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 AND 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 (hereinafter DCC). In addition, the counter 70 provides column count signals (C.0. 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 (F.sub.c0, F.sub.c1) are respectively the input rate divided by 2 and 4. These signals are coupled to 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 3 MHz rate (12 MHz 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 circuits 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 versus 52 characters per row in text.

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

Referring now to FIG. 6, circuitry is illustrated to develop the signal VDATA2. FIG. 8 illustrates how that signal, in conjunction with several others is used to generate the composite video VIDCOMP. FIGS. 7, 9 and 10 illustrate the development of certain input signals used in the circuits of FIGS. 6 and 8.

Referring again to FIG. 6, AND gate 82 is provided with input signals R1L, and R3L as well as the output of inverters 80 and 81 which are driven by R2L, and R.0.L respectively. Each of these input signals is basically one of the row defining signals R.0. through R3 provided by the CRT chip 27 in response 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 in 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.

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 C.0.. Accordingly, the output of AND gate 85 is the display stream with underscore graphic added for text mode display. For page image display the basic binary signal stream F*CLO is coupled through inverter 92 to NAND gate 93 whose other input is the signal CURS*. 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 exclusive.

To see the development of the cursor image in the page image mode reference is made to FIG. 7. As shown in FIG. 7 OR gate 162 is provided with signals CRV*, a signal developed in the CRT chip to define the position of the cursor, and the signal BLNK 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 one input to OR gate 164. The output of OR gate 164 (CRVl) is provided as a signal 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 of OR gate 87. Accordingly, the output of exclusive OR gate 88 is a signal stream which is either text mode video (including underscore characters) or a page image video including 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 determined by the comparators 48 and 49, producing 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 GATE 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 CRV1, 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 image). In other words, for the 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 the other input to exclusive OR gate 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 gate 89 to provide the highlighting functions. In the page image mode the delayed highlighting output of flip-flop 97 is further delayed in flip-flop 98 where, in a similar fashion it is coupled through AND 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 FIG. 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 VDATA2. Accordingly, in the presence of the signal BONW the entire screen is highlighted or reversed imaged. The output of exclusive OR gate 165 (VDATA3) 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 therefore 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 FIG. 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 arranged for digital display, the enhancement provided by the remaining logic of FIG. 8 may not be essential. FIG. 8 is useful, however, when the CRT being used is that of a commercially available TV receiver or monitor whose phosphor is subject to "blooming" when driven 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 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 provided 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 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 will determine the pulse width. Under certain circumstances (particularly bit combinations in the register 167) the other enabling input to AND gate 177 will 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 fully enabled at the rate, and duty cycle of TWMHD (a 12 MHz 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 representing pulses and the lower row of gates 173 and 175 handles 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) 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 is produced in gates 173, 175 for text cursor representing pulses, i.e., one or more of the pulses will be reduced in width.

The gates 174 and 175 are personalized for noncursor and cursor representing pulses by their inputs from inverter 183 and shift register 182, respectively. In text 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 12 MHz rate and duty cycle by the output of gate 173 (in text mode only). On the other hand, in page image mode, gate 180 is enabled. Because one input is DCC, the normally four pulse wide CRV.0. 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 cursor because of "blooming" on the monitor.

Transistor Q1 and Q2 provide, in effect an OR gate to sum the horizontal and vertical sync, through exclusive OR gate 127 with the output of AND gate 177 which is the complete video exclusive of the synchronizing signals. The result, available at the tap, is VIDCOMP which can be directly provided to a CRT display. Accordingly, the logic 58 develops an unformatted VIDCOMP in text mode and a formatted VIDCOMP in FAX mode.

FIG. 9 illustrates how the signal BLNK* (used as an input to OR gate 162 in FIG. 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).

FIG. 10 illustrates the production of the signal EDGE. The input signals to the gates of FIG. 10, that is, R.0., R1 define the third row of any character box in the page image mode. The signals DR.0. through DR6 define character lines, the signals Hn or Hnx (where n is an integer) are column signals defining character columns and the signals FC.0. and FC1 define dot positions within a column. The logic in FIG. 10 thus provides an output through the inverter 186 concurrent with the sweep writing first line, last line, first column and last column. The concatenation of these signals is the signal EDGE defining the boundaries of the document. In a manner to be explained, documents of other sizes can be provided on the display screen.

We can now explain how our display in page image can illustrate 85 characters per data row with 64 data rows per screen using a CRT chip capable of writing either 132 characters per data row with 32 data rows per screen or 96 characters per data row with 64 data rows per screen. We set up the CRT chip to write 132 characters per data row and provide a simulated least significant row address bit, expanding row addressing from 32 to 64 rows. Our refresh RAM had 1024 byte capacity which, since we used 1 bit per character allowed for 8192 characters or more than enough for our 64 rows of 85 characters each.

FIGS. 11A through 11G illustrate respectively, several different page image and text mode displays of a single document and FIG. 12 represents a map of document memory which will produce the displays shown in FIGS. 11A through 11G.

FIGS. 11A-11D illustrate four different page image mode displays of the same document, the only difference between the four displays is caused by the fact that the cursor is located in different areas in each of the four displays. Because the number of lines of text in the page being displayed in FIGS. 11A-11D exceeds the text mode display capacity, the document which is shown in the display of FIGS. 11A-11D cannot be illustrated on a single text mode screen. Rather, three different screens are required. FIG. 11E shows the first screen constituting roughly the first one-third of the document, FIG. 11F shows the second screen constituting essentially the middle third of the document and FIG. 11G shows the last or third screen constituting essentially the last third of the document.

A comparison of FIGS. 11A-11D with FIGS. 11E-11G 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 illustrated in FIGS. 11A-11D is not directly revealed in FIGS. 11E-11G.

Referring now to FIG. 11E, 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 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. 11E-G is specific to 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 FIG. 11A allows the reader to correlate the location of the addressee data in page image mode display. Immediately below the 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 text block, and as formatted will appear on the same lines of the document as does the addressee data but disolaced to 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 margins. The small rightward directed arrows adjacent each of the vertically directed solid lines indicates 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 FIGS. 11E and 11F, note that the last two lines of text in FIG. 11E form the first two lines of text in FIG. 11F. This 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 FIG. 11F (braced by a pair of vertically directed solid lines) begins with a pair of graphic symbols 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 FIG. 11F is preceded by another graphic indicating a tab. Reference again to any of FIGS. 11A-11D indicate the extent of the tab, a parameter which is not explicitly illustrated in the text mode display. Finally, reference to FIG. 11G clearly indicates the concluding lines of text in the document; note also that the first line of text in FIG. 11G is the last line in the text in FIG. 11E.

In the text mode display of FIG. 11G, the plural rightward directed arrows indicate several tab functions, concluded with a required tab (shown as an underscored tab graphic), reference to any of FIGS. 11A through 11D indicates the actual effect of these tab functions.

Returning now to FIGS. 11A-11D, this page mode display 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 FIGS. 11A and 11B, 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 FIG. 11B is located within the block, 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 FIG. 11C 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 FIGS. 11A and 11C. Finally, the cursor in FIG. 11D is located in still another portion of text associated with a tab grid which is not the same as either FIGS. 11A or 11C, although the right and left margin indicators are identical in FIGS. 11A and 11D.

FIG. 12 is a representation of a portion of document memory, and the information contained therein, which is capable of generating the display of FIGS. 11A-11G. In FIG. 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 emphasized that the 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; FIG. 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 FIG. 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 discussing other portions of text, the line ending CR is only used when the operator 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. 11E-G since those codes are not displayed in this embodiment. If desired, of course, they could be displayed by changes which should be apparent. Following the block codes are a series of codes representing the salutation, terminated with CR. This is followed by a further CR byte to provide the line space between the salutation and the remaining text, see FIG. 11A, for example. Note that this line space is not evident on the text mode display. A code indicating 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 FIGS. 11A-11D. 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.

The manner in which operator input is stored in document memory to achieve a result illustrated for example, such as that shown in FIG. 12, and the manner in which a document memory containing a sequence such as that as shown in FIG. 12 results in the display shown in FIGS. 11A-11G will be explained in the following portions of the specification including a series of examples and description of associated flow charts.

Before discussing the functions of the processor 20, in response to operator keyed inputs, in order to explain how the functions alluded to hereinbefore are actually achieved it is worthwhile to outline the functions performed by the processor. Thus, FIG. 13 is a simplified flow diagram of the processing, and FIG. 14 is a memory map of the processor's internal RAM.

As shown in FIG. 13 the processor 20 goes through a sequence of steps in order to respond to operator key actuation 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 (depressed/released). If it has been, the processor merely sets/resets a delete condition (a flag) at function 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 routines if necessary. The particular processing depends, of course, on the function itself. Following the processing, the processor 20 returns to the wait loop for additional key actuations.

On the other hand, if function 202 did not detect actuation of a coded function key, then function 204 determines whether or not the machine is in the page image mode. 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 response to the particular key actuation.

Function 206 and 215 relate to actuation of outboard keys, i.e., keys in the set 151 or 152 (see FIG. 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 the wait loop. The location in which the function is inserted depends on cursor location, and perhaps on other factors 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 explained, the page image mode does not display unique characters 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 document, or in the insert mode. When the condition stated above is true, function 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 insert mode). This action replaces the existing text, character for character, with the keyed in text.

If back at function 204 it was determined that the machine was not in the page image mode, then function 212 (similar to function 205) is performed. If not in the delete condition, function 214 determines if the key entered was a character key. If so, function 217 stores the code corresponding to the character in the document memory at the appropriate location (of the cursor) and the machine returns to the wait loop. If not a character key, function 215 determines if it is an outboard key if it is function 218 is performed (similar to function 207). If not an outboard key nor a character, the key must be a function which is then stored by function 216 at the appropriate location.

Not shown in FIG. 13, of course is the particular processing 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 FIG. 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 FIG. 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 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 text 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 RAM buffer 25 to effect a display in connection with the apparatus shown in FIG. 4. In the course of this processing, the processor 20 also keeps track of various parameters 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. From the data stored in document memory 222 the processor 20 then writes in a page image RAM buffer 26, to effect the appropriate display. In a fashion entirely similar to the text display 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 boundaries may, in the alternative, be displayed with the use of the OR memory 227. This is a 1K byte portion of RAM into which page boundaries of a selected 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 developed, 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 modified to make it more flexible so it could generate a selected page outline from a repertoire of outlines.

System Software

In general the processing effected to write 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 image for at least the portion of the document which precedes the displayed 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 FIGS. 15A-15C) the purpose of which is to respond to changes in the keyboard 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 FIGS. 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 necessary to respond to the information passed or derived from the keyboard queue. A sentence processor, or text mode associated set of routines (illustrated in FIGS. 17.1 through 17.12) which, when called and based on information in the document memory, builds the text table referred to hereinafter, and in conjunction with the text table and the document memory writes into the text mode refresh RAM 25. A set of cursor routines (illustrated in FIGS. 18.1 through 18.11) which manage cursor position in both the text and page image display modes. A set of FAX or page image routines (illustrated in FIGS. 19.1 through 19.31) which, when called and in response to the document memory both build the page table and page queue referred to hereinbefore as well as write to the page image refresh RAM 26. And finally, a series of graphic routines (illustrated in FIGS. 20.1 through 20.12) which are used by the page image routines for the purpose of drawing page outlines other than the standard 81/2.times.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 internal system codes, and store, in the order of receipt, the codes in a keyboard queue. The main system control program initializes various portions of 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 particular contents of that queue either processes it itself, or calls other routines 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 groupings 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 and page image routines, in the course of writing the associated text RAM or page image RAM also construct an associated 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 (or 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 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 display. 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 contain the address to another entry in table B which describes an additional segment on the line, if any.

INTERRUPT HANDLER

FIG. 15 A-C is a flow diagram of the interrupt handler.

As shown in FIG. 15A, on detection of an interrupt, the processor 20 determines the source of the interrupt, printer interrupts or recorder interrupts are appropriately 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 (flag) 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 (FIG. 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, decision 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 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 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 decision block 250 checks to see whether the code key is depressed, and if it has been, function 259 sets the code bit. Regardless of prior processing, function 251 determines if this is a control entry, referring to a space, carrier return, tab, required tab or required carrier return. For any of these functions it is necessary to terminate the page image 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.

Also illustrated in FIG. 15B is the processing performed 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 FIG. 15A, if decision blocks 245 and 246 responded to a make/break typamatic interrupt, then the processing performed is shown in FIG. 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 interrupt 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 FIGS. 15A to 15C, it will be seen that a keyboard queue is built, in fesponse to sequential key actuations of the keyboard 10. Under certain conditions flags will be set to terminate page image processing early, the effect of this will be seen as this description proceeds.

Referring now to FIG. 16.1 through 16.18, and especially FIG. 16.1, functions 265 through 269 are performed only on power on or reset. As illustrated, these functions provide for initializing 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 mode. Function 269, to complete the initialization operation calls the routine KBFAXSET which itself calls KBPAGEIM (the latter shown in FIG. 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 RAM 26.

Once the processor returns from the routines called at function 269, 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 FIGS. 15 through 21 operate in the text display mode, those functions will be described including writing to the text refresh RAM, and in that regard, effecting cursor movement in response to actuation of the various cursor movement keys, providing for word underscore, delete word underscore, character underscore, delete character underscore as well as scrolling.

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

    ______________________________________
    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
                     RAM
    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
                     characters 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 (table A)
    LPAD             Amount to pad with spaces
                     from the left edge of the
                     display to first display-
                     able character
    LINELEN          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 characteris or functions. In initially keying in a document the operator actuates key 123 (T) in concert with 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 calls KBSENTEN (function 638) (FIG. 16.3). The latter is illustrated beginning at FIG. 17.1. There, functions 638-641 initiali