EP0028643A1 - Portable data entry device including dynamic partitioning of data memory - Google Patents

Portable data entry device including dynamic partitioning of data memory

Info

Publication number
EP0028643A1
EP0028643A1 EP80901138A EP80901138A EP0028643A1 EP 0028643 A1 EP0028643 A1 EP 0028643A1 EP 80901138 A EP80901138 A EP 80901138A EP 80901138 A EP80901138 A EP 80901138A EP 0028643 A1 EP0028643 A1 EP 0028643A1
Authority
EP
European Patent Office
Prior art keywords
memory
data
partition
partitions
records
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP80901138A
Other languages
German (de)
French (fr)
Other versions
EP0028643A4 (en
Inventor
Rajendra Kumar
Walter D. Hanby
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telxon Corp
Original Assignee
Telxon Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telxon Corp filed Critical Telxon Corp
Publication of EP0028643A1 publication Critical patent/EP0028643A1/en
Publication of EP0028643A4 publication Critical patent/EP0028643A4/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0232Manual direct entries, e.g. key to main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Definitions

  • the present invention relates to the art of portable, handheld data entry devices, and more particularly to such a device capable of storing data in a number of partitions.
  • portable data entry devices have come into wide acceptance in those businesses in which large amounts of data must be collected on a daily basis, and transmitted to a central data collection point. They are widely used, for example, in supermarkets and other retail business endeavors to collect stock order information or other inventory control data.
  • a portable data entry device of this type conventionally includes some form of bulk data storage, such as magnetic tape or solid state memory, into which data may be entered by means of a keyboard, scanning
  • the data collected by the unit is transmitted directly from the device to a central collection point over ordinary telephone- lines.
  • the business which use these portable handheld data entry devices are organized into a number of departments which must each maintain inventory levels independently of the others.
  • a single handheld device may be used at several stores. It is therefore desirable that the data entry device include some means of segregating the information from each data collection locality so that it may be handled independently of the others.
  • some of the portable data entry devices presently in use are controllable by the operator to define separate portions of memory, known as partitions, into which data may be selectively entered. Prior to beginning the data collection process, the operator will define the number and length of the partitions which he intends to use. Thereafter, during the actual data collection, the partition structure is fixed and may not be changed.
  • the data entered by the operator is recorded in the partition selected by him, with sequentially entered data for a given partition being stored within sequential locations in the memory.
  • the operator will actuate the keyboard to request entry into that partition.
  • the electronics within the portable, handheld data entry unit will then relocate the data within the memory such that all of the free memory space is adjacent the data previously entered into that partition. Because of this, all of the remaining available memory space is open to each partition when data is being entered in that partition.
  • the data entry unit includes a microprocessor which operates under program control. Whenever the operator requests the opening of a partition, the microprocessor executes a partition procedure.
  • the disclosed portable, handheld data entry device also includes a method of editing the variable length records stored within the memory without producing gaps in memory, or entering redundant records. Record deletion is accomplished by moving all of the data above the record to be deleted down by the length of that record.
  • Insertions are accomplished by first determining the character length of the data record to be inserted, parting the data by a corresponding number of character storage locations, and inserting the data record in the memory gap thus created.
  • Efficient use of memory is also achieved by eliminating redundant successive entries into the memory.
  • the record is stored memory only once, with an appropriate "quantity" character tacked onto the end thereof to identify the number of times which that record was. successively entered in memory.
  • the various defined partitions in memory can be transmitted to an external device in any desired order. The operator will first enter a list of partitions into the device, with this list indicating the order in which the partitions are to be transmitted. The device will then transmit each listed partition one after another, in the order in which they are listed.
  • FIG. 1 is an illustration of a portable, handheld data entry device of the type in which the present invention i s used ;
  • Fig. 2 is a general block diagram of the electronics carried within the portable data entry device of Fig. 1;
  • Figs. 3A-3C are schematic representations of the data stored within memory, useful in understanding the operation of the dynamic partitioning method disclosed herein;
  • Fig. 4 is a more detailed representation of the manner in which the individual characters are stored within the memory
  • Fig. 5 is a broad flow chart diagramming the sequence of operation of the portable, handheld data entry device
  • Fig. 6 is a more detailed flow chart illustrating the manner in which the portable data entry device accomplishes the dynamic partitioning function
  • Fig. 7 is a broad flow chart illustrating the sequence of operation of the portable data entry device in performing an insert operation
  • Fig. 8 is a flow chart illustrating the sequence of operation of the portable data entry device in performing a delete operation.
  • Fig. 9 is a flow chart illustrating the sequence of operation of the portable data entry device in performing a "send" function.
  • Fig. 1 broadly illustrates a portable, handheld data entry device of the type in which the present invention.
  • This portable data entry device 10 includes a housing 12 within which will be. located the electronics, including a solid state memory and a display device, and a. battery power source for maintaining operation of the device, independent of external power sources.
  • This portable data entry device also includes a keyboard 14 for entering functional commands and data into the device.
  • a display window 16 permits the operator to view the display mounted within the housing 12. This display is controlled by the electronics to display not only the data stored in the memory, but also various prompting or operational messages.
  • the portable device also includes one or more connectors 18 for permitting such external devices as a scanning wand or an acoustical coupler, to be interconnected with the unit.
  • the scanning wand is used to facilitate the entry of data into the portable data entry device, while the acoustical coupler, on the other hand, is used to communicate the data stored within the memory to a central data collection point over conventional telephone lines.
  • Fig. 2 is a broad block diagram of the electronics carried within the portable data entry device 10 of Fig. 1.
  • the system is controlled by a microprocessor (MPU) 20 which is interconnected with a solid state memory 22 and various other peripheral circuits by means of a system bus 24.
  • the system bus 24 includes data, control, and address lines as required by the microprocessor 20.
  • the solid state memory 22 will preferably include both read only memory (ROM) and random access memory (RAM).
  • ROM read only memory
  • RAM random access memory
  • Stored within the ROM is the control programs which control the operation of the microprocessor 20, as well a various look-up tables containing, for example, prompting messages, etc.
  • the RAM is used for storing the data collected by the unit, and also for various scratch pad purposes.
  • the keyboard 14 is interfaced with the microprocessor 20 by means of a keyboard scanner 26, which scans the keys under microprocessor control and provides multibit codes to the microprocessor through the system bus 24, identifying the various keys as they are depressed by the operator. This data is supplied for operator viewing on a display 28, viewable through the display window 16 shown in Fig. 1.
  • This display 28 is interfaced with the system bus 24 by means of a display control circuit 30, which may take any conventional form.
  • An input/output port 32 is interconnected between the connector 18 and the system bus 24, and provides a means by which data may be entered into or read out of the system, other than by the keyboard 14 and display 28.
  • This input/output port may be adapted to interconnect such external devices as an acoustical coupler or scanning wand into the system bus.
  • the portion of the RAM memory 22 in which data is to be stored be separable into a number of independent blocks, or partitions, wherein the operator may arbitrarily select a partition into which data is to be entered.
  • the length of each partition prior to the entry of any data into the unit. Thereafter, the length of the individual partitions could not be changed. This necessarily resulted in an inefficient use of the memory, unless the operator could precisely determine the number of records which were to be stored in each of the partitions. If the operator guessed incorrectly at the outset, there might be inadequate space in a given partition to store all the records which needed to be stored therein, even though free memory space were available in other partitions.
  • a partitioning method which renders all of the free memory space available to each partition, as data is being entered into that partition.
  • the length of each of the partitions is determined only by the amount of data which is actually stored' therein. This length will vary as the amount of data stored in the partition is varied, with the result being that no excess memory space is wasted by being allocated to partitions not requiring that free space.
  • Figs. 3A-3C each represent that portion of memory 22 utilized for storage of data.
  • the memory is treated as a chain of sequential memory locations 34, with each location providing storage of a single data character.
  • This chain of memory locations 34 extends from a memory address 36, representing the lowest memory address at which data may be stored, to a memory address 38, corresponding to the highest memory address in which data may be stored.
  • this lower order memory address 36 will occasionally be referred to hereinafter as the start of data field address (SODF), whereas the higher order memory address will be referred to as the end of data field address (EODF).
  • SODF start of data field address
  • EODF end of data field address
  • this chain of memory locations is shown as being-separated into seven partitions, which together occupy the entire data field.
  • the shaded portion 40 of the data field represents that portion of the data field in which no data has yet been stored.
  • the unshaded portions represent the data blocks of the respective partitions.
  • the free memory 40 is located within partition 3, immediately adjacent the last data entry within that partition. Partition 3 is therefore said to be "open” in Fig. 3A, in the sense that data may be added to the data already stored within this partition.
  • the remaining partitions are "closed” in the sense that no additional memory space is available adjacent these partitions, hence no further data may be added to these partitions at this time.
  • Figs. 3B and 3C correspond to Fig. 3A, but illustrate the manner in which data is rearranged within the memory so as to open up other partitions within the memory, for example, partition 1.
  • the operator will depress a partition control button on the keyboard 14, shown labelled "partition”. Thereafter, the operator will depress one of the numeric keys 1-7 to identify which of the partitions the operator desires to enter data into.
  • These commands cause the microprocessor to jump into a procedure for rearranging the data within the memory so that the partition designated by the operator is opened, and all other partitions are closed.
  • Fig. 3B illustrates the contents of the memory in the middle of a data move operation resulting from a command by the operator that partition 1 be opened.
  • FIG. 3C illustrates the contents of the memory at the conclusion of the programmed operation to open partition 1.
  • the data within partition 2 has been moved to the end of the free memory space so that no free memory space exists between the end of partition 2 , and the beginning of partition 3.
  • partitions 1 and 2 have been redefined so that the free memory space is now considered as existing within partition 1, immediately following the last data entry therein, and so that partition 2 now includes only that memory space necessary to contain the data which has already been stored therein.
  • Fig. 3C the movement of partitions is completed with all of partitions 2-7 being closed, and partition 1 being opened. At this point, the operator is free to. enter data into the memory, with this data being entered sequentially following the last data entry into partition 1.
  • partition 3 the microprocessor moves the data about within the memory in exactly the reverse sequence illustrated in Figs. 3A-3C.
  • the boundaries of partitions 1 and 2 would first be redefined so that the free memory space existed at the top of partition 2, rather than at the bottom of partition 1, after which all of the data within partition 2 would be moved to the top of that partition. Then, the boundaries of partitions 2 and 3 would be redefined so that the free memory space would be considered as existing within partition 3, rather than partition 2.
  • partition 3 would be moved to the top of the free memory space, so that all of the free memory is now adjacent the last sequential data record entered in partition 3. Partition 3 will then be open, and available for further data entries. Other partitions will be opened in a similar manner, when selected by the operator.
  • Fig. 4 illustrates in greater detail the transition between the open partition (partition I) and the succeeding partition (partition I + 1), and is useful in understanding the nature of the pointers used in the dynamic partitioning procedure performed by the microprocessor.
  • the respective boxes 42 each represent a single character location within memory, wherein each of the character locations may be randomly addressed by the microprocessor.
  • a plurality of character locations are illustrated, extending from a lowest memory address of N and a highest memory address of M + 22.
  • a single "record” stored in memory comprises a string of sequentially characters within memory, with the various records being set apart from one another by special characters, referred to hereinafter as "delimiters".
  • the delimiters may, for example, be arithmatic expressions, such as "+” or "-”.
  • the memory location N+1 is illustrated as containing a delimiter, in this case defining the end of the last complete record in partition I.
  • Locations N+2 and N+3 are illustrated as containing characters representing an, as yet, incomplete record entered by the operator.
  • Locations N+4 to M do not as yet contain characters entered by the operator, and instead correspond to the free memory space 40 illustrated in Figs. 3A-3C.
  • This intervening free memory space are undefined, and may include any arbitrary and meaningless sequence of characters.
  • the microprocessor keeps track of the meaningful data entries by means of the various pointers, defined below. All of these free memory locations may be filled by the operator by entering characters through the keyboard 14.
  • Location M corresponds to the end of the free memory space, and represents the last character location in which data may be entered. When this location is filled, the entire memory will be filled and no further characters may be entered. Locations M+1 to M+15 will never contain data, as they instead represent a guard band separating partition I from partition I+1, the purpose of which is to prevent the accidental overlap of the two partitions.
  • the data stored within partition I+1 thus begins with location M+16, and extends on from there.
  • the first record stored within partition I+l, and, in fact, the first record stored in each of the partitions corresponds to a "header" identifying the source of the body of data stored within that partition.
  • Each of the seven partitions has three pointers associated with it which define the boundaries of that partition. These pointers serve the following functions:
  • This pointer will have value i dentifying the first character location in which a character for that partition is stored.
  • This pointer will have a value identifying the location of the last delimiter entered in that partition.
  • INPTR Input pointer During data entry, this pointer has a value identifying the next character location into which data is to be entered. In other words, INPTR will point to the character location following the last character entered in the open partition. This pointer is also used as a destination pointer in the data move procedures, described hereinafter.
  • RP Read pointer This pointer is used to identify the data record to be displayed. It will point to the delimiter immediately preceding the record to be displayed, and may be moved about from delimiter to delimiter in the open partition under control of the memory review keys on the keyboard 14. Also used as a general purpose pointer.
  • Fig. 5 is a flow chart which broadly illustrates the sequence of operations performed by the microprocessor 20 duririg data entry under control of program instructions contained within the ROM portion of memory 22. For simplicity of description, the portions of the operational flow dealing the display of data on the display 28 are not shown. This procedure. includes the following steps.
  • the microprocessor Upon initial application of power to the microprocessor within the data entry unit, the microprocessor will be automatically reset to begin programmed operation at the initial instructions contained within program memory. These instructions include those steps necessary to initialize the data entry unit for normal data entry operations. It, more specifically, includes the initialization of all the pointers associated with the seven partitions available to the user, and the automatic loading of headers into the first- data locations in each partition.
  • the microprocessor waits for the first character to be entered by the operator through the keyboard 14. A character so entered will be applied to the microprocessor 20 by means of the keyboard scanner 26.
  • step 104 When a character is entered, it will first be checked to determine whether or not it is a control code. If it is a control code, the MPU will continue with step 106. Otherwise, it will jump to step 108.
  • the MPU will jump to whatever control procedure is identified by that control code. Thus, for example, if a partition button has been depressed by the operator, the MPU will jump to and execute the partition procedure. Thereafter, the MPU will return to step 102 for reading the next character.
  • INPTR is then incremented by one so that it will point to the next available character location in memory.
  • the entire last record is compared with the entire record previous to that record to determine whether or not the two are the same. If the two records are not the same, then the MPU jumps back to step 102 to read the next entry by the operator. If the last two records entered by the operator are the same, however, the MPU continues with step 114.
  • step 114 the microprocessor will examine the sixth character position in the second previous record to determine whether or not a quantity character is already present. If not, then a quantity character of two will be inserted, and the delimiter moved up in memory by one character position.
  • variable character length records are usedj then some other means must be used to identify the quantity character field. This may be accomplished by including a unique character (i.e.. A) to separate the quantity character field from the rest of the record.
  • the microprocessor will operate, in step 114 above, to examine the second previous record to determine whether or not this unique character is carried within that field. If so, then the number following that alphanumeric character is merely incremented by one. If not, then that character is added to the second previous record, followed by the quantity character "2" and a delimiter. This is illustrated in Table II, below.
  • the operator may call certain control procedures by depressing the correspondingly labeled key on the keyboard 14.
  • the MPU will then jump into the appropriate procedure via step 106 of the data entry procedure.
  • the microprocessor 20 Upon first entering the partition procedure, the microprocessor 20 waits for the operator to enter a partition number via the keyboard 14. The variable PAR is then assigned this entered value, which identifies the partition which the operator would like to open.
  • variable PARMOD identifies the. particular partition being considered by the program at any given time.
  • the variable PARMOD is initialized to identify partition 2.
  • PARMOD is not initialized to identify partition 1, since the data block of partition 1 will always be located adjacent the SODF (start of the data field), and will therefore never have to be moved.
  • the highest order bit of the variable PARMOD will be set to a logic value of "1" for purposes which will become clearer hereinafter. The net result is that the variable PARMOD is initialized to a value of 82H.
  • the pointers for the partition identified by the variable PARMOD are retrieved from scratchpad memory and stored within, registers in the microprocessor so that they will be available for immediate use in the steps which follow.
  • variable PARMOD (ignoring the higher order bit) is compared with a variable PAR to determine whether or not the partition being examined is above or below the partition which the operator would like to open. If PARMOD is greater than
  • the partition being examined is above the partition to be opened, and the MPU jumps to step 216. Otherwise, the partition being examined by the microprocessor (MPU) is below the partition to be opened, and the MPU continues with step 208.
  • MPU microprocessor
  • the partition immediately below the partition being considered i.e., the PARMOD-1 partition
  • the partition immediately below the partition being considered is examined to determine whether or not the free memory is located within that partition. This is done by comparing the data stop pointer for that partition (identified in Fig. 6 as DSTP(P-l)) with the write pointer for that partition (identified in Fig. 6 as WP(P-1)). If the two pointers have the same value, then no free memory space exists between them, and the MPU jumps to step 212. Otherwise, the MPU continues with step 210.
  • the boundaries of the PARMOD partition and the PARMOD-1 partition are moved.
  • the DSTP pointer for the PARMOD-1 partition will be set equal to the present value of the write pointer for that partition, thus effectively eliminating any free memory space within the PARMOD-1 partition.
  • the HOME pointer for the PARMOD partition will be set equal to the present value of the write pointer for the PARMOD-1 partition plus a number corresponding to the number of character positions in the guard band which separates each two adjacent partitions from one another. In the example being described, this guardband is 16 characters in length. Free memory space now exists below the PARMOD partition, and the data within that partition may be moved down through the free space.
  • the data will be moved one character at a time from a position identified by a source register to a position identified by a destination register. After each character move, the source and destination registers will be incremented so as to point respectively to the next character to moved, and the position into which that charact is to be moved.
  • the input pointer may be used the destination pointer. Following the movemet of the entire PARMOD partition, the write point for that partition will be corrected by setting it equal to the present value of the input pointer, decremented by one.
  • variable PARMOD is incremented so that in the next cycle the partition immediately above the partition which has just been moved will be examined.
  • the MPU then returns to step 204.
  • the partition procedure will have moved the data block in the partition to be opened and all data blocks of the partitions below it to new positions . immediately adjacent one another and the lower boundary of the data memory SODF. Any free space remaining will therefore exist above the partition to be opened.
  • the data blocks of all of the partitions above the partition to be opened are moved upward so that they are adjacent one another and the upper boundary of the data memory EODF. All of the free memory space will then be located immediately above the partition to be opened. 216 In this step, the high bit of the variable PARMOD is examined. If it has a value of 1 (this only occurs on the first pass through decision block 216), the MPU will continue with step 218. Otherwise, the MPU will jump to step 222.
  • PARMOD is reinitialized to a value of seven, so that the movement of data blocks above the partition to be opened begins with the top partition. Also, the high bit of the variable PARMOD is cleared so that in previous passes through the decision block 216, steps 218 and 22 will be bypassed.
  • the pointers for partition 7 are loaded into the working registers of the MPU so as to be available for immediate use in the step which follow.
  • step 224 The DSTP and WP pointers of the PARMOD partition are compared to determine if they have the same values. If so, then no free memory space exists within that partition, and step 224 may be bypassed. The MPU will then jump to step 226. If the two variables do not have the same value. however, then free memory space exists within the partition, and the data must be moved up in memory. In this event, the MPU will continue with step 224.
  • step 224 data in the PARMOD partition is moved up until it is adjacent the data stop pointer DSTP of that partition.
  • this is accomplished by moving the data character-by-character from a location identified by a source pointer to a location identified by a destination pointer. Initially, the source pointer will have a value equal to the write pointer for that partition, whereas the destination pointer (which again, preferably, will be the input pointer), will have a value equal to the value of the data stop pointer
  • the HOME pointer for the PARMOD partition will be given a value equal to the input pointer INPTR, and the data stop pointer DSTP for the partition immediately below the PARMOD partition (i.e., the PARMOD-1 partition) will be moved up to the input pointer, minus a character length corresponding to the length of the guard band between partitions. 226
  • the variable PARMOD is decremented, to now identify the partition immediately below the partition which has just been examined.
  • variable PARMOD is compared with the variable PAR to determine whether or not the partition being examined is the same as the partition which is to be opened. If these two variables do not have the same value, then the MPU returns to step 204 to determine whether the new PARMOD partition needs to be moved, and to move it if is does.
  • step 230 If the two have the same value, however, then all data movement has been completed, and the MPU continues with step 230.
  • the partition pointers for the partition which has just been opened will be loaded into the working registers of the microprocessor so as to be available for use during the normal entry of data into that open partition. Also, the read pointer is set equal to the write pointer of the newly opened partition, and the input pointer is set equal to that value, incremented by one. The MPU will then return to the main body of program, shown in Fig. 5. Insert Procedure
  • Fig. 7 illustrates the procedure performed by the microprocessor in order to insert a new data record between two records previously entered.
  • the operator Prior to calling this procedure, the operator will move the read pointer RP to the position in memory at which the insert is to be placed.
  • the keyboard 14 includes two keys for this purpose, labeled as "memory review" keys. When one of these keys is depressed, the microprocessor will either increment or decrement the read pointer (depending upon the key depressed) to point to the record immediately prior to or following the record at which it had previously pointed. In this fashion, the read pointer may be moved about within the open partition to locate a particular data entry. When the entry is located which follows the position at which the insert is to be inserted, the operator will depress the insert key on the keyboard 14.
  • the insert procedure includes the following steps: 300 When the operator depresses the insert key, the microprocessor first enters a wait loop, where it waits until the key has been depressed continuously for a given length of time, say three seconds. The purpose for this wait loop is to assure that the insert function is not accidentally called . If the operator does not depress the insert key for a long enough period of time, the MPU will jump out of step 300, and return to the data entry procedure. Also in this step, a counting variable N is initialized to a value of 0.
  • the microprocessor now waits for a character to be entered by the operator.
  • the character entered by the operator is then stored within a temporary location in memory (which may be a register within the microprocessor), and the counting variable is incremented by 1.
  • step 304 The character which has thus been entered is examined to determine if it is a delimiter. If the character is a delimiter, then the record has been completely entered, and the insertion process proceeds to step 306. Otherwise, the MPU returns to step 302 to await the entry of the next character in that record.
  • 306 Beginning with the last delimiter entered regularly into the open partition, and including all of the data between that location and the present position of the read pointer, all of the data characters are moved up in memory by N character locations, thereby providing a gap of N character spaces between the record identified by the read pointer and the record immediately previous to that. The read, write, and input pointers are then all incremented by N.
  • the record entered by the operator for insertion into the data is then moved from the temporary storage location into the newly created gap in the data, thus again creating a continuous chain of data, substantially without gaps.
  • the MPU then, returns to the data entry procedure.
  • This procedure is used to delete a selected entry by moving all of the data located above the record to be deleted down by the length of that record.
  • the operator will first position the read pointer RP so that the record to be deleted is displayed on the display 28. This, again, will be accomplished by depressing the memory review keys on the keyboard 14 to increment or decrement the position of the read pointer. Then, the operator simply depresses the delete button, causing the microprocessor to jump into the delete routine, and delete the entry.
  • This procedure includes the following steps:
  • step 400 is similar to step 300 in that the microprocessor will monitor the delete key to determine whether or not it is held down for a predetermined length of time, for example three seconds. If held down for this predetermined length of time, the microprocessor will continue on with step 402. If the delete key is released prior to the expiration of this predetermined length of time, however, the microprocessor will simply return to the body of the program, essentially ignoring the actuation of the delete key. 402 In this step, the microprocessor counts the number of characters from the present position of the read pointer (which will point to the delimiter immediately prior to the data record being displayed), and the next succeeding delimiter. The resulting numeric value then defines the character length N of the record to be deleted.
  • a predetermined length of time for example three seconds. If held down for this predetermined length of time, the microprocessor will continue on with step 402. If the delete key is released prior to the expiration of this predetermined length of time, however, the microprocessor will simply return to the body of the program, essentially
  • the send procedure is used to send the data which has been stored within the solid state memory to a remote data collection point through the input/output port 32, which will be connected to an acoustical coupler data set, or other data transmission means by way of the connector 18.
  • the operator will first enter a sequence of characters identifying the sequence in which the partitions are to be transmitted. If, for example, the operator desires to send partition 3 first, then partition 7, then partition 3 once again, and thereafter partitions 1 and 2, the operator will enter the characters 3, 7, 3, 1, 2 in the normal fashion. Through the normal data entry operation of the microprocessor, as illustrated in Fig. 5, these characters will be entered into the open partition immediately following the last complete data record.
  • the send button on the keyboard 14 will be depressed.
  • the microprocessor will then jump into the send procedure whose flow chart is shown in Fig. 9, and under control of this procedure will send the partitions via the acoustical coupler or other output device in the requested sequence.
  • the send procedure includes the following steps:
  • the microprocessor relocates the "send list" S (i.e., those characters stored in character locations between the write pointer an the present location of the input pointer) in a temporary storage location, for example the working registers of the microprocessor itself.
  • a delimiter will also be entered at the conclusion of this send list in the working registers of the microprocessor, to define the end of the list.
  • a counting variable N is initialized to a value of 1.
  • the microprocessor examines the Nth entry in the send list S to determine whether or not that entry is a delimiter. If it is not a delimiter, then the MPU continues with step 506. If it is a delimiter, however, then all of the partitions identified in the send list have been transmitted, and the send procedure is completed. In this event, the microprocessor jumps out of the send procedure and returns to the body of the program, shown in Fig. 5.
  • the Nth item on the send list is not a delimiter, it is a partition number identifying a partition which is to be transmitted.
  • that partition is transmitted, one character at a time, beginning with the location in memory identified by the home pointer of that partition, and ending with the character stored in the location identified by the write pointer for that partition.
  • the counting variable N is incremented, and the MPU returns to step 504. The procedure will jump back and forth between steps 504 and 506 until all partitions listed in the send list have been transmitted.

Abstract

Un dispositif portatif, manuel, d'entree de donnees (10) comprend une memoire a circuits integres (22) pour assurer le stockage en vrac de donnees entrees par l'intermediaire d'un clavier (14), d'un crayon explorateur, ou autre moyen d'entree de donnees. Un microprocesseur (20) commande les diverses operations effectuees par l'appareil, y compris le stockage des donnees en memoire et la gestion de la memoire. Pendant l'operation, la memoire est definie pour comporter un certain nombre de sections ou "partitions" de stockage de donnees independantes (Fig. 3). Chaque "partition" comprend un bloc de donnees contenant des donnees apparentees qui ont ete entrees dans la "partition". Tout l'espace de memoire libre restant (40) est situe dans une seule "partition", adjacente au bloc de donnees de cette "partition". Des donnees peuvent ainsi etre ajoutees a cette "partition" en entrant les donnees dans l'espace de memoire libre adjacent au bloc de donnees. Lorsque des donnees doivent etre entrees dans une "partition" differente, les blocs de donnees sont repositionnes dans la memoire de telle sorte que l'espace de memoire libre se trouve dans cette "partition" differente, adjacent a son bloc de donnees. Par consequent, la dimension de chaque "partition" n'est pas fixe, mais varie avec les donnees entrees. Le dispositif d'entree de donnees comporte aussi des methodes d'envoi d'une "partition" selectionnee dans un ordre arbitraire quelconque a un dispositif externe, et d'edition du bloc de donnees de la "partition" en introduisant ou en effacant des enregistrements de donnees de longueurs variables.A portable, manual data entry device (10) comprises an integrated circuit memory (22) for storing bulk data entered via a keyboard (14), an exploration pencil, or other means of data entry. A microprocessor (20) controls the various operations performed by the apparatus, including the storage of data in memory and the management of the memory. During the operation, the memory is defined to include a certain number of sections or "partitions" of independent data storage (Fig. 3). Each "partition" includes a data block containing related data that has been entered into the "partition". All the remaining free memory space (40) is located in a single "partition", adjacent to the data block of this "partition". Data can thus be added to this "partition" by entering the data in the free memory space adjacent to the data block. When data is to be entered into a different "partition", the data blocks are repositioned in memory so that free memory space is located in this different "partition", adjacent to its data block. Therefore, the size of each "partition" is not fixed, but varies with the data entered. The data entry device also comprises methods of sending a selected "partition" in any arbitrary order to an external device, and of editing the data block of the "partition" by inserting or deleting variable length data records.

Description

PORTABLE DATA ENTRY DEVICE INCLUDING DYNAMIC PARTITIONING OF DATA MEMORY
Background and Field of the Invention
The present invention relates to the art of portable, handheld data entry devices, and more particularly to such a device capable of storing data in a number of partitions. Recently, portable data entry devices have come into wide acceptance in those businesses in which large amounts of data must be collected on a daily basis, and transmitted to a central data collection point. They are widely used, for example, in supermarkets and other retail business endeavors to collect stock order information or other inventory control data.
A portable data entry device of this type conventionally includes some form of bulk data storage, such as magnetic tape or solid state memory, into which data may be entered by means of a keyboard, scanning
"wand", or other input device. The data collected by the unit is transmitted directly from the device to a central collection point over ordinary telephone- lines. In many cases, the business which use these portable handheld data entry devices are organized into a number of departments which must each maintain inventory levels independently of the others. Moreover, in certain applications a single handheld device may be used at several stores. It is therefore desirable that the data entry device include some means of segregating the information from each data collection locality so that it may be handled independently of the others. To this end, some of the portable data entry devices presently in use are controllable by the operator to define separate portions of memory, known as partitions, into which data may be selectively entered. Prior to beginning the data collection process, the operator will define the number and length of the partitions which he intends to use. Thereafter, during the actual data collection, the partition structure is fixed and may not be changed.
This type of system, however, does not make efficient use of the memory, in that a given partition may fill up more rapidly than the others. Since the partitions are fixed, the operator is unable to correct any initial miscalculation as to the required size of a partition.
Other factors also impact on the efficiency of memory usage. When a scanning wand is being used for data entry, for example, some operators have developed the habit of scanning a bar code two or more times when two or more cases of the item are to be ordered. Although this expedites the entry of data into the unit, it also results in the inefficient use of memory, since a single item code is stored multiple times. Moreover, certain editing procedures also hinder efficient use of memory. Thus, in some editing techniques, an item is "deleted", not by eliminating the item from the data file, but by entering another item which will cancel the first item when the data is collated at the central collection point.
Summary of the Invention ϊt would be desirable to provide a system in which data memory was used more efficiently than had been the case in the past. It would more specifically be desirable to provide a portable data entry device including a partitioned data memory wherein the partition lengths were not fixed during the data collection process, but rather had data storage lengths which varied as required by the entry of data into the unit.
There is disclosed herein a portable, handheld data entry device which accomplishes the goal of providing efficient use of memory by dynamically allocating the size of the various partitions as needed. To this end, the length of a given partition is fully flexible throughout the data collection process.
The data entered by the operator is recorded in the partition selected by him, with sequentially entered data for a given partition being stored within sequential locations in the memory. To enter data into a different partition, the operator will actuate the keyboard to request entry into that partition. The electronics within the portable, handheld data entry unit will then relocate the data within the memory such that all of the free memory space is adjacent the data previously entered into that partition. Because of this, all of the remaining available memory space is open to each partition when data is being entered in that partition. In the disclosed embodiment, the data entry unit includes a microprocessor which operates under program control. Whenever the operator requests the opening of a partition, the microprocessor executes a partition procedure. This procedure causes the relocation of all of the data which has already been entered in that partition, as well as the data contained at locations "below" (i.e., having memory addresses which are smaller than the memory addresses within the selected partition) as far down in memory as possible. All data which is "above" (i.e., stored in the memory at locations having higher addresses than the addresses contained within the selected partition) are moved as far up in memory as possible. Through this operation, all of the free memory space is relocated immediately above the selected partition. The disclosed portable, handheld data entry device also includes a method of editing the variable length records stored within the memory without producing gaps in memory, or entering redundant records. Record deletion is accomplished by moving all of the data above the record to be deleted down by the length of that record. The record to be deleted is actually eliminated from data storage, and a correspondingly sized free memory space is tacked onto the end of the data. Insertions, on the other hand, are accomplished by first determining the character length of the data record to be inserted, parting the data by a corresponding number of character storage locations, and inserting the data record in the memory gap thus created.
Efficient use of memory is also achieved by eliminating redundant successive entries into the memory. Thus, each time the operator enters the same record into the memory (as by wand scanning an item label plural times) the record is stored memory only once, with an appropriate "quantity" character tacked onto the end thereof to identify the number of times which that record was. successively entered in memory. Moreover, the various defined partitions in memory can be transmitted to an external device in any desired order. The operator will first enter a list of partitions into the device, with this list indicating the order in which the partitions are to be transmitted. The device will then transmit each listed partition one after another, in the order in which they are listed.
Brief Description of the Drawings The foregoing and other objects and advantages of the present invention will become more readily apparent from the following detailed description, as taken in conjunction with the accompanying drawings, wherein: Fig. 1 is an illustration of a portable, handheld data entry device of the type in which the present invention i s used ;
Fig. 2 is a general block diagram of the electronics carried within the portable data entry device of Fig. 1; Figs. 3A-3C are schematic representations of the data stored within memory, useful in understanding the operation of the dynamic partitioning method disclosed herein;
Fig. 4 is a more detailed representation of the manner in which the individual characters are stored within the memory; Fig. 5 is a broad flow chart diagramming the sequence of operation of the portable, handheld data entry device;
Fig. 6 is a more detailed flow chart illustrating the manner in which the portable data entry device accomplishes the dynamic partitioning function;
Fig. 7 is a broad flow chart illustrating the sequence of operation of the portable data entry device in performing an insert operation;
Fig. 8 is a flow chart illustrating the sequence of operation of the portable data entry device in performing a delete operation; and,
Fig. 9 is a flow chart illustrating the sequence of operation of the portable data entry device in performing a "send" function.
Detailed Description
Fig. 1 broadly illustrates a portable, handheld data entry device of the type in which the present invention.
This portable data entry device 10 includes a housing 12 within which will be. located the electronics, including a solid state memory and a display device, and a. battery power source for maintaining operation of the device, independent of external power sources. This portable data entry device also includes a keyboard 14 for entering functional commands and data into the device. A display window 16 permits the operator to view the display mounted within the housing 12. This display is controlled by the electronics to display not only the data stored in the memory, but also various prompting or operational messages. The portable device also includes one or more connectors 18 for permitting such external devices as a scanning wand or an acoustical coupler, to be interconnected with the unit. The scanning wand is used to facilitate the entry of data into the portable data entry device, while the acoustical coupler, on the other hand, is used to communicate the data stored within the memory to a central data collection point over conventional telephone lines.
Fig. 2 is a broad block diagram of the electronics carried within the portable data entry device 10 of Fig. 1. As can be seen in this figure, the system is controlled by a microprocessor (MPU) 20 which is interconnected with a solid state memory 22 and various other peripheral circuits by means of a system bus 24. The system bus 24 includes data, control, and address lines as required by the microprocessor 20.
The solid state memory 22 will preferably include both read only memory (ROM) and random access memory (RAM). Stored within the ROM is the control programs which control the operation of the microprocessor 20, as well a various look-up tables containing, for example, prompting messages, etc. The RAM is used for storing the data collected by the unit, and also for various scratch pad purposes. The keyboard 14 is interfaced with the microprocessor 20 by means of a keyboard scanner 26, which scans the keys under microprocessor control and provides multibit codes to the microprocessor through the system bus 24, identifying the various keys as they are depressed by the operator. This data is supplied for operator viewing on a display 28, viewable through the display window 16 shown in Fig. 1. This display 28 is interfaced with the system bus 24 by means of a display control circuit 30, which may take any conventional form.
An input/output port 32 is interconnected between the connector 18 and the system bus 24, and provides a means by which data may be entered into or read out of the system, other than by the keyboard 14 and display 28. This input/output port may be adapted to interconnect such external devices as an acoustical coupler or scanning wand into the system bus.
As stated previously, it is preferable in a system of this sort, that the portion of the RAM memory 22 in which data is to be stored be separable into a number of independent blocks, or partitions, wherein the operator may arbitrarily select a partition into which data is to be entered. In previous systems, it was necessary to define the length of each partition prior to the entry of any data into the unit. Thereafter, the length of the individual partitions could not be changed. This necessarily resulted in an inefficient use of the memory, unless the operator could precisely determine the number of records which were to be stored in each of the partitions. If the operator guessed incorrectly at the outset, there might be inadequate space in a given partition to store all the records which needed to be stored therein, even though free memory space were available in other partitions.
In accordance with the present invention, a partitioning method is used which renders all of the free memory space available to each partition, as data is being entered into that partition. Rather than having a fixed length, the length of each of the partitions is determined only by the amount of data which is actually stored' therein. This length will vary as the amount of data stored in the partition is varied, with the result being that no excess memory space is wasted by being allocated to partitions not requiring that free space.
The manner in which this is carried out may be more readily understood by reference to Figs. 3A-3C, which each represent that portion of memory 22 utilized for storage of data. In this representation, the memory is treated as a chain of sequential memory locations 34, with each location providing storage of a single data character. This chain of memory locations 34 extends from a memory address 36, representing the lowest memory address at which data may be stored, to a memory address 38, corresponding to the highest memory address in which data may be stored. For convenience of description, this lower order memory address 36 will occasionally be referred to hereinafter as the start of data field address (SODF), whereas the higher order memory address will be referred to as the end of data field address (EODF).
In Figs. 3A-3C, this chain of memory locations is shown as being-separated into seven partitions, which together occupy the entire data field. The shaded portion 40 of the data field represents that portion of the data field in which no data has yet been stored. The unshaded portions represent the data blocks of the respective partitions. In Fig. 3A, the free memory 40 is located within partition 3, immediately adjacent the last data entry within that partition. Partition 3 is therefore said to be "open" in Fig. 3A, in the sense that data may be added to the data already stored within this partition. The remaining partitions are "closed" in the sense that no additional memory space is available adjacent these partitions, hence no further data may be added to these partitions at this time.
Figs. 3B and 3C correspond to Fig. 3A, but illustrate the manner in which data is rearranged within the memory so as to open up other partitions within the memory, for example, partition 1. To initiate this operation, the operator will depress a partition control button on the keyboard 14, shown labelled "partition". Thereafter, the operator will depress one of the numeric keys 1-7 to identify which of the partitions the operator desires to enter data into. These commands cause the microprocessor to jump into a procedure for rearranging the data within the memory so that the partition designated by the operator is opened, and all other partitions are closed. Fig. 3B illustrates the contents of the memory in the middle of a data move operation resulting from a command by the operator that partition 1 be opened. In this figure, all of the data within partition 3 has been moved to the end of the free memory 40, so that no free memory exists between the end of partition 3, and partition 4. Furthermore, the boundaries of partitions 2 and 3 have been redefined so that the free memory 40 is now considered part of partition 2, immediately following the last data entry therein, rather than being part of partition 3. Fig. 3C illustrates the contents of the memory at the conclusion of the programmed operation to open partition 1. In this figure, the data within partition 2 has been moved to the end of the free memory space so that no free memory space exists between the end of partition 2 , and the beginning of partition 3. Furthermore, the boundaries of partitions 1 and 2 have been redefined so that the free memory space is now considered as existing within partition 1, immediately following the last data entry therein, and so that partition 2 now includes only that memory space necessary to contain the data which has already been stored therein. Thus, in Fig. 3C, the movement of partitions is completed with all of partitions 2-7 being closed, and partition 1 being opened. At this point, the operator is free to. enter data into the memory, with this data being entered sequentially following the last data entry into partition 1.
Of course, the operator may select any other partition, if he so desires, by merely depressing the "partition" button, followed once again by a partition number. In the event that partition 3 is selected, for example, the microprocessor moves the data about within the memory in exactly the reverse sequence illustrated in Figs. 3A-3C. Thus, the boundaries of partitions 1 and 2 would first be redefined so that the free memory space existed at the top of partition 2, rather than at the bottom of partition 1, after which all of the data within partition 2 would be moved to the top of that partition. Then, the boundaries of partitions 2 and 3 would be redefined so that the free memory space would be considered as existing within partition 3, rather than partition 2. Finally, all of the data within partition 3 would be moved to the top of the free memory space, so that all of the free memory is now adjacent the last sequential data record entered in partition 3. Partition 3 will then be open, and available for further data entries. Other partitions will be opened in a similar manner, when selected by the operator.
In order to perform this dynamic partitioning function, various "pointers" are defined which designate the beginning and end of each partition, etc. These pointers are, in actuality, memory addresses which specify a particular location within the data field, and can be thought of as "pointing" to that location within the data field. Each of the partitions has three pointers: All partition pointers are stored within a specific area in scratch pad memory (a portion of RAM memory outside of the data field). These pointers may be recalled by the microprocessor as needed. Fig. 4 illustrates in greater detail the transition between the open partition (partition I) and the succeeding partition (partition I + 1), and is useful in understanding the nature of the pointers used in the dynamic partitioning procedure performed by the microprocessor. In Fig. 4, the respective boxes 42 each represent a single character location within memory, wherein each of the character locations may be randomly addressed by the microprocessor. In Fig. 4, a plurality of character locations are illustrated, extending from a lowest memory address of N and a highest memory address of M + 22.
A single "record" stored in memory comprises a string of sequentially characters within memory, with the various records being set apart from one another by special characters, referred to hereinafter as "delimiters". The delimiters may, for example, be arithmatic expressions, such as "+" or "-". In Fig. 4, the memory location N+1 is illustrated as containing a delimiter, in this case defining the end of the last complete record in partition I. Locations N+2 and N+3 are illustrated as containing characters representing an, as yet, incomplete record entered by the operator. Locations N+4 to M do not as yet contain characters entered by the operator, and instead correspond to the free memory space 40 illustrated in Figs. 3A-3C. The contents of this intervening free memory space are undefined, and may include any arbitrary and meaningless sequence of characters. The microprocessor keeps track of the meaningful data entries by means of the various pointers, defined below. All of these free memory locations may be filled by the operator by entering characters through the keyboard 14.
Location M corresponds to the end of the free memory space, and represents the last character location in which data may be entered. When this location is filled, the entire memory will be filled and no further characters may be entered. Locations M+1 to M+15 will never contain data, as they instead represent a guard band separating partition I from partition I+1, the purpose of which is to prevent the accidental overlap of the two partitions. The data stored within partition I+1 thus begins with location M+16, and extends on from there. The first record stored within partition I+l, and, in fact, the first record stored in each of the partitions, corresponds to a "header" identifying the source of the body of data stored within that partition. Each of the seven partitions has three pointers associated with it which define the boundaries of that partition. These pointers serve the following functions:
POINTER DESCRIPTION HOME (I) Home pointer of partition
(I). This pointer will have value i dentifying the first character location in which a character for that partition is stored.
WP(I) Write pointer of partition
(I). This pointer will have a value identifying the location of the last delimiter entered in that partition.
DSTP(I) Data stop pointer of, partition
(I). This pointer will have a value identifying the last location in that partition in which a data character may be entered. When partition (I) is closed, DSTP(I) will equal WP(I). When partition (I) is open, however, the entire free memory space will intervene in the locations between DSTP(I) and WP(I). In addition to these pointers, two other pointers, INPTR and RP, are used by the microprocessor during programmed operation. These pointers exist independently of the various partitions, and may have values identifying locations within any partition, at a given time. These pointers serve the following functions:
POINTER DESCRIPTION
INPTR Input pointer. During data entry, this pointer has a value identifying the next character location into which data is to be entered. In other words, INPTR will point to the character location following the last character entered in the open partition. This pointer is also used as a destination pointer in the data move procedures, described hereinafter.
RP Read pointer. This pointer is used to identify the data record to be displayed. It will point to the delimiter immediately preceding the record to be displayed, and may be moved about from delimiter to delimiter in the open partition under control of the memory review keys on the keyboard 14. Also used as a general purpose pointer.
DATA ENTRY PROCEDURE
Fig. 5 is a flow chart which broadly illustrates the sequence of operations performed by the microprocessor 20 duririg data entry under control of program instructions contained within the ROM portion of memory 22. For simplicity of description, the portions of the operational flow dealing the display of data on the display 28 are not shown. This procedure. includes the following steps.
Step No. Description
100 Upon initial application of power to the microprocessor within the data entry unit, the microprocessor will be automatically reset to begin programmed operation at the initial instructions contained within program memory. These instructions include those steps necessary to initialize the data entry unit for normal data entry operations. It, more specifically, includes the initialization of all the pointers associated with the seven partitions available to the user, and the automatic loading of headers into the first- data locations in each partition.
102. Following the initialization procedure, the microprocessor waits for the first character to be entered by the operator through the keyboard 14. A character so entered will be applied to the microprocessor 20 by means of the keyboard scanner 26.
104 When a character is entered, it will first be checked to determine whether or not it is a control code. If it is a control code, the MPU will continue with step 106. Otherwise, it will jump to step 108.
106 In the event that the character entered by the operator is a control code, indicating that a control key has been depressed by the operator, the MPU will jump to whatever control procedure is identified by that control code. Thus, for example, if a partition button has been depressed by the operator, the MPU will jump to and execute the partition procedure. Thereafter, the MPU will return to step 102 for reading the next character.
Xn this step, the character entered by the operator (which must be a data character) is entered into the next sequential location in memory, identified by the input pointer INPTR.
INPTR is then incremented by one so that it will point to the next available character location in memory.
The last entered character is examined to see if it is a delimiter, indicating that the record being entered is completed. If it is not a delimiter, then the MPU jumps back to step 102 to read the next character entered by the operator. Otherwise, the MPU continues with step 112.
The entire last record is compared with the entire record previous to that record to determine whether or not the two are the same. If the two records are not the same, then the MPU jumps back to step 102 to read the next entry by the operator. If the last two records entered by the operator are the same, however, the MPU continues with step 114.
114 The number carried in the "quantity" field of the second previous record is incremented, if no quantity field yet exists in the second previous record, one is tacked on and given an initial value of 2. The record just. entered is then deleted by simply moving the write pointer to the delimiter of the second previous record, and the input pointer to the character field following - the one identified by the write pointer.
The operation of the procedure described above improves the efficiency of use of the memory by eliminating sequential identical entries in the memory, and replacing them by a simple number indicating the number of times which that record had been repeated. The following tables illustrate the entries by the operator, and the contents of memory resulting from the inclusion of those entries. In table 1, fixed character length records are employed (each five characters in length) so that the quantity character may be readily identified simply by the presence of an additional character (i.e., the sixth character in this example). Thus, in step 114 above, the microprocessor will examine the sixth character position in the second previous record to determine whether or not a quantity character is already present. If not, then a quantity character of two will be inserted, and the delimiter moved up in memory by one character position.
If a quantity character is already present in a quanitity character field, however, then this character will merely be incremented.
TABLE 1
Data Record Entered Memory Contents
20530 20530+ 75763 20530+75763+ 20530 20530+75763+20530+ 20530 20530+75763+205302+ 20530 20530+75763+205303+ 20530 20530+75763+205304+ 75763 20530+75763+205304+75763+
In the event that the portable data entry device is operated in a mode wherein variable character length records are usedj then some other means must be used to identify the quantity character field. This may be accomplished by including a unique character (i.e.. A) to separate the quantity character field from the rest of the record. In this mode, the microprocessor will operate, in step 114 above, to examine the second previous record to determine whether or not this unique character is carried within that field. If so, then the number following that alphanumeric character is merely incremented by one. If not, then that character is added to the second previous record, followed by the quantity character "2" and a delimiter. This is illustrated in Table II, below.
TABLE II
Data Record Entered Memory Contents
20530 20530+ 75763 20530+75763+ 20530 20530+75763+20530+ 20530 20530+75763+20530A2+
As stated previously, the operator may call certain control procedures by depressing the correspondingly labeled key on the keyboard 14. The MPU will then jump into the appropriate procedure via step 106 of the data entry procedure. Several of these procedures will now be described in detail.
Partition Procedure
When the operator desires to enter data in a partition other than the one into which data is presently being entered, the operator will depress the partition control key on the keyboard 14 of the portable data entry unit. This will cause the microprocessor to jump into a partition procedure, via step 106 of Fig. 5. This procedure, shown in flow chart format in Fig. 6, includes the following steps:
Step No. Description
200 Upon first entering the partition procedure, the microprocessor 20 waits for the operator to enter a partition number via the keyboard 14. The variable PAR is then assigned this entered value, which identifies the partition which the operator would like to open.
202 In the partition procedure which is being described, the partitions are moved about one at a time. The variable PARMOD identifies the. particular partition being considered by the program at any given time. In this step, the variable PARMOD is initialized to identify partition 2. PARMOD is not initialized to identify partition 1, since the data block of partition 1 will always be located adjacent the SODF (start of the data field), and will therefore never have to be moved. Also in this step, the highest order bit of the variable PARMOD will be set to a logic value of "1" for purposes which will become clearer hereinafter. The net result is that the variable PARMOD is initialized to a value of 82H.
204 The pointers for the partition identified by the variable PARMOD are retrieved from scratchpad memory and stored within, registers in the microprocessor so that they will be available for immediate use in the steps which follow.
206 The variable PARMOD (ignoring the higher order bit) is compared with a variable PAR to determine whether or not the partition being examined is above or below the partition which the operator would like to open. If PARMOD is greater than
PAR, then the partition being examined is above the partition to be opened, and the MPU jumps to step 216. Otherwise, the partition being examined by the microprocessor (MPU) is below the partition to be opened, and the MPU continues with step 208.
208 In this step, the partition immediately below the partition being considered (i.e., the PARMOD-1 partition) is examined to determine whether or not the free memory is located within that partition. This is done by comparing the data stop pointer for that partition (identified in Fig. 6 as DSTP(P-l)) with the write pointer for that partition (identified in Fig. 6 as WP(P-1)). If the two pointers have the same value, then no free memory space exists between them, and the MPU jumps to step 212. Otherwise, the MPU continues with step 210.
Before moving the data across the free memory, the boundaries of the PARMOD partition and the PARMOD-1 partition are moved. Thus, the DSTP pointer for the PARMOD-1 partition will be set equal to the present value of the write pointer for that partition, thus effectively eliminating any free memory space within the PARMOD-1 partition. Then, the HOME pointer for the PARMOD partition will be set equal to the present value of the write pointer for the PARMOD-1 partition plus a number corresponding to the number of character positions in the guard band which separates each two adjacent partitions from one another. In the example being described, this guardband is 16 characters in length. Free memory space now exists below the PARMOD partition, and the data within that partition may be moved down through the free space. The data will be moved one character at a time from a position identified by a source register to a position identified by a destination register. After each character move, the source and destination registers will be incremented so as to point respectively to the next character to moved, and the position into which that charact is to be moved. The input pointer may be used the destination pointer. Following the movemet of the entire PARMOD partition, the write point for that partition will be corrected by setting it equal to the present value of the input pointer, decremented by one.
212 The value of PARMOD is compared with seven to determine whether or not all of the partitions have been moved. If PARMOD is equal to seven, then all of the seven partitions have been, moved, as necessary, to close all of partitions 1-7. This, of course, will only occur when partition seven is to be opened. In this event, the MPU will jump to step 230. If PARMOD is not equal to seven, however, the MPU will continue with step 214.
214 In this step, the variable PARMOD is incremented so that in the next cycle the partition immediately above the partition which has just been moved will be examined. The MPU then returns to step 204.
If the partition to be opened is not partition seven, then at some point PARMOD will be greater than PAR. When this occurs, the partition procedure will have moved the data block in the partition to be opened and all data blocks of the partitions below it to new positions . immediately adjacent one another and the lower boundary of the data memory SODF. Any free space remaining will therefore exist above the partition to be opened. In subsequent steps, the data blocks of all of the partitions above the partition to be opened are moved upward so that they are adjacent one another and the upper boundary of the data memory EODF. All of the free memory space will then be located immediately above the partition to be opened. 216 In this step, the high bit of the variable PARMOD is examined. If it has a value of 1 (this only occurs on the first pass through decision block 216), the MPU will continue with step 218. Otherwise, the MPU will jump to step 222.
218 PARMOD is reinitialized to a value of seven, so that the movement of data blocks above the partition to be opened begins with the top partition. Also, the high bit of the variable PARMOD is cleared so that in previous passes through the decision block 216, steps 218 and 22 will be bypassed.
220 In this step, the pointers for partition 7 are loaded into the working registers of the MPU so as to be available for immediate use in the step which follow.
222 The DSTP and WP pointers of the PARMOD partition are compared to determine if they have the same values. If so, then no free memory space exists within that partition, and step 224 may be bypassed. The MPU will then jump to step 226. If the two variables do not have the same value. however, then free memory space exists within the partition, and the data must be moved up in memory. In this event, the MPU will continue with step 224.
224 In this step, data in the PARMOD partition is moved up until it is adjacent the data stop pointer DSTP of that partition. As in step 210, this is accomplished by moving the data character-by-character from a location identified by a source pointer to a location identified by a destination pointer. Initially, the source pointer will have a value equal to the write pointer for that partition, whereas the destination pointer (which again, preferably, will be the input pointer), will have a value equal to the value of the data stop pointer
DSTP. When all of the data has been moved up, the value of the pointers will be corrected. Thus, the HOME pointer for the PARMOD partition will be given a value equal to the input pointer INPTR, and the data stop pointer DSTP for the partition immediately below the PARMOD partition (i.e., the PARMOD-1 partition) will be moved up to the input pointer, minus a character length corresponding to the length of the guard band between partitions. 226 The variable PARMOD is decremented, to now identify the partition immediately below the partition which has just been examined.
228 The variable PARMOD is compared with the variable PAR to determine whether or not the partition being examined is the same as the partition which is to be opened. If these two variables do not have the same value, then the MPU returns to step 204 to determine whether the new PARMOD partition needs to be moved, and to move it if is does.
If the two have the same value, however, then all data movement has been completed, and the MPU continues with step 230.
230 All of the data movement having been completed, the partition pointers for the partition which has just been opened will be loaded into the working registers of the microprocessor so as to be available for use during the normal entry of data into that open partition. Also, the read pointer is set equal to the write pointer of the newly opened partition, and the input pointer is set equal to that value, incremented by one. The MPU will then return to the main body of program, shown in Fig. 5. Insert Procedure
Fig. 7 illustrates the procedure performed by the microprocessor in order to insert a new data record between two records previously entered. Prior to calling this procedure, the operator will move the read pointer RP to the position in memory at which the insert is to be placed. The keyboard 14 includes two keys for this purpose, labeled as "memory review" keys. When one of these keys is depressed, the microprocessor will either increment or decrement the read pointer (depending upon the key depressed) to point to the record immediately prior to or following the record at which it had previously pointed. In this fashion, the read pointer may be moved about within the open partition to locate a particular data entry. When the entry is located which follows the position at which the insert is to be inserted, the operator will depress the insert key on the keyboard 14. The record to be entered at the position identified by the read pointer will then be entered in a normal manner by the operator. As soon as the delimiter is entered by the operator, the insert procedure will automatically move the insert record into the appropriate location within memory. The insert procedure includes the following steps: 300 When the operator depresses the insert key, the microprocessor first enters a wait loop, where it waits until the key has been depressed continuously for a given length of time, say three seconds. The purpose for this wait loop is to assure that the insert function is not accidentally called . If the operator does not depress the insert key for a long enough period of time, the MPU will jump out of step 300, and return to the data entry procedure. Also in this step, a counting variable N is initialized to a value of 0.
302 The microprocessor now waits for a character to be entered by the operator. The character entered by the operator is then stored within a temporary location in memory (which may be a register within the microprocessor), and the counting variable is incremented by 1.
304 The character which has thus been entered is examined to determine if it is a delimiter. If the character is a delimiter, then the record has been completely entered, and the insertion process proceeds to step 306. Otherwise, the MPU returns to step 302 to await the entry of the next character in that record. 306 Beginning with the last delimiter entered regularly into the open partition, and including all of the data between that location and the present position of the read pointer, all of the data characters are moved up in memory by N character locations, thereby providing a gap of N character spaces between the record identified by the read pointer and the record immediately previous to that. The read, write, and input pointers are then all incremented by N.
308 The record entered by the operator for insertion into the data is then moved from the temporary storage location into the newly created gap in the data, thus again creating a continuous chain of data, substantially without gaps. The MPU then, returns to the data entry procedure.
Delete Procedure
This procedure is used to delete a selected entry by moving all of the data located above the record to be deleted down by the length of that record. To utilize this procedure, the operator will first position the read pointer RP so that the record to be deleted is displayed on the display 28. This, again, will be accomplished by depressing the memory review keys on the keyboard 14 to increment or decrement the position of the read pointer. Then, the operator simply depresses the delete button, causing the microprocessor to jump into the delete routine, and delete the entry. This procedure includes the following steps:
400 This step is similar to step 300 in that the microprocessor will monitor the delete key to determine whether or not it is held down for a predetermined length of time, for example three seconds. If held down for this predetermined length of time, the microprocessor will continue on with step 402. If the delete key is released prior to the expiration of this predetermined length of time, however, the microprocessor will simply return to the body of the program, essentially ignoring the actuation of the delete key. 402 In this step, the microprocessor counts the number of characters from the present position of the read pointer (which will point to the delimiter immediately prior to the data record being displayed), and the next succeeding delimiter. The resulting numeric value then defines the character length N of the record to be deleted. This step is, of course, unnecessar if all records have the same length. 404 The microprocessor now moves all of the data above the record to be deleted down by N character spaces in memory, thereby effectively eliminating that entry by writing over it with subsequent entries. Upon the conclusion of thedata move operation, the write pointer will also be decremented by N characters, thus again causing it to point at the last regularly entered delimiter in the partition. The input pointer will similarly be decremented. The microprocessor, thus having completed the delete procedure, will return to the body of the program.
Send Procedure
The send procedure is used to send the data which has been stored within the solid state memory to a remote data collection point through the input/output port 32, which will be connected to an acoustical coupler data set, or other data transmission means by way of the connector 18. In order to call the send procedure, the operator will first enter a sequence of characters identifying the sequence in which the partitions are to be transmitted. If, for example, the operator desires to send partition 3 first, then partition 7, then partition 3 once again, and thereafter partitions 1 and 2, the operator will enter the characters 3, 7, 3, 1, 2 in the normal fashion. Through the normal data entry operation of the microprocessor, as illustrated in Fig. 5, these characters will be entered into the open partition immediately following the last complete data record. After the operator has entered the desired sequence in which the partitions are to be transmitted, the send button on the keyboard 14 will be depressed. The microprocessor will then jump into the send procedure whose flow chart is shown in Fig. 9, and under control of this procedure will send the partitions via the acoustical coupler or other output device in the requested sequence. The send procedure includes the following steps:
500 In this, step, the microprocessor relocates the "send list" S (i.e., those characters stored in character locations between the write pointer an the present location of the input pointer) in a temporary storage location, for example the working registers of the microprocessor itself. A delimiter will also be entered at the conclusion of this send list in the working registers of the microprocessor, to define the end of the list. 502 In this step, a counting variable N is initialized to a value of 1. The microprocessor examines the Nth entry in the send list S to determine whether or not that entry is a delimiter. If it is not a delimiter, then the MPU continues with step 506. If it is a delimiter, however, then all of the partitions identified in the send list have been transmitted, and the send procedure is completed. In this event, the microprocessor jumps out of the send procedure and returns to the body of the program, shown in Fig. 5.
When the Nth item on the send list is not a delimiter, it is a partition number identifying a partition which is to be transmitted. In this step, that partition is transmitted, one character at a time, beginning with the location in memory identified by the home pointer of that partition, and ending with the character stored in the location identified by the write pointer for that partition. When all of these characters have been transmitted, the counting variable N is incremented, and the MPU returns to step 504. The procedure will jump back and forth between steps 504 and 506 until all partitions listed in the send list have been transmitted. Although the invention has been described with respect to a preferred embodiment, it will be appreciated that various rearrangements and alterations of parts may be made without departing from the spirit and scope of the present invention, as defined in the appended claims.

Claims

What is claimed is:
1. A method of operating a portable, handheld data entry device which includes a memory and means for entering data into selected ones of a plurality of defined partitions in the memory, the defined partitions being such that, in order to enter additional data in the selected ones of the partitions, additional memory must be allocated to the selected ones of the partitions, comprising the steps of initially locating the partitions so that all free memory space available for allocation to the selected ones of the partitions during the entry of data therein is a single continuous block of memory, and, when operating the device to enter data in a selected partition, moving the partitions between opposite sides of the block of available memory space to position the selected one of the partitions adjacent to the block, whereby further data may be added to the selected partition from the free memory space.
2. A method as set forth in claim 1, wherein the memory includes a plurality of memory locations extending sequentially between first and second memory boundaries, and wherein the step of moving the partitions includes the further steps of moving those partitions occupying locations between the first boundary and the selected partition towards the first boundary until all of those partitions are adjacent one another and the first memory boundary, and moving the selected partition and those partitions between the selected partition and the second memory boundary towards the second memory boundary until all of those partitions, including the selected partitio are adjacent one another and the second memory boundary.
3. A method as set forth in claim 1, wherein the memory includes a plurality of memory locations extending sequentially between first and second memory boundaries, and wherein the method includes the further steps of storing sequentially entered data in sequential location in the free memory space, beginning with the memory location adjacent the location of the last data entered the selected partition.
4. A method as set forth in claim 1, and further comprising the additional steps of providing a list of the order in which the partitions are to be read out for communication to apparatus external to the portable data entry device, and reading out the partitions one at a time in the indicated order, with the reading out step including the further steps of locating the defined partition which is to next be read out, reading out the partition thus located, and repeating the locating and reading out steps until all of the indicated partitions have been read out in the order indicated in the list.
5. A method of operating a portable, handheld data entry device which includes a memory and also means for communicating data read out from the memory to apparatus external to the portable, handheld data entry device, including the steps of: storing data in defined partitions within the memory; indicating the order in which the partitions are to be read out and communicated to the external device, the order thus indicated possibly being different than the order in which the partitions are stored in the memory; and reading out the partitions, one at a time in the indicated order, with the reading out step including the further steps of locating the partition which is to next be read out, reading out the partition thus located, and repeating the locating and reading out steps until all of the indicated partitions have been read out in the indicated order.
6. A method as set forth in claim 5, further including the step of identifying the locations of partitions within the memory by providing beginning and end pointers for each partition to be defined, and setting the beginning and end pointers of each partition to values corresponding to the beginning and end locations, respectively, of that partition in memory.
7. A method as set forth in claim 6, wherein the memory, when supplied with a memory address, will read out the data stored in the location identified by that memory address, and wherein the step of locating the partition to next be read out includes the steps of. providing an address for application to the memory, and setting the initial value of the address to a value related to the value of one of the beginning or end pointers.
8. A method of operating a portable, handheld data entry device so as to edit data stored within a memory associated with the device, the data stored in the memory being a plurality of variable length data records, each record including an arbitrary number of data characters with at least a plurality of the data records being stored adjacent one another in the memory so that substantially no additional memory space exists between the records for the addition of further characters therein, comprising the steps of determining the number of characters to be inserted to or deleted from the data stored in the memory, and moving the data stored in the memory on at least one side of the location within memory of the insertion or deletion by a total number of character locations corresponding to the number of characters to be inserted or deleted, such that upon the conclusion of the insertionor deletion operation, the remaining ones of the related data records within the memory will still be contiguous.
9. A method as set forth in claim 8, also compris ing the further steps of providing a pointer identifying the location within memory at which the insertion or deletion will take place, and manually controlling the value of said pointer whereby the location of the insertion or deletion may be manually controlled by controlling the value of said pointer.
10. A method of operating a portable, handheld data entry device so as to edit data stored within the memory associated with the device, the data stored in the memory being a plurality of variable length data records, each record including an arbitrary number of data characters with at least a plurality of the data record being stored adjacent one another in the memory so that substantially no additional memory space exists between the records for the addition of further characters therein, comprising the steps of providing a pointer identifying a location within memory at which an insertion is to take place, manually controlling the value of said pointer so as to thereby manually control the location within memory in which the insertion takes place, storing the data to be inserted in a temporary storage location, determining the number of characters in the insertion thus temporarily stored, and moving the data on at least one side of the location within memory identified by the value of the pointer by a total number of character locations corresponding to the number of characters which it has been determined will be inserted, and moving the characters to be inserted from the temporary storage location into the gap in memory created by the moving step, whereby upon the conclusion of the insertion operation the data stored in the memory once again comprises a plurality of data records stored adjacent one another with substantially no additional memory space between the records.
11. A method of operating a portable, handheld data entry device so as to edit data stored within the memory associated with the device, the data stored in the memory being a plurality of variable length data records separated by identifiable delimiters, each record including an arbitrary number of data characters with at least a plurality of the data records being stored adjacent one another in the memory so that substantially no additional memory space exists between the records for the addition of further characters therein, comprising the steps of providing a pointer identifying a particular location within memory at which a deletion is to take place, manually controlling the value of said pointer so as to thereby manually control the location at which the deletion is to take place, manually indicating the deletion operation which is desired, automatically determining the number of characters contained within the data record being identified by the value of the pointer when the deletion operation is indicated, and moving the data stored in the memory on at least one side of the record thus identified by a total number of character locations corresponding to the number of characters to be deleted, such that upon the conclusion of the deletion operation the remaining ones of the related data record within the memory will still be contiguous.
12. A method of operating a portable, handheld data entry device including a memory providing storage of a plurality of data records entered into the device, each record comprising a plurality of characters, the method comprising the steps of: comparing two of the records stored in the memory to determine whether or not the two records are the same, and, if they are the same, then deleting one of the two records from the memory and providing in the memory at a location associated with the other of the records an indication that that record has been entered an additional time, whereby plural identical records are eliminated from memory.
13. A portable handheld data entry device for accumulating data from plural locales and operable so that the data from each locale may be segregated within a single corresponding identifiable partition within a data memory, comprising: a data memory for the storage of the data entered into the device, and including a plurality of defined partitions for each receiving data independently of the others; a keyboard having a plurality of keys actuable by an operator for the entry of data into the device, said keys including partition selection keys which may be operated by the operator when the device is carried to a new locale to select a corresponding partition for storing subsequently entered data; and a microprocessor for rearranging the data stored in memory in response to the operation of the partition selection keys so that all free memory space available for the storage of additional data is a single continuous block of memory adjacent to the selected partition of memory, whereby further data entered by the operator from that locale may be added to the selected partition from the free memory.
EP19800901138 1979-05-23 1980-12-01 Portable data entry device including dynamic partitioning of data memory. Withdrawn EP0028643A4 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US4163679A 1979-05-23 1979-05-23
US41636 1979-05-23

Publications (2)

Publication Number Publication Date
EP0028643A1 true EP0028643A1 (en) 1981-05-20
EP0028643A4 EP0028643A4 (en) 1983-11-14

Family

ID=21917550

Family Applications (1)

Application Number Title Priority Date Filing Date
EP19800901138 Withdrawn EP0028643A4 (en) 1979-05-23 1980-12-01 Portable data entry device including dynamic partitioning of data memory.

Country Status (3)

Country Link
EP (1) EP0028643A4 (en)
CA (1) CA1153823A (en)
WO (1) WO1980002610A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2416225A (en) * 2004-07-14 2006-01-18 Lsi Logic Corp Dynamically partitioning a storage device for mixed applications

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57162165A (en) * 1981-03-30 1982-10-05 Fanuc Ltd Re-editing system for storage area
JPS59165161A (en) * 1983-03-11 1984-09-18 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン Volume restoration system of data set for word processing system
US5490260A (en) * 1990-12-14 1996-02-06 Ceram, Inc. Solid-state RAM data storage for virtual memory computer using fixed-sized swap pages with selective compressed/uncompressed data store according to each data size
DE19904573C2 (en) * 1999-02-04 2000-12-28 Siemens Ag Device and method for storing telephone entries

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4064553A (en) * 1974-11-15 1977-12-20 Casio Computer Co., Ltd. Information processor
FR2378317A1 (en) * 1977-01-24 1978-08-18 Dethloff Juergen Text processing machine for automatic typewriters - has two position switch which controls electronic circuit for rapid text recall
US4125871A (en) * 1975-08-11 1978-11-14 Arthur D. Little, Inc. Portable data entry device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS531023B2 (en) * 1971-12-30 1978-01-13
US3811115A (en) * 1973-02-02 1974-05-14 Ibm Item lister using a shift register
US3931612A (en) * 1974-05-10 1976-01-06 Triad Systems Corporation Sort apparatus and data processing system
US4040024A (en) * 1975-09-26 1977-08-02 Teleram Communications Corporation Editing system for a random access memory
SE387763B (en) * 1975-10-23 1976-09-13 Ellemtel Utvecklings Ab COMPUTER AT A COMPUTER MEMORY TO POSSIBLE A SUCCESSIVE TRANSFER DURING OPERATION OF AN AVAILABLE MEMORY FIELD
US4095283A (en) * 1976-07-02 1978-06-13 International Business Machines Corporation First in-first out memory array containing special bits for replacement addressing
US4074254A (en) * 1976-07-22 1978-02-14 International Business Machines Corporation Xy addressable and updateable compressed video refresh buffer for digital tv display

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4064553A (en) * 1974-11-15 1977-12-20 Casio Computer Co., Ltd. Information processor
US4125871A (en) * 1975-08-11 1978-11-14 Arthur D. Little, Inc. Portable data entry device
FR2378317A1 (en) * 1977-01-24 1978-08-18 Dethloff Juergen Text processing machine for automatic typewriters - has two position switch which controls electronic circuit for rapid text recall

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of WO8002610A1 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2416225A (en) * 2004-07-14 2006-01-18 Lsi Logic Corp Dynamically partitioning a storage device for mixed applications
US7246216B2 (en) 2004-07-14 2007-07-17 Lsi Corporation Dynamic partitioning of storage media for mixed applications
GB2416225B (en) * 2004-07-14 2008-09-24 Lsi Logic Corp Dynamic partitioning of storage media for mixed application s

Also Published As

Publication number Publication date
EP0028643A4 (en) 1983-11-14
CA1153823A (en) 1983-09-13
WO1980002610A1 (en) 1980-11-27

Similar Documents

Publication Publication Date Title
US7370047B2 (en) System and method for filtering and sorting data
EP0413537B1 (en) Electronic mail message control system
EP0461400B1 (en) Text processing device
US3670310A (en) Method for information storage and retrieval
US5053948A (en) File index system for mass storage device
EP0573751B1 (en) Label printing and data collection program generator
US5383121A (en) Method of providing computer generated dictionary and for retrieving natural language phrases therefrom
US4542477A (en) Information retrieval device
JPS6011922A (en) Storage and replacement of soft key string
CN101458620B (en) Program execution device and method, program code compression device and method, and device
US4250560A (en) Text processing apparatus
TW357316B (en) Method and computer system for processing a set of data elements on a sequential processor
EP0028643A1 (en) Portable data entry device including dynamic partitioning of data memory
CN1072280A (en) The method and system that specific section was efficiently specified and retrieved during multiple mode play
US4663736A (en) File deletion system in a file unit
US5261040A (en) Text processing apparatus
EP0326162A2 (en) Data base system including memorandum information and method for managing memorandum information
AU6055480A (en) Portable data entry device including dynamic partitioning of data memory
JPH04281566A (en) Document retrieving device
EP0336871A2 (en) A graphical method of processing multiple data blocks
US3678462A (en) Memory for storing plurality of variable length records
US5258910A (en) Text editor with memory for eliminating duplicate sentences
Taylor Microprocessor‐based, programmable laboratory equipment controller and data acquisition system
JPH02210578A (en) Data retrieving and display system
JP2513049Y2 (en) Electronic display

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 19810122

AK Designated contracting states

Designated state(s): CH DE FR GB SE

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 19841203

RIN1 Information on inventor provided before grant (corrected)

Inventor name: HANBY, WALTER D.

Inventor name: KUMAR, RAJENDRA