SayMore Version 0.33 © 1996 - 1997 By Kenton A. Groombridge Why the year long wait for so little change: I took a second job on top of my regular job. This was keeping me very busy. I tinkered with the program a little bit here and there, but didn't get serious with it. Now I am getting ready to go to Heidelberg, Germany, and quit my second job. In case you didn't know, I am in the U.S. Army. Well anyway, I have some free time on my hands, so I am going to try to finish this program. I am seriously looking at using ClassAct to do this. I hate MUI. MUI is the totally wrong approach to Amiga programming. It is large, it is slow and in makes you the user pay for it. ClassAct is a tool for the programmer and you the user do not pay a cent for it. When I get to Germany, I will probably purchase ClassAct and make SayMore the program I have been talking about in my "To Do" list. I am going to try to keep my email address listed below active for a while, but if you try emailing me and can not get through, wait for the next post of SayMore and I will have my new email address included. Introduction: SayMore is a program designed to replace Say. Say was fine for Workbench 1.3, but the Say program included with 2.0X did not have the ability to change most of the options in the new narrator.device. There are a couple programs similar to SayMore currently on Aminet. These programs have severe memory leaks and are not system friendly. A considerable amount of time and effort has gone into SayMore to ensure that it is safe. It is near impossible for me to test all the limits of SayMore, but all test have proven that it is completely 100% OS friendly and has no memory leaks. Disclaimer: The use of this program is on your own risk. There is no liability or responsibility for any damage caused by the program. Copyright: SayMore is free to be spread on public-domain and shareware disks, as long as they  are sold for a reasonable charge. Use of the program: I do not plan to charge for the use of SayMore, but I have coined the term caveatware. Caveatware means that you may use the program with the following stipulations. 1. If English is your native language, please try to speak it correctly. I know that my English is not always correct, but I am trying to improve it. Some of by pet peeves are using the word "gender" when you mean "sex." As one person who sent email to me put it, "Gender is the attribute of a word and not a person." This is all part of political correctness which I despise. 2. Write a program for the Amiga. It doesn't matter how big or small. Think of something you like, or even find a program for another platform and port it to the Amiga. You would be surprised on how much source code is available for free. 3. If you write software for the Amiga, do not use MUI. 4. If you write Amiga software, and charge a fee for what you write, please consider discounts for other Amiga software authors. 5. Send a message to me letting me know that you use the program. I would greatly appreciate some input on what you would like to see added or changed to the program. 6. Bug who ever owns the Amiga at this time to include narrator.device and translator.library with future releases of Workbench. 6. More to follow. Installation: For any CPU, copy the SayMore icon and executable to any directory. For 68020+ CPUs, copy the SayMore.020 icon and executeable to any directory. Rename the files is desired. Required: As far as I know, this program requires Workbench 2.04+, but it has not been tested on all platforms. It was written on an Amiga 4000/40 and tested on an A2000/GVP 040/Workbench 3.1. Remember that it requires the new narrator.device and translator.library included with Workbench 2.0X. As far as I know, the only way to legally get these files is to own one of these versions of Workbench. Usage: SayMore pretty much works like the old "Say" program. It supports history and cut and paste. Use Right Amiga-C to copy from another window, and Right Amiga-V to paste in the SayMore window. It may act quirky if there are carriage returns or line feeds at the end of each line. To quit the program, type CTRL-\ in the input window, hit "ENTER" on a blank line, or use the left mouse button to close the input window. Reporting errors: I have put in some code to help determine the cause of errors. When a detectable error occurs in this program, a Window will pop up with a message and the amount of free chip RAM and fast RAM. If either of these numbers are small, you may be running out of memory. Try to free some memory and try again. Read the message. If the message says "Can not open translator.library V37 or above," check to see that you have that library and it is the correct version. When opening devices, there is not a field to indicate what version of the device to open, so this program will just open any narrator.device on disk. If things are not working like you would think they should, (example: face is not moving, changing gadget values does not affect voice), go to the shell and do a "version narrator.device". If it does not specifically say version 37 or above, then you have the wrong version. There is only one error, at least of that I know, that will cause the program to fail without a message, and that is the incorrect or missing "intuition.library" or not enough memory to open this library. Without this library, a window can not be opened to indicate the error. If you can not determine the cause of the error or the program fails without a detectable error, please send me the configuration of your system, other programs that were running at the time, and any other information you feel is important. Contacting the author: e-mail kgroombr@hereford.ampr.org snail-mail Kenton Groombridge 1405 North Center Avenue Hardin, MT 59034 USA Acknowledgments: This version of the program is written using SAS/C 6.57. SAS/C is a great program, and I hope that they continue support for the Amiga. Thanks to the SAS/C Amiga developers for the patches written after Commodore's death. To do: 1. Tool types for user configurability. 2. File requester. 3. Command line operation that parses arguments. 4. Switch characters so that the speech can change while speaking. 5. Add "Stop" button so that speech can be interupted. 6. Sizable main window. I am not using MUI! 7. Add menu with items such as "About", "Open", and "Quit". 8. Make font sensitive. 9. Add localization. 10. Different faces for the "Face" window. 11. Make certain windows optionable such as "Face", and "Console output." 12. Convert documentation into AmigaGuide format. 13. Make a pretty icon. 14. Requester that opens when trying to run another instance of the program. Requester will have a bring to front button and an OK button. At the moment, there is no requester at all so if the SayMore window can't be seen, trying to launch the program may give indication that it is failing. 15. ARexx port. Wouldn't it be nifty to make your programs speak? 16. Options to follow at the request of users. Revision history: 0.10B Written in assembler. It was not user friendly, but it worked. 0.20 Ported to C and made several enhancements. 0.25 Fixed a bug in error reporting. It reported that it could not create the console message port when it could not open translator.library and vice-versa. Included the correct documentation. 0.30 Fixed bug with the console_task that caused messages to get passed to the wrong instance of the program when two or more instances of the program were loaded. Changed translate_buffer's size to account for the largest possible translate string (I hope). Discovered a bug in translator.library. When it handles large strings of consecutive numbers, it will skip numbers every 100 numbers it processes. The tranlate_buffer's size accounts for the largest string possible when or if this bug is ever fixed. Found a bug with the creation of the console_task. If console_task tried to find it's parents message port before the port was added to the system list, it would crash with a Guru 80000008. I could not find a way to completely fix this bug. I did make it where the parent's message port is added to the system list way before the spawned task should ask for it. The only way I know to fix this is to have only one instance of SayMore running at a time. If at anytime you get this error, please let me know, and I will work harder to try to eliminate this bug. Added "Face" window. It is ugly, but it is a start. 0.33 Changed code so that only one instance of SayMore can run at a time. There really is no reason for two instances since only one narrator.device can be open at any one time. If you were getting that 80000008 Guru, it will be gone now. Fixed "Face" window so that it works with different size borders (urouhack). Eliminated the GimmeZeroZero window for face and rewrote the drawing routines so less system resources are required and speed in increased. Now uses EasyRequest() to print error messages. This is good news for those Amiga monitors that don't sync down to 15KHz. "Face" window now uses a diamond mouth. Don't worry, future versions will have user configurable mouths. This is just for testing since I am certain that the oval mouth functions properly.