Micros With The Handicapped
Developing A Communications Program: Part II
Susan Semancik and Marshall Curtis
Delmarva Computer Club
Programs which let motor impaired, nonverbal people communicate with others using a computer, can be of great benefit. Below are versions of a menu-communicator for Apple, PET, and VIC computers.
In our last column, we discussed the need for developing a program to help nonverbal, motor-impaired individuals in their communication needs. As the following outline shows, the second part of this series on construction of such a program will identify some of the considerations in the selection of a menu for the program:
- Introduction (April issue of COMPUTE!)
- Need for communications program
- Outline of series
- Reasons for tutorial approach
- Menu Setup (June issue of COMPUTE!)
- Type of Communication
- Word processing
- Computer programming
- Daily routine
- School classes
- Format of Message
- Output device for message
- Multiple input functions
- Maximum message length
- Screen size of computer display
- Number of screen lines for message
- Number of screen lines for menu
- Top of screen
- Bottom of screen
- Format of Menu
- Menu entries
- Menu arrangement
- Menu spacing
- Number of blank rows and columns
- Number of entries per row or column
- Number of rows or columns per screen
- Menu entries
- Display of Menu
- PET computer
- VIC computer
- Apple II computer
- Type of Communication
There are many things to consider when developing a communications program. The most fundamental is the purpose for which communication is desired. Rather than develop one program to deal with all types of communication needs, it might be better to have separate programs dedicated to specific objectives – for instance, a program to do word processing functions with printer or modem output; or a program to communicate to a computer in a programming language such as BASIC, PASCAL, or machine language; or a program to communicate with others on a daily routine basis; or a program to use specific vocabularies for different school classes; etc. A list of communication needs compiled on an individual basis among nonverbal, motor-impaired persons would have many similar requirements, regardless of differences in computer equipment available or alternative input devices needed.
We will start with the development of a program to communicate with others on a daily basis, and will develop other types of programs as requests warrant them. Having decided on the type of communication, the next choice to consider is the format for communication: will the user be communicating by selecting from a menu of sentences, words, characters, or a combination of these? Must the physical line length of the computer's display screen be the deciding factor in this choice? Not necessarily. With the use of vertical and/or horizontal scrolling, screen sizes do not have to limit the length of menus or messages.
If enough computer memory or a disk is available, even multiple screens or "pages" of menus could be alternately displayed to increase the number of selections that can be made rapidly. If screen size is limited, a possible alternative might be to have a menu of sentences and/or words permanently displayed on a large poster rather than on the computer's screen. Then the user could access the poster's menu by a row/column or number selection method, with the choice being displayed on a printer, or even verbalized by a computer-controlled speech synthesizer.
A Versatile And Portable Program
In the series of articles we will be presenting on communications, we will be looking at some of the special features of three different computers and input devices we have available. This will mean that we will want the program we develop to be as versatile and portable as possible, and will try not to use features peculiar to a particular system if a more standard approach can be found. This will help those readers who want to develop a similar communications program for different systems. The three computers we will use have the following screen characteristics: 1) Commodore PET computer with 25 lines of 40 characters each; 2) Commodore VIC computer with 23 lines of 22 characters each; and 3) Apple II computer with 24 lines of 40 characters each.
Since this program will involve communicating with others on a daily basis, each user must make up an individual list of words involving his/her own routines. Start with a list of frequently used names of people, places, and articles, and of activities, actions, or descriptions most often associated with these words. Also, consider word endings if grammatical structure will be important in your messages, as well as punctuation, numbers, and special symbols. The alphabet should also be included so words can be formed that are not accessible from the menu.
Individualizing the menu will speed up the communication process. Not only can a message be formed faster with the computer's help, but the formation will not require the active involvement of the person with whom you want to communicate. The computer would be used in this case as a recorder of the message, so that there will be continuity of expression, and the message can be repeated without having to be reformed. Using the sound capability of most home computers, an audible signal could also be given when a message is ready for viewing.
For this demonstration program, we will choose a menu format that will include words and characters. If you want the entire menu to be visible at all times, then the computer's display screen characteristics will determine the size and structure of the menu. This type of menu will be called a static menu and will be shown first, since it is the easiest to create in a general fashion for any type of home computer. Later, we will investigate several types of dynamic menus, such as multiple menus and scrolling menus.
Next, decide on whether the message you form will be sent to an external device, and/or displayed on the computer's screen. If it will only be sent to an external device, such as a printer, then the entire screen can be used for the menu. If it will also be sent to the screen, then consider the maximum length necessary for your messages. To calculate the number of screen lines needed for the message area in a static menu, divide the maximum message length by the number of characters contained in the computer's screen width. Round up if any remainder exists, and/or add one to the result if you don't want words split at the right edge of the screen.
Also, decide if you will need several input functions and, if so, will they be performed by an alternative input device, or menu-driven from the screen. Input functions will be the topic of a later column, but they can include such things as erasing your last entry from the message, changing the selection speed for input, changing menus, changing output devices, or alternating between areas of the screen. If these functions are selected from the screen, then your communication's menu area will be smaller for a static menu.
We will assume in this demonstration that 160 characters will be the maximum message length to be displayed on the computer's screen. Also, we will reserve two lines of the screen for input functions, and will include an extra line in the message area to take care of words that would otherwise be split at the right edge of the screen. This means that our three computers would require 5, 9, and 5 lines, respectively, of the screen for the message area, and would have 18, 12, and 17 lines, respectively, remaining for the menu area.
Example 1: Commodore VIC Computer
|160/22 = 8||lines for message|
|+ 1 for no edge-splitting of words|
|9 lines for message area|
|+ 2 for input functions|
|23 - 11 = 12 lines for menu|
The menu can be arranged in rows, columns, blocks, etc. Remember that the main consideration in the arrangement is how easy it will be to indicate and retrieve a selection. The row or column arrangements give sufficient structure to satisfy the selection consideration. For this demonstration, we will use a column arrangement, with an attempt made to set the words in columns simulating sentence structure, and with characters appearing in an end column.
Spacing between adjacent columns and rows will be a factor of the distance the user will be from the computer's screen, in conjunction with the character size displayable by the computer. If vision is also a problem for the user, can the computer's characters be displayed larger? Yes, but since that's a concern shared by many others who may not need a communications program, we will address that problem as a separate issue in a later article.
For our demonstration program, we will assume one blank row between column entries, and one space between adjacent columns. The number of entries per column will be the quotient when you divide the number of screen lines for the menu by one more than the number of blank rows between column entries. This means that the PET, VIC, and Apple computers can have 9, 6, and 8 column entries, respectively, with the decisions made so far.
Example 2: Apple II Computer
17/2 = 8 entries per column
Since the width of each column will be determined by the largest word within it, group your list of words into sentence structure arrangement, and determine the number of columns that will form a static menu for your screen width. Sample menus follow for each of the three computers:
Example 3: Menu for the PET Computer:
DOCTOR I IS HAVE COME SEE INGEDS TEACHER YOU ARE HAS BATH EAT AOTFR WILL WE GO GOOD DRINK AND .ULHCP
Example 4: Menu for the VIC Computer:
DR. IS COLD INGEDS 12 I AM WHEN AOTFR34 YOU ARE DRINK .ULHCP56 MOM EAT WANT ?MYWKB78 DAD NO TIME ,VJQZX90 HOT YES SLEEP ;$%()'+ -
Example 5: Menu for the Apple Computer:
DOCTOR I IS HAVE COME SEE INGEDS TEACHER YOU ARE HAS BATH EAT AOTFR WILL WE GO GOOD DRINK AND .ULHCP
Once you've given the menu sufficient thought, then one of the last decisions to be made is the placement of the communications menu and the input functions menu, either at the top, bottom, or middle of the screen. And, ifthe message is also to be placed on the screen, where will it go? For our demonstration program, we will assume the communications menu will be in the middle of the screen, with the message area being either at the top or bottom of the screen. We are also assuming that the screen columns are numbered from left to right starting from one, and the screen rows are numbered from top to bottom starting from one.
We are finally at a point where we can start to consider the programming aspect of the project. It may seem that it took us a long time to get to this point, but if not enough attention is paid to the choosing and positioning of the elements of the menu, then no amount of programming tricks will make this be a functional tool for the motor impaired, nonverbal user.
Example 6: Display screen placement.
A Simple BASIC Program
We will start with a simple BASIC program that will enable you to view your individual menus on your computer's display screen. Programs 1 through 3 contain programs for our three computers to display the menus of Examples 3-5 by rows. The following is a list of variables that will be used in those programs:
W = the number of characters per screen width
RM = the number of rows in the communications menu
BR = the number of blank rows between column entries
CM = the number of columns in the communications menu
BC = the number of spaces between adjacent columns
RI = the number of rows in the input functions menu
SR = the starting screen row for the communications menu
SC = the starting screen position for the 1 st column
S() = the starting column positions for each column
L() = the width of each column
P = the tabbing position for a column
Note that line 75 of the program is written for a TAB function which starts count at zero. If your computer's TAB function starts count at one, replace line 75 with P = S(C) + TP. In line 95, TP is used to adjust the TAB value for computers which can TAB beyond the screen width. For those that don't, this line can be adjusted or deleted. If your system doesn't allow variable dimensions as in statement 25, then set the DIM for each variable to the value of W. Also, on other computers you may need to enclose all your data entries within quotation marks.
Line 65 is a check to be sure the menu as described will indeed fit on the screen. The programs for each computer use REM statements to explain important steps. These are only included for your information, and do not have to be typed in as part of the program. Notice that the lines that change for the different computers are lines 10, 20, 30, 95, and 140–195.
By following the programs, you should be able to make suitable changes to run the program on your system if it is different. Try changing your menu and some of the program parameters, such as number of columns, number of blank rows between column entries, starting row or column position on the screen. You should get a feel for how flexible this program can be.
In the next issue we'll cover the selection process in the program. Will selected entries be retrieved from DATA lists, subscripted variables, memory blocks, or from the screen itself? We will also need to look ahead at the possibility of a dynamic menu and how multiple menus can be entered without disturbing the flow of the program. Let us know if you have any special ideas you'd like developed in this program, and we'll try to incorporate them as we go along.
Delmarva Computer Club
P.O. Box 36
Wallops Island, VA 23337
5 REM EXAMPLE 8A) PET COMPUTER 10 PRINT CHR$(147) ; : REM CLEAR TEXT SCREEN 20 W = 40 : RM = 9 : BR = 1 : CM = 7 : BC = 1 : RI = 2 : SR = 3 : SC = 1 : REM SET MENU PARAMETERS 25 DIM S(CM), L(CM) : S(1) = SC 30 DATA 7, 4, 4, 4, 5, 3, 6 : REM COLUMN WIDTHS 35 IF CM = 1 THEN 50 38 REM CALCULATE STARTING POSITION OF EACH COLUMN 40 FOR I = 2 TO CM : READ L(I - 1) : S(I) = S(I - 1) + L(I - 1) + BC : NEXT I : READ L(CM) 50 IF SR = 1 THEN 70 60 FOR X = 1 TO SR - 1 : PRINT : NEXT X : REM POSITION CURSOR TO 1ST ROW OF MENU 65 LP = S(CM) + L(CM) - 1 : IF LP > W THEN 200 70 TP = 0 : FOR R = 1 TO RM : F0R C = 1 TO CM : READ M$ 75 P = S(C) - 1 + TP 80 PRINT TAB(P) ; M$ ; : NEXT C 90 IF S(CM) + LEN(M$) - 1 < KW THEN PRINT : GOTO 100 : REM WRAPAROUND ADVANCES A LINE 95 IF BR = 0 THEN TP = TP + W : IF TP > 87 THEN TP = 0 : REM UPDATE TAB IF LINE ENDS W/NO ~ LF 100 IF BR = 0 THEN 120 110 FOR B = 1 TO BR : PRINT : NEXT B : REM SKIP BLANK ROWS BETWN COLUMN ENTRIES 120 NEXT R 130 GOTO 130 : REM DISPLAY ISN'T DISTURBED UNTIL USER BREAKS PROGRAM 139 REM ENTER DATA BY ROWS 140 DATA DOCTOR, I, IS, HAVE, COME, SEE, INGEDS 145 DATA TEACHER, YOU, ARE, HAS, BATH, EAT, " AOTFR" 150 DATA WILL, WE, GO, GOOD, DRINK, AND, .ULHCP 155 DATA HOW, DO, CAN, BAD, SLEEP, IN, ?MYWKB 160 DATA WHO, GET, AM, DID, BED, OUT, ",VJQZX" 165 DATA WHAT, MOM, WANT, HOT, RADIO, TV, " ; $ %()’" 170 DATA WHERE, DAD, TO, COLD, ROOM, YES, "!*/^ = :" 175 DATA WHEN, JOHN, TIME, THE, FOOD, NO, -01234 180 DATA WHY, RICK, DAY, CALL, PLAY, AT, + 56789 200 PRINT "MENU SIZE ERROR!" : END
5 REM EXAMPLE 8B) VIC COMPUTER 10 PRINT CHR$(147) ; : REM CLEAR TEXT SCREEN 20 W = 22 : RM = 6 : BR = 1 : CM = 4 : BC = 1 : RI = 2 : SR = 3 : SC = 1 : REM SET MENU PARAMETERS 25 DIM S(CM), L(CM) : S(1) = SC 30 DATA 3, 3, 5, 8 : REM COLUMN WIDTHS 35 IF CM = 1 THEN 50 38 REM CALCULATE STARTING POSITION OF EACH COLUMN 40 FOR I = 2 TO CM : READ L(I - 1) : S(I) = S(I - 1) + L(I - 1) + BC : NEXT I : READ L(CM) 50 IF SR = 1 THEN 70 60 FOR X = 1 TO SR - 1 : PRINT : NEXT X : REM POSITION CURSOR TO 1ST ROW OF MENU 65 LP = S(CM) + L(CM) - 1 : IF LP > W THEN 200 70 TP = 0 : FOR R = l TO RM : FOR C = 1 TO CM : READ M$ 75 P = S(C) - 1 + TP 80 PRINT TAB(P) ; M$ ; : NEXT C 90 IF S(CM) + LEN(M$) - 1 < W THEN PRINT : GOTO 100 : REM WRAPAROUND ADVANCES A LINE 95 IF BR = 0 THEN TP = TP + W : IF TP > 87 THEN TP = 0 : REM UPDATE TAB IF LINE ENDS W/NO ~ LF 100 IF BR = 0 THEN 120 110 FOR B = 1 TO BR : PRINT : NEXT B : REM SKIP BLANK ROWS BETWN COLUMN ENTRIES 120 NEXT R 130 GOTO 130 : REM DISPLAY ISN'T DISTURBED UNTIL USER BREAKS PROGRAM 139 REM ENTER DATA BY ROWS 140 DATA DR., IS, COLD, INGEDS12 145 DATA I, AM, WHEN, " AOTFR34" 150 DATA YOU, ARE, DRINK,.ULHCP56 155 DATA MOM, EAT, WANT, ?MYWKB78 160 DATA DAD, NO, TIME, ",VJQZX90" 165 DATA HOT, YES, SLEEP, ";$%()’ + - " 200 PRINT "MENU SIZE ERROR!" : END
5 REM EXAMPLE 8C) APPLE II COMPUTER 10 TEXT : HOME : REM CLEAR TEXT SCREEN 20 W = 40 : RM = 8 : BR = 1 : CM = 7 : BC = 1 : RI = 2 : SR = 3 : SC = 1 : REM SET MENU PARAMETERS 25 DIM S(CM), L(CM) : S(1) = SC 30 DATA 7, 4, 4, 4, 5, 3, 6 : REM COLUMN WIDTHS 35 IF CM = 1 THEN 50 38 REM CALCULATE STARTING POSITION OF EACH COLUMN 40 FOR I = 2 TO CM : READ L(I - 1) : S(I) = S(I - 1) + L (I - 1) + BC : NEXT I : READ L(CM) 50 IF SR = 1 THEN 70 60 FOR X = 1 TO SR - 1 : PRINT : NEXT X : REM POSITION CURSOR TO 1ST ROW OF MENU 65 LP = S(CM)+L(CM)-1 : IF LP>W THEN 200 70 TP = 0 : FOR R=1 TO RM : FOR C=1 TO CM : READ M$ 75 P = S(C)-1 + TP 80 PRINT TAB(P);M$; : NEXT C 90 IF S(CM)+LEN(M$)-1<W THEN PRINT : GOTO 100 : REM WRAPAROUND ADVANCES A LINE 95 IF BR = 0 THEN TP = TP+W : IF TP>87 THEN TP = 0 : REM UPDATE TAB IF LINE ENDS W/NO ~ LF 100 IF BR = 0 THEN 120 110 FOR B = 1 TO BR : PRINT : NEXT B : REM SKIP BLANK ROWS BETWEEN COLUMN ENTRIES 120 NEXT R 130 GOTO 130 : REM DISPLAY ISN'T DISTURBED UNTIL USER BREAKS PROGRAM 139 REM ENTER DATA BY ROWS 140 DATA DOCTOR, I, IS, HAVE, COME, SEE, INGEDS 145 DATA TEACHER, YOU, ARE, HAS, BATH, EAT,"AOTFR" 150 DATA WILL, WE, GO, GOOD, DRINK, AND,. ULHCP 155 DATA HOW, DO, CAN, BAD, SLEEP, IN,? MYWKB 160 DATA WHO, GET, AM, DID, BED, OUT, ",VJQZX" 165 DATA WHAT, MOM, WANT, HOT, RADIO, TV,";$%()' " 170 DATA WHERE, DAD, TO, COLD, ROOM, YES, "!*/^= :" 175 DATA WHEN, HELP, TIME, CALL, FOOD, NO, +56789 200 PRINT "MENU SIZE ERROR!" : END