SIX BITS 1983)
©1983, 2013 by Dallas Denny
Source: Denny, Dallas. (1983). Six Bits. BASIC computer program for Commodore VIC-20 computer.
SIX BITS is an augmentative communication program written in BASIC for the Commodore VIC-20 computer, a popular and inexpensive device popular in North America and Europe in the early 1980s.
Electronic devices for people with communication difficulties were expensive, costing thousands of dollars. By 1982 VIC-20s were selling for as little as $69 at discount department stores; the accompanying cassette deck, which was necessary for loading and saving programs, sold for s little as $50. The VIC came with hardware that allowed it to be attached to any television set.
I wrote SIX BITS for a man with normal intelligence and quadraplegia that affected his speech, making it impossible for others to understand him. He used the program for years; earlier he had a Morse-code based device for which parts could no longer be obtained. Staff at his facility trained him to use the program. The VIC would remain on all day.
SIX BITS allows the user to select any of 64 letters, numbers, or actions with six presses of a single switch. Repeated selections allows the composition of words and sentences in English; these messages can be printed on paper, spoken through a voice synthesizer like a Votrax, or, if a disk drive is connected to the system, saved for later retrieval.
The program uses a binomial search algorithm to discard unwanted symbols. After six presses of the switch, a single letter is left; if the selection is a letter or a number, it’s added to the message; if an operation like erase, print, speak, or save is selected, that operation is performed.
I’ve included instructions for operation of SIX BITS and an explanation of binomial searches.
Instructions for SIX BITS
Instructions for SIX BITS
LOADing SIX BITS
Cartridge
If SIX BITS is on cartridge, then simply plug the cartridge into the port at the right rear of the Vic-20 and turn the computer on.
Cassette Tape
To load SIX BITS from tape, first, set up the VIC-20 computer as shown in the owner’s manual. Attach the datassette as shown, being sure to turn the computer off first. Insert a 3k or greater RAM cartridge into the slot at the right rear of the computer, again making sure it is turned off.
Next, turn the computer on. The television screen should show a blinking cursor. Place the cassette tape containing SIX BITS into the datassette player, and rewind it. Then type LOAD and push the RETURN button. The VIC will prompt you to push the play button on the datassette. When you do so, the program will begin to load into the computer’s memory. When you again see the flashing cursor, type RUN and hit RETURN. If the program has not loaded correctly, move the datassette as far as possible from the monitor or television and try again. Be sure to rewind the tape. If loading problems persist, then clean the heads of the datassette with a cotton swab wet with rubbing alcohol or tape deck cleaning solution.
Side 1 of the cassette contains instructional materials for SIX BITS, as well as the main program.The main program will load automatically when the instructions are finished. The instructions are controllable from the switch. Side 2 of the cassette contains only the main program. As the user becomes familiar with SIX BITS, it may not be necessary to display the entire set of instructions.
NOTE: if the RUN/STOP and SHIFT keys are pressed simultaneously, the program will load and run automatically. It will not be necessary to type LOAD and hit RETURN.
Diskette
Set up the computer as directed in the VIC-20 and Vic 1541 disk drive owner’s manuals. Turn the disk drive on, and then turn the computer on. Insert the diskette containing SIX BITS into the diskette with the label up and the square notch in the jacket of the disk facing the left. Type LOAD “BOOT 1”,8 if you desire instructions and LOAD ”BOOT 2”,8 if you do not desire instructions.
Attaching a Switch
SIX BITS is designed to work with the FIRE button of inexpensive Atari-style joysticks. The cord can be cut just before the joystick and attached to any adaptive switch such as a foot petal, blow switch, tilt switch, or eyelid switch. Anyone familiar with circuitry should be able to make the necessary connections. The non-modified end of the cord plugs into either of the VIC’s joystick ports.
Using SIX BITS
When SIX Bits begins, you will see the following:
SET CURSOR SPEED/FASTER/SLOWER/ESCAPE
CURSOR SPEED NOW = 250
Note the speed with which the cursor moves from FASTER to SLOWER to ESCAPE. This is the speed with which the cursor will move throughout the program. By pressing the switch when FASTER is highlighted (light on a dark background), the speed of the cursor can be increased to a set maximum speed. The cursor can also be slowed as much as is desired. Pressing the switch while ESCAPE is highlighted sends the user to the main program. The cursor speed can be changed at any time by coosing the right bracket (]) character from the selection field.
When the user ESCAPES to the main display, a horizontal line will be seen dividing the screen. The section of the screen above the line is called the display, and the section below the line is called the message area. Four lines of 16 characters will be seen in the display area. Most of the characters are message characters, and will print on the screen when selected. The remainder are control characters and perform special functions without directly affecting the message. Table I shows the various control characters.
An arrow (>) will be seen in the message area. This indicates where the next letter of the message will be printed on the screen and helps the user keep track of spaces in a message. An indicator in the upper right corner of the screen indicates whether the next character will be printed in upper or lower case.
To use SIX BITS, first decide upon a character. You may choose either a message character or a control character. You will notice the character you wish to select will be highlighted (light colored on a dark background) half of the time. Press the switch while the character you have chosen is highlighted. You’ll notice that the display now consists of 2 lines of 16 characters The character you selected may have moved upwards on the screen. It will still be highlighted half of the time. Press the switch while it is highlighted. You’ll see that the display now consists of a single line of 16 characters, each highlighted half of the time. You have just eliminated three-fourths of the unwanted characters with only two presses of the switch; that is, with two bits of information. Each of the next four presses will eliminate half of the characters in the display, and your selected character will move to the left, ending in the upper left corner. On the sixth press it will disappear, if it is a message character, then will immediately appear in the message area, and the entire display of 64 characters will again appear in the display area. If you selected a control character, it will perform its special function. Continue to select characters, building your message. Each character will require six presses of the switch (six bits of information).
Messages of up to 252 characters in length can be constructed. As you approach the limit, a reminder will appear on the screen, advising you of how many you have left. A message can be stored in memory and a second message of 252 characters can be written. When a message is stored, an indicator in the upper right portion of the screen will be seen. When a message is placed in memory, it will erase any messages already stored there.
Base Searches
Base Searches
A long-known and efficient method of selecting a unit from a field of any size is the binomial search technique. A field if repeatedly divided in half and the yes/no question “Is the desired information in this half of the field’?” asked. Each answer requires only one bit of information, but allows half of the field to be discarded. Eventually, all information but that desired has been eliminated; selection takes place by repeatedly discarding unwanted information. Effective playing of the child’s game “Twenty Questions” requires use of the binomial search technique.
The major advantage of the binomial search technique is that the size of the field from which a single unit can be selected increases exponentially as a power of two when the number of yes/no questions asked increases arithmetically. Answering four questions results in selection from a field of 2^4, or 16items; answering six questions results in selection from a field of 2*6,or 64 items; and answering eight questions results in selection from a field of 256 items. Ten questions increases the size of the field to 1024 items, and twenty questions to 1,048,576.
Some electronic communication devices for individuals with handicaps have been based on the binomial search technique. For instance, six presses of a single switch have been used to select up to 64 alphanumeric characters, punctuation marks, special symbols, or combinations thereof. The advantage of such a device is its speed. While it is relatively unparsimonious in the number of presses required for each selection, there is no need to wait for an indicator to reach a desired character, as in a scanning-based device, or to input more than one type of symbol per switch, as with Morse code. With a single switch and a yes/no cycle time of three seconds, it would take eighteen seconds to select a symbol in a worst-case situatioin. To increase the speed of the selection, letters and symbols can be arranged in the display in order of frequency of occurrence, or words, phrases, or sentences can be substituted for single characters. Practically speaking, however, an individual can select characters as fast as the switch can be closed six times. Obviously, user fatigue is an important factor in selection of a communication device utilizing the binomial search technique.
It is possible to conduct searches with bases other than the binomial. In a base three search a field is repeatedly divided into thirds and the unwanted two thirds of the field discarded with each selection. As the size of the base of the search increases, the size of the field possible to search with a fixed number of presses increases, again exponentially, as a function of the base of the search. Five presses of a switch in a base 2 (binomial) search selects from a field of 32 items, five presses in a base 3 search selects from a field of 243, and five presses in a base 6 search selects from a field of 7776. Delay time increases with size of the base, but in a linear fashion. With the three second time mentioned above, and in a worst-case selection, it would take 216 seconds to select any one of 7776 items with a base 6 search.
In a communication device such as outlined above, there may be several thousand possible selections. Memorization of such a large field is not practical. Some method of knowing where to branch to in the selection process must occur. For instance, alphabetic selections can be alphabetized, numeric entries arranged in ascending or descending order, and some memnotic systems can be used to arrange non-alphanumeric symbols.
For any literate individual capable of operating a single switch, it is possible to find the best base of search/number of questions/size of field. To do so, it should first be determined how large a field is needed in order to include everything the individual needs or wants to communicate to others, with the understanding that the larger the field, the more presses will be required. Once this is determined, then a table can be devised showing required presses versus size of base. Some individuals will obviously want or need larger fields than others, and if they are willing to expend the effort to activate the switch one or two more times, their wishes should be adhered to, within practical limitations of equipment.