VIDEO CONVERTER DEVICE

Abstract: A conventional cathode ray tube controller (20) is set up with various parameters determining the display format by loading values into internal registers. Firstly a pointer register is loaded with A0 = 0 to select one of 18 parameter registers which is loaded with A0 = 1. In order to allow operation in a computer designed for a first display format but using software designed for a second display format, when the controller (20) is addressed, the pointer value is stored in a latch (12) as well as being passed by a buffer (16) to the controller (20). When the parameter value is received the buffer (16) is disabled and a ROM (14) is enabled to read out the correct parameter value to the controller (20) in accordance with an address formed from the data bits in the latch (12) and the data bits on the computer bus (10).

Description: The present invention pertains to the field of video displays and more particularly to a device that provides compatibility between a computer adapted for use with a first video display format defined by a first set of parameters and software originally designed for use with a computer having a second video format defined by a second set of parameters. A wide variety of computers and particularly personal computers have been introduced over the past several years. Of the many that have been sold and manufactured, several have emerged as de facto standards due to their very large popularity. The high popularity of particular computers has in turn encouraged various third party software vendors to write many programs adapted to the popular machines. Heretofore, computer manufacturers have had to decide whether to design a totally new machine having new and improved features while sacrificing some or all compatibility with the many software packages designed for a standard machine or to design essentially a copy of the standard machine, capable of running most if not all of the software previously designed for the standard machine. If the choice was made for compatibility, the resulting computer generally had few if any advantages or improved capabilities over the machine which it copied. Recently, computer users have demanded improved graphic capabilities in their machines to provide for more readable, informative and eye catching displays. The improved displays make better presentations of data and decrease eye strain. The improved displays thus encourage the use of a particular vendor's software as well as the particular computer with which the software is used. Therefore, one area in which manufacturers have striven to make improvements is in the computer display. The displays used with most computers are cathode-ray tube (CRT) based. Their resolution is usually specified in the number of vertical and horizontal pixels (dots or picture elements) that they can distinctly display. One personal computer that has enjoyed a large degree of consumer acceptance and therefore has had a large quantity software written for it is the IBM PC, manufactured by International Business Machines Corp. Armonk, New York. Many manufacturers have found it desirable to design a computer compatible with the IBM PC yet have striven to improve the machine in several areas. One such area is in its display. The IBM PC uses a display that can show 640 x 200 pixels. This has been shown to be just barely adequate for office graphics. Further, this machine, like others, displays a character formed from a matrix of 8 x 8 pixels, thus obtaining an 80 x 25 character screen. In order to obtain letters having true descenders and yet still have sufficient space between consecutive lines of text on the display, it is necessary, when using a 8 x 8 letter, to use a very small, low resolution letter since in order to provide for the true descenders, less than the full 8 x 8 pixel matrix is used. It is thus preferable to use a pixel matrix for each character having more than 8 x 8 pixels. One such matrix that may be used is an 8 x 16 matrix having 8 pixels in the horizontal direction and 16 pixels in the vertical direction. As will be clear to those skilled in the art, such a matrix can retain compatibility with an 8 x 8 pixel matrix merely by scanning consecutive pairs of rows identically. To use an 8 x 16 character, the computer must be capable of displaying 640 x 400 pixels. Generally, there are 3 levels of interface with a computer's display circuitry. These are (1) hardware, (2) the computer's basic input/output system and (3) the computer's operating system. Much software writes directly to the hardware or to the basic input/output system and bypasses the operating system. While a program which utilises only the operating system in order to write to the computer screen would be usable with a compatible machine having a higher resolution, any program that directly programmed the hardware would show a scrambled display. Heretofore, a manufacturer of a computer who wished to make a product compatible with software designed for an IBM PC and its standard 640 x 200 pixel screen had to sacrifice a degree of compatibility if he used a higher resolution screen. Typically, manufacturers of such compatible computers would just simply choose to forego the advantages offered by a higher resolution screen in order to maintain compatibility. It is thus an object of the present invention to provide a device which permits the use of software designed for a standard computer having predetermined display parameters, i.e. a relatively low resolution screen with another computer having different display parameters, i.e. a higher resolution screen. Accordingly, the video converter device of the invention is defined by the characteristic of claim 1. The invention will be described in more detail, by way of example, with reference to the accompanying drawings, in which: Fig 1 is an overall block diagram of a device embodying the present invention; and Fig 2 is a diagram of a specific embodiment of control logic for the device. The illustrated device converts video display data adapted for a display having a first format to a display having a second format, for feeding a display controller which has an address register and a plurality of control registers. The display controller defines and controls the display format. In the device embodying the invention, address register data is stored and applied along with sequentially received control register data to a memory. The memory reads out the data addressed by the address register and control register addresses to look up a new value from tables stored within the memory, to be used with the display having the second format. Fig 1 shows a block diagram of the device 100 embodying the present invention. It functions to convert, on the fly, CRT display parameters used with industry standard machines to those required in a computer using a different display having different parameters. The display parameters include, for example, the horizontal and vertical sync positions and widths, number of characters displayed, etc. Input data D0-D7 which provides data with respect to the display parameters may be provided by software written for the standard machine and is applied on internal data bus 10. This data is supplied in parallel to a latch 12, a ROM 14 and a buffer 16. Data from the buffer 16 and the ROM 14 may then be applied to a CRT controller data bus 11 and in turn applied to the CRT display controller (CRTC) 20. The CRT controller 20 generates a raster scan displayed on a CRT. A widely used CRT controller is the 6845 which is manufactured by for example Motorola Inc., 5005 East McDowell Road, Phoenix, Arizona 85008, USA. The 6845 has 19 accessible internal registers, which are used to define and control the raster scanned CRT display. One of these registers, the address or pointer register, is used as a pointer to the other 18 registers. It is a write-only register which is loaded from the microprocessor by executing the appropriate instruction received from the data bus 10. The 5 least significant bits of the bus (D0-D4) are then loaded into the pointer register. In order to load any of the other 18 registers, the pointer register is first loaded with the necessary pointer, then the selected register is loaded with the information to be placed therein. The 6845 may thus be considered a two register device. The first, which is the address or pointer register is called when A0 = 0. The signal A0 is received at terminal 40 and applied to the RS (register select) terminal of the CRTC 20. If A0 = 1 the value of the display parameter desired is placed into the register selected by the address in the pointer register. These addresses are received from the software or operating system. Table 1 defines the values that must be loaded into the 6845 CRT controller registers to control various different modes of operation. In operation, signals received from the data bus 10 will be translated by a look up table in the ROM14 and the translated values are placed on the data bus 11 where they are coupled to the CRTC 20. The address of the memory location looked up in the ROM 14 consists of 2 parts. The first part A8-A11 is received via a bus 22 from the latch 12 and the second, A0-A7 is received directly from the data bus 10. The latch 12 in turn receives data bits D0-D3 from data bus 10. In one embodiment of the present invention only data bits D0-D3 are used to select the control register since the last two address registers indicated on table 1, that is, R16, R17 support a light pen function. In this case only registers 0 to 15 are addressed which can be done using only 4 bits, namely bits D0-D3. The latch 12 will hold the register address received from the microprocessor to select the desired control register to be addressed in the CRTC 20 until the next time the pointer register is to be rewritten. The latch 12 latches in data bits D0-D3 whenever A0 = 0. A0 = 0 only when access to the pointer register is desired. Bits D0-D3 may then be loaded in as address bits simultaneously with the control register data received on the data bus 10 which is loaded into the ROM 14 address inputs A0-A7. Bits D0-D3 are applied to the address bit inputs A8-A11 of the ROM 14, together with bits D0-D7 which are applied to the inputs A0-A7 of the ROM 14. A 12 bit address is thus constructed, to address a location in a look-up table within the ROM. The value stored in the addressed location in the ROM is then placed on the data bus 11 and applied to the D0-D7 inputs of the CRTC 20. The device utilizes a CR signal which addresses the chip select (C/S) input of the CRTC 20. When this signal goes low, the CRTC is selected during CRTC read or write operations. During normal operation, when the software or hardware requires its CRT controller to perform a function, data will be transferred to it in two portions. For the first portion, A0 is set low to indicate that the CRTC address register is being addressed. During this phase of the operation, the device 100 should remain transparent so that the address of the register chosen by the software can be routed directly through the buffer 16 to the pointer register in the CRT controller 20. The buffer 16 must thus be enabled and it receives the appropriate signal on a lead 51 at its enable (EN) input from control logic 50. As in the case of many standard buffers known in the art, such as for example a 74LS245, the buffer 16 is enabled when the signal received at its enable input terminal EN goes low. During the portion of the operation A0 equals logical zero as received from terminal 40 and is routed both to the control logic 50, the latch 12 and to the RS terminal of the CRT controller 20. This signal thus selects the address or pointer register and as stated, it also applied to the latch 12 which has input terminals coupled to the D0-D3 lines of the data bus 10 and will thus load in and present (after being appropriately clocked) D0-D3 on the bus 22. The latch 12 holds D0-D3 at its output whenever A0=0 and provides this data to the ROM 14 at the A8-A11 inputs. During the second part of the operation, specific display control data generated from the software may be applied to the CRT controller 20. This specific data will, as previously discussed, set the various parameters of the CRT display as detailed in Table 1, including for example the number of characters to be displayed in a given row and column, as well as sync information, etc used by a CRT. In the present invention, during this portion of operation, it is now desired to interrupt the signal flow to convert it so that it may be utilized when a microcomputer having a higher resolution than the one for which the program was originally developed. The buffer 16 is thus disabled by driving the EN signal from lead 51 high and ROM 14 is enabled by a logical 0 signal received from control logic 50 on lead 53, at its OE (output enable) input terminal. The data now present on data bus 10, that is, data bits D0-D7 represents the specific data which the software program would have ordinarily written to the CRT controller 20 in the standard machine. In the present invention this data instead is applied to the address inputs A0-A7 of the ROM 14. As discussed previously, the four most significant bits received at address input terminals A8-A11 will form a first part of an address and the 8 least significant bits will form the second part of the address. The ROM 14 has its internal memory organized into 16 tables corresponding to the 16 different combinations of the inputs A8-A11, and each of the tables may have up to 256 lines within the table selected by the address bits A0-A7. Referring again to Table 1, if the software included a command to change or set the horizontal sync width, for example, it would be necessary to address the register No R3. To do so, the binary number 0011 would be loaded into bits A11, A10, A9 and A8, respectively while A0 is low. This value, which was previously loaded into the latch 12 would thereafter cause the ROM to look up values from the horizontal sync width table when A0=1. This value, is ordinarily set to 0A in hexidecimal which corresponds to the time it takes to write 10 characters. If, for example, the higher resolution monitor is using a different sync width, it will look it up in the 0011 table, under the line designated as 0A (location 03 0A) and find a value corresponding to the sync width required by the higher resolution monitor. As may be noted from Table 1, the CRT controller can be written to and also read from. The CRT controller 20 is only read from for the R14, R15, R16 and R17 registers. Ignoring, for the moment, registers R16 and R17, this means that the cursor position can be read from the CRT controller. To permit reading from the CRTC 20, the buffer 16 must be bidirectional and have a selectable direction. The buffer 16 is enabled by a signal on the lead 51 from the control logic 50 and the direction of data transfer is selected by a W (write) signal on lead 52. When the W signal = 0, a write operation is designated and the buffer passes data from the bus 10 to the bus 11. When W = 1, a read operation is designated and the buffer 16 permits the flow of data from the data bus 11 to the data bus 10. During the CRTC 20 read operations, the W signal must be high. In this case, the data bus buffer 16 will be enabled and the ROM 14 will be disabled. The direction of data transfer as stated is from data bus 11 to data bus 10 so that the data bus 11 will communicate directly with the microprocessor data bus 10. During the CRTC 20 pointer register write operations, both the A0 signal and the W signal will be low. In this case, the data bus buffer 16 is enabled and ROM 14 is disabled. The direction of data transfer will be from data bus 10 to data bus 11 so that the computer data bus 10 communicates directly with the CRTC controller data bus 11. During CRTC 20 control register write operations (as distinguished from pointer write operations), once again W will be low, but A0 will be high. In this instance, the EN input of the buffer 16 is set high to disable the buffer 16 and the OE input of the ROM 14 is set low to enable it. Thus the ROM can translate values received from the software to those required by the higher resolution display and place them on the 6845 data bus 11. These functions are summarized in Table 2 and may be implemented by the control logic 50 shown in Fig 2. Fig 2 shows a specific embodiment of the control logic 50, comprising a multiplexer 60 and inverters 61 and 62. B(A0) A( W ) OUTPUT TO ROM 14 (1 Y ) OUTPUT TO BUFFER 16 ( 2Y ) 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 In operation, the multiplexer 60 transfers data selected from one of the four inputs IC0 to IC3 and present it to its 1Y output and correspondingly select data applied to one of the inputs 2C0-2C3 and applies to the output 2Y. The multiplexer is controlled by the signals applied to the A and B terminals which function to select a signal from one of the 1C0-1C3 and 2C0-2C3 inputs and apply it to the 1Y and 2Y output terminals respectively. The 1G and 2G inputs receive the CR signal which is a strobe signal. Whenever the strobe terminals receive a high signal, the output will go low regardless of the data at the data inputs 1C0-1C3, 2C0-2C3 and regardless of the condition of the select inputs A and B. Thus, the multiplexer 60 is only enabled when the 1G and 2G signals are low. In the present invention, this will correspond to when the CRTC 20 is being addressed (that is when CR = 0). Inputs 1C0, 1C1, 1C3 and 2C2 of the multiplexer 60 are all tied to ground and thus have a logical 0 input applied to them. Inputs 1C2, 2C0, 2C1 and 2C3 are all tied to the positive supply voltage, thus having a logical 1 applied to them. The signals are multiplexed in accordance with Table 2. Thus, when the A0 signal is high and a read operation is indicated, multiplexer 60 provides a logic 0 signal corresponding to 1C3 at its 1Y output. This is in turn inverted by inverter 61 and disables ROM 14. It will also produce a signal equivalent to 2C3 at the 2Y output. This signal is a logical 1 which is in turn inverted by inverter 62 and applied to buffer 16 to enable the buffer 16 and permit the transfer of data between the data bus 10 and the data bus 11. Since the W signal is also applied directly to the direction (DIR) input of the buffer 16, it permits the flow of data from the data bus 11 to the data bus 10 to complete the read operation. In the instance where the A input is high ( W = 1) and the B input of the multiplexer is high (A0=1) a logical 1 output is supplied at the 1Y output which is inverted by the inverter 61 and coupled to the OE input of ROM 14 which is thus enabled. The 2Y output of multiplexer 60 will receive a signal equivalent to 2C2 which is equal to 0. The signal is in turn inverted by the inverter 62 to provide a logical 1 signal to the buffer 16 at its EN input to disable it. The buffer thus isolates the data bus 10 from the data bus 11. In a third state, a logic 0 is applied to the B input of multiplexer 60 from the A0 signal and a logical 1 is applied to the A input corresponding to a read operation ( W =1). In this case, a logical 0 is presented to the 1Y output which is in turn inverted by the inverter 61 to present a logical 1 to the ROM 14. This disables the ROM 14. At the same time a logical 1 is applied to the output 2Y corresponding to the input at 2C1. This signal is in turn inverted by the inverter 62 to enable the buffer 16. Thus, it becomes possible to read from the data bus. Correspondingly, at this time, the buffer 16 permits the transfer of data from the data bus 11 to the data bus 10 since the W signal is high. Finally, in the last state corresponding to a pointer register call, the signal applied to the B input of multiplexer 60 (A0) is a logical 0 and the signal applied to the A input of the multiplexer 60 ( W ) is also logical 0. In this instance, the 1Y output takes on the value of the signal at 1C0 which in this case is equal to logical 0 and the 2Y output becomes equal to the signal at 2C0 which is equal to logical 1. The signals are in turn inverted by inverters 61 and 62. Thus, the ROM 14 is disabled and buffer 16 is enabled. Since the W signal is low, the buffer 16 permits data to be transferred from the data bus 10 to data bus 11. This corresponds to the situation where it is desired to write directly to the pointer register of the CRTC 20. As stated, at this time it is desired that the device shall remain transparent so that the address received from the software can be applied directly to the controller. Table 3 is a summary of possible values which may be placed into the ROM 14. The address has been broken down into the address for individual tables within the ROM as applied to terminals A8-A11 and to the specific data input from the software corresponding to the address as A0-A7. Reference to Table 3 will show how the values may differ from those ordinarily used in the industry standard machine. For example, referring to address 03 for register R3 in the present invention, the value 0C is selected regardless of the value typically used by the standard computer. In this case, it is ordinarily 0A. This signal which as described previously corresponds to the horizontal sync width is generally independent of any software requirements. The present invention can also be completely bypassed when desired. For example, when used with software which writes values to the CRTC 20, but which has been developed specifically for a microcomputer utilizing the higher resolution display, the ROM can be made transpaent by adding a value N + R to the control register values. These transparent values are noted on table 3 as being transparent. It will be noted that in this particular case, the binary address of the transparent values all have a most significant bit equal to 1. This provides a simple and convenient method for a software programmer to bypass the ROM 14. The present invention also permits changes in the CRT raster rate. For example, in many known computers a 15.75 kilohertz scan rate is utilized which corresponds to a similar scan rate used in commercial television broadcasts and receivers. In one computer developed using the present invention a scan rate of 26 kilohertz is used. Further, it was found that the flyback period could be shortened to therefore increase the useful time of the scan. Were software adapted to the scan rate of 15.75 kilohertz utilized without conversion in such a computer, the display would be completely garbled. Although the invention has been described for use in adapting software designed for a low resolution CRT to be used with a microcomputer utilizing a high resolution CRT, it may be used in any situation where a computer demands different parameters for its display than was originally contemplated by the software being used with the computer. Thus, the software can remain compatible and the microcomputer will automatically adjust the software to the requirements of its particular display.

