---------------------------------------------------------------------- OE8DJK, Bernd M. Stroj 04.01.1997 ---------------------------------------------------------------------- Pr4Win (Packet Radio for Windows) is a KISS-Mode terminal program. After more than two years of development Pr4Win is now ready in it is Version 2.10 Build 95. P4W32210.EXE is a true 32-bit version of pr4win. It is completly written in Microsoft visual C 4.0 and will run under Windows95 and Windows NT 3.51 (NT 4.0). P4W16210.EXE is the 16-bit version of pr4win. It is written in Microsoft visual C 1.52 and will run under Windows 3.1 and Windows 3.11 (under OS/2, Windows 95, NT 3.51 or NT 4.0 in the 16-bit subsystem). P4W210e.EXE contains the english program documentation. Pr4Win needs about 2 MB Harddisc and at least a 25 Mhz 80386 PC with Windows 3.1 in enhanced mode (Win 95, WINNT 3.5 or OS/2 have their own (higher) minimum equiptment). You will also need a KISS-Mode-able TNC like PK232, TNC2, TNC3, MFJ1296 ... p4w32210.exe (p4w16210.exe) are self-extracting archives. If you start them in a DOS window right from c:\ they will create a directory c:\pr4win an will put all the stuff in it. Both versions can share the same directory and be used alternatively. Pr4Win (information, help latest news) is also available via WWW (World Wide Web) "http://hamradio.csesys.co.at" This version of Pr4Win has a build in limitation wich will disable most of its features after Mai.31.1997 "1997", following uploads will have a later date. vy 73+55 de Bernd, OE8DJK bstroj@csesys.co.at ---------------------------------------------------------------------- Updating Pr4win 2.02 (2.10) to Pr4Win 2.10 (Build 95) ---------------------------------------------------------------------- You should make a backup copy of your "..../pr4win/log" directory and your "pr4win.ini" file. After installing release 2.10 into your pr4win directory you can restore your backup of "..../pr4win/log". The pr4win.ini file should not be restored but merged. The essential TNC configuration sections [Px], [PxINI] and [PxDEINI] have not been changed with this release, so you can copy your old configuration into the new pr4win.ini file. ---------------------------------------------------------------------- Pr4Win Release 2.10 (Build 98) 04.01.1997 ---------------------------------------------------------------------- New functions in Pr4Win 2.10 * Script language for automating connects. . Each script is a ANSI text file where each line is terminated with CR-LF. Script files have an ".SCR" file name extension and are located in the "...\pr4win\script" directory. Each line of a script file contains one instruction. Lines can be prefixed with blanks for easier reading. No TAB characters are allowed in script files. Script files can be written with any editor. Scripts can be invoked with the menu entry "execute script" from the connect window. Another way to execute scripts is the new timer function. Timer allow to initiate connects that are scheduled in the timer window and start a script when the connect succeeds While a script is executed, the input line for this connection is disabled and the menu entry "execute script" is checked. The execution of the script can be interrupted by unchecking the "execute script" menu entry. Variables ----------------------------------------------- In scripts you can define and use symbolic names for strings or numeric values. Names of variables consists of up to 32 characters. Capital and small letters are distinguished. Some variables are defined and filled with values from Pr4Win and can be used in any script, User variables are defined with "set variable value". The instructions ":label" or "readln %var%" can also be used to define variables. Predefined variables ----------------------------------------------- %MYCALL%........Your call sign including your actual SSID. %YOURCALL%......Call of the station you are connected to (including SSID). %YOURNAME%......Name of the connected station from your station database. %LASTCON%.......Date and time of the last connect with the connected station. %DATE%..........Current Date and Time %VER%...........Current version of Pr4Win. %CRT%............CR-LF %TRANSFER%......"OK" or "ERROR" Last UU encodes transfer state. Predefined variables for steeping through a check list. ----------------------------------------------- After each execution of "if (CHECK_LIST_EMPTY) :label", which did not branch to :label the following variables are defined and filled with actual data by Pr4Win. %CHK_DATE%......Date of the check list entry %CHK_CALL%......Station who uploaded the entry %CHK_FILE%......News Group %CHK_MBX%.......Forward to %CHK_FNUM%......File number %CHK_TITLE%.....Titel of this check list entry Script language instructions ----------------------------------------------- # Remark -- Remark to make the script more readable. Only whole lines can be used as remark. :label -- Destination for a execution branch. Labels may be used in "goto","loop" and "if" instructions. The execution is continued with the line that follows a label when this label is used as a branch destination. With each "label" there is a variable %label% defined automatically. This automatic variable contains a numeric value that tells how often this label has been executed. This may be used within loops to access a loop counter. .Text -- "text" is displayed in the local connect window in blue lines. If "text" contains variables (surrounded by "%" characters) they, are substituted by there values. //COMMAND -- Executes "//COMMAND" on the connected station. The same result is made by "send //COMMAND". If "text" contains variables (surrounded by "%" characters) they, are substituted by there values. !//COMMAND -- Executes "//COMMAND" local. All remote instructions can be executed as if they where entered by the connected station. call script.scr -- Calls "script.scr". The execution of the current script is suspended until a "return" instruction is executed in the called script. checklist -- The content of the check list window is transferred into a local check list which may be processed by the script using "if (CHECK_LIST_EMPTY)" instructions. The check list window might have been filled by an "send c 1-200" instruction before. clearlist -- Clears the check window contents. This instruction should be called before the check list window is filled with new mail box entries. delay seconds -- Waits "seconds" seconds until the next line of the script is executed. disconnect -- Sends the goodby text and disconnects from the other station. goto :label -- The execution is continued with the line following the "label" instruction. if (word=%variable%) :label -- If "word" is equal to the contents of the variable %variable", the execution of the script is continued with the line following the "lable" instruction. Both "word" and "%Variable%" may contain alphanumeric or numeric values. if (%variable1%=%variable2%) :label -- If the contents of both variables is the equal, the execution of the script is continued with the line following the "lable" instruction. if (word~%variable%) :label -- If "word" is found within the value of %variable%, the execution of the script is continued with the line following the "lable" instruction. if (CHECK_LIST_EMPTY) :label -- Is no entry left in the local check list, the execution of the script is continued with the line following the "lable" instruction. Otherwise the next check list entry is read into the CHK_* variables. if (SEND_MAIL_EMPTY) :label -- If there is no unsent mail in the local mail list, the execution of the script is continued with the line following the "lable" instruction. inc variable offset -- The numeric value is increased by "offset". The "offset" may also be negative. If no offset is specified the variable is increased by +1. log text -- Substitutes any place holders in text and writes "text" to the log file. The log file is created in the log directory. For each month there is a new log file created with an filename consisting of the year and the month. E.G....\pr4win\log\199612.log loop :label count -- The "loop" instruction branches count times to "label". then the loop is terminated and the instruction following the loop instruction is executed next. Attention! "label" might have been changed by an "inc label offset" instruction. readln %variable% [@timeout [:label]] -- reads the next line, sent by the connected station into the variable %variable%. Is this variable is not defined, it is defined by the readln instruction. Optional: If no line is received within timout seconds the sript is continued with the line followig ":label". If ":label" is not specified the script continues with the next line. readmail readstring -- This command is used to transfer mail or news from a public mailbox to your local mail box. "Readstring" is sent to the connected station. If the execution of the script should wait until the specified mail or news is completely read, you should write a "waitfor PROMPT" instruction in the next line. If there are variables included in the "readstring" this variables are substituted by their values. E.G. "readmail r %CHK_FILE% %CHK_FNUM%" is used to read a check list entry into the local mailbox. return -- The execution of a script that has been started with "call script.scr" is terminated and control is given back to the instruction following the call instruction. send text -- "text" is sent to the connected station. You could use this instruction to invoke remote commands on the connected station.E.G. "send //GB *.DAT" makes the connected station to send all files with the file extension ".DAT" from the current working directory. Each file is UUENDODED before it is sent. If there are variables included in "text" this variables are substituted by their values before the text is sent. sendmail -- Transfers new written mails, replys and news from your local mailbox to the connected mail box. set variable value -- Defines a variable and assigns value to it. Value may be numeric or alphanumeric. set PROMPT promptString -- With this instruction the system variable PROMPT can be overwritten. If you are connected to a mail box, this variable is set from data in the database other wise you have to use this instruction before you can use "waitfor PROMPT" stop -- Terminates the execution of the scripts. waitfor text [@timeout [:label]] -- Stops the execution of the script until a line from the connected station is received which contains "text". If there are variables included in "text" this variables are substituted by their values before the text is sent. Optional: If "text" is not received within timout seconds the script continues with the line followig ":label". If ":label" is not specified the script continues with the next line. waitfor PROMPT [@timeout [:label]] -- Stops the execution of the script until a line from the connected station is received which matches the description in the system variable PROMPT. Optional: If no PROPMT is received within timout seconds the script continues with the line following the line containing ":label". If ":label" is not specified the script continues with the next line. waitfor %variable% [@timeout [:label]] Stops the execution of the script until a line from the connected station is received which contains the value of variable. Optional: If no line is received within timout seconds the script continues with the line following the line containing ":label". If ":label" is not specified the script continues with the next line. ---------------------------------- The following example of a script reads my private mail from the mail box, and sends my local written mail to the box. Then the connection is closed. # Test script 1.0 for Pr4Win script language # automatic mail transfer. .Mail is transferred from the box clearlist send l OE8DJK 1- waitfor PROMPT @30 :exit checklist :check if (CHECK_LIST_EMPTY) :ende readmail r %CHK_FNUM% waitfor PROMPT @300 :exit goto :check :ende clearlist .Mail Deleting mail in the box send e OE8DJK 1- waitfor PROMPT @30 :exit if (SEND_MAIL_EMPTY) :nomail .Mail is transferred to the box sendmail waitfor PROMPT @300 :exit :nomail .Connection will be closed ! send quit waitfor *** reconnected @30 :exit disconnect stop :exit .Error timeout waiting for PROMPT stop ============================================================================ * Timer controlled connects and scripts. Pr4Win 2.10 allows automatic, timer controlled events. An event could be to establish a connection with subsequent execution of a script or not, or to start a program (windows or dos programs can be executed), or to terminate Pr4win itself. Each event has a start and a end time. In this time intervals Pr4Win tries to execute this event. This makes sense for a automatic connect. Pr4Win keeps trying to connect the specified station during all that time. For every day of the week there is a timer file in the "....\pr4win\script" directory. Timer files have the file extension ".TIM" and are maintained by the timer window. Timer files are ANSI text files, where each line defines one event. Z.B. "monday.tim" ---- 12:30 12:35 OE8XPK (OE8XPR) @rdmail.scr 13:30 13:35 $c:\program.exe 14:30 14:35 $EXIT This sample timer file tries to establish a connection with OE8XPK using (OE8XPR) as level 2 digipeater beginning at 12:30 and ending at 12:35 if the connection could not be established. The syntax for defining a connect path is equal to the syntax used in Pr4Win to define the home box connect, or to define a connect path in the station database. $EXIT is a key word that causes Pr4win to terminate. Scripts executed on a successful connection are identified by a leading "@" character. Programs that should be executed have to be started with a "$" character and should be specified including the complete path. At 13:00 the program "c:\program.exe" is started. At 14:30 Pr4Win will be terminated. The next time an event is scheduled is shown in the status bar of the task window. ============================================================================ * New remote commands. //DEL filter -- Deletes all files that matches "filter" from the working directory. E.G. "//del *.txt" deletes all files with file extension ".TXT". //EXIT -- Closes the connect and terminates Pr4Win. //PSD -- Lists the path of the "Save" directory. The "save" directory is the directory where Pr4Win creates files transferred with auto 7Plus or AutoUUencode. Files captured with the "//ca File" command are also created in this directory. //RUN program -- Starts "program" If you want to start a DOS program you have to use "//RUN command.com -c dosprog.exe". //RX file Waits for receiving "file" (into the save directory) with XMODEM protocol. //SCD path -- Changes the current "save" directory to "path". //SDIR filter -- Lists all files in the "save" directory if their names matches "filter". //SDEL filter -- Deletes all files that matches "filter" from the save directory. E.G. "//del *.txt" deletes all files with file extension ".TXT". //SX file Starts sending "file" from the home directory with XMODEM protocol. ============================================================================ * extended remote commands //GET filter -- You can use wildcards with this command too. E.G. "//GET *.TXT" lets the remote station send all files matching filter from the working directory. //GB File -- You can use wildcards with this command too. E.G. "//GET *.DAT" lets the remote station send all files matching filter from the working directory. Each file is UU encoded before it is sent. A CRC16 check sum is appended to allow transfer checking. ============================================================================ * Some more ore less severer Bugs have been removed. If packets with more than 128 NULL characters are received an the monitor window was open, Pr4Win caused a GPF. ..... * Port and channel information in connect paths (station database) are now processed as the should. PORT:CHANNEL:CALL * XMODEM file transfer bugs (sending and receiving larger files) removed. * Bugs in memory allocation removed. * Improved memory management and performance. * Captureing text to an existing file will appent to this file not replace the file. * AX25 protocol some improvements increase thruput under poor conditions. * Auto 7Plus captures COR and ERR files to. With automatic 7Plus capturing, ".COR" and ".ERR" files are now captured too. To make this work you have to configure the "GO_TEXT= go_text. " and "STOP_TEXT= stop_text. " entries in the Pr4Win.ini configuration file. * Frame-Statistic window. The display of received frames is updated every second if the statistic window is open. * Changeable widths for all columns in all lists with column display. Wird der Mauszeiger auf die Trennlinie zwischen zwei Spalten in der Überschriftzeile positioniert, so wechselt der Mauszeiger. Wird jetzt die linke Maustaste gedrückt, so kann die Spaltenbreite geändert werden. Geänderte Spaltenbreiten werden gespeichert und gelten fortan. * Changeable fonts in all lists with column display. The used font can be changed using the "font" menu. Pr4Win stores the font information when the window is closed and uses this font when the window is opened again. * Writing Mails and News offline. You can write mails, news, reply to mail and reply to news in the local mail box. The configured editor is invoked automatically. For new mail the MYCALL.SIG file is loaded into the editor. For a reply the mail or news you want to reply is loaded into the editor. Each line is started by "> " the MYCALL.SIG file is appended an the end. If the text is ready for sending. an extra line with "NNNN" is appended. The MYCALL.SIG file is searched in the configuration directory. * The "//mail title" remote command now accepts a line "NNNN" as an end of mail mark. (instead of ***END) * Sending local written Mail and News to your public mail box. With the menu item "Send mail" in the connect window you can transfer all local written mail an News to the connected box. Of course you can use a timer controlled connect an a script to transfer your mail to the box. * Reading mail and news from you public mail box into your local mail box. With an new icon in the check list window you can read mail or news selected in the check list window into the local mail box. Of course you can use a timer controlled connect an a script to transfer mail or news from the box. * 3D-Display for entry fields and other controls. The CTR3D.DLL is supported for this reason. Start pr4win with /CTL3D parameter. * You can use the UP and DOWN arrow keys to step through the last ten sent line direct in the input field. Double clicking any line in the display window works too. * The Keys "del" and "ins" can be connected to Pr4Win functions in each window using the window configuration file. As a default "Ins" should activate a creation function if one exists and "del" should activate a delete function if possible. * Path to a second home box A double click on the "Home box icon" starts a connect to an alternate home box. This alternate home box connect is configures with an "MY2BBSPATH=..." entry in the Pr4Win configuration file. * UUENCODED file transfer with CRC16 checksum. At the end of each UU encoded file a CRC16 checksum is appended. The checksum is surrounded by "[]" and transmitted in four hexadecimal digits. If the checksum computed on the received lines does not equal the received checksum, no file is saved. For processing within a script, a variable %TRANSFER% is set to "OK" or "ERROR". If a UU encoded file without CRC is received, %TRANSFER% is set always set to "OK". * Batch mode support. Bit 4 in the FLAG entry of the Pr4Win.ini file controls the batch mode. Is this Bit set, all dialog boxes are automatically answered with "OK/YES" This feature should prevent Pr4Win from blocking while in unattended remote mode, Pr4Win.ini FLAGS=0101100 * Limited connects to one call. By defining a call within a "RCALL=CALLX" statement in the Pr4Win.ini file Pr4win is instructed to answer only connect requests from this station. The Call might include a SSID. "RCALL=OE8DJK-12" * Improved prompt recognition Prompts are defined for each box type in the [BOX-x] section. The syntax for description of a prompt from the boxes has been improved. Each prompt sent from a box may now consist of up to three parts. Two fixed parts and one variable part. The variable part is identified by a "*" character. E.G. PROMPT=(*)--> Defines that the prompt send by the box has to start with a "(" character, then a sequence of any characters an finally ")-->". "(SOFTWARE)-->" is a valid match. PROMPT=%MYCALL% de %YOURCALL% (*)> In this example "OE8DJK-5 de OE8XPK (PROTO/AX25)-->" is a valid Prompt. * DieBox, RMNC, Baycom and F6FBB password * If you want to send out a control character (E.G. conrol C to terminate a mail) you just have to enter "^C" into the input line and hit . * Receiving multiple COR or ERR Files with Auto7Plus now generates *.C01 *.C02 ... *.E01 *.E02 ... Files instead of overwriting the ERR or COR file over and over again. ----------------------------------------------------------------------