System for optically entering, displaying and decoding handwritten symbols4112415Abstract An optical data entry and display system for decoding handwritten symbols into a data processing code is disclosed. The system comprises a television monitor for displaying decoded and otherwise derived symbols as well as for displaying a sequence of light spots on which a symbol may be traced by means of a light pen. The positions of the light spots comprising the trace are used in a comparison with a set of stored values defining the predetermined symbols to decode the trace. Claims The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:
______________________________________
1.5 1 0 -1 -1.5 -1 0 1
1 0 -1 0 1 0 -1 0
0 -1 -1.5 -1 0 1 1.5 1
______________________________________
9. A system according to claim 1, wherein said computing means includes, for each of said stored traces, a third vector with a dimension equal to the sum of the dimensions of said first and second vectors and wherein each of said third vectors uniquely identifies one of said stored traces, said computing means including means for comparing the component terms of said first and second vectors with respective terms of each of said third vectors such that the best vector comparison identifies said handwritten trace as the symbol corresponding to the third vector which caused said best vector comparison. 10. A system according to claim 9, wherein each of said third vectors comprises the coefficients of a Fourier series expansion derived from the trace of the predetermined symbol corresponding thereto. 11. A method for identifying a handwritten trace entered on a display comprising the steps of: (a) displaying a pattern of display elements on a display; (b) entering a handwritten trace on said display so as to identify the positions of some at least of said display elements in terms of a first coordinate and a second coordinate; (c) tabulating a first ordered list comprising said first coordinates and a second ordered list comprising said second coordinates; (d) interpolating said first and second ordered lists such that their lengths are equal; (e) multiplying a matrix with said interpolated first and second ordered lists to derive respectively a first vector and a second vector; (f) comparing said vectors with each of a series of stored vectors uniquely corresponding to one of said predetermined symbols; and (g) identifying said handwritten trace as the symbol corresponding to the stored vector which caused the best of said comparisons. 12. A method according to claim 11, wherein said comparison step comprises the step of comparing the component terms of said first and second vectors with the respective terms of each of a series of third vectors, each of said third vectors comprising the coefficients of a Fourier Series expansion derived from said first and second coordinates of one of said predetermined symbols. 13. A method according to claim 12, wherein said identification step comprises the step of identifying the best comparision of said first and second vectors with each of said third vectors as the symbol corresponding to the third vector which caused said best comparison. 14. An interactive optical data entry and display system for decoding a handwritten trace into a data processing code defined by a set of predetermined symbols, said system comprising: (a) a display having an effectively continuous display screen comprised of a plurality of selectively visually sensible display elements and operative to visually display any one or more of said set of predetermined symbols anywhere on said screen by patterns of said display elements; (b) control means connected to said display for generating on said screen a pattern of visually sensible display elements forming a letterarea, said letterarea having a first pattern of visually sensible display elements forming a letterspace and a second pattern of visually sensible display elements forming a letterend; (c) tracing means for making a handwritten trace on said display screen within said letterarea; (d)sensing means in association with said control means and said tracing means for identifying each of said display elements of said letterspace and at least one of said display elements of said letterend passed over by said tracing means while making said handwritten trace; and (e) computing means responsive to said sensing means and said control means and having, for each of said predetermined symbols, a stored trace uniquely corresponding thereto, said computing means including means for comparing said identified display elements of said letterspace with each of said stored traces such that the best comparison identifies a handwritten trace as the symbol corresponding to the stored trace which caused said best comparison. 15. A system according to claim 14, wherein said computing means includes additional means for selecting signal sequences for generation by said control means such that the display is caused to exhibit the symbol corresponding to said stored trace causing said best comparison. 16. A system according to claim 15, wherein said additional means includes means for selecting said signal sequence such that the corresponding pattern of display elements is caused to exhibit the symbol corresponding to said stored trace causing said best comparison only after said tracing means has passed over at least one display element of said the letterend. 17. A system according to claim 14, wherein said control means comprises means responsive to said sensing means and said sensing means includes means for selecting signal sequences for generation by said control means such that the letterspace continuously reflects said handwritten trace in progress. 18. The interactive optical data entry and display system according to claim 14 wherein said control means is operative in response to said best comparison to generate on said screen a pattern of visually sensible display elements forming the symbol corresponding to the stored trace which caused said best comparison. 19. The interactive optical data entry and display system according to claim 18 wherein said control means are operative in response to said tracing means to generate on said screen in said letterspace a pattern of visually sensible display elements corresponding to said handwritten trace. 20. A method for entering, displaying, comparing and identifying handwritten traces defined by a set of predetermined symbols comprising the steps of: (a) causing a display screen to visually display on said screen a pattern of selectively visually sensible elements forming a letterarea, said letterarea including a first pattern of visually sensible display elements forming a letterspace and a second pattern of visually sensible display elements forming a letterend; (c) entering on said screen and within said letterspace a desired handwritten trace; (c) causing said letterspace to continuously reflect the in-progress condition of said desired handwritten trace; (d) entering on said screen and within at least one of said elements of said letterend a handwritten trace completing said desired handwritten trace within said letterspace; (e) comparing said desired completed entered handwritten trace within said letterspace with each of a series of stored traces uniquely corresponding to one of said predetermined symbols; (f) identifying said desired completed entered handwritten trace within said letterspace as the symbol corresponding to the stored trace which caused the best of said comparisons; and (g) causing display in the letterspace of said screen of the predetermined symbol corresponding to said stored trace causing said best comparison. Description BACKGROUND OF THE INVENTION
______________________________________
yes, Interrupt
block 801
yes, Lightpen interrupt
block 803
no, Letterarea defined
block 809
Define Letterarea in position
lightpen aimed at
block 817
______________________________________
Without any apparent elapse of time the operator will see, in part, the following: . . WHO ELSE HAN#E OUT THERE BESIDES . . . The operator will then write the letter "G" in the letterspace during which, the following occurs: 4
______________________________________
yes, Interrupt
Block 801
yes, Lightpen interrupt
Block 803
yes, Letterarea defined
Block 809
yes, Lightpen on letterspace
Block 810
Data Input to first file
Block 1000
______________________________________
At the end of the trace the operator places the lightpen 600 over the letterend and the following occurs:
______________________________________
yes, Interrupt
block 801
yes, Letterarea defined
block 809
no, Lightpen on previous position
block 811
Set previous position
block 814
______________________________________
During the next frame of the display, the following occurs:
______________________________________
yes, Interrupt
block 801
yes, Letterarea defined
block 809
yes, Lightpen on previous
position
block 811
yes, Lightpen on letterarea
block 812
no, number of entries smaller
than three
block 813
Decode sumbol
block 900
______________________________________
The output of the instructions represented by block 900 will be the USASCII code for the letter "g". The Application Subprogram, diagrammatically represented by block 818, for this particular function in the text editing application, will shift the letterarea one position and place and code for the letter "g" in the position previously occupied by the code for the letter "c". The display 500 will thus show: . . WHO ELSE HANG# OUT THERE BESIDES . . . The same sequence of events previously described will again occur when the operator traces the letter "s" in the letterspace. The display will show, in part, the following: 8 . . WHO ELSE HANGS#OUT THERE BESIDES . . . The operator can now point the lightpen 600 at another letter to be changed or, employ a control sign, to indicate that the editing task is completed. In either event, the display will show, in part, the following: 9 . . WHO ELSE HANGS OUT THERE BESIDES . . . GENERAL WORD STATEMENT OF THE ALGORITHM In order to facilitate the actual coding of a program in accordance with the present invention, it is considered helpful to logically develop the word statement of the algorithm used in subprogram 900 and to explicitly enumerate the steps involved in its implementation. Accordingly, the use of the algorithm in subprogram 900 as well as the use of appropriate control sequences to actually code subprogram 900 will be discussed in detail hereinafter. For purposes of clarity, a summary of the detailed discussions previously advanced, as the discussion directly applied to the development of the word statement, will be presented. It will be recalled that two binary words, a first binary word and a second binary word, represent the position of the lightpen 600 over the letterarea by means of the numerical values of the XF counter 304, the XC counter 309, and the YF counter 314. The numerical values of the aforementioned counters are transferred to computer 101 wherein subprogram 1000 places the first and second binary words in a first file. The first file actually comprises a first list of numerical values representing the state of the XF counter 304 and a second list of numerical values representing the state of the YF counter 314. In the context of this background it is considered helpful, for purposes of clarity, to at this time advance certain definitions and notations to be used in developing the word statement of the algorithm. Thus, the following definitions are presented: Define VXF as the vector consisting of the first list of numerical values and n as the number of entries in the first list. Define VYF as the vector consisting of the second list of numerical values and m as the number of entries in the second list. Define order as the number of the positon of a code in a list or a file. Define a function F as a function which retains the smaller of two numbers as well as the order of the retained number. Define a second file SH as a file having a number of stored sets of characteristic numbers, each set of characteristic numbers representing a symbol, such that the contents of the entire file SH defines all symbols that the system is capable of decoding. Define a third file B as a list of binary codes corresponding to the second file SH such that, the order of a specific stored set of characteristic numbers for a specific symbol is the same as the order of the binary code for that specific symbol. In other words, for any number i the binary code for the specific symbol can be found in the ith place in file B and the corresponding set of characteristic numbers can be found in the ith place in file SH. The discovery of the existence of a matrix M with which vectors VXF and VYF can be multiplied to derive a set of numbers H that are characteristic of the written symbols is a key feature of the present invention. The set of numbers H, the first half of which comprise a first subset HX and the second half of which comprise a second subset HY, are of the form: HX = M .times. VXF (1) hy = m .times. vyf (2) for decoding the written sumbol the difference D between the stored characteristic numbers in the second file SH and the numbers H is determined. Calculation of the difference D is of the general form given below: ##EQU1## where s is the order of and a is equivalent to the magnitude of H or SH The function F is then applied to a retained number A, where A is initialized at a value greater than any expected D, and the current calculated difference D. The retained number A is therefore replaced by the smaller of A and D and the order i is replaced by the order of the retained number. A mathematical expression for this operation is A,i = F(A,D). (4) finally, the code for the decoded symbol in obtained by extracting the code from the third file B having the order i derived in equation (4). A mathematical expression for this operation is Code = B(i). (5) With regard to FIG. 2, it is apparent that the number of entries in the first and second list will be different for different traced symbols. For example, in practice a trace of the letter I may generate six or seven entries whereas a trace of the letter E will contain a significant number of entries. As a consequence, the dimensions of vectors VXF and VYF will vary, and the dimension of matrix M may continuously be adjusted accordingly. Therefore, the instructions diagrammatically represented by block 900 must either comprise the definition of a plurality of matrices to be used for matrix M, or, in the alternative, may comprise means for generating one matrix M as required by the dimensions n, m of the vectors VXF and VYF. On the other hand, the dimensions n, m of the vectors VXF and VYF can be equalized for different symbols so as to enable the use of only one matrix M. In choosing between these methods of implementation, it is clear that the method of equalizing the dimensions n, m by interpolation minimizes the number of necessary computer instructions. Therefore, the coding of the preferred embodiment of the present invention implements this interpolation method. FIG. 7 shows diagrammatically a typical first or second list. The list shown contains 22 entries whose respective numerical values are represented by the height of the points above the base line. The circles denote the values of a new list constructed by interpolation and having eight entries. A word statement of the method of interpolation used to derive the new list is detailed hereinafter. Initially, define a function G(x) which determines the largest integer number, including zero, equal to or smaller than x. Given a numerical value x, the coding of function G(x) is well known to those skilled in the art of programming. Now if n is the number of entries in the first list, a fourth list NX can be constructed from the first list through interpolation. If we define the order of this fourth interpolated list as p, the interval between two entries in the fourth list can be expressed as n/p. Therefore, if t is defined as the order of an entry in the fourth list NX then alpha (t) is the lower boundary of the interval in which the interpolated numerical value of NX lies and alpha (t)+1 is the corresponding upper boudary, where ##EQU2## In other words, the numerical value of the interpolated list NX will lie between, inclusive, the numerical values VXF with order alpha (t) and alpha (t)+1. Similarly, the numerical value NY lies between, inclusive, the numerical values VYF with order beta (t) and beta (t)+1, where ##EQU3## The values for NX(t) and NY(t) for all values of t from 0 through p-1 (in the preferred embodiment the value for p is eight) can be calculated as follows: NX (t) = VXF (.alpha.(t)) + (VXF (.alpha.(t)) - VXF (.alpha.(t)+1)). (((n.multidot.t)/p)- .alpha.(t)) (8) and, NY(t) = VYF (.beta.(t)) + (VYF) .beta.(t)) -VYF (.beta.(t)+1)). (((m.multidot.t)/p) - .beta. (t)). (9) Since the operation of the instructions diagrammatically represented at block 1000 is such that two successive values in the first or second lists differ from each other by either of three values, zero, plus one or minus one, that part of the calculations required in equation (8) and (9) involving the multiplication of the difference of two successive values from the first and second list, reduces to a logical decision either that part of the calculation is zero or plus (((n.multidot.t)/p)-(t)) or minus (((n.multidot.t/p) -.alpha.(t)). The identical considerations applied to the calculation of NY(t). Since by definition of function G calculations of the form (((n.multidot.t)/p) -.alpha.(t)) are a binary function, equations (8) and (9) above can be performed with minimal instructional sequences thereby reducing the requirement for computational capacity of computer 101. To further simplify the notational designations used herein a function I may be defined which performs the calculations defined in equations (6) and (8) on the numerical values of the first list and the calculations of equations (7) and (9) on the numerical values of the second list. NX(t) = I (VXF,t) t = o, through, p-1 (10) NY(t) = I (VYF,t) t = o, through, p-1 (11) and second lists, VXF and VYF, by applying the interpolation function I to the first and second list. This calculation is represented by equations (10) and (11). The characteristic numbers HX can be derived from the fourth list NX(t) by multiplying the latter with a matrix M. Similarly, the characteristic numbers HY can be derived from the fifth list NY(t) by multiplying the latter with the matrix M. The calculations are as follows: HX = M.multidot.NX(t). (12) HY = M.multidot.NY(t). (13) The difference between the ith stored set of characteristic numbers in the second file SH and the calculated characteristic numbers HX and HY can be expressed as the sum of the square of the differences between corresponding characteristic numbers. This calculation, which is performed sequentially for all symbols which the system is programmed to recognize, can be represented as follows: ##EQU4## where u is the dimension of SHX and HX, v is the dimension of SHY and HY, and i is the order in file SH. Upon obtaining the difference D(i), function F is applied to each component of the calculated difference D(i) where again, A is a retained number which is initialized at a value greater than any expected D(i). After all components of D(i) have been calculated the last result of the function F is the order of the decoded character. The code for the decoded character is then determined from the order in the third file B as previously described. Derivation of matrix M is based upon a Fourier series analysis. As is well known the Fourier series is a mathematical series describing a periodic function as the sum of an average value and values of all harmonic cosine and sine functions. The coefficients of the cosine and sine functions can be calculated through integration, over the period, of the periodic function. If the function is known only through samples taken during a period, then the coefficients can be approximated through successive partial integration over the sampling period by assuming that the periodic function is linear over the sampling period. Thus, if as in the preferred embodiment data samples are assumed, the performance of the partial integration leads to formulae for the coefficients as follows: ##EQU5## where n(0)-n(7) are the numerical values of the samples, (delta).delta. is the sampling period, a(0) is the average value, a(1), a(2), a(3) are the coefficients for the cosine harmonics, and b(1), b(2), b(3) are the coefficients for the sine harmonics; and where the fourth and fifth lists, NX and NY each contain numerical values for n(0) through n(7). Since one objective of the present invention is to analyze the shape of a written symbol, and since the average value a(0) contains information regarding only the position of the written symbol within the letterspace 512, coefficient a(0) is not utilized in the preferred embodiment of the invention. Furthermore, in order to minimize computational instructions without losing information regarding the shape of the written symbol, the remaining Fourier coefficients may be rewritten in terms of h coefficients as follows: h(1) = n(0).sqroot.2+n(1)+n(3)-n(4).sqroot.2-n(5)-n(7) h(2) = n(0)-n(2)+n(4)-n(6) h(3) = n(0).sqroot.2-n(1)+n(3)-n(4).sqroot.2+n(5)-n(7) h(4) = n(1)-n(2).sqroot.2-n(3)+n(5)+n(6).sqroot.2+n(7) h(5)= n(1)-n(3)+n(5) -n(7) h(6) = n(1) -n(2).sqroot.2+n(3) -n(5) +n(6).sqroot.2-n(7) (16) By defining a vector H as comprising the coefficients h(1) through h(6) and a vector N comprising the elements n(0) through n(7), then a convenient notation for the system of equations shown above could be written as follows: H = M.multidot.N (17) in view of equations 16 and 17 above, matrix M can now be defined as: ##STR1## It will be appreciated that an operation involving multiplication by zero, in the coding of the preferred embodiment, requires no operation. Therefore, a matrix with more zero elements will result in a subprogram consisting of less operations. Experimentation with a decoding subprogram with matrix M and with a decoding subprogram with matrix MA, shown below, reveals only inconclusive differences and decoding performance between the two subprograms. ##STR2## Experimentation has further verified that a subprogram employing a matrix MB, a shortened version of matrix MA, and a subprogram employing a matrix MC reveals inconclusive differences in decoding performance between these two subprograms. Because multiplication by one and a half can be conveniently implemented in the coding of a program by a shift and add operation, the preferred embodiment of the present invention employs matrix MC. Matrices MB and MC are as follows: ##STR3## It will be understood that although a specific series of matrices have been defined above, there may be other matrices which perform adequately with only minor or inconclusive differences in matrix elements. It will also be understood that by chosing a smaller set of symbols which subprogram 900 is capable of decoding a further reduction in the size of the matrix utilized can be expected. Finally, it will be recognized that for values of p other than 8 a matrix having dimensions other than that shown will be required. Experimentation has also revealed that an inconclusive difference in decoding performance results when the difference represented by equation (14) is replaced by a difference based upon absolute values. Because a difference based on absolute values lends itself to more minimal implementation it is utilized in the preferred embodiment of the present invention. The difference based upon absolute values, which comprises the sum of the absolute values of the differences between the stored characteristic numbers SH and the calculated characteristic numbers H, may be expressed as follows: ##EQU6## where u is the dimension of SHX and HX, v is the dimension of SHY and HY, and i is the order of file SH. A final word statement of the algroithm used in the preferred embodiment of the present invention may now be expressed as follows: ##EQU7## A detailed flow chart representation of the instructions with which the improved algorithm for the decoding subprogram 900 can be implemented is shown in FIG. 8. The flow chart of FIG. 8 uses the computational notations hereinbefore defined and discloses the control sequences needed for execution of the subprogram. Initially, the instructions diagrammatically represented by blocks 951 through 956 are utilized to derive eight interpolated values for each of the interpolated lists NX and NY. Block 951 represents instructions which set the program variable C to the vector VXF, the program variable tt to an initial condition of zero and the program variable ii to an initial conditon of zero. The program variable ii is used by the instructions represented by block 1000 to initialize the first and second lists, VXF and VYF, for entry of data. The program variable tt is used to control the computation of the eight values for each of the lists NX and NY. The eight interpolated values for the NX list are computed in a program loop comprising blocks 952, 953, 954 and the no exit from block 955. The result of the computations performed by this loop are eight program variables n(0) through n(7) which contain the eight interpolated values of the NX list. The yes exit from block 955 indicates that computation of the first eight program variables n(0) through n(7) has been completed. The instructions represented by block 956 will then set the program variable C to the vector VYF representing the second list YF. The computation then proceeds through the same program loop comprising block 952, 953, 954 and the no exit of block 955 whereby the program variables n(8) through n(15) are computed. The program variables n(8) through n(15) comprise the eight interpolated values of the NY list. The computations in this program loop are terminated by the yes exit from block 954 after program variable n(15) has been computed. The instructions diagrammatically represented by blocks 957 through 962 implement the calculation of H from the NX and NY lists. In this regard, block 957 represents instructions which set the initial conditions for calculation of H by setting program variable C to the values of program variables n(0) through n(7) and program variable tt to an initial value of zero. The first three values of H, i.e., HX or H(0) through H(2), are calculated in the program loop comprising blocks 958, 959, 960 and the no exit from block 961. The notation MC (tt) in block 958 represents the tt row of matrix MC. The yes exit from block 961 causes the execution of of instructions setting the program variable C to the program variable n(8) through n(15) which contain the eight interpolated values of the NY list. The computation then proceeds through the execution of the program loop as described above whereby the values H(3) through H(5), i.e., the HY list, are computed. The yes exit from block 960 represents that the calculation of H(0) through H(5) has been completed. The instructions diagrammatically represented by blocks 963 through 971 compute the difference function DA and the retained value function F by means of a third program loop comprising blocks 965 through 968 and a final program loop represented by blocks 964 through 971. In the embodiment of the present invention, the SH file, comprising the characteristic numbers for each symbol the system is programmed to recognize, includes six characteristic numbers. The accumulation of the difference between the numbers in the second file SH and the numbers in H, i.e., DA, for each stored symbol against which the traced symbol is to be compared is controlled by the third loop. The fourth program loop, block 964 through 971 insures that this comparison is accomplished for each of the stored symbols. The comparison calculations are initialized by instructions represented by block 963 which initializes program variable A, in which the smallest of two values is retained, to its maximum value, program variable i, in which the order of the small list of these differences is retained, to zero and control program variable jj to zero. The instructions represented by block 964 initialize the execution of the third loop, block 965 through 968, by setting both program variable DA, which accumulates the calculated differnce, and program variable tt, which controls the execution of the third loop, to zero. The difference DA in respect to each stored symbol is calculated by the instructions represented by block 965 and 966 wherein block 965 representes the calculation of the absolute value of the difference between a corresponding stored characteristic number of file SH and a calculated characteristic number contained in H. The instructions represented by block 966 then accumulates the difference for a particular stored symbol in program variable DA. The program loop is terminated by means of the yes exit from block 968. The difference DA corresponding to a particular stored symbol is then applied to block 969 which executes function F and retains the results in program variables A and i. The value retained in program variable A will be the smaller of the value currently in A and the current computed value of DA. The value retained in program variable i will be the value of jj if DA proves to be smaller than A or remains unchanged if variable A is equal to or smaller than DA. Execution of the fourth loop, blocks 964 through 971, is controlled by program variable jj, which is unitarily incremented by instructions represented by block 970. The value q used by the instructions represented by block 971 to ascertain the termination of the fourth loop, represents the number of stored symbols the system is programmed to recognize. When the program variable jj exceeds the value q, execution of the fourth loop is terminated by means of the yes exit from block 971. Finally, the instructions represented by block 972 select the ith entry in the third file B to store in location CODE. In the preferred embodiment of the present invention, the code employed by the third file B is the United States of America Standard Code for Information Interchange (USASCII). The characteristic numbers comprising file SH may be derived as follows. Most micro or mini computers have a program debugging utility available. This utility permits keyboard data entry into memory, printout of designated memory contents and starting and stopping the execution of a program at designated locations. The program according to FIG. 8 and a debugging utility of this type can be used to calculate file SH. Lists VXF and VYF can be typed in, program execution can be started at block 951 and stopped after block 960 and then H can be printed out. By repeating this procedure for each of the symbols comprising the set of predetermined symbols, a complete SH file can be derived. In order to clarify the detailed description to follow of the flow chart for data input corresponding to block 1000 in FIG. 6, a general discussion of the problem and a word statement of the algorithm is considered useful. In this regard, the instructional sequence represented by block 1000 enters data into the first file in response to inputs to computer 101 by the control circuit 102. And, as will be recalled, the data so entered is a result of the determination by the output counter 407 of the sensor 400 that the light detected is indicative of the lightpen 600 position. Since writing with lightpen 600 is closely analogous to writing with a pencil on square ruled paper, it can be expected that lightpen 600 will occasionally traverse the confines of letterspace 512 and be positioned otherwise, such as over the letterborder 511. Under these circumstances, and as previously described, the output counter 407 will prevent an output. It can further be expected that, on occasion, the lightpen 600 will be moved back over the letterspace 512. Under these circumstances, the output counter 407 will generate an output whereby two successive entries in the first and second lists may differ by more than plus or minus one. To prevent the occurrence of such a condition, instructions are included within the instructions diagrammatically represented by block 1000 to appropriately "fill-in" the first and second list. It may also occur that an operator who carefully traces a character and carefully lifts the lightpen 600 up after each stroke on the face of the display 500 may achieve a different trace from an operator who slurs the lightpen 600 over the face of the display 500. Without corrective procedure, the first and second lists for the respective characters will differ and thereby minimize the usability of the present invention. Accordingly, instructions are included within the instructions diagrammatically represented by block 1000 to equalize the first and second lists under circumstances of this type. Another specific problem which may occur in connection with the date entry operation results when the lightpen 600 is positioned in such a manner that a substantially equal amount of light enters the lightpen 600 from two adjacent lightspots. In this case, the decision on lightpen position will be made by an instantaneous state of the electronic circuitry generally known as noise. A lightpen position in this manner may cause a number of entries to be made in the first file so that it appears that the lightpen is moved between adjacent lightspots whereas, in fact, the lightpen is stationary. Accordingly, the instructions diagrammatically represented by block 1000 include instructions which allow data entry in the first file only when the difference between the current values of the first and second binary words and the last entry in the first file indicate that the lightpen has moved a distance of one letterarea element away from the position corresponding to the last entry in the first file. In the following discussion the aforementioned auxiliary instructions to the instructions diagrammatically represented by block 1000 will be initially enumerated in a word statement of the algorithm followed by a flow chart representative of the actual coding of the instructions. With regard to the first set of auxiliary instructions, i.e. those for filling in the first and second lists, the word statement of an appropriate algorithm may be developed as follows. Initially, a first absolute value AA is defined as follows: AA = .vertline. XF - VXF(n) .vertline., (23) where XF identifies that part of the first binary word representative of the numerical value of the XF counter 304, and where VXF(n) identifies the last entry in the first list. A corresponding absolute value BB may be defined as BB = .vertline. YF - VYF(m) .vertline., (24) where YF identifies that part of the second binary word representative of the numerical value of the YF counter 314, and where VYF(m) identifies the last entry in the second list. Depending upon the manner in which the absolute values AA and BB satisfy the conditions AA > 1, AA > 3 and BB > 1, BB > 3 (25) one of three sets of instructions will be executed in order to alleviate one of the aforementioned problems. The first set of instructions will fill in the first file in the case where the lightpen moves out of and then back into the letterarea, the second set of instructions will fill in the first file in cases where the trace has been slurred by the operator and the third set of instructions will alleviate the problem associated with positioning the lightpen over two adjacent lightspots. The three sets of instructions are generally implementations of the following expressions: VXF(n+1) = VXV(n)+1 (26) VXF(n+1) = VXF(n)-1 (27) VXF(n+1) = VXF(n) (28) VYF(m+1) = VYF(m)+1 (29) VYF(m+1) = VYF(m)-1 (30) VYF(m+1) = VYF(m) (31) where expressions (26) and (29) define the next entry VXF(n+1) or VYF(m+1) in the first or second list by adding a value of one to the last entry VXF(n) or VYF(m), expressions (27) and (30) define the next entry by subtracting a value of one from the last entry and expressions (28) and (31) define the next entry to be equal to the last entry. In general terms, if either absolute value AA or absolute value BB exceeds the limit 3 the second set of instructions are executed. In general terms, if the input values XF or YF differ by a value of more than one from the last entry in the first or second list, then repetitive execution of instructions implementing one of the expressions (26) through (31) will result in a number of entries in either list until the last entry is equal to the value of the respective input. And, if the input values XF or YF differ by no more than one from the last entry in the first or second lists, execution of the instructions will result in a new last entry equal to the value of the input. The detailed implementation of the first, second and third sets of instructions are shown in the flow charts of FIGS. 9 and 10 which are discussed in detail hereinafter. Initially, it will be understood that the instructions presented in the flow charts of FIGS. 9 and 10 represent the instructions diagrammatically represented by block 1000 in FIG. 6. With reference to FIG. 9, block 1001 represents the decision regarding whether or not the first and second lists need to be initialized for the entry of data caused by a new trace of the lightpen 600. Initialization of the first and second lists is accomplished by the instructions diagrammatically represented by blocks 1002 and 1003. The block 1002 instructions set program variable ii to one and program variables m and n to the start values of the first and second lists. The block 1003 instructions then place the initial data entries into the first and second lists, whereafter the subprogram exits. Upon a reentry of the subprogram, after the initial data entries in the first and second lists have been made, the subprogram will proceed from the no exit of block 1001. The instructions represented by block 1004 compute the absolute values AA and BB and the blocks identified by 1005a and 1005b determine whether these absolute values are greater than 1. When neither absolute value AA nor absolute value BB is more than one (the no exit from block 1005b), indicating that the lightpen 600 has not moved a distance of one letterarea element away from its previous position, the input data is ignored and block 1000 is exited. This operation implements the third set of instructions as previously explained. If a yes decision results from block 1005b, the blocks identified by 1006a and 1006b determine whether the absolute values AA and BB are greater than three. If either absolute value of AA or BB exceeds three (indicating that the lightpen 600 has been lifted from its previous position and is now pointed at a different area of the letterspace), the yes exits from blocks 1006a and 1006b, the second set of instructions, represented by the flow chart of FIG. 10, will be executed. Otherwise, the no exit from block 1006b, the first set of instructions will be executed starting with the instructions diagrammatically represented by block 1008. Block 1008 represents the decision regarding whether the next entry in the first list should be incremented by one with respect to the last entry. If the input data XF is larger than the last entry in the first file, a condition diagrammatically represented by the yes exit from block 1008, the next entry in the first list VXF (n+1) will be made larger by one through execution of the instrucionts represented by block 1011. On the other hand, the no exit from block 1008 leads to the decision block 1009 which determines whether input XF is equal to the last entry in the first list. The no exit from block 1009, indicating that the input XF is less than the last entry in the first list, leads to the execution of instructions represented by block 1012 which causes the next entry in the first list to be smaller by one than the last entry. The yes exit from block 1009 leads to the decision, in block 1010, of whether the input YF is equal to the last entry in the second list. The yes exit from block 1010 is indicative of the condition that the last entries in the first and second lists are equal to the input XF and YF and this completes the entry of data input into the first file for the current lightpen interrupt. The no exit from block 1010 causes the next entry in the first list to be equal to the last entry, a condition dictated by the yes exit from block 1009. The exits from blocks 1011, 1012, and 1013 then cause the program variable n to be incremented by one in accordance with instructions represented by block 1014. This results in what has been identified now as the next entry to become, for future operations, the last entry. The instructions diagrammatically represented by block 1042 determine whether the first list is full. The yes exit from block 1042 indicates that the first list is full and causes the instructions of block 1044 to be executed. The instructions represented by block 1044 cause the code for a blank or space to be placed in the location RETAIN, as previously indicated in connection with block 817 of FIG. 6. Also, block 1044 sets program variable ii to zero which, upon reentering the subprogram causes the first and second lists to be reinitialized. Finally, a first reset is generated to reset register 207 thereby erasing the written trace from the face of display 500. Under normal conditions the input data representing a symbol trace will fill neither the first nor the second lists. Accordingly, the full list test represented by blocks 1042 and 1043 is intended as a check for an abnormal entry. However, the operator may, under certain circumstances, desire to fill the first or second list intentionally. This is easily accomplished by a "scratching out" motion of the lightpen 600 across the letterspace 512. The instructions represented by block 1044 will cause the display to show nothing. In effect, the operator has "scratched out" the symbol previously traced in this position. Block 1015 represents the decision whether the input YF is larger than the last entry in the second list. The yes exit from block 1015 leads to the execution of the instructions represented by block 1016 which cause the next entry in the second list to be incremented by one with respect to the last entry. The no exit from block 1015 leads to the decision, represented by block 1017, whether the input YF is equal to the last entry. The yes exit from block 1017 causes the next entry to be equal to the last entry in the second list through the execution of instructions represented by block 1019. The no exit from block 1017, indicating that the input YF is smaller than the last value in the second list, causes the instructions represented by block 1018 to be executed, whereby the next entry is decreased by a value of one with respect to the last entry. The exits from blocks 1016, 1018 and 1019 cause the program variable m to be incremented by one by means of instructions represented by block 1020. The exit from block 1020 causes block 1043 to decide whether the second list is full and corresponds to block 1042 for the first list. The function of block 1044 has been previously discussed and therefore will not be reiterated here. Finally, the no exit from block 1043 causes a return to the instructions diagrammatically represented by block 1008 whereby the logic represented by the first set of instructions may be repeated. It will be recognized that the first set of instructions as described above and beginning with block 1008 of FIG. 9 causes the first file to be "filled" until the input XF or YF is equal to the last entry in the file. The yes exit from blocks 1006a and 1006b, indicating that the absolute value AA or BB is greater than three, causes the execution of the second set of instructions commencing with the instructions diagrammatically represented by block 1021 in the flow chart of FIG. 10. In block 1021 program variable pp is set to zero. Program variable pp causes at least one entry to be made in either the first or second list when the last entry is equal to either input XF or input YF. This is to be contrasted with the first set of instructions which provide for no data entry after a determination has been made that the input is equal to the last entry. Block 1022 provides for the determination as to whether input XF exceeds the last entry in the first list. The yes exit from block 1022 causes the next entry in the first list to be one more than the last entry in accordance with instructions represented by block 1023. The no exit from block 1022 leads to the decision as to whether the last entry is equal to the input XF. If the last entry is equal to the input XF, and no other entry has been made in the first list, represented by the yes exit from block 1028, then the next entry is caused to be equal to the last entry through execution of the instructions represented by block 1029. If the input XF is smaller than the last entry, represented by the no exit from block 1026, then the next entry is caused to be one less than the last entry through execution of the instructions represented by block 1027. The exits from blocks 1023, 1027 and 1029 lead to the instructions represented by block 1024 which cause the program variable n to be incremented by one. And, since the exit from block 1024 cannot be reached without at least one entry having been made in the first list, program variable pp is set to one by the instructions of block 1025. The functions of blocks 1039 and 1041 are identical to those previously discussed with respect to blocks 1042 and 1044 of the flow chart of FIG. 9 and will therefore not be discussed in detail. Returning to block 1028, the no exit therefrom causes instructions represented by block 1030 to be executed whereby the program variable pp is reset to zero so as to insure the entry of at least one data item in the second list. As with block 1022, block 1031 represents the decision regarding whether the input XF is larger than the last entry in the second list. The yes exit from block 1031 indicates the input YF is larger than the last entry and thereby causes execution of the instructions diagrammatically represented by block 1032. The instructions represented by block 1032 will cause the next entry in the second list to be larger by one than the last entry of the list. The no exit from block 1031 necessitates the decision as to whether input YF is equal to the last entry in the second list. If the input YF is less than the last entry, represented by the no exit from block 1035, the next entry will be made one smaller than the last entry by the instructions represented by block 1036. The yes exit from block 1035 requires the decision as to whether at least one entry has been made in the second list through the instructions represented by block 1037. The yes exit from block 1037, representing that no fill-in entries have been made in the second list, causes the next entry in the list to be equal to the last entry. The exits from blocks 1032, 1036 and 1038 cause instructions represented by block 1033 to be executed whereby the program variable m is incremented by one. And, since the exit from block 1033 cannot be reached without making one entry in the second list, program variable pp is set to one by the instructions represented by block 1034. The no exit from block 1037 indicates that the last entry on the first list is equal to input XF and that the last entry in the second list is equal to input YF. This condition causes an exit from the instructional sequences diagrammatically represented by block 1000 in FIG. 6. Although preferably comprising a general purpose digital computer, it will be apparent that the functions performed by computer 101 could be performed equally well by a customized network of digital components. One such embodiment of a digital computing means 1800 designed for implementation with digital large scale integration circuit techniques is shown in general block diagram FIG. 11. A detailed block diagram of the digital computing means 1800 of FIG. 11 is shown in FIG. 12 and described in detail hereinbelow. The digital computing means 1800 of FIG. 11 and FIG. 12 perform the same functions as blocks 800, 805, 808, 1000, 814, 815, 816, 900, 806, 817 and 818 diagrammatically represented in FIG. 6. The digital computing means 1800 is designed to perform its functions in real time such that one function is completed before signals from timer 300 or sensor 400 can initiate the performance of the next function, whereas the computing means for implementation of FIG. 6, while performing the same functions, is interrupt driven as described heretofore. The functions of the digital computing means 1800 of FIG. 11 and FIG. 12 are performed during nine process states. Process state 0 is the halt state, and is comparable to the function of block 800 Background in FIG. 6, wherein no data processing takes place. During process state 1 data is input to page memory 2700 from peripheral 700. Similarly, data output from page memory 2700 to peripheral 700 occurs during state 9. Input and output of data are functions diagrammatically represented by block 818, Application Sub-Program, in FIG. 6. The function diagrammatically represented by block 806, Output Data Words, in FIG. 6, is identical to the function performed during process state 2, in which one sentence of data is transferred from page memory 2700 to register 200. The function diagrammatically represented by block 817, Define Letterarea, is identical to the function performed during process state 3, in which the letterarea code is placed in the memory location of the character over which lightpen 600 is positioned. The functions diagrammatically represented by block 815, Erase Letterarea, and block 817, Define Letterarea, are identical to the function performed during process state 4. The function diagrammatically represented by block 1000, Data Input to First File, is identical to the function performed during process state 5. The input data is stored in Last-In First-Out (LIFO) memories 3800 and 3900, to be described hereafter, which perform a function identical to the function of the First File. The function diagrammatically represented by block 900, Decode Symbol, represented in more detail in FIG. 8, is performed during process states 6, 7 and 8. The interpolation function is diagrammatically represented by block 952, Compute N(tt). The digital computing means of FIG. 11 and FIG. 12 performs the interpolation function during process state 6. The result of interpolation is stored in Interpolation Register 4200 to be described. The matrix computation is diagrammatically represented by block 958, Compute H(tt). The digital computing means of FIG. 11 and FIG. 12 performs the matrix computation during process state 7, with the results being stored in H-Register 4500. Finally, the function to select the best comparison is diagrammatically represented in block 965 Compute DD, block 966 Compute DA, and block 969 Compute A, i. This function is performed during process state 8 in the digital computing means of FIG. 11 and FIG. 12, wherein the selected code is stored in Code Register 4900. The digital computing means 1800 of FIG. 11 and FIG. 12 interfaces with register 200 through lines 201, with timer 300 through lines 103, with sensor 400 through line 104, and with peripheral apparatus 700 through bidirectional lines 701, and derives time and clock pulses from crystal clock 302 in timer 300 through line 303. The objective of data processing by the digital computing means 1800 is to decode the handwritten trace made by lightpen 600 over letterspace 512 and to insert the selected symbol into a display frame for display by display 500 or, upon operator command, to output data to peripheral apparatus 700. To attain this objective, the digital computing means 1800 comprises control circuits, data circuits and auxiliary circuits. Each of these classes of circuits is described in general next. The auxiliary circuits consist of clock gates 2300 and character position register 1900. Clock gates 2300 provides digital computing means 1800 with a repetitious plurality of pulses upon which the control actions take place. Character position register 1900 is a register in which the instantaneous value of timer 300 is retained for use in further data processing. The control circuits comprise process state register 2000, gates 2100, substate counter 2200 and condition register 2400. The control circuits respond to incoming signals called measurements, and in association with the aforementioned counter and registers, respond with outgoing signals called stimuli. The data circuits of digital computing means 1800 are numbered 2600 through 5300. These data circuits perform certain functions, defined hereinafter, in response to stimuli and provide certain measurements, defined hereinafter, to the control circuits. The operation of the data circuits is under control of the control circuits, while the auxiliary circuits function independent of the control circuits. The auxiliary circuits are described in detail next. Clock gates 2300 outputs timing signals on lines 2107 which define the time and the duration of the control stimuli supplied to the data circuits, peripheral 700 and register 200. The inputs to the clock gates 2300 are from crystal clock 302 on line 303 and from XF counter 304 on line 306. In connection with the timing signals, it is considered useful to define the following terms for use throughout the descriptions to follow. A pulse is a signal with a positive going leading edge, a negative going trailing edge, and a duration equal to the duration of a clock signal from crystal clock 302. A gate is a signal with a positive leading edge and a negative trailing edge. The leading edge of the gate precedes the leading edge of the pulse by an amount sufficient for logic gate delays and data set-up times. The trailing edge of the gate trails the trailing edge of the pulse by an amount sufficient to provide for data-hold times. A signal is positive true and does not have a defined time duration or time relationship to a gate or a pulse. Clock 1 (Cl 1) is a gate and a clock 2 (Cl 2) is a pulse during Cl 1. Cl 1 and Cl 2 are disjunct with all other clocks. Clock 3 (Cl 3) is a gate following clock 1 and clock 4 (Cl 4) is a pulse during Cl 3. Cl 3 and Cl 4 are disjunct with all other clocks. Clock 5 (Cl 5) is a pulse following Cl 3. Clock 6 (Cl 6) is a pulse following Cl 5. Cl 6 is followed by Cl 1. Clock gates 2300 generate a continuous repetition of Cl 1 through Cl 6 on lines 2107. In general, Cl 1 and Cl 3 are used to control multiplexers that provide input data, which is subsequently pulsed in by Cl 2 and Cl 4 respectively. Cl 6 is used exclusively to operate the control circuits. During Cl 6, and only during Cl 6, the decisions regarding the next state of the process state register 2000, the substate counter 2200 and the condition register 2400 are made. The second auxiliary circuit is the character position register 1900. Character position register 1900 is an eighteen bit register which is preset with the instantaneous value of counters XF 304, XC 309, YF 324 and YC 319 described previously. The preset occurs on the inverse of the clock that drives the counters, thereby copying the counter content in the character position register one half clock period after the counters of timer 300 are caused to count up. On signal 104 from sensor 400 the preset is stopped, thereby retaining the prior value of the counters in timer 300 for further processing by the digital computing means 1800. Digital computing means 1800 accomplishes its objectives by means of control circuits, data circuits, and auxiliary circuits in nine data processing sequences, called process states. In the following description, each of the nine data processing sequences is described in detail with a description of each data circuit used in the data processing sequence and the control steps required. All data processing sequences are derived from control circuits comprising process state register 2000, substrate counter 2200, condition register 2400, and gates 2100. The control circuits are described in detail next. Process state register 2000 is a four bit register in which ten states are coded. The state of the register is available on lines 2101. The next state of process register 2000 is determined by gates 2100 on Cl 6 and input to process state register 2000 on lines 2001. Each one of nine process states defines a major function of the digital computing means 1800, with one state being the halt state. The process states are: process state 0, the halt state of digital computing means in which no data processing takes place; process state 1, input one page of data from peripheral 700 into page memory 2700; process state 2, output one sentence of data from page memory 2700 to register 200; process state 3, place letterarea code in the character position pointed to by lightpen 600; process state 4, reposition letterarea code from a previous position to a new position representative of the current position of lightpen 600; process state 5, input data representative of the position of lightpen 600; process state 6, interpolate lightpen position data; process state 7, calculate the characteristic values of the handwritten trace; process state 8, compare stored characteristic values with calculated characteristic values and select the code representative of the symbol which offered the best comparison between stored and computed characteristic values; process state 9, output the contents of page memory 2700 to peripheral 700. Substate counter 2200 is a five bit binary up/down counter with preset and reset. Within each process state the substate counter 2200 defines a sequence of substates required for data processing during the process state. The contents of substate counter 2200 are continuously available on lines 2102. The next state of substate counter 2200 is derived from input lines 2201. Condition register 2400 is a five bit latch. Each of the latches in the register can be independently set or reset and are designated CR1, CR2, CR3, CR4 and CR5 respectively. These latches serve to retain a detected condition of the data circuits for use in subsequent data processing. The state of each latch is available on output 2103. Each latch can be set or reset by pulses on lines 2401. Gates 2100 are responsive to external measurements, internal measurements and the states of process register 2000, substate counter 2200, condition register 2400 and clocks 2107. These gates issue stimuli to the data circuits, register 200 and peripheral 700 by means of Cl 1 through Cl 5, and in addition determine the next state of the registers 2000, 2200 and 2400 during Cl 6. The aforementioned external measurements consist of start, generated on line 2105; reset, generated on line 2106; data word available on line 2104; and data word have read on line 2111. The signals on 2104 and 2111 are generated by peripheral 700. Start and reset are operator initiated signals which respectively bring the digital computing means 1800 to process state 1 or 0. A signal on line 104 from sensor 400 brings the system to one of the four process states 3, 4, 5 or 6. A sentence output request on line 315 brings the digital computing means to process state 2. Internal data measurements are inputs to gates 2100 on lines 2113 from the data circuits. The state of a data circuit is identified on one of lines 2113. By way of example, output 3101 of comparator 3100 is generated when the number on lines 3104 is identical to the number on lines 2803. The stimuli to the data circuits are generated on lines 2112. By way of example, one of the lines 2112 is input 3201 to character position counter 3200. A pulse on line 3201 causes the character counter position to count up. The stimuli to peripheral 700 are generated on lines 2108 and 2110. A gate generated on line 2108 is a data word request to peripheral 700. A gate on line 2110 announces the availability of a data word to peripheral 700. The data processing during each of the ten process states is described in detail hereafter. This description comprises a statement of the objective to be attained during the process state under discussion, a detailed description of the data circuits used in each of the process states, and a detailed sequence of control actions required to accomplish the stated objective in the form of a state table, showing the process state (STATE), process substate (SUBSTATE), clock pulse number (CL), and the process operation or action (OPERATION). Stimuli are prefixed with "by", as in "write page memory 2700 by 2702", wherein a signal on line 2702 represents the stimulus. Process state 0 is the halt state of digital computing means 1800. Process state 0 can be entered from any one of the other process states, either upon completion of the data processing or upon activation of the reset. If a reset signal 2106 occurs during Cl 6, the process state register 2000 will be set to 0, the substate state register 2200 will be set to 0, and the latches in the condition register 2400 will be reset. No processing occurs during this state.
______________________________________
STATE SUBSTATE CL OPERATION
______________________________________
0 0 6 Halt. If start signal 2105 present,
set to state 1 substate 0. If sentence
output request 315, set to state 2
substate 0. If lightpen 600 output 104
present and register 2400 CR1 not set,
set to state 3 substate 0. If output
104 present, and CR1 is set and 3101
is not present, set to state 4 sub-
state 0. If output 104 present, and
CR1 is set and 3101 is present, set to
state 5 substate 0.
______________________________________
The objective of data processing during process state 1 is to read one page of data into page memory 2700 from peripheral 700. Process state 1 is entered from process state 0 upon the operator activating start signal 2105, or from process state 9 under conditions to be described. The data circuits used in data processing during process state 1 comprise selector 2500, page memory 2700, selector 2800, detector 3000, and address counter 2900. Selector 2500 is a five input by six bit multiplexer, which outputs one of three inputs or one of two codes on output lines 2701. A gate on line 2501 selects input 2510, representing a six bit alphanumeric code from lines 710, for output on lines 2701. A gate on line 2502 selects a six bit code representing the letterarea. A gate on line 2503 selects a six bit code representing a blank display symbol. A gate on line 2504 selects the contents of code register 4900. A gate on line 2505 selects the contents of character register 2600 for output on lines 2701. Page memory 2700 is a 256 word by eight bit per word static random access memory. For each eight bit word, six bits are used to store a code representing an alpha numeric display symbol. A six bit output on lines 2601 representing the contents of the memory location addressed by the code on lines 2703 is continuously available except during a write cycle. The write cycle is initiated by a pulse on line 2702. During the write cycle the contents of the memory location addressed by lines 2703 is changed to represent the code on lines 2701. Selector 2800 is a two input by eight bit multiplexer. A gate on line 2801 selects input 3001 for output on lines 2703. A gate on line 2802 selects input 2803 for output on lines 2703. Address counter 2900 is an eight bit binary up counter with reset. The contents of the counter are continuously available on lines 3001. A pulse on line 2901 causes the counter to count up. A pulse on line 2902 resets the counter. Detector 3000 decodes the contents of address counter 2900. Whenever the contents of address counter 2900 are modulo 31 zero, a signal is generated on line 3003. Whenever the counter is modulo 255 zero, a signal is generated on line 3002. Character register 2600 is a six bit register used primarily to retain the code of the symbol displaced by the code for the letterarea in page memory 2700. The output of page memory 2700 is available on lines 2601. A pulse on line 2602 sets character register 2600 with the code on input lines 2601. The contents of register 2600 are continuously available on lines 2506.
______________________________________
SUB-
STATE STATE CL OPERATION
______________________________________
1 0 2 Reset address counter 2900 by pulse
on 2902.
1 0 6 Set to state 1 substate 1.
1 1 1 Word request to peripheral 700 by
gate on 2108.
1 1 6 If word on 701 (indicated by signal on
2104) set to state 1 substate 2.
1 2 1 Select address counter 2900 output
3001
by 2801; select 2510 input by 2501.
1 2 2 Write page memory 2700 by 2702.
1 2 4 Up address counter 2900 by 2901.
1 2 6 If address detect 3002 present, set
state to 0 and substate to 0; if
address detect 3002 not present, set
to state 1 substate 1.
______________________________________
The objective of data processing during process state 2 is to output one sentence of data from page memory 2700 to register 200 for display on display 500. Process state 2 is entered from process state 0 upon the occurrence of a sentence output request on lines 315 generated by timer 300. The data circuits used in data processing during process state 2 are address counter 2900, selector 2800, and page memory 2700.
______________________________________
SUB-
STATE STATE CL OPERATION
______________________________________
2 0 1 Select address counter 2900 output by
2801.
2 0 2 Read pulse to register 200 on 2603.
2 0 4 Up address counter 2900 by 2901.
2 0 6 If detector 3000 output 3003 true, set
to state 0 substate 0.
______________________________________
The objective of data processing during process state 3 is to place the letterarea code in a memory location of page memory 2700 in accordance with the position of lightpen 600 on display 500, under the condition that a letterarea was not previously defined. The data circuits used in the processing during process state 3 are character position register 1900, selector 2500, page memory 2700, selector 2800, character position counter 3200, and character register 2600. Character position counter 3200 is an eight bit binary up/down counter with preset. The first five bits of this counter contain the XC number of a particular character position. The last three bits contain the YC number of the character position. A pulse on line 3203 presets the counter with the numbers on lines 3204. Lines 3204 are the subset of lines from character position register 1900 representing XC and YC. A pulse on line 3201 causes the counter to count up. A pulse on line 3202 causes the counter to count down. The eight bits in character position counter 3200 are continuously available on lines 2803. Process state 3 is entered from process state 0 upon a lightpen 600 output from sensor 400 if CR1 is not set, or from process state 4.
______________________________________
SUB-
STATE STATE CL OPERATION
______________________________________
3 0 2 Set character position counter 3200
by 3203.
3 0 6 Set to state 3 substate 1.
3 1 1 Select character position counter 3200
output 2803 by 2802.
3 1 2 Set character register 2600 by 2602.
3 1 3 Select letterarea code by 2502; select
character position output 2803 by 2802.
3 1 4 Write page memory 2700 by 2702.
3 1 6 Set to state 0 substate 0; set condi-
tion register 2400 CR1.
______________________________________
Data processing during process state 4 determines whether lightpen 600 is positioned over the latterend 513, and if this is the case, enters process state 6 or alternatively, repositions the letterarea code to the position of lightpen 600. The data circuits used to accomplish the data processing during process state 4 are character position register 1900, character position counter 3200, selector 2500, character register 2600, page memory 2700, selector 2800, address counter 2900, and comparator 3100. Comparator 3100 compares the number on lines 2303 with the number on lines 3104, and provides an output signal on line 3101 when these numbers are equal. Process state 4 is entered from process state 0 upon a signal on line 104 from sensor 400, under condition that CR1 is set.
______________________________________
SUB-
STATE STATE CL OPERATION
______________________________________
4 0 2 Up character position counter 3200
by 3201.
4 0 6 If comparator 3100 detects 2803 equal
to 3104 by 3101, set to state 6;
if 2803 not equal to 3104, set to
state 4 substate 1.
4 1 2 Down character position counter 3200
by 3202.
4 1 3 Select character position counter 3200
output 2803 by 2802; select character
register 2600 output 2506 by 2505.
4 1 4 Write page memory 2700 by 2702.
4 1 5 Set character position counter 3200
by 3203.
4 1 6 Set to state 3 subtate 1; reset
condition register 2400 CR1.
______________________________________
The objective of data processing during process state 5 is to input lightpen 600 position data into a last-in first-out (LIFO) memory under the condition that lightpen 600 is positioned over letterspace 512. The data circuits used in the data processing during process state 5 are character position register 1900, character position counter 3200, selector 2500, page memory 2700 and selector 2800, selector 3300, comparator 3300, comparator 3400, dot position register 3600, selector 3700, last-in first-out memory for X data 3800, last-in first-out memory for Y data 3900, interpolation coefficient counter for X data 4000, and interpolation coefficient counter for Y data 4100. Selector 3300 is a two input five bit multiplexer. A gate on line 3303 selects lines 3301, representing the value of XF counter 304. A gate on line 3304 selects lines 3302, representing the value of YF counter 314, for output on lines 3404. Magnitude comparator 3400 is a five bit comparator that compares the binary number on lines 3404 with the binary number on lines 3405. A pulse on line 3406 sets one of three outputs 3401, 3402 or 3403. A signal on line 3401 identifies that the binary number on lines 3404 is smaller than the binary number on lines 3405 at the time of pulse 3406. A signal on output 3402 identifies that the binary number on lines 3404 is equal to the binary number on lines 3405 at the time of pulse 3406. A signal on output 3403 will occur if the binary number on lines 3404 is larger than the binary number on lines 3405 at the time of pulse 3406. Dot position register 3600 is a five bit binary up/down counter with preset. A pulse on line 3603 will set the dot position register with the content of lines 3604. A pulse on line 3601 will increment the register by one. A pulse on line 3602 will decrement the register by one. The content of the register are continuously available on lines 3405. Selector 3700 is a three input by five bit multiplexer. A gate on line 3701 will cause output 3604 to reflect the input on lines 3706. A gate on line 3702 causes | ||||||
