*********************************************************************** ************** *************** ************** This file refers to CoComm Revision 4.14 *************** ************** *************** *********************************************************************** Please note that speech, highlighting, and many other features are only designed to operate when you are in AI CO Mode. When not in co, they are disabled. YOU NEED A LOT OF STACK FOR COCOMM - 20K MINIMUM!!!! OR GURU!!!!! You should NOT try to initiate Ai Co mode unless you are in Co on CIS. If you do, CoComm will "hang" until you press a ^C character, at which time it will abort the Ai Co request. Ai Co mode precedes EVERY line with ^U, ^H, ^H, ^H, ^H - if you try and run Ai Co mode anywhere BUT in CIS co areas, you'll confuse the HECk out of whatever host you are trying to communicate with! IMPORTANT: For CIS communications, use 8 bits, 1 stop bit, no parity. Memory requirements: CoComm needs about 316k if the Narrator and Translator libraries are NOT available; If it loads them, it needs about 353k to run. See list at the end of this file for change information for this version *********************************************************************** !!! NOTE !!! Many people experience difficulty using CoComm's function keys, due to the program's using many of the non-alphanumeric keys as meta keys. For SIMPLE use of the function keys, follow these rules: Use the '^' character to create a control character: IE: ^C Use the '|' character to send a newline; Enclose normal text within two " quote characters. ^X"TextToSend"| Hope this helps end some of the confusion! CBB Feb/14/88 *********************************************************************** *********************************************************************** There is a formal manual for CoComm; it is currently over 30 pages in length, and addresses every feature in CoComm. It is constantly being updated, just like the program itself, and is well worth $15.00 - which is the shareware contribution asked for CoComm, when and if you decide you want to use it. Please, if you can, do make the shareware payment; If we see that a shareware project can be made to work, we will enter into more of these efforts - some that would be made as commercial products otherwise. Shareware is a new direction for SoftCircuits, and if it works out, you will gain by it. CBB, for SoftCircuits, January 1988 *********************************************************************** *********************************************************************** Beginning with 4.00, CoComm is compiled with Lattice 4.0 C. This compiler is a SIGNIFICANT departure from the 3.1 version that was previously used to generate CoComm; please report any problems with CoComm's operation immediately To Ben Blish on CIS AmigaForum. Thank you. *********************************************************************** *********************************************************************** To setup CoComm, do the following. FIRST: { exec exec.me } NEXT: { Put coco in a workbench drawer that you wish to run it from. 'cd' to that drawer (directory) makedir ConfigLib makedir CaptureLib copy all .def files to ConfigLib copy all .Config files to ConfigLib doubleclick on the coco icon; after startup, point mouse at Phone Book gadget and click on it after Phone Book opens, select Projects/Keydefs from menus change the phone#, userid#, and password to YOURS, leave quotes! close keydefs window w/close gadget select Projects/Configure/File Cnf click on the '>' gadget next to the 'Phone" entry in file list click on SAVE gadget. CoComm should now be able to call CIS. } You can also 'run' cocomm from the CLI; however, using this set of example functions, you MUST have the directories created as specified above, and you MUST 'cd' to the directory that CoComm is in before executing the "run CoCo" that starts the show. You can change the macro keys to make CoComm run using all of it's data files from s:, or anywhere else - however be advised that if CoComm cannot find the configlib dir or drawer, it looks in s: for it's "default.config" file - so at least that will HAVE to be in s: Once started, the default file itself will point cocomm to the correct place where the configs are to be found. *********************************************************************** Some things you might like to know: When you download a new Version of CoComm, it's handy to use the def.config file supplied in the ARC to build your own default.config file again; This prevents any differences in .config file type from causing you any confusion. If you wish to use your previous file, then make SURE you check ALL of the prefs entries, and ALL of the locator entries to be sure they're ok. If they are not, things can get.... well, funny. The best proceedure to follow is to move the new CoComm where you want it to reside - probably where the last one was. Then start it, either using run, or by clicking on it's icon... It will find your old default.config file, and use it to set itself up. Chech the preferences window - make sure that all the new items (assuming there are any) are set as you prefer them to be, then close the prefs window and save a new default.config file. CoComm is uploaded with itself. Make of that what you will. You can close the following windows by pressing the ESC key, if you are NOT entering text into a string gadget at the time, and the window is active (selected): The /sen manager window; The Locator window; The Review Buffer window; In this window, the up-cursor and down-cursor keys will scroll the contents just like the arrow gadgets The Macro Keys window; Be careful - if you have a cursor in a text gadget, and you press the ESC key, then the ESC character will be entered into that text gadget instead of closing the window! The Prefs window; The configure files save the following information: The main windows size (only used on startup) The main windows position (also only used at startup) The Chat windows size (also) The Chat windows position (startup only) chat status - on or off. all of the names and ppn's in the locator window The baud rate (Only used at startup) parity (Only used at startup) word length (Only used at startup) stop bits (Only used at startup) the palette colors used when cocomm is operating Highlight pen choices for: sen's system msgs normal co message name normal co message contents brackets around co message name Preferences; Your name Review buffer controls Chat window status (on or off) the path to look for capture files the path to look for config files the extension to look for on capture files the character position where the auto word-wrap activates your word-wrap trailer string your hard c/r trailer string Custom screen option Interlaced custom screen option underline, boldface, and italics settings If the program cannot find it's startup file, it will setup some simple defaults. The first thing you should do is change all the settings to ones you approve of, and then save a file called "default.config" either in the ConfigLib subdirectory or in your s: assign. Cocomm initially looks in a directory called ConfigLib, if it can find it. Then it looks in the system assign 's:', so if you have default.config files in both places, it will use the one in ConfigLib, rather than the one in s:. Function keys are not buffered - this means that you can set them up with things like *"o/u co"| for a status report, and press the key even though you're in the middle of a line in the chat window... it won't disturb you, and the status report will come up in the log window. In the config file supplied with this ARC, you will find comments in each of the function keys. To read them, open the function key window using either Right/Amiga/K or the menu entry, click in each key text area in turn, and scroll the text using the left and right cursor keys. Then study this section to learn how each key is programmed. In a function key definition, you can use the following special characters: ^char - generate a control character out serial port | - generate a c/r out serial port ` - rest of function key is ignored ~ - wait for about 1 second >nn"xxx" - start key 'nn' after 'xxx' tenths of a second < - abort '>' key timer ("AnnSTRING" - watch for STRING, use register 'A', if found start key 'nn' )nn - stop watching with register 'nn' @"filespec" - open capture on file 'filespec' @"" - close capture *"yxSTRING" - send STRING to 'x' (s)peech, (w)indow, (o)utserial, (p)rint \nn"path/file" - load new config as 'path/file'.CONFIG start key 'nn' ["filespec" - initialize user gadget window using 'filespec' { - open user gadget window } - close user gadget window ]"DWPSBBBb" - set (D)uplex, (W)ordlength, (P)arity, (S)topbits, (B)audrate =A - Ai Co Mode On =B - Buffered Chat window On =C - Close Chat window =D - Disable Ai Co Mode =F - Flash screen =Q - Quit CoComm =R - Review Buffer to Front =S - Workbench Screen to Front =U - Update /sen list =W - CoComm Windows to Front (activated) ?"commandline" - Execute DOS command (with I/o to/from nil:) +"xxx"yyy" - BEEP at tone 'xxx' for time 'yyy' &"filespec" - send file 'filespec' (halt w/ ^C) $x - emit next char as normal char instead of execute function :r+ - increment numeric control register 'r' :r- - decrement numeric control register 'r' :r0 - clear numeric control register 'r' :rLn - (L)oad register 'r' with value 'n' #nn - jump to key 'nn' #:xnn - jump to key 'nn' if numeric register 'x' EQUAL 0 #;xnn - jump to key 'nn' if numeric register 'x' NOT EQUAL 0 #>xnn - jump to key 'nn' if numeric register 'x' GREATER THAN 0 #xnn - call key 'nn' if numeric register 'x' GREATER THAN 0 !" - This starts the function key timer. You can start any funtion key with the timer; Syntax is: >nn"x" where nn is the function key number and x is the time, which is a positive number which may be 1 through 99999 - each unit is 1/10th of a second. If you wish to disable the timer, use the "<" function, described next. When the timer times out (If it does) the function key specified will be started. This timer has a range of over 27 hours. "<" - This stops the function key timer; it will not time out, and the function key specified in the ">" statement will NOT be executed. "(" - this "SETs" a watch string. Syntax is: ("AnnSTRING" A = 1 character, A-Z, upper or lowercase: a match register. nn = 2 digits, 01-20: a macro key number. STRING = ASCII: a text string. Once set, until you execute an UNSET (see next item) for this watch string, EVERY time this string is encountered, except during file transfers, the specified function key will be invoked. There are 26 watch strings, 1 for each letter of the alphabet. IMPORTANT NOTE: match registers A-M are CASE SENSITIVE! match registers N-Z are NOT! So; ("A10testING" Will ONLY match this string: testING But: ("N10testING" Will match any of these: testing, TESTING, TESTing, testING, tEsTiNg, TeStInG. Either one would start key F10 executing upon a match. ")" - this UNSETs a watch string. Syntax is: )A where A is 1 character, A-Z, upper or lower case. Once unset, this watch will no longer be functional until another SET operation occurs for it. "@" - this turns the capture buffer on and off. It is followed by a quoted string; ie: @"df0:capfile" this would begin to capture to the file df0:capfile. To turn capture off, use this syntax: @"" that will close the capture file. "*" - This sends a string to the narrator, the printer, or the screen. The string can be either plain ASCII text followed by a quote, or it can be a 'handle' as recieved by the program on a recent line. Syntax is as follows: *"yxSTRING" where 'x' can be one of the four following options, upper or lower case: S - Speech; Text sent to the narrator. W - Window; Text sent to the window. P - Printer; Text sent to the narrator. O - Output; Text goes to CIS, out serial channel. and where 'y' is an OPTIONAL field that can be one of three things; if an '+', then the text is taken from the LAST input line from a CO level line. If an '-', the text is taken from the LAST input line from a /sen level line. if an ':x', the 'x' is a parameter a-z or A-Z, a numeric register - the text will be "43" if the value in the register is 43. If you use the y option, then the STRING portion is omitted, as the string data will come from internal registers. "\" - This loads a new .config; you can use it to run sequences of function keys limited only by disk space. Syntax: \NN"filename" (.config is added automagically) Where NN is the function key to be started after the load completes. If you use 01-20, then the specified function key will be started immediately after the new config is loaded; if you use '00' there, then the config is loaded, but no key is started. Any other value will cause an error condition. "[" - This initializes the User-definable gadget window. it has one parameter, a file name; use it like this: ["path/filename.extension" This will cause CoComm to attempt to read a control file that contains ascii text in a certain format, and if it is successful, a window will be initialized (not opened, though) with the gadgets specified in the control file. You may then use the '{' and '}' functions to open and close the window, respectivly. Here is the format of the file, as demonstrated by an example: Gadget Window Title - window title 03 - number 01-20 (how many gadgets) 05FKEY #5 - key number 01-20, 21-40, or 41-60 09FKEY #9 - key number 01-20, 21-40, or 41-60 20FKEY #20 - key number 01-20, 21-40, or 41-60 You may have only as many gadget def lines as the number you specify under the window title line; Gadget text names are limited to ten characters; All numeric parameters MUST be two digits; And you MUST have as many gadget definitions as you specify on line 2, or the initialization will fail. Using the range 1-20 to specify the fkey to execute will cause the text in the gadget to be color #1; Using 21-40 will cause it to be color 2; and using 41-60 will cause it to be color 3. Put a little differently, pick an fkey 1-20. then, for color 2, add 20. Or, for color 3, add 40. "{" Opens the window initialized by the '[' function, described previously. "}" Closes the window initialized by the '[' funtion, described previously "]" - This allows you to set up the communications parameters from the macro language. Syntax is as follows: ]"DWPSBBBb" where (D)uplex may be (F)ull or (H)alf (W)ord may be (8) or (7) (P)arity may be (O)dd, or (E)ven, or (N)one (S)topbits may be (1) or (2) (BBBb) is a baudrate specification, all of the following are legal: 000 0000 0300 300 1200 2400 9600 the zero value is a special value - it means "Don't change the baudrate" examples: ]"F8N11200" ]"H7E1300" ]"H7E10300" ]"f7n2000" "=" - This initiates CoComm functions. You place a single character after the "=" character, and it performs a function. These characters may be upper or lower case. =A "Ai Co Mode On" =B "Buffered Chat window On" =C "Close Chat window" =D "Disable Ai Co Mode" =F "Flash screen" =Q "Quit CoComm" =R "Review Buffer to Front" =S "Workbench Screen to Front" =U "Update /sen list" =W "CoComm Windows to Front (activated)" NOTE: if the Chat Window is open, then it is the window that gets activated; If not, then the main log window is activated. "+" - This controls a 'beep' feature. It has two three-digit numeric parameters; Use it like this: +"xxx"yyy" The 'xxx' parameter is the duration of the note; the larger, the longer it lasts. The 'yyy' is the period, or tone of the note; the larger, the lower the tone. "&" - this controls the send file feature. It is followed by a quoted string; ie: &"df0:sendfile" This would send the complete file to the serial output. Filename required. Operation can be halted by a control C. "$" - this, when placed before another of the special characters, causes that character to be emitted normally; IE, putting $| in a macro will send the "|" char, not a new line. "?" - Followed by a quoted string, this implements a DOS execute facility. Use like this: ?"NewCLI" All I/o is to/from the 'nil:' device, so if you need text output, you'll have to make a newcli and go from there. The return code from the command is placed in numeric register 'Z', and so can be tested for zero or non-zero results. ":" - this is a numeric register control command; you follow it with a register A-Z (not case sensitive) and then one of four items; '+', '-', 'L"number"' or '0'. The + increments the register, the - decrements it, the L"number" loads it with the number, and the 0 clears it. So, you could say: :p0 and that would clear register P. You could say, :T+ and that would increment register T. You could say, :uL"45" and that would load register U with the value 45. values can be up to six digits in length, 1 digit minimum. You use these in conjunction with the "#" jump and "!" call operations, described next. Numeric register 'Z' is used by the ?"" execute statement; the return code from the executed command is placed in the 'Z' register so you can test it and control the macro execution based on the results. "#" - this means that the next two chars choose another macro key; ie; #03 will start key F3 executing.... use 01-20. This is a "jump" operation; meaning that once this has occurred, the key with the #nn instruction will NOT resume operation. Optional conditional jump uses another set of syntax; if the '#' character is followed by one of the following four characters: :, ;, <, or > and then a letter a-z or A-Z, then the jump will only occur if that numeric register is ZERO, NONZERO, LESS THAN ZERO, or GREATER THAN ZERO. Used like this: #:q03 This statement says that IF numeric register Q contains zero, THEN we jump to key number 3. Otherwise, execution continues in this key. If you say, #;t04 this means: IF numeric register T is nonzero THEN we jump to key number 4. if you were to say #>b05 then key 5 would be executed IF register b was greater than zero... if it was zero or less than zero, execution continues in the current key. If you were to say # and then a letter a-z or A-Z, then the call will only occur if that numeric register is ZERO, NONZERO, LESS THAN ZERO, or GREATER THAN ZERO. Used like this: !:q03 This statement says that IF numeric register Q contains zero, THEN we call key number 3. Otherwise, execution continues in this key. If you say, !;t04 this means: IF numeric register T is nonzero THEN we call key number 4. if you were to say !>b05 then key 5 would be called IF register b was greater than zero... if it was zero or less than zero, execution continues in the current key. If you were to say !3.99 4.00 : Compiled with Lattice C ( lost 15k in the process! ) 4.01 : Parity problems fixed - parity settings are now correct, my fault, sorry! One consequence of this is that you MUST sign on to CIS with the following settings if you are going to download or upload: 8 Bits 1 Stop bit No parity 7e2 works, but CIS doesn't like it for file transfers. + Small bug, filerequester sorting OLD lists of data before it read in the new lists, fixed. Now sorts only when it has new info. + Both the /sen manager and the Locator will now function outside of the Co area; however, the locator provides different info outside of co - beacause of the way the forum software works, you only get some information about the person - last time on - not where they are. Sorry, but that's the forum software for you. + 4.00 had QB download problem, engendered by the use of the new Lattice 4.0 compiler - fixed now. + Download abort now works; + Aborting uploads will no longer leave the file open; + You can now specify a CUSTOM screen for CoComm to open into. You cannot change from a custom screen back to the workbench, or vice-versa, while running. Choose the desired option in the preferences window, and save the default.config file... from then on, CoComm will use that screen option. + Additional Screen option: "Lace", short for interlace; you can specify that CoComm open the CUSTOM screen as an interlace screen, for 400 or more lines of video. CoComm should use the same standards as your workbench screen - that means if you have extra rows, or columns, via morerows or PAL, the custom screens CoComm creates should also reflect that. The interlace switch also only takes effect when CoComm first starts. 4.02 : Filerequester modified for much faster sorting of file lists, dir lists, and root lists. + Filerequester "OK" message now includes file/dir/root counts for your convenience. + Review buffer now clears and displays immediately after a LOAD review operation (Dunno how I missed THAT one!) + When a load review buffer operation would overfill the review buffer, the notice requester indicates how many lines bigger than the buffer the file was. allowing you to intellegently re-allocate the buffer, if you desire. + Review buffer load would always leave one line from the previous contents in it - no longer. + In v4.01, if you opened an interlace screen, then modified the Prefs settings for non-interlace, saved them in the default.config file with your windows in positions that are not acceptable for a non-interlace screen, CoComm would be unable to restart using that default.config file. Now fixed - you can even use those .configs that didn't work... they'll be ok now. Sorry. 4.03 : This revision adds the ability to use color highlighting on individual words and phrases. Using an exclamation point followed immediately by a numeral (1,2, or 3) will cause the color of the text in Ai Co mode to be changed. The "!1" color is the default; You use a !1 to return a phrase to the original color of the Co Text highlight. Use !2 and !3 to make the text appear in the other colors. This feature can be disabled in preferences, if you don't want others able to control your color set. These text options cancel themselves at the end of each line, so there is no problem with sending up a phrase like this: "!2Hi, Mom." 4.04 : Fix for "Transmit File" operation. Incoming text characters during a transmit operation were not filtered, so it was possible for your screen to go into the ALT character set; looked like crud, and impossible to read, if it happened. Fixed now. + Extensive rework on the other transmit options; the &"" option in the macro keys, and the review buffer transmit as well. + Added preferences gadget for disabling the color highlighting feature - supposed to be in 4.03, but I forgot to do it. + Not a feature of 4.04, exactly, but good to know about: An ARC file has been created that contains a nifty automatic HELP generator for you to use with other people in CO; the file creates a string of requesters that send your choice of HELP files to the user in Co; Really a super use of the macro keys. Included is a complete explanation of how to use it. 4.05 : Xmodem standard (as opposed to Xmodem CRC) file transfer protocol has been added; this allows CoComm to be used for Amiga->Amiga transfers, and of course almost any bulletin board will support xmodem; You can now use all that macro power on other systems! (limited distribution Version) 4.06 : *"sSPEAK TEXT" string output variation had a bug where calling it multiple time quickly in succession would cause a GURU, due to faulty code that was SUPPOSED to be checking to see if the last speech command had completed but wasn't. all fixed now. + Xmodem CRC added... an additional protocol for use with more sophisticated BBS's and networks. + Additional support for 7-bit use; some internal routines were still seeing the 8th bit, missed it because I never run 7 bits, myself. Sorry. + Added Echo/No echo for CoComm -> CoComm/other term use. + Added Half/Full duplex + Added Incoming C/r = C/r OR C/r-LF + Added Outgoing C/r = C/r OR C/r-LF 4.07 : Both Xmodem AND Xmodem-CRC had nasty bug on receiving files due to XON/XOFF problems throughout CoComm, my mistake. This has been corrected... The problem manifested itself as the program's tendancy to swallow the first $11 character that came along - if you dl'd a text file, you couldn't get past block 16, because the protocol sends a $11 at the beginning of block 17. + Related to the above problem, you can now type ^S and ^Q (XON/XOFF) into the log window and they will be sent as you would expect - CIS (and other systems) will respond appropriately. + Doug: The Prefs window has a new item in it; It's a text gadget called "Pass:" You enter into this gadget all the control characters that you want to pass "through" the chat window; For instance, on CIS, the following control characters are used often: ^C - Aborts the current operation completely ^P - Aborts the current operation locally ^S - Stops output to your screen until ^Q ^Q - Resumes output after ^S If you type SQCP into the "Pass:" gadget, then any time you type ^S, ^Q, ^C, or ^P into the chat window, the control character will be immediatly sent on to the host. Note that you can change these characters to anything - and that this function take precedence over standard chat functions; For instance, ^R normally swaps the characters under the cursor in the chat window; if you enter an R into the Pass: gadget, then typing a ^R will only send the ^R on to the host system - NOT swap the characters anymore. Use judiciously. any or all of the 32 possible control characters may be placed in the Pass: gadget; it scrolls to accomidate more than fit in the little window. Order does not matter, nor does lower/upper case. 00-@ 01-A 02-B 03-C 04-D 05-E 06-F 07-G 08-H 09-I 0A-J 0B-K 0C-L 0D-M OE-N 0F-O 10-P 11-Q 12-R 13-S 14-T 15-U 16-V 17-W 18-X 19-Y 1A-Z 1B-[ 1C-\ 1D-] 1E-^ 1F-_ 4.08 : For v4.08 there is an entirely new function, one that allows you to open a window with from 1 to 20 gadgets in it; You control the text that appears in these gadgets, and how many there are. Each of these gadgets can start a function key; The whole thing is controlled by a "define" file, that contains plain ASCII text you use an editor to build. Details are available in the macto key function explanations. + The cursor in the LOG window is now automatically turned off when you are using the chat window; It only appears when you are using the log window directly. 4.09 : the gadget window added in 4.08 would not open into a custom screen - fixed now. 4.10 : Review Buffer window will now shrink somewhat further - in response to some careful critisism. + The gadget window now has the ability to have user-specifed colors for the text in the gadgets - this allows you to highlight the items you consider of overriding importance. You modify the number of the fkey in the beginning of the line for colors: Use 01-20 for color 1, 21-40 for color 2, and 41-60 for color 3. + CoComm can now optionally execute an fkey when it is started; to choose an autostart fkey, enter a number from 1-20 in the "AutoStart" gadget in the prefs window and save as the Default.config file. + CoComm will now remember where you last "parked" the gadget window, so if you close it, it will re-open where it was when you closed it, instead of always starting in the same position. + Somewhere b4 this rev a bug crept in that would not allow you to change the serial parameters except at startup; That's fixed, you can now select the baud rate, parity, and stop bits on the fly at any time w/o quitting CoComm. 4.11 : To the macro language, added the ']' statement - this allows you to set the communications parameters from a macro key operation. This addition makes the phonebook concept now 100% viable using the gadget windows and macro keys. Examine the phone.config F11 key for an example of it's use - there, it sets you to 8N1, Full duplex, and does NOT change your baud rate... Thus ensuring that your protocol transfers with CIS operate correctly. + added the simple quoted string serial output; To send any text except a double quotation mark, simply enclose it in the double quotes, like this: "send this text" + bug fix: macro keys that had a comment at the end would not 'return' when 'called' from another key - fixed now. + default.config demos restructured to use phonebook gadget window, meta funtion that calls CIS (in phonebook config, now) also restructured for easy modification by the new user. 4.12 : QB proto auto-sense disable added for use of the CoComm program on systems that do NOT handle the QB protocol - IE, anywhere but CIS. 4.13 : Added a menu for use in handling the '.def' files; It kind of offended me that you had to use a text editor to prepare them; It 'feels better' to be able to handle everything right from CoComm. Available menu options are save, load, and edit. The Load function automatically opens the editor. 4.14 : Added a DOS Execute function to the macro language; the '?' character is used for it. The return code from the command is placed in numeric register 'Z'. + Added some other conditions to the conditional jump and call facilities. Previously, you could jump or call (using numeric registers) on zero or non-zero conditions; You can now also jump or call on greater than zero and less than zero conditions. This was added because it was observed that some commands returned a negative return code, and you may need to be able to test for that in order to handle it properly.