CA1048667A - Graphic symbol generator - Google Patents
Graphic symbol generatorInfo
- Publication number
- CA1048667A CA1048667A CA78308126A CA308126A CA1048667A CA 1048667 A CA1048667 A CA 1048667A CA 78308126 A CA78308126 A CA 78308126A CA 308126 A CA308126 A CA 308126A CA 1048667 A CA1048667 A CA 1048667A
- Authority
- CA
- Canada
- Prior art keywords
- stroke
- symbol
- symbols
- line
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired
Links
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
ABSTRACT
Apparatus for generating graphic symbols on a cathode-ray tube em-ploys a beam control system which starts-each of a plurality of parallel strokes required for each symbol at the bottom, using a programmed offset for symbols which extend below a baseline, and to otherwise move a symbol in the X and Y axes from a position routinely specified as spaced symbols are dis-played in a line. The slope of the strokes for a symbol is controlled for italicizing the symbols by programming the relative magnitudes and signs of inputs to X and Y integrators which generate ramp signals added to symbol positioning signals. The beam is turned on and off during each stroke in response to a programmed and clocked bit stream of coded digital signals. The size of a symbol is controlled by programming the clock rate for the beam on-off control and the magnitudes of the inputs to the X and Y integrators.
Apparatus for generating graphic symbols on a cathode-ray tube em-ploys a beam control system which starts-each of a plurality of parallel strokes required for each symbol at the bottom, using a programmed offset for symbols which extend below a baseline, and to otherwise move a symbol in the X and Y axes from a position routinely specified as spaced symbols are dis-played in a line. The slope of the strokes for a symbol is controlled for italicizing the symbols by programming the relative magnitudes and signs of inputs to X and Y integrators which generate ramp signals added to symbol positioning signals. The beam is turned on and off during each stroke in response to a programmed and clocked bit stream of coded digital signals. The size of a symbol is controlled by programming the clock rate for the beam on-off control and the magnitudes of the inputs to the X and Y integrators.
Description
` -1~4~3~;67 This application is a divisional of our patent application Serial No. 213441 filed November 12, 1974.
This invention relates to graphic symbol generators, and more parti-cularly to improvements in the generation of high-quality graphic symbols such as letters, numerals, punctuation marks and the like, commonly used for com-posing lines of information for display, or recording on film, under control of a programmed data processing system.
The current practice in generating graphic symbols with a cathode-ray tube (CRT) for display, or recording on film, is to position the electron beam at a startir.g point for the symbol and deflecting the beam through a se-quence of parallel strokes covering the area of the symbol while modulating the beam intensity, i.e., while turning the beam on and off. The data for the control of beam intensity is stored in the memory of the data processor as a bit stream of packed fields that are read out serially and unpacked as a sequence of strokes are generated in a predetermined pattern. A system dis-closed in United States Patent No. 3,305,841 is representative of this cur-rent practice.
To minimize the number of bits required to generate a symbol, i.e., to provide deflection and intensity control, various data compression tech-niques may be employed. For example, all strokes may be uniformly spaced sothat to progress from one stroke to the next~ theddeflection control system can be automatically incremented a predetermined or preprogrammed amount in a direction normal to the strokes (along the X axis assuming an upright sym-bol on a horizontal line). To actually generate the symbol, it is then sim-ply a matter of programming the intensity control in terms of turn-on and turn-off points for the beam in each stroke.
The control data can be further compressed by specifying the turn-on and turn-off points of only the first stroke relative to a fixed baseline, e.g., by specifying the points in terms of units of stroke length from a -1- ~
` -1~48667 baseline. The turn-on and turn-off points of each successive stroke are then specified in terms of changes or "deltas" in the respective turn-on and turn-off points, i.e., by specifying the points in each stroke relative to corresponding points in the pEeeeding stroke. In the case of a stroke having a discontinuity with the preceding stroke, such as for generating the dot over the letter i, the first stroke of the dot would be treated in the program the same as the first stroke of the symbol to specify the turn-on and turn-off -points with reference to the baseline. The points in subsequent strokes are then specified only as changes as before until the end of the symbol is reach-ed. The end is signified by a programmed code in the stream of codes used to specify the changes. An example of this data compression technique may be found in United States Patent No. 3,471,848.
A system utilizing a symbol generator for display, or film record-ing, of text may be organized in the following manner. The text is first key-boarded into a data processing system. The keyboarded data are continuously -st~red in a bulk memory, such as a magnetic disc or tape. A central process- ~-ing unit then accepts and buffers the data from the bulk memory for process-ing through to the face of a CRT for display. A camera system photographs the face of the CRT if a film record is desired. The film can later be used to produce plates for offset printing of copies. The CRT system is provided with a programmable control of typically 16,000 by 16,000 points, and can be driven to produc~ 5,000 or more symbols per second, each being accurately positioned and uniquely drawn to a specified font.
The central processing unit is a programmed digital computer provid-ed with a repertoire of symbol control codes that may be called out of a core memory storage. Typically, a standard set of symbols will be stored for each of the fonts required by the stored program. Because each symbol for each ; font requires a separate packed stream of control codes to be stored~ the need for compression of the control data can be readily appreciated. To provide .
-11~)48~67 greater flexibility in the composition of the text and the format used, with-out having a provide additional sets of symbols, it is desirable to be able to vary the size of any symbol called out.
A common technique for varying size consists of counting units of stroke length at a programmed clock rate while a stroke generator produces the strokes at a standard rate. Changing the clock rate then changes the height of the symbol. The width of the character is changed proportionally by changing the predetermined stroke spacing and varying the beam diameter by adjusting the CRT focus through an 8-bit register loaded by the stored program of the data processing system. In that manner the size of the symbol may be changed without distortion. ;
The degree to which size may be varied by changing the clock rate is a function of the degree of clock rate control available. For example, if the clock rate is halved the si7e is doubled. If halved again~ the size is further increased by a factor of two. To be able to control the size to a virtually infinite degree from some maximum to some minimum, without a rather elaborate and complex control for the clock rate, imposes a problem. The cap-ability of providing italicized symbols in all sizes without further:compli-cating the control system in general and the size control in particular, im-poses still another problem.
Yet another problem is providing a baseline for the symbols to beproduced. Since a certain space bounded between t~o parallel lines will define a line of text~ it would be appropriate to use one of the two lines as the baseline. Prior art system have elected the upper line since some symbols, notably some lower case let~ers, extend below the lower line. With the base-line at the top, every stroke can be referenced to the baseline without any difficulty, and simply continued down below the lower line as far as necessary to complete the symbol. A disadvantage of that solution is that most lower - case letters do not extend to the upper line so that in most cases, each , 1~48667 stroke must traverse the empty space above the symbol before the beam is tuned on. Once the beam is turned off for the last time in a given stroke, that stroke can be terminated, but for most strokes, the beam will have been deflected from the upper line, the baseline, to the lower line. It would be better to start the strokes at the lower line and thus be able to terminate a majority of the strokes once the beam has been turned off for the last time well before the beam has been deflected the full space between the lower and ~
upper lines. The time saved in each line of composition would be significant, ~ - -but the problem then is to accommodate symbols that extend below the lower line if that lower line is to be used as the baseline.
An object of this invention is to provide improved size control for the generation of symbols.
Another object is to provide a slant c~ntrol for italicized symbols.
Yet another object is to provide an easily programmed means for rotating a symbol.
Still another object is to provide a baseline reference at the bottom for every symbol of a line of composition with an accommodation for symbols which extend below the line of composition.
These and other objects of the invention are achieved in a symbol generator of the type described using two digitally controlled analog inte-grat~s,one for each of two orthogonal (X and Y) axes of a cathode-ray tube (CRT) display to generate strokes. The inputs to the integrators are from separate digital-to-analog converters connected to separate holding registers.
The rates and polarities of change in the outputs of the integrators are dir-ectly and separately controlled by digitally coded number loaded into the hold-ing registers by a stored program in a data processing system. The combined X and Y deflection rates cooperate to generate strokes for upright symbols (when one of the rate is zero), and to generate strokes for italicized symbols and rotated symbols, as required by the stored program. The ratio of one nu~er : ' ' ' ' . . . ' : `
- , : - .: -.
~ - \
1~415 ~i67 to the other is the tangent of the slant required for the strokes of the symbol. The magnitudes of the numbers may be changed for a symbol under programmed control when the symbol size is to be changed. Size of the symbols can be further controlled by programming the clock rate at which units of stroke length are counted out for the purpose of turning the beam on and off at the right times. Assuming 2N different clock rates can be programmed, the repertoire of symbols can be specified with any one of 2N sizes with clock -~
control alone. Now adding the programmable holding registers with a capacity for binary numbers of 2M digits, excluding sign, provides 2N M different symbol sizes that can be specified for each symbol. Symbol and stroke spacing are controlled by updating main digital-to-analog converters at the beginning and end of a symbol, and at the beginning of each stroke. These main digital-to-analog converters provide static beam deflection voltages during a stroke. These voltages are added to the outputs of the integrators.
Each stroke is commenced at a baseline at the bottom of a line of symbols.
For symbols which extend below the baseline, a baseline offset is programmed ~-and entered in the main digital-to-analog converters. Offset along the axis orthogonal to the baseline may also be programmed along with baseline offset, for italicized symbols.
According to one broad aspect of the invention, there is provided in a graphic symbol generator for use with a data processing system employing a cathode-ray tube display and using two digitally controlled analog inte-grators, one for each of two orthogonal X and Y axes of said cathode-ray tube display to generate spaced parallel strokes, where inputs to said integrators are from separate digital-to-analog converters connected to separate registers, an improvement comprising means for programming the rates and polarities of change in the outputs of the integrators in the form of ; digitally coded numbers loaded into said registers by a stored program in ; said data processing system to provide programmed X and Y beam deflection rates which coope~ate to generate strokes at an angle between 0 and 9O
with respect to said axes as required in response to the ratio of one of said numbers to the other.
~ -5-. ~ ~
'~ ' ' 1~48~tj7 According to another broad aspect of the invention, there is provided in apparatus for displaying graphic symbols on an imaginary line using a cathode-ray tube and employing a beam control system, means operative on said beam control system for starting at specified points each of a plur-ality of parallel strokes required for each symbol on said line, means operative on said starting means for programming an offset of said points below said imaginary line along which spaced symbols are displayed in sequence in order to specify starting points for strokes of symbols which extend below said imaginary line and means operative on said starting means for programming an offset of said points in a direction parallel to said imaginary line from an offset position otherwise specified for italicized symbols that extend below said line as said line of spaced symbols is dis-played.
According to yet another broad aspect of the invention, there is provided in a programmed digital data processing system having means for generating spaced graphic symbols on a line across the face of a cathode-ray tube, said means employing X and Y deflection systems for producing spaced parallel strokes of an electron beam, said strokes beginning on a line common to all symbols as a baseline, the first of said strokes starting at a 20 designated point specified on a coordinate system having orthogonal X and Y
axes, where said X and Y deflection systems cooperate to place said beam on any point on the face of said cathode-ray tube in response to Xp and Yp signals, said graphic symbol generating means having means for turning said . .
beam on and off as required by counting units of stroke length from said baseline to determine the on and off points of stroke elements which make up the symbol, the improvement of means for starting each stroke from said base-- line at the bottom of each symbol, means for terminating each stroke at the turn-off point of the last one or more elements, means for generating said strokes, means for adding programmed values to at least one of said X and Y
coordinates of said $tarting points at the end of each stroke; and means for programming said values to be added to said X and Y coordinates, whereby width of said symbol is controlled.
. ~ . .
~ ; ~ -5a-. .
1~8f~i~;7 According to a further broad aspect of the invention, there is provided apparatus employing a cathode_ray tube for displaying lines of graphic symbols by displaying parallel line segments using the electron beam of the cathode-ray tube having deflection circuits connected to a data pro-cessing system which stores in digital form control data for generation of symbols to be displayed on a baseline, including data which defines the starting point of said baseline for said line of graphic symbols in a fixed Cartesian coordinate system, comprising analog deflection control means re-sponsive to digital signals for producing analog deflection control signals Xp and Yp for said beam in said Cartesian coordinate system, X and Y registers for storing digital values for said analog deflection control means, said ~
digital values being provided as a line starting point by said data process- ~.-ing system for each line of symbols, a pair of digital means for adding and subtracting deflection control values to the contents of said respective X
and Y registers, means responsive to data from said data processing system for generating stroke signals X and Y applied to said respective X and Y
deflection control means for each successive stroke, means responsive to data from said data processing system for generating a video control signal to blank and unblank said cathode-ray beam during each stroke to produce said -:
parallel line segments, a plurality of spacing registers associated in pairs, one of each pair for a different axis of said Cartesian coordinate system for storing line segment spacing data, a first pair for storing stroke spacing data, a second pair for storing symbol spacing data and a third set for stor-ing baseline offset data for each stroke of each symbol, said offset data providing not only stroke offset in a direction normal to said baseline for symbols that extend below said baseline, but also stroke offset in a direction parallel to said baseline for symbols that are slanted with respect to said baseline, all of said paired registers being connected to said pair of digital means for adding and subtracting deflection control values, means responsive to cant~Ql a said data processing system for updating the contents of said X and Y registers and said paired spacing registers, and means responsive to control of said data processing system for adding the contents of respective 5b-1(~4t~67 ~ -ones of a pair of spacing data registers to said X and Y registers during the course of displaying a line of symbols by generating on the face of said cathode-ray tube a sequence of symbols with respect to an imaginary line coincident with said baseline and anywhere on said face with any orientation in respect to said fixed Cartesian coordinate system.
The invention in conjunction with the invention of Application Serial No. 213441 will now be described in greater detail with reference to :~ .
the accompanying drawings in which:
Figure 1 is a block diagram of a system embodying the present in-vention;
Figure 2 is a block diagram of a stroke generator provided in the system of Figure 1 in accordance with the present invention;
Figure 3 shows an italicized symbol having an X and Y offset for illustration of important features of the present invention;
Figure 4 shows the intensity control coding required for the : ' " :
- , , :
; . . , ~ , 1~4B~67 generation of the symbol of Figure 3 and the preliminary axis offset desired for the symbol; and Figure 5 is a block diagram of a video control unit which responds to the intensity control coding of Figure 4 to display the symbol of Figure 3 on the face of a CRT in the system of Figure 1.
The block diagram of Figure 1 indicates generally the flow of in- -formation from a data processing system 10 to a cathode-ray tube (CRT) 11 for display of a selected symbol using a selected starting point at X and Y coor-dinates set by applying analog signals X and Yp to conventional X and Y de-flection circuits 12 and 13.
The data processing system has heretofore been commercially avail-able from Information International, Inc., in a system model FR-80, a computer output microfilm recorder. It comprises a central processing unit 14, a memory 15, and a data multiplexer 16 for transferring out of memory data to be displayed. The memory 15 is a single randomaccess core memory for storing 18-bit words used by the central processing unit for both data process-ing and data display. The m~mory 15 could also be two memories, one for data processing and one for data display through the data multiplexer 16 under control of the central processing unit. In either case, the central process-ing unit is programmed to control the display of a given symbol by callingout of memory of a unique coded sequence of descriptors that are economically packed into a serial data stream.
Techniques for the reduction of the number of decriptors, and the number of bits for each descriptor, not only alleviates the memory cycle de-mands of the system, but also frees more memory space for other programming.
However, it is to be understood that the present invention relates only to beam deflection control and not to beam intensity control of the CRT, i.e., the invention relates to only the X and Y deflection channels of the CRT, and not the intensity channel. The programmed descriptors for generating a given 8f~i67 symbol turn the beam on and off at appropriate times during successive parallel strokes, and terminate each stroke after the beam is turned off for the last time. In that manner, a symbol is drawn on the face of the CRT by a series of parallel spaced strokes under programmed control. All that is required is~for the central processing unit to call out the symbol to be displayed once the starting point and size is specified, together with any slope required. Any axis offset required is included in the description programmed for the symbol generation.
The data multiplexer is activated by the central processing unit for reading out of memory theproper~sequence of descriptors for the generation of the symbol called for. The data multiplexer then controls the reading out of the descriptors from successive memory locations with a minimum of interruption of the central processing unit until the full symbol has been displayed. -A point plotting control unit 17 receives from the central process-ing unit (CPU) the X and Y coordinates of a starting point for a symbol to be displayed. The control unit 17 enters the starting point data in respective static registers 18 and 19. Note that in displaying a line of symbols (letters, numerals, punctuation, etc.), such as a line of text from a page, only the starting point for the first symbol ls specified by the CPU through the con-trol unit 17. The starting point for each subsequent symbol is developed inthe appropriate one of the X and Y registers by simply adding a programmed symbol spacing. As each stroke of a symbol is completed, the contents of the appropriate one of the X and Y registers are automatically incremented by a stroke spacing amount programmed for the line of data to be displayed.
The symbol spacing and stroke spacing amounts are usually specified -by the stored program of the CPU for the entire line of data to be displayed, although the display of a line could be terminated or~therwise interrupted by -~
the program after the conclusion of any particular symbol to introduce a new symbol spacing and/or stroke spacing, by simply substituting new spacing :
' ' - ' : .
1~348~67 quantities in the control unit 17. The stroke spacing quantities are stored in static registers 18a and l9a within the control unit 17, and are added or subtracted, according to the programmed symbol orientation, to the appropriate one of the X and Y registers through adder-subtractors 20 and 21 at the end of each symbol stroke. The symbol spacing quantities are stored in static registers 18b and l9b within the control unit 17, and are added or subtracted according to the programmed display line orientation. For horizontal line dis-play, the vertical symbol and stroke spacing requirements are, of course, zero so that only the contents of the X-register are incremented by the symbol and stroke spacing quantities at the appropriate times under the respective con-trol of a symbol control unit 22 and a video control unit 23. Thus, when the last stroke has been completed and the offsets have been restored, the symbol spacing is added to the contents of the X-register to define the starting point ; of the next symbol. X and Y offset values from bit streams unpacked by the control unit 22 and stored in static registers 18c and l9c, respectively, with-in the control unit 17. The process is repeated until the end of the line is reached. The starting point for the next line is then entered into the X
and Y registers 18 and 19.
For simplicity it is assumed that only horizontal or vertical lines of symbols will be displayed. For horizontal lines only the X-register is incremented in the process of displaying one line of data~ as just noted. For vertical lines, only the Y-register is incremented in the process of display-ing a line of data. Display along a line at an angle less than -90 from the horizontal could also be provided. In that case, the data processing system would resolve the symbol and stroke spacing quantities into the appropriate X
and Y components~ and both of the X and Y registers 18 and 19 would be up-dated. To properly orient the symbol on this sloping line, the spaced parallel strokes of the symbol would be rotated through the appropriate angle by con-trol of the signs and quantities of programmed stroke generating control -8- f 1~86~i7 values which will now be described.
Main digital-to~analog converters 24 and 25 convert the digital coordinates stored in the respective X and Y registers to the analog de-flection control signs Xp and Yp. Each deflection circuit includes at its -input a summing amplifier to add symbol stroke signals X and Y generated by a stroke generator 26. The stroke signal Xs is normally zero for all symbols ~ -displayed upright on a horizontal line while the stroke signal YS increases from zero at a programmed rate until the end of the stroke is detected by ; the video control 23. That programmed rate provides direct control over the symbol height because, as will become apparent from the following discussion, a full stroke is timed for a predetermined maximum number of clock pulse per-iods. If that timing reamins cons~ant, a higher rate for the stroke signal ; YS will produce a longer stroke.
It has been the practice to control the symbol height by simply programming the c~dc~k pulse rate. That type of size control is retained in this system, but since that is independent of the programmed stroke rate, the result of using both types of size control is a greater degree of control -size for a single preprogrammed symbol. Assuming there are 26 different sizes - -that may be programmed by control of the clock pulse rate, and 29 different stroke rates that can be programmed, then there are 2 5 differFnt symbol :
sizes that can be displayed from a single bit stream of packed binary coded fields. Assuming that the analog integrators saturate at approximately 1/16 of full screen and that there are only 16,000 discernable points over the en-tire screen, then the 2 5 different sizes are restricted to an area of ap-proximately 1000 discernable points. From this it can be seen that exception-ally small changes can be made~ i.e.~ that exceptionally fine size control can be achieved.
Implementation of the stroke generator 26 is shown in Figure 2. It is comprised of two integrators 31 and 32 for the respective X and Y deflection _9_ 1~48~
: axes. The stroke signal rates are set by programmed loading of X and Y
holding registers 33 and 34. This is done directly by computer control, and not via the symbol generator control unit 22, which unpacks the bit stream of packed fields, because symbol size is generally specified for an entire line or page of data to be displayed. Once loaded, the holding registers continue to store ~he stroke rate data (9 bits plus a sign bit). When a stroke is started under control of the symbol generator control unit, the contents of the X and Y holding registers are loaded into X and Y digital-to-analog converters 35 and 36 to produce analog voltages proportional to the numbers loaded. The analog voltages in turn drive the integrators 31 and 32.
The greater the voltage driving an integrator, the greater the rate of change in the stroke signal, and the greater that rate of change, the greater the height of the symbol. To increase the width of a symbol in proportion to the programmed increase in height, the programmed spacing between strokes is increased proportiona~`e- As spacing between strokes is increased, the CRT
beam diameter is increased proportionally by defocusing the CRT. That is done by loading a focus control register 37 in Figure 1 with an 8-bit focus control value. The programmed stroke spacing and focus control must also take into account the programmed clock rate for the video control since that also controls size, as noted hereinbefore.
Symbols will most often be displayed upright on a horizontal line so as to require only vertical strokes. This requires the X digital-to-analog converter (DAC) 35 to be set to zero. When the symbol is italicized, but otherwise oriented in the usual way with respect to the horizontal line, both holding registers 33 and 34 contain positive numbers whose ratio is the tan-gent of the requires stroke angle. The number in the X holding register is usually quite small to produce a normal italicized symbol with an inclination of about 17 as shown for the lower case letter i in Figure 3. To rotate a symbol~ the signs andquantites- stored in the holding registers are mani--1~
, . .
1(148~i~7 pulated to provide not only the desired rates but also polarities of the signals X and Ys~ The X and Y DACs comprise X and Y DAC registers 38 and 39, respectively, the outputs of which are coupled to s = ing amplifiers 40a and 40b through R-2R voltage ladder networks to convert the binary numbers in the DAC registers to proportional voltages. The most significant bit (MSB) is the sign bit, and is a bit 1 for a positive number and a bit 0 for a negative num-ber. The sign bits determine the polarities of the inputs to the integrators, and the remaining bits control the amplitudes. Thus, by programming the signs of the numbers stored in the holding registers, and by programming magnitudes of the numbers~ the strokes produced can be rotated through any angle with respect to the vertical.
To enhance the italicized nature of a symbol, it is often the practice to offset the baseline of the symbol, i.e., to commence the symbol -slightly below the line of data in which it appears. It is also sometimes desirable to offset the symbol slightly in a direction parallel to the line of :
data. To provide this offset, or any other desired offset, such as to dis-play a subscript numerali or to commence a symbol below the line of data as in the case of many lower case letters, offset values are stored in respective ~-X and Y offset fields in the stored streams of binary digits which control the beam intensity. These X and Y offset fields are read out first and stored in respective X and Y offset registers 18c and 19c of the control unit 17.
These offset values could be specified and entered in these static registers, but since the amount of offset required is a function of si~e, it is preferred to precompute and store them in the memory 17 for all symbols of a set to be used.
As just noted, baseline offset is also used for any symbol having any part which extends below the line, such as the lower case letters~ and g.
; This is for the reason that all symbols are generated using parallel strokes starting at the bottom. For most symbols the lower boundary line of the ,~ . :
... , .. - : - . .: : .. : :
1()48667 space for a line of data is used as the baseline. Since the majority of the lower case letters do not extend to the upper boundary line, each stroke used to generate the symbol can be terminated once the beam has been turned off for the last time~ thereby conserving a significant amount of time in dis-playing a line of data. This has only the slight disadvantage of requiring a baseline offset for the symbols which extend below the baseline, but the time saved far outweighs the disadvantage since the offset can be easily con-tained in the packed bit streams stored in memory for the different symbols of the different fonts, and requires no additional hardware once the capability for axes offset is provided for italicized symbols.
Figure 3 illustrates an italicized lower case 1 to be generated by using upward strokes or vectors at an angle of 17 from the vertical. Forty-seven strokes are required starting on the left. The slope of 17 is pro-grammed by storing numbers x and y (whose ratio~i x:y is the tangent of the stroke angle) in the respective X and Y holding registers 33 and 34 in the stroke generator26!This is done by the data processing system under an italics mode command which remains in effect until terminated by another command that changes the contents of the X and Y hol~ing registers~ usually after a number of symbols have been generated.
; ZO At the time the symbol is to be generated the X and Y registers 18 ; and 19 are set for the point XPp, Yp shown in Figure 3~ but since the symbol is an italicized font~ the symbol is to extend below the baseline six units of stroke length, where each unit is metered by a clock pulse in a programmed clock pulse generator of the video control 23. To introduce that baseline offset, a Y axis offset of six units is subtracted from the contents of the Y register 19 via the adder/subtracter 21 by the symbol generator control unit 22. The inputs to the adder/subtracter are selected at input gates there-of under control of the symbol generator control unit 22~ as is the operation ; of subtraction or addition.
~ ; ' , - :~ ~ . - ~ . . .
1~48~6~
Slanting the symbol to the right and offsetting the baseline only would have the effect of shifting the symbol to the right, in this case a shift of two units along the X axis. To eliminate that virtual shift, the Y
axis (now sloping 17 from the vertical) is offset by introducing an X axis offset of two units. That is done by subtracting from the contents of the X
register 18 via the adder/subtracter 20 an X axis offset of 2 units under the control of the symbol gënerator control unit 22. If only baseline offset were involved, as for symbols of unitalicized fonts, the X axis offset would be zero. Otherwise, the axis offset preparation is the same for the symbol to be generated next under programmed control via the symbol generator con- -trol unit. Once the last stroke of the symbol has been completed any X or Y
offset is restored by the reverse of the operation used to introduce the off-set at the beginning before the first stroke was started.
Since the symbol illustrated in Figure 3 involves offsettting both axes as well as sloping the strokes, it serves to illustrate several important features of the present invention, including the size control through the programmed loading of the X and Y holding registers. In the case of non-italicized symbols, the X holding register 33 is set to zero and only the Y
holding register 34 is loaded to provide size control by control of stroke rate.
Programming video control of the CRT for generating a symbol is per se a feature of this invention. Nevertheless, a preferred programming tech-nique for that control will now be described for the italicized lettér of Figure 3 with reference to Figure 4 which shows that the bit coding for the 47 strokes required. Foll~wing the code field for the last stroke, there is a field of 12 bits which signify a command to terminate the symbol. Preced-ing the code field for the first stroke there are field bits which provide the axis offset data required by the symbol. The control ~od~s are packed in memory and read out for sequential processing from START to TERMINATE in 1"
- . . _ ~
1C~48667 18-bit words, i.e., read out of memory 18 bits at a time. The symbol gener-ator control unit unpacks the bit stream for the use which will now be des-cribed. Terminology will include the use of the word "element", which is defined as a segment of a vertical stroke during which the beam is on. For example, a stroke at the center of the lower case i has two elements, the first for the body and the second for the dot. There may be as many as 14 elements but usually not more than three, and in the case of the lower case i, not more than two.
Before progressing with a detailed description of how the code fields are used~ it should first be understood that .ii~ data compacting has been achieved by specifying the beginning and end of each element by simply specifying the change (increment or decrement) from the preceding stroke. This change is referred to hereinafter as a delta. Only the first, fifteenth, seventeeth, thirty-second and thirty-third strokes require the elements to be specified relative to the baseline. This is because for the first there is, of course, no preceding stroke, and for the fifteenth and thirty-third strokes the number of elements is changed, and for the seventeeth and thirty-second strokes the required deltas are larger than can be specified by the arbit-rarily selected filed of 4-bits plus sign for the deltas. The bit stream for the symbol of Figure 3, ~shown in Figure 4~ will now be unpacked~ starting with the very first bit and grouped into fields as follows.
- ~ ~ . , . ,, :
1614~667 FIELD CODE DESCRIPTION
.
1 1 This single bit~ the first~ --indicates that an axis offset follows. If not~ the next two fields are not present, and the control unit skips to field 4. If an itali- -cized mode had; not been commanded, this single -bit would indicate only a baseline (Y axis) offset --and the control uni~ would :
skip to field 3.
This invention relates to graphic symbol generators, and more parti-cularly to improvements in the generation of high-quality graphic symbols such as letters, numerals, punctuation marks and the like, commonly used for com-posing lines of information for display, or recording on film, under control of a programmed data processing system.
The current practice in generating graphic symbols with a cathode-ray tube (CRT) for display, or recording on film, is to position the electron beam at a startir.g point for the symbol and deflecting the beam through a se-quence of parallel strokes covering the area of the symbol while modulating the beam intensity, i.e., while turning the beam on and off. The data for the control of beam intensity is stored in the memory of the data processor as a bit stream of packed fields that are read out serially and unpacked as a sequence of strokes are generated in a predetermined pattern. A system dis-closed in United States Patent No. 3,305,841 is representative of this cur-rent practice.
To minimize the number of bits required to generate a symbol, i.e., to provide deflection and intensity control, various data compression tech-niques may be employed. For example, all strokes may be uniformly spaced sothat to progress from one stroke to the next~ theddeflection control system can be automatically incremented a predetermined or preprogrammed amount in a direction normal to the strokes (along the X axis assuming an upright sym-bol on a horizontal line). To actually generate the symbol, it is then sim-ply a matter of programming the intensity control in terms of turn-on and turn-off points for the beam in each stroke.
The control data can be further compressed by specifying the turn-on and turn-off points of only the first stroke relative to a fixed baseline, e.g., by specifying the points in terms of units of stroke length from a -1- ~
` -1~48667 baseline. The turn-on and turn-off points of each successive stroke are then specified in terms of changes or "deltas" in the respective turn-on and turn-off points, i.e., by specifying the points in each stroke relative to corresponding points in the pEeeeding stroke. In the case of a stroke having a discontinuity with the preceding stroke, such as for generating the dot over the letter i, the first stroke of the dot would be treated in the program the same as the first stroke of the symbol to specify the turn-on and turn-off -points with reference to the baseline. The points in subsequent strokes are then specified only as changes as before until the end of the symbol is reach-ed. The end is signified by a programmed code in the stream of codes used to specify the changes. An example of this data compression technique may be found in United States Patent No. 3,471,848.
A system utilizing a symbol generator for display, or film record-ing, of text may be organized in the following manner. The text is first key-boarded into a data processing system. The keyboarded data are continuously -st~red in a bulk memory, such as a magnetic disc or tape. A central process- ~-ing unit then accepts and buffers the data from the bulk memory for process-ing through to the face of a CRT for display. A camera system photographs the face of the CRT if a film record is desired. The film can later be used to produce plates for offset printing of copies. The CRT system is provided with a programmable control of typically 16,000 by 16,000 points, and can be driven to produc~ 5,000 or more symbols per second, each being accurately positioned and uniquely drawn to a specified font.
The central processing unit is a programmed digital computer provid-ed with a repertoire of symbol control codes that may be called out of a core memory storage. Typically, a standard set of symbols will be stored for each of the fonts required by the stored program. Because each symbol for each ; font requires a separate packed stream of control codes to be stored~ the need for compression of the control data can be readily appreciated. To provide .
-11~)48~67 greater flexibility in the composition of the text and the format used, with-out having a provide additional sets of symbols, it is desirable to be able to vary the size of any symbol called out.
A common technique for varying size consists of counting units of stroke length at a programmed clock rate while a stroke generator produces the strokes at a standard rate. Changing the clock rate then changes the height of the symbol. The width of the character is changed proportionally by changing the predetermined stroke spacing and varying the beam diameter by adjusting the CRT focus through an 8-bit register loaded by the stored program of the data processing system. In that manner the size of the symbol may be changed without distortion. ;
The degree to which size may be varied by changing the clock rate is a function of the degree of clock rate control available. For example, if the clock rate is halved the si7e is doubled. If halved again~ the size is further increased by a factor of two. To be able to control the size to a virtually infinite degree from some maximum to some minimum, without a rather elaborate and complex control for the clock rate, imposes a problem. The cap-ability of providing italicized symbols in all sizes without further:compli-cating the control system in general and the size control in particular, im-poses still another problem.
Yet another problem is providing a baseline for the symbols to beproduced. Since a certain space bounded between t~o parallel lines will define a line of text~ it would be appropriate to use one of the two lines as the baseline. Prior art system have elected the upper line since some symbols, notably some lower case let~ers, extend below the lower line. With the base-line at the top, every stroke can be referenced to the baseline without any difficulty, and simply continued down below the lower line as far as necessary to complete the symbol. A disadvantage of that solution is that most lower - case letters do not extend to the upper line so that in most cases, each , 1~48667 stroke must traverse the empty space above the symbol before the beam is tuned on. Once the beam is turned off for the last time in a given stroke, that stroke can be terminated, but for most strokes, the beam will have been deflected from the upper line, the baseline, to the lower line. It would be better to start the strokes at the lower line and thus be able to terminate a majority of the strokes once the beam has been turned off for the last time well before the beam has been deflected the full space between the lower and ~
upper lines. The time saved in each line of composition would be significant, ~ - -but the problem then is to accommodate symbols that extend below the lower line if that lower line is to be used as the baseline.
An object of this invention is to provide improved size control for the generation of symbols.
Another object is to provide a slant c~ntrol for italicized symbols.
Yet another object is to provide an easily programmed means for rotating a symbol.
Still another object is to provide a baseline reference at the bottom for every symbol of a line of composition with an accommodation for symbols which extend below the line of composition.
These and other objects of the invention are achieved in a symbol generator of the type described using two digitally controlled analog inte-grat~s,one for each of two orthogonal (X and Y) axes of a cathode-ray tube (CRT) display to generate strokes. The inputs to the integrators are from separate digital-to-analog converters connected to separate holding registers.
The rates and polarities of change in the outputs of the integrators are dir-ectly and separately controlled by digitally coded number loaded into the hold-ing registers by a stored program in a data processing system. The combined X and Y deflection rates cooperate to generate strokes for upright symbols (when one of the rate is zero), and to generate strokes for italicized symbols and rotated symbols, as required by the stored program. The ratio of one nu~er : ' ' ' ' . . . ' : `
- , : - .: -.
~ - \
1~415 ~i67 to the other is the tangent of the slant required for the strokes of the symbol. The magnitudes of the numbers may be changed for a symbol under programmed control when the symbol size is to be changed. Size of the symbols can be further controlled by programming the clock rate at which units of stroke length are counted out for the purpose of turning the beam on and off at the right times. Assuming 2N different clock rates can be programmed, the repertoire of symbols can be specified with any one of 2N sizes with clock -~
control alone. Now adding the programmable holding registers with a capacity for binary numbers of 2M digits, excluding sign, provides 2N M different symbol sizes that can be specified for each symbol. Symbol and stroke spacing are controlled by updating main digital-to-analog converters at the beginning and end of a symbol, and at the beginning of each stroke. These main digital-to-analog converters provide static beam deflection voltages during a stroke. These voltages are added to the outputs of the integrators.
Each stroke is commenced at a baseline at the bottom of a line of symbols.
For symbols which extend below the baseline, a baseline offset is programmed ~-and entered in the main digital-to-analog converters. Offset along the axis orthogonal to the baseline may also be programmed along with baseline offset, for italicized symbols.
According to one broad aspect of the invention, there is provided in a graphic symbol generator for use with a data processing system employing a cathode-ray tube display and using two digitally controlled analog inte-grators, one for each of two orthogonal X and Y axes of said cathode-ray tube display to generate spaced parallel strokes, where inputs to said integrators are from separate digital-to-analog converters connected to separate registers, an improvement comprising means for programming the rates and polarities of change in the outputs of the integrators in the form of ; digitally coded numbers loaded into said registers by a stored program in ; said data processing system to provide programmed X and Y beam deflection rates which coope~ate to generate strokes at an angle between 0 and 9O
with respect to said axes as required in response to the ratio of one of said numbers to the other.
~ -5-. ~ ~
'~ ' ' 1~48~tj7 According to another broad aspect of the invention, there is provided in apparatus for displaying graphic symbols on an imaginary line using a cathode-ray tube and employing a beam control system, means operative on said beam control system for starting at specified points each of a plur-ality of parallel strokes required for each symbol on said line, means operative on said starting means for programming an offset of said points below said imaginary line along which spaced symbols are displayed in sequence in order to specify starting points for strokes of symbols which extend below said imaginary line and means operative on said starting means for programming an offset of said points in a direction parallel to said imaginary line from an offset position otherwise specified for italicized symbols that extend below said line as said line of spaced symbols is dis-played.
According to yet another broad aspect of the invention, there is provided in a programmed digital data processing system having means for generating spaced graphic symbols on a line across the face of a cathode-ray tube, said means employing X and Y deflection systems for producing spaced parallel strokes of an electron beam, said strokes beginning on a line common to all symbols as a baseline, the first of said strokes starting at a 20 designated point specified on a coordinate system having orthogonal X and Y
axes, where said X and Y deflection systems cooperate to place said beam on any point on the face of said cathode-ray tube in response to Xp and Yp signals, said graphic symbol generating means having means for turning said . .
beam on and off as required by counting units of stroke length from said baseline to determine the on and off points of stroke elements which make up the symbol, the improvement of means for starting each stroke from said base-- line at the bottom of each symbol, means for terminating each stroke at the turn-off point of the last one or more elements, means for generating said strokes, means for adding programmed values to at least one of said X and Y
coordinates of said $tarting points at the end of each stroke; and means for programming said values to be added to said X and Y coordinates, whereby width of said symbol is controlled.
. ~ . .
~ ; ~ -5a-. .
1~8f~i~;7 According to a further broad aspect of the invention, there is provided apparatus employing a cathode_ray tube for displaying lines of graphic symbols by displaying parallel line segments using the electron beam of the cathode-ray tube having deflection circuits connected to a data pro-cessing system which stores in digital form control data for generation of symbols to be displayed on a baseline, including data which defines the starting point of said baseline for said line of graphic symbols in a fixed Cartesian coordinate system, comprising analog deflection control means re-sponsive to digital signals for producing analog deflection control signals Xp and Yp for said beam in said Cartesian coordinate system, X and Y registers for storing digital values for said analog deflection control means, said ~
digital values being provided as a line starting point by said data process- ~.-ing system for each line of symbols, a pair of digital means for adding and subtracting deflection control values to the contents of said respective X
and Y registers, means responsive to data from said data processing system for generating stroke signals X and Y applied to said respective X and Y
deflection control means for each successive stroke, means responsive to data from said data processing system for generating a video control signal to blank and unblank said cathode-ray beam during each stroke to produce said -:
parallel line segments, a plurality of spacing registers associated in pairs, one of each pair for a different axis of said Cartesian coordinate system for storing line segment spacing data, a first pair for storing stroke spacing data, a second pair for storing symbol spacing data and a third set for stor-ing baseline offset data for each stroke of each symbol, said offset data providing not only stroke offset in a direction normal to said baseline for symbols that extend below said baseline, but also stroke offset in a direction parallel to said baseline for symbols that are slanted with respect to said baseline, all of said paired registers being connected to said pair of digital means for adding and subtracting deflection control values, means responsive to cant~Ql a said data processing system for updating the contents of said X and Y registers and said paired spacing registers, and means responsive to control of said data processing system for adding the contents of respective 5b-1(~4t~67 ~ -ones of a pair of spacing data registers to said X and Y registers during the course of displaying a line of symbols by generating on the face of said cathode-ray tube a sequence of symbols with respect to an imaginary line coincident with said baseline and anywhere on said face with any orientation in respect to said fixed Cartesian coordinate system.
The invention in conjunction with the invention of Application Serial No. 213441 will now be described in greater detail with reference to :~ .
the accompanying drawings in which:
Figure 1 is a block diagram of a system embodying the present in-vention;
Figure 2 is a block diagram of a stroke generator provided in the system of Figure 1 in accordance with the present invention;
Figure 3 shows an italicized symbol having an X and Y offset for illustration of important features of the present invention;
Figure 4 shows the intensity control coding required for the : ' " :
- , , :
; . . , ~ , 1~4B~67 generation of the symbol of Figure 3 and the preliminary axis offset desired for the symbol; and Figure 5 is a block diagram of a video control unit which responds to the intensity control coding of Figure 4 to display the symbol of Figure 3 on the face of a CRT in the system of Figure 1.
The block diagram of Figure 1 indicates generally the flow of in- -formation from a data processing system 10 to a cathode-ray tube (CRT) 11 for display of a selected symbol using a selected starting point at X and Y coor-dinates set by applying analog signals X and Yp to conventional X and Y de-flection circuits 12 and 13.
The data processing system has heretofore been commercially avail-able from Information International, Inc., in a system model FR-80, a computer output microfilm recorder. It comprises a central processing unit 14, a memory 15, and a data multiplexer 16 for transferring out of memory data to be displayed. The memory 15 is a single randomaccess core memory for storing 18-bit words used by the central processing unit for both data process-ing and data display. The m~mory 15 could also be two memories, one for data processing and one for data display through the data multiplexer 16 under control of the central processing unit. In either case, the central process-ing unit is programmed to control the display of a given symbol by callingout of memory of a unique coded sequence of descriptors that are economically packed into a serial data stream.
Techniques for the reduction of the number of decriptors, and the number of bits for each descriptor, not only alleviates the memory cycle de-mands of the system, but also frees more memory space for other programming.
However, it is to be understood that the present invention relates only to beam deflection control and not to beam intensity control of the CRT, i.e., the invention relates to only the X and Y deflection channels of the CRT, and not the intensity channel. The programmed descriptors for generating a given 8f~i67 symbol turn the beam on and off at appropriate times during successive parallel strokes, and terminate each stroke after the beam is turned off for the last time. In that manner, a symbol is drawn on the face of the CRT by a series of parallel spaced strokes under programmed control. All that is required is~for the central processing unit to call out the symbol to be displayed once the starting point and size is specified, together with any slope required. Any axis offset required is included in the description programmed for the symbol generation.
The data multiplexer is activated by the central processing unit for reading out of memory theproper~sequence of descriptors for the generation of the symbol called for. The data multiplexer then controls the reading out of the descriptors from successive memory locations with a minimum of interruption of the central processing unit until the full symbol has been displayed. -A point plotting control unit 17 receives from the central process-ing unit (CPU) the X and Y coordinates of a starting point for a symbol to be displayed. The control unit 17 enters the starting point data in respective static registers 18 and 19. Note that in displaying a line of symbols (letters, numerals, punctuation, etc.), such as a line of text from a page, only the starting point for the first symbol ls specified by the CPU through the con-trol unit 17. The starting point for each subsequent symbol is developed inthe appropriate one of the X and Y registers by simply adding a programmed symbol spacing. As each stroke of a symbol is completed, the contents of the appropriate one of the X and Y registers are automatically incremented by a stroke spacing amount programmed for the line of data to be displayed.
The symbol spacing and stroke spacing amounts are usually specified -by the stored program of the CPU for the entire line of data to be displayed, although the display of a line could be terminated or~therwise interrupted by -~
the program after the conclusion of any particular symbol to introduce a new symbol spacing and/or stroke spacing, by simply substituting new spacing :
' ' - ' : .
1~348~67 quantities in the control unit 17. The stroke spacing quantities are stored in static registers 18a and l9a within the control unit 17, and are added or subtracted, according to the programmed symbol orientation, to the appropriate one of the X and Y registers through adder-subtractors 20 and 21 at the end of each symbol stroke. The symbol spacing quantities are stored in static registers 18b and l9b within the control unit 17, and are added or subtracted according to the programmed display line orientation. For horizontal line dis-play, the vertical symbol and stroke spacing requirements are, of course, zero so that only the contents of the X-register are incremented by the symbol and stroke spacing quantities at the appropriate times under the respective con-trol of a symbol control unit 22 and a video control unit 23. Thus, when the last stroke has been completed and the offsets have been restored, the symbol spacing is added to the contents of the X-register to define the starting point ; of the next symbol. X and Y offset values from bit streams unpacked by the control unit 22 and stored in static registers 18c and l9c, respectively, with-in the control unit 17. The process is repeated until the end of the line is reached. The starting point for the next line is then entered into the X
and Y registers 18 and 19.
For simplicity it is assumed that only horizontal or vertical lines of symbols will be displayed. For horizontal lines only the X-register is incremented in the process of displaying one line of data~ as just noted. For vertical lines, only the Y-register is incremented in the process of display-ing a line of data. Display along a line at an angle less than -90 from the horizontal could also be provided. In that case, the data processing system would resolve the symbol and stroke spacing quantities into the appropriate X
and Y components~ and both of the X and Y registers 18 and 19 would be up-dated. To properly orient the symbol on this sloping line, the spaced parallel strokes of the symbol would be rotated through the appropriate angle by con-trol of the signs and quantities of programmed stroke generating control -8- f 1~86~i7 values which will now be described.
Main digital-to~analog converters 24 and 25 convert the digital coordinates stored in the respective X and Y registers to the analog de-flection control signs Xp and Yp. Each deflection circuit includes at its -input a summing amplifier to add symbol stroke signals X and Y generated by a stroke generator 26. The stroke signal Xs is normally zero for all symbols ~ -displayed upright on a horizontal line while the stroke signal YS increases from zero at a programmed rate until the end of the stroke is detected by ; the video control 23. That programmed rate provides direct control over the symbol height because, as will become apparent from the following discussion, a full stroke is timed for a predetermined maximum number of clock pulse per-iods. If that timing reamins cons~ant, a higher rate for the stroke signal ; YS will produce a longer stroke.
It has been the practice to control the symbol height by simply programming the c~dc~k pulse rate. That type of size control is retained in this system, but since that is independent of the programmed stroke rate, the result of using both types of size control is a greater degree of control -size for a single preprogrammed symbol. Assuming there are 26 different sizes - -that may be programmed by control of the clock pulse rate, and 29 different stroke rates that can be programmed, then there are 2 5 differFnt symbol :
sizes that can be displayed from a single bit stream of packed binary coded fields. Assuming that the analog integrators saturate at approximately 1/16 of full screen and that there are only 16,000 discernable points over the en-tire screen, then the 2 5 different sizes are restricted to an area of ap-proximately 1000 discernable points. From this it can be seen that exception-ally small changes can be made~ i.e.~ that exceptionally fine size control can be achieved.
Implementation of the stroke generator 26 is shown in Figure 2. It is comprised of two integrators 31 and 32 for the respective X and Y deflection _9_ 1~48~
: axes. The stroke signal rates are set by programmed loading of X and Y
holding registers 33 and 34. This is done directly by computer control, and not via the symbol generator control unit 22, which unpacks the bit stream of packed fields, because symbol size is generally specified for an entire line or page of data to be displayed. Once loaded, the holding registers continue to store ~he stroke rate data (9 bits plus a sign bit). When a stroke is started under control of the symbol generator control unit, the contents of the X and Y holding registers are loaded into X and Y digital-to-analog converters 35 and 36 to produce analog voltages proportional to the numbers loaded. The analog voltages in turn drive the integrators 31 and 32.
The greater the voltage driving an integrator, the greater the rate of change in the stroke signal, and the greater that rate of change, the greater the height of the symbol. To increase the width of a symbol in proportion to the programmed increase in height, the programmed spacing between strokes is increased proportiona~`e- As spacing between strokes is increased, the CRT
beam diameter is increased proportionally by defocusing the CRT. That is done by loading a focus control register 37 in Figure 1 with an 8-bit focus control value. The programmed stroke spacing and focus control must also take into account the programmed clock rate for the video control since that also controls size, as noted hereinbefore.
Symbols will most often be displayed upright on a horizontal line so as to require only vertical strokes. This requires the X digital-to-analog converter (DAC) 35 to be set to zero. When the symbol is italicized, but otherwise oriented in the usual way with respect to the horizontal line, both holding registers 33 and 34 contain positive numbers whose ratio is the tan-gent of the requires stroke angle. The number in the X holding register is usually quite small to produce a normal italicized symbol with an inclination of about 17 as shown for the lower case letter i in Figure 3. To rotate a symbol~ the signs andquantites- stored in the holding registers are mani--1~
, . .
1(148~i~7 pulated to provide not only the desired rates but also polarities of the signals X and Ys~ The X and Y DACs comprise X and Y DAC registers 38 and 39, respectively, the outputs of which are coupled to s = ing amplifiers 40a and 40b through R-2R voltage ladder networks to convert the binary numbers in the DAC registers to proportional voltages. The most significant bit (MSB) is the sign bit, and is a bit 1 for a positive number and a bit 0 for a negative num-ber. The sign bits determine the polarities of the inputs to the integrators, and the remaining bits control the amplitudes. Thus, by programming the signs of the numbers stored in the holding registers, and by programming magnitudes of the numbers~ the strokes produced can be rotated through any angle with respect to the vertical.
To enhance the italicized nature of a symbol, it is often the practice to offset the baseline of the symbol, i.e., to commence the symbol -slightly below the line of data in which it appears. It is also sometimes desirable to offset the symbol slightly in a direction parallel to the line of :
data. To provide this offset, or any other desired offset, such as to dis-play a subscript numerali or to commence a symbol below the line of data as in the case of many lower case letters, offset values are stored in respective ~-X and Y offset fields in the stored streams of binary digits which control the beam intensity. These X and Y offset fields are read out first and stored in respective X and Y offset registers 18c and 19c of the control unit 17.
These offset values could be specified and entered in these static registers, but since the amount of offset required is a function of si~e, it is preferred to precompute and store them in the memory 17 for all symbols of a set to be used.
As just noted, baseline offset is also used for any symbol having any part which extends below the line, such as the lower case letters~ and g.
; This is for the reason that all symbols are generated using parallel strokes starting at the bottom. For most symbols the lower boundary line of the ,~ . :
... , .. - : - . .: : .. : :
1()48667 space for a line of data is used as the baseline. Since the majority of the lower case letters do not extend to the upper boundary line, each stroke used to generate the symbol can be terminated once the beam has been turned off for the last time~ thereby conserving a significant amount of time in dis-playing a line of data. This has only the slight disadvantage of requiring a baseline offset for the symbols which extend below the baseline, but the time saved far outweighs the disadvantage since the offset can be easily con-tained in the packed bit streams stored in memory for the different symbols of the different fonts, and requires no additional hardware once the capability for axes offset is provided for italicized symbols.
Figure 3 illustrates an italicized lower case 1 to be generated by using upward strokes or vectors at an angle of 17 from the vertical. Forty-seven strokes are required starting on the left. The slope of 17 is pro-grammed by storing numbers x and y (whose ratio~i x:y is the tangent of the stroke angle) in the respective X and Y holding registers 33 and 34 in the stroke generator26!This is done by the data processing system under an italics mode command which remains in effect until terminated by another command that changes the contents of the X and Y hol~ing registers~ usually after a number of symbols have been generated.
; ZO At the time the symbol is to be generated the X and Y registers 18 ; and 19 are set for the point XPp, Yp shown in Figure 3~ but since the symbol is an italicized font~ the symbol is to extend below the baseline six units of stroke length, where each unit is metered by a clock pulse in a programmed clock pulse generator of the video control 23. To introduce that baseline offset, a Y axis offset of six units is subtracted from the contents of the Y register 19 via the adder/subtracter 21 by the symbol generator control unit 22. The inputs to the adder/subtracter are selected at input gates there-of under control of the symbol generator control unit 22~ as is the operation ; of subtraction or addition.
~ ; ' , - :~ ~ . - ~ . . .
1~48~6~
Slanting the symbol to the right and offsetting the baseline only would have the effect of shifting the symbol to the right, in this case a shift of two units along the X axis. To eliminate that virtual shift, the Y
axis (now sloping 17 from the vertical) is offset by introducing an X axis offset of two units. That is done by subtracting from the contents of the X
register 18 via the adder/subtracter 20 an X axis offset of 2 units under the control of the symbol gënerator control unit 22. If only baseline offset were involved, as for symbols of unitalicized fonts, the X axis offset would be zero. Otherwise, the axis offset preparation is the same for the symbol to be generated next under programmed control via the symbol generator con- -trol unit. Once the last stroke of the symbol has been completed any X or Y
offset is restored by the reverse of the operation used to introduce the off-set at the beginning before the first stroke was started.
Since the symbol illustrated in Figure 3 involves offsettting both axes as well as sloping the strokes, it serves to illustrate several important features of the present invention, including the size control through the programmed loading of the X and Y holding registers. In the case of non-italicized symbols, the X holding register 33 is set to zero and only the Y
holding register 34 is loaded to provide size control by control of stroke rate.
Programming video control of the CRT for generating a symbol is per se a feature of this invention. Nevertheless, a preferred programming tech-nique for that control will now be described for the italicized lettér of Figure 3 with reference to Figure 4 which shows that the bit coding for the 47 strokes required. Foll~wing the code field for the last stroke, there is a field of 12 bits which signify a command to terminate the symbol. Preced-ing the code field for the first stroke there are field bits which provide the axis offset data required by the symbol. The control ~od~s are packed in memory and read out for sequential processing from START to TERMINATE in 1"
- . . _ ~
1C~48667 18-bit words, i.e., read out of memory 18 bits at a time. The symbol gener-ator control unit unpacks the bit stream for the use which will now be des-cribed. Terminology will include the use of the word "element", which is defined as a segment of a vertical stroke during which the beam is on. For example, a stroke at the center of the lower case i has two elements, the first for the body and the second for the dot. There may be as many as 14 elements but usually not more than three, and in the case of the lower case i, not more than two.
Before progressing with a detailed description of how the code fields are used~ it should first be understood that .ii~ data compacting has been achieved by specifying the beginning and end of each element by simply specifying the change (increment or decrement) from the preceding stroke. This change is referred to hereinafter as a delta. Only the first, fifteenth, seventeeth, thirty-second and thirty-third strokes require the elements to be specified relative to the baseline. This is because for the first there is, of course, no preceding stroke, and for the fifteenth and thirty-third strokes the number of elements is changed, and for the seventeeth and thirty-second strokes the required deltas are larger than can be specified by the arbit-rarily selected filed of 4-bits plus sign for the deltas. The bit stream for the symbol of Figure 3, ~shown in Figure 4~ will now be unpacked~ starting with the very first bit and grouped into fields as follows.
- ~ ~ . , . ,, :
1614~667 FIELD CODE DESCRIPTION
.
1 1 This single bit~ the first~ --indicates that an axis offset follows. If not~ the next two fields are not present, and the control unit skips to field 4. If an itali- -cized mode had; not been commanded, this single -bit would indicate only a baseline (Y axis) offset --and the control uni~ would :
skip to field 3.
2 1 OOO OOO O10 A minus two offset is applied ; to the X axis.
3 1 OOO OOO 110 A minus six offset is applied to the Y axis
4 1 111 This 4-bit code signifies that j~ a negative "side bearing" (back-ward spacing~ ~i value is to follow ; in the nèxt filed. If all zeros, - the 4-bit code signifies a positive side bearing value is to follow.
OO OO10 This 6-bit number read is loaded into a down counter within the symbol generator control unit 22.
It specifies the number of times the stroke spacing value speci-fied in advance is to be sub-tracted (or added in the case of ; a positive side bearing) to X
register 18~ each time counting down by one the number loaded into the down counter, before the actual process of generating the symbol is sta~ted. Here that number is :-~; 2 to shift the italicized letter ~ back two stroke spaces. That 2 is done while the task of un-packing the next eight fields are / unpacked for the first stroke.
; 6 O Control bit follwing a side bearing number signifying unpacking is to continue.
-~ 7 O OOl Number of elements in strokes.
8 1 1 111 This is a negative 1 delta code for the on location of the following stroke (stroke 2).
The code consists of a bit 1 ` fo lowad by a 3-bit number plus sign.
9 OO 101 110 ON location relative to baseline as offset for this stroke (stroke 1).
, ..................................................................... .
. : . . , : , ~
~0~8bi67 FIELD CODE DESCRIPTION
1 O 100 This is a positive 4 delta for the off location of the following stroke (stroke 2).
11 00 110 101 OFF location relative to baseline as offset for this stroke ~stroke 1).
This completes the bit stream unpacking for the first stroke and initiates the drawing of the first stroke. The stroke is drawn according to the values of the ON and OFF locations; that is, the beam is turned on at location 56 and the beam is turned off at location 65. Modification of the location values by the delta values is done during the stroke in preparation for the next stroke. After the stroke is finished, the CRT beam is moved to the right by the appropriate amount and the unpacking of the serial data stream continues.
.
FIELD CODE DESCRIPTION
12 1 O OOO ON delta (+O) 13 1 O Oll OFF delta (~3) ; _ _ This completes the serial data stream unpacking prior to starting the second stroke. The second stroke will be turned on at location 55 and turned off at location 71. It should be noted that the ON and OFF deltas --~-l,f4) that were unpacked prior to the first stroke were not used on the first stroke. They are used to compute the ON and OFF locations of the sec- --ond stroke while the first stroke is in progress. The deltas for the third stroke are unpacked prior to the starting of the second stroke. The deltas ~ -` for each stroke element defined by deltas are unpacked one stroke in ad-vance so that the locations can be computed during the stroke following their unpacking. This eliminates the time that would be wasted in computing the locations if not unpacked until just before the next stroke in which used.
-- . . .
:
FIELD CODE DESCRIPTION
14 O This signifies no change in ON
delta field. The 3-bit number plus sign may thus be omitted.
1 O O10 OFF delta (+2).
This completes the unpacking for stroke 4. Stroke 3 is now drawn utilizing the deltas unpacked prior to the second stroke (0,3) so that the ON
and OFF locations are 55 and 74, respectively. Similarly, the fourth stroke utilizing the deltas of O and 2 is drawn with ON and OFF locations of 55 and 76. Strokes continue to be drawn with the serial data unpacking pertaining only to modifications of the ON and OFF deltas. Discussion of the unpacking scheme continues after stroke 12 has been terminated.
34 1 1 111 ON delta (-1).
, 35 O No change in the OFF delta.
' 10 Stroke 13 is now drawn utilizing On and OFF locations of stroke 12 since the deltas unpacked then were both zero.
.. . .
FIELD CODE DESCRIPTION
36 1 1000 This is an ESCAPE (negative zero delta) code which signifies the ~; end of a sequence of stroke ele-ments defined by deltas.
37 O This is a bit following an escape code that signifies unpacking of data is to continue, -~
and that new element data will ; be unpacked. (If this were a bit 1, it would signify the end of the symbol).
Stroke 14 is now drawn util...ing deltas unpacked prior to stroke 13.
. .
.: ., : :
.. ~, . : . , - , ~(~48~;67 38 0 010 Number of elements in strokes after stroke 14.
39 1 1 110 This is a negative two delta code for the ON location of the first element in stroke 16.
111 loO ON location (74) of first element of the following stroke 15 relative to the baseline as offset.
41 o This signifies a delta value of zero for the OFF location of the first element in stroke 16.
42 ol ooo oll OFF location (103) of first element of following stroke 15 relativa to the baseline as offset.
43 1 1101 This is a negative three delta code for the ON location of the second element of stroke 16, 44 01 010 001 ON location (121) of the second element of the following stroke 15.
1 0 010 This is a positive two delta code for the OFF location of the second element of stroke 16.
46 ol olo 111 OFF location (127) of second ~ -element of the following stroke 15 relative to the baseline as offset. -Stroke 15 is now drawn and consists of two elements which extend from locations 74 to 103 and from 121 to 127. The presence of the escape prior to stroke 14 was necessary to change from the single element structure of strokes 1 through 14 to the double element structure of stroke 15.
FIELD CODE DESCRIPTION
-- _ 47 1 loOO Escape code. ~-- - -Stroke 16 is now drawn utilizing deltas of -2 and O to determine the ON and OFF locations of the first element as being 72 and-1103 respectively.
Deltas of -3 and +2 determines the locations of the second element to be 116 and 131. The presence of the escape code prior to stroke 16 is necessitated by the fact that the ON delta of the first element of stroke 17 would have to ,' - , ' - . ~ .
1048~;67 change by an amount beyond the seven bit range of the delta field. In this situation, it is necessary to load new locations for all elements. The un-packing of the ser~al data stream continues with no peculiarties until stroke 46 is finished.
141 1 1000 Escape code.
Stroke 47 is now drawn with the locations of stroke 46 and the deltas determined prior to stroke 46.
. .
FIELD CODE DESCRIPTION
_ . :
, 142 0 This bit following the escape code signifies that unpacking ii of data is to continue. If it were a bit 1, the symbol generation would be terminated, as it normally would but for a negative side bearing number which follows.
143 1111 This signifies a 6-bit negative (backward) side bearing number -follows.
144 00 O 001 This is a side bearing number which calls for one stroke space backwards.
145 1 This bit following a side bearing number signifies termination of the symbol generation.
, The axis offsets specified by the registers 18c and l9c are next restored. And finally the symbol space specified by the registers 18b and l9b is provided.
Due to the negative side bearings at the beginning and the end of the symbol, the symbol actually intrudes into the stroke area of the preceed-ing one and allows the following one to intrude in the stroke use of this one.
Thus, although it takes 47 strokes to draw the symbol, the symbol has an effective width of only 44 strokes. This particular symbol requires 558 bits of data for its complete presentation including axis offsets and side bear-ings. This is an average of 41/3 data bits for each ON and OFF location.
If each location were addressed individually, at least 1¢~48667 eight bits per location would be required even with no provision for axis offset and side bearing. This data formatting thus reduces the number of necessary data bits by almost a factor of two. However, other data formats may be used to control the generation of a symbol.
The unpacked data is employed by the video control 23 to turn the CRT beam on and off. Figure 5 illustrates-ithe organization of that video control. The unpacked data for a given stroke is placed in appropriate stor-age devices when a DRAW STROKE command is issued by the symbol generator con-trol unit 22 (Figure 1). The number of elements in the stroke is stored in a register 41, and the ON and OFF deltas are stored in memories 42 and 43.
In the case of the first stroke, and any stroke thereafter where the ON and -~
OFF points are specified relative to the baseline or offset baseline, the ON ;
and OFF locations are stored in memories 44 and 45~ Thereafter, new`ON
and OFF locations are computed and stored for successive strokes by adding ON and OFF deltas via adders 46 and 47. ~-The DRAW STROKE command presets a main counter 48 to a number ; slightly less than will produce a carry out upon co~mting up. That also en-ables the counter to start counting clock pulses from a progra~mable master clock 49. At the same time the control unit 22 transmits a START signal to the stroke generator 26 shown in Figure 2. As the stroke is thus started, ~ -the main counter 48 is started with the master clock operating at a pre- -~
determined high rate and counts up until the carry out condition is detected, i.e., until the counter is advanced to all zeros. At that point a detector 50 switches the master clock to a lower rate specified by a program control input. By starting the main counter at the same number near carry out for every stroke and using the same high clock rate to count up to the carry out condition, a delay of consistent duration is provided at the beginning of each stroke before the beam can possibly be turned on and off via comparators 51 and 52. This delay allows the CRT deflection circuits to settle before actual . ` : - ` , ' ' : , : ' .
1~48~67 generation of the symbol strike begins and insures that all symbols, regard-less of size control through the master clock, will start at the same base-line.
- The numbers stored in the X and Y DACs of the stroke generator will affect the position of the baseline in that the stroke rate will vary as a function of those numbers which are programmed to effect control 6f symbol size in cooperation with the programming of the master clock. To take that into account during the period before "carry out", the data processing sys-tem provides an adjusted beam position through thel!main DACs 24 andl25 in a manner which takes into account the rotation or replacement of the symbol, if any. The starting point of illumination of each character can then be digitally controlled with programmable predictability and consistency.
At the beginning of a stroke, ON and OFF memory address counters 53 and 54 are cleared by a CLEAR signal from the control unit 22. That causes the contents of the ON and OFF location memories 44 and 45 to appear at inputs of respective buffer registers 55 and 56. These registers are then loaded with the ON and OFF points of the first element of the stroke.
Immediately thereafter, respective ON and OFF deltas are added to the outputs of these buffer registers. The sums are loaded into the ON and OFF location memories at the same address, thus updating the on and off points for the first element of the next stroke.
As the main counter passes through zero, the contents of the main counter are compared with the contents of the ON and OFF buffer registers.
This comparison continues until the ON and OFF points for the first element are reached, at which time the comparators 51 and 52 and turn on (set) and turn off (reset) a video control flip-flop 57 and adYance the ON and OFF
memory counters 53 and 54 to address the on and off points of the second element, if any, in the memories 44 and 45. Those points are then updated with deltas from memories 42 and 43, and the process continues as for the , : .... . . : :
1~4~ti7 first element. Delay lines 58 and 59 provide the proper timing of the actionsrequired upon comparisons being made, which are to update to the next location values the registers 55 and 56, store the sums out of the adders 46 and 47, and then advance the address counters 53 and 54. When the last element has been turned on, and the address counter 53 has been incremented, a digital ;
comparator 60 detects a coincidence between the ouput of the address counter and the number of elements stored in the register 41. It should be recalled ~;-that the memory address counter starts from zero for the first element. Con-sequently, if there are three elements, for example, the memory address count-er is advanced to the count of two to address the turn on point for the third element in memory 44. Thereafter, upon being incremented to address what would otherwise be the fourth element turn on point, the output of the address counter is three which matches the output of the element register 41. The output of the comparator 60 enables an AND gate 61 to transmit the output signal of the delay line 59 to signify the end of the stroke when the turn off point of the last element is reached. The END OF STROKE signal thus generated is transmitted to ~he control unit 22 which ends the stroke by re-setting the integra~ors 31 and 32 (Figure 2) with a CLEAR signal and updates the X and Y registers 18 and 19 via adders 20 and 21 (Figure~
. .
: . -' - ' ~
OO OO10 This 6-bit number read is loaded into a down counter within the symbol generator control unit 22.
It specifies the number of times the stroke spacing value speci-fied in advance is to be sub-tracted (or added in the case of ; a positive side bearing) to X
register 18~ each time counting down by one the number loaded into the down counter, before the actual process of generating the symbol is sta~ted. Here that number is :-~; 2 to shift the italicized letter ~ back two stroke spaces. That 2 is done while the task of un-packing the next eight fields are / unpacked for the first stroke.
; 6 O Control bit follwing a side bearing number signifying unpacking is to continue.
-~ 7 O OOl Number of elements in strokes.
8 1 1 111 This is a negative 1 delta code for the on location of the following stroke (stroke 2).
The code consists of a bit 1 ` fo lowad by a 3-bit number plus sign.
9 OO 101 110 ON location relative to baseline as offset for this stroke (stroke 1).
, ..................................................................... .
. : . . , : , ~
~0~8bi67 FIELD CODE DESCRIPTION
1 O 100 This is a positive 4 delta for the off location of the following stroke (stroke 2).
11 00 110 101 OFF location relative to baseline as offset for this stroke ~stroke 1).
This completes the bit stream unpacking for the first stroke and initiates the drawing of the first stroke. The stroke is drawn according to the values of the ON and OFF locations; that is, the beam is turned on at location 56 and the beam is turned off at location 65. Modification of the location values by the delta values is done during the stroke in preparation for the next stroke. After the stroke is finished, the CRT beam is moved to the right by the appropriate amount and the unpacking of the serial data stream continues.
.
FIELD CODE DESCRIPTION
12 1 O OOO ON delta (+O) 13 1 O Oll OFF delta (~3) ; _ _ This completes the serial data stream unpacking prior to starting the second stroke. The second stroke will be turned on at location 55 and turned off at location 71. It should be noted that the ON and OFF deltas --~-l,f4) that were unpacked prior to the first stroke were not used on the first stroke. They are used to compute the ON and OFF locations of the sec- --ond stroke while the first stroke is in progress. The deltas for the third stroke are unpacked prior to the starting of the second stroke. The deltas ~ -` for each stroke element defined by deltas are unpacked one stroke in ad-vance so that the locations can be computed during the stroke following their unpacking. This eliminates the time that would be wasted in computing the locations if not unpacked until just before the next stroke in which used.
-- . . .
:
FIELD CODE DESCRIPTION
14 O This signifies no change in ON
delta field. The 3-bit number plus sign may thus be omitted.
1 O O10 OFF delta (+2).
This completes the unpacking for stroke 4. Stroke 3 is now drawn utilizing the deltas unpacked prior to the second stroke (0,3) so that the ON
and OFF locations are 55 and 74, respectively. Similarly, the fourth stroke utilizing the deltas of O and 2 is drawn with ON and OFF locations of 55 and 76. Strokes continue to be drawn with the serial data unpacking pertaining only to modifications of the ON and OFF deltas. Discussion of the unpacking scheme continues after stroke 12 has been terminated.
34 1 1 111 ON delta (-1).
, 35 O No change in the OFF delta.
' 10 Stroke 13 is now drawn utilizing On and OFF locations of stroke 12 since the deltas unpacked then were both zero.
.. . .
FIELD CODE DESCRIPTION
36 1 1000 This is an ESCAPE (negative zero delta) code which signifies the ~; end of a sequence of stroke ele-ments defined by deltas.
37 O This is a bit following an escape code that signifies unpacking of data is to continue, -~
and that new element data will ; be unpacked. (If this were a bit 1, it would signify the end of the symbol).
Stroke 14 is now drawn util...ing deltas unpacked prior to stroke 13.
. .
.: ., : :
.. ~, . : . , - , ~(~48~;67 38 0 010 Number of elements in strokes after stroke 14.
39 1 1 110 This is a negative two delta code for the ON location of the first element in stroke 16.
111 loO ON location (74) of first element of the following stroke 15 relative to the baseline as offset.
41 o This signifies a delta value of zero for the OFF location of the first element in stroke 16.
42 ol ooo oll OFF location (103) of first element of following stroke 15 relativa to the baseline as offset.
43 1 1101 This is a negative three delta code for the ON location of the second element of stroke 16, 44 01 010 001 ON location (121) of the second element of the following stroke 15.
1 0 010 This is a positive two delta code for the OFF location of the second element of stroke 16.
46 ol olo 111 OFF location (127) of second ~ -element of the following stroke 15 relative to the baseline as offset. -Stroke 15 is now drawn and consists of two elements which extend from locations 74 to 103 and from 121 to 127. The presence of the escape prior to stroke 14 was necessary to change from the single element structure of strokes 1 through 14 to the double element structure of stroke 15.
FIELD CODE DESCRIPTION
-- _ 47 1 loOO Escape code. ~-- - -Stroke 16 is now drawn utilizing deltas of -2 and O to determine the ON and OFF locations of the first element as being 72 and-1103 respectively.
Deltas of -3 and +2 determines the locations of the second element to be 116 and 131. The presence of the escape code prior to stroke 16 is necessitated by the fact that the ON delta of the first element of stroke 17 would have to ,' - , ' - . ~ .
1048~;67 change by an amount beyond the seven bit range of the delta field. In this situation, it is necessary to load new locations for all elements. The un-packing of the ser~al data stream continues with no peculiarties until stroke 46 is finished.
141 1 1000 Escape code.
Stroke 47 is now drawn with the locations of stroke 46 and the deltas determined prior to stroke 46.
. .
FIELD CODE DESCRIPTION
_ . :
, 142 0 This bit following the escape code signifies that unpacking ii of data is to continue. If it were a bit 1, the symbol generation would be terminated, as it normally would but for a negative side bearing number which follows.
143 1111 This signifies a 6-bit negative (backward) side bearing number -follows.
144 00 O 001 This is a side bearing number which calls for one stroke space backwards.
145 1 This bit following a side bearing number signifies termination of the symbol generation.
, The axis offsets specified by the registers 18c and l9c are next restored. And finally the symbol space specified by the registers 18b and l9b is provided.
Due to the negative side bearings at the beginning and the end of the symbol, the symbol actually intrudes into the stroke area of the preceed-ing one and allows the following one to intrude in the stroke use of this one.
Thus, although it takes 47 strokes to draw the symbol, the symbol has an effective width of only 44 strokes. This particular symbol requires 558 bits of data for its complete presentation including axis offsets and side bear-ings. This is an average of 41/3 data bits for each ON and OFF location.
If each location were addressed individually, at least 1¢~48667 eight bits per location would be required even with no provision for axis offset and side bearing. This data formatting thus reduces the number of necessary data bits by almost a factor of two. However, other data formats may be used to control the generation of a symbol.
The unpacked data is employed by the video control 23 to turn the CRT beam on and off. Figure 5 illustrates-ithe organization of that video control. The unpacked data for a given stroke is placed in appropriate stor-age devices when a DRAW STROKE command is issued by the symbol generator con-trol unit 22 (Figure 1). The number of elements in the stroke is stored in a register 41, and the ON and OFF deltas are stored in memories 42 and 43.
In the case of the first stroke, and any stroke thereafter where the ON and -~
OFF points are specified relative to the baseline or offset baseline, the ON ;
and OFF locations are stored in memories 44 and 45~ Thereafter, new`ON
and OFF locations are computed and stored for successive strokes by adding ON and OFF deltas via adders 46 and 47. ~-The DRAW STROKE command presets a main counter 48 to a number ; slightly less than will produce a carry out upon co~mting up. That also en-ables the counter to start counting clock pulses from a progra~mable master clock 49. At the same time the control unit 22 transmits a START signal to the stroke generator 26 shown in Figure 2. As the stroke is thus started, ~ -the main counter 48 is started with the master clock operating at a pre- -~
determined high rate and counts up until the carry out condition is detected, i.e., until the counter is advanced to all zeros. At that point a detector 50 switches the master clock to a lower rate specified by a program control input. By starting the main counter at the same number near carry out for every stroke and using the same high clock rate to count up to the carry out condition, a delay of consistent duration is provided at the beginning of each stroke before the beam can possibly be turned on and off via comparators 51 and 52. This delay allows the CRT deflection circuits to settle before actual . ` : - ` , ' ' : , : ' .
1~48~67 generation of the symbol strike begins and insures that all symbols, regard-less of size control through the master clock, will start at the same base-line.
- The numbers stored in the X and Y DACs of the stroke generator will affect the position of the baseline in that the stroke rate will vary as a function of those numbers which are programmed to effect control 6f symbol size in cooperation with the programming of the master clock. To take that into account during the period before "carry out", the data processing sys-tem provides an adjusted beam position through thel!main DACs 24 andl25 in a manner which takes into account the rotation or replacement of the symbol, if any. The starting point of illumination of each character can then be digitally controlled with programmable predictability and consistency.
At the beginning of a stroke, ON and OFF memory address counters 53 and 54 are cleared by a CLEAR signal from the control unit 22. That causes the contents of the ON and OFF location memories 44 and 45 to appear at inputs of respective buffer registers 55 and 56. These registers are then loaded with the ON and OFF points of the first element of the stroke.
Immediately thereafter, respective ON and OFF deltas are added to the outputs of these buffer registers. The sums are loaded into the ON and OFF location memories at the same address, thus updating the on and off points for the first element of the next stroke.
As the main counter passes through zero, the contents of the main counter are compared with the contents of the ON and OFF buffer registers.
This comparison continues until the ON and OFF points for the first element are reached, at which time the comparators 51 and 52 and turn on (set) and turn off (reset) a video control flip-flop 57 and adYance the ON and OFF
memory counters 53 and 54 to address the on and off points of the second element, if any, in the memories 44 and 45. Those points are then updated with deltas from memories 42 and 43, and the process continues as for the , : .... . . : :
1~4~ti7 first element. Delay lines 58 and 59 provide the proper timing of the actionsrequired upon comparisons being made, which are to update to the next location values the registers 55 and 56, store the sums out of the adders 46 and 47, and then advance the address counters 53 and 54. When the last element has been turned on, and the address counter 53 has been incremented, a digital ;
comparator 60 detects a coincidence between the ouput of the address counter and the number of elements stored in the register 41. It should be recalled ~;-that the memory address counter starts from zero for the first element. Con-sequently, if there are three elements, for example, the memory address count-er is advanced to the count of two to address the turn on point for the third element in memory 44. Thereafter, upon being incremented to address what would otherwise be the fourth element turn on point, the output of the address counter is three which matches the output of the element register 41. The output of the comparator 60 enables an AND gate 61 to transmit the output signal of the delay line 59 to signify the end of the stroke when the turn off point of the last element is reached. The END OF STROKE signal thus generated is transmitted to ~he control unit 22 which ends the stroke by re-setting the integra~ors 31 and 32 (Figure 2) with a CLEAR signal and updates the X and Y registers 18 and 19 via adders 20 and 21 (Figure~
. .
: . -' - ' ~
Claims (6)
PROPERTY OR PRIVILEGE IS CLAIMED ARE DEFINED AS FOLLOWS:
1. In a graphic symbol generator for use with a data processing system employing a cathode-ray tube display and using two digitally controlled ana-log integrators, one for each of two orthogonal X and Y axes of said cathode-ray tube display to generate spaced parallel strokes, where inputs to said integrators are from separate digital-to-analog converters connected to separate registers, an improvement comprising means for programming the rates and polarities of change in the outputs of the integrators in the form of digitally coded numbers loaded into said registers by a stored program in said data processing system to provide programmed X and Y beam deflection rates which cooperate to generate strokes at an angle between 0° and 90°
with respect to said axes as required in response to the ratio of one of said numbers to the other.
with respect to said axes as required in response to the ratio of one of said numbers to the other.
2. The improvement of claim 1 wherein the magnitudes of said numbers for a symbol may be changed under programmed control when the symbol size is to be changed.
3. In a programmed digital data processing system having means for generating spaced graphic symbols on a lineacross the face of a cathode-ray tube, said means employing X and Y deflection systems for producing spaced parallel strokes of an electron beam, said strokes beginning on a line com-mon to all symbols as a baseline, the first of said strokes starting at a designated point specified on a coordinate system having orthogonal X and Y
axes, where said X and Y deflection systems cooperate to place said beam on any point on the face of said cathode-ray tube in response to Xp and Yp signals, said graphic symbol generating means having means for turing said beam on and off as required by counting units of stroke length from said baseline to determine the on and off points of stroke elements which make up the symbol, the improvement of means for starting each stroke from said base-line at the bottom of each symbol, means for terminating each stroke at the turn-off point of the last one or more elements, means for generating said strokes, means for adding programmed values to at least one of said X and Y
coordinates of said starting points at the end of each stroke; and means for programming said values to be added to said X and Y coordinates, whereby width of said symbol is controlled.
axes, where said X and Y deflection systems cooperate to place said beam on any point on the face of said cathode-ray tube in response to Xp and Yp signals, said graphic symbol generating means having means for turing said beam on and off as required by counting units of stroke length from said baseline to determine the on and off points of stroke elements which make up the symbol, the improvement of means for starting each stroke from said base-line at the bottom of each symbol, means for terminating each stroke at the turn-off point of the last one or more elements, means for generating said strokes, means for adding programmed values to at least one of said X and Y
coordinates of said starting points at the end of each stroke; and means for programming said values to be added to said X and Y coordinates, whereby width of said symbol is controlled.
4. The improvement of claim 3 including means for controlling the number of times said stroke spacing values are to be added or subtracted to said X and Y coordinates before the first stroke of said symbol and the num-ber of times said stroke spacing values are to be added or subtracted to said X and Y coordinates after the last stroke to affect the side bearing of said symbol relative to symbols on the same line before and after said symbol.
5. In apparatus for displaying graphic symbols on an imaginary line using a cathode-ray tube and employing a beam control system, means operative on said beam control system for starting at specified points each of a plur-ality of parallel strokes required for each symbol on said line, means operative on said starting means for programming an offset of said points be-low said imaginary line along which sapced symbols are displayed in sequence in order to specify starting points for strokes of symbols which extend below said imaginary line and means operative on said starting means for program-ming an offset of said points in a direction parallel to said imaginary line from an offset position otherwise specified for italicized symbols that ex-tend below said line as said line of spaced symbols is displayed.
6. Apparatus employing a cathode ray tube fordisplaying lines of graphic symbols by displaying parallel line segments using the electron beam of the cathode ray tube having deflection circuits connected to a data pro-cessing system which stores in digital form control data for generation of symbols to be displayed on a baseline, including data which defines the starting point of said baseline for said line of graphic symbols in a fixed Cartesian coordinate system, comprising analog deflection control means re-sponsive to digital signals for producing analog deflection control signals Xp and Yp for said beam in said Cartesian coordinate system, X and Y registers for storing digital values for said analog deflection control means, said digital values being provided as a line starting point by said data processing system for each line of symbols, a pair of digital means for adding and sub-tracting deflection control values to the contents of said respective X and Y
registers, means responsive to data from said data processing system for generating stroke signals Xs and Ys applied to said respective X and Y deflection control means for each successive stroke, means responsive to data from said data processing system for generating a video control signal to blank and un-blank said cathode-ray beam during each stroke to produce said parallel line segments, a plurality of spacing registers associated in pairs, one of each pair for a different axis of said Cartesian coordinate system for storing line segment spacing data, a first pair for storing stroke spacing data, a second pair for storing symbol spacing data and a third set for storing base-line offset data for each stroke of each symbol, said offset data providing not only stroke offset in a direction normal to said baseline for symbols that extend below said baseline, but also stroke offset in a direction parallel to said baseline for symbols that are slanted with respect to said baseline, all of said paired registers being connected to said pair of digital means for adding and subtracting deflection control values, means responsive to control of said data processing system for updating the contents of said X and Y registers and said paired spacing registers, and means responsive to control of said data processing system for adding the contents of respect-ive ones of a pair of spacing data registers to said X and Y registers during the course of displaying a line of symbols by generating on the face of said cathode-ray tube a sequence of symbols with respect to an imaginary line coincident with said baseline and anywhere on said face with any orientation in respect to said fixed Cartesian coordinate system.
registers, means responsive to data from said data processing system for generating stroke signals Xs and Ys applied to said respective X and Y deflection control means for each successive stroke, means responsive to data from said data processing system for generating a video control signal to blank and un-blank said cathode-ray beam during each stroke to produce said parallel line segments, a plurality of spacing registers associated in pairs, one of each pair for a different axis of said Cartesian coordinate system for storing line segment spacing data, a first pair for storing stroke spacing data, a second pair for storing symbol spacing data and a third set for storing base-line offset data for each stroke of each symbol, said offset data providing not only stroke offset in a direction normal to said baseline for symbols that extend below said baseline, but also stroke offset in a direction parallel to said baseline for symbols that are slanted with respect to said baseline, all of said paired registers being connected to said pair of digital means for adding and subtracting deflection control values, means responsive to control of said data processing system for updating the contents of said X and Y registers and said paired spacing registers, and means responsive to control of said data processing system for adding the contents of respect-ive ones of a pair of spacing data registers to said X and Y registers during the course of displaying a line of symbols by generating on the face of said cathode-ray tube a sequence of symbols with respect to an imaginary line coincident with said baseline and anywhere on said face with any orientation in respect to said fixed Cartesian coordinate system.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US05/424,220 US3946365A (en) | 1973-12-13 | 1973-12-13 | Graphic symbol generator |
CA213,441A CA1042121A (en) | 1973-12-13 | 1974-11-12 | Graphic symbol generator |
Publications (1)
Publication Number | Publication Date |
---|---|
CA1048667A true CA1048667A (en) | 1979-02-13 |
Family
ID=25667748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA78308126A Expired CA1048667A (en) | 1973-12-13 | 1978-07-26 | Graphic symbol generator |
Country Status (1)
Country | Link |
---|---|
CA (1) | CA1048667A (en) |
-
1978
- 1978-07-26 CA CA78308126A patent/CA1048667A/en not_active Expired
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE29550E (en) | Graphic symbol generator | |
US4298945A (en) | Character generating method and apparatus | |
US4069511A (en) | Digital bit image memory system | |
US3936664A (en) | Method and apparatus for generating character patterns | |
US3422419A (en) | Generation of graphic arts images | |
US3974493A (en) | Cursor find system for the display of a word processing system | |
US4029947A (en) | Character generating method and system | |
US4057849A (en) | Text editing and display system | |
US4078249A (en) | Digital display composition system | |
CA1105619A (en) | Character generating method and apparatus | |
US4203154A (en) | Electronic image processing system | |
US4129859A (en) | Raster scan type CRT display system having an image rolling function | |
US3480943A (en) | Pattern generator | |
GB1566030A (en) | Digital stroke display apparatus | |
EP0016001B1 (en) | Method of and apparatus for reproduction of character images, particularly for typesetting apparatus | |
US3775760A (en) | Cathode ray tube stroke writing using digital techniques | |
US3742482A (en) | Method and apparatus for generating a traveling display | |
US4254416A (en) | Variable size character generator | |
US4309700A (en) | Cathode ray tube controller | |
US4023027A (en) | Circle/graphics CRT deflection generation using digital techniques | |
USRE30679E (en) | Character generating method and system | |
US4369441A (en) | Display control system | |
US4149264A (en) | CRT display apparatus of raster scanning type | |
US3675230A (en) | Apparatus for decoding graphic-display information | |
JPS58153995A (en) | Vector generator for display |