Claims: A device for converting data having first values to data having second values, the data being used for controlling a display controller (20) in a computer, the first and second values corresponding to a first and second sets respectively of parameters used with first and second types of display, the device being connectable between a computer data bus (10) and a controller data bus (11) passing to the controller (20) a first group of data to select an address within the controller and a second group of data to control a parameter associated with that address, characterised by a storage device (12) coupled to the computer data bus (10) for storing the first group of data, a buffer (16) interposed between the computer data bus (10) and the controller data bus (11) for selectively isolating or coupling those buses, and a memory (14) having first (A8-A11) and second (A0-A7) pluralities of address lines, the first plurality of address lines (A8-A11) receiving the data stored in the storage device (12) and the second plurality of address lines (A0-A7) being coupled to the computer data bus (10), the memory (14) providing the second group of data to the controller data bus (11). A device according to claim 1, characterised by control logic (50) coupled to the buffer (16) and the memory (14) for selectively enabling the buffer and memory. A device according to claim 2, characterised in that the first group of data and the second group of data are sequentially applied to the controller. A device according to claim 3, characterised in that the first group of data are loaded by the storage device (12) and stored therein for application to the memory (14) while the second group of data is received by the memory, and the memory (14) includes data organized into a group of tables and lines of data therein, the tables being selected by the first group of data received from the storage device (12) and the lines in the tables being selected by the second group of data received from the computer data bus (10). A device according to claim 4, characterised in that the display controller (20) is a CRT controller responsive to a register select signal (A0) which is a logical 0 signal when the first group of data is received on the computer data bus (10) to select a register for controlling a display parameter of the controller, and is a logical 1 when the second group of data is received on the computer data bus (10) to enter data in the register selected according to the first plurality of data. A device according to claim 5, characterised in that the storage device stores a value when the register select signal (A0) is equal to logical 0. A device according to claim 5 or 6, characterised in that the control logic (50) receives a write signal (W) and the register select signal (A0), and has a first output (51) coupled to the buffer (16) and a second output (53) coupled to the memory (14), the logic being such that, when the write signal (W) is in a first state and the register select signal (A0) is in a first state, the buffer (16) is enabled and the memory (14) is disabled, and, when the write signal (W) is in the first state and the register select signal (A0) is in a second state, the buffer (16) is disabled and the memory (14) is enabled. A device according to claim 7, characterised in that the control logic (50) comprises a multiplexer (60) having a plurality of inputs (1C0-2C3) coupled to fixed logical zero and fixed logical 1 signals and having outputs (51, 53) coupled to the memory (14) and buffer (16), the multiplexer selecting the signals at the multiplexer inputs for application to the buffer and memory for disabling and enabling them. The device according to any preceding claim, characterised in that the buffer (16) is a bidirectional buffer for selectively permitting the flow of data from the CRT controller (20) to the computer data bus (10) and for permitting the flow of data from the computer data bus to the CRT controller data bus (11). A device according to claim 7 and claim 9, characterised in that the direction of the bidirectional buffer (16) is controlled by the write signal (W).

Inventors: GRACIOTTI, ALESSANDRO, KUTSCHA, HERBERT
Applicants: ING. C. OLIVETTI & C., S.P.A.
Application year: 1985
Main classification: G09G1
IPC codes: G09G5, G09G1, G06T11, G06T3