GENERAL PURPOSE DATA TERMINAL SYSTEM

Abstract: A general purpose terminal system (10) including microprocessor-controlled line refresh apparatus (22) wherein an internal address table is updated, in real time, to control the line refreshing of the CRT display (18); a pulse width modulated serial keyboard (20) scanning apparatus (22); and smooth scrolling/double-height/double-width apparatus (22).

Description: -1- Description General Purpose Data Terminal System Technical Field The present invention relates generally to general purpose data terminals and, more particularly, to visual display control and data entry apparatus for use in general purpose terminals. In the general purpose data terminal art, a general purpose terminal is used in conjunction with a host computer or microcomputer. The general purpose terminal provides keyboard means for entering data which is then relayed to the computer, and display means for displaying the data before it is relayed to the computer. The general purpose terminal also receives data from the computer and provides visual display means for display of information received from the computer. Some general purpose terminals have limited data manipulation capabilities. The basic elements of the general purpose terminal include a received-character buffer, a transmit-character buffer, a visual display means, typically a cathode ray tube (CRT) for displaying the contents of a received character buffer, a keyboard for entering data into a transmit character buffer, and interface circuitry for communicatively coupling the received character buffer and transmit character buffer to a computer. Communication between the data terminal and the computer is typically performed using standard universal synchronous asynchronous receiver transmitter (USART) links. hen a USART link is used, communication between the data terminal and the computer is in serial data format. O PI Prior art general purpose terminals are typically limited to the transmit/receive functions described above. The art has been generally directed towards designing terminals strictly for transmission or reception of data from a host computer. As such, they are not designed to function directly with peripheral devices, such as floppy disk controllers. Therefore, prior art general purpose terminals typically access peripherals through the host computer. As such, valuable computer time must be used in order to access the peripheral. Additionally, software must be generated to permit the host computer to interface between the peripheral and the general purpose terminal. This results in higher cost and complexity. Other areas of design emphasis in the general purpose terminal art have included visual display apparatus for the terminal. In some terminals, the visual display is controlled largely by a CRT controller. Data entered displayed on the CRT is stored in a raster memory, in sequential fashion. The raster memory then contains all information being currently displayed on the display screen, and is addressed according to the location of the first bit of screen data. The CRT controller periodically reads out, or scans, the raster memory in order to refresh the visual display. Typically, this line refreshing is performed every 1/30 to 1/60 of a second. Line refresh¬ ing is required at these rates so that the display image appears constant and non-flickering to the human eye. Data output from the raster memory is supplied to character generating means and video generating means which convert the binary data representing a particular character into a two-dimensional dot array (a number of rows high and a number of columns wide) for display on the CRT screen. Typically, up to so as to appear as a solid image. A character line is comprised of a number of scan lines. Data from the character generating means is generated scan-line by scan-line so that for a character line, the character generator will first send out the top scan line of the character line, then the next scan line of the character line, and so on until all scan lines which make up the character line have been sent. Typically, the CRT controller also supplies a row count signal which tells the character generator which scan line of the current character line is being processed. A character counter, starting at the location of the first bit of screen data contained in the raster memory, sequentially increments the address so that, as the scanning proceeds from left to right, the address of the character which is to occupy the particular character line position is sent to the raster memory. Data generated by the raster memory in response to this address is then sent to the character generator for generation of the data pattern, corresponding to the current scan line, for the particular character. The character counter is sequentially incremented in this manner until all of the screen data in the raster memory has been read out. In such a configuration, line refreshing is performed on a full screen basis. That is, when the screen display is sought to be changed, the whole screen data section in the raster memory is rewritten. This results in added delay in modification of the display, as well as in increased difficulty in imple¬ menting any additional display features such as smooth scrolling, and double-height, and double-width charac¬ ters. Control oif the.raster memory by the CRT controller as above lacks flexibility. _OMPI _ With the advent of the LSI microprocessor, more of the control function has been shifted from hardwired logic control to microprocessor control. Systems using microprocessors require external read-only memory (ROM), external random access memory (RAM), working memory, and associated interface circuitry. Line refreshing in the typical microprocessing system is accomplished, when character attributes such as smooth scrolling and double-height and double-width, are desired, through the interaction of the central processing unit (CPU) of the microprocessor with the CRT controller, a translate RAM, a line counter, a screen memory RAM, and an associated multiplexer. In a non-smooth scrolling mode, the CRT controller provides the translate RAM with the starting address of the screen data that is stored in the screen memory RAM. The translate RAM, in response to CPU commands relays the character line address desired to be scanned to a line counter. The line counter sequentially increments the address to interrogate the screen memory RAM and to. cause the desired data to be relayed to the CRT for display. When the smooth scrolling feature is desired, the CPU supplies the translate RAM with the address of the character line at which the display is to start. The translate RAM then performs the address translation operations required for scrolling the addressed scan line data. A multiplexer means is used to select between address information from the CPU and address information from the CRT controller. The selected address informa¬ tion is then routed to the translate RAM. The address information from the CRT controller is used when a normal display mode is desired. Additionally, when address data is multiplexed into the translate RAM, data emerging from the translate RAM and inserted into O ΪPI -5- the line counter must be multiplexed with data coming from the CPU. The above configuration requires the use of numerous additional hardware, as well as increases the 5.. complexity of control of the line refresh feature. In the past, the ease with which a double height or double width character display feature could be implemented depended upon the type of line refresh technique used. When the CRT controller controlled the .screen memory RAM directly by supplying the starting •address of the screen information in the RAM, and . then consecutively reading out the data, double height. . and double width features could not easily be implemented. • For the double height feature, the contents of the screen memory RAM were required to be read out into another memory means, operated upon to modify the data, and then read back into the screen memory RAM for display by the CRT controller. When the CPU/translate RAM/CRT controller arrange- ment was used, (the translate RAM contained the line attribute information) the double height feature was therefore implemented according to the contents of the translate RAM. As such, line attribute information within the translate RAM was required to be modified by the CPU, before a particular line of data could be displayed in modified attribute form. In the past information transfer between keyboard and main terminal has often been performed on a parallel data basis. For example, information was often communi- cated between keyboard and the main terminal body using parallel bit transfer. A four bit parallel address would be sent out to address a column of the keyboard, and four bit parallel data would be received from the keyboard in response. Three bits of this received data would represent the rows of the keyboard array, in which a key had been pushed. The fourth bit represented the logical ORing of the three bit row data in order to derive an interrupt signal to the termial to signal that a key was ready for processing. In this configura¬ tion, serialization of the communication process was difficult. Serial keyboard scanning in the typical general purpose terminal normally requires that substantial circuitry be resident within the keyboard in order to decode address data and interpret and encode the keyboard data for relay to the main terminal. As a result, numerous integrated circuits and associated hardware were considered a necessary part of the keyboard circuitry. The cost for such additional circuitry was high. At the very minimum, communication between the keyboard and the main terminal was performed using an output line for sending data in serial form, a clock line for receiving synchronizing pulses from the main terminal, and a control line for sending interrupt signals to the main terminal and for receiving control signals from the main terminal. Disclosure of Invention The foregoing and other problems of prior art general purpose terminals are overcome by the present invention of a general purpose terminal system, includ- ing serial keyboard scanning apparatus, line refresh apparatus and line attribute apparatus for use in general purpose terminals. The line refresh apparatus includes addressable screen memory means for storing display data, a temporary storage means for accepting and storing address informa¬ tion corresponding to the display data line stored in the screen memory means, incrementing means coupled to the memory means and supplied with the display data line address from the temporary storage means, and a microprocessor means for supplying the display data OMPI line address to the temporary storage means on a character-line-by-character-line basis, in real time, so that the line refresh data supplied to the character generator may be varied by real time manipulation of the line address data by the microprocessor means. The smooth scroll apparatus includes a microproces¬ sor to control the character attribute data supplied by a counter to the character generator, so that the character generator data output for a particular character line may be selected to begin at any point within the character line structure. The double-height/double-width apparatus comprises, for the double-height feature, an adder means responsive to the character attribute data from the microprocessor and to a double-height control signal, to double the number of times a particular scan line for each character line is scanned across the display screen. The double- width apparatus comprises means for causing the clock rate, at which a scan line is displayed on the display screen, to be doubled. The apparatus for serially scanning the keyboard comprises means for generating a pulse width modulated serial address, corresponding to a particular key position in the keyboard array. The apparatus generates a similar address for each key within the keyboard. When any key addressed by the pulsewidth modulated serial address is depressed, a non-zero voltage is supplied by the keyboard to the microprocessor. In order to scan the whole keyboard, the apparatus sequen- tially sends the pulse width modulated serial address for each of the keys within the keyboard, and determines whether a non-zero voltage level (in response to each of the addresses) is returned by the keyboard. In the line refresh apparatus, the microprocessor maintains a table of line addresses for the visual display refreshing, and supplies the line address for -8- the next scan, in real time. This increases flexibility in the display of data and does not require that the location of data stored in the screen memory RAM be changed. Because the data is addressable line by line, the modification of data within a particular line may be performed independently of data in any other line, and independently of the address of data within any other line. Additionally, fewer hardware are required to implement the line refresh apparatus of the present invention. In the past, implementation of line refreshing in the above manner has been avoided due to the complexity involved in having the microprocessor maintain such a line address table, and to the requirement that the microprocessor supply the real time scan line data to the screen memory. To do so would require that the microprocessor dedicate a significant proportion of time to the line refresh function. As such, the implementation of other features would suffer. In the present invention, the timing problem has been overcome through the judicious selection and arrangement of functional components, as well as novel manipulation of character line information by the microprocessor. In addition, the configuration of the line refresh apparatus in the present invention provides for simpler implementation of smooth scroll, double-height and double-width character attributes, as well as more flexibility in data handling in the transmit, receive and peripheral interaction functions described previously. It is therefore an object of the present invention to provide a line refresh apparatus for use in a general purpose terminal system for refreshing a CRT display screen, on a line-by-line basis, by real time address manipulation. It is a further object of the present invention to provide smooth scrolling apparatus for use in a general _ 9 _ purpose terminal system wherein a microprocessor controls the scan line address supplied to a counter, which then designates the beginning scan line output by a character generator for a given character line 5 scan. It is a still further object of the present invention to provide double-height/double-width apparatus for use in a general purpose data terminal system for increasing the height of the displayed character line by 10 use of an adder means which causes the character generator to scan a particular scan line twice; and to provide double-width character apparatus by causing the clock rate supplied to a scan line counter and to a video generator, to double in period. 15 It is another object of the present invention to provide serial scanning apparatus for scanning the keyboard of a general purpose data terminal system, wherein a pulse width modulated serial address is sent to the keyboard and a voltage level is received in 20 response. It is a still further object of the present invention to provide a general purpose data system which is low in cost without sacrificing the flexibility to interaction directly with other peripherals, such as 25 floppy disk controllers. The foregoing and other objects, features and advantages of the invention will be more readily understood upon consideration of the following detailed description of certain preferred embodiment of the 30 invention, taken in conjunction with the accompanying drawings. Brief Description of Drawings Figure 1 is a block diagram of the functional relationship between a general purpose data terminal system and a computer, a printer, and other peripherals, such as a floppy disk controller. Figure 2 is a simplified functional block diagram of.the electronics of the present invention. Figure 3 is a simplified block diagram of the line refresh apparatus, the smooth scrolling apparatus, and the double-height/double-width apparatus. Figure 4 is a functional block illustration of the software structure of the microprocessor, and of the real time and background programs. Figure 6 is a flow diagram of the smooth scrolling microprocessor software. Figure 7 is an illustration of the display data line address table maintained by the microprocessor as a part of the line-by-line refresh apparatus. Figure 8 is a simplified block diagram of the decoding circuitry for the keyboard scanning apparatus. Figure 9 is a simplified block diagram of the keyboard scanning address encoder. Figure 10 is a flow diagram of the keyboard scanning apparatus microprocessor software. Figure 11 is a simplified timing diagram for the demodulator in the keyboard scanning apparatus. Best Mode for Carrying Out the Invention Referring to Figure 1 , the functional relationship of the general purpose terminal system 10 is shown with respect to a computer 12, a printer 14, and an additional peripheral (for example, a floppy disk controller, shown in dotted lines) 16. The computer 12, receives data from the general purpose terminal system and transmits data to the general purpose terminal system 10. The printer 14, receives data and control signal from the general purpose terminal system and prints out the data according to the control signals. Additional OM?I VvlPO -1 1 - peripherals such as a floppy disk controller 16 can be accommodated. Turning to the elements of the general purpose terminal, the elements include a visual display 18, a 5 keyboard 20, and terminal electronics 22. The visual display 18 serves as a means for the user to monitor the operation of the terminal. The keyboard 20 is a means for user transmission of data into the terminal 10, and thence to the computer 12, the printer 14, 10 and/or the other peripherals 16. In addition to providing interfaces for communica¬ tion with the computer 12, the printer 14, and other peripheral 16, the terminal electronics 22 includes controllers, memory, address buses, data buses, and 15 control buses, as well as the various circuitry necessary to implement the line refresh, double-height/double- width, smooth scrolling, and serial keyboard scanning features of the present invention. Referring more particularly to Figure 2, these 20 various elements are shown in greater detail. In the present invention, the controller means for the general purpose terminal include a microprocessor 24, and a CRT controller 26. Memory means include a read-only memory (ROM) 28 for storage of system programming, a random 25 access memory (RAM) 30 for data, address, and miscella¬ neous information storage, and a scratch RAM 32 for use by the microprocessor as a working memory. Universal synchronous asynchronous receive transmit (USART) device 34 is provided for interface between a 30 computer 12 and a printer 14. In addition, external buffering 36 is provided for connection to other peripherals, such as a floppy disk controller 16. The address bus 38 provides address information between the microprocessor 24 and the ROM 28, the RAM 30, the 35 scratch RAM 32, the external buffering 36, and the CRT controller 26. The address information provided to the -1 2- CRT controller 26 is supplied in connection with the ' initial programming of the controller 26 when the general purpose terminal is first turned on. In addition, the address bus 38 provides address informa- 5 tion to a screen memory RAM 40. A data bus 44 provides data information to and from the microprocessor 24, the keyboard interface 42, the ROM 28, the RAM 30, the scratch RAM 32, the USART 34, the external buffering 36, and the CRT controller 10 26. The data supplied to the CRT controller 26 is provided in connection with the initial programming of the controller, when the general purpose terminal system is first turned on. In addition, the data bus 44, provides data information to the screen memory RAM 15 40, as well as the line refresh apparatus 46, the double-height/double-width apparatus 48, and the smooth scrolling apparatus 50. The control line bus 52 provides control data from the microprocessor 24 to a control decoding circuit 54. 20 The control decoding circuit decodes the control data and supplies the various terminal elements with control signals as directed by the microprocessor 24. Among those control signals are included the select signals for the ROM 28, the RAM 30 and the scratch RAM 32. The 25 control decoding circuit 54 also provides control signals to the USART 34 to select the USART write or read modes, and to select between data transmission to the computer 12, or the printer 14 through printer select signal 56. The decoder 54 also provides control 30 signals for selection for the various line attribute functions, for example: 1) the line select signal 58 directs the line refresh apparatus to load in the address of the next line to be scanned, the address being present on " the data bus 44; 2) the line attributes 35 select signal 60 directs the smooth scroll apparatus and the double-height/double-width apparatus to load in - ~ l E l ~ OMPI - 1 3- the line attribute data present on the data bus 44; and 3) the keyboard write select signal 62 enables the keyboard scanning apparatus for the serial scanning of the keyboard. 5 Also included in the terminal electronics 22 are a character generator 64, a video generator 66, and various miscellaneous circuitry. The microprocessor 24 receives interrupt signals from the USART 34, the character line counter 68 (part 10 of the smooth scrolling circuitry 50) and the CRT controller circuitry 26. These interrupt signals inform the microprocessor 24 that real time processing of data is required. The interrupt signals involving the USART 34 are the read-interrupt signal 70 and the 15 write-interrupt signal 72. When the microprocessor 24 receives a read-interrupt signal 70, the microprocessor stops the program that it is currently processing, receives data from the USART 34, and writes the data in a temporary buffer. When this write operation is 20 completed, the microprocessor resumes processing of the current program at the point where it left off. When the microprocessor 24 has completed processing of sufficient characters for transmission to the computer 12, the printer 14, or other peripheral 16, 25 the microprocessor 24 interrupts processing of its current program and transmits data into a temporary buffer for transmission by the USART 34. When the microprocessor 24 receives a line interrupt signal 74 from the smooth-scrolling counter 66, or a 30 line interrupt signal 76 from the CRT controller, the microprocessor stops its current program processing to load in the address of the display data line which is to be scanned next by the line refresh apparatus. After the address is loaded into the line refresh 35 apparatus, the microprocessor 24 resumes processing of its current program at the point where it left off. OMPI The CRT controller 26 provides synchronozation signals for the video generator 66 to synchronize the video display 18. A clock generating circuit 78 provides the timing 5 .reference for the system, and has a basic reference 'frequency denoted by the symbol 0. Figure 4 illustrates the priorities assigned to .the various microprocessor tasks. Unless an interrupt is, received from a real time program, the microprocessor 10 will process the background program. The real time programs are kept short to increase flexibility. The line refresh function involved a real time interrupt, while the keyboard scan is treated as a background function. 15 In the above description, the general concept and inter-relationship of the elements described are well- known in the art; it is the implementation of the various elements and the combination of the elements which comprises this new and novel general purpose data 20 terminal system. • Line by Line Real Time Refresh Referring now more particularly to Figures 2 and 3, the line-by-line refresh circuitry will be described. The apparatus comprises a microprocessor 24, latches 80 25 and 82, a screen memory RAM 40, and a scan counter 84, along with connections to the data bus 44, the address bus 38, and the control line decoder 54. The control lines from the control line decoder 54 include scan line select 58 (which connects to the 30 clock input of latch 80), character select signal 86 which connects to circuitry within the screen memory RAM 40, and attribute select signal 88 which also connects to circuitry within the screen memory RAM 40. Screen memory RAM 40 comprises an attribute buffer 90, a character buffer 92, an address multiplexer 94, and a buffer access multiplexer 96. The data buss 44 connects to the input of latch 80. The outputs of latch 80 connect to the inputs of latch 82, and the outputs of latch 82 are supplied to the scan line counter 84. The scan line counter 84 is comprised of 3 individual counters. Two of these counters are presettable binary counters 98 and 100. The third counter is a four bit ripple counter 102. Counter 100 is preset to the binary number corresponding to the three most significant bits in latch 82, i.e. the three most significant bits of the address. Counter 98 is preset to the binary number representing the four least significant bits of the address which is present in latch 82. Ripple counter 102 is supplied with a clock #, or 0/2, (depending upon the double- width mode) to produce outputs corresponding to the input frequency divided by two, divided by four, the frequency divided by eight, and divided by sixteen. The counter 102 output corresponding to the input clock frequency divided by 16 is routed to the clock input of counter 98. Likewise, the counter 98 output corresponding to divide by 16 is applied to the clock input of counter 100. The outputs from counter 100, counter 98, and counter 102 are applied in parallel fashion to screen memory RAM 40. As the clock supplied to counter 102 is incremented, the address represented by the outputs of counter 100, 98, and 102 is incremen- ted by 1 bit. As such, the scan counter 84 causes the address it initially received from the latch 82 to be incremented to provide the address for each character in the particular character line to be scanned in a sequential fashion. The output of scan counter 84 is received in the screen memory RAM 40 by address multiplexer 94. Address multiplexer 94 also receives address data from the address bus 38. The output of address multiplexer 94 is switched between address bus 38 and character scan line address at a rate of 0/8 . The output of the address multiplexer 94 is applied to both the attribute buffer 90 and the character buffer 92. In response to this address information, the attribute buffer 90 supplies attribute data corresponding to the character line to the buffer access multiplexer 96. Likewise, in response to the address supplied by the address multiplexer 94, the character buffer supplies character data to the buffer access multiplexer 96. The character select line 86 and the attribute select line 88 from the control signal decode circuitry 54 apply control signals to the buffer access multiplexer 96 so that the attribute data and character data received from the attribute buffer 90 and the character buffer 92 are properly synchronized with the addresses being supplied by the address multiplexer 94. The buffer access multiplexer 96 also receives data from and transmits data through the data bus 44. Exchange of data between the data bus 44 and the buffer access multiplexer 96 is conducted during the write cycle of the screen memory RAM operation. The character and attribute data output by the buffer access multiplexer 96, in response to the character select signal 86 and attribute select signal 88, are supplied to a latch 104. The output of latch 104, corresponding to the character data, is routed to a character generator 64. The output of latch 104 corresponding to line attribute data is routed to a video generator 66. The character generator 64 generates, for each set of character data applied to it by latch 104, a number of strings of data, each string corresponds to one row of a twelve-row block, which, taken together forms. the visual image of the desired character. The choice of a twelve-row block dictates that there be a twelve scan line character line. Parallel to serial shift register 110 converts the character generator data from parallel to serial form for input into the video generator 66. The video generator 66 receives the serial data from register 110, the line attribute data from latch 104, and the synchronizing signal from CRT controller 26 to generate composite video, horizontal drive, and line drive signals for application to the CRT 18. Referring now to Figure 6, the control by the microprocessor 24 of the line refresh apparatus will be discussed. When the microprocessor 24 receives a character line interrupt from either the CRT controller 26, or from the double height character apparatus, on line 74, it stops processing of its current program, step 114, and begins processing by the line refresh function. The microprocessor 24 first checks to see whether or not the visual display 18 is in a vertical retrace mode, step 116. If it is not, the microprocessor determines whether a smooth scroll function is being implemented, step 118. If no smooth scroll function is being implemented, the microprocessor checks to see whether or not the visual display is scanning its 25th character line, step 120. If the 25th line is being scanned, the microprocessor determines whether there is a 26th line required for the particular refresh cycle, step 122. This condition arises when a scrolling operation has been ordered and a 26th line is required to be scanned. If the 26th line flag indicates such a condition, the microprocessor proceeds to increment the scan pointer to the next line in the character line table, step 124, see Figure 7. The microprocessor will also increment the pointer to the next address in the character line table when, in step 120, the 25th line is not being scanned. If the 26th character line has been scanned the microprocessor resets the line pointer to the first line of the character line table, step 123. Figure 7 is an illustration of the character line table maintained by the microprocessor 24. The leftmost column corresponds to the order in which the character lines are to be scanned on the visual display 18. The address column corresponds to the starting address of the particular character line which will be scanned for the particular position. The rightmost column, line attributes, contains line attribute data for the corresponding character line, i.e., double-height/double- width flags and smooth scroll offset. In manipulating the order of the character line table, the microprocessor 24 shifts the address and line attribute data. For example, if the line in the No. 1 character line position was desired to be scanned instead in the 25th character line position, the microprocessor would shift the address presently in the character line 1 position, to the character line 25 position. The remaining addresses would be shifted upward one character line position so that the address which was previously in the second character line position would end up in the first character line position, etc. In this manner, the microprocessor could alter the image displayed on the visual display 18 by changing the order of the addresses in the character line table, as opposed to changing the order of the data in the character buffer 92. Because the character line table is maintained in this manner, the display can be changed with little difficulty on every refresh cycle. In step 126, the microprocessor sets the keyboard scan flag in order to initiate the scanning of the keyboard. In step 128, the microprocessor returns to OMPI IrO the point in the program at which it was operating when the line interrupt first arose. This pointer, which determines the address to be loaded into the line refresh latch 80 of the line refresh apparatus, is shifted along the character line table. The visual display screen is refreshed sequen¬ tially line by line. Because the line interrupt must be processed in real time, the microprocessor line interrupt cycle is kept short. The maintenance by the microprocessor of the character line table and the resulting reduction in external hardware required for line refreshing, as just described, is one advantage over prior line refresh apparatus. Increased flexibil¬ ity of operation is also gained. The software controlling the microprocessor during this period is attached to this application as a Table. SMOOTH SCROLLING Referring to Figures 2 and 3 the smooth scrolling apparatus will now be described. The smooth-scrolling apparatus of the present invention permits flexible control by the microprocessor over the rate at which the visual display image is shifted across the screen as well as the manner in which the shifting is accomplished. In general, smooth scrolling involves the modifica¬ tion of the character line at the portion of the display screen where the display image is sought to be shifted. For example, when a new character line is sought to be inserted in the middle of a display, the user normally shifts the cursor to the position desired, and activates an insert command. In response to this insert command, the display is shifted downward, for example, with the portion of the display which is shifted, taking on the appearance of abruptly moving OMPI one character line downward. Internally, the micropro¬ cessor, in the case of the present invention, inserts in the character line table discussed above, a 26th line corresponding to a blank display. The addresses of the character which follow are then shifted in position, one character line downward. When smooth scrolling is implemented, the shifting is performed in a gradual fashion so that the visual display appears to shift downward one scan line at a time instead of a whole character line at a time. Referring now to Figures 2 and 3, the smooth scrolling apparatus will be described. The smooth scrolling apparatus comprises a first latch 130, a second latch 138, a counter 68, and a controller, in the present invention the controller is micropro¬ cessor 24. The inputs of latch 130 are connected to the data bus 44, by which the microprocessor 24 supplies character attribute data, part of which is smooth scrolling data. This smooth scrolling data is an offset which is used to preset counter 68. In a non-smooth scroll mode, counter 68 normally starts counting from one at the beginning of each character line. When the output of counter 68 reaches the quantity 12, gates 69 and 71 output an interrupt signal to the microprocessor on line 74, as well as a clock signal to latch 138. The interrupt signal to microprocessor 24 informs microprocessor that the current character line scan has come to an end and that the address of the next line to be scanned is required. The pulse applied to the clock input of latch 138 causes latch 138 to shift-in the next data set, supplied by latch 130. When the smooth scrolling function is implemented, counter 68 is preset to the smooth scroll offset value. The data supplied by microprocessor 24 to latch 130 is a four-bit binary number. The quantity of which represents the number to which the counter 68 is preset. In this manner, counter 68 will cycle through fewer than 12 counts before the character line interrupt is sent to the microprocessor 24. Therefore, the character line which is subjected to this smooth scrolling, will have less than the full 12 scan lines displayed. The output of counter 68 is supplied, through double-height multiplexer 136, to the character generator 64. The sequencing of the count from counter 68 dictates the particular scan line, which comprises the character line, which is to be output by the character generator for the particular count. Therefore, when the counter 68 counts from one through twelve, the character generator, in response to a one count outputs the top scan line of the character line. On the two count from counter 68, the character generator outputs the second scan line of the character line, and so on. In order to produce a smooth scrolling effect, the microprocessor 24 causes the counter 68, on subsequent scans, to count from a preset value which is incremented or decremented with each additional scan. When the present value is incremented, fewer scan lines are displayed with each additional refresh cycle. On the other hand, if the preset value to the counter 68 is decremented, then an increasing number of scan lines will be displayed with each successive refresh cycle. In order to scroll the visual image downward, the microprocessor inserts a 26th line at the point at which the display is sought to be divided. For the first refresh scan, the smooth scroll offset assigned to the 26th line will be 11. Therefore, one blank scan line will be inserted on the first refresh cycle. At the same time, at the bottom of the character line table, the smooth scroll offset corresponding to the bottom, or 25th line, will be set to one. Therefore, only 11 scan lines of the 25th character line will be displayed before the microprocessor receives an interrupt to.continue to the next character line. On the next refresh cycle, the offset in the 26th line will be decreased to 10, and the offset in the 25th line will be increased to 2, and so on. In this manner, the 26th line offset will be incrementally decreased to zero, at which time a full blank line will have been inserted at the desired position, and the visual display will have appeared to have shifted smoothly downward. In fact, a 26th line had been inserted in the character line table, with the position of the addresses of the other character lines shifted downward, and with the offset assigned to the 26th and the 25th line constituting the quantities which were changed during the refresh cycle over which the display was shifted. Referring- to Figure 6, a flow chart of the micro- processor operations during the smooth scrolling function is shown. At step 118, the microprocessor determines whether or not smooth scrolling is to be implemented by determining whether the smooth scroll offset corresponding to the current character line is non-zero In step 200, the microprocessor determines whether the offset should be decremented for a downward scroll, or incremented for an upward scroll. If a downward scroll is called for, the microprocessor, in -step 202, decrements the offset. In step 204, the microprocessor determines whether or not the offset has been decremented to zero, in which case the smooth scrolling would be at an end. If the offset was non-zero, the microprocessor would proceed to step 206 in which it would set the 26th line flag to indicate that a 26th line was still needed. From step 206, the microprocessor would proceed to step 120 and the rest of the scan line interrupt program. If the offset in step 204 was determined to equal zero, the microprocessor in step 208 would mark smooth scroll end in the appropriate status position and continue to step 122 and the remainder of the scan line interrupt program. If in step 200 the microprocessor determines that a scrollup operation was to be performed, the micropro- cessor would in step 210 determine whether or not the offset had already been incremented to 11 , indicating the last line of the scan. If not, the microprocessor would increment the offset in step 212, then set the 26th line flag in step 214, and then proceed to step 120 in the rest of the scan line interrupt program. In the above manner, the microprocessor would each scan line interrupt increments or decrements the smooth scroll offset so as to cause on subsequent scans, the appropriate character lines to be shifted up in a smooth scrolling motion. The software controlling the microprocessor during this period is attached to this application as a table. DOUBLE-HEIGHT/DOUBLE-WIDTH The double-height and double-width features of the present invention are implemented in the following manner. Referring to Figure 3, latch 130 receives line attribute data from data bus 44 according to timing supplied by line attribute load signal 60. One bit of the received line attribute data determines whether or not a normal clock 0 or a clock having half the frequency, 0/2 , will be supplied to the scan line counter 84 by double-width multiplexer 132. Double^ width multiplexer 132 also supplies the selected clock to the video generator 108 to supply the dot clock timing. In such a configuration, the period over which the row data for a particular character is presented to the video generator, is doubled, thereby doubling the width of the character display. Two other bits of data stored in the latch 130 control the double-height line attribute apparatus. The double-height line attribute apparatus is comprised of an adder 134 which is supplied with a double-height control signal from the latch 138. Latch 138 functions as a holding device so that latch 130 may be reset to receive line attribute data on the next line interrupt cycle from the microprocessor 24. Adder 134 is also responsive to the count signals emerging from the counter 68 (discussed previously) . The output of the adder 134 is supplied to the B inputs of the double-height multiplexer 136. The A inputs to the double-height multiplexer are supplied from the smooth-scroll counter 68. The second double-height control signal from the latch 138 controls selection of the double-height multiplexer 136 inputs. The control signal supplied to the B inputs of adder 134 by latch 138 is connected so that when the line is at a high value, the adder 134 adds the quantity 6 to the quantity coming in at the A inputs. When the control line from latch 138 is zero, the adder adds zero to the A input quantity. The other input lines, originating from the counter 68, are tied to the divide by 16, divide by 8, and divide by 4 outputs of the counter. These lines are tied to the four's place input, two's place input, and one's place input of the adder, respectively. When connected in this manner, the number presented to the adder 134 from the scan-line counter 140 is incre¬ mented from zero through seven, but at a rate which is one-half that at which the counter 68 is being incremen- ted. For the first six scan lines of the double height character display, the control line from latch 138 into the B inputs of the adder 134 are kept low. The output of the adder 134 thus sequences from zero to six at one-half the rate of the counter 68. Recall that the counter 68 counts from ' zero to twelve, after which it is reset to count from zero again. When this reset occurs, the latch '138 will be clocked to load in the next line attribute data from latch 130. In this new data set, the control line from latch 138 to the B inputs of adder 134 will be high, thereby adding 6 to the count coming from the scan line counter 140. In this way, the bottom half of the double height scan is generated. During this whole period, the control line from latch 138 to the double-height multiplexer 136 remains high so that the count coming from the adder 134 is routed to the character generator 64. KEYBOARD SCANNING Referring to Figures 8 and 9, the serial scanning of the keyboard 20 will now be discussed. Figure 8 is . a simplified block diagram of the circuitry contained in the keyboard itself. Figure 9 is a simplified diagram of the encoding circuitry contained on the main board in the terminal housing. The encoding circuitry for the keyboard scan includes a parallel to serial shift register 142 which is supplied with parallel data from the data bus 44. The parallel shift register 142 is loaded with data in accordance with the key load signal 62, supplied from the control signal decode circuitry 54. The address data is in 8 bit parallel form. After it is loaded into the register 142, it is clocked out of the register in serial form by a clock having a frequency of 0/4. . . . .Logic circuitry combine the inverted and non-inverted output levels of register 142 to produce a pulse width modulated serial data stream corresponding to the OMPI W "rImPO y - desired key address. The non-inverted output of register 142 is connected to the input of an AND gate 144. A second input to AND gate 144 is supplied with a clock frequency of 0/4 and a third input to AND gate 144 is supplied with a clock frequency of 0/2. The inverted output of register 142 is connected to an input of AND gate 146 while the second input to AND gate 146 is supplied with a clock frequency of 0/4. The outputs of AND gate 144 and AND gate 146 are connected together and thence supplied to the keyboard 20 on line 148. This combination produces a positive- going pulse, having a pulse width of 1/0 when the output from register 142 is a one. When the output from register 142 is a zero, the signal supplied to the keyboard will be a positive pulse having a pulse width of 2/0. The data is shifted out of register 142 on the positive-going edge of the signal being supplied to the keyboard. This is accomplished by connecting the clock input of register 142, to the output line 148 supplied to the keyboard. Referring now to Figure 8, the decoding circuitry will be described. Monostable multivibrator 150 receives the pulsewidth modulated serial address input from the main terminal board on line 148, and, by edge triggering, derives the 0/4 period of the pulse stream. This 0/4 clock is supplied by the multivibrator to output/interrogate control circuitry 152 and a serial-to- parallel shift register 154. Serial-to-parallel shift register 154 is also supplied with the pulsewidth modulated serial address stream from line 148. Shift register 154 clocks-in the serial data according to the clock supplied by monostable 150. Since the clock input of register 154 is positive-going edge-triggered, data at the serial input to register 154 will be clocked in only when a positive-going edge is presented by the clock from monostable 150. The clock is there¬ fore supplied from the inverting output of monostable 150. In addition, the pulsewidth of the circuit is adjusted so that it is greater than /0, but less than 2/0. This results in the timing diagram shown in Figure 12. The first line of the diagram corresponds to the data state; i.e., a one or a zero. The second line of the figure corresponds to the pulse width modulated serial address input. The third line corres- ponds to the clock derived by the monostable multivibra¬ tor 150. The fourth line corresponds to the data actually clocked-in by register 154. From the diagram, it can be seen that the rising edge of the monostable clock signal is delayed long enough so that a pulsewidth that corresponds to a zero input at the register 154 will have ended by the time the rising edge of the monostable clock occurs. On the other hand, when the pulsewidth corresponding to a "ones" state is present at the input to register 154, the rising edge of the monostable clock will occur before the "ones" state pulsewidth ends. Returning now to Figure 8, output/interrogate control circuit 152, counts the clock pulses supplied by monostable 150 and outputs an interrogate signal to the decoder circuitry 156. Decoder circuitry 156 comprises an N to one decoder, which converts the parallel data supplied to it by shift register 154 into an output signal on a selected line. Also included in the decoder circuit 156 is an enable circuit respon- sive to the interrogate signal supplied by output/inter¬ rogate control circuitry 152 so that no decoder 156 output can be applied to the keyboard array 158 until an interrogate signal has been given. The parallel data supplied to decoder 156 from shift register 154 contains 4 bits of information. The remaining data supplied by the shift register 154 is applied to data selector 160 and to a hysteresis check feature 162. Data selector 156 decodes the row address data supplied by shift register 154 to select the specified row of the keyboard array 158 for connection to the output latch 164. The output latch 164 is directed to load the value of the signal originating from data selector 160 by output enable signal 166, supplied by output interrogate control circuit 152. The keyboard array 158 is a N row by N column array of inductive switches. That is, a key-down condition is indicated by a change in the inductance of the particular junction of row and column conductors corresponding to the particular key pushed. The change in inductance is sensed in the hysteresis check circuitry 162. In that circuit, the output from each row of the keyboard array 158 is connected to a corresponding transformer so that a change in inductance along the row results in a change in inductance in the particular transformer. • This change in induction is indicated at the input to the data selector 156 by a non-zero voltage. In order to double check that a key was actually pushed, the hysteresis check input is supplied on line 168. This line is tied to one end of each transformer in the hysteresis check circuitry 162. By raising the hysteresis check line 168 to a positive voltage level, the resulting output level from each transformer to the data selector will be increased. Therefore, error causing conditions such as switch-bounce are overcome. The output of latch 164 is supplied to the microprocessor on a single line 184. Turning now to Figure 10, the operations performed by the microprocessor 24 in connection with the serial keyboard scanning function will be described. When the terminal is initially turned on, the microprocessor enters the keyboard scan cycle at step 170 to initialize conditions for the remainder of the cycle. At this point, the microprocessor first retrieves the next (in this case the first) key address to be scanned, step 172, from the RAM 30. The microprocessor 24 maintains a key status table within the RAM 30 in connection with the keyboard scanning function. In step 174, the microprocessor 24 examines the key data table, at the address obtained in step 172, to determine whether or not the particular key had been pushed during the prior cycle. In the initialization cycle, the key will not have been pushed previously. Therefore, the microprocessor will proceed on to step 176 wherein the microprocessor sends the key address to the encoding circuitry. Figure 9, for encoding and transmission to the keyboard 20. Had the particular key been pressed on the previous cycle, the microprocessor would have proceeded to step 178 to implement the hysteresis check for the particular key address. After step 178, the microprocessor proceeds to step 176 to send the key address for encoding and transmission to the keyboard, and thence to the start of the keyboard scan operation, step 180. At this point, microprocessor 24 proceeds to step 182 in which the microprocessor examines the data supplied by the keyboard to determine whether a non-zero value is present. If a zero value is present, the microprocessor proceeds to step 186 to determine from the key data table in the RAM 30, whether or not on the prior cycle the particular key had been pushed. If the key had been pushed, the microprocessor 24, in step 188, would change the information in the key data table to indicate that the key was presently in a non-pushed mode. The micro-processor will then proceed to step 190 to increment the key address for the next scan. -30- If, in step 186, the microprocessor determined from the key data table that the key had not been pushed previously, the microprocessor would proceed directly to step 190. After the key address had been incremented, in step 190, and retrieved in step 172, the microprocessor would continue to cycle through the various key addresses until all keys have been scanned. If in step 182, the input data from the keyboard indicates that the particular key was currently being pushed, the microprocessor will proceed to step 192 to determine from the key data table whether or not the key had been pushed on the previous cycle. If it had, the microprocessor step 194 will check the auto-repeat timer to determine whether or not the time for auto- repeat had elapsed. If in step 192, the microprocessor determines that the key had not been previously pushed, the microproces¬ sor will proceed to step 196 in which it will test whether or not the hysteresis check had been previously performed on the prior cycle. If not, the microprocessor will proceed to step 178 and conduct hysteresis test, and so on. If the hysteresis test had been performed, the microprocessor will proceed to step 198 to set the key-ready flag to indicate to the microprocessor 24 background program that data was ready to be input into the character buffer from the keyboard. If in step 194, it was determined that the auto-repeat time had elapsed, the microprocessor 24 will proceed to step 198 to set the key-ready flag. If the auto-repeat time had not elapsed, the microprocessor will proceed to step 200 to increment the auto repeat timer. After this step, as well as step 198, the microprocessor would proceed to step 190 to increment the key address, and so on. OMPI ' ^Λ'ATlO -31 - In the above manner, whenever a keyboard scan is called for, the microprocessor will cycle through each key address, causing the pulsewidth modulating circuitry, see. Figure 9, to send a pulsewidth modulated serial 5 address string to the keyboard corresponding to each key location. The data received from the keyboard in response to the serial address input, is then used by the microprocessor to update a key data table contained within RAM 30, as well as to initiate a 10 character input operation. The terms and expressions which have been employed here are used as terms of description and not of limitations, and there is no intention, in the use of such terms and expressions of excluding equivalents of 15 the features shown and described, or portions thereof, it being recognized that various modifications are possible within the scope of the invention claimed. If in step 192, the microprocessor determines that the key had not been previously pushed, the microproces- 20 sor will proceed to step 196 in which it will test whether or not the hysteresis check had been previously performed on the prior cycle. If not, the microprocessor will proceed to step 178 and conduct hysteresis test, and so on. If the hysteresis test had been performed, 25 the microprocessor will proceed to step 198 to set the key-ready flag to indicate to the microprocessor 24 background program that data was ready to be input into the character buffer from the keyboard. If in step 194, it was determined that the auto-repeat time had 30 elapsed, the microprocessor 24 will proceed to step 198 to set the key-ready flag. If the auto-repeat time had not elapsed, the microprocessor will proceed to step 200 to increment the auto repeat timer. After this step, as well as step 198, the microprocessor would 35 proceed to step 190 to increment the key address, and so on. "&1 EΛ OMPI In the above manner, whenever a keyboard scan is called for, the microprocessor will cycle through each key address, causing the pulsewidth modulating circuitry, see. Figure 9, to send a pulsewidth modulated serial address string to the keyboard corresponding to each key location. The data received from the keyboard in response to the serial address input, is then used by the microprocessor to update a key data table contained within RAM 30, as well as to initiate a character input operation. The terms and expressions which have been employed here are used as terms of description and not of limitations, and there is no intention, in the use of such terms and expressions of excluding equivalents of the features shown and described, or portions thereof, it being recognized that various modifications are possible within the scope of the invention claimed. -^TJREΛ OMPI TABLE - Page 1 C OMEMCO CDOS Z80 ASSEMBLER version 02.12 PAGE 0010 END OF CHARACTER INTERRUPT ROUTINE 0530 ; 0531 ; LOAD LINE ADDRESS AMD ATTRIBUTE 0532 ; SCAN KEYBOARD 0533 } INCREMENT CLOCK ' — • 0534 i RETURN 0535 i ) 0536 ' LOAD LINE ADDRESS AN ' ATTRIBUTE - " 0537 ; IF VERTICAL RETRACE AND NOT SECOND LINE THEN 0538 ; LOAD STARTING LINE POINTER 0539 ; ELSE 0540 , LOAD NEXT LINE POINTER 0541 ; GET THE ADDRESS AND ATTRIBUTE, SEND THE DATA I ω c 0542 , RETURN " ω I H 0543 , PI 0544 I ININT:. (0 00F4 D3E5 0545 OUT CLRI T,Λ ; ; CLEAR LINE INTERRUPT ZC OFA DBE8 0546 IN A, ST P PI OOFS CB4F 0547 BIT STVREB, £3 O FA CCSF01 0548 CALL " Z,RETRAC ; ■' " FD DD7E00 0549 LB A, (IX) 01 0 D3E2 0550 UT SCRLNP, A 0:1.02 DD7E01 0551 I...D A, (IXM) ' " TABLE - Page 2 0562 TM03.1. : 0' D 50: 0563 DEC (Ϊ -M) 1 1 ' FE 1 0564 CP 1 0123 . 2004 0565 J N2 TM033 0566 TM032: 0125 FDCB15F6 0567 SET 8MSENB, <IY+W0RK1 ) 05 8 TM033: 0129 3A2BEC 0569 LD A, (DATA+LI CNT) 1 C FE18 0570 CP L NSCR-1 1 E 38 0571 JR CLNINT2 1 0 200C 0572 JR N2, NINT3 132 FDCB1566 0573 BIT M NEB, ( IY+W0RK1 ) , 0587 NINT4: 01 E 322BEC '■ 0588 LD π.ιATA-H..INCNT>, A 01 1 FDCB1476 " 0589 BIT BDISB, ( IY+M0DE3) ; KEYBOARD DISABLE? 5 2004 0590 .JR NZ, NOSCKB 0157 FDCB15D6 0591 SET 8CNKYB, <IY+W0RK1) ; TELL MAIN TO SCAN KEY Q 1 B 08 0592 NOSCKB: EX ■ AF>ΛF' a| 15C D9 ■" 0593 ' EXX TABLE - Page 3 13D FB 0594 εr 015E C9 0595 RET 0596 0597 RETRAC: 015F C-'- 9 ϊ.ii::Λ, (IY+TIMER+1) 0162 202D ' 0599 ' JR NZ TM040 0164 FD360D0A 0600 LD (IY+TIMER+D * 10 1 8 FD350C 0601 DEC (IY+TIMER) 16B 2024 0602 " ' JR N2.TM040- 1 D FDCB0956 03 BIT R50HZB, (IY+M0DE1) 0171 2006 0604 JR NZ TM070 0173 ' FD360C06 ' 0605 LD " (IY+TIMER)V6 177 1804 60 JR TM071 09 0607 TM070: ω 0179 ' FD360C05 0608 ' LD " <IY+TIMER>,5 " " I H 0609 TM071: H 17D FDCB16DE 0610 SET I UPSEC * (IY+W0RK2) c 0181 21 EEC " 0611 LD " -- •• .L,DATA ' iSECOND -1 184 CD0002 0612 CALL INCONT π 0187 3808 061 JR C TM040 to 89 CDFC01 "" 0614 CALL NCMIN- 01SC 3803 0615 JR C TM040 rπ 018E CDF001 0 1 CALL INCUR • π 0617 TM040ι -4 191 FDCB15A6 0618 RES MLINEB, (IY+W0RK1) NO MORE EXTRA LINE 0195 FDCB 76 061 BIT SROLDN, (IYHJ0RK2) ; START SROLL DOWN 01 9 280C " 0620 JR "" Z, TM047 019B FDCB16B6 0621 RES SROLDN, (IY+W0RK2) TABLE - Page 4 01B2 2807 0629 JR X> TM048 01B4 FDCB1 86 0630 RES KEYRDY, <IY+U0RK1) i THROW AWAY KEY 'IF ANY 01B8 CD0902 0631 CALL SCNKEY ~ GIVE A CHANCE TO RESET BREAK 0632 TM 8: 01BB FD362B01 0633 LD (IY+LI CNT), 1 01 F DD2145ED 0634 LD IX,DATA-H.. TAB 01CA DO 0644 ' Kl... I NC 1CB 0645 INC H 01CC )9 0646 RET 0647 0648 SMOOTH SCROLLING 0 9 0650 DYSCRL 01CD FDCB15B6 06 1" RES SMSE ND, (IY+W0RK1) 01Dl FDCB1 E 0652 RES. SMSC .Li (IY+W0RK1) 01D 3A2CEC 0653 LD , <STSCR +DATΛ) TABLE - Page 5 0659 DSCRLD: 1E7 CDC 01 0660 CALL OETLAD 01EA CD8511 06 1 CALL SETCUR 1ED C37D1 0 62 " " Jp NULRTN " ""'" "~ 0663 0 64 INCUR 01F0 ' FDCBlύEE 0665 SET UPHR, UY+WQR 2) ' 01F4 4 0666 INC (HL) 01FS 7E 0667 LD A, (HL) 01F6 ' " FE18 0668 ' CP 24 in 0669 RET C c OIF8 D8 m 1F9 3600 0670 LD (HL> * 0 01FB C9 0671 RET </> 0672 •an 0673 INCMIN: H UPMIN, (IY+U0R 2) " C 01FC ' FDCB16E6 " 0674 SET " 0675 INCONT m ', 0200 34 0676 INC <HL) • '"" 020 7E 0677 LD " A * (HL) (0 0678 CP 60 IE • 0202 FE3C rπ 0204 D8 0679 RET C 0205 3600 0680 LD (H )iO " - =1 0207 23 0 81 INC HL 0208 C9 ' 0682 RET 0683 TABLE - Page 6 0 14 CΛ0703 0 91 ZiRESND ; REPEAT KEY? 0217 " " DBE8 0692 ' "" " IN " - "" A;STATP 7 " GET " TEST " STATUS 0219 CB47 0693 BIT STKEYBi A ; IF KEY DOWN IB 2032 0694 JR NZ,KEYDWN- ; KEY DOWN 0695 , - INC KEY AND SEND 02ID 3A1BEC 0696 I CKEY: LD A, ( D TA+KEYSEQ ) ; GET SEQ 0220 FDCB1 4I! 0697 BIT BREAKB* ( IY+W0RK1 0224 200B . "" " 0698 " " JR NZ»I .2020 ■ ; " DON'T- INCR WHEN BREAK 0226 C 01 0699 ADD A, 1 0228 27 0700 DAA , ω 0229 CB7F •'• 70 BIT 7- A c 022B 2801 0702 JR Z L2000 ro 0 2D F 0703 XOR A t/> 0704 " H L2 00: 022E 321BEC 0705 LD (DATA+KEYSEQ?., A H G 0706. L2020: - 0231 CD6D03 ' "' 0707 CALL KEYADR π1 0234 A6 0708 AND A, (HL) 0235 0709 LD ω 3219EC ( ■ DATA+KEYFLG). A 0238 " 3A1BEC " 0710 ' LD ' ■ A; ' (DATA+ EYSEQ)- DπC 023B 280F 0711. JR Z- SNDKEY '. B FD36 06 0712 L (IY+KEYFLB) * KRTRY 0241 1807 071 JR SL001 • 0714 SDKEYH 0243 FE0 071 CP KRTRY 0245 " 3A1BEC ' " ' 0716 ' LD " A, (DATA+KEYSEQ) 0248 2002 0717 JR NZ, SNDKEY' • • 0 18 SL001 024A CBFF ' 071 SET 7,A ' ' . ••• e SEND HYSRITSIS 0720 SNDKEY: TABLE Page 7 0255 F 06 0727 CP KRTRY ; IF LAST STAGE 0257 1BEC 0728 ' LD "" A, (DATA+KEYSEQ) """ " " ™ " " 025Λ 20EE 0729 JR NZiSLOOl SEND KEY WITH l-IY 0 5C F5 0730 PUSH AF ;' SAVE A 025D CD6D03 0731 CALL KEYΛDR " "*" TABLE Page 8 TABLE - Page 9 KEYBOARD SCANNER TABLE - Page 10 TABLE - Page 11 TABLE - Page 12 0383 CB70 0893 B T 6, B 0385 C8 0894 RET Z 0386 87 0895 ADD Aι A 0387 ' 87 "" " 0896 " " ADD ' " A/A 0388 87 0897 ADD A, A 0389 87 0898 ADD A; A ()38A ' C9 " 0899 " ' RET ' 0900 0901 KEYBOARD TABLE 0902 " (0010) 0903 BRKSEQ EQU 10H ■ BREAK (0050) 0904 SHL8EQ EQU 50H SHIFT LOCK (0060) " 0905 ' SH SEQ EQU ' 60H " T ~ 1~ ~ ST ~ SHIFT ~ KEY ~" (0077) 0906 SH2SEQ EQU 77H ; 2 ND SHIFT KEY • ' Ml (0071) 0907 CTL8EQ EQU 71H ; CONTROL KEY (0076) " 0908 ' FUNSEQ EQU 76H 7 " FUNCTTOTKEY ™" 0909 (0000) 0 1 NA: EQU 0 0911 091 ASCII TRANSLATION TABLE 091 OMP

Claims: -46- Claims 1. Apparatus for line-by-line refreshing of a visual display, of the type used in visual display systems and in association with general purpose terminals, 5 to display visual information, the visual display system including, character generator and video generator means to convert binary display data into visual display information, clock and synchronizing means, a data bus, and visual display means, wherein the 10 visual information is displayed line-by-line, the line-by-line refreshing apparatus comprising: addressable memory means for storing display data corresponding to each line of the visual display, and for supplying display 15 data to the character generator means; first temporary storage means for accepting and storing the address of one line of display data stored in the addressable memory means;- 20 incrementing means supplied with the display data line address stored in the temporary storage means, and coupled to the addressable memory means, for incrementing the address so that all of the display 25 data in the display line are sequentially supplied by the memory means to the character generator; microprocessor means for maintaining a display data line address table which is 30 arranged in the order in which each line is to be refreshed by the visual display means, and for supplying each display data line address to the temporary storage means, in accordance with the table, and in real 35 time. _OMPI -47- . 2. The apparatus of Claim 1, in which each display data line address' includes a character designa¬ tion address and character attribute data, and wherein the incrementing means further comprises: second temporary storage means for accepting and storing the character attribute data; counter means, which are coupled to the second temporary. storage means and, is responsive to the character attribute data for generating an incremental count signal which begins at .the character attribute data; logic means which are responsive to the incremental count signal for supplying an interrupt signal to the microprocessor means when the incremental count signal reaches a predetermined value. OMP -48- 3. The apparatus of Claim 2, in which the character attribute data corresponding to each display data line include a first and second double-height control signal, and wherein the counter means further 5 includes double-height character generating means comprising: adder means which are coupled to the second temporary storage means, and which are responsive to the first double-height control 10 signal and the incremental count signal, for producing a double-height character scanning count signal; and multiplexer means which are supplied with the incremental count signal, the 15 double-height scanning count signal, and which are responsive to the second double- height control signal, to permit selection of the incremental count signal or the double- height scanning count signal to the character 20 generating means. OM -49- 4. Apparatus for serially scanning a keyboard of the type used in association with general purpose data terminals, the keyboard including a plurality of keys, wherein each key corresponds to a unique key address and generates a non-zero voltage at the address when pressed, and further wherein the terminal is communica¬ tively coupled to the keyboard through an address line and a data line, the serial scanning apparatus comprising: means for converting key address data into a pulsewidth modulated serial address stream and for supplying the modulated address stream to the address line; logic means which are responsive to the pulsewidth modulated address stream for demodulating the pulsewidth modulated address stream; decoder means responsive to the demodu¬ lated address stream for connecting the addressed key location to the data line; and microprocessor means for sequentially generating the key address data for each key, for receiving the key state data on the data line, and for maintaining a table of the key states from prior keyboard scans. OM -50- 5. A general purpose terminal system, which includes keyboard means, ' and ' visual display means which are cyclically refreshed, the general purpose terminal system comprising: means for pulsewidth modulated serial scanning of the keyboard; line refreshing means for supplying, in real time, an address for each data line which is to be refreshed in the video display; smooth scrolling double height means for incrementally altering the refresh data line address so that a different number of scan lines appear on subsequent visual display refresh cycles; controller means which are communicatively coupled to the pulsewidth modulated serial keyboard scanning means, the line refreshing means, and the smooth scrolling means, for supplying address data to, for receiving interrupt and control data from, and for controlling all of the above.

Inventors: LEE KACHUN
Applicants: FALCO DATA PROD INC
Application year: 1981
Main classification: G06F3
IPC codes: G09G5