home *** CD-ROM | disk | FTP | other *** search
/ BUG 1 / BUGCD1996_0708.ISO / pc / comm / terminat / tlan_001.exe / rar / PRSCRIPT.HLP < prev    next >
Text File  |  1995-08-14  |  51KB  |  1,566 lines

  1.  
  2.  ^hPreScription, The Terminate Programming Language^n
  3.  
  4.   IN NO EVENT WILL STRATHRORY SYSTEMS LIMITED, SERWIZ COMM OR ASSOCIATES BE
  5.   LIABLE TO YOU FOR ADDITIONAL DAMAGES, INCLUDING ANY LOST PROFITS, LOST
  6.   SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
  7.   USE OR INABILITY TO USE PRESCRIPTION OR SCRIPTS FOR PRESCRIPTION, EVEN IF
  8.   WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  9.  
  10.   Terminate has an extended script programming language. It is not only
  11.   designed for logging onto a system and downloading a mail package, it
  12.   has been designed with a wider view in mind.
  13.  
  14.   As usual Terminate throws up the ball and gives you loads of options,
  15.   however if you want additional commands you cannot write yourself, then
  16.   just contact us and we will try to include your suggestions.
  17.  
  18.   If you have never done any programming before it might be a little
  19.   difficult to start out without prober guidance, however we have included
  20.   various simple examples which will help you get started more easily.
  21.  
  22.   If you do not know what programming means, perhaps learning this simple,
  23.   but yet powerful language can get you hook on the idea. You will not need
  24.   this language unless you have special needs that Terminate cannot solve.
  25.  
  26.   BUT please be aware when you start programming. Anything is possible.
  27.   That means that any possible error is also possible, and as Murphy's
  28.   law describes, if anything can go wrong it will go wrong. So please do
  29.   not blame us if something does goes wrong.
  30.  
  31.   ^hWhat can a script do for me ?^n
  32.  
  33.    A script can do many things. First of all it can automate some of your
  34.    daily needs. Many would use a script language for getting onto a system
  35.    and uploading and downloading mail packages or perhaps to check if there
  36.    is a new filelist and download it. There are really many more things
  37.    you can do easily.
  38.  
  39.   ^hCompiling scripts^n
  40.  
  41.    Before running a script Terminate will automatically detect if it has
  42.    been compiled and will compile it if necessary. The source code is in
  43.    files with the extension .TSL and the compiled ready to run script is
  44.    the .TSC file. It is possible to run .TSC files without having the
  45.    source code. Just access the Alt-G script menu or call Terminate with
  46.    the command line /SCRIPT:script to start a script.
  47.  
  48.    ^hInclude files^n
  49.  
  50.     The Include command enables you to put certain functions into smaller
  51.     files or libraries if you like. Just remember that the entire contents
  52.     are put into the finished compiled script.
  53.  
  54.     Include SCREEN.INC
  55.  
  56.     Will include the source code library called SCREEN.INC.
  57.  
  58.   ^hLanguage syntax^n
  59.  
  60.    You can enter all commands or system variables in both upper, lower or
  61.    mixed case. PRS will upper case everything while compiling, which means
  62.    you could both enter the command "Print" or "PRINT".
  63.    PRS will only keep the case of strings inside the " signs.
  64.    WriteStr x,1, "Hello"  would be translated to WRITESTR X,1,"Hello"
  65.  
  66.    If you make an error somewhere in your code you will be told at which
  67.    line the error occurred. However runtime errors will only be shown
  68.    at the time the error occurs. For example division by zero will
  69.    make your program abort.
  70.  
  71.   ^hComment lines^n
  72.  
  73.    Comment lines are used to make the source code more easily understood
  74.    the next time you or somebody else have to add or change something.
  75.    You could almost say the more comment lines the better, since they are
  76.    not compiled into the finished module and therefore do not take up
  77.    any memory. A comment can either be the only thing on the line or after
  78.    a command and must start with a % sign.
  79.  
  80.    Example:
  81.  
  82.      % This is a comment line only.
  83.      Set Turbo = "ON"              % Everything after here is comments.
  84.  
  85.    As a special compiler command you can use the "Comment". In this way
  86.    you can insert comments that can later be retrieved.
  87.    To insert your own copyright lines you could do:
  88.  
  89.     Comment "The Terminate PreScription demonstration script"
  90.     Comment "This script is (Freeware) 1995 by Bo Bendtsen"
  91.  
  92.    You can use 5 Comment lines each of 50 characters.
  93.  
  94.   ^hProgram structure^n
  95.  
  96.    A program consists of functions and variables. You can have as many
  97.    functions as you like and in any order you like. Making a structured
  98.    program can increase speed and make it easier to change. You do not need
  99.    to have functions or variables, you can simply use commands that are
  100.    built in. You can start immediately without any definitions or strange
  101.    syntaxes. One of the smallest scripts you can make could be one single
  102.    line like this:
  103.  
  104.       Print "Hello world"
  105.  
  106.   ^hVariables^n
  107.  
  108.    A simple programming language first of all needs variables. A variable is
  109.    like variable X and Y you perhaps learned about in school. It simply means
  110.    a given identifier can be assigned a value. With PreScription hereafter
  111.    always mentioned as "PRS" you have two kinds of variables called numbers
  112.    and strings.
  113.  
  114.    The limit on variables is 16000 but you will probably never need that
  115.    many or you will run out of memory first and it is always considered
  116.    best to use as few variables as possible.
  117.  
  118.    All variables are global variables which can be accessed from all parts
  119.    of the script. The syntax of a variable name is simple. It must begin
  120.    with a letter from A to Z and then can be followed by A-Z,0-9,_.
  121.  
  122.      Valid names:    Apple  Computer  X  X49  Cool_5_dude
  123.      Invalid names:  25XX   *Hello*   _NotMe
  124.  
  125.    ^hNumbers^n
  126.  
  127.     PRS uses something called floating point numbers. These numbers are
  128.     limited to 2.9e-39..1.7e38 which are very very large numbers, so you
  129.     should never be concerned about using too many decimals.
  130.  
  131.     Please note that all decimal number must use dot (.) and not comma (,)
  132.  
  133.     The numbers are used for storing information and for calculating,
  134.     here are a few examples that might help you understand better.
  135.  
  136.       Identifier   Value
  137.            |       |
  138.       Set Apples = 5
  139.  
  140.     The variable called Apples now has the value 5. If someone eats one of
  141.     the apples you can calculate:
  142.  
  143.       Set Apples = Apples - 1
  144.  
  145.     You now have 4 apples.
  146.  
  147.     Another example to calculate how much discount you got on your new modem
  148.  
  149.       Set NewModem = 495
  150.       Set Discount = 0.15
  151.       Set NewModem = NewModem * Discount
  152.  
  153.     The result in NewModem would now be 74.25
  154.  
  155.    ^hStrings^n
  156.  
  157.     Strings are characters after each other and could look like this:
  158.  
  159.       "This is a string"
  160.  
  161.     The " signs are to tell PRS when the string starts and stops.
  162.     A string can be up to 255 characters long and can have any value from
  163.     ASCII 0 to ASCII 255.
  164.  
  165.     Some examples:
  166.  
  167.       Set Part1 = "A Terminate "
  168.       Set Part2 = "a day keeps the doctor away"
  169.       Set Joke = Part1 + Part2
  170.  
  171.     To manipulate the strings there are many commands described later in
  172.     this document, please look at the examples and see how some of them
  173.     work.
  174.  
  175.   ^hExpressions and operators^n
  176.  
  177.    An expression is made out of operators and constants or variables.
  178.  
  179.    An expression could look like this:
  180.  
  181.         80186 + (301 - 1)
  182.         Carrier = "ON"
  183.         28800 / 2400 * 12
  184.         X = 500 < Y
  185.  
  186.    The operators PRS understands:
  187.  
  188.         +     Addition              <     Less than
  189.         -     Subtraction           >     Greater than
  190.         *     Multiplication        =     Equal to
  191.         /     Division              <>    Not equal to
  192.         \     Mod (remainder)       <=    Less than or equal to
  193.         ^     Power                 >=    Greater than or equal to
  194.         &     And
  195.         |     Or
  196.         !     Not
  197.  
  198.    The various operators have different priorities in order to determine
  199.    which ones to process first.
  200.  
  201.     Unary operators            !
  202.     Multiplying operators      * \ / & ^
  203.     Adding operators           + - |
  204.     Relational operators       = <> < > <= >=
  205.  
  206.    If you want different priorities just use the parentheses ()
  207.  
  208.      20 - 2  * 5 = 10    *  is higher than -
  209.     (20 - 2) * 5 = 90    () is higher than any operator.
  210.  
  211.   ^hUser defined functions^n
  212.  
  213.    Creating your own functions is useful when you do the same thing over
  214.    and over again or simply want a more structured program.
  215.  
  216.    A function is completely user defined and can contain either built-in
  217.    commands or calls to other functions you have made.
  218.  
  219.     Function CountTo100()
  220.       Set X=1
  221.       Repeat
  222.         GotoXY 1,1
  223.         Write x
  224.         Set X=X+1
  225.       Until X>100
  226.     EndFunc
  227.  
  228.    This simple function does nothing other than count to 100 on the top left
  229.    corner of your screen. You call the function by entering
  230.  
  231.     CountTo100()
  232.  
  233.    To send variables to a function you need to include the variable name
  234.    in the parentheses () like this:
  235.  
  236.     Function CountMore(HowMany)
  237.       Set X=1
  238.       Repeat
  239.         GotoXY 1,1
  240.         Write x
  241.         Set X=X+1
  242.       Until X>HowMany
  243.     EndFunc
  244.  
  245.    Now you can count to as many as you like. Enter:
  246.  
  247.     CountMore(50)
  248.  
  249.    And the function will count to 50.
  250.  
  251.    The harder part with understanding functions is to see how it can
  252.    be used to return results. Here is an easy example.
  253.  
  254.     Function HappyHour(Drinks)
  255.       Set ExtraDrinks = Drinks * 2
  256.     EndFunc ExtraDrinks
  257.  
  258.    To call the function you need to display or store the return value.
  259.    To display you could:
  260.  
  261.     PrintLn "Normal hours I get ",5," drinks"
  262.     PrintLn "When it is happy hour I get ",HappyHour(5)," drinks"
  263.  
  264.    If you want to store the result in another variable use the following:
  265.  
  266.     Set DrinkResult = HappyHour(5)
  267.  
  268.    A function can also return a value directly. Whatever is on the
  269.    EndFunc line will be returned as the result.
  270.  
  271.    Function names follow the same rules as variable names and must at
  272.    least end with () if no parameter is used.
  273.  
  274.    IMPORTANT: A function must be defined before it is called.
  275.  
  276.   ^hStatements^n
  277.  
  278.    PRS supports many basic statements which will be explained below.
  279.  
  280.    ^hIf Else Endif^n
  281.  
  282.     The If statement is used for evaluating an expression. You can use
  283.     it for testing if certain variables have a certain value like this:
  284.  
  285.      Set Apples = 6
  286.      If Apples > 5
  287.        Print "Plenty left"
  288.      Endif
  289.  
  290.     Since Apples is 6 you will see Plenty left printed on the screen. If
  291.     you set Apples = 5 or less then everything will be skipped until the
  292.     Endif.
  293.  
  294.     An If statement must always end with an Endif command, which tells PRS
  295.     that the statement stops here.
  296.  
  297.     The Else statement means what it says. If the If statement is false the
  298.     Else statement will be used.
  299.  
  300.      Set Apples = 4
  301.      If Apples > 5
  302.        Print "Plenty left"
  303.      Else
  304.        Print "Please buy more"
  305.      Endif
  306.  
  307.     Now Apples is 4 which makes the If statement false and you will see
  308.     Please buy more on your screen.
  309.  
  310.    ^hGoto Labels^n
  311.  
  312.     The Goto command is used to jump to other locations in your script.
  313.     You will need to define a label which uses the following format
  314.  
  315.      :LabelName
  316.  
  317.     The label follow the same rules as variable names and must start with
  318.     a colon :
  319.  
  320.     Some examples:
  321.  
  322.      :Start
  323.      :End
  324.  
  325.     The Goto command syntax: Goto LabelName
  326.  
  327.      :Start
  328.      PrintLn "Start"
  329.      Goto JumpJump
  330.      PrintLn "NeverMe"
  331.  
  332.      :JumpJump
  333.      PrintLn "Finished"
  334.  
  335.     PrintLn "NeverMe" will then be skipped.
  336.     Goto command should be avoided as much as possible since it creates
  337.     unstructured programs. Only use for simple small programs.
  338.  
  339.    ^hGosub Labels Return^n
  340.  
  341.     Gosub commands are almost the same as Functions except that you
  342.     cannot send any variables or get any results back. It simply carries
  343.     out a single task and returns to the previous location. If,for
  344.     example, you have a menu you want to display from several places in
  345.     your script using the Gosub command could save you having the same
  346.     menu twice. However it is recommended to use functions which are
  347.     more flexible. The Return command tells PRS to return to the next
  348.     line following the Gosub.
  349.  
  350.      Goto Main
  351.  
  352.      :Menu
  353.      PrintLn "Start"
  354.      Return
  355.  
  356.      PrintLn "NeverMe"
  357.  
  358.      :Main
  359.      Gosub Menu
  360.  
  361.   ^hLoops^n
  362.  
  363.    Loop statements are using for repeating the same commands a variable
  364.    number of times, until something is true or something is false.
  365.  
  366.    ^hFor Next^n
  367.  
  368.     For is used for performing the same commands a defined number of times.
  369.     For has 4 parameters that have to be given.
  370.  
  371.      For Variable,Start,End,Increase
  372.  
  373.     The variable is a normal variable.
  374.     Start is the starting value.
  375.     End is the ending value
  376.     Increase is the value to be increased after every Next command.
  377.     When Counter is equal to the ending value the script will proceed.
  378.  
  379.      For Counter,1,10,1
  380.        PrintLn Counter
  381.      Next
  382.  
  383.     Will display the numbers 1 - 10
  384.  
  385.      For Counter,10,1,-1
  386.        PrintLn Counter
  387.      Next
  388.  
  389.     Will display the numbers 10 - 1
  390.  
  391.    ^hWhile EndWhile^n
  392.  
  393.     This loop continues until the statement is false. In other words
  394.     while the statement is true all commands until the EndWhile will
  395.     be executed.
  396.  
  397.      Set Counter = 10
  398.      While Counter <= 20
  399.        PrintLn Counter
  400.        Set Counter = Counter + 1
  401.      EndWhile
  402.  
  403.     This will print out the numbers 10-20
  404.  
  405.    ^hRepeat Until^n
  406.  
  407.     Repeat is much like While except that Repeat continues until the
  408.     statement is false.
  409.  
  410.      Set Counter = 20
  411.      Repeat
  412.        PrintLn Counter
  413.        Set Counter = Counter - 1
  414.      Until Counter < 10
  415.  
  416.     This will also print out the numbers 20-10
  417.  
  418.   ^hBuilt-in commands and functions^n
  419.  
  420.    In addition to your own variables you can use and change certain
  421.    pre-defined variables. A system function can, for example, tell you
  422.    how much memory you have left (FREEMEM). A system variable could be
  423.    ATTR which holds the current color attribute and which you can change
  424.    as you like. A command is just like a system function except that it
  425.    does not return anything.
  426.  
  427.    In the following section of the manual you will find 3 things:
  428.  
  429.     System commands   = Executes a command only, no value returned  (Command)
  430.     System functions  = Executes command and returns value          (Function)
  431.     System variables  = Like a normal variable which can be changed (Variable)
  432.  
  433.    Please note that all system variables are changed for the entire Terminate,
  434.    so be careful and if you change something, remember to set it back to the
  435.    original value afterwards. Please note the () which will be mentioned
  436.    for each description.
  437.  
  438.  
  439.    ^hScreen, sound handling^n
  440.  
  441.     ^hAttr^n               (Variable)
  442.  
  443.      Purpose: Current screen color attribute byte. Use the T-COLOR.EXE or the
  444.               color selector inside Terminate to find the colors you need.
  445.      Returns: 0-255
  446.      Example: Set Attr = 14       Set screen attribute to yellow
  447.               Set Color = Attr    Save the current attribute in variable
  448.  
  449.     ^hAttrBlock^n          (Command)
  450.  
  451.      Purpose: Fills an area on the screen with a certain attribute
  452.      Syntax : AttrBlock x1,y1,x2,y2,attribute
  453.      Example: AttrBlock 1,2,70,20,10
  454.               Fill area (1,2)-(70,20) with color attribute light green
  455.  
  456.     ^hBox^n                (Command)
  457.  
  458.      Purpose: Make a textbox on the screen using boxtypes and attributes
  459.      Syntax : Box x1,y1,x2,y2,attribute,boxtype
  460.               boxtype: 0=Blank, 1=Single, 2=Double, 3=Double top+single side,
  461.               4=Double side+single top, 5=* and -|, 6=Single top only,
  462.               7=Double top only
  463.      Example: Box 1,1,80,25,23,1
  464.               Draw a box on the screen using single boxes and gray on blue.
  465.      Notes  : Attribute is same format as the Attr variable
  466.  
  467.     ^hCharBlock^n          (Command)
  468.  
  469.      Purpose: Draws a block of the same character using default attribute
  470.      Syntax : CharBlock x1,y1,x2,y2,character
  471.      Example: CharBlock 1,1,80,25,"*"
  472.               Fills the entire screen with the * character
  473.  
  474.     ^hClearScreen^n        (Command)
  475.  
  476.      Purpose: Clears the entire screen, using the current attribute
  477.      Syntax : ClearScreen
  478.  
  479.     ^hCursor^n             (Command)
  480.  
  481.      Purpose: Cursor control
  482.      Syntax : Cursor cursortype
  483.               cursortype: 0 = Off, 1 = On, 2 = Max
  484.      Example: Cursor 0 Turns cursor off
  485.  
  486.     ^hFillBlock^n          (Command)
  487.  
  488.      Purpose: Fill an area on the screen, with an attribute and a character
  489.      Syntax : FillBlock x1,y1,x2,y2,attribute,character
  490.      Example: FillBlock 2,2,79,24,3,"#"
  491.               Fills the area (2,2)-(79,24) with # in the cyan color
  492.  
  493.     ^hGetAttrXY^n          (Function)
  494.  
  495.      Purpose: Returns attribute byte from screen on location x,y
  496.      Syntax : GetAttrXY(x,y)
  497.      Example: Set SaveColor = GetAttrXY 79,5
  498.               Sets SaveColor to the color of 79,5 on the screen
  499.  
  500.     ^hGetCharXY^n          (Function)
  501.  
  502.      Purpose: Returns the character from screen on location x,y
  503.      Syntax : GetCharXY(x,y)
  504.      Example: Set SaveChar = GetCharXY 1,1
  505.               Sets SaveChar to the character of position 1,1 on the screen
  506.  
  507.     ^hGotoXY^n             (Command)
  508.  
  509.      Purpose: Move cursor to location x,y
  510.      Syntax : GotoXY x,y
  511.      Example: GotoXY 40,12
  512.               Goto the middle of the screen
  513.  
  514.     ^hInWindow^n           (Variable)
  515.  
  516.      Purpose: Use Window offset for certain screen commands
  517.      Returns: 0 or 1
  518.      Example: Set InWindow=0
  519.               Current window offset not used
  520.               Set InWindow=1
  521.               Current window offset used
  522.               Does not work for Print, PrintLn, GotoXY
  523.  
  524.     ^hMouse^n              (Command)
  525.  
  526.      Purpose: Turn on/off the mouse
  527.      Syntax : Mouse action
  528.               action: 0=Off, 1=On
  529.      Example: Mouse 1
  530.               Turns on mouse
  531.  
  532.     ^hMouseDetected^n      (Functions)
  533.  
  534.      Purpose: Report if a mouse driver was detected
  535.      Syntax : MouseDetected
  536.      Returns: 0=No, 1=Yes
  537.      Example: If MouseDetected=1
  538.  
  539.  
  540.     ^hMouseGotoXY^n        (Command)
  541.  
  542.      Purpose: Sets mouse to X,Y on the screen
  543.      Syntax : MouseGotoXY x,y
  544.      Example: MouseGotoXY 1,1
  545.               Move mouse to top left corner
  546.  
  547.     ^hMouseLeft^n          (Functions)
  548.  
  549.      Purpose: Report if the left button was pressed
  550.      Syntax : MouseLeft
  551.      Returns: 0=No, 1=Yes
  552.      Example: If MouseLeft=1
  553.  
  554.     ^hMouseRight^n         (Functions)
  555.  
  556.      Purpose: Report if the right button was pressed
  557.      Syntax : MouseRight
  558.      Returns: 0=No, 1=Yes
  559.      Example: If MouseRight=1
  560.  
  561.     ^hMouseWindow^n        (Command)
  562.  
  563.      Purpose: Sets coordinates where mouse is visible
  564.      Syntax : MouseWindow x1,y1,x2,y2
  565.      Example: MouseWindow 5,10,15,70
  566.               Force mouse to be inside (5,10)-(15,70)
  567.  
  568.     ^hMouseX^n             (Functions)
  569.  
  570.      Purpose: Report the X position of the mouse
  571.      Returns: MouseX
  572.      Example: If MouseX<10
  573.  
  574.     ^hMouseY^n             (Functions)
  575.  
  576.      Purpose: Report the Y position of the mouse
  577.      Syntax : MouseY
  578.      Example: If MouseY>=25
  579.  
  580.     ^hNoSound^n            (Command)
  581.  
  582.      Purpose: Turn off sound soundcard or internal speaker
  583.      Syntax : NoSound
  584.  
  585.     ^hPrint^n              (Command)
  586.  
  587.      Purpose: Display a string on the screen at current cursor position
  588.      Syntax : Print expression
  589.      Example: Print "Hello world"
  590.               Displays hello on the screen
  591.               Print 25*10
  592.               Calculates result 250 and displays on screen
  593.  
  594.     ^hPrintLn^n            (Command)
  595.  
  596.      Purpose: Display a string on the screen and press enter
  597.      Syntax : PrintLn expression
  598.      Example: Same command as Print except that CR+LF is added to string
  599.  
  600.     ^hRemoveWindow^n       (Command)
  601.  
  602.      Purpose: Remove a window that was set by the Window command
  603.      Syntax : RemoveWindow
  604.               Removes top window from screen
  605.  
  606.     ^hScrCol^n             (Variable)
  607.  
  608.      Purpose: Holds the number of columns on the screen (80)
  609.      Returns: 40-132
  610.      Example: Print ScrCol
  611.               Displays the current number of columns on screen
  612.  
  613.     ^hScrLen^n             (Variable)
  614.  
  615.      Purpose: Holds the number of lines on the screen (25)
  616.      Returns: 25-60
  617.      Example: Print ScrLen
  618.               Displays the current number of lines on screen
  619.  
  620.     ^hScroll^n             (Command)
  621.  
  622.      Purpose: Scroll a region of the screen
  623.      Syntax : Scroll direction,x1,y1,x2,y2,positions,attribute
  624.               direction: 0=Clear, 1=uP, 2=DOWN, 3=LEFT, 4=RIGHT  a=attribute }
  625.               positions are number of columns or lines to scroll
  626.               attribute is the attribute to use in the cleared area
  627.      Example: Scroll 4,1,1,30,5,2,7
  628.               Scroll (1,1)-(30,5) to columns to the right, clear with gray
  629.  
  630.     ^hSelectBar^n          (Function)
  631.  
  632.      Purpose: The menubar selector option used in most menus in Terminate
  633.      Syntax : Selectbar(y,ylen,start,barx1,barx2,bartxty)
  634.      Returns: 0-25
  635.      Example: Set x=SelectBar(1,3,x,113,1,20,0)
  636.               Menubar starts at in the top corner of the active window or
  637.               screen and is 3 lines long, starting on menuline x. Menubar
  638.               is color 113 and is visible from columns 1-20. No bartext is
  639.               available. Returns selection in x. 0=Esc pressed.
  640.      Notes  : SetBarTxt can be used to define helplines, set bartxty to
  641.               the line where you want it, ScrLen is normal, 0=disable
  642.  
  643.     ^hSetAttr^n            (Command)
  644.  
  645.      Purpose: Sets the current color attribute
  646.      Syntax : SetAttr attribute
  647.      Example: SetAttr 9
  648.               Set color to light blue
  649.  
  650.     ^hSetBarTxt^n          (Command)
  651.  
  652.      Purpose: Sets helplines for SelectBar
  653.      Syntax : SetBarTxt num,string
  654.      Example: SetBarTxt 1,"This is helpline 1"
  655.               When selectbar is in menu-position 1 this can be displayed
  656.  
  657.     ^hSound^n              (Command)
  658.  
  659.      Purpose: Sound a tune using the sound card or internal speaker
  660.      Syntax : Sound frequency
  661.      Example: Sound 440
  662.               Set the sound to the concert pitch
  663.  
  664.     ^hWhereX^n             (Function)
  665.  
  666.      Purpose: To return the current X position of the cursor
  667.      Returns: 1-132
  668.      Example: Print WhereX
  669.               Displays the current X position of the cursor
  670.  
  671.     ^hWhereY^n             (Function)
  672.  
  673.      Purpose: To return the current Y position of the cursor
  674.      Returns: 1-60
  675.      Example: Print WhereX
  676.               Displays the current Y position of the cursor
  677.  
  678.     ^hWindow^n             (Command)
  679.  
  680.      Purpose: Set a window and make it the current window for all functions
  681.      Syntax : Window x1,y1,x2,y2,boxtype,shadow,frameattr,txtattr,
  682.                      topattr,headertxt
  683.               boxtype: Same as the box-command
  684.               shadow : 0=no-shadow, 1=shadowtype 1, 2=shadowtype 2
  685.      Example: Window 10,1,70,10,1,1,30,23,27," Test window "
  686.               Sets window at (10,1)-(70,10) using single boxes and shadowtype
  687.               1, blue background and various foreground and header as above.
  688.  
  689.     ^hWriteAStr^n          (Command)
  690.  
  691.      Purpose: Display a string at position x,y and change default color
  692.      Syntax : WriteAStr x,y,attribute,expression
  693.      Example: WriteAStr 1,1,11,"I am light cyan"
  694.               Displays the string at 1,1 in light cyan color
  695.  
  696.     ^hWriteAttr^n          (Command)
  697.  
  698.      Purpose: Write a single attribute at position x,y
  699.      Syntax : WriteAttr x,y,attribute
  700.      Example: WriteAttr 1,1,14
  701.               Change attribute at 1,1 to yellow
  702.  
  703.     ^hWriteChar^n          (Command)
  704.  
  705.      Purpose: Write a single character at x,y
  706.      Syntax : WriteChar x,y,character
  707.      Example: WriteChar 1,1,"X"
  708.               Displays X in position 1,1
  709.  
  710.     ^hWriteColorStr^n      (Command)
  711.  
  712.      Purpose: Display a string with several colors
  713.      Syntax : WriteColorStr x,y,expression
  714.      Example: WriteColorStr 1,1,"^014 Yellow ^007 Gray"
  715.               The ^014 means change to color 14 at this position. It is
  716.               the same values as the normal attribute color.
  717.  
  718.     ^hWriteStr^n           (Command)
  719.  
  720.      Purpose: Display a string at position x,y
  721.      Syntax : WriteStr x,y,expression
  722.      Example: WriteStr 1,1,"I am light cyan"
  723.               Writes the string at 1,1
  724.  
  725.    ^hKeyboard control^n
  726.  
  727.     ^hAltPressed^n         (Function)
  728.  
  729.      Purpose: Checks if a Alternate is pressed on the keyboard
  730.      Returns: 0=No, 1=Yes, Alt is being pressed
  731.      Example: If AltPressed=1
  732.  
  733.     ^hCtrlPressed^n        (Function)
  734.  
  735.      Purpose: Checks if a Control is pressed on the keyboard
  736.      Returns: 0=No, 1=Yes, Ctrl is being pressed
  737.      Example: If CtrlPressed=1
  738.  
  739.     ^hGetkey^n             (Function)
  740.  
  741.      Purpose: Retrieves a key from the keyboard, wait if no key is ready
  742.      Returns: 0-65535, value of key
  743.      Example: PrintLn(GetKey)
  744.               Display the value of the key pressed
  745.  
  746.     ^hInput^n              (Function)
  747.  
  748.      Purpose: Input a string on screen
  749.      Syntax : Input(x,y,length,textattribute,editattribute,string)
  750.      Returns: String
  751.      Example: Set Result=Input(1,1,40,11,3,"Input string")
  752.               Inputs a string at position 1,1 with the length of 40
  753.               characters on the colors cyan and light cyan.
  754.  
  755.     ^hKey^n                (Variable)
  756.  
  757.      Purpose: Hold the last keyboard code
  758.      Returns: 0-65535
  759.      Example: While Key<>13
  760.               While Escape is not pressed run the loop
  761.  
  762.     ^hKeyPressed^n         (Function)
  763.  
  764.      Purpose: Checks if a key has been pressed on the keyboard
  765.      Returns: 0=No key ready, 1=key ready to be read by Getkey
  766.      Example: While KeyPressed=0
  767.               While no key is pressed run the loop
  768.  
  769.     ^hShiftPressed^n       (Function)
  770.  
  771.      Purpose: Checks if a Shift is pressed on the keyboard
  772.      Returns: 0=No, 1=Yes, Shift is being pressed
  773.      Example: If ShiftPressed=1
  774.  
  775.     ^hWaitEnter^n          (Command)
  776.  
  777.      Purpose: Wait until someone presses the ENTER key
  778.      Syntax : WaitEnter
  779.  
  780.    ^hVariable manipulation^n
  781.  
  782.     ^hBlankAfter^n         (Function)
  783.  
  784.      Purpose: Add spaces after a string until a specified length is obtained
  785.      Example: BlankAfter(string,length)
  786.      Returns: String
  787.      Example: Print BlankAfter("Test",7)
  788.               Displays "Test   " on the screen
  789.  
  790.     ^hBlankBefore^n        (Function)
  791.  
  792.      Purpose: Add spaces before a string until a specified length is obtained
  793.      Example: BlankBefore(string,length)
  794.      Returns: String
  795.      Example: Print BlankBefore("Test",7)
  796.               Displays "   Test" on the screen
  797.  
  798.     ^hChr^n                (Function)
  799.  
  800.      Purpose: Converts a number to the ASCII value
  801.      Syntax : Chr(number)
  802.      Returns: Character #0-#255
  803.      Example: Set Val=Chr(200)
  804.  
  805.     ^hCopy^n               (Function)
  806.  
  807.      Purpose: Copy out part of a string
  808.      Example: Copy(string,start,characters)
  809.      Returns: String
  810.      Example: Print Copy("Test",1,2)
  811.               Displays "Te" on the screen
  812.  
  813.     ^hDelete^n             (Function)
  814.  
  815.      Purpose: Delete part of string
  816.      Syntax : Delete(string,index,characters)
  817.      Returns: String
  818.      Example: Print Delete("Hello",4,2)
  819.               Displays "Hel" on screen
  820.  
  821.     ^hGrabword^n           (Function)
  822.  
  823.      Purpose: Return a single word in a string
  824.      Syntax : GrabWord(expression,word-number)
  825.      Returns: String
  826.      Example: Print GrabWord("Hello World",2)
  827.               Displays "World" on screen
  828.  
  829.     ^hInteger^n            (Function)
  830.  
  831.      Purpose: Cut off all decimals and returner integer
  832.      Syntax : Integer(number)
  833.      Returns: Integer
  834.      Example: Print Integer(1.50)
  835.               Prints the number 1
  836.  
  837.     ^hLength^n             (Function)
  838.  
  839.      Purpose: Return the length of a string
  840.      Syntax : Length(string)
  841.      Returns: 0-255
  842.      Example: Print length("test")
  843.               Displays the number 4 on screen
  844.  
  845.     ^hNumchars^n           (Function)
  846.  
  847.      Purpose: Return a string with a number of the same characters
  848.      Syntax : Numchar(character,numbers)
  849.      Returns: String
  850.      Example: Print Numchar("-",5)
  851.               Displays "-----" on screen
  852.  
  853.     ^hOrd^n                (Function)
  854.  
  855.      Purpose: Converts an ASCII value to ordinary value
  856.      Syntax : Ord(number)
  857.      Returns: Character #0-#255
  858.      Example: Set Val=Ord("A")
  859.  
  860.     ^hParameter^n          (Function)
  861.  
  862.      Purpose: Return command line parameter when calling script
  863.      Syntax : Parameter(number)
  864.      Returns: String
  865.      Example: Set ComPort=Parameter(1)
  866.  
  867.     ^hPos^n                (Function)
  868.  
  869.      Purpose: Search for sub-string in string
  870.      Syntax : Pos(sub-string,string)
  871.      Returns: 0=Not found, 1=255 position found
  872.      Example: Print Pos("World","Hello World")
  873.               Displays the number 6 on screen
  874.  
  875.     ^hRound^n              (Function)
  876.  
  877.      Purpose: Round an real number
  878.      Syntax : Round(number)
  879.      Returns: Integer
  880.      Example: Print Round(1.49)   Prints the number 1
  881.               Print Round(1.50)   Prints the number 2
  882.  
  883.     ^hSet^n                (Command)
  884.  
  885.      Purpose: Assign a value to a variable
  886.      Syntax : Set variable name = value
  887.      Example: Set Result = 20*10
  888.               Set Apples = "Good tasting"
  889.  
  890.     ^hStLocase^n           (Function)
  891.  
  892.      Purpose: Lowercase a string
  893.      Syntax : StLocase(string)
  894.      Returns: String
  895.      Example: Print LoUpcase("HELLO")
  896.               Displays hello on screen
  897.  
  898.     ^hStUpcase^n           (Function)
  899.  
  900.      Purpose: Uppercase a string
  901.      Syntax : StUpcase(string)
  902.      Returns: String
  903.      Example: Print StUpcase("hello")
  904.               Displays HELLO on screen
  905.  
  906.    ^hStacks and queues^n
  907.  
  908.     A stack is a First-In-Last-Out buffer, which can be used for saving
  909.     variables or values that need to be used later.
  910.  
  911.     A queue is a First-In-First-Out buffer (FIFO) which can be used for
  912.     buffering variables.
  913.  
  914.     ^hQueueLook^n          (Command)
  915.  
  916.      Purpose: Retrieves the latest variable from the queue without popping
  917.      Syntax : QueueLook variable
  918.      Example: QueueLook Count
  919.               Count is set to latest value pushed on queue without popping
  920.  
  921.     ^hQueuePop^n           (Command)
  922.  
  923.      Purpose: Retrieve the latest variable pushed on the user-queue
  924.      Syntax : QueuePop variable
  925.      Example: QueuePop Count
  926.               Takes the latest pushed value from queue and puts into Count
  927.  
  928.     ^hQueuePush^n          (Command)
  929.  
  930.      Purpose: Pushes a variable on the user-queue to be retrieved later
  931.      Syntax : QueuePush variable
  932.      Example: QueuePush Count
  933.               Push Count on the user-queue
  934.  
  935.     ^hStackLook^n          (Command)
  936.  
  937.      Purpose: Retrieves the latest variable from the stack without popping
  938.      Syntax : StackLook variable
  939.      Example: StackLook Count
  940.               Count is set to latest value pushed on stack without popping
  941.  
  942.     ^hStackPop^n           (Command)
  943.  
  944.      Purpose: Retrieve the latest variable pushed on the user-stack
  945.      Syntax : StackPop variable
  946.      Example: StackPop Count
  947.               Takes the latest pushed value from stack and puts into Count
  948.  
  949.     ^hStackPush^n          (Command)
  950.  
  951.      Purpose: Pushes a variable on the user-stack to be retrieved later
  952.      Syntax : StackPush variable
  953.      Example: StackPush Count
  954.               Push Count on the user-stack
  955.  
  956.    ^hSerial interface handling^n
  957.  
  958.     All commands will return a resultcode in DeviceResult, if 0 the command
  959.     was executed succesfully.
  960.  
  961.     ^hCarrier^n            (Function)
  962.  
  963.      Purpose: Check if the carrier is high
  964.      Returns: 0=Carrier low, 1=Carrier high
  965.      Example: While Carrier=1
  966.               While carrier detect is high run the loop
  967.  
  968.     ^hCharsWaiting^n       (Function)
  969.  
  970.      Purpose: Get number of chars waiting in input buffer
  971.      Returns: 0-65535
  972.      Example: Print "Waiting characters ",CharsWaiting
  973.  
  974.     ^hCloseCom^n           (Command)
  975.  
  976.      Purpose: Close the current device
  977.      Syntax : CloseCom
  978.  
  979.     ^hClrLastIncoming^n    (Command)
  980.  
  981.      Purpose: Clear LastIncoming to 255 #0
  982.      Syntax : ClrLastIncoming
  983.  
  984.     ^hDeviceResult^n       (Variable)
  985.  
  986.      Purpose: The last result code from the device, 0=Ok
  987.      Returns: 0-65535
  988.      Example: Print "Device result ",DeviceResult
  989.  
  990.     ^hDeviceResultStr^n    (Function)
  991.  
  992.      Purpose: Return error text of the last result code from the device, 0=Ok
  993.      Syntax : DeviceResultStr(Resultcode)
  994.      Returns: String
  995.      Example: Print "Device result ",DeviceResultStr(DeviceResult)
  996.  
  997.     ^hFlushInBuf^n         (Command)
  998.  
  999.      Purpose: Flush the incoming device buffer
  1000.      Syntax : FlushInBuffer
  1001.  
  1002.     ^hGetBaud^n            (Function)
  1003.  
  1004.      Purpose: Get the current baud rate
  1005.      Returns: 0-115200
  1006.      Example: Print "Current baud ",GetBaud
  1007.  
  1008.     ^hGetChar^n            (Function)
  1009.  
  1010.      Purpose: Get a character from the device
  1011.      Returns: #0..#255
  1012.      Example: Print GetChar
  1013.  
  1014.     ^hGetCharTimeout^n     (Function)
  1015.  
  1016.      Purpose: Get a character from the device, timeout in tics
  1017.      Syntax : GetCharTimeout(number-of-tics)
  1018.      Example: Set Received=GetCharTimeout(91)
  1019.               Try to get a character from the device timeout in 5 seconds
  1020.      Notes  : A PC has 18.2 tics per second 5x18.2 = 91 tics = 5 seconds
  1021.  
  1022.     ^hGetData^n            (Function)
  1023.  
  1024.      Purpose: Get the current databits
  1025.      Returns: 7-8
  1026.      Example: Print "Current databits ",GetData
  1027.  
  1028.     ^hGetInterface^n       (Function)
  1029.  
  1030.      Purpose: Get the serial interface type in use
  1031.      Returns: 0=NoDevice, 1=UartDevice, 2=Int 14h, 3=Fossil, 4=Digiboard
  1032.      Example: Print "Active serial interface type ",GetInterface
  1033.  
  1034.     ^hGetParity^n          (Function)
  1035.  
  1036.      Purpose: Get the current parity in use
  1037.      Returns: N=None, O=Odd, E=Even, M=Mark, S=Space
  1038.      Example: Print "Current parity in use ",GetParity
  1039.  
  1040.     ^hGetPort^n            (Function)
  1041.  
  1042.      Purpose: Get the active port number
  1043.      Returns: 1-8
  1044.      Example: Print "Active port ",GetPort
  1045.  
  1046.     ^hGetStop^n            (Function)
  1047.  
  1048.      Purpose: Get the current stopbits
  1049.      Returns: 1-2
  1050.      Example: Print "Current stopbits ",GetStop
  1051.  
  1052.     ^hHangup^n             (Command)
  1053.  
  1054.      Purpose: Drop the carrier, using the hangup string or toggling DTR
  1055.      Syntax : Hangup
  1056.  
  1057.     ^hInitDevice^n         (Command)
  1058.  
  1059.      Purpose: Open one of the devices in Terminate
  1060.      Syntax : InitDevice devicenumber,port,baud
  1061.      Example: InitDevice 4,2,57600
  1062.               Open device 4, using port 2 with baud 57600
  1063.      Notes  : If another device is already open it will be closed.
  1064.  
  1065.     ^hInitDirect^n         (Command)
  1066.  
  1067.      Purpose: Open a device and initialise the communications port directly
  1068.      Syntax : InitDirect interface,port,baud,databits,stopbits,parity,
  1069.                          inbufsize,outbufsize,flowctrl
  1070.               Interface : 0=NoDevice, 1=UartDevice, 2=Int 14h,
  1071.                           3=Fossil, 4=Digiboard
  1072.               Port      : 1-8
  1073.               Databits  : 7-8
  1074.               Stopbits  : 1-2
  1075.               Parity    : N=None, O=Odd, E=Even, M=Mark, S=Space
  1076.               Inbufsize : 10-65000
  1077.               Outbufsize: 10-65000
  1078.               Flowctrl  : 0=None, 1=RTS/CTS, 2=XonXoff, 3=DSR/DTR
  1079.      Example: InitDirect 1,2,38400,8,1,"N",1024,1024,1
  1080.               Use Uart on COM2 with 38400,8N1 and 1024 bytes buffers
  1081.               for in/out. RTS/CTS flowcontrol
  1082.      Notes  : If another device is already open it will be closed.
  1083.  
  1084.     ^hLastIncoming^n       (Variable)
  1085.  
  1086.      Purpose: Holds the last 255 characters received by GetChar
  1087.      Returns: String
  1088.      Example: Print LastIncoming
  1089.  
  1090.     ^hSend^n               (Command)
  1091.  
  1092.      Purpose: Send a string to the device with modem delay.
  1093.      Syntax : Send expression
  1094.      Example: Send "ATA^M"
  1095.               Send the HAYES answering command to device
  1096.  
  1097.     ^hSendRaw^n            (Command)
  1098.  
  1099.      Purpose: Send a string to the device in raw format
  1100.      Syntax : SendRaw expression
  1101.      Example: Sendraw "----------------"
  1102.  
  1103.    ^hFile handling^n
  1104.  
  1105.     All file commands will give the result code in IOResult.
  1106.  
  1107.     ^hIOResult^n           (Variable)
  1108.  
  1109.      Purpose: Result of the last file operation
  1110.      Returns: 0-65535, 0=Ok
  1111.      Example: Print IOResult
  1112.  
  1113.     PRS supports two kind of files. Binary files and text files. Binary
  1114.     files are data files like TERMINAT.EXE which contain characters from
  1115.     #0..#255. Text files like AUTOEXEC.BAT are line based and easier to
  1116.     use.
  1117.  
  1118.       PRS allows you to have 8 open files at the same time. 4 binary files
  1119.       and 4 text files.
  1120.  
  1121.     ^hText files^n
  1122.  
  1123.      Textfiles are easier to understand when you see the following example:
  1124.  
  1125.       OpenText 1,"C:\AUTOEXEC.BAT",0
  1126.       While EndofTextFile(1)=0
  1127.         PrintLn readtext(1)
  1128.       EndWhile
  1129.       CloseText 1
  1130.  
  1131.      This will open a text file and print the entire file on your screen.
  1132.  
  1133.      ^hCloseText^n         (Command)
  1134.  
  1135.       Purpose: Close a text file
  1136.       Syntax : CloseText handle
  1137.       Example: CloseText 1
  1138.  
  1139.      ^hEndOfTextFile^n     (Function)
  1140.  
  1141.       Purpose: Tells you if we are on the last line in the file
  1142.       Syntax : EndofTextFile(handle)
  1143.       Returns: 0=No, 1=Yes, end-of-file
  1144.       Example: While EndofTextFile(1)=0
  1145.                Continue until end-of-file
  1146.  
  1147.      ^hOpenText^n          (Command)
  1148.  
  1149.       Purpose: Opens a text file for reading, writing or appending.
  1150.       Syntax : OpenText handle,filename,mode
  1151.                handle  : 1-4
  1152.                filename: Full pathname of file
  1153.                mode    : 0=Read, 1=Write, 2=Append
  1154.       Example: OpenText 1,"C:\AUTOEXEC.BAT",0
  1155.                Opens text file 1 for reading.
  1156.  
  1157.      ^hPosText^n           (Function)
  1158.  
  1159.       Purpose: Report the byte position in a text file.
  1160.       Syntax : PosText(handle)
  1161.       Example: Print "Position ",PosText(1)
  1162.                Show the byte-position on text file 1
  1163.  
  1164.      ^hReadText^n          (Function)
  1165.  
  1166.       Purpose: Read 1 line from a text file
  1167.       Syntax : ReadText(handle)
  1168.       Returns: String
  1169.       Example: PrintLn ReadText(1)
  1170.                Reads and displays one line from text file 1
  1171.  
  1172.      ^hSeekText^n          (Command)
  1173.  
  1174.       Purpose: Seek to a file position in a text file.
  1175.       Syntax : SeekText handle,position
  1176.                Position is the byte-position in file 0=First byte
  1177.       Example: SeekText 1,1000
  1178.                Seeks to position 1000 in the file
  1179.  
  1180.      ^hSizeText^n          (Function)
  1181.  
  1182.       Purpose: Report the size in bytes on a text file
  1183.       Syntax : SizeText(handle)
  1184.       Returns: filesize-in-bytes
  1185.       Example: Print SizeText(handle)
  1186.  
  1187.      ^hWriteLnText^n       (Command)
  1188.  
  1189.       Purpose: Write a string to a text file
  1190.       Syntax : WriteLnText handle,string
  1191.       Example: WriteLnText 1,OutString
  1192.                Writes the contents of OutString to text file 1
  1193.  
  1194.      ^hWriteText^n         (Command)
  1195.  
  1196.       Purpose: Write a string to a text file without CR+LF
  1197.       Syntax : WriteText handle,string
  1198.       Example: WriteText 1,OutString
  1199.                Writes the contents of OutString to text file 1
  1200.  
  1201.     ^hBinary files^n
  1202.  
  1203.      ^hClose^n             (Command)
  1204.  
  1205.       Purpose: Close a file
  1206.       Syntax : Close handle
  1207.       Example: Close 1
  1208.  
  1209.      ^hEof^n               (Function)
  1210.  
  1211.       Purpose: Tells you if we are on the last position in the binary file
  1212.       Syntax : EndofTextFile(handle)
  1213.       Returns: 0=No, 1=Yes, end-of-file
  1214.       Example: While Eof(1)=0
  1215.                Continue until end-of-file
  1216.  
  1217.      ^hFilePos^n           (Function)
  1218.  
  1219.       Purpose: Report the byte position in a binary file.
  1220.       Syntax : FilePos(handle)
  1221.       Example: Print "Position ",FilePos(1)
  1222.                Show the byte-position on binary file 1
  1223.  
  1224.      ^hFileSize^n          (Function)
  1225.  
  1226.       Purpose: Report the size in bytes on a binary file
  1227.       Syntax : FileSize(handle)
  1228.       Returns: filesize-in-bytes
  1229.       Example: Print FileSize(handle)
  1230.  
  1231.      ^hOpen^n              (Command)
  1232.  
  1233.       Purpose: Opens a binary file for reading, writing or both.
  1234.       Syntax : Open handle,filename,mode,filemode
  1235.                handle  : 1-4
  1236.                filename: Full pathname of file
  1237.                mode    : 0=Read, 1=Write, 2=Append
  1238.                filemode: 0=ReadOnly,1=WriteOnly,2=ReadWrite,+64=DenyNone
  1239.       Example: Open 1,"TERMINAT.CFG",0,0
  1240.                Opens binary file 1 for reading.
  1241.  
  1242.      ^hRead^n              (Function)
  1243.  
  1244.       Purpose: Reads a number of characters from a binary file
  1245.       Syntax : Read(handle,numbytes)
  1246.       Returns: String
  1247.       Example: Set FileGrab=Read(1,20)
  1248.                Read 20 characters into FileGrab
  1249.  
  1250.      ^hSeek^n              (Command)
  1251.  
  1252.       Purpose: Seek to a file position in a binary file.
  1253.       Syntax : Seek handle,position
  1254.                Position is the byte-position in file 0=First byte
  1255.       Example: Seek 1,1000
  1256.                Seeks to position 1000 in the file
  1257.  
  1258.      ^hWrite^n             (Command)
  1259.  
  1260.       Purpose: Write a number of characters to a binary file
  1261.       Syntax : Write(1,expression)
  1262.       Example: Write(1,"HELLO")
  1263.  
  1264.    ^hDOS commands^n
  1265.  
  1266.      The result of each call is stored in IOResult
  1267.  
  1268.     ^hDeleteFile^n         (Command)
  1269.  
  1270.      Purpose: Deletes a file
  1271.      Syntax : DeleteFile filename
  1272.      Example: DeleteFile "TERMINAT.BAK"
  1273.  
  1274.     ^hExec^n               (Command)
  1275.  
  1276.      Purpose: Call a DOS command
  1277.      Syntax : Exec expression
  1278.      Example: Exec "TERMAIL\TM.EXE !M"
  1279.               Call the TerMail program
  1280.      Notes  : All the !-commands described other places in the manual
  1281.               can be used here. !M=Swap out memory
  1282.  
  1283.     ^hFindFirst^n          (Function)
  1284.  
  1285.      Purpose: Finds a file allowing wildcards
  1286.      Syntax : FindFirst(expression,attribute)
  1287.               Attribute: 1=ReadOnly, 2=Hidden, 4=System, 8=VolumeID,
  1288.                          16=Directory, 32=Archive, 63=AnyFile
  1289.      Returns: Filename only or blank if no mathces
  1290.      Example: Print FindFirst("C:\*.*",32)
  1291.  
  1292.     ^hFindNext^n           (Command)
  1293.  
  1294.      Purpose: Find next match after a FindFirst use
  1295.      Returns: Filename found
  1296.      Example: PrintLn FindFirst("C:\*.*",32)
  1297.               While IOResult=0
  1298.                 PrintLn FindNext
  1299.               EndWhile
  1300.               Will display to entire root of your C-drive
  1301.  
  1302.     ^hRename^n             (Command)
  1303.  
  1304.      Purpose: Rename a file to another name
  1305.      Syntax : Rename filename new-filename
  1306.      Example: Rename "TEST.TXT","TEST2.TXT"
  1307.               Renames TEST.TXT -> TEST2.TXT
  1308.  
  1309.    ^hDate, time handling^n
  1310.  
  1311.     ^hGetDate^n            (Variable)
  1312.  
  1313.      Purpose: Returns date in formatted form
  1314.      Returns: Date-string DD-Mmm-YYYY (Day, Month-string, Year)
  1315.      Example: PrintLn GetDate
  1316.               Print todays date: 7-Aug-1995,  21-Jan-96
  1317.  
  1318.     ^hGetDateRaw^n         (Variable)
  1319.  
  1320.      Purpose: Returns date in raw form
  1321.      Returns: String YYYY MM DD DOW   (Year, Month, Day, Day-of-week)
  1322.      Example: PrintLn GetDateRaw
  1323.               Print current date: 1995 08 07 01
  1324.  
  1325.     ^hGetTime^n            (Variable)
  1326.  
  1327.      Purpose: Returns time in formatted form
  1328.      Returns: Time-string HH:MM:SS
  1329.      Example: PrintLn GetTime
  1330.               Print current time: 18:39:25
  1331.  
  1332.     ^hResetTimer^n         (Command)
  1333.  
  1334.      Purpose: Resets timer 1-4
  1335.      Syntax : ResetTimer timer-num,seconds
  1336.      Example: ResetTimer 1,60
  1337.               Sets timer to expire after 60 seconds
  1338.  
  1339.     ^hTimeElapsed^n        (Function)
  1340.  
  1341.      Purpose: Returns in milliseconds time elapsed since ResetTimer
  1342.      Syntax : TimeElapsed(timer-num)
  1343.      Returns: Milliseconds elapsed
  1344.      Example: PrintLn TimeElapsed(1)
  1345.  
  1346.     ^hTimerExpired^n       (Function)
  1347.  
  1348.      Purpose: Check if a timer has expired.
  1349.      Syntax : TimerExpired(timer-num)
  1350.      Returns: 0=No, 1=Timer expired
  1351.      Example: Until TimerExpired(1)=1
  1352.  
  1353.     ^hWait^n               (Command)
  1354.  
  1355.      Purpose: Pause in 1/100 seconds
  1356.      Syntax : Wait num-1/100-seconds
  1357.      Example: Wait 200
  1358.               Wait 2 seconds before continuing
  1359.  
  1360.    ^hFile transfers^n
  1361.  
  1362.      One of the most common tasks you will need the scripts for is to
  1363.      transfer files to/from another system. To do this you need to
  1364.      use the internal or external protocols specified below.
  1365.  
  1366.       Protocols
  1367.  
  1368.            1 + Zmodem                 + = Batch protocol
  1369.            2 + ZedZap
  1370.            3   Ascii
  1371.            4   Xmodem
  1372.            5   Xmodem-1K
  1373.            6   Xmodem-1K-G
  1374.            7 + Ymodem
  1375.            8 + Ymodem-G
  1376.            9 + Kermit
  1377.           10 + CompuServe B+
  1378.       11..22 ? External protocols
  1379.  
  1380.     ^hDownload^n           (Command)
  1381.  
  1382.      Purpose: Receive files from another system
  1383.      Syntax : Download protocol,filename
  1384.      Example: Download 1
  1385.               Download 3,"CAPTURE.TXT"
  1386.      Notes  : All protocols that are not batch must have a filename
  1387.  
  1388.     ^hUpload^n             (Command)
  1389.  
  1390.      Purpose: Send files to another system
  1391.      Syntax : Upload protocol,filename(s)/wildcards
  1392.      Example: Upload 1,"C:\TERMINAT\UPLOAD\DANBBS.QWK"
  1393.               Upload 3,"C:\TERMINAT\UPLOAD\*.* C:\TERMINAT\DOCS\*.DOC"
  1394.  
  1395.    ^hEmulations^n
  1396.  
  1397.     ^hSetTerminal^n        (Command)
  1398.  
  1399.      Purpose: Change to terminal slot
  1400.      Syntax : SetTerminal slot
  1401.      Example: SetTerminal 1
  1402.               ANSI-BBS is now the current terminal
  1403.  
  1404.     ^hWriteTerminal^n      (Command)
  1405.  
  1406.      Purpose: Change to terminal slot
  1407.      Syntax : SetTerminal slot
  1408.      Example: SetTerminal 1
  1409.               ANSI-BBS is now the current terminal
  1410.  
  1411.    ^hTerminate control^n
  1412.  
  1413.     ^hDial^n               (Command)
  1414.  
  1415.      Purpose: Dial number in the phonebook
  1416.      Syntax : Dial numbers,numbers,numbers.....
  1417.      Example: Dial 1,2,3,4
  1418.               Dial 27
  1419.  
  1420.     ^hMainLoop^n           (Command)
  1421.  
  1422.      Purpose: Run Terminate main loop
  1423.      Syntax : MainLoop times
  1424.      Example: MainLoop 10
  1425.               Allow the script to access all the Terminate functions
  1426.  
  1427.    ^hDirect hardware control^n
  1428.  
  1429.     Direct memory commands can be dangerous since it can access your
  1430.     hardware directly or indirectly. Please do not use any memory
  1431.     commands if you are the slightest bit insecure on their use.
  1432.  
  1433.     ^hFreeMem^n            (Function)
  1434.  
  1435.      Purpose: How much memory is left
  1436.      Returns: Number of bytes available for script language
  1437.      Example: Print FreeMem
  1438.               Displays free memory on screen
  1439.  
  1440.     ^hInterrupt^n          (Function)
  1441.  
  1442.      Purpose: Call any interrupt with register value *WARNING DANGEROUS*
  1443.      Syntax : Interrupt(interrupt-number,ax,bx,cx,dx,si,di,ds,es)
  1444.      Returns: String: ah al bh bl ch cl dh dl si di ds es flags
  1445.      Example: Print "Videomode:",GrabWord(Interrupt(16,3840,0,0,0,0,0,0,0),2)
  1446.               Get videomode in word 2 in string
  1447.      Notes  : Be very careful with command. It gives you access to the
  1448.               complete PC and therefore one wrong call can result in the
  1449.               worst errors. If you are not an expirenced programmer do not
  1450.               under any circumstances use this command.
  1451.  
  1452.     ^hMem^n                (Function)
  1453.  
  1454.      Purpose: Get a byte directly from memory location
  1455.      Syntax : Mem(segment,offset)
  1456.      Returns: 0-255
  1457.      Example: Print "Memory 0:0",Mem(0,0)
  1458.  
  1459.     ^hPortIn^n             (Function)
  1460.  
  1461.      Purpose: Get a byte directly from a hardware port
  1462.      Syntax : PortIn(port)
  1463.      Example: You will know if you need it!
  1464.  
  1465.     ^hPortOut^n            (Command)
  1466.  
  1467.      Purpose: Send a byte to a hardware port
  1468.      Syntax : PortOut port,byte
  1469.      Example: You will know if you need it!
  1470.  
  1471.     ^hPutMem^n             (Command)
  1472.  
  1473.      Purpose: Put a byte directly to memory location
  1474.      Syntax : PutMem(byte,segment,offset)
  1475.      Example: PutMem 65,47104,0
  1476.      Notes  : BE CAREFULL!
  1477.  
  1478.    ^hFax commands^n
  1479.  
  1480.     ^hSendFax^n            (Command)
  1481.  
  1482.      Purpose: Send a fax to a specific telephone number
  1483.      Syntax : SendFax filename,number,[to-name,subject]
  1484.      Example: SendFax "DOCS\PROBLEM.DOC","43627178","Sysop","Problem"
  1485.               SendFax "C:\AUTOEXEC.BAT","43627178"
  1486.      Notes  : Text, TIFF or PCX files will be converted to APF format first
  1487.               Note that the default fax settings and cover page will be used.
  1488.  
  1489.    ^hNumeric conversion^n
  1490.  
  1491.     ^hBinary^n             (Function)
  1492.  
  1493.      Purpose: Returns an binary string
  1494.      Syntax : Binary(Integer,bits)
  1495.      Example: PrintLn Binary(255,8)
  1496.               PrintLn Binary(256,16)
  1497.  
  1498.     ^hBinToInt^n           (Function)
  1499.  
  1500.      Purpose: Returns an integer from a binary string
  1501.      Syntax : BinToInt(string)
  1502.      Example: PrintLn BinToInt("11111111")
  1503.  
  1504.     ^hByteToHex^n          (Function)
  1505.  
  1506.      Purpose: Returns a string with hex value of byte 8-bit
  1507.      Syntax : ByteToHex(Byte)
  1508.      Example: PrintLn ByteToHex(255)
  1509.  
  1510.     ^hHexToInteger^n       (Function)
  1511.  
  1512.      Purpose: Returns an integer converted from a hex-string
  1513.      Syntax : HexToInteger(String)
  1514.      Example: PrintLn HexToInteger("FFFF")
  1515.  
  1516.     ^hLongToHex^n          (Function)
  1517.  
  1518.      Purpose: Returns a string with hex value of a double word 32-bit
  1519.      Syntax : LongToHex(Byte)
  1520.      Example: PrintLn LongToHex(255)
  1521.  
  1522.     ^hWordToHex^n          (Function)
  1523.  
  1524.      Purpose: Returns a string with hex value of word 16-bit
  1525.      Syntax : WordToHex(Byte)
  1526.      Example: PrintLn WordToHex(65000)
  1527.  
  1528.    ^hOther commands^n
  1529.  
  1530.     ^hExitTerminate^n      (Command)
  1531.  
  1532.      Purpose: Exit the script and Terminate with errorlevel
  1533.      Syntax : ExitTerminal [errorlevel]
  1534.      Example: ExitTerminate 100   (Errorlevel 100)
  1535.               ExitTerminate       (Errorlevel 1)
  1536.  
  1537.     ^hGetCrc^n             (Function)
  1538.  
  1539.      Purpose: Update a Crc-16 checksum
  1540.      Syntax : GetCrc(Byte,Old-Crc)
  1541.      Example: Set Crc=GetCrc(X,Crc)
  1542.  
  1543.     ^hGetCrcLong^n         (Function)
  1544.  
  1545.      Purpose: Update a Crc-32 checksum
  1546.      Syntax : GetCrcLong(Byte,Old-Crc)
  1547.      Example: Set Crc=GetCrcLong(X,Crc)
  1548.  
  1549.     ^hRandom^n             (Function)
  1550.  
  1551.      Purpose: Get a random number between 0-65535
  1552.      Syntax : Random(max)
  1553.      Example: Print Random(100)
  1554.               Displays a random number between 0-99
  1555.  
  1556.     ^hRandomize^n          (Command)
  1557.  
  1558.      Purpose: To initialise the random factor for the Random function
  1559.      Syntax : Randomize
  1560.  
  1561.     ^hTerminate^n          (Command)
  1562.  
  1563.      Purpose: Exit the script
  1564.      Syntax : Exit
  1565.  
  1566.