Additions and changes to the manual since version 2.00

There are a few command that I have made obsolete and you should
watch for. The SUBMENU command is no longer necessary. Just run
MARX <menu> instead.

Old versions of MarxMenu required the 4-5 numbers follow the
UseArrows command. This is no longer necessary. Eliminating the
numbers will fix the problem. The new correct method is USEARROWS or
USEARROWS OFF.

New Commands:

%MenuFileName : String

This returns the name of the current menu file including the
complete path. It can be used under an OnKey statement to edit
the current menu as follows:

OnKey 'E'
   TEDIT %MenuFileName

InsertMode (On/Off)
Turns insert mode on and off for Readln commands.

MarxMenu contains several boolean variables. If you use the name
of a boolean variable by itself on a line, MarxMenu assumes you
are setting it to true. This includes the following variables:

ClearScreenFirst
ClearScreenOnExit
Console
DosWindow
Explode
InsertMode
PauseAfterExecute
ScrollMove
Sound
UseArrows
UseCommand

Thus, EXPLODE is the same as EXPLODE ON.

LongestLine : Number

When using the commands ReadTextFile and ReadEnvironment, the
length of the longest line is stored in LongestLine.

===============================================================

Version 2.01

Nothing is perfect. I fixed the FileAppend problem. Also added a few new
commands.


TotalDiskSpace <drive> : Number
Returns total disk space in bytes.

FreeDiskSpace <drive> : Number
Returns free disk space in bytes.

UsedDiskSpace <drive> : Number
Returns used disk space in bytes.

ClusterSize <drive> : Number
Returns cluster size in bytes.


TotalEMS : Number
Returns total EMS memory in bytes.

FreeEMS : Number
Returns free EMS memory in bytes.

I have fixed the incompatibility problem with 4DOS.

===============================================================

Version 2.02

New Features:

Security <on/off>

When security is on, Readln echos '*' instead of the letters that
are being typed. This is used for such things as entering passwords
other that using the password command.

MarxMenu now supports local variables and parameter passing.
Variables declared within procedures become local variables.
Local variables are just like global variables in that you can
use them as multi-dimensional arrays. When the procedure
finishes, all local varaibles are disposed.

If a local variable has the same name as a global variable, the
local variable will be used.

Procedures can accept parameters by declaring variable names on
the same line as the name of the procedure.

Procedures can return variables by using the Return command.
Return exist the procedure returning the parameters on the same
line as the Return statement.

Example:

Procedure Factorial (X)
var Y Z
   Y = 1
   Z = 1
   while Y <= X
      Z = Y * Z
      Y = Y + 1
   endwhile
   Writeln X ' factorial is ' Z
endproc

In this example, if you were to use Factorial (5) you would get:

5 factorial is 120

Another Example

Procedure AskYesNo (Question)
var YesNo
   DrawBox (34 - (Length(Question) / 2)) 21 Length(Question) + 14 3
   TextColor LCyan Blue
   UseArrows Off
   Write ' ',Question,' (Y/N) '
   YesNo = UpperCase(ReadKey)
   YesNo = YesNo = 'Y'
   if YesNo
      Write 'Yes'
   else
      Write 'No'
   endif
   Wait 50
   EraseTopWindow
   Return (YesNo)
EndProc

if AskYesNo 'Do you want to continue? ' then Continue

In this example, MarxMenu draws a box and asks a question and
waits for a Yes or No answer.

Arrays can be passed as parameters. Parameters are passed by
value not by reference. This means that any changes to the passed
parameter do not affect the original value.

You can now copy an array by assigning it equal to annother
array.

Example

Array1 = Array2

This creates Array1 with a copy of all the elements of Array2.
The previous contents of Array1 are overwritten.

Look at MULT.MNU for examples.

===============================================================

Version 2.03

New Features:

SetArraySize (Array,Size)
If the array is larger than Size the array is truncated. If it is
smaller, memory is allocated for the array.

Delete (Array,Position,Count)
This works exactly like the delete command for strings. It delete
elements of an array begining at Position for Count elements. The
NumberOfElements is adjusted accordingly.

DosVersionString : String
Returns the dos version number as a 4 character string. This
function always returns 2 places past the decimal point. The
form of the string is: #.##

===============================================================

About upgrades:

If you have version 1 of MarxMenu, you can upgrade to version 2
for $20 + $3 shipping and handling.
