ORIGINALLY PUBLISHED IN LIMA NEWSLETTER FEBRUARY 1989 G 4CS1*FINDEX 5 AN AUTOMATIC CASSETTE TAPE PROGRAM LOCATION SYSTEM H a review by Charles Good This one is for cassette tape users and for those interested in unusual programming techniques. Have you ever wondered if it was possible to mark with software the position of a specific program on a cassette tape full of many programs and then have the computer search the tape from the beginning until the specific desired program is found? TI did once develope such a system for its 99/8 computer, but TI's WAFERTAPE drive was never released. Coleco ADAM computers sccessfully use such a system. Not so for the TI99/4A, according to many well respected comentators. I have read again and again in our exchange newsletters expert comment to the effect that with the TI there is no way to automatically, under software control, advance a long cassette tape to the exact physical location where a program starts. Well......, way back as early as 1983 Joseph E. Bartle of Parish NY wrote a TI BASIC program that does this for the TI! I recently acquired a copy 1985 update of Joe's CS1*FINDEX program (still entirely in TI BASIC with no assembly routines) and after removing a few bugs I am quite impressed with capability of this software. CS1*FINDEX will do its stuff even if you don't have a printed list of which programs are on a program tape, even if you are using a tape recorder that does not have a numerical tape counter, and even if you are using a tape recorder that is not automatically controlled on/off by the 99/4A. CS1*FINDEX finds semiautomatically the exact location of a program on a long tape. The manual tape recorder operations required of the user are all prompted from the screen. If you are using a TI compatible recorder, CS1*FINDEX will advance the tape to your program's location after you press fast foreward, and then automatically stop the tape. If you are using a tape recorder that the TI cannot automatically turn on and off, CS1*FINDEX will turn the screen from green to yellow and finally to red to indicate when you should manually press cassette STOP once the location of your program has been reached. Neat! With CS1*FINDEX you can create a catalog of up to 10 programs you want to put on one side of a C60 tape and put this catalog at the beginning of the tape. The catalog includes program name (up to 12 characters with spaces anywhere), and there is also provision for catalog to display a 12 chracter comment for each of the 10 programs. You can then put your up to 10 programs onto the tape, with CS1*FINDEX advancing the tape recorder to the correct tape location where you should SAVE CS1 each program. It is necessary to reload CS1*FINDEX for each of the programs you put on the tape. Thus, users with only a console/cassette system will appreciate the fact that CS1*FINDEX is designed to be small enough to load into the MINIMEMORY module with SAVE MINIMEM. Then each time you need to load CS1*FINDEX, all you do is type OLD MINIMEM, and CS1*FINDEX boots in a few seconds. Otherwise it takes about 90 seconds to load CS1*FINDEX from tape. Later, when you want to use the tape you load CS1*FINDEX into the computer and then load the tape's catalog from CS1*FINDEX. From the catalog display you select the number of the desired program on the tape. You are then instructed to rewind the tape to the beginning and press FAST FOREWARD. CS1*FINDEX then advances the tape to the program's location, automatically stops the tape if you are using a TI compatible recorder, displays the name of your program on the screen, and informs you this program has been located. Then CS1*FINDEX BREAKs to command mode and allows you to load your program in the normal way by typing OLD CS1 and following all the usual screen instructions, except that you DO NOT again "rewind cassette tape". CS1*FINDEX can easily be modified in extended basic to load the located tape program into the computer from within CS1*FINDEX rather than from command mode. Change line 1770 to read RUN "CS1". If you already have a printed list of each program on the tape and in which order the programs occur, you can bipass the catalog loading procedure. When you RUN CS1*FINDEX your first option is "LOCATION SEARCH (Y/N)". From here you can use CS1*FINDEX to locate the first or second or third, etc, program on the tape without using time to boot the catalog. What's the secret? How does CS1*FINDEX using only TI BASIC with no assembly routines do what all the experts say can't be done? Have you ever noticed how the tape recorder behaves when you read or write tape serial FILES (as opposed to PROGRAMS)? The recorder starts, reads in or writes what I presume to be a file header, then stops. Then the recorder starts again and reads or writes the first record and then stops. Then the recorder starts again and reads or writes the second record and then stops, etc, etc. The total number of start/stop cycles equals the number of records plus one. The computer controls the turning on and off of the tape recorder motor and IT DOESN"T MATTER TO THE COMPUTER IF THE RECORDER IS SET FOR 4PLAY 5 OR FOR 4FAST FOREWARD. 5 When searching for a program, CS1*FINDEX writes a false file to the tape, turning the tape recorder motor on and off several times as this file is written. The tape recorder is set for FAST FOREWARD rather than for RECORD as this file is written, so the tape never receives any data. The computer cannot directly sense that the tape is not getting any data, so the computer continues to turn the recorder motor on and off as it writes its fake file to the tape. When turned on, the tape advances very rapidly because the recorder is set for FAST FOREWARD. A tape file designed to write up to 10 records with a record length of 192 will go through up to 11 start/stop sequences on a C60 tape before the tape is completely wound up on the take up reel. This is how CS1*FINDX locates physical blocks of tape space in which to insert programs, and can later find a specific program located at any one of these physical blocks of tape space. The first block (corresponding to the false file's header) is where the catalog is stored, and the next 10 blocks (each corresponding to a false file record) are where the programs are stored. Enough space is included in each of the program storage blocks to store the largest possible tape PROGRAM. LIMITATIONS: 1--You can't use CS1*FINDEX with already existing program filled tapes. The spacing of the programs on the tape won't be right. You need to load programs onto your program storage cassette tapes using CS1*FINDEX. 2--Problems may occur if different tape recorders are used to store and later play programs. If the FAST FOREWARD speed of the two recorders differs very much CS1*FINDX will not correctly find the location of the desired program. 3--There is only room for a short program in the last (10th) program block before the tape runs out. The author of CS1*FINDEX has written some rather wordy documentation files to explain the use of CS1*FINDEX. These files are in PROGRAM format so that they can be loaded from tape and read by console/cassette-only users. In general most users can play around with the program and figure out how to use it without these docs. A sample tape program finding catalog is printed below as is the CS1*FINDEX program listing (checksums added using EZ-KEYS PLUS) with permission of the author Joseph E. Bartle. It is released to the TI community as FAIRWARE. If you like it, send whatever you think it is worth to Joe at the address in the REM statements at the beginning of the program. Joe has other fairware offerings. Write or call him for details. User groups, not individuals, may obtain a copy of CS1*FINDX and the above mentioned doc files by sending a disk and paid return mailer to the Lima User Group, P.O. Box 647, Venedocia OH 45894 GSAMPLE FINDEX CASSETTE CATALOG H CATALOG NUM PROGRAMS 1 ~ 3D TICTACTOE 2 ~ BASEBALLSTAT 3 ~ DRAW-------- 4 ~ FUN HOUSE___ 5 ~ MEMORY JOB-- 6 ~ SPELL QUIZ__ 7 ~ GOLFHANDICAP 8 ~ LIGHT YEARS- 9 ~ PHOTO DIARY- 10 ~ ------------ REMARKS! 11 R TIB--------- 12 R TIB/DATAFILE 13 R TIB TEACHING 14 R XB/JS OPTION 15 R TIB/DATAFILE 16 R TIN/DATAFILE 17 R TIB--------- 18 R TIB--------- 19 R TIB--------- 20 R ------------