PROGRAMMABLE KEYBOARD MECHANISM

Abstract: In a computer system, a keyboard (1) which is used by a user is equipped with at least one socket (S₁, ..., S n ) to attach a ROM (R₁, ..., R n ) in which a predetermined secret data relative to a software to be executed by this system was stored. This ROM is supplied from a software maker to the user together with the recording medium on which the software relative to the ROM was recorded. Only when this ROM is attached to the relevant socket in the keyboard, the keyboard can perform the data communication with the computer main body (2) in the computer system which is executing the software regarding this ROM. The sockets number as many as the number of softwares which are executed by the computer system may be provided in the keyboard.

Description: The present invention relates to a key data input apparatus for use in a computer system, as described in the preamble of attached claim 1. Such a device is known from EP-A-135 422. In recent years, the illegal copying of computer programs has become a serious problem and it is necessary to prevent such illegal copying and to protect software by taking countermeasures. As for methods for preventing the copying of computer programs in general, there is a method where, by using a special recording method when a program is recorded on a recording medium (for example, a floppy disk), it is made impossible to read out the program stored on the recording medium by an ordinary reading method. There is also a method where, by specially designing the software program, although the program can be read out from the recording medium and copied, the operation is locked when a user tries to execute the program read out. However, whenever a new copy preventing method is adopted, a method to release this preventing means is considered corresponding to this new copy preventing method; consequently, in practice, such a problem cannot be solved by a copy preventing method which considers only the recording medium. From the above mentioned EP-A-135 422, it is known to use an apparatus for protecting software which is connected to an output of a computer. Periodically, the computer emits a question code, whereupon the protecting apparatus emits a response code. If the computer does not receive the correct response code, the running of the program executed by the computer is automatically stopped. However, illegal copying of a program may not be prevented completely with the known apparatus which is separately connected with the computer. The present invention is made to solve the foregoing problem, and it is an object of the invention to provide a key data input apparatus having a copy preventing function for a program which is executed in a computer system. According to the invention as described in the characterizing part of claim 1, attention is paid to the fact that the user executes a computer program through a key data input apparatus (for example, a keyboard) as one of the peripheral apparatus of a computer system. Conventional copy preventing methods consider mainly the recording medium. On the other hand, the invention has a feature such that a computer software is protected by a combination of a computer program and a key data input apparatus. For example, a software maker either supplies a software program to a user, together with a read only memory (hereinafter, simply referred to as a "ROM") in which the particular information (for example, codes) relative to this program are written, or else supplies, together with the programme the dedicated keyboard in which the foregoing ROM has been installed. The user can only execute the program through the keyboard either by inserting this ROM into a proper location in the keyboard which is designated by the program, or by using the dedicated keyboard supplied. The computer main body checks via the program to see whether or not the ROM corresponding to the program is inserted into the keyboard. If the computer main body determines that the suitable ROM is not inserted into the keyboard, the computer main body rejects the communication with the keyboard; that is, the number of keyboards which can be used for the program is limited to the number of ROMs (ordinarily, one ROM) which are added to the program and are supplied. Therefore, even if the user could illegally copy the program, this copied program cannot be executed by an ordinary keyboard. In addition, the present invention is constituted such that a plurality of copy preventing ROMs, which differ depending on the kinds of the programs, can be inserted into the keyboard. In this way, even in the case where the user having the keyboard according to the invention can execute a certain program, he cannot execute the other kinds of programs copied illegally. As described above, software can be more certainly protected by use of the key data input apparatus according to the present invention. The above and other objects, features and advantages of the present invention will be more clear from the following description with reference to the accompanying drawings, in which: Fig. 1 is a schematic arrangement diagram of one embodiment of a keyboard of the present invention; Fig. 2 is a schematic flowchart showing an example of the checking operation of a computer main body to which the keyboard shown in Fig. 1 is connected; and Fig. 3 is a perspective view showing a schematic arrangement of a computer system to which the invention is applied. One embodiment of a key data input apparatus according to the present invention will now be described hereinbelow with reference to the drawings. Fig. 1 is a schematic arrangement diagram of a keyboard of one embodiment of the invention. In the diagram, in a keyboard 1, there are provided: a central processing unit (hereinafter, referred to as a "CPU") 10 to control the operation of the keyboard 1; a ROM 11 to store the keyboard operation program showing the procedure of the operation of the CPU 10; a key switch circuit 12 to generate an output indicative of the position of the key pressed by the program user who operates the keyboard; a keyboard control circuit 13 to decode the key scan control and key position output of the key switch circuit 12 into the key input data; a serial data transfer circuit 14 which converts the serial data from a computer main body 2 in the computer system into parallel data and converts the parallel data from the keyboard 1 into serial data and then transmits to the computer main body 2, thereby performing a communication between the computer main body 2 and the keyboard 1; a reception data buffer RAM 15 to temporarily store the data which is transmitted from the computer main body 2 through the transfer circuit 14 and to transmit the data to the CPU 10 in timed relation to the data read from the CPU 10; and a plurality of ROM inserting sockets S l , ..., S i , ..., S n into which a plurality of ROMs R l , ..., R n can be installed. These ROMs are the characteristic components in the invention and predetermined codes which differ in dependence on the programs which are executed by the computer system are stored in the ROMs R l to R n , respectively. A reference numeral 16 denotes an address bus to transfer an address signal from the CPU 10. By properly decoding the address signal on this address bus, each component element in the keyboard is selected or an address in the memory is designated. Although not shown, various kinds of control lines are also supplied from the CPU 10 to respective component elements. A data bus 17 serves to transfer data which is outputted from the CPU 10 to each component element, and vice versa. The operation of one embodiment of the present invention is explained with reference to Fig. 1. In the diagram, the serial data transfer circuit 14 and the computer main body 2 are connected by a communication cable 21. In the case of this embodiment, the transmission and reception of data between the transfer circuit 14 and the computer main body 2 are performed by way of an asynchronous data communication system in which the data length is eight bits and no parity bit is used and the stop bit is 1 (hereinafter, this system is referred to as a "serial transfer system"). When the computer system is activated, accordingly, when a power supply of the keyboard 1 is turned on, the CPU 10 initializes the keyboard 1 in accordance with the program in the ROM 11. In this embodiment, the CPU 10 sets the transfer circuit 14 in such a manner that although the transfer circuit 14 can receive data from the computer main body 2, it cannot transmit data from the keyboard 1 to the computer main body 2. Thereafter, in accordance with the state instruction data (for example, a predetermined ASCII code sequence) which is transmitted from the computer main body 2 to the keyboard 1, the CPU 10 of the keyboard 1 sets the transfer circuit 14 into either one of the following three states (a), (b) and (c) of the keyboard 1. (a) The state in that the data from the computer main body 2 can be received and only the data in the copy preventing ROMs R l to R n in the keyboard 1 can be transmitted to the computer main body 2, but the key codes typed by means of the keys on the keyboard 1 cannot be transmitted. (b) The state in that the data from the computer main body 2 can be received and the key codes typed by the keys on the keyboard 1 can be transmitted to the computer main body, but the data in the copy preventing ROMs R l to R n cannot be transmitted. (c) The state in that the data from the computer main body 2 can be received similarly to the initial state, but the data from the keyboard 1 cannot be transmitted at all. In the above-mentioned initial state, when a predetermined state instruction data (hereinafter, this data is referred to as a "first code") is transmitted from the computer main body 2 through a transmission data line 22 to the keyboard 1, the CPU 10 sets the transfer circuit 14 into the state (a). Thus , the computer main body 2 can read out the content of the copy preventing ROM in the keyboard 1 through a reception data line 23. However, in this state, the key input data from the keyboard 1 is not read out yet. Next, when another state instructing data (hereinafter, this data is referred to as a "second code") is transmitted from the computer main body 2 to the keyboard 1, the CPU 10 transmits the contents of the ROMs inserted in the ROM inserting sockets S l to S n to the computer main body 2. In this case, the contents of all of the ROMs inserted into the sockets S l to S n may be transmitted or the content of only the ROM (for example, only the ROM R n ) corresponding to the program which is executed by the computer main body 2 may be transmitted. This selection in transmission of the content of the ROM can be changed in dependence on the specifications of the program. In the computer main body 2, the content of the ROM transmitted from the keyboard 1 is checked. If the content coincides with the expected one, the computer main body 2 determines that the ROM corresponding to the program to be executed is inserted in the keyboard 1. Thus, the computer main body 2 transmits another state instruction data. The keyboard 1 is set into the state (b) in response to this another state instruction data. Due to this, the key input data from the keyboard 1 is accurately transmitted to the computer main body 2. Subsequently, the program of the computer main body 2 is continued while performing the data transfer with the keyboard 1. In this embodiment, when the keyboard 1 is set into the state (b), only the key input data is sent to the computer main body 2 but the contents of the copy preventing ROMs R l to R n cannot be read out to the computer main body 2. This is done to prevent the contents of the ROMs R l to R n from being interpreted by the user when the program operation is being normally executed. If it is decided that the content of the copy preventing ROM from the keyboard 1 is incorrect, the computer main body 2 transmits still another state instruction data to the keyboard 1. In response to this data, the keyboard 1 is forced into the state (c). Thereafter, the program in the computer main body 2 cannot be executed. As described above, in the case where the keyboard 1 shown in Fig. 1 is not connected to the computer main body 2, but a quite different keyboard having no copy preventing ROM attaching means is connected, the computer main body 2 can reject the execution of the program. Even if the keyboard 1 shown in Fig. 1 is connected, the computer main body 2 can obviously reject the execution of the program so long as the ROM corresponding to the program to be executed is not inserted; therefore, the software can be more securely protected. Fig. 2 shows a schematic flowchart showing an example of the above-mentioned checking operation which is executed by the computer main body 2. In the flowchart, when the computer system is activated, the system is initialized in STEP 30. In next STEP 31, the computer main body 2 sends the first code to the keyboard 1 and sets the keyboard 1 into the state (a). In this case, a special code representing that the keyboard was set into the state (a) may be transmitted from the keyboard. The transmission of this special code makes it possible to discriminate whether the keyboard is of the designated type or not at the state of STEP 31. Next, in STEP 32, the computer main body 2 sends the second code, thereby allowing the data from the keyboard 1 to be read in STEP 33. The data from the keyboard 1 is compared with the data preliminarily stored in the program in STEP 34. If they are coincident, STEP 35 follows and the state instruction data to set the keyboard 1 into the state (b) is transmitted to the keyboard 1. Thereafter, in STEP 36, the program is continued. Unless those data coincide in STEP 34, STEP 37 follows and the state instruction data to set the keyboard 1 into the state (c) is transmitted. If necessary, a message indicating that the program cannot be executed is outputted in STEP 38 and the subsequent execution of the program is stopped. Fig. 3 shows an example of a computer system to which is applied the keyboard of the present invention, having such a software protecting function as described above. In the diagram, a reference numeral 2 denotes the computer main body. By inserting a disk (not shown) on which a program was recorded into a disk drive 2a and turning on a power supply, the program is started. In the ordinary program, the process is performed in accordance with the key input from a keyboard 3 of the typewriter key type and the result of the process is outputted to a display 4 or a printer (not shown). The keyboard 1 is connected to the computer main body 2. Although the keyboard 1 in Fig. 3 has a special shape in correspondence to the program to be executed, it may obviously have an ordinary shape such as the keyboard 3. The program is started by inserting the disk, on which the program to designate the use of the keyboard 1 was stored, into the disk drive 2a. The computer main body 2 performs the check in the steps as shown in Fig. 2 and executes the program if the keyboard 1 is the correct one. Otherwise, the computer main body rejects the execution of the program. Although the inhibition and permission of the communication with the computer main body 2 by the transfer circuit 14 as communicating means are controlled by way of the CPU 10 in the keyboard 1 in the foregoing embodiment, alternatively, a control line 24 may be supplied from the computer main body 2 through the communication cable 21 to the transfer circuit 14, and the inhibition and permission of the communicating operation of the transfer circuit 14 may then be controlled by the computer main body 2. As described above, according to the present invention, the copying of a program is prevented due to a combination of the computer program and the key data input apparatus which is operated by the user, so that there is an effect such that the software can be more securely protected.

Claims: A key data input apparatus for use in a computer system requiring software copy protection, comprising: key input means (12, 13) for generating an output code corresponding to the position of a key pressed by an operator; and communicating means (14, 15) for performing a communication with a computer (2) of the computer system which executes a predetermined software; characterized by attaching means (S l , ... S n ) for attaching at least one memory device in which predetermined data corresponding to said software is stored; and control means (10, 11) located in said key data input apparatus and connected to said key input means, said communicating means and said attaching means, for allowing and inhibiting the communication between said key input means and said computer through said communicating means; wherein, upon initialization, said control means (10, 11) sets said communicating means to stop any data at all from being sent to said computer; whereupon said computer (2) then causes said control means (10, 11) to set said communicating means (14, 15) into a first state (a) in which data from said computer can be received and said predetermined data in said memory device can be transmitted to said computer, but data from said key input means (12, 13) cannot be transmitted to said computer; whereupon either said control means (10, 11) allows said key input means (12, 13) to transmit said output codes to said computer (2) only when said predetermined data stored in the memory device attached to said attaching means responds correctly to a question issued from said computer by said software (state (b)), or said control means (10, 11) inhibits the transmission of said output codes from said key input means (12, 13) when said predetermined data either does not respond or responds incorrectly to said question (state (c)); whereby copy protection of said software can be achieved by that pair of said software and said key data input apparatus. A key data input apparatus according to claim 1, wherein said control means (10, 11) transmits the data stored in said memory device attached to said attaching means (S l , ... S n ) to said computer in response to a first predetermined code which is transmitted from said computer. A key data input apparatus according to claim 2, wherein in response to a second predetermined code, which is generated when said computer determines, by reading out the data in said memory device, that the memory device attached to said attaching means (S l , ... S n ) corresponds to the software to be executed, said control means (10, 11) permits said communicating means (14, 15) to transmit said output code from said key input means (12, 13) to said computer. A key data input apparatus according to claim 2, wherein in response to a third predetermined code, which is generated when said computer determines, by reading out the data in said memory device, that the memory device attached to said attaching means (S l , ... S n ) does not correspond to the software to be executed, said control means (10, 11) sets said communicating means into a state such that the data from said key input means (12, 13) cannot be transmitted to said computer. A key data input apparatus according to any one of claims 1 to 4, wherein said memory device is a ROM (R l , ... R n ) and said attaching means is at least one ROM socket (S l , ... S n ). A key data input apparatus according to any one of claims 1 to 5, wherein said control means includes a CPU (10). A key data input apparatus according to any one of claims 1 to 6, wherein said communicating means (14, 15) performs the communication with said computer by way of a serial transfer system.

Inventors: KAWAMURA, MASANAO
Applicants: CADAM SYSTEMS COMPANY, INC
Application year: 1985
Main classification: G06F1
IPC codes: G06F21, G06F12, G06F1, G06F3, G06F9