2020: NameSpaces are going to be implemented this year to better separate content. OS-9 Al (talk) 11:18, 15 April 2020 (CDT)
2020-05-17: If a page gives you an error about some revision not being found, just EDIT the page and the old page should appear in the editor. If it does, just SAVE that and the page should be restored. OS-9 Al (talk) 12:22, 17 May 2020 (CDT)
Home Articles Companies Publications Hardware People Software Timeline ... Emulators Internet Resources
(Don't see something listed? Click "edit" and add it! Together we can build this database. When making a new info page, refer to this InfoBox Template for guidelines.)
UnderColor, Volume 1, Number 5, February 20, 1985
- Title: Entryway
- Author: Mike Rigsby
- Synopsis: Alternate Methods
- Page Scans: Link
Voice actuation—visions of the future. It doesn't have to be so, and for users with motor skill deficiencies, voice actuation, single-keystroke actuation, or contact actuation are imperative to computer use. Let's look at ways to simply and inexpensively implement these actuation methods.
The program and equipment we will use must be set up by a person with appropriate physical capabilities. Loss of electrical service, however brief, means the software must be reloaded. If this is a problem, you should consider an Uninterruptible Power System (UPS). UPS systems often cost $400 or more.
This project is accomplished in two parts—hardware and software. Let's look at each in turn.
Voice control of the computer requires equipment for sound input. Sophisticated amplifiers (even the one on your inexpensive cassette recorder) generate noise that the computer is sensitive to. Use the Radio Shack mini-amplifier, part 277-1008 with any microphone. Adjust the volume to the midpoint. A battery eliminator rather than a battery could cause problems if used on the amplifier. Remember that background noise, or too much amplification, creates false signals.
Contact control comes from the joystick, and can be tested by depressing the fire button on the right joystick. Any normally open contact could be substituted for the fire button, but it must be wired into a plug which fits in the joystick jack.
The eyebrow switch can be used only if the user has sufficient muscle control to lower the eyebrow in a deliberate blink. A normal "eye wetting" blink does not cause enough deflection of the brow. Any activity which can be controlled and result in a switch closure can be used to operate this program.
The software (see the Listing) produces a display (see Fig. 1). A rectangular cursor appears by the leftmost star and flashes for a brief time period next to each star, moving from left to right and repeating its sequence until a control action is taken.
Let us assume that control is being taken from an eyebrow switch. Assume that the cursor is in the second position (above the column containing C, D, H, N, S, T). I blink my eye and the cursor will travel down the column instead of continuing across the top of the row. When the cursor is next to the letter H l blink my eye again; H appears on a message line
on the lower portion of the video display. The cursor then returns to the leftmost star and commences its movement to the right again.
But what if? What if I only blink once? The cursor would travel down the column, then return to the leftmost star (home position) and begin again. What if l blink at the wrong letter? The BK position (fifth column) will backspace and erase one position on the message line. SP generates a space, PR causes the message line to be output to a printer, and SPEED generates a new display. The speed display lets me, through an eye blink, increase or decrease the amount of time the cursor spends at each location—the numerical value of the timing constant is given here. Warning: going to the SPEED display causes anything on the message line to vanish!
The message line is 64 characters long (two lines on a tv). Any attempt to produce a 65th character will result in automatic printing of the existing 64 characters.
Three methods of input are allowed: keystroke (subroutine at line 500); voice (subroutine at line 1500); and switch (subroutine at line 2000). The voice and switch subroutines include a small time delay (for—next loop) to decrease problems which could occur as a result of long sounds or contact bounce.
I found making BK work a little tricky; the first activation must erase the present character position on the message line; the second sequential BK must erase the present position minus one. Placing a character on the message line after a BK command requires placing it at the present position, not the present position plus one.
I based character placement on frequency of use, not alphabetical order, hoping to increase the speed of operation. If your printer is configured to run at 1200 baud rather than 600, add a line:
3025 POKE 150,41
0 GOTO 3000 1 INPUT"FOR KEYBOARD, TYPE '1' FOR AUDIO, TYPE '2' FOR EXTERNAL SWITCH, TYPE '3'";Q 9 N=50 10 CLS 15 R=1407 16 R1=0 20 PRINT@3,"# # # # # # #" 30 PRINT@67,"SP C F B . 0 5" 40 PRINT@99,"A D G J , 1 6" 50 PRINT@131,"E H L K PR 2 7" 60 PRINT@163,"I N P M BK 3 8" 70 PRINT@195,"O S R Q X 4 9" 80 PRINT@227,"U T Y V Z" 90 PRINT@271,"W SPEED" 100 X=1026 110 POKEX,128 120 ON Q GOSUB 500,1500,2000 130 POKEX,143 145 IF B=1 THEN 180 150 X=X+4 160 IF X=1054 THEN X=1026 170 GOTO 110 180 X=X+32 181 IF X<1083 THEN X=X+32 182 IF X=1282 THEN GOTO100 183 IF X=1286 THEN GOTO100 184 IF X=1290 THEN GOTO 100 185 IF X=1326 THEN GOTO 100 186 IF X=1330 THEN GOTO 100 187 IF X=1270 THEN GOTO 100 188 IF X=1274 THEN GOTO 100 190 POKEX,128 200 ON Q GOSUB 500,1500,2000 210 POKEX,143 215 IF B=1 GOTO 700 230 GOTO 180 500 B=0 501 FOR Y=1 TO N 502 A$=INKEY$ 504 IF A$=""THEN 510 506 B=1:GOTO520 510 NEXT Y 520 RETURN 700 IF X=1090 GOTO 800 702 IF X=1170 GOTO 900 704 IF X=1202 GOTO 1000 706 IF X=1298 GOTO 1100 709 X=X+1 710 Z=PEEK(X) 715 IF R1=R THEN 750 720 R=R+1 725 IF R=1473 THEN 900 730 POKER,Z 740 GOTO 100 750 POKER,Z 760 R1=R1-1 770 GOTO 100 800 Z=96 810 GOTO 720 900 X=1408 910 T1=PEEK(X) 915 IF T1=96 THEN T1=32 920 B$=CHR$(T1) 930 A$=A$+B$ 940 X=X+1 950 IF X=1473 THEN 990 960 GOTO 910 990 PRINT#-2,A$ 995 GOTO 10 1000 IF R1=R THEN R=R-1 1010 R1=R 1015 IF R=1407 THEN R=1408 1020 Z=96 1030 GOTO 730 1100 CLS 1110 PRINT@10,"CONSTANT";N 1120 PRINT@67,"FASTER SLOWER RETURN" 1130 X=1090 1140 POKEX,128 1150 ON Q GOSUB 500,1500,2000 1160 POKEX,143 1170 IF B=1 GOTO 1200 1180 X=X+9 1190 IF X>1110 THEN X=1090 1195 GOTO 1140 1200 IF X=1090 THEN N=N-5 1210 IF X=1099 THEN N=N+5 1220 IF X>1099 THEN GOTO 10 1230 GOTO 1110 1500 B=0 1501 FOR Y=1 TO N 1502 L=PEEK(65312) 1504 IF L=3 THEN 1510 1506 B=1 1507 FOR Y6=1 TO 20 1508 NEXT Y6 1509 GOTO 1520 1510 NEXT Y 1520 RETURN 2000 B=0 2010 FOR Y=1 TO N 2020 P=PEEK(65280) 2030 IF P=255 THEN 2100 2040 IF P=127 THEN 2100 2050 B=1 2052 FOR Y7=1 TO 10 2054 NEXT Y7 2056 GOTO 2110 2100 NEXT Y 2110 RETURN 3000 CLS 3010 PRINT"THIS PROGRAM PROVIDES VOICE OR SINGLE MOVEMENT CONTROL OF A PRINTER. INPUT MAY BE ACCEPTED FROM THE COMPUTER KEYBOARD, OR" 3020 PRINT"A MICROPHONE AND AUDIO AMPLIFIER(RADIO SHACK 277-1008), OR FROM AN EXTERNAL SWITCH CONTACT WIRED THROUGH THE RIGHT JOYSTICK PORT." 3030 GOTO 1