Documentation for the ARexx functions implemented in NComm V2.0 =============================================================== Introduction ~~~~~~~~~~~~ You need the programming language ARexx to use NComm's ARexx interface. If you don't already have it, either buy it or just forget about it. You will probably manage fine with the internal script language, but ARexx adds a few things that the internal script language lacks, for example numerical variables, arithmetics, string functions etc. Please read the ARexx documentation carefully before using NComm's ARexx interface. NOTE: ARexx is automatically supplied with AmigaDOS 2.0 so don't waste any money by purchasing ARexx alone. Port Name ~~~~~~~~~ NComm's port name is 'ncomm' for the first copy of NComm and 'ncomm-x' for further copies of NComm (x is 1 or more). So if you wanted to send commands to NComm, you would normally start your script-file with the following two lines: /* script name */ address 'ncomm' Result codes ~~~~~~~~~~~~ All the ARexx functions in NComm either return result codes in the special variable RC (Result Code) or in the string variable 'result' ...or both. Remember to check the result codes carefully. If RC is not equal to zero, the command was somehow not successful. How serious the result code is depends on which functions that returns it. NOTE: All commands return 20 if user selected "Quit" from NComm How to read strings ~~~~~~~~~~~~~~~~~~~ If you want to use any of the functions that return string variables, you have to add another line to your ARexx script: options results Note! ~~~~~ Arexx commands that you send to NComm must be either upper or lower case. Please see below for a list of commands. Also take a look at the few ARexx scripts that have been included. They especially demonstrate the WAIT and INACTIVITY commands in further detail. ========================================================================== ASCSEND ~~~~~~~ This functions sends a text file to the serial port with the menu function "ASCII Send". Arguments: filename to send Example: ASCSEND "s:startup-sequence" Returns: 0 if successful 1 if file not found or could not be opened AUTODOWN ~~~~~~~~ This function will turn Zmodem auto-download on or off. Arguments: ON | OFF Example: AUTODOWN ON Returns: 0 if successful 1 if missing argument AUTOUP ~~~~~~ This function will turn Zmodem auto-upload on or off. Arguments: ON | OFF Example: AUTOUP ON Returns: 0 if successful 1 if missing argument AUTOXFER ~~~~~~~~ This function will turn G&R commands on or off. Arguments: ON | OFF Example: AUTOXFER ON Returns: 0 if successful 1 if missing argument BEEP ~~~~ This function beeps the display / makes a beep signal / pops screen to front. This all depends on what you have selected in the menu. Arguments: none Example: BEEP This functions is always successful and therefore always returns 0 BREAK ~~~~~ This command sends a break to the serial port. Arguments: none Example: BREAK This functions is always successful and therefore always returns 0 CAPTURE ~~~~~~~ This commands selects the menu function "ASCII Capture". All data that is received through the serial port will be added to a file. Arguments: filename to open for writing Example: CAPTURE "t:tempcap.txt" Returns: 0 if successful 1 if capture was already on (could not open capture file) See also: STOPCAPTURE CD ~~ This command sets the current working directory for the CLI command. Arguments: directory name Example: CD "LIBS:" Returns: 0 if successful 1 if directory not found or invalid argument CHECKCARRIER ~~~~~~~~~~~~ This commands checks for a hardware carrier signal. Arguments: none Example: CHECKCARRIER IF RC = 0 THEN SAY "GOT CARRIER SIGNAL" Returns: 0 if carrier signal detected 1 if no carrier CHECKRING ~~~~~~~~~ This command checks for a hardware ring signal. Arguments: none Example: CHECKRING IF RC = 0 THEN SAY "GOT RING SIGNAL" Returns: 0 if ring signal detected 1 if no ring signal CLEARBUFFER ~~~~~~~~~~~ This command clears the ring-buffer. The 'Wait' command uses a ring-buffer that works on a first-in -> first-out basis (FIFO) to keep up with the latest 100 lines of data. The buffer takes up a maximum of 10K when it has been totally filled up. Normally the buffer takes up an average of 4-5K. You ought to clear the ring-buffer when your ARexx script has finished since this will release the memory that has been allocated. This will also make NComm run just a little faster... It may be a good idea to also use this command before your first 'Wait' command if you want to skip unwanted data that might exist in the buffer... Arguments: none Example: CLEARBUFFER This functions is always successful and therefore always returns 0 CLI ~~~ This command executes a CLI command and displays the output (if any) on the NComm screen. NOTE: The ARexx "address command" function does the same thing but normally causes a lot of burns and crashes. It uses the Amiga Execute() function, which has several serious bugs. Among other things, Execute() will try to write output to the current CLI window even if the CLI window has been closed or never existed. This normally results in a GURU. NComm contains a bugfix that makes it almost safe to execute commands via Execute() so please use this command instead of "address command" if you want to avoid a GURU when executing external commands from ARexx. Arguments: command to send Example: CLI "DELETE WORK:JRCOMM QUIET ALL" ; ~:-) Returns: 0 if successful 1 if command failed or invalid argument See also: CD CONFIG ~~~~~~ This function loads in a new config file. Arguments: config-file filename Example: CONFIG "ncomm:ncomm.config" Returns: 0 if successful 1 if file not found or could not be opened DIAL ~~~~ This function dials one or more entries in the phonebook. Arguments: one or more board names seperated by commas (,) Example: DIAL "rode,media,oslohd" Returns: 0 if connect 1 if no connect or entry not found DIALNUMBER ~~~~~~~~~~ This function dials one or more numbers. Arguments: one or more numbers seperated by commas (,) Example: DIALNUMBER "493210,380949,176056" Returns: 0 if connect 1 if no connect DOWNLOAD ~~~~~~~~ This function selects the download function from the menu. Arguments: file to open for writing or "foobar" if protocol does not need a filename. Example: DOWNLOAD "ram:rtfm.lzh" This function always returns 0 even if download failed. See also: SETPROTO DTENTHS ~~~~~~~ This function waits for the specified number of 1/10th seconds. NOTE: This command ties up the system. The best thing is to use the ARexx timer functions for this purpose since you may then continue to use NComm while waiting. Only use this command for small delays or when this accuracy is needed. If you want a long delay, use the ARexx Time() function. Arguments: number of 1/10th seconds to wait Example: DTENTHS 10 /* wait for one second */ Returns: 0 if successful 1 if no argument FILEREQ ~~~~~~~ This function opens up the req.library filerequester. Arguments: the directory that should be displayed Example: FILEREQ "ncomm:" IF RC = 0 THEN SAY RESULT Returns: 0 if successful, variable 'result' contains the path/filename 1 if no argument or if filerequester was already in use GETDATE ~~~~~~~ This function fetches the NComm creation date. Arguments: none Example: GETDATE SAY RESULT This functions is always successful and therefore always returns 0 GETVERSION ~~~~~~~~~~ This function fetches the NComm version number. Arguments: none Example: GETVERSION SAY RESULT This functions is always successful and therefore always returns 0 HANGUP ~~~~~~ This function hangs up the phone by either lowering DTR or sending the hangup string to the modem. Arguments: none Example: HANGUP This functions is always successful and therefore always returns 0 INACTIVITY ~~~~~~~~~~ This command specifies the inactivity timeout for the 'Wait' command. If nothing has been received through the serial port in the specified number of seconds, the 'Wait' command will return with the last line that was received. Arguments: number of seconds that can elapse without receiving data through the serial port or 0 if you want to disable the inactivity timeout Example: INACTIVITY 2 /* Wait command will return after two seconds of inactivity */ This functions is always successful and therefore always returns 0 LOADKEYS ~~~~~~~~ This function loads in a new set of macrokeys. Arguments: macro-file filename Example: LOADKEYS "ncomm:ncomm.keys" Returns: 0 if successful 1 if file not found or could not be opened LOADPHONE ~~~~~~~~~ This function loads in a new phonebook. Arguments: phonebook filename Example: LOADPHONE "ncomm:ncomm.phone" Returns: 0 if successful 1 if file not found or could not be opened MENUSELECT ~~~~~~~~~~ This function selects a function from the menu Arguments: menuname,itemnumber[,subitemnumber] Example: MENUSELECT "TRANSFER,6,2" /* Select Kermit CD from the menu */ Returns: 0 if successful 1 if invalid argument or too few arguments MESSAGE ~~~~~~~ This function displays a message in the NComm window. Nothing is sent through the serial port. Arguments: text to display in the window Example: MESSAGE "yoohoo" Returns: 0 if successful 1 if missing argument MSGSEND ~~~~~~~ This functions sends a message to the serial port with the menu function "Message Send". Arguments: message filename to send Example: MSGSEND "ram:mymsg.txt" Returns: 0 if successful 1 if file not found or could not be opened PADLINES ~~~~~~~~ This function will turn padding of blank lines on or off. Arguments: ON | OFF Example: PADLINES ON /* turn padding on */ Returns: 0 if successful 1 if missing argument PALETTE ~~~~~~~ This function opens up the palette requester. Arguments: none Example: PALETTE /* open palette */ This function is always successful and therefore always returns 0. PRINTER ~~~~~~~ This function will turn the printer function on or off. Arguments: ON | OFF Example: PRINTER ON /* turn on output to the printer */ Returns: 0 if successful 1 if missing argument REDIAL ~~~~~~ This function turns redial on or off. Arguments: ON | OFF Example: REDIAL ON /* turn redial on */ Returns: 0 if successful 1 if missing argument REQUEST ~~~~~~~ This function toggles system and NComm-requesters. You probably want to turn off requesters if the script is run without human assistance. It will then not be preferrable that "disk full" requesters etc. show up on screen and interrupts the script. NComm will automatically overwrite existing files instead of asking if requesters have been turned off. Arguments: ON | OFF Example: REQUEST OFF /* Turn off requesters */ Returns: 0 if successful 1 if missing argument RESUME ~~~~~~ This function will turn Zmodem resume on or off. Arguments: ON | OFF Example: RESUME ON Returns: 0 if successful 1 if missing argument SEND ~~~~ This function sends the supplied text to the serial port and also translates the output in case they contain control-characters, C-notation etc. Text will also be displayed on screen if half- duplex has been selected. Arguments: the text that should be sent to the serial port Example: SEND "\p\n^K" /* Send password stored in phonebook followed by linefeed and a Control-K */ Returns: 0 if successful 1 if missing argument SETBAUD ~~~~~~~ This function changes the current baud-rate. Arguments: new baud rate Example: SETBAUD "2400" Returns: 0 if successful 1 if invalid or missing argument SETCHARSET ~~~~~~~~~~ This function changes the current character set. Arguments: new character set Example: SETCHARSET "IBN" Returns: 0 if successful 1 if invalid or missing argument SETLENGTH ~~~~~~~~~ This function changes the current data length. Arguments: new data length Example: SETLENGTH "8" /* 8 data bits */ Returns: 0 if successful 1 if invalid or missing argument SETPARITY ~~~~~~~~~ This function changes the current parity. Arguments: new parity Example: SETPARITY "N" /* No parity */ Returns: 0 if successful 1 if invalid or missing argument SETPROTO ~~~~~~~~ This function changes the current transfer protocol. Arguments: new transfer protocol Example: SETPROTO "Z" /* Select the Zmodem protocol */ Returns: 0 if successful 1 if invalid or missing argument SETSTOPBITS ~~~~~~~~~~~ This function changes the current number of stop-bits. Arguments: new number of stop-bits Example: SETSTOPBITS "2" /* Two stop-bits */ Returns: 0 if successful 1 if invalid or missing argument SIMPLEREQ ~~~~~~~~~ This function displays a simple text requester. Arguments: the text to display Example: SIMPLEREQ "Could not load phonebook" Returns: 0 if successful 1 if missing argument SPAWN ~~~~~ This function sends an asynchronous ARexx command. This function is supposed to be used for running macros in parallel but I've never actually tried this. Use it with care. Arguments: the command to send Example: SPAWN "SPAWN" /* :-) */ This functions is always successful and therefore always returns 0 STOPCAPTURE ~~~~~~~~~~~ This function stops ASCII Capture. Arguments: none Example: CAPTURE "RAM:file.txt" WAIT "hello" STOPCAPTURE Returns: 0 if successful 1 if no capture to close STRINGREQ ~~~~~~~~~ This function opens up the req.library stringrequester. Arguments: the default stringrequester title Example: STRINGREQ "Enter your name" IF RC = 0 THEN SIMPLEREQ "HELLO "result"!" Returns: 0 if successful, variable 'result' contains string that was entered 1 if no argument or if stringrequester was already in use TWOGADREQ ~~~~~~~~~ This function opens up the req.library two-gadget requester. Arguments: the default two-gadget requester question Example: TWOGADREQ "Really quit NComm?" IF RC = 0 THEN QUIT Returns: 0 if user responded with 'Yes' 1 if user responded with 'No' UPLOAD ~~~~~~ This function selects the upload function from the menu. Arguments: file to send or "foobar" if protocol does not need a filename. Example: UPLOAD "ram:rtfm.lzh" Returns: 0 if successful 1 if file not found or could not be opened See also: SETPROTO WAIT ~~~~ This is the most powerful ARexx function currently implemented. It waits for text from the serial-port. If no argument is specified it will wait for "anything". You may also specify a string to wait for or '0A'X if you want to wait for the next line. This function always returns the current line. Note: The string is not case sensitive. Arguments: ['0A'X | string] Example: WAIT /* Wait for anything */ WAIT '0A'X /* Wait for next line */ WAIT string /* Wait for string */ Function returns 0 if command ok, 1 if timed out by inactivity command See also: INACTIVITY, CLEARBUFFER QUIT ~~~~ This function sets the exit flag, i.e quits NComm. Arguments: none Example: QUIT This functions is always successful and therefore always returns 0