Dec 282017
 
MarxMenu is not just another fill-in-the-blank menu system. It is a menu programming language and job control language. Designed to work with Novell Netware .
File MXMNU229.ZIP from The Programmer’s Corner in
Category Network Files
MarxMenu is not just another fill-in-the-blank menu system. It is a menu programming language and job control language. Designed to work with Novell Netware .
File Name File Size Zip Size Zip Type
BLOCK.INC 7388 2050 deflated
CUSTOM.INC 1910 815 deflated
ENV.MNU 6148 1883 deflated
GOFILE.MNU 2298 1031 deflated
GRID.INC 7804 2120 deflated
INST.MNU 9850 2876 deflated
INSTALL.BAT 2354 877 deflated
LEVEL1.MNU 50959 10137 deflated
LOGIN.MNU 17045 5278 deflated
MARXCOMP.EXE 33599 30842 deflated
MARXMENU.DOC 316311 72980 deflated
MARXMENU.EXE 31552 18988 deflated
MARXMENU.OVR 131703 58016 deflated
MARXREAD.ME 17517 6282 deflated
NIM.MNU 5940 1836 deflated
NOVELL.INC 7345 2064 deflated
NOVTRANS.MNU 12711 3550 deflated
PULL.MNU 3044 918 deflated
QUICK.MNU 5253 1658 deflated
QUICKNOV.MNU 11113 3431 deflated
SAMPLE.MNU 807 403 deflated
SAMPLE2.MNU 6163 1743 deflated

Download File MXMNU229.ZIP Here

Contents of the MARXMENU.DOC file
























===================================================================



<*> Computer Tyme MarxMenu <*>

Reference Manual

Copyright 1989 - 1991 by Marc Perkel

All Rights Reserved * Version 2.29 * Release Date: 07-01-91

Computer Tyme * 411 North Sherman Suite 300 * Springfield Mo. 65802

(417) 866-1222 voice * (417) 866-1665 bbs

Fax: (417) 866-0135
CompuServe 76505,1120



===================================================================



Computer Tyme MarxMenu * Table of Contents Page 1
_______________________________________________________________



Copyright ......................................... 1
License ........................................... 1
Warranty .......................................... 1
Acknowledgments ................................... 2
Trademarks ........................................ 2
The MarxMenu Name ................................. 2
Technical Support ................................. 3
Overview of the MarxMenu System ................... 3
-- What MarxMenu Does ............................. 5
-- For the POWER User ............................. 6
Installation ...................................... 7
Installing the Network Survival Kit ............... 7
The MARX.BAT File ................................. 8
-- DROPTO.BAT ..................................... 10
-- Support for early DOS versions ................. 11
-- About Environment Variables .................... 12
-- Dealing with Multiple DOS Shells ............... 13
-- MarxMenu and TSR Control ....................... 14
Network Users ..................................... 15
-- Novell Users ................................... 15
---- The Novell Menu Translator ................... 16
---- Logging out under Menu Control ............... 16
---- Logging in with MarxMenu ..................... 17
------ The CONFIG.SYS File ........................ 18
------ The AUTOEXEC.BAT File ...................... 18
------ The SHELL.CFG File ......................... 20
------ Using a Menu File to Log In ................ 20
---- Novell Semaphores ............................ 21
Running a MarxMenu ................................ 22
Customizing MarxMenu Sample Files ................. 22
Menu Analysis ..................................... 23
Onkey Statements .................................. 24
Popup Menus ....................................... 24
The Console ....................................... 26
Repositioning the Top Window ...................... 26
Mouse Support ..................................... 27
Starting off the Easy Way ......................... 27
About Variables ................................... 27
-- Dates .......................................... 29
-- Real Numbers ................................... 29
-- Local Variables ................................ 30
-- Passing Parameters to Procedures ............... 30
About Constants ................................... 32
About Arrays ...................................... 32
About Qualifiers .................................. 33
Comments in Menu Files ............................ 34
The MarxMenu Compiler ............................. 35
Compiler Compatibility ............................ 35
A word about DOS versions ......................... 36
A word about BUGS ................................. 36
Tips From the Master .............................. 37



Computer Tyme MarxMenu * Table of Contents Page 2
_______________________________________________________________


-- Computers do Simple Tasks ...................... 37
-- Complex Tasks are made of Simple Tasks ......... 38
-- Learning Good Programming Habits ............... 38
-- Use Long Names ................................. 39
-- Use Comments Liberally ......................... 40
-- Indent Your code ............................... 41
-- For Duplicate Tasks, Use Procedures ............ 42
-- Don't Program Yourself into a Corner ........... 42
A word to Writers and Reviewers ................... 43
Using MarxHelp .................................... 44
Printing the Example Files ........................ 44
Security Issues ................................... 44
MarxMenu Commands ................................. 45
-- | .............................................. 46
-- ( .............................................. 46
-- ) .............................................. 46
-- * .............................................. 46
-- + .............................................. 47
-- - .............................................. 47
-- / .............................................. 47
-- < .............................................. 47
-- <= ............................................. 47
-- <> ............................................. 47
-- = .............................................. 47
-- > .............................................. 47
-- >= ............................................. 47
-- %MenuFileName .................................. 48
-- Abs ............................................ 48
-- Alias .......................................... 48
-- AllowAbort ..................................... 49
-- AllowEsc ....................................... 49
-- And ............................................ 49
-- AppendArray .................................... 49
-- ApplicationMemory .............................. 50
-- Apr ............................................ 50
-- ArcTan ......................................... 50
-- Aug ............................................ 50
-- BadDate ........................................ 50
-- Bat ............................................ 50
-- BatFileName .................................... 51
-- BigShadow ...................................... 51
-- Black .......................................... 51
-- Blanked ........................................ 51
-- BlankMessage ................................... 51
-- BlankTime ...................................... 51
-- Blink .......................................... 52
-- BlockBox ....................................... 52
-- Blue ........................................... 52
-- BoxBorderColor ................................. 52
-- BoxHeader ...................................... 53
-- BoxHeaderColor ................................. 53
-- BoxHeaderLeft .................................. 53



Computer Tyme MarxMenu * Table of Contents Page 3
_______________________________________________________________


-- BoxHeaderRight ................................. 53
-- BoxFooter ...................................... 54
-- BoxFooterLeft .................................. 54
-- BoxFooterRight ................................. 54
-- BoxInsideColor ................................. 54
-- BrightBackground ............................... 55
-- Brown .......................................... 55
-- BW40 ........................................... 55
-- BW80 ........................................... 55
-- CapsColor ...................................... 55
-- CapsLock ....................................... 56
-- CGA ............................................ 56
-- Chain .......................................... 56
-- Char ........................................... 56
-- ChDir .......................................... 57
-- CleanFileName .................................. 57
-- ClearLine ...................................... 57
-- ClearScreen .................................... 57
-- ClearScreenFirst ............................... 58
-- ClearScreenOnExit .............................. 58
-- ClockColor ..................................... 58
-- ClockMode ...................................... 58
-- ClockPos ....................................... 59
-- ClosePrinter ................................... 59
-- ClusterSize .................................... 59
-- CmdLine ........................................ 59
-- CO40 ........................................... 59
-- CO80 ........................................... 60
-- ColorScreen .................................... 60
-- Comment ........................................ 60
-- Console ........................................ 60
-- ConsoleBorderColor ............................. 60
-- ConsoleHeaderColor ............................. 61
-- ConsoleInsideColor ............................. 61
-- ConsolePos ..................................... 61
-- Const .......................................... 61
-- Cos ............................................ 61
-- CurrentEnvironment ............................. 61
-- CurrentWindow .................................. 62
-- Cursor ......................................... 62
-- CustomBox ...................................... 62
-- Cyan ........................................... 62
-- DateString ..................................... 62
-- Day ............................................ 62
-- DayOf .......................................... 62
-- DayOfWeek ...................................... 63
-- DayOfWeekOf .................................... 63
-- Dec ............................................ 63
-- Delete ......................................... 63
-- DelFile ........................................ 64
-- DGrey .......................................... 64
-- DisplayType .................................... 64



Computer Tyme MarxMenu * Table of Contents Page 4
_______________________________________________________________


-- Dispose ........................................ 65
-- DosVersion ..................................... 65
-- DosVersionString ............................... 65
-- DosWindow ...................................... 65
-- DoubleLineBox .................................. 66
-- DrawBox ........................................ 66
-- Drives ......................................... 66
-- DvAppNumber .................................... 66
-- DvFrame ........................................ 66
-- DvFreeze ....................................... 67
-- DvHide ......................................... 67
-- DvKillTask ..................................... 67
-- DvLastHandle ................................... 67
-- DvLoaded ....................................... 67
-- DvMoveWindow ................................... 67
-- DvMyHandle ..................................... 67
-- DvPifExecute ................................... 68
-- DvResizeWindow ................................. 68
-- DvSetBottom .................................... 68
-- DvSetTop ....................................... 68
-- DvUnFreeze ..................................... 69
-- DvUnHide ....................................... 69
-- EGA ............................................ 69
-- Else ........................................... 69
-- EndComment ..................................... 69
-- Endif .......................................... 69
-- EndLoop ........................................ 70
-- EndOfFile ...................................... 70
-- EndProc ........................................ 70
-- EndWhile ....................................... 70
-- EnvFree ........................................ 70
-- EnvSize ........................................ 70
-- EraseTopWindow ................................. 71
-- EraseWindow .................................... 71
-- Execute ........................................ 71
-- ExistDir ....................................... 72
-- ExistFile ...................................... 72
-- ExistOnPath .................................... 72
-- ExitCode ....................................... 72
-- ExitMenu ....................................... 73
-- Exp ............................................ 73
-- Explode ........................................ 73
-- ExplodeDelay ................................... 73
-- Extension ...................................... 73
-- False .......................................... 73
-- Feb ............................................ 73
-- FileAppend ..................................... 74
-- FileAssign ..................................... 74
-- FileAttr ....................................... 74
-- FileClose ...................................... 74
-- FileCreate ..................................... 74
-- FileDate ....................................... 74



Computer Tyme MarxMenu * Table of Contents Page 5
_______________________________________________________________


-- FileFlush ...................................... 74
-- FileLog ........................................ 75
-- FileOpen ....................................... 75
-- FilePart ....................................... 75
-- FilePos ........................................ 75
-- FileReadln ..................................... 76
-- FileRename ..................................... 76
-- FileResult ..................................... 76
-- FileSeek ....................................... 76
-- FileSize ....................................... 76
-- FileWrite ...................................... 76
-- FileWriteln .................................... 76
-- FixPath ........................................ 77
-- Floppies ....................................... 77
-- ForceExplosion ................................. 77
-- ForceExtension ................................. 77
-- Fraction ....................................... 77
-- FreeDiskSpace .................................. 77
-- FreeEms ........................................ 77
-- FreeMemory ..................................... 78
-- Fri ............................................ 78
-- GotoXY ......................................... 78
-- Green .......................................... 78
-- Grey ........................................... 78
-- HercMono ....................................... 78
-- Hour ........................................... 78
-- HourOf ......................................... 79
-- Hundredth ...................................... 79
-- IdleProgram .................................... 79
-- If ............................................. 80
-- InactiveBox .................................... 80
-- InactiveBoxColor ............................... 81
-- Include ........................................ 81
-- InputString .................................... 81
-- Insert ......................................... 82
-- InsertMode ..................................... 82
-- Int ............................................ 82
-- Integer ........................................ 82
-- InverseColor ................................... 82
-- Jan ............................................ 82
-- Jul ............................................ 82
-- Jun ............................................ 82
-- Jump ........................................... 83
-- KbdReady ....................................... 83
-- KeySave ........................................ 83
-- KeyFromMouse ................................... 83
-- KillMusic ...................................... 83
-- LastKey ........................................ 83
-- LBlue .......................................... 84
-- LCyan .......................................... 84
-- Left ........................................... 84
-- Length ......................................... 84



Computer Tyme MarxMenu * Table of Contents Page 6
_______________________________________________________________


-- LGreen ......................................... 84
-- LGrey .......................................... 84
-- LMag ........................................... 84
-- LMagenta ....................................... 85
-- Ln ............................................. 85
-- Loc ............................................ 85
-- LockWord ....................................... 85
-- Logoff ......................................... 85
-- LogoffTime ..................................... 86
-- Loop ........................................... 86
-- LoopIndex ...................................... 87
-- LoopLimit ...................................... 87
-- LRed ........................................... 87
-- MachineName .................................... 87
-- Mag ............................................ 87
-- Magenta ........................................ 87
-- Mar ............................................ 87
-- MarxVersion .................................... 88
-- MasterEnvironment .............................. 88
-- Max ............................................ 88
-- May ............................................ 88
-- MCGA ........................................... 88
-- Mem ............................................ 88
-- MemL ........................................... 89
-- MemSize ........................................ 89
-- MemW ........................................... 89
-- MenuKeyBuffer .................................. 89
-- Mid ............................................ 89
-- Min ............................................ 89
-- MinorDosVersion ................................ 90
-- Minute ......................................... 90
-- MinuteOf ....................................... 90
-- Mod ............................................ 90
-- ModifyPath ..................................... 90
-- Mon ............................................ 90
-- Mono ........................................... 90
-- Month .......................................... 91
-- MonthOf ........................................ 91
-- Mouse .......................................... 91
-- MouseHorizontal ................................ 91
-- MouseVertical .................................. 92
-- MoveWindow ..................................... 92
-- MxCmd .......................................... 92
-- NamePart ....................................... 92
-- NetworkVersion ................................. 92
-- NextWord ....................................... 93
-- No ............................................. 93
-- NoBoxBorder .................................... 93
-- NoExit ......................................... 93
-- Not ............................................ 93
-- NotesLeft ...................................... 93
-- NotesPlayed .................................... 93



Computer Tyme MarxMenu * Table of Contents Page 7
_______________________________________________________________


-- Nov ............................................ 94
-- NovAccountExpDate .............................. 94
-- NovAddUserToGroup .............................. 94
-- NovAttach ...................................... 94
-- NovChangePassword .............................. 94
-- NovCloseSemaphore .............................. 94
-- NovConnection .................................. 94
-- NovConsoleOperator ............................. 95
-- NovDefaultServer ............................... 95
-- NovDetach ...................................... 95
-- NovGraceLoginReset ............................. 95
-- NovGraceLogins ................................. 95
-- NovGroupMembers ................................ 96
-- NovGroups ...................................... 96
-- NovInGroup ..................................... 96
-- NovLastLoginDate ............................... 96
-- NovLogin ....................................... 96
-- NovLoginName ................................... 96
-- NovLogout ...................................... 97
-- NovMapDrive .................................... 97
-- NovMinPasswordLength ........................... 97
-- NovMyLoginName ................................. 97
-- NovMyPassword .................................. 97
-- NovOpenSemaphore ............................... 97
-- NovPasswordExpDate ............................. 98
-- NovPreferredServer ............................. 98
-- NovPrimaryServer ............................... 98
-- NovPrintQueues ................................. 98
-- NovReadGroups .................................. 98
-- NovReadSecurityEquals .......................... 98
-- NovRemoveUserFromGroup ......................... 98
-- NovResult ...................................... 99
-- NovSecurityEquals .............................. 99
-- NovSemaphoreTimeOut ............................ 99
-- NovSemaphoreUsers .............................. 99
-- NovSemaphoreValue .............................. 99
-- NovServers ..................................... 99
-- NovScanProperties .............................. 100
-- NovSetPreferredServer .......................... 100
-- NovSetPrimaryServer ............................ 100
-- NovSignalSemaphore ............................. 100
-- NovStationAddress .............................. 101
-- NovUserInGroup ................................. 101
-- NovUsers ....................................... 101
-- NovUsersLoggedIn ............................... 101
-- NovWaitOnSemaphore ............................. 101
-- NumberOfElements ............................... 102
-- Now ............................................ 102
-- NumLock ........................................ 102
-- Oct ............................................ 102
-- Off ............................................ 102
-- On ............................................. 102



Computer Tyme MarxMenu * Table of Contents Page 8
_______________________________________________________________


-- OnKey .......................................... 103
-- OnScreenOnly ................................... 103
-- OpenPrinter .................................... 104
-- OptionSwitch ................................... 104
-- Or ............................................. 104
-- Ord ............................................ 104
-- OverKey ........................................ 104
-- Overlay ........................................ 105
-- ParallelPorts .................................. 105
-- ParamStr ....................................... 105
-- ParentEnvironment .............................. 105
-- Password ....................................... 106
-- Path ........................................... 106
-- PathPart ....................................... 106
-- PauseAfterExecute .............................. 106
-- PGC ............................................ 106
-- Pi ............................................. 106
-- PickFile ....................................... 107
-- PickMany ....................................... 107
-- PickOne ........................................ 107
-- PickPosition ................................... 108
-- Port ........................................... 108
-- Pos ............................................ 108
-- Power .......................................... 108
-- Pred ........................................... 108
-- Print .......................................... 108
-- PrinterName .................................... 108
-- Println ........................................ 109
-- PrintScreen .................................... 109
-- Procedure ...................................... 109
-- PullMenu ....................................... 109
-- Qualifier ...................................... 109
-- Random ......................................... 110
-- ReadEnv ........................................ 110
-- ReadEnvironment ................................ 110
-- ReadKey ........................................ 111
-- Readln ......................................... 111
-- ReadTextFile ................................... 111
-- Real ........................................... 112
-- Reboot ......................................... 112
-- Red ............................................ 112
-- ReleaseDate .................................... 112
-- Repeat ......................................... 112
-- ResizeWindow ................................... 113
-- Return ......................................... 113
-- ReturnCode ..................................... 113
-- Right .......................................... 113
-- RollWindow ..................................... 114
-- Run ............................................ 114
-- Sat ............................................ 115
-- SavePosition ................................... 115
-- ScreenHeight ................................... 115



Computer Tyme MarxMenu * Table of Contents Page 9
_______________________________________________________________


-- ScreenWidth .................................... 115
-- ScrollLock ..................................... 115
-- ScrollMove ..................................... 116
-- Second ......................................... 116
-- SecondOf ....................................... 116
-- SecondInDay .................................... 116
-- SecondInHour ................................... 116
-- Security ....................................... 116
-- SelectPath ..................................... 116
-- Sep ............................................ 117
-- SerialPorts .................................... 117
-- SetArraySize ................................... 117
-- SetEnv ......................................... 117
-- SetTopWindow ................................... 118
-- SetWindowUnder ................................. 118
-- Shadow ......................................... 118
-- ShadowColor .................................... 118
-- ShadowPosition ................................. 118
-- Shared ......................................... 119
-- ShellEnvironment ............................... 119
-- Shl ............................................ 119
-- Shr ............................................ 119
-- Sin ............................................ 119
-- SingleLineBox .................................. 119
-- SmallShadow .................................... 120
-- SortArray ...................................... 120
-- Sound .......................................... 120
-- Sqr ............................................ 120
-- StandardIO ..................................... 120
-- Str ............................................ 121
-- StuffAKey ...................................... 121
-- StuffKBD ....................................... 121
-- StuffKeyboardNow ............................... 121
-- Succ ........................................... 121
-- Suggest ........................................ 121
-- Sun ............................................ 122
-- TextBackground ................................. 122
-- TextColor ...................................... 122
-- TextMode ....................................... 122
-- TextPos ........................................ 122
-- TextSeek ....................................... 122
-- Then ........................................... 123
-- Thu ............................................ 123
-- TimeOf ......................................... 123
-- Timer .......................................... 123
-- TimeString ..................................... 123
-- Today .......................................... 123
-- Tone ........................................... 124
-- TotalDiskSpace ................................. 124
-- TotalEms ....................................... 124
-- Trim ........................................... 124
-- True ........................................... 124



Computer Tyme MarxMenu * Table of Contents Page 10
_______________________________________________________________


-- Tue ............................................ 124
-- UniqueFileName ................................. 125
-- Until .......................................... 125
-- UpperCase ...................................... 125
-- UpperCaseOnly .................................. 125
-- UseArrows ...................................... 125
-- UseCommand ..................................... 126
-- UsedDiskSpace .................................. 126
-- UseNovPassword ................................. 126
-- Value .......................................... 126
-- Var ............................................ 127
-- VGA ............................................ 127
-- VideoMode ...................................... 127
-- VideoPage ...................................... 127
-- ViewArray ...................................... 127
-- ViewTextFile ................................... 127
-- Volume ......................................... 127
-- Wait ........................................... 128
-- WaitOrKbdReady ................................. 128
-- Wed ............................................ 128
-- WhereX ......................................... 128
-- WhereXAbs ...................................... 128
-- WhereY ......................................... 128
-- WhereYAbs ...................................... 128
-- While .......................................... 129
-- White .......................................... 129
-- WindowHeight ................................... 129
-- WindowWidth .................................... 129
-- Write .......................................... 129
-- WriteCenter .................................... 129
-- Writeln ........................................ 129
-- WriteTextFile .................................. 130
-- WriteVertical .................................. 130
-- Xor ............................................ 130
-- Year ........................................... 130
-- YearOf ......................................... 130
-- Yellow ......................................... 130
-- Yes ............................................ 130
String and Character Constants .................... 131
Conditional Statements ............................ 132
Environment Variables used by MarxMenu ............ 133
Command Categories ................................ 134
-- Misc Commands .................................. 134
-- Math Commands .................................. 135
-- Float Commands ................................. 136
-- String Commands ................................ 136
-- Boolean Commands ............................... 137
-- Array Commands ................................. 138
-- Memory Commands ................................ 138
-- Time Commands .................................. 139
-- Execution Commands ............................. 140
-- Display Commands ............................... 140



Computer Tyme MarxMenu * Table of Contents Page 11
_______________________________________________________________


-- Color Commands ................................. 142
-- Video Commands ................................. 142
-- System Commands ................................ 143
-- File Commands .................................. 143
-- Ansi Commands .................................. 144
-- Printer Commands ............................... 144
-- Environment Commands ........................... 144
-- DesqView Commands .............................. 145
-- Conditional Commands ........................... 145
-- Keyboard Commands .............................. 145
-- MouseControl Commands .......................... 146
-- Music Commands ................................. 146
-- Novell Commands ................................ 146
-- Variable Commands .............................. 147



Computer Tyme MarxMenu Users Manual Page 1
_______________________________________________________________


COPYRIGHT
COPYRIGHT
COPYRIGHT

This manual is copyrighted material and all rights are reserved.
MarxMenu is a programming language which describes to the computer what
it is supposed to do. Even though some of the individual words in
MarxMenu are used in other programming languages, I claim a copyright on
the collection of words which make up the MarxMenu language. I therefore
consider it an infringement of my CopyRight to create a software product
which uses the MarxMenu language, or translates MarxMenu source code,
without purchasing a license to do so.

The combinations of definitions of commands in this manual constitute a
copyrighted work. Any publication which describes a computer language
for which the MarxMenu command set is a subset is a violation of the
copyright of this software and this written manual.

In other words, don't try to clone MarxMenu.

LICENSE AGREEMENT:
LICENSE AGREEMENT:
LICENSE AGREEMENT:

You are licensed to use this program on a single CPU or workstation. If
you are running on a network, you are required to license a separate
copy for each workstation or a file server license for each file server.
If you are running on a multiuser operating system such as Concurrent
DOS, you are required to license a copy for each workstation. Everyone
who uses this menu, must license a copy unless several people share the
same workstation.

This software is licensed and not sold. The license begins when Computer
Tyme recieves payment in full. You may not transfer, sell, sublease or
rent this software without the written consent of Computer Tyme. You are
not allowed to distribute MarxMenu in runtime form with software you
developed unless it is in combination with a paid for copy of MarxMenu,
or you have made special arrangements in writing with Computer Tyme to
do so.

Use of this product constitutes your acceptance of the terms and
conditions of this license and of my copyright and your agreement to
abide by these terms and conditions.

WARRANTY:
WARRANTY:
WARRANTY:

The warranty is limited to the diskettes to be machine readable for a
period of 30 days after purchase. Although we try hard to write perfect
software that has no bugs, we do not guarantee that. We also do not
guarantee that this product is fit for every purpose and we are not
liable for any damages that might occur from use of this product. This
agreement is governed by the laws of the State of Missouri.



Computer Tyme MarxMenu Users Manual Page 2
_______________________________________________________________


ACKNOWLEDGMENTS:
ACKNOWLEDGMENTS:
ACKNOWLEDGMENTS:

I would like to thank the following people for making this product
possible:

Joe Smith and Kevin Moore for helping write this manual. My wife Vicki
for being good to me and helping with revisions and editing.

The Computer Tyme staff for being the best employees in the world.

Borland International for writing Turbo Pascal and keeping it bug free
and well supported.

TurboPower Software for their very powerful extensions to Turbo Pascal
and their well written, well supported product.

Semware for TEdit and QEdit, their full screen editors.

All users who actually paid for this product so that we may continue to
eat.

Those of you who have pointed out bugs and made suggestions to improve
our product.

TRADEMARKS
TRADEMARKS
TRADEMARKS

MarxMenu, DOS ToolBox, Directory Master, and The Network Survival Kit
are trademarks of Computer Tyme.

QEdit and TEdit are trademarks of SemWare.
Lotus is a registered trademark of Lotus Development.
Wordstar is a registered trademark of MicroPro International.
Smart Software is a trademark of Informix.
MS-DOS is a trademark of Microsoft.
Concurrent DOS and DR-DOS are trademarks of Digital Research.
Turbo Pascal is a trademark of Borland International.
OPRO and TPRO are trademarks of TurboPower Software
Netware and Novell are trademarks of Novell
DesqView and QEMM are trademarks of Quarterdeck
IBM is a trademark of International Business Machines

Created using Turbo Pascal
Copyright 1983-90 by Borland International

THE MARXMENU NAME
THE MARXMENU NAME
THE MARXMENU NAME

When I first wrote this program my friends referred to it as Marc's
Menu. That's where the name MarxMenu came from. It has nothing to do
with either Carl or Groucho Marx.



Computer Tyme MarxMenu Users Manual Page 3
_______________________________________________________________


TECHNICAL SUPPORT
TECHNICAL SUPPORT
TECHNICAL SUPPORT

Technical support for MarxMenu is provided several ways. The first is by
calling our voice line 1-417-866-1222. We would ask that you not call
the 800 number as that is for orders and ordering information only.

We have several support staff and will try to answer your questions as
quickly and efficiently as possible. We at Computer Tyme look at
technical support as an opportunity to improve our product.

We also have a 24 hour BBS system. This allows users with modems to
leave messages about support issues. There are several user uploaded
menus here and it serves as a forum for MarxMenu users to share ideas
and techniques.

Our BBS number is 1-417-866-1665. Supports 2400 baud but is 1200 baud
compatible. Use 8 bits, no parity, 1 stop bit (8N1). You will also need
to set your terminal emulation mode to ANSI or VT100.

On our BBS are additional sample menu files that other MarxMenu users
like yourself have uploaded. We encourage you to share your work with
others so that yet more MarxMenu users can benefit.

We are also available on Compuserve ID 76505,1120.

We also offer a Fast Update Service which includes regular upgrades sent
to you automatically as we come out with them. This doesn't mean every
version of MarxMenu, but every so often after making several
improvements and the product is at a stable point. The Fast Update
Service includes special access to our support BBS.

This service is for the very fierce MarxMenu user who has to have the
"Latest and Greatest" all the time.

OVERVIEW OF THE MARXMENU SYSTEM
OVERVIEW OF THE MARXMENU SYSTEM
OVERVIEW OF THE MARXMENU SYSTEM

MarxMenu is not just another fill-in-the-blank menu system. It is a menu
programming language and job control language. It gives you total
freedom to do whatever you want, but total freedom has a price. You will
need to know and understand how to use a text editor. This isn't
difficult if you are familiar with using a word processor. And you will
need to have a basic understanding of DOS and how batch files work.

With a text editor you can create a menu file which is a text file with
an MNU extension. Or, you can copy and then modify the text file
SAMPLE2.MNU which displays the menus you see when MarxMenu is executed.
This text file contains a set of instructions for MarxMenu to follow.
MarxMenu will then read your menu file and run the instructions.

A menu file might look as follows:



Computer Tyme MarxMenu Users Manual Page 4
_______________________________________________________________


DrawBox 31 5 18 4
UseArrows
Writeln ' W - WordStar'
Write ' L - Lotus'

OnKey 'W'
CD\WORDSTAR
WS

OnKey 'L'
CD\LOTUS
LOTUS

The above example is a fully working MarxMenu program. Just because
MarxMenu has 500 commands doesn't mean you have to use them all. The
reason there are so many commands is that people keep calling me up and
asking if I can add such and such. Most of the time I do. That's why the
manual gets behind sometimes.

The instructions must be from the vocabulary of words that MarxMenu
understands. These words make up the command list included in this
manual. They must be used precisely as the instructions in this manual
tell you to use them. This process is called programming.

I know that for many of you the word programming is a scary word. Put
your fears at ease, MarxMenu is one of the easiest programming languages
there is. It is a little harder than writing batch files and a lot
easier than Basic. It requires a working knowledge of DOS and an
understanding of writing batch files as explained in your DOS manual.

The point that I want to make is, do not let the fear of learning and
the fear of programming prevent you from learning to write your own
menus. If you have never touched a computer before and are sitting down
with your first PC, read the manuals first. Become familiar with the
MS-DOS operating system. Learn how to write batch files, make
subdirectories, copy files, format floppies, etc. If you don't
understand something, ask a friend. All of us had to learn sometime, and
there is no such thing as a stupid question.

After you have mastered some of the basic concepts of the operating
system, then learn either TEDIT or MarxEdit. These are text editors
included with your MarxMenu program. Use it to write your own batch
files. Then attempt to write your own menus by modifying the sample
menus (files with a MNU extension) which come with MarxMenu. Print these
menus and study them, referring to this manual for help on command
definitions. You do not have to completely understand them to start
making changes. Programming is a trial and error process.



Computer Tyme MarxMenu Users Manual Page 5
_______________________________________________________________


A computer, like a musical instrument, is only as good as the player.
The more you learn about it the more you'll find it can do. In fact, a
computer can help raise your effective IQ as you learn the disciplines
of logic and reason. As a hammer is a tool of the hand, enhancing your
physical strength, a computer is a tool of the mind, enhancing your
mental strength. You will learn that as you develop a relationship with
your computer, that you will be able to process information in ways you
never dreamed.

MarxMenu is an excellent learning tool. By the time you become
proficient with the menu language, you will have learned the fundamental
concepts behind the MS-DOS operating system. You will find yourself
going back and forth between this manual and the DOS manual that came
with your computer. When you master the language, you will have enough
computing skills to be a real resource in your office environment. In
this day and age, knowing how to "make the damn things work" is a key in
moving up the corporate ladder.

If you have sufficient excess income to afford a personal computer, or
are in a job that provides you with a workstation, you are smart enough
to learn this program. All it requires is that you take the time. You
can do it. It is worth your time, and you will make up the time spent in
the results you'll get. Good luck and enjoy.

WHAT MARXMENU DOES
WHAT MARXMENU DOES
WHAT MARXMENU DOES

So with hundreds of menus on the market, what makes this one so great.
Well, let me tell you about it. MarxMenu is a menu language rather than
a fill in the blank kind of menu. MarxMenu gives you total control of
your computer system.

It is also a job control language allowing you to program processes too
difficult to do with batch files. MarxMenu can be used to do anything
from overnight batch job processing to generating control scripts for
mainframes.

Because of it's simple syntax, MarxMenu makes an excellent teaching
language putting more programming power in the hands of the student
programmer than any other programming language.

As a menu, MarxMenu can be as simple or as complex as you want. If you
want simple, nothing is easier. If you want POWER, nothing is more
powerful. If you want to get really weird, MarxMenu can do really wierd.

So if you want the menu to remind you to go vote, MarxMenu knows when
the first Teusday after the first Monday in November on even years is.
If you are into Astrology, and you want certain menu items to appear
only if Mars is in the right place in the sky, MarxMenu can calculate
the orbit of Mars for you.



Computer Tyme MarxMenu Users Manual Page 6
_______________________________________________________________


MarxMenu can be used to program games, write running software demos and
online tutorial programs. It can be used to write testing programs. It
can be used to write custom software installation programs. It can be
used to assist other applications to make other software more network
friendly.

MarxMenu has a compiler for high speed execution. Even very large menus
come up in under 4 seconds on a 4.77mhz IBM XT on an ArcNet lan. The
compiler also provides security in that you can keep your source files
separate so no one can alter the menu files.

FOR THE POWER USER:
FOR THE POWER USER:
FOR THE POWER USER:

I originally wrote MarxMenu on a dare. I said that in one afternoon I
could write a better menu system than one of the most popular menu
systems. I met the challenge and then found that there is a lot of
demand for power in a menu system. Friends started asking for this and
that feature and this program has gone far beyond what I ever intended.

The demand for more features has outpaced my ability to keep up with the
documentation standards that I expect from other software packages that
I buy. Please bear with me. If you find any errors in the manual, or
bugs in the program, please let me know and I'll try to correct any
problems.

I also appreciate your suggestions for improvements. Many of the
features included are a result of requests you have made. Many of you
are using this program in ways I never dreamed.

The main design philosophy behind this product is POWER and Flexibility.
I am also committed to keeping the source code as readable as possible.
I am loyal to the concept of using NO RAM. None of MarxMenu stays
resident. Because of this I can claim that if you are having some kind
of problem, it's not the fault of MarxMenu being resident, because
MarxMenu is not resident. Also, using NO RAM allows loading of TSR's
(memory resident programs) from the menu.

For computer consultants, MarxMenu is an excellent way to make money.
You can provide your clients with professional looking menu systems
customized (by you) to fit their needs. You can provide complex menu
structures not possible with any other menu system. And, because
MarxMenu uses NO RAM, you don't have to worry about conflicts between
MarxMenu and any other software product.

Although MarxMenu is copyrighted, the program is not copy protected.
There is nothing to prevent you from making hot copies and giving them
away to all your clients. I would like to point out that when you give
away something you should be selling you lose respect from your clients
and attract those who expect you to work for free. You will make more
money if you play by the rules. My best and most profitable clients use
no hot software whatsoever. Think about it.



Computer Tyme MarxMenu Users Manual Page 7
_______________________________________________________________


INSTALLATION
INSTALLATION
INSTALLATION

You may wish to copy the MarxMenu system into it's own subdirectory
called MARX to keep the files better organized. However, this is not
necessary. Copy all the disks that come with MarxMenu into a directory
on your hard disk or network.

If you do put the menu system in a subdirectory, it must be path
accessible. That is, you must have a path statement in your autoexec.bat
file that includes the directory where the menu system resides. A
typical path statement might look like this:

PATH=C:\;C:\DOS;C:\MARX;

Copy all your Computer Tyme disks to the hard disk or network and type
MARXINST. When it gets done, you can run some of the sample menus by
typing MARX .

-------------------- V E R Y * I M P O R T A N T ----------------------

MarxMenu requires up to 100 bytes of free environment space. It won't
run properly without it. The way you get more environment space is to
add a SHELL command to your CONFIG.SYS file.

SHELL=COMMAND.COM /P /E:nnn

Where NNN is the number of bytes for the environment to reserve. Note
that if you are running DOS that is earlier than 3.3 then NNN is the
number of 16 byte blocks to allocate for the environment.

For DOS 3.3 or later:

SHELL=COMMAND.COM /P /E:400

For DOS earlier than 3.3:

SHELL=COMMAND.COM /P /E:25

If MarxMenu gives you an environment space error, this is where you go
to fix it.

INSTALLING THE NETWORK SURVIVAL KIT
INSTALLING THE NETWORK SURVIVAL KIT
INSTALLING THE NETWORK SURVIVAL KIT

The Network Survival Kit is installed by copying the distribution disk
into a directory on your server and typing INSTALL. It will unpack into
about 2.5 megs of programs and documentation. Be sure to print out the
DOC files on any programs you are interested in and print out the
MARXREAD.ME and MARXREAD.ME2 files.

Make sure you do not run the install from the floppy disk.



Computer Tyme MarxMenu Users Manual Page 8
_______________________________________________________________


THE MARX.BAT FILE
THE MARX.BAT FILE
THE MARX.BAT FILE

In order for MarxMenu to work, a MARX.BAT file must be created. This is
done by typing MARXINST. The first thing that MARXINST does is unpack
the compressed menu files and documentation files. Then it will bring up
the installation menu.

The MARX.BAT file looks like this:

@ECHO OFF
C:\MARX\MARXMENU.EXE %1
%MXCMD%
%0 %1

The first line of MARX.BAT turns the echo off. This may be changed to
ECHO ON for debugging purposes. PAUSE commands can be inserted to debug
a menu. This allows you to see what's going on.

The second line of MARX.BAT runs MARXMENU.EXE. The second parameter %1
is the name of the menu file to run. A third parameter can be added to
tell MarxMenu to use a specific directory for creating temporary batch
files. Otherwise MarxMenu will create temporary batch files in the same
directory as MARXMENU.EXE.

When the user selects a program to run, MarxMenu writes a temporary
batch file which contains within it the commands to run the program.
Then MarxMenu writes a command to the environment variable MXCMD to
execute the temporary batch file and exits.

What it writes depends on the version of DOS you are running. If you are
running DOS 3.3 or later, MXCMD is set to CALL . If you are
running an earlier version of DOS then MXCMD is set to COMMAND /C
.

Whatever command is written to MXCMD is executed in line 3. This usually
calls the temporary batch file that MarxMenu created. This executes your
program and returns to MARX.BAT.

Line four jumps back to the beginning of the batch file and starts all
over. %0 is MARX.BAT and %1 is the name of the menu you are running.

MARX.BAT
-------- +--MarxMenu Creates--+
+----> @ECHO OFF | |
| MARXMENU.EXE %1 |
| %MXCMD% >--+ +-> $MX00000.BAT
| +--> %0 %1 --+ | ------------
| | | +----------------------> CD\WORDSTAR
+-|------<-----+ WS --+
| |
+-------------------------------------------<-+



Computer Tyme MarxMenu Users Manual Page 9
_______________________________________________________________


Note: MarxMenu sets MXCMD = CALL $MX00000.BAT

You can also tell MarxMenu where to put it's temporary batch files by
setting an environment variable TEMP to point to a temporary file
directory.

Example: SET TEMP=F:\TMPFILES

This is compatible with the way DOS 5 and Windows uses temp files.

When you exit the menu system. MarxMenu sets MXCMD to MXSTOP. This jumps
to a batch file called MXSTOP which gets you out of MARX.BAT. MXSTOP.BAT
can be modified to control what happens when MarxMenu is exited.

The default MXSTOP.BAT file is as follows.

SET MXCMD=
SET KSV=
REM You can control menu exiting with this file!

Note that by adding your own commands to MXSTOP that you can control
what happens when you exit. You could loop right back to the menu if you
want. Or, you could force a controlled network logoff.

I strongly recommend upgrading to DOS 3.3 or later whenever it is
possible to do so.

The name of the temporary batch file is as follows:

$MX00000.BAT
||||
Shells--------+|++--------Network Station (Hex)
Task Number

The 5 zeros are used for single user versions of MarxMenu. On a network
they change as follows:

The last 2 zeros is the station number on the network. This is either
read directly from the shell, if you are using Novell, or from the
environment variable STATION if you are on another network. The third
zero is the task number if you are running DesqView, or from an
environment variable TASK if you are running some other multitasker.

The second zero is replaced by one less than the number of COMMAND.COM
shells you are running. This way if you run COMMAND.COM under MarxMenu
and then run MarxMenu again under that, it doesn't get lost when you
exit.

The first zero is for future expansion. In case something comes along
that I haven't thought of.



Computer Tyme MarxMenu Users Manual Page 10
_______________________________________________________________


If you want to do custom tricks, MarxMenu has an internal variable
called MxCmd. Setting this to your own command overrides the way
MarxMenu would normally use it.

But now you ask, does MarxMenu leave a trail of batch files that will
clutter up my drive or network? Not at all. MarxMenu keeps using the
same names over and over again. If a user crashed his system, it might
leave a batch file but it would be overwritten the next time he used the
menu. Not only that, all batch files can be kept in the same directory
so cleaning up is as simple as typing DEL $MX*.BAT!

By writing to the MxCmd variable you can run an EXE or COM file directly
without having to create another batch file.

Example:
OnKey 'M'
|MxCmd = 'RAMMAP'

This runs RamMap directly from the MARX.BAT file.

Another trick is to run another batch file without the CALL statement.
This creates a one way jump to another batch file.

Another debugging feature. You can change the first line of the MARX.BAT
file as follows:

@ECHO %MXECHO%

This allows you to turn the echo on for debugging purposes by typing:

SET MXECHO=ON

This way you don't have to change the MARX.BAT file to debug. If you use
this, make sure that MXECHO is set to either ON or OFF.

DROPTO.BAT
DROPTO.BAT
DROPTO.BAT

If you are going to run a shell like COMMAND.COM under MarxMenu it is
sometimes better to use DROPTO.BAT which is created during the install
process. DropTo allows you to jump from the temporary batch file that
MarxMenu creates to DropTo, which deletes the temporary batch file and
executes the rest of the command line.

Usage: DROPTO %0 COMMAND.COM

If you are using DropTo inside a MarxMenu, the %0 is automatically added
for you.

Example:
OnKey 'C'
DropTo COMMAND.COM



Computer Tyme MarxMenu Users Manual Page 11
_______________________________________________________________


DROPTO.BAT
----------
DEL %1
SET KSV=
SET MXCMD=
%2 %3 %4 %5 %6 %7 %8 %9

Here's how it works:

$MX00000.BAT <------deletes this file--------+
------------ |
DROPTO %0 COMMAND.COM ------------> DEL %1 >-+
SET KSV=
SET MXCMD=
%2 executes COMMAND.COM--> %2 %3 %4 %5 %6 %7 %8 %9

The advantages are that the temporary batch file is eliminated so if the
user never returns to the menu, it leaves no temporary file to clutter
up the drive. Also, DROPTO.BAT becomes the pending batch file that is
running rather than the temporary file.

SUPPORT FOR EARLY DOS VERSIONS
SUPPORT FOR EARLY DOS VERSIONS
SUPPORT FOR EARLY DOS VERSIONS

There are two main differences between DOS versions earlier than 3.3 and
versions 3.3 and above. One is the CALL command for batch files and the
other is the way you specify environment space when using COMMAND.COM.

I have enhanced the support for early DOS versions (3.0, 3.1, 3.2).
MarxMenu executes COMMAND /C /E:nn (batchfile) >NUL to have one batch
file call another. The first two lines of the batch files created are as
follows:

ECHO OFF
CTTY CON
....

This eliminates the ECHO OFF from being seen.

Also whenever possible, when MarxMenu loads up a copy of COMMAND.COM, it
adds the /E:nnn command to set the environment space to the same as that
of the Master Environment. In versions earlier then 3.3 it is translated
to paragraphs instead of bytes.

One thing to note in early versions of DOS. If you run a batch file
under COMMAND /C and your batch file has SET commands to set environment
variables, the changes you make will disappear as soon as you get back
to MARX.BAT. Why? Because you loaded another COMMAND.COM and the SET
commands set its environment. When this COMMAND.COM ends, it takes its
environment with it. Under DOS 3.3 or later, which uses CALL instead of
another shell, the SET commands live. (Yet another reason to upgrade).



Computer Tyme MarxMenu Users Manual Page 12
_______________________________________________________________


ABOUT ENVIRONMENT VARIABLES
ABOUT ENVIRONMENT VARIABLES
ABOUT ENVIRONMENT VARIABLES

I've been talking a lot about environment variables. Some of you out
there in novice land don't know what an environment variable is. Many
others don't know the intricate secrets handed down from the Great DOS
Masters who know all the intricate undocumented features of DOS.

Your DOS shell, COMMAND.COM owns an area of memory called the Master
Environment. It contains strings in the form Name=Value. Included among
those strings are your COMSPEC and your PATH. Your COMSPEC tells DOS and
other programs where to find COMMAND.COM. Your PATH tells DOS and other
programs what directories to search when loading programs. Another
common environment variable is your PROMPT. This controls what your DOS
prompt will look like.

Environment variables are commonly set using the SET command. This is
done by typing SET NAME=VALUE.

Example:
SET COLOR=BLUE

So what does this actually do? Actually nothing, unless you have a
program that reads the environment variables that is looking for one
called COLOR. This way, environment variables can be used to leave
messages to other programs and control how they behave.

Besides leaving messages, environment variables can be accessed by batch
files. If you use %NAME% in a batch file, DOS will substitute the VALUE
of the variable for the %NAME% expression. And this feature is important
to MarxMenu's operation.

MarxMenu uses an environment variable called MXCMD. In the MARX.BAT file
the third line is %MXCMD%. So MarxMenu controls MARX.BAT by writing
values to MXCMD.

In order to do this, there must be enough room in the environment for
the command to fit. That is why you need to make sure that you have a
SHELL command in your CONFIG.SYS to set space for MarxMenu to use.

Now so far I've only talked about the Master Environment. That's the one
that the first COMMAND.COM owns. Each program that is loaded, including
TSRs, gets a copy of the Master Environment in its own environment. This
is called the CURRENT Environment.

One interesting feature of the Current Environment is that it is smaller
than the Master Environment. DOS only creates enough space to hold a
copy of the space used in the Master Environment and a little more to
store the name of the program that is running.



Computer Tyme MarxMenu Users Manual Page 13
_______________________________________________________________


If one program executes another program, the environment of the parent
program is called the Parent Environment. You will probable never need
to deal with the Parent Environment but MarxMenu can access it in case
you do.

Another environment is the SHELL ENVIRONMENT. This is the one that THEY
never talk about. The one you'll never read about in any books. The one
you'll never learn about in any DOS classes. This is the one your
parents never mentioned.

The Shell Environment is normally the same as the Master Environment.
But, if you are running more that one level of COMMAND.COM, the Shell
Environment is the environment of the last COMMAND.COM in memory. This
environment is the most important environment to MarxMenu.

So why load up two or more COMMAND.COMs? There are several cases where
this could occur. One case is when you want to run COMMAND.COM as a
program under MarxMenu. This way you can type EXIT to get back to the
menu. If you do this and then run MarxMenu again, you have two levels of
COMMAND.COM. In this case, the first COMMAND.COM is the Master
Environment and the second COMMAND.COM is the Shell Environment.

Another place where more than one COMMAND.COM is used is if you are
running Microsoft Windows 3 or DesqView. Both of these programs are able
to run a DOS shell. When you do, this is a second level of COMMAND.COM.

What is important is that SET commands and %NAME% commands in batch
files deal only with the Shell Environment and not the Master
Environment.

DEALING WITH MULTIPLE DOS SHELLS
DEALING WITH MULTIPLE DOS SHELLS
DEALING WITH MULTIPLE DOS SHELLS

If you are running more than one level of COMMAND.COM (Shelling from
Windows, DesqView, Word Perfect Office) and having environment space
problems here's a trick. Before you load up your fancy shells, put this

in a batch file like your AUTOEXEC.BAT.

SET MXCMD=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

This variable will be trashed by MarxMenu thus freeing up the
environment space it occupied. This will not only allow MarxMenu to run
but may solve problems with other programs you are running that need
environment space as well.



Computer Tyme MarxMenu Users Manual Page 14
_______________________________________________________________


MARXMENU AND TSR CONTROL
MARXMENU AND TSR CONTROL
MARXMENU AND TSR CONTROL

MarxMenu along with the TSR utilities that come with MarxMenu, can load
and unload TSRs under menu control. This is handy when you want to run a
big application and need to free up some memory to do it. Since MarxMenu
is a 0k menu system, unloading TSRs is possible but it has it's tricks.

The problem you run into is that when one batch file calls another batch
file, the way MarxMenu normally runs, DOS creates a small batch file
control block in memory. This control block stays in memory after the
TSR is released creating a region of trapped memory. Although this
memory is freed, it isn't usable.

The way around it is to jump to the batch file that releases memory
instead of calling it. This is done by setting MXCMD to the name of the
batch file you want to run. The only problem is that when you jump to
the other batch file, it won't automatically return to MARX.BAT. You
must therefore end your batch file with a command bringing you back to
MARX.BAT.

MEMHOG.BAT
-----------
Rem UnLoad SideKick
RELEASE SK
CD\MEMHOG
MEMHOG
MARK SK
SK
MARX MAIN

In your MAIN menu:

OnKey 'H'
|MxCmd = MEMHOG

See the documentation file on the TSR utilities disk for more
information on how to use MARK and RELEASE.



Computer Tyme MarxMenu Users Manual Page 15
_______________________________________________________________


NETWORK USERS:
NETWORK USERS:
NETWORK USERS:

The main thing you have to worry about on a network is to make sure that
when MarxMenu creates a temporary batch file, that it is a different one
for each user on the network.

This is handled several ways. If you are on a Novell network, MarxMenu
uses your station number as part of the name for the temporary batch
file. If you are not using Novell, then you will need to set an
environment variable STATION for each workstation on your net. Each one
has to be a different number.

Example:
SET STATION=5

You must ensure that the user has enough access rights to create
temporary batch files in the directory selected for temporary batch
files. One solution is to create a batch file directory and give all the
users full access rights to it.

MarxMenu has been run on about every DOS based network that exists. If
the network runs at all it will generally run MarxMenu. Among the
networks that come to mind are Novell, Lantastic, Banyan, 3COM, Lan
Manager, IBM, DECNET, ConCurrent DOS, and SCO VPIX. MarxMenu is running
on networks as small as two users to as large as 20,000 users. In fact,
the bigger your network, the more you need MarxMenu.

NOVELL USERS:
NOVELL USERS:
NOVELL USERS:

Novell is the most popular network on the market. We have added many
enhancements for Novell networks to support things like logging in and
logging out, drive mapping, group support, software metering, and status
information.

Although Novell is a high quality solid product it has its own
"Personality" and many undocumented features otherwise known as bugs.
Most people who are having trouble with MarxMenu under Novell are really
having trouble with Novell. Quite frankly, we do more Novell support
than we do MarxMenu support.

Having said that, I own two Novell networks. One at the lab and one at
home and I love my networks. But, I have spent hundreds of hours
learning all the tricks. And to save you a phone call, and me a lot of
time, I've decided to share these tricks here in my manual.

Some of these tricks are from the Great Network Gurus themselves who are
so advanced that they no longer exist in physical form. These people
live in another dimension of total mental existence and can only be
reached my modem. Some of them hang out on Compuserve.



Computer Tyme MarxMenu Users Manual Page 16
_______________________________________________________________


I therefore strongly recommend that if you are a serious Novell user
that you join Compuserve and hang out in the Novell section. And just
because not everyone on Compuserve is a real person doesn't mean that
you should feel uncomfortable asking them any question about your
network that you need to ask.

THE NOVELL MENU TRANSLATOR
THE NOVELL MENU TRANSLATOR
THE NOVELL MENU TRANSLATOR

One nice bonus with Novell networks is that MarxMenu can translate your
Novell menus to MarxMenu. This saves you the time of having to recode
your system. What you do is type:

MARXMENU NOVTRANS

This translates your Novell MNU file to a MarxMenu MRX file. Your MNU
file is unchanged. MarxMenu creates a TMP file containing the source
code for the MRX file. Once you are satisfied with the MarxMenu file,
you just delete the MNU file and rename the TMP file to MNU and forget
that you ever had a Novell menu.

Once the menu is translated you run it by typing MARX instead of
MENU . MarxMenu can run Novell's menu better than Novell runs
their own.

LOGGING OUT UNDER MENU CONTROL
LOGGING OUT UNDER MENU CONTROL
LOGGING OUT UNDER MENU CONTROL

Logging out under menu control is one of the trickiest things to do. The
problem is that as soon as LOGOUT executes, you no longer have access to
the network. This means that if you are in a batch file, you are going
to get a "Missing Batch File" error, unless the batch file is in the
\LOGIN directory.

Another problem with logging out is making sure that your COMSPEC is
pointing to a COMMAND.COM that is either on the local drive or in the
\LOGIN directory. Otherwise you will get a "Cannot load COMMAND.COM"
error.

Another problem that you need to deal with is that your PATH command
needs to be changed so that it doesn't refer to mapped drives that are
no longer accessable.

What you need to do is create a batch file in the \LOGIN directory
called OFF.BAT.

Example: F:\LOGIN\OFF.BAT

CD\LOGIN
SET COMSPEC=C:\COMMAND.COM
LOGOUT
C:
PATH=C:\DOS



Computer Tyme MarxMenu Users Manual Page 17
_______________________________________________________________


Setting up an OFF.BAT file is compatible with MarxMenu's automatic
network logoff feature. This is where you can set the amount of time to
wait at a menu before it automatically logs you off the network.

Another way to logout under MarxMenu is to stuff the LOGOUT command into
the keyboard buffer and exit MarxMenu.

Example:
OnKey ESC
|StuffKBD 'LOGOUT' + CR
|ExitMenu

This is the cleanest way when possible.

Another logout trick is to use the LOGOFF utility from the Computer Tyme
Network Survival Kit. This program automatically fixes your PATH and
COMSPEC after the logoff occurs.

LOGGING IN WITH MARXMENU
LOGGING IN WITH MARXMENU
LOGGING IN WITH MARXMENU

If there is any one thing that's trickier than logging out of a Novell
network, is logging in. I have spent MANY hours struggling with Novell
trying to get it right and I have finally figured it out. Much of this
comes from the Novell gurus who hang out on Compuserve and know
everything there is to know about Novell.

The first thing you need to do is make up your mind that you are going
to do it right. The technique here might seem somewhat cumbersome, but
it works well and will keep you out of trouble.

MarxMenu has the ability to log you into a network, map your drives, and
set your environment strings without having to touch a Novell utility to
do so. MarxMenu can completely eliminate the need for Novell login
scripts. The advantage to using MarxMenu in the login is that you have
the power of 500 commands to work with instead of just 25 or so.



Computer Tyme MarxMenu Users Manual Page 18
_______________________________________________________________


THE CONFIG.SYS FILE
THE CONFIG.SYS FILE
THE CONFIG.SYS FILE

The place to start is the place where DOS start when DOS boots. You MUST
create a CONFIG.SYS file on your boot disk. The CONFIG.SYS tells DOS how
many files and buffers to create, what device drivers to load, and the
size of the Master Environment.

Unless you are using special drivers, BUFFERS=40 and FILES=40 is a good
place to start. STACKS 0,0 will gain you an extra 3k of ram. But the
most important command is the shell statement. A CONFIG.SYS file might
look like this:

SHELL=COMMAND.COM /P /E:400
BUFFERS=40
FILES=40
DEVICE=ANSI.SYS

This sets up enough environment space to allow MarxMenu and DOS SET
commands to work properly. You will also want to load any other device
drivers like QEMM386.SYS or 386MAX.SYS to take advantage of other
features of your computer. If you don't know about CONFIG.SYS files,
read the DOS manual.

Note: If you don't have a local hard disk and are booting from a floppy
drive, set BUFFERS=4. If you are booting from a diskless workstation,
set BUFFERS=1. BUFFERS are used for local drives only and have no effect
on network drives. You save 1k of memory for every 2 buffers you don't
use.

THE AUTOEXEC.BAT FILE
THE AUTOEXEC.BAT FILE
THE AUTOEXEC.BAT FILE

After the CONFIG.SYS is loaded the AUTOEXEC.BAT runs next. Here you load
up your TSRs and network drivers. There are some important tricks to be
used here as well.

First of all, never load your network shell from your AUTOEXEC.BAT file.
Always have it branch to another batch file called LOADNET to load the
network shell. Use the autoexec.bat only to load special TSRs and the
IPX. An autoexec.bat might look like this:

@Echo Off
Cls
IPX
SET NET=NET4.COM
SET COMSPEC=X:COMMAND.COM
LOADNET



Computer Tyme MarxMenu Users Manual Page 19
_______________________________________________________________


The two SET commands are very important. The first sets a variable
called NET to NET4.COM. This will be used later in LOADNET.BAT. By using
this variable, you can have users running many different versions of DOS
and still use the same LOADNET.BAT file. You could also use a command
SET NET=LOADHI EMSNET4.EXE to take advantage of advanced memory manager
software.

Another trick is to run BESTNET from the Network Survival Kit. BestNet
will automatically pick the best network shell and set the NET
environment variable for you. You would use the command BESTNET instead
of SET NET=NET4.COM in the AUTOEXEC.BAT file.

The SET COMSPEC=X:COMMAND.COM is important if you are booting off of
either a floppy drive or a diskless workstation. This assumes that X:
will eventually be mapped to a directory on the network that has a valid
COMMAND.COM in it.

It is important to set the comspec BEFORE loading your NET shell. This
prevents a problem where Netware wants to go back to the boot disk even
after you change the comspec. I don't know why this works but it does.
Trust Me. If you are going to use COMMAND.COM on drive C:, ignore this
paragraph.

Now we go to the LOADNET.BAT file.

@Echo Off
%NET%
SET NET=
F:
STARTUP

The big concept behind LOADNET is that this file is NEVER CHANGED. You
put in on all your workstations and in the LOGIN directory and it is
EXACTLY THE SAME for every computer in your network. Any changes to
individual computers are made in the AUTOEXEC.BAT file.

So why is this important. Because if you are running diskless
workstations what happens is that while you are booting you have a
mythical drive A:. As soon as your NET shell loads this drive
dissappears out from under you and you end up in F:\LOGIN. If you are
running LOADNET.BAT when this happens you drop out of A:LOADNET.BAT and
land in the middle of F:\LOADNET.BAT. And if your LOADNET.BAT is exactly
the same file as the LOADNET.BAT in the \LOGIN directory, you take off
running like the transition never occured.

Even if you are not running on diskless workstations now, you might go
to it someday. It also creates good programming habits and helps you
boot up cleanly.



Computer Tyme MarxMenu Users Manual Page 20
_______________________________________________________________


Lets see what LOADNET does. The first line is @ECHO OFF, that's easy.
The second line %NET% executes the network shell that you specified with
the SET NET=NET4 command. This actually loads the network shell. The
third line clears the NET variable freeing up space for other
environment variables. F: switches you to drive F if you aren't there
already. And finally STARTUP is the name of yet another batch file you
jump to.

The STARTUP.BAT file controls what happens AFTER LOADNET runs. This file
can be freely changed so that LOADNET.BAT can stay the same. This lets
you modify what happens AFTER the network shell is loaded.

If you are using Novell's login program STARTUP.BAT might look like
this:

@Echo Off
LOGIN

THE SHELL.CFG FILE
THE SHELL.CFG FILE
THE SHELL.CFG FILE

The SHELL.CFG file is used by Netware to configure the Netware shell.
You should read the manuals on this to see if you need any of the many
option available. I suggest you at least have the following commands in
your SHELL.CFG file.

cache buffers=4
show dots=on

The master network gurus tell me that cache buffers are just a waste of
memory and do not provide any better performance. Every 2 cache buffers
not used saves you 1k of memory. Show dots makes your network compatible
with more software utilities and should be set on unless you have some
other reason not to.

USING A MENU FILE TO LOG IN
USING A MENU FILE TO LOG IN
USING A MENU FILE TO LOG IN

If you are going to use MarxMenu to log in instead of Novell's
utilities, you will want to print out the sample file LOGIN.MNU on your
MarxMenu disk and study it. Your STARTUP.BAT file might look like this:

@Echo Off
SET BOOTUP=LOGIN
MarxMenu Login
%BOOTUP%

If MarxMenu works correctly, it will change the environment variable
%BOOTUP% to point to a file that it creates. If for some reason it fails
(you make a mistake in the login), it will execute Novell's login and
let you get in and fix it.



Computer Tyme MarxMenu Users Manual Page 21
_______________________________________________________________


One word of caution. After modifing this menu, always run MARXCOMP LOGIN
to compile it. Otherwise, if you boot up into it you won't have enough
access rights to recompile automatically.

NOVELL SEMAPHORES
NOVELL SEMAPHORES
NOVELL SEMAPHORES

For a detailed explanation of Novell Semaphores, read the Novell
manuals. What I've done is to export these functions to MarxMenu. I have
implemented them slightly different than Novell did and have hidden all
the nasties from you such as semaphore handles. All semaphores are
accessed by name only.

Here's a brief overview of semaphores. Semaphores are names of shared
resources that the server keeps track of. Semaphores have three
properties. They have a name, value and number of users. The name can be
anything up to 48 characters long. The value is a number from -128 to
127. If the value is less than 0, the resource the semaphore represents
is considered used up.

By opening a semaphore, you increase the number of users by one. By
closing it, you decrease the number by one. If a single user opens a
semaphore many times, it is only counted as one. When you log out, your
semaphores are closed. This is also true if you turn your computer off,
but it takes 15 minutes for the server to give up on you.

The first user to open a semaphore creates it. The last user to close a
semaphore deletes it. When a semaphore is created, a value can be
assigned. If a semaphore is opened that already exists, the initial
value is ignored.

When NovWaitOnSemaphore is called by any user, the value is decremented.
If the value is not below zero, NovWaitOnSemaphore returns true.
Otherwise it returns false and the value is unchanged. The amount of
time that NovWaitOnSemaphore will wait is controlled by the variable
NovSemaphoreTimeOut.

When NovSignalSemaphore is called by any user, the value is incremented.
This allows other users to call NovWaitOnSemaphore and get a True value.

NovSemaphoreUsers and NovSemaphoreValue are used to read the status of a
semaphore without changing it's value.

One of the major differences between how MarxMenu uses semaphores and
the way Novell uses them is that normally a semaphore dies when the
application finishes. This would normally prevent a 0k menu system from
being able to use them. MarxMenu uses an interesting trick where it
fools Netware into thinking that the semaphore belongs to another task.
This allows the semaphore to live.



Computer Tyme MarxMenu Users Manual Page 22
_______________________________________________________________


Semaphores can be tracked using FCONSOLE. Some versions of Netware have
a bug in FCONSOLE that reports an open count that is 256 times the real
count. Just divide by 256 for the right number.

Semaphores can be used for software metering. This allows MarxMenu to be
aware of what other users on the network are doing. Here are the basic
tools, what you do with them is only limited by your imagination.

RUNNING A MARXMENU
RUNNING A MARXMENU
RUNNING A MARXMENU

MarxMenus are run by typing MARX and the name of a menu file such as
SAMPLE.MNU. As discussed earlier, the menu file is a text file created
with a text editor such as TEDIT.

Usage: MARX

Example:
MARX SAMPLE

In the above example, if SAMPLE.MRX doesn't exist, or is older than
SAMPLE.MNU then MarxMenu will automatically load the complier,
MARXCOMP.EXE to create a new SAMPLE.MRX file.

In the never ending quest for more speed, MarxMenu is somewhat faster to
load if you include the MRX extension.

Example:
MARX SAMPLE2.MRX

By specifying the MRX extension, no test is made to compare the file
date with the source file. Thus if you have changed the MNU file, you
will still be running the old version. In order to force a recompile,
type MARXCOMP SAMPLE.

CUSTOMIZING MARXMENU SAMPLE FILES
CUSTOMIZING MARXMENU SAMPLE FILES
CUSTOMIZING MARXMENU SAMPLE FILES

Included in the MarxMenu package are menu files which you can easily
modify to execute your programs and perform other functions you desire.
Using TEdit, the text editor included in this package, you can modify
and customize these menu files.

Also included to demonstrate the power and versatility of the menu
system is a menu labeled NIM.MNU. This is a game written in the menu
system that demonstrates some of the logic functions and programmability
of the system. Use it for reference.



Computer Tyme MarxMenu Users Manual Page 23
_______________________________________________________________


Here's a simple example of a menu file:
===================================
ClearScreen
DrawBox 30 9 25 8
Writeln ' 1) Lotus'
Writeln ' 2) dBase'
Writeln ' 3) Wordstar'
Writeln
Write 'Select: '

OnKey '1'
cd\lotus
123

OnKey '2'
cd\db3
db3

OnKey '3'
cd\wordstar
ws

====================================

Notice in looking at the "OnKey" statements that all I have to do is
tell MarxMenu how to get to the program. Although, MarxMenu takes care
of reloading itself after exiting a selected program, its does not
return to its own subdirectory as many other menu programs do.

That means that if you execute a program in another subdirectory, when
you come back to the menu, you remain in that subdirectory. If you
normally run your applications with a batch file, consider having
MarxMenu change directories and execute the program for you. This will
eliminate debugging problems caused by the actions of your batch files.

MENU ANALYSIS
MENU ANALYSIS
MENU ANALYSIS

Let's start a simple analysis of the example menu file shown
above. The ClearScreen statement simply clears the screen to
give us a fresh workspace for the menu. DrawBox is the command to
draw a box on the screen to contain some menu text. The Writeln
command writes a line of text to the screen within the box, then
positions the cursor on the next line. The menu text shows the
available selection keys that the user has access to.



Computer Tyme MarxMenu Users Manual Page 24
_______________________________________________________________


ONKEY STATEMENTS
ONKEY STATEMENTS
ONKEY STATEMENTS

The OnKey statements control what is actually executed. OnKey
statements also allow you to execute hidden commands when you do
not want them to appear on the menu screen. One trick I use is to
have an OnKey statement define a key that runs TEDIT on my
personal menu file. I don't show this key on the menu to keep
others from poking around in the file. For additional security
a password can also be set up on this key.

Normally you enter a line of text as if you were creating a BAT
file to run your application. Like batch files, if one of your
commands is a batch file, all the statements after it will not
execute. To prevent this you can use the CALL command to call a
batch file in DOS 3.3 or later, or COMMAND /C in DOS 3.0, 3.1 and
3.2.

Normally, text displayed under an OnKey statement is the same
text as the batch file created by MarxMenu. There are some
exceptions. If a line starts with a "|" (vertical bar), the line
will be interpreted by MarxMenu instead of being written to a
batch file. This allows commands such as "PASSWORD" to be used.
String variables can be passed as part of a batch command if the
name of the string variable starts with a "%" symbol.

The spaces preceding the commands under the OnKey statement are
for clarity only. They are not necessary for MarxMenu to function
properly.

POPUP MENUS
POPUP MENUS
POPUP MENUS

If you want to create a popup menu within a menu you can do so by
using a "label". A label is a keyword preceded by a colon. To
call the popup menu, place the keyword on a line by itself
preceded by a carat (Shift 6). The label will precede the popup
menu definition.

For example if you have a popup menu to load Smart Software, you could
name the PopUpMenu Smart. To bring up the Smart PopUpMenu, define a key
in your main menu for Smart like this:

OnKey 'S'
^Smart

The Smart menu itself might look something like this:



Computer Tyme MarxMenu Users Manual Page 25
_______________________________________________________________


:Smart
BoxHeaderColor ForeColor BackColor
BoxBorderColor Yellow Green
BoxInsideColor LCyan Green
InverseColor Yellow Red
BoxHeader = ' Smart Menu '
DrawBox 45 16 20 6
UseArrows 2 2 16 3
ClearLine 205
Writeln
Writeln ' Data Base'
Writeln ' Spread Sheet'
Write ' Word Processor'

OnKey 'D'
SM D

OnKey 'S'
|BoxHeaderColor ForeColor BackColor
|BoxBorderColor Yellow Green
|BoxInsideColor White Green
|%1 = PickFile('C:\SMART\SPREAD\*.WS',4,5,17)
SM S -ALOAD %1

OnKey 'W'
|BoxHeaderColor ForeColor BackColor
|BoxBorderColor Yellow Green
|BoxInsideColor White Green
|%1 = PickFile('C:\SMART\WORD\*.DOC',4,5,17)
SM W -ALOAD %1

While developing the menu, program one of the keys to run your favorite
editor on the menu file that you are creating. This way, as soon as the
change is made, the results will show when you exit your editor. Since
MarxMenu allows versatility in creating the look of your menus, a little
trial and error will be required to make things look right.



Computer Tyme MarxMenu Users Manual Page 26
_______________________________________________________________


THE CONSOLE
THE CONSOLE
THE CONSOLE

+---| Console Functions |---+
| 1 - Blank Screen |
| 2 - Set Blank Message |
| 3 - Lock Keyboard |
| 4 - Set Blank Time |
+---------------------------+

The Console is a popup menu of built-in functions. To activate the
console, press the TAB key. A menu will pop-up in the upper left hand
corner of the screen. You can change the position of this popup menu
with the ConsolePos function.

The first command on the Console screen is Blank Screen. Enter 1 and the
screen will blank immediately. It will remain blanked until a key is
pressed. Enter 2 on the Console menu and you can change the message
displayed on the Blank Screen display.

Enter 3 and you will be prompted for a word to lock the keyboard. After
you enter the lock word the screen will blank and the keyboard will be
locked until the exact lock word is typed. Enter 4 to set the number of
minutes to wait before blanking the screen.

The lock word feature is handy for times when you must leave the
keyboard but don't want menu commands displayed for all to see. It also
effectively locks the keyboard so someone can't escape to DOS and test
the format command on your hard disk. We run this menu on a Novell
Network and don't want to let everyone have access to the Supervisors'
power at the touch of the escape key should we leave the keyboard.

REPOSITIONING THE TOP WINDOW
REPOSITIONING THE TOP WINDOW
REPOSITIONING THE TOP WINDOW

One nice feature you can use to get the windows right is to turn on the
scroll lock. This lets you move the top window around the screen using
the arrow keys so you can see how it looks. Then you can go into your
menu code and set it permanently.

Set Scroll Lock to "on". On most keyboards, a scroll lock LED will light
up. Now use the arrow keys to move the top window to any position on the
screen. Neat Huh?



Computer Tyme MarxMenu Users Manual Page 27
_______________________________________________________________


MOUSE SUPPORT
MOUSE SUPPORT
MOUSE SUPPORT

If you have a standard mouse driver, MarxMenu will detect it and use it
automatically. The left button on the mouse is the same as pressing
return. The right button on the mouse is the same as pressing escape.
Pressing both buttons on the mouse is the same as pressing the tab key.
As of now, I'm not yet using the center button on the mouse for
anything.

The sensitivity of the mouse can be controlled using the MouseHorizontal
and MouseVertical commands.

STARTING OFF THE EASY WAY
STARTING OFF THE EASY WAY
STARTING OFF THE EASY WAY

For those of you who want to just get a menu going and don't want
anything complicated we have included a menu called the LEVEL1 menu.
This menu is a fill in the blank type of menu that will get you going
quickly and easilly.

This menu requires no programming and explains itself. You run it by
typing the command:

MARX LEVEL1

The first thing it does is scan your drive to find the directories. Then
you just answer the questions and fill in the menu. This isn't as
powerful as programming your own menu, but if you want something quick
and dirty, this may be the answer for you.

ABOUT VARIABLES
ABOUT VARIABLES
ABOUT VARIABLES

One of the most unusual things about MarxMenu is its variables. MarxMenu
handles variables differently than any other programming language. For
the experienced programmer, this may require some adjustment since it's
like getting used to driving a Cadillac after driving a VW Beetle.

All variables in MarxMenu are like an empty box that can contain
anything. A variable can be a number, boolean, string, file, array, etc.
The type of variable is controlled internally and the user need not
declare variable types.

Variables are created with the VAR command:

Var X Y Z

If the word VAR is on a line by itself, the following lines, up to a
blank line, are considered variable names.



Computer Tyme MarxMenu Users Manual Page 28
_______________________________________________________________


Var
MyAge
YourAge
HisAge
HerAge

Variables are initialized to null values; 0 for Numbers, False for
Booleans, and '' for strings. Initial values can be set when the
variable is created.

Var
X = 6
MyName = 'Marc'
Programmer = True

Variables can change variable types. If you write a number to a string
variable, the variable changes to a number.

X = '234'
X = Value(X)

This is valid in MarxMenu. X now is a number and contains the value 234.

Number variables are 32-bit integers ranging between plus or minus
2,147,483,647.

Boolean variables are True or False.

String variables are limited to 255 characters.

In MarxMenu, string literals are delimited by either single or double
quotes.

"This can't be yogurt!"
'Lincoln said "Four score and seven years ago ..." '

Numbers beginning with a '$' indicate base 16 or hex numbers.

When choosing variable names, it is good programming practice to choose
long meaningful names. This allows yourself and others to be able to
read menus and follow the logic more easily.



Computer Tyme MarxMenu Users Manual Page 29
_______________________________________________________________


DATES
DATES
DATES

Dates in MarxMenu are stored as the number of seconds since Junuary 1st
1980. This gives MarxMenu a Date range of 68 years. By subtracting two
dates, you get the number of seconds between two peroids of time.

MarxMenu has several commands that convert text strings to dates. Here
are some examples of how MarxMenu sees text dates.

Examples:
'4-7-91' ;04-07-1991 00:00:00
'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
'12:35:23a' ;04-07-1991 00:35:23
'3:15' ;04-07-1991 03:15:00

If the string can't be converted, then BadDate is set to true.

REAL NUMBERS
REAL NUMBERS
REAL NUMBERS

So what's the difference between ordinary numbers and real numbers?
Ordinary numbers in MarxMenu are 32 bit integers. These are numbers
whose range is about plus or minus two billion. Integers are whole
numbers and do not include any fractions.

This is why MarxMenu has included REAL numbers (also known as Floating
Point numbers). Real numbers in MarxMenu use BCD (Binary Coded Decimal)
with 18 digits of accuracy. They have a range of 10 to the plus or minus
63rd power, which means up to 63 zeros either side of the decimal point.
This lets you work with very big and very small numbers. MarxMenu has
smart rounding algorithms so that 1.0 / 3 * 3 = 1.0 and not
0.999999999999999999 like in most languages.

Real numbers are specified by using a decimal point. Thus 5.0 specifies
a real number. Most normal MarxMenu functions still require the standard
32 bit integers. If you get the error: 'REAL found where INTEGER
expected.' You need to use an integer.

If an integer is passed where a real is expected, the integer is
automatically converted to a real. Thus:

6.0 * 3 = 18.0

The Value function returns real numbers if a decimal point is used in
the string. All the relevant math functions will work with reals as well
as comparison operators.

MarxMenu supports a variety of functions for real numbers. It has trig
functions, log functions, and exponential functions. So why do you need
real numbers in a menu program? I don't know. I had a library and
threw them in. I figure someone will need them someday.



Computer Tyme MarxMenu Users Manual Page 30
_______________________________________________________________


With real numbers you can do trigonometry calculations like those
discovered by the ancient Indian chief Pythagoras who discovered what is
now know as Pythagoras's triangle.

Now I know that a lot of you were taught in Math class that Pythagoras
was Greek. Well, it's just not so. Let me tell you the real story:

Pythagoras was an Indian chief that had three wives. Two of the wives
were twins and weighed 120 pounds each. And they sat next to Pythagoras
on a pair of twin deer hides.

But Pythagoras also had a third wife who was a large fat woman who sat
across from Pythagoras on a hypopotamus hide. This wife weighed 240
pounds.

What Pythagoras discovered was that the squaw on the hypopotamus was
equal to the sum of the squaws on the other two hides!

LOCAL VARIABLES
LOCAL VARIABLES
LOCAL VARIABLES

MarxMenu also supports local variables. Variables declared within
procedures become local variables. Local variables are just like global
variables in that you can use them as multidimensional arrays. When the
procedure finishes, all local variables are disposed.

If a local variable has the same name as a global variable, the local
variable will be used.

PASSING PARAMETERS TO PROCEDURES
PASSING PARAMETERS TO PROCEDURES
PASSING PARAMETERS TO PROCEDURES

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
exits 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:



Computer Tyme MarxMenu Users Manual Page 31
_______________________________________________________________


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 copy an array by assigning it equal to another array.

Example:

Array1 = Array2

This creates Array1 with a copy of all the elements of Array2. The
previous contents of Array1 are overwritten.



Computer Tyme MarxMenu Users Manual Page 32
_______________________________________________________________


ABOUT CONSTANTS
ABOUT CONSTANTS
ABOUT CONSTANTS

Constants are used to give values meaningful names. By using constants a
value can be assigned once and the constant name used throughout the
menu program. This way, if you change the value of the constant, all the
places where that constant is used automatically change.

This is good programming practice.

Examples:

Const States = 50 CPU = '80386 SX' WeekEnd = True

or

Const
States = 50
CPU = '80386 SX'
WeekEnd = True

Using the word STATES is just like using 50. Using CPU is just like
using '80386 SX'. But if throughout my menu I use CPU, and then I get a
new computer with a 80486, I can just change one line:

Const CPU = '80486'

And all the places I used CPU changes to '80486'. This is the correct
way to program.

ABOUT ARRAYS
ABOUT ARRAYS
ABOUT ARRAYS

MarxMenu supports multidimensional arrays up to 31 dimensions. Unlike
other programming languages, arrays need not be declared. MarxMenu
creates arrays "on the fly" and automatically takes care of the array
size and number of dimensions.

Another unusual feature of MarxMenu arrays is that they are an array of
MarxMenu variables. This means that elements of MarxMenu arrays need not
be of the same type. Element 1 can be a number, element 2 can be a
string and element 3 can be another array.

This type of variable management leads to the easy creation of very
powerful data structures as you will see.

Var X

X[1] = 'Element 1'
X[2] = 3
X[3] = True
X[4,6] = 9
X[4,7] = 'Ten'



Computer Tyme MarxMenu Users Manual Page 33
_______________________________________________________________


These are all valid statements. MarxMenu creates a two dimensional array
here. If we now execute the following statement:

X[4] = X[4,6] + X[2]

X[4] becomes equal to 12 but variables X[4,6] and X[4,7] are lost. This
is because we have changed an array into a number. MarxMenu
automatically handles the deallocation of memory used by this array and
its elements and returns the space the used to the memory pool.

ABOUT QUALIFIERS
ABOUT QUALIFIERS
ABOUT QUALIFIERS

Qualifiers are named indexes into arrays. They are used to make the
source menu file more readable and more organized.


Suppose we are creating a data structure to deal with places in the
United States. First we will need an array for States.

Var States

We want to store some facts about the states.

Qualifier
Population
Bird
Motto
County

State[3].Population = 10000000
State[3].Bird = 'Chicken'
State[3].Motto = 'Best politicians money can buy!'

Now states have counties and counties have county seats, sheriffs, and
cities.

Qualifer
Sheriff
Seat
City

State[3].County[7].Sheriff = 'Buck InBred'
State[3].County[7].Seat = 'Possum Trot'

Now counties have cities and cities have schools, mayors, churches, and
taxes.

Qualifier
Schools
Mayor
Churches
Taxes



Computer Tyme MarxMenu Users Manual Page 34
_______________________________________________________________


State[3].County[7].City[9].Schools = 8
State[3].County[7].City[9].Mayor = 'Virgil Collins'
State[3].County[7].City[9].Churches = 120
State[3].County[7].City[9].Taxes = '$100,000,000'

The above line is the same as:

State[3,4,7,3,9,4] = '$100,000,000'

As you can see with qualifiers, it is easy to create multidimensional
arrays in a way that is organized and readable.

In this example, the qualifier Population became equal to 1. Bird became
equal to 2. The variable references, State[3].Bird and State[3,2] are
the same. It's just that one is more readable than the other. Qualifiers
normally begin by assigning 1 to the first name and 2 to the second
etc. This can be modified.

Qualifier
Color = 7
Size
Shape

In this case Color becomes the number 7; Size becomes the number 8; and
Shape becomes the number 9.

COMMENTS IN MENU FILES
COMMENTS IN MENU FILES
COMMENTS IN MENU FILES

MarxMenu has three ways to add comments to a menu file. The first way is
with the Comment command.

Comment
========================
This is a comment block.
========================
EndComment

All lines up to EndComment are ignored.

The second way is with a ';'. All text to the right of the ';'
(semicolon) is ignored.

BlankTime = 20 ;this is where we set the blank time.

The third way is using {} or curly braces. Anything inside the curly
braces is ignored. Curly braces can be nested.

{All of {this} is a comment.}



Computer Tyme MarxMenu Users Manual Page 35
_______________________________________________________________


Comments are ignored by the compiler and cost you nothing in execution
speed. Comments can save you a lot of time if you have to come back
later and work on your menu, or if someone else has to work on it.
Therefore, I encourage you to use comments as much as possible.

THE MARXMENU COMPILER
THE MARXMENU COMPILER
THE MARXMENU COMPILER

MarxMenu reads your MNU files and creates MRX files. These MRX files are
a highly digested form of the MNU file that you created. MRX files are
the compiled files.

When you run MarxMenu, the interpreter MARXMENU.EXE looks for the menu
file with the MRX extension. If it doesn't find it, MARXMENU.EXE will
automatically load MARXCOMP.EXE and compile the menu. MARXMENU.EXE also
compares the file dates of the MNU and the MRX files. If the MNU file is
newer than the MRX file, the complier will be loaded.

MarxMenu will also force a compile if the MRX file was not complied by
the same version and release date of the MarxMenu you are using. MRX
files are not compatible from one version of MarxMenu to the next.

You can also force a compile from the command line by typing MARXCOMP
. If you are on a network and using MarxMenu to log you in, make
sure you run the complier if you change your login menu file.

Once your menus are written, you can remove the MNU file and
MARXCOMP.EXE from the system. This prevents anyone from modifying your
menus. The MRX files are scrambled for security. This prevents probing
eyes from reading strings in the MRX files.

COMPILER COMPATIBILITY
COMPILER COMPATIBILITY
COMPILER COMPATIBILITY

The MarxMenu compiler is fully compatible with earlier versions of
MarxMenu with a few exceptions. The new compiler does a lot more error
checking than earlier versions of MarxMenu and will catch errors that
you used to get away with. Other than that, the only difference you
should notice will be a speed increase.

Earlier versions of MarxMenu had separate names for variable types. The
names $VAR, BVAR, #VAR, and FILEVAR act the same as typing VAR.

Very early versions of MarxMenu had a different form of the USEARROWS
command that required 4 to 5 numbers after it. If you run into this
error, just get rid of the numbers after USEARROWS and it will work
fine.



Computer Tyme MarxMenu Users Manual Page 36
_______________________________________________________________


A WORD ABOUT DOS VERSIONS .....
A WORD ABOUT DOS VERSIONS .....
A WORD ABOUT DOS VERSIONS .....

Versions of DOS below 3.3 will cause MarxMenu to use 3.5k of ram where
3.3 DOS and above use no memory. 3.2 DOS is very buggy and should be
replaced. 3.1 DOS isn't too bad for bugs but if you're using the BACKUP
and RESTORE programs that came with it, you're in trouble. They don't
work on large files. You'll find that out if you try to restore one of
them.

MS-DOS 4.01 seems to be pretty clean provided you have the April-89
release or later. To determine if you do, check the file date on
COMMAND.COM. Earlier versions of DOS 4.01 have SERIOUS BUGS. If you are
running any DOS 4 earlier than April-89 you should upgrade immediately.

We are happy to announce that MarxMenu runs under DOS 5.0 with no
problems and requiring no modifications. We are in the process of adding
hooks to take advantage of new features of DOS 5. One feature
implemented is the Idle Loop call which allows MarxMenu to conserve CPU
power when it's not doing anything. This makes it work better under
DesqView and Windows.

DR-DOS or EZ-DOS are pretty good also. It is very compatible as long as
you don't get too strange with it. I recommend version 3.4 or later.
4DOS is also pretty good but sometimes some of the advanced features in
this product can cause it to behave differently than DOS. This requires
extra care when writing your menus.

MarxMenu should work correctly on 386 type multiuser operating systems
such as Digital Research's Concurrent DOS 386 or SCO VPIX DOS emulators.

MarxMenu will not run correctly under DesqView 2.26. It will run under
2.25 or 3.21. So if you are running 2.26, it needs to be upgraded.
MarxMenu contains several support functions for DesqView.

If you are running under some weird DOS and are having problems, try it
under "regular" DOS and see if it goes away. If it does, try to find out
what it is about your weird DOS that makes it not work right. I am
interested in being compatible with as many systems as I can. Let me
know if you are having problems. But also, try to get your wierd DOS
vendors to clean up their act.

A WORD ABOUT BUGS .....
A WORD ABOUT BUGS .....
A WORD ABOUT BUGS .....

Although I try to create perfect bug free software, every now and then
even I make a mistak. If you find one, let me know and I'll fix it.



Computer Tyme MarxMenu Users Manual Page 37
_______________________________________________________________


TIPS FROM THE MASTER
TIPS FROM THE MASTER
TIPS FROM THE MASTER

Since MarxMenu is a programing language, I want to talk about what
programing is and how it is accomplished. I want to dispel some myths
and fears relating to it and introduce you to techniques that will help
you write code neatly, quickly, and efficiently. From the outside,
programming looks like magic; but once you know a few of the tricks, its
really not too hard.

Many of us who were raised on 50s and 60s science fiction television
learned that it is the brainy types who deal with computers. It almost
gives you the impression that the computer is smart and you are dumb. As
you use the computer, it is evaluating you, and if it figures out that
its smarter than you, it can get your job and replace you.

COMPUTERS DO SIMPLE TASKS
COMPUTERS DO SIMPLE TASKS
COMPUTERS DO SIMPLE TASKS

A computer is a simple device. It does simple tasks. It just does them
very fast and accurately. Computers don't even know basic things like
how to write letters on the screen or how to read the keyboard. These
are programs that the computer runs. Someone had to program your
computer to do even the simplest of tasks.

As you learn to use MarxMenu start with the simple menus. The SAMPLE.MNU
is a very easy program. Study it and understand how it works. Make a
copy of it and change one selection to run one of your programs.

Once you have changed one selection, change several more. Now MarxMenu
is running your programs, and you have made it work. Then try something
new. Add more selections. Change the size and position of the box to fit
your needs.

Take the time to play with it. Try new commands. Build up your menu. Be
artistic. The more you work with it, the more you will learn.



Computer Tyme MarxMenu Users Manual Page 38
_______________________________________________________________


COMPLEX TASKS ARE MADE OF SIMPLE TASKS
COMPLEX TASKS ARE MADE OF SIMPLE TASKS
COMPLEX TASKS ARE MADE OF SIMPLE TASKS

As you learn more about MarxMenu, move on to SAMPLE2.MNU. Here we use
more of the power of the MarxMenu language. As you study this menu, you
will notice something. Even though it looks complex, it is really a
collection of simple tasks. Understand how the moving windows work.
Understand that the pop-up menus are just like the main menu. You will
see that it is really not a complex menu at all. It is a lot of simple
processes hooked together.

That is one of the main concepts behind programming. Complex tasks are
built out of simple tasks. As you learn the simple tasks, you will
quickly understand how to connect them to accomplish complex tasks.

When one sees a castle, one can't help but to be impressed. But castles
are made of stones. And you can't build castles until you understand how
stones work. Then you realize that a castle is just a bunch of stones
hooked together. Programming is just like that.

To successfully understand MarxMenu, start at the bottom and work your
way up. Each little trick you learn becomes another building block for
the next trick. What you start with becomes the foundation for the work
that you will eventually produce.

LEARNING GOOD PROGRAMMING HABITS
LEARNING GOOD PROGRAMMING HABITS
LEARNING GOOD PROGRAMMING HABITS

Programming has its pitfalls, here I hope to give you some tips that
will help you avoid common mistakes. This, I hope will give you a head
start on the road to MarxMenu being done right.

The first concept is patience. Rome wasn't built in a day. You may not
be able to write grand and glorious menus the first try. In fact, you
may have trouble getting the damn thing to work at all. As you have
probably already noticed, no program is perfect. Sometimes there are
errorrs in the manual. Sometimes it just doesn't work like you expected,
or does not work the same way as other programs that are familiar to
you.

But, once you complete the installation, give it some time and realize
that there is a lot of potential here. Approach all challenges with a
good attitude.



Computer Tyme MarxMenu Users Manual Page 39
_______________________________________________________________


USE LONG NAMES
USE LONG NAMES
USE LONG NAMES

I learned computers the hard way. Out on the streets. Hanging around
with other computer nerds in the late 70s who never went to college
either. I was known as a Bit Wit. My first real computer was an IMSAI
kit. Actually, it wasn't all IMSAI, it was a combination of several kits
where no two boards came from the same supplier. It was in an IMSAI box,
so I call it an IMSAI.

It was all supposed to work together the salesman told me the day before
they went out of business. And it all did after some redesigning. I was
tired of fixing CB radios for a living and decided that computers were
here to stay and that I was going to learn about them.

With that in mind, everything that went wrong became an opportunity for
growth. Not that I looked forward to things not working. I programmed
the thing from scratch, loading binary codes into memory from an array
of switches on the front panel.

The first program I wrote ran the EPROM burner, which was the only
storage device I had. After I saved this program on a chip, I used it to
load the second program onto the chip.

Eventually I wrote enough software to talk to the screen and keyboard.
Now I could type hex codes on the screen and save them to a chip.
Eventually I wrote a tape driver and could save stuff on tape. Later, I
traded for a North Star disk drive and had a disk system. One 90k
floppy. I thought I was in heaven.

I was intimately familiar with my computer. All my programs were in
object code with no documentation whatsoever. At that point, a friend of
mine, Rufus, turned me on to a language called FORTH.

Being an interesting language and very powerful, I typed in the whole
compiler in hex and adapted it to work on my system. Once I got Forth
up, I wrote a line editor in it. I then used the line editor to write a
screen editor. With the screen editor, I rewrote Forth in Forth. The
language compiled itself.

From working with Forth (which is as much a religion as a programming
language) I learned both good and bad habits. Forth is a write only
language and is almost impossible to read even with the best of
documentation. On the other hand, it is as close to the machine as you
can get in a high level language.



Computer Tyme MarxMenu Users Manual Page 40
_______________________________________________________________


After opening up a computer store in 1984, it became time to make the
jump from CP/M to the DOS world. Turbo Pascal offered an interesting
solution. They had both a CP/M and DOS compiler. This meant that
programs I wrote would run on both machines. The thing that struck me
about Pascal was that I could read it better than Forth, and I didn't
even know the language. Not only that, but I could follow the programs
that other people wrote and incorporate their code into my programs.

The more programs I wrote, the more I came to appreciate a language that
was reader friendly. I could manage my programs much easier without
having to remember so much. Other people could follow what I was doing
easier.

The important thing I learned was that readability is very important in
a program. The more complex the program, the more important readability
becomes.

One of the main design factors in the MarxMenu language is readability.
I could have used short names for my commands and it's not like I like
to type. I'm still on just two fingers here. Its just that descriptive
names are so much more meaningful when putting simple processes together
to create complex processes.

The point (finally) is, when creating variable names, or procedure
names, use long meaningful names. It may take more typing, but it takes
a lot less thinking and remembering later on. Consider the following
example in choosing variable names.

Var KlingonsDestroyedInBattle
Var K

In the above example, it is obvious which one tells you more about what
information is stored in the variable.

USE COMMENTS LIBERALLY
USE COMMENTS LIBERALLY
USE COMMENTS LIBERALLY

Even though MarxMenu is easy to read, it still should be commented. The
examples that come with this disk do not have as many comments as they
should. Don't do as I do, do as I say. I'm lazy and a bad example.

Comments are not compiled in your MRX files and cost you nothing at
execution time. In order to make commenting easy, I have provided three
separate comment commands. Learn these commands first.

Every menu should include a title comment. This should include the name
and phone number of the person who wrote it. If you have a problem with
a menu and you send it to me, I expect a title comment. That way I can
call you about it.

Comment
====================================================================



Computer Tyme MarxMenu Users Manual Page 41
_______________________________________________________________


This comment was created by Marc Perkel 1-417-866-1222

Last Updated: 01-28-90

This form of comment block is better than using ';' because not using ;
allows you to turn your word wrap feature on and do some professional
looking editing in the comment block. This kind of comment block should
be at the beginning of each and every menu you create.

The top and bottom bars are for looks only and are not necessary to the
comment. I strongly encourage you to use bars and do things for looks
in source code. Looks are very important and you should put as much
care into your comments as you do in writing a business letter.

If you learn MarxMenu well, your source code may be part of your next
job interview as you move up the corporate ladder. So you want it to
look good.

By the way, if you upload your menus to my bulleten board, I expect a
comment block at the top of your menu with your phone number so I can
get back to you.

====================================================================
EndComment

INDENT YOUR CODE
INDENT YOUR CODE
INDENT YOUR CODE

As programs get more complex, it gets harder to match the IFs with the
ELSEs and the ENDIFs. This is where indenting comes in. It creates a
logical grouping of statements and you can easily see what goes with
what.

Procedure IfDemo
IF


ELSE


WHILE


ENDWHILE

ENDIF

EndProc



Computer Tyme MarxMenu Users Manual Page 42
_______________________________________________________________


You can easily see how this helps you follow what you are writing. Now
here's a new trick. If you are using an IF, and plan to use an ELSE and
an ENDIF, on the line under the IF statement, type in your ELSE and
ENDIF lines. Then go back and insert your statements in between these
lines. This will help you avoid forgetting the ENDIF or getting mixed up
as to which IF matches which ELSE.

A similar trick can be done with parens and brackets. When typing a left
paren, type the matching right paren with it. Then fill in the code you
want to put inside the parens or brackets.

FOR DUPLICATE TASKS, USE PROCEDURES
FOR DUPLICATE TASKS, USE PROCEDURES
FOR DUPLICATE TASKS, USE PROCEDURES

As menus become longer and more complex, many times you are duplicating
a process that you already have written. Although it is easy to copy a
block of code, it is better to create a procedure.

With procedures, the process is put in one place and is given a name.
Preferably a long meaningful name. Once this procedure is defined and
named, it can be used as if it were part of the MarxMenu language. This
makes menus smaller and easier to read. It is also a way for you to
combine small processes into large processes. Procedures can be built
using other procedures.

Once you have a process figured out and working in a procedure, the
whole process becomes a black box with a name that you can use
elsewhere. The whole process is reduced down to a name that just works!

Another advantage of procedures is that if circumstances change and the
procedure needs to be modified, you only make a change one place in your
menus, and everything that uses that procedure is automatically changed.
This makes menu maintenance easier.

DON'T PROGRAM YOURSELF INTO A CORNER
DON'T PROGRAM YOURSELF INTO A CORNER
DON'T PROGRAM YOURSELF INTO A CORNER

Using the above techniques will allow you to write very complex menu
systems. Failing to use these techniques can limit what you can
accomplish. There is a term called "programming yourself into a corner"
which refers to a program that is so poorly written, that it can't be
modified to accommodate changes and improvements.

The height of your programming abilities depends on the foundation on
which they are built. You must avoid rushing to the top without first
creating a firm foundation on which to build. Good technique is the
foundation for good programming. You will have to learn it eventually,
it is more efficient to do it right than it is to do it over.

Adopting good programming habits reminds me of my favorite light bulb
joke:

Q. How many psychologists does it take to change a light bulb?



Computer Tyme MarxMenu Users Manual Page 43
_______________________________________________________________


A. Only one, but the light bulb has to want to change.

A WORD TO WRITERS AND REVIEWERS
A WORD TO WRITERS AND REVIEWERS
A WORD TO WRITERS AND REVIEWERS

MarxMenu is a multi-level product fulfilling the needs of a large
variety of computer users. It is difficult to compare this product on a
feature to feature basis. This is because MarxMenu has about 10 times as
many features as any other menu system. These features allow this
product to target a very broad variety of computer users, from the
novice user, who will only use the LEVEL1 menu, to large companies with
hundreds of file servers controlled through the MarxMenu language.

One common mistake that writers make when evaluating MarxMenu, is in the
area of ease of use. If you are looking for ease of use, stick with the
simple menus and the self-configuring menus such as the LEVEL1 example.
By looking at it this way, MarxMenu will be as easy to use as any other
menus system out there and can be compared for similar features. Even
though MarxMenu supports complex commands, it is not necessary to use
them in simple menus.

If you are doing a comparative review, please let me know on what basis
you are making comparisons. This way I can assist you by providing you
accurate information in the area of your interest. If you are looking
for simple, I can show you simple; if you are looking for power, I can
show you power.

On the other hand, if you are reviewing power tools and network
utilities, you might want to look at the Network Survival Kit and not
just MarxMenu. So if you have a copy of only this program, give me a
call and I'll get you the latest and greatest.

In addition to our software, we also have color prints and color slides
available as well as product literature and sample reviews. These are
available to make your job easier and help you make those deadlines.

MarxMenu tends to be best reviewed as a long article rather than a short
one. It is very good if you have a lot of space to fill. With a long
article, you can get really in depth with what MarxMenu is able to do.

Any publication which reviews any of my products gets a site license to
that product whether I like the review or not. Our position is that if
you are using MarxMenu yourself, you will get to know it better.

So far, as of the date I write this, no writer has written an article
about MarxMenu that I feel covered what this product is really capable
of doing. Consider this a challenge.

Any questions you have about any of my products, feel free to call. The
main thing I ask is that you get the product name, price, our address,
and our phone number right.



Computer Tyme MarxMenu Users Manual Page 44
_______________________________________________________________


USING MARXHELP
USING MARXHELP
USING MARXHELP

MarxHelp is a TSR pop-up help program for MarxMenu. It acts as an online
reference guide to all of the MarxMenu commands. MarxHelp only takes 8k
of ram and is very useful while writing your MarxMenu applications.

To load MarxHelp type MARXHELP at the command line. Then if you want to
pop-up an index press Shift-F3. The Shift-F2 key will repeat your last
help topic and Shift-F1 will look up the word your cursor is on.

To get more help on MarxMenu type MarxHelp /?. If you need to unload
MarxHelp from memory, type MarxHelp /U.

MarxHelp comes with the Computer Tyme Network Survival Kit. It can also
be downloaded from our support BBS. It does not come bundled with the
single user version.

PRINTING THE EXAMPLE FILES
PRINTING THE EXAMPLE FILES
PRINTING THE EXAMPLE FILES

MarxMenu comes with several example programs from simple to complex. The
first thing to do is print the sample menus and study them. Start with
the easy ones. You may never need to use any of the more complex ones,
but if you do, a large variety of advanced techniques are demonstrated.

By studying the sample menus, and comparing them to this manual, it
should be fairly easy to become productive writing your own menus.

SECURITY ISSUES
SECURITY ISSUES
SECURITY ISSUES

Different users have different security need that range from none to
extreme. If you are in the nine category, then you can skip this
chapter. But if you need all the security you can get, then read on.

First of all, DOS is not a secure operating system. There are various
third party programs out there but what I'm going to cover here is how
to make DOS secure as possible working with what you get with DOS.

The first thing to do is add the command BREAK=OFF to your CONFIG.SYS
file. This prevents programs from breaking out of batch files. Avoid
using commands that are internal DOS commands like DIR from inside a
menu or inside batch files. Use the D.EXE program instead.

Use the LockWord option in the screen blanker so that if a menu is left
unattended, it will not be accessable to just anyone walking up to a
machine. The LockWord command requires the user type a password to
release the screen blanker. If you are on a Novell network, you can use
the UseNovPassword command. This forces the user to type their Novell
password to unblank the screen.



Computer Tyme MarxMenu Users Manual Page 45
_______________________________________________________________


If a menu choice access sensitive materials, then put a password on it.
Also, make sure the SUPERVISOR user has a password. There are many times
I've walked up to a server and logged in as supervisor and got right in.
Make sure that intruder detection is set on. If you don't know what
intruder detection is, read the Novell manuals.

You can also use the LogoffTime command to log users off the network
after a given amount of inactivity. This also helps kick people off so
that you can upgrade MarxMenu from time to time. (MARXMENU.EXE can't be
copied over on a network unless all users are out of the menu.)

If you have applications that allow you to shell to DOS, you can prevent
them from getting to DOS by changing your COMSPEC to point to something
other than COMMAND.COM. You could also rename COMMAND.COM in case a
program is looking for this file by name.

Another defense is to lock the door to the computer room at night and
teach employees security policies and make sure they use them.

If you are on a network, buy diskless workstations. People can't copy
files on or off a network that doesn't have a disk drive. It helps keep
viruses off your server and lets the network administrators control what
is and isn't on the network.

MARXMENU COMMANDS
MARXMENU COMMANDS
MARXMENU COMMANDS

MarxMenu contains a rich set of commands. They are listed here
alphabetically and by command category. You don't have to learn them all
so don't let the size of the list scare you.

In the following command list, words contained within ( ) are command
parameters that must be included after the menu command. If the
parameter is not required, it will be contained in [ ]. The numeric
range for the parameter is 1 - 80 decimal, and for the
parameter the range is 1 - 25, 43, or 50 decimal depending on how many
lines your monitor displays.



Computer Tyme MarxMenu Users Manual Page 46
_______________________________________________________________


| (Vertical Bar)
| (Vertical Bar)
| (Vertical Bar)
Forces MarxMenu interpretation under an OnKey Command. If not for the |
(Vertical Bar), the command under an OnKey would be written to a batch
file. The | is only used under OnKey commands.

Example:
OnKey 'S'
|password 'hello' 3 4
ECHO Type EXIT to return to menu
COMMAND.COM

OnKey 'X'
|if UpperCase(ReadEnv('USERNAME')) = 'SUPERVISOR'
SYSCON
|else
| SecurityBreach('You do not have access to this function!')
|endIf

Category: Misc

( : Operator
( : Operator
( : Operator
Starts logical interpreter grouping.

Used to force evalution of an expression.

Example:
2 * 3 + 2 evaluates to 8
2 * ( 3 + 2 ) evaluates to 10

Category: Misc

) : Operator
) : Operator
) : Operator
Ends logical interpreter grouping.

See Also: (

Category: Misc

* : Operator
* : Operator
* : Operator
Multiplies two numbers.

Category: Math, Float



Computer Tyme MarxMenu Users Manual Page 47
_______________________________________________________________


+ : Operator
+ : Operator
+ : Operator
Adds two numbers or two strings.

Example:
"Hello" + " " + "World" = "Hello World"
2 + 2 = 4

Category: Math, String, Float

- : Operator
- : Operator
- : Operator
Subtracts two numbers.

Category: Math, Float

/ : Operator
/ : Operator
/ : Operator
Divides two numbers.

Category: Math, Float

< : Operator
< : Operator
< : Operator
Less Than - Compares two numbers or strings.

Category: Math, String, Float

<= : Operator
<= : Operator
<= : Operator
Less Than or Equal - Compares two numbers or strings.

Category: Math, String, Float

<> : Operator
<> : Operator
<> : Operator
Not Equal - Compares two numbers or strings.

Category: Math, String, Float

= : Operator
= : Operator
= : Operator
Equal - Compares two numbers or strings.

Category: Math, String, Float

> : Operator
> : Operator
> : Operator
Greater Than - Compares two numbers or strings.

Category: Math, String, Float

>= : Operator
>= : Operator
>= : Operator
Greater Than or Equal - Compares two numbers or strings.

Category: Math, String, Float



Computer Tyme MarxMenu Users Manual Page 48
_______________________________________________________________


%MenuFileName : String
%MenuFileName : String
%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:

Example:
OnKey 'E'
EDIT %MenuFileName

Category: String

Abs : Number
Abs : Number
Abs : Number
Returns the absolute value of a number. The absolute value is the value
of the number without the sign.

Example:
Abs(-6) returns 6

Category: Math, Float

Alias
Alias
Alias
Alias =
This is a compiler level text substitution command. When is
defined as whenever you use its the same to the compiler
as if were typed there.

Example:
Alias TwoPlusThree = "(2 + 3)"
.
.
.
2 * TwoPlusThree = 10
.
Writeln TwoPlusThree

Writeln TwoPlusThree is the same as Writeln (2 + 3)

Category: Misc



Computer Tyme MarxMenu Users Manual Page 49
_______________________________________________________________


AllowAbort (On/Off)
AllowAbort (On/Off)
AllowAbort (On/Off)
MarxMenu was written to allow processes to be aborted and in a very
smooth way eliminating the need for the user to deal with complicated
error logic. In some cases this has gotten the the way of specific
control when the user presses the escape key or other error occurs.

If AllowAbort is set to off, MarxMenu will continue on to the next
command. You can then test LastKey to see if the escape key was pressed.
If the user presses escape a nul string is returned.

See Also: AllowEsc

Category: Misc

AllowEsc (On/Off)
AllowEsc (On/Off)
AllowEsc (On/Off)
Several MarxMenu commands such as PickOne, PickMany and PickFile allow
you to press escape to abort. If you turn AllowEsc off then the escape
key is ignored. This forces the user to make a choice.

See Also: AllowAbort

Category: Misc

And : Operator
And : Operator
And : Operator
Returns logical And if operators are boolean; or bitwise And if
operators are numeric.

Category: Math, Boolean

AppendArray (Array,Value)
AppendArray (Array,Value)
AppendArray (Array,Value)
AppendArray appends Value to the end of an array. The number of elements
is increased by one. It is not used to append two arrays "end to end".

Example:
var X
X[1] = 'TEST1'
AppendArray(X,'TEST2')

Loop NumberOfElements X
Writeln X[LoopIndex]
EndLoop

This Prints:
TEST1
TEST2

Category: Array



Computer Tyme MarxMenu Users Manual Page 50
_______________________________________________________________


ApplicationMemory : Number
ApplicationMemory : Number
ApplicationMemory : Number
Returns the number of bytes of memory available to an application when
MarxMenu exits out to the MARX.BAT file. This is the actual amount of
ram available to your application.

See Also: FreeMemory

Category: Memory

Apr : Number
Apr : Number
Apr : Number
April, returns the number 4.

Category: Time

ArcTan (Radians) : Real
ArcTan (Radians) : Real
ArcTan (Radians) : Real
Returns the ArcTangent of a real.

Category: Math, Float

Aug : Number
Aug : Number
Aug : Number
August, returns the number 8.

Category: Time

BadDate : Boolean
BadDate : Boolean
BadDate : Boolean
Set to true if you try to convert a string to a date and the date is
invalid.

See Also: TimeOf

Category: Time

Bat (string)
Bat (string)
Bat (string)
Used to write a line to the batch file the same way OnKey does. All the
same rules apply. The batch file is created when the menu exits.
MarxMenu exits with ErrorLevel 0 unless some other value has been
specified using the ExitCode command.

Example:
OnKey 'D'
|BAT "command /c dir a:"
|ExitMenu

See Also: OnKey

Category: Execution



Computer Tyme MarxMenu Users Manual Page 51
_______________________________________________________________


BatFileName : String
BatFileName : String
BatFileName : String
Returns the name of the batch file that MarxMenu would create if
MarxMenu were to create a batch file automatically.

Category: String

BigShadow
BigShadow
BigShadow
Selects big shadow type. This is the default shadow.

See Also: SmallShadow, ShadowPosition, ShadowColor

Category: Display

Black : Number
Black : Number
Black : Number
Returns the number 0.

Category: Color

Blanked : Boolean
Blanked : Boolean
Blanked : Boolean
Returns true if the screen blanker has kicked it. This lets you alter
your idel program based on if the screen blanker is active.

Category: Display

BlankMessage (string)
BlankMessage (string)
BlankMessage (string)
When the screen blanks out, this one line message is displayed. If
BlankMessage is not set, the date and time will be displayed.

See Also: ConsolePos

Category: String

BlankTime (minutes)
BlankTime (minutes)
BlankTime (minutes)
Sets the number of minutes before the screen blanks out to prevent
screen burn. Since this is not a resident program, screen blanking is
only active while the menu system is active. Setting BlankTime to 0
prevents screen blanking.

Example:
Set ConsolePos

Category: Display



Computer Tyme MarxMenu Users Manual Page 52
_______________________________________________________________


Blink : Boolean
Blink : Boolean
Blink : Boolean
Blink is a boolean variable that when set to true allows you to specify
colors that will blink. To make a color that blinks, set the background
color to a bright color. A bright color is a color from 8 to 15.

Normally, when Blink is off, MarxMenu strips the high bit of the colors.
When Blink is on, high bit stripping is disabled.

Example:
Blink
TextColor Green LRed

Because the background color is light red, the text will blink.

Warning: Blinking characters can cause headaches and eye strain. I
resisted adding this feature for a long time because I personally hate
excessive blinking characters on the screen. I now recognize that
blinking can be very effective when used correctly. Please use blinking
sparingly.

Category: Color

BlockBox
BlockBox
BlockBox
Selects block type box for menu borders.

See Also: SingleLineBox, DoubleLineBox, CustomBox, NoBoxBorder

Category: Display

Blue : Number
Blue : Number
Blue : Number
Returns the number 1.

Category: Color

BoxBorderColor (forecolor,backcolor)
BoxBorderColor (forecolor,backcolor)
BoxBorderColor (forecolor,backcolor)
Sets colors for box border.

Category: Color



Computer Tyme MarxMenu Users Manual Page 53
_______________________________________________________________


BoxHeader (string)
BoxHeader (string)
BoxHeader (string)
Sets the center header message for the next box displayed. This command
is used before the DrawBox command.

Example:
BoxHeader ' Main Choices '
DrawBox (25,6,30,9)

See Also: BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight

Category: Display

BoxHeaderColor (forecolor,backcolor)
BoxHeaderColor (forecolor,backcolor)
BoxHeaderColor (forecolor,backcolor)
Sets colors for the box headers and box footers.

Category: Color

BoxHeaderLeft (string)
BoxHeaderLeft (string)
BoxHeaderLeft (string)
Sets the left header message for the next box displayed. This command is
used before the DrawBox command.

Example:
BoxHeaderLeft ' Main Choices '
DrawBox (25,6,30,9)

See Also: BoxHeader, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight

Category: Display

BoxHeaderRight (string)
BoxHeaderRight (string)
BoxHeaderRight (string)
Sets the right header message for the next box displayed. This command
is used before the DrawBox command.

Example:
BoxHeaderRight ' Main Choices '
DrawBox (25,6,30,9)

See Also: BoxHeader, BoxHeaderLeft
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight

Category: Display



Computer Tyme MarxMenu Users Manual Page 54
_______________________________________________________________


BoxFooter (string)
BoxFooter (string)
BoxFooter (string)
Sets the center footer message for the next box displayed. This command
is used before the DrawBox command.

Example:
BoxFooter ' Main Choices '
DrawBox (25,6,30,9)

See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooterLeft, BoxFooterRight

Category: Display

BoxFooterLeft (string)
BoxFooterLeft (string)
BoxFooterLeft (string)
Sets the left footer message for the next box displayed. This command is
used before the DrawBox command.

Example:
BoxFooterLeft ' Main Choices '
DrawBox (25,6,30,9)

See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterRight

Category: Display

BoxFooterRight (string)
BoxFooterRight (string)
BoxFooterRight (string)
Sets the right footer message for the next box displayed. This command
is used before the DrawBox command.

Example:
BoxFooterRight ' Main Choices '
DrawBox (25,6,30,9)

See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft

Category: Display

BoxInsideColor (forecolor,backcolor)
BoxInsideColor (forecolor,backcolor)
BoxInsideColor (forecolor,backcolor)
Sets colors for box interior.

Category: Color



Computer Tyme MarxMenu Users Manual Page 55
_______________________________________________________________


BrightBackground (On/Off)
BrightBackground (On/Off)
BrightBackground (On/Off)
This command switches between bright background modes and blink modes.

I made a most amazing discovery. I found out that there was a way to
convert the blink bit to do high intensity background instead. This
doubles the number of colors that MarxMenu can produce.

This command affects the video controller directly. Thus, it may not
work on all computers especially if you are running something weird.

Once this is set in MarxMenu it stays set. So if you run another program
that has blink in it, it will use 16 backgroung colors instead. The
solution is to set BrightBackground Off right before you run a program
that requires blinking.

Example:
OnKey 'X'
|BrightBackground Off
PROCOMM

Category: Display

Brown : Number
Brown : Number
Brown : Number
Returns the number 7.

Category: Color

BW40 : Number
BW40 : Number
BW40 : Number
Returns the number 0. Relates to the DOS Mode BW40 command.

Category: Video

BW80 : Number
BW80 : Number
BW80 : Number
Returns the number 2. Relates to the DOS Mode BW80 command.

Category: Video

CapsColor (forecolor,backcolor)
CapsColor (forecolor,backcolor)
CapsColor (forecolor,backcolor)
Setting CapsColor allows capital letters and numbers to be a different
color than the rest of the text. This is used with the UseArrows command
to show which character is the one that selects the options in the
window. CapsColor is reset after any TextColor command, so be sure to
use CapsColor AFTER TextColor commands.

For this option the numbers 0 - 9 and some punctuation characters are
considered capitals.

See Also: DrawBox

Category: Color



Computer Tyme MarxMenu Users Manual Page 56
_______________________________________________________________


CapsLock : Boolean
CapsLock : Boolean
CapsLock : Boolean
Returns true if Caps Lock is on. This command can also set the Caps Lock
on and off.

Example:
if CapsLock then Write 'CapsLock is On'

CapsLock On ;Turns CapsLock On
CapsLock Off ;Turns CapsLock Off

CapsLock (by itself) turns CapsLock On.

See Also: ScrollLock, NumLock

Category: System

CGA : Number
CGA : Number
CGA : Number
CGA Returns the number 2. This is used with DisplayType to test for the
type of video card you are running.

Example:
if DisplayType = CGA then .....

See Also: DisplayType

Category: Display

Chain (MenuName)
Chain (MenuName)
Chain (MenuName)
This command will load a new menu. Unlike Jump, MarxMenu stays in
memory. The screen is not cleared. If the new menu has exactly the same
global variables, the contents of all global variables is retained.
Chain allows for a very quick transfer from one menu to another.

Example:
Chain ('USER') ;Chains to USER.MNU

Category: Execution

Char (number) : String
Char (number) : String
Char (number) : String
Converts a number into a one character string.

Example:
Write (Char(65)) ;This will display 'A'

Category: String



Computer Tyme MarxMenu Users Manual Page 57
_______________________________________________________________


ChDir (string)
ChDir (string)
ChDir (string)
Changes directories. The variable FileResult can be tested to see if it
was successful. ChDir can also be used to change drives.

Example:
ChDir( 'C:\HOME\MARXMENU' )
ChDir( 'B:' ) ; Will make drive B: the current drive

Category: File

CleanFileName (string) : String
CleanFileName (string) : String
CleanFileName (string) : String
Returns the full path name or directory name of a string. It also
removes occurrences of a '\\' in the string. Thus the command: String =
CleanFileName('a:\' + '\main.mnu') sets String to 'A:\MAIN.MNU'.
CleanFileName also removes extra ending '\' and capitalizes the path.

Category: String

ClearLine [char]
ClearLine [char]
ClearLine [char]
Clears the current line in the current window. The optional parameter is
for the decimal number of the IBM graphics character. If [char] is
present, the line will be filled with the character.

Examples:
ClearLine ;Clears screen with blanks
ClearLine 205 ;Clears screen with char 205

Category: Display, Ansi

ClearScreen [char]
ClearScreen [char]
ClearScreen [char]
Clears the screen. The optional parameter is the decimal number
equivalent for an IBM graphics character. If [char] is present, the
screen will be filled with [char].

Examples:
ClearScreen ;Clears screen with blanks
ClearScreen 177 ;Clears screen with char 177

Category: Display, Ansi



Computer Tyme MarxMenu Users Manual Page 58
_______________________________________________________________


ClearScreenFirst (on/off)
ClearScreenFirst (on/off)
ClearScreenFirst (on/off)
Used in conjunction with Execute. If on, will clear the screen before
running the program.

Example:
OnKey 'D'
|ClearScreenFirst On
|Execute 'C:\DM.COM'

The default is ON.

Category: Execution

ClearScreenOnExit (on/off)
ClearScreenOnExit (on/off)
ClearScreenOnExit (on/off)
Controls whether or not the screen is cleared on menu exit. Default on.

Category: Display

ClockColor (forecolor,backcolor)
ClockColor (forecolor,backcolor)
ClockColor (forecolor,backcolor)
Sets colors for the on screen clock.

Category: Color

ClockMode
ClockMode
ClockMode
ClockMode is a variable whose bits control the format of the on screen
clock when it is used.

ClockMode Bits:
---------------
0 24 hour mode
1 AmPm On
2 Show Seconds
3 UpperCase
4 3 char month
5 3 char Day of Week
6 Show Day of Week
7 Dash = 0 Slash = 1 MM-DD-YY or MM/DD/YY
8 Long Date

Bit 0 on sets hours display to 24 hour mode.
Bit 1 turns on the Am/Pm display.
Bit 2 on controls if time is shown as HH:MM:SS or just HH:MM.
Bit 3 shows date in only upper case.
Bit 4 on shows month in 3 characters.
Bit 5 shows Day of week as 3 characters.
Bit 6 controls if Day of week is displayed.
Bit 7 controls if date is shown as MM-DD-YY or MM/DD/YY.
Bit 8 shows date in text. (October 3, 1990).

The default ClockMode is 326.

Category: Display



Computer Tyme MarxMenu Users Manual Page 59
_______________________________________________________________


ClockPos (column,row)
ClockPos (column,row)
ClockPos (column,row)
Puts a clock on the screen at location (column,row). The command
ClockPos 0 0 turns the clock off.

Category: Display

ClosePrinter
ClosePrinter
ClosePrinter
In MarxMenu the printer is just another text file. Closing the printer
is not required for ordinary printing. If you are changing printers you
need to run ClosePrinter before changing the printer name. The printer
is automatically opened by MarxMenu any time you print anything.

If you are running Windows or DesqView, closing the printer allows other
programs to access the printer. So if you are running under any
multitasking shell, be sure to close the printer when you are done with
it.

If you are using a network like Novell, ClosePrinter will end the print
job and send it to the print queue. This avoids the need to wait for
print capture timouts to take effect.

Closing the printer is good programming practice and will help you stay
out of trouble. It's like what your mother taught you. "When you're done
with something, put it away."

See Also: OpenPrinter, PrinterName

Category: Printer

ClusterSize : Number
ClusterSize : Number
ClusterSize : Number
Returns cluster size in bytes.

Example:
Writeln (ClusterSize 'C')

ClusterSize only looks at the first character of the string for the
drive letter.

Category: System

CmdLine : String
CmdLine : String
CmdLine : String
System string variable that returns the rest of the command line after
the menu name.

Category: String

CO40 : Number
CO40 : Number
CO40 : Number
Returns the number 1. Relates to the DOS Mode CO40 command.

Category: Video



Computer Tyme MarxMenu Users Manual Page 60
_______________________________________________________________


CO80 : Number
CO80 : Number
CO80 : Number
Returns the number 3. Relates to the DOS Mode CO80 command.

Category: Video

ColorScreen : Boolean
ColorScreen : Boolean
ColorScreen : Boolean
Returns true if screen is a color screen. Note: Running MODE BW80 will
cause ColorScreen to return false.

Example:
If ColorScreen
;Color
TextColor( White, Blue )
Else
;Monochrome
TextColor( White, Black )
EndIf

Category: Video

Comment
Comment
Comment
Starts a Comment Block. All text is ignored until EndComment is
encountered.

Example:
Comment
=======================================

Everything between Comment and EndComment is ignored.

=======================================
EndComment

See Also: EndComment

Category: Misc

Console (On/Off)
Console (On/Off)
Console (On/Off)
The command Console Off will disable access to the console.

Category: Display

ConsoleBorderColor (Color,Color)
ConsoleBorderColor (Color,Color)
ConsoleBorderColor (Color,Color)
Sets the color of the console border.

Example:
See Also: ConsolePos

Category: Color



Computer Tyme MarxMenu Users Manual Page 61
_______________________________________________________________


ConsoleHeaderColor (Color,Color)
ConsoleHeaderColor (Color,Color)
ConsoleHeaderColor (Color,Color)
Sets the color of the console header.

See Also: ConsolePos

Category: Color

ConsoleInsideColor (Color,Color)
ConsoleInsideColor (Color,Color)
ConsoleInsideColor (Color,Color)
Sets the color of the console inside.

See Also: ConsolePos

Category: Color

ConsolePos (column,row)
ConsolePos (column,row)
ConsolePos (column,row)
Sets the coordinates of the pop-up console menu.

Example:
ConsoleBorderColor( White,Blue )
ConsoleHeaderColor( Yellow,Blue )
ConsoleInsideColor( Yellow,Blue )
ConsolePos( 5,5 ) ; Column 5, Row 5

Category: Display

Const
Const
Const
Creates a constant.

See Also: Var, Shared, Qualifier

Category Variable

Cos (Radians) : Real
Cos (Radians) : Real
Cos (Radians) : Real
Returns the CoSine of a real.

Category: Math, Float

CurrentEnvironment
CurrentEnvironment
CurrentEnvironment
CurrentEnvironment selects the current environment for use with
environment access commands.

See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: ParentEnvironment MasterEnvironment

Category: Environment



Computer Tyme MarxMenu Users Manual Page 62
_______________________________________________________________


CurrentWindow : Number
CurrentWindow : Number
CurrentWindow : Number
Returns the number of the current window. All windows are given a unique
number.

See Also: SetTopWindow

Category: Display

Cursor (On/Off)
Cursor (On/Off)
Cursor (On/Off)
MarxMenu automatically turns the cursor on for certain kinds of input.
Using Cursor Off prevents MarxMenu from turning the cursor on. Cursor On
reverses this and allows MarxMenu to turn the cursor on when needed.

Category: Display

CustomBox (String)
CustomBox (String)
CustomBox (String)
Selects a Box border using an 8 character string to define the sides and
the corners.

Example:
CustomBox ('12345678') ;This will help you figure out what
;position matches which side.

See Also: SingleLineBox, DoubleLineBox, BlockBox, NoBoxBorder

Category: Display

Cyan : Number
Cyan : Number
Cyan : Number
Returns the number 3.

Category: Color

DateString : String
DateString : String
DateString : String
Returns the current date in MM-DD-YY format.

Category: Time, String

Day : Number
Day : Number
Day : Number
Returns the day of the month.

Category: Time

DayOf (Date) : Number
DayOf (Date) : Number
DayOf (Date) : Number
Returns the day of a date. If Date is passed as a string it is
converted automatically.

See Also: TimeOf, BadDate

Category: Time



Computer Tyme MarxMenu Users Manual Page 63
_______________________________________________________________


DayOfWeek : Number
DayOfWeek : Number
DayOfWeek : Number
Returns the day of the week.

0=SUNDAY
1=MONDAY
2=TUESDAY
3=WEDNESDAY
4=THURSDAY
5=FRIDAY
6=SATURDAY

Category: Time

DayOfWeekOf (Date) : Number
DayOfWeekOf (Date) : Number
DayOfWeekOf (Date) : Number
Returns the DayOfWeek of a date. If Date is passed as a string it is
converted automatically.

See Also: TimeOf, BadDate

Category: Time

Dec : Number
Dec : Number
Dec : Number
December, Returns the number 12.

Category: Time

Delete (string,pos,count)
Delete (string,pos,count)
Delete (string,pos,count)
Deletes characters from string starting at pos for count.

Example:
String = 'ABCDEFGH'
Delete(String,2,3)

This leaves a String containing 'ABFGH'

If count exceeds the length of the string, the string is truncated at
pos.

Another use of Delete is to delete elements of an array.

Delete (Array,Position,Count)
This works exactly like the delete command for strings. It delete
elements of an array beginning at Position for Count elements. The
NumberOfElements is adjusted accordingly.

Example:
MyArray[1] = "ONE"
MyArray[2] = "TWO"
MyArray[3] = "THREE"
MyArray[4] = "FOUR"
Delete( MyArray,2,2 )



Computer Tyme MarxMenu Users Manual Page 64
_______________________________________________________________


;MyArray now contains..
MyArray[1] = "ONE"
MyArray[2] = "FOUR"

Category: String, Array

DelFile (Name)
DelFile (Name)
DelFile (Name)
Deletes a file by name. FileResult returns a 0 if the file existed and
the delete was successful.

Example:
DelFile( 'C:\NOTES\READ.ME' )
If FileResult = 0
Writeln('C:\NOTES\READ.ME was succesfully deleted!')
Else
Writeln('C:\NOTES\READ.ME was un-succesfully deleted!')
EndIf

Category: File

DGrey : Number
DGrey : Number
DGrey : Number
Returns the number 8.

Category: Color

DisplayType : Number
DisplayType : Number
DisplayType : Number
Returns the current video card type.

0 = HercMono
1 = CGA
2 = MCGA
3 = EGA
4 = VGA
5 = PGC

MarxMenu also understands the above constant names. For example, if you
want to test for a CGA card:

if DisplayType = CGA then ....

Category: Display



Computer Tyme MarxMenu Users Manual Page 65
_______________________________________________________________


Dispose (Variable)
Dispose (Variable)
Dispose (Variable)
This command reclaims memory used by a string variable, file variable,
or an array. If you are doing a lot of data manipulation, you might want
to reclaim memory space used by arrays you are done with. The disposed
variable becomes an untyped variable.

Example:
Loop( 20 )
MyArray[LoopIndex] = LoopIndex

;Check to See Also: if number is odd or even
If (MyArray[LoopIndex] Mod 2) = 0
Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
Else
Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
EndIf
EndLoop

;We're finished with the array so reclaim its memory space.
Dispose(MyArray)

Category: Memory, Array

DosVersion : Number
DosVersion : Number
DosVersion : Number
Returns the major DOS version number.

See Also: DosVersionString, MinorDosVersion

Category: System

DosVersionString : String
DosVersionString : String
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: #.##

Example
Writeln DosVersionString ;prints 4.01

See Also: DosVersion, MinorDosVersion

Category: System, String

DosWindow (on/off)
DosWindow (on/off)
DosWindow (on/off)
When you set DosWindow on, MarxMenu will not drop out of the menu system
when you use the Execute command. It will give you a display of the DOS
screen within the current window. The program you execute must be a
well-behaved program like DIR or COPY or some of the other DOS commands
that talk to the screen through standard file handles.

Category: Execution



Computer Tyme MarxMenu Users Manual Page 66
_______________________________________________________________


DoubleLineBox
DoubleLineBox
DoubleLineBox
Selects double line box.

See Also: SingleLineBox, BlockBox, CustomBox, NoBoxBorder

Category: Display

DrawBox (column,row,width,height)
DrawBox (column,row,width,height)
DrawBox (column,row,width,height)
Draws a box on the screen. The (column) and (row) are the upper left
corner, (width) and (height) is the box size.

Example:
Explode On
Shadow On
DoubleLineBox
BoxHeaderColor( Yellow,Red )
BoxBorderColor( White, Red )
BoxInsideColor( Yellow,Red )
InverseColor( Black, Gray )
CapsColor( Black, Red )
BoxHeader = ' << Main Menu >> '
DrawBox( 30,10,40,8 )

DrawBox also creates a logical layer for several display variables.
These variable include TextColor, InverseColor, CapsColor. It is
important to use these color control commands AFTER the DrawBox command
in order to properly restore the colors of the previous DrawBox.

If you call up a box and when it finishes it messes up the colors of the
previous box, you probably used color control commands BEFORE the
DrawBox instead of AFTER.

Category: Display

Drives : Number
Drives : Number
Drives : Number
Returns the number of drives. This includes drive names that can be
substituted. Most of the time the answer is 5. This relates to your
LastDrive = command in your CONFIG.SYS file.

Category: System

DvAppNumber : Number
DvAppNumber : Number
DvAppNumber : Number
Returns the DesqView application number or window number.

Category: DesqView

DvFrame (Handle,On/Off)
DvFrame (Handle,On/Off)
DvFrame (Handle,On/Off)
Turns the DesqView border frame on or off.

Category: DesqView



Computer Tyme MarxMenu Users Manual Page 67
_______________________________________________________________


DvFreeze (Handle)
DvFreeze (Handle)
DvFreeze (Handle)
Freezes a program. The program stops executing.

See Also: DvUnFreeze, DvPifExecute, DvLastHandle

Category: DesqView

DvHide (Handle)
DvHide (Handle)
DvHide (Handle)
Hides all output from program making it invisible. The program still
continues to run.

See Also: DvUnHide

Category: DesqView

DvKillTask (Handle)
DvKillTask (Handle)
DvKillTask (Handle)
Kills a program running under DesqView. The handle is the one returned
be DvPifExecute in DvLastHandle.

See Also: DvPifExecute

Category: DesqView

DvLastHandle : Number
DvLastHandle : Number
DvLastHandle : Number
Returns a number that is associated with a program running under
DesqView. This number is used to control other programs running under
DesqView. It is set by DvPifExecute.

See Also: DvPifExecute

Category: DesqView

DvLoaded : Boolean
DvLoaded : Boolean
DvLoaded : Boolean
Returns true if DesqView is loaded.

Category: DesqView

DvMoveWindow (Handle,X,Y)
DvMoveWindow (Handle,X,Y)
DvMoveWindow (Handle,X,Y)
Moves DesqView window upper left corner to position X,Y.

Category: DesqView

DvMyHandle : Number
DvMyHandle : Number
DvMyHandle : Number
Returns the DesqView handle of the current process.

See Also: DvLastHandle

Category: DesqView



Computer Tyme MarxMenu Users Manual Page 68
_______________________________________________________________


DvPifExecute (Pif File)
DvPifExecute (Pif File)
DvPifExecute (Pif File)
Executes another program under DesqView in another window. MarxMenu
stays resident in its original window. The window executes according to
the contents of the DesqView PIF file. The PIF file can be specified by
using the full name. If you leave of the extension, MarxMenu assumes the
extension DVP. If you pass a two character name, like the two characters
in the DesqView menus, then MarxMenu will add -PIF.DVP to the name. If
the PIF file is on the path, MarxMenu will find it.

Warning! DesqView must be loaded to run this command.

Example:
DvPifExecute 'BD'
DvPifExecute 'BD-PIF' ;These all execute Big DOS
DVPifExecute 'BD-PIF.DVP'

The task handle is loaded into a variable named DvLastHandle. When the
program starts, it becomes the current top program.

See Also: DvLoaded, DvLastHandle

Category: DesqView

DvResizeWindow (Handle,Width,Height)
DvResizeWindow (Handle,Width,Height)
DvResizeWindow (Handle,Width,Height)
Changes the size of a DesqView window.

Category: DesqView

DvSetBottom (Handle)
DvSetBottom (Handle)
DvSetBottom (Handle)
Sets the program associated with the handle to the bottom of the task
stack.

See Also: DvSetTop

Category: DesqView

DvSetTop (Handle)
DvSetTop (Handle)
DvSetTop (Handle)
Sets the program associated with the handle to be the top running task.
Using DvMyHandle allows MarxMenu to regain control after starting
another task.

Example:
DvSetTop (DvMyHandle)

See Also: DvSetBottom, DvLastHandle

Category: DesqView



Computer Tyme MarxMenu Users Manual Page 69
_______________________________________________________________


DvUnFreeze (Handle)
DvUnFreeze (Handle)
DvUnFreeze (Handle)
UnFreezes a program. The program starts executing again.

See Also: DvFreeze, DvPifExecute, DvLastHandle

Category: DesqView

DvUnHide (Handle)
DvUnHide (Handle)
DvUnHide (Handle)
Reverses the effect of DvHide making program output visable again.

See Also: DvHide

Category: DesqView

EGA : Number
EGA : Number
EGA : Number
EGA Returns the number 2. This is used with DisplayType to test for the
type of video card you are running.

Example:
if DisplayType = EGA then .....

See Also: DisplayType


Category: Display

Else
Else
Else
Starts lines executed if a condition is not true.

See Also: If Then Endif

Category: Conditional

EndComment
EndComment
EndComment
Ends a comment block.

See Also: Comment

Category: Misc

EndIf
EndIf
EndIf
Ends an if statement.

See Also: If Else Then

Category: Conditional



Computer Tyme MarxMenu Users Manual Page 70
_______________________________________________________________


EndLoop
EndLoop
EndLoop
Ends a loop statement.

See Also: Loop LoopIndex LoopLimit

Category: Conditional

EndOfFile (FileVar) : Boolean
EndOfFile (FileVar) : Boolean
EndOfFile (FileVar) : Boolean
Returns True if you are at the end of the file.

Example:
Var In

FileAssign (In,'C:\NOTES\READ.ME')
FileOpen (In)
While not EndOfFile (In)
Writeln (FileReadLn (In))
EndWhile
FileClose (In)


Category: File

EndProc
EndProc
EndProc
Ends a Procedure.

See Also: Procedure Return

Category: Misc

EndWhile
EndWhile
EndWhile
Ends a While statement.

See Also: While

Category: Conditional

EnvFree : Number
EnvFree : Number
EnvFree : Number
Returns the free space in the selected environment.

Category: Environment

EnvSize : Number
EnvSize : Number
EnvSize : Number
Returns the size of the selected environment.

Example:
if EnvSize < 20
Writeln ('Your envrionment size is less than 20 bytes!!')
endif

Category: Environment



Computer Tyme MarxMenu Users Manual Page 71
_______________________________________________________________


EraseTopWindow
EraseTopWindow
EraseTopWindow
Erases the last window created with DrawBox.

See Also: EraseWindow

Category: Display

EraseWindow (Number)
EraseWindow (Number)
EraseWindow (Number)
Erases a window by number. This allows you to erase a window that is not
the top window.

See Also: CurrentWindow, SetTopWindow, EraseTopWindow

Category: Display

Execute (command string)
Execute (command string)
Execute (command string)
This allows you to execute a program without dropping out of MarxMenu.
MarxMenu remains resident in memory and takes up approximately 50k. No
batch file will be created by MarxMenu.

This is handy if you have a small program you want to run from the menu
but don't want to allow for the time required by MarxMenu to create and
run a batch file. You can also execute some programs in a MarxMenu
window (See Also: DosWindow). You can also execute a program and examine
the return code.

This command can be placed in a progression of menu commands without any
special handling. Under an OnKey statement, you will need to enclose the
command between a begin and end statement.

Example:
OnKey 'D'
|UseCommand Off
|Execute 'C:\DM.COM' ;Note the COM extension is required here.

Note: If UseCommand is True or On, MarxMenu will load COMMAND.COM to
execute your command. If UseCommand is False, MarxMenu will execute your
file directly without COMMAND.COM. Using COMMAND.COM will execute
slightly slower, use 3.5k more ram, and allow you to use command lines
just like you would from the DOS prompt.

If you set UseCommand to off, you will have to include the COM or EXE
extension in the name. If you don't include the extension, MarxMenu will
automatically override UseCommand and load the command processor.

COMMAND.COM is required when running internal DOS commands like COPY or
DIR. It is also required to run batch files.

When UseCommand is off, MarxMenu will search the PATH for the executable
file if it isn't in the current directory.



Computer Tyme MarxMenu Users Manual Page 72
_______________________________________________________________


Not using COMMAND.COM allows you to use the ReturnCode variable to get
the ERRORLEVEL from the subprogram. If COMMAND.COM is loaded, the
ERRORLEVEL of the subprogram is lost.

The ClearScreenFirst (On/Off) controls whether MarxMenu will clear the
screen before you execute.

The PauseAfterExecute (On/Off) allows you to have a pause like the Pause
command in batch files. That way you can read the screen before it
restores the MarxMenu screen. MarxMenu will display "Press any key to
return to MarxMenu."

Category: Execution

ExistDir (directory) : Boolean
ExistDir (directory) : Boolean
ExistDir (directory) : Boolean
Used to test whether or not a DIRECTORY exists.

See Also: UseCommand, DosWindow, PauseAfterExecute, ClearScreenFirst

Category: File

ExistFile : Boolean
ExistFile : Boolean
ExistFile : Boolean
Used to test whether or not a FILE exists.

Category: File

ExistOnPath (string) : String
ExistOnPath (string) : String
ExistOnPath (string) : String
Used to search the existing paths for the command to be executed by
Execute or other function. The program variable must include the full
filename.

Example:
OnKey 'D'
|Execute(ExistOnPath('DM.COM'))

If the file is not found, a null string is returned.

Category: File

ExitCode
ExitCode
ExitCode
This can be set so MarxMenu will return an ErrorLevel that can be used
in a batch file.

Example:
ExitCode = 100

When MarxMenu exits it will use ErrorLevel 100.

Category: Execution



Computer Tyme MarxMenu Users Manual Page 73
_______________________________________________________________


ExitMenu
ExitMenu
ExitMenu
Causes MarxMenu to exit.

Category: Execution

Exp (Real) : Real
Exp (Real) : Real
Exp (Real) : Real
Returns the Exponential of a real. Inverse of Ln.

Category: Math, Float

Explode (on/off)
Explode (on/off)
Explode (on/off)
Turn exploding windows on/off.

Category: Display

ExplodeDelay (number)
ExplodeDelay (number)
ExplodeDelay (number)
Sets the speed of exploding windows. Use this command to adjust the
speed of the exploding windows. Default is 15.

Category: Display

Extension (String) : String
Extension (String) : String
Extension (String) : String
Returns the Extention of a file name or sets the Extension.

Example:
Writeln Extension 'MARXMENU.EXE' ;returns 'EXE'

Example:
var FileName
FileName = TEST.MNU
Extension (FileName) = 'MRX'
Writeln FileName ;this returns 'TEST.MRX

See Also: NamePart, PathPart, FilePart

Category: String

False : Boolean
False : Boolean
False : Boolean
Returns boolean False.

Category: Boolean

Feb : Number
Feb : Number
Feb : Number
February, Returns the number 2.

Category: Time



Computer Tyme MarxMenu Users Manual Page 74
_______________________________________________________________


FileAppend (FileVar)
FileAppend (FileVar)
FileAppend (FileVar)
Opens a file for access and moves the file pointer to the end of the
file. File writes will start at the end of the file.

Category: File

FileAssign (FileVar,String)
FileAssign (FileVar,String)
FileAssign (FileVar,String)
Assigns a file variable to a file name. Files must be given a name
before they can be accessed.

Example: FileAssign(BatFile,'MARX.BAT')

BatFile is a variable and after the FileAssign, it becomes a file
variable. All access to the file is done using the file variable.

If an empty string is passed as the file name, MarxMenu will use the
standard console file handles.

Category: File

FileAttr (string) : Number
FileAttr (string) : Number
FileAttr (string) : Number
Returns file attribute. Can be used on directories also.

Category: File

FileClose (FileVar)
FileClose (FileVar)
FileClose (FileVar)
Closes a file and deallocates the memory space used by the file
variable.

See Also: FileOpen

Category: File

FileCreate (FileVar)
FileCreate (FileVar)
FileCreate (FileVar)
Creates a new file. If the file exists, it overwrites the old one.
FileCreate opens the file for output. Do not use FileOpen with
FileCreate.

Category: File

FileDate (string) : Number
FileDate (string) : Number
FileDate (string) : Number
Returns file date as 32 bit integer. See Also: DOS manual for date
structure.

Category: File

FileFlush (FileVar)
FileFlush (FileVar)
FileFlush (FileVar)
Writes any information that is in the file buffers to disk.

Category: File



Computer Tyme MarxMenu Users Manual Page 75
_______________________________________________________________


FileLog (FileName,String)
FileLog (FileName,String)
FileLog (FileName,String)
FileLog opens the file if it exists, or creates it if it doesn't exist.
It then seeks to the end of the file and writes the string to the end.
The file is then closed. FileLog is typically used for things such as
usage tracking.

Example:
FileLog('USAGE.LOG','Add This Line!')

Category: File

FileOpen (FileVar)
FileOpen (FileVar)
FileOpen (FileVar)
Opens a file for access. FileOpen is not needed if you are using the
ReadTextFile command. The following example copies a text file.

var Inp Out St

FileAssign(Inp,'INPUT.TXT')
FileOpen(Inp)
FileAssign(Out,'OUTPUT.TXT')
FileCreate(Out)
while not EndOfFile(Inp)
FileReadln(Inp,St)
FileWriteln(Out,St)
endwhile
FileClose(Inp)
FileClose(Out)

Category: File

FilePart (String) : String
FilePart (String) : String
FilePart (String) : String
Returns the file part of a file name.

Example:
NamePart ('C:\MARX\MARXMENU.EXE') ;returns MARXMENU.EXE

See Also: Extension, PathPart, NamePart

Category: String

FilePos (FileVar) : Number
FilePos (FileVar) : Number
FilePos (FileVar) : Number
Returns the current file position in bytes.

Category: File



Computer Tyme MarxMenu Users Manual Page 76
_______________________________________________________________


FileReadln (FileVar) : String
FileReadln (FileVar) : String
FileReadln (FileVar) : String
Reads one line of an open file returning that line as a string.

Example:
Line3 = FileReadln(BatFile)

See Also: FileOpen

Category: File

FileRename (Old,New)
FileRename (Old,New)
FileRename (Old,New)
Renames a file from old name to new. A file may be moved to a new
directory with this command.

Category: File

FileResult : Number
FileResult : Number
FileResult : Number
Returns result code from last file IO. Result codes are the same as
Turbo Pascal IOResult codes. These codes usually match the errors
returned in the AX register of DOS commands. 0 indicates no problem.

Category: File

FileSeek (FileVar,Number)
FileSeek (FileVar,Number)
FileSeek (FileVar,Number)
Moves the file pointer to a specified place in the file.

Category: File

FileSize (string) : Number
FileSize (string) : Number
FileSize (string) : Number
Returns size of file in bytes.

Category: File

FileWrite (FileVar,String)
FileWrite (FileVar,String)
FileWrite (FileVar,String)
Writes text to a file.

Category: File

FileWriteln (FileVar,String)
FileWriteln (FileVar,String)
FileWriteln (FileVar,String)
Writes text to a file with a carriage return and a line feed.

See Also: FileOpen

Category: File



Computer Tyme MarxMenu Users Manual Page 77
_______________________________________________________________


FixPath
FixPath
FixPath
This command reads your path command and verifies that all the paths are
accessable. Any path that isn't accessable is removed from the master
environment. This can be used on network drives to eliminate searching
paths on fileservers that are no longer accessable.

Category: Environment

Floppies : Number
Floppies : Number
Floppies : Number
Returns number of floppy drives.

Category: System

ForceExplosion (On/Off)
ForceExplosion (On/Off)
ForceExplosion (On/Off)
This changes the explosion status of a window that already exists. This
allows windows to implode that didn't explode.

Category: Display

ForceExtension (String,Ext) : String
ForceExtension (String,Ext) : String
ForceExtension (String,Ext) : String
This command forces a file extension on a string.

Example:
St = ForceExtension('MAIN.MNU','MRX')

This sets St equal to MAIN.MRX

Category: String

Fraction (Real) : Real
Fraction (Real) : Real
Fraction (Real) : Real
Returns the fractional part of a real.

Category: Math, Float

FreeDiskSpace : Number
FreeDiskSpace : Number
FreeDiskSpace : Number
Returns free disk space in bytes.

Example:
Writeln (FreeDiskSpace 'C')

FreeDiskSpace only looks at the first character of the string for the
drive letter.

Category: System

FreeEMS : Number
FreeEMS : Number
FreeEMS : Number
Returns free EMS memory in bytes.

Category: Memory



Computer Tyme MarxMenu Users Manual Page 78
_______________________________________________________________


FreeMemory : Number
FreeMemory : Number
FreeMemory : Number
Returns the amount of free memory still available. This is the memory
available to MarxMenu or the amount you would have using the Execute
command.

See Also: ApplicationMemory

Category: Memory

Fri : Number
Fri : Number
Fri : Number
Friday, Returns the number 5.

Category: Time

GotoXY (column,row)
GotoXY (column,row)
GotoXY (column,row)
Move cursor to location column,row in current box.

Category: Display, Ansi

Green : Number
Green : Number
Green : Number
Returns the number 2.

Category: Color

Grey : Number
Grey : Number
Grey : Number
Returns the number 7.

Category: Color

HercMono : Number
HercMono : Number
HercMono : Number
HercMono returns the number 2. This is used with DisplayType to test for
the type of video card you are running.

Example:
if DisplayType = HercMono then .....

See Also: DisplayType

Category: Display

Hour : Number
Hour : Number
Hour : Number
Return the current hour. 24 hour format.

Category: Time



Computer Tyme MarxMenu Users Manual Page 79
_______________________________________________________________


HourOf (Date) : Number
HourOf (Date) : Number
HourOf (Date) : Number
Returns the hour of a date. If Date is passed as a string it is
converted automatically.

See Also: TimeOf, BadDate

Category: Time

Hundredth : Number
Hundredth : Number
Hundredth : Number
Returns the 1/100 of a second from the system clock. Note that the
system clock timer tick is 1/18 second so don't expect a lot of accuracy
here.

Category: Time

IdleProgram : Procedure
IdleProgram : Procedure
IdleProgram : Procedure
IdleProgram is a variable that when set to the location of a procedure
allows the procedure to run while waiting at the keyboard. This is done
by writing a procedure that will run while waiting for input.

The way you use this is to set an internal variable named IdleProgram to
the Loc of the procedure you want to run as follows:

Example:
IdleProgram = Loc MyProcedure

Note: Do not use parentheses around MyProcedure.

When writing MyProcedure make it as short and quick as possible. As of
now, MyProcedure is called continously while there is no keyboard input.
You can also use a loop in it as follows.

Procedure MyProcedure
SetItUp
while not KBDReady
{do your thing}
endwhile
PutItBack
EndProc

MarxMenu doesn't automatically exit your procedure or save and restore
anything. If you're writing to the screen you have to put everything
back the way it was.

If you want to run a program at a specific time, here's how it can be
done:



Computer Tyme MarxMenu Users Manual Page 80
_______________________________________________________________


Procedure MyProcedure
if Now = TimeOf('11:00pm')
Bat 'NIGHT' ;run NIGHT.BAT
ExitMenu
endif
if Now = TimeOf('5:00')
Bat 'MORNING' ;run MORNING.BAT
ExitMenu
endif
EndProc

See Also: Run, Loc

Category: Execution

If
If
If
Used for program control.

Usage:

IF (condition) THEN (statement)

IF (condition)
(statement)
(statement)
ELSE
(statement)
(statement)
ENDIF

Category: Conditional

InactiveBox (BoxType)
InactiveBox (BoxType)
InactiveBox (BoxType)
This is used to select the type of box border to use when a window is
not the current window. If any inactive box type is specified, then when
you execute another DrawBox, the old window's border changes to the
inactive box type. The inactive window also loses its headers and
shadows.

Note that InActiveBox must be used BEFORE the DrawBox command.

Example:
InActiveBox (SingleLineBox) ;switches to single line box if
inactive.

InactiveBox (NoBoxBorder) ;disables InActive effect.

See Also: InactiveBoxColor

Category: Display



Computer Tyme MarxMenu Users Manual Page 81
_______________________________________________________________


InactiveBoxColor (foreground,background)
InactiveBoxColor (foreground,background)
InactiveBoxColor (foreground,background)
Selects the color of the inactive box window. If Black on Black is
selected, (default), the inactive box color is the same as the active
box color.

Example:
BoxBorderColor Yellow Blue
InActiveBoxColor Brown Blue

See Also: InactiveBox BoxBorderColor

Category: Color

Include (MenuName)
Include (MenuName)
Include (MenuName)
This is used to insert the menu code from another file into the menu
that you are compiling.

Example:
Include 'DOS.MNU'

This will compile DOS.MNU into your present menu as if that whole file
were part of the menu you are working on.

This is useful if you have several menus that share common code. By
moving this common code to a separate file, and using an Include
statement, you can change the common code and update several menus at
once. If you are using overlays, it is a good idea to put your shared
variables in an include file. This asures that the shared variables will
be the same for all overlays.

Changing an include file does not cause MarxMenu to recompile
automatically like changing the MNU does. You will have to force it to
compile your menus.

This can be done several ways. You can type MARXCOMP (menu) or you can
just type DEL *.MRX which will cause all the menus to recompile the next
time they are run.

Category: Misc

InputString (String)
InputString (String)
InputString (String)
Preloads a string for the Readln command. The next Readln will have the
InputString on the screen for you to edit or accept. Once Readln
executes, InputString is cleared to a blank string.

Example:
InputString = ReadEnv('USERNAME')
YourName = Readln

Category: Keyboard, String



Computer Tyme MarxMenu Users Manual Page 82
_______________________________________________________________


Insert (InsString,OrigString,Pos)
Insert (InsString,OrigString,Pos)
Insert (InsString,OrigString,Pos)
Inserts a string into a string.

Example:
St = 'ABCDEF'
Insert('123',St,3)

St will become 'ABC123DEF'

Category: String

InsertMode (On/Off)
InsertMode (On/Off)
InsertMode (On/Off)
Turns insert mode on and off for Readln commands.

Category: Keyboard

Int (Real) : Real
Int (Real) : Real
Int (Real) : Real
Returns the integer part of a real as a real.

Category: Math, Float

Integer (Real) : Number
Integer (Real) : Number
Integer (Real) : Number
Returns the integer part of a real as an integer. The fractional part is
truncated.

Category: Math, Float

InverseColor (forecolor,backcolor)
InverseColor (forecolor,backcolor)
InverseColor (forecolor,backcolor)
Sets colors for inverse bar used with UseArrows command.

Category: Color

Jan : Number
Jan : Number
Jan : Number
January, Returns the number 1.

Category: Time

Jul : Number
Jul : Number
Jul : Number
July, Returns the number 7.

Category: Time

Jun : Number
Jun : Number
Jun : Number
June, Returns the number 6.

Category: Time



Computer Tyme MarxMenu Users Manual Page 83
_______________________________________________________________


Jump (menu)
Jump (menu)
Jump (menu)
Jumps to another menu and does not return to original menu.

Category: Execution

KbdReady : Boolean
KbdReady : Boolean
KbdReady : Boolean
Returns true if Key is pressed.

Category: Keyboard

KeySave : String
KeySave : String
KeySave : String
Stores your keystrokes that you pressed to get to the menu level where
you are at. KeySave is passed to DOS using the SET KSV= command to store
your position in the menu system. To make this work, you must execute
SavePosition On.

This variable can be set by you to force MarxMenu to return to a place
in the menu other than where you are. This allows MarxMenu to suggest a
next step.

See Also: SavePosition

Category: String, Environment, Execution

KeyFromMouse : Boolean
KeyFromMouse : Boolean
KeyFromMouse : Boolean
Normally mouse activity is translated into keystrokes. This variable is
set to true if the keystroke came from the mouse.

Category: MouseControl

KillMusic
KillMusic
KillMusic
This command stops the music and de-allocates the memory used by the
music buffer.

Category: Music

LastKey : String
LastKey : String
LastKey : String
LastKey returns the last key that was typed at the keyboard. This can be
used after a Readln to determine if the ESC key was pressed or perhaps
the up or down arrow keys.

Sometimes after the press of an ESC key, MarxMenu wants to exit more
levels than you want it to. This can be controlled by setting LastKey =
' ' to stop the abort process.

See Also: Readln

Category: String



Computer Tyme MarxMenu Users Manual Page 84
_______________________________________________________________


LBlue : Number
LBlue : Number
LBlue : Number
Light Blue, Returns the number 9.

Category: Color

LCyan : Number
LCyan : Number
LCyan : Number
Light Cyan, Returns the number 11.

Category: Color

Left (string,count) : String
Left (string,count) : String
Left (string,count) : String
Returns string starting at the beginning for count characters.

Example: Left('ABCDEF',3) returns 'ABC'

Category: String

Length (string) : Number
Length (string) : Number
Length (string) : Number
Returns the length of the string or sets the length of a string.

Example: Length('ABCD') returns 4.

Example:
var St
St = '123456'
Length(St) = 3
Writeln St ;this produces '123'

If you set the length longer than the original string the string is
padded with blanks on the end.

Category: String

LGreen : Number
LGreen : Number
LGreen : Number
Light Green, Returns the number 10.

Category: Color

LGrey : Number
LGrey : Number
LGrey : Number
Light Grey, Returns the number 8.

Category: Color

LMag : Number
LMag : Number
LMag : Number
Light Magenta, Returns the number 13.

Category: Color



Computer Tyme MarxMenu Users Manual Page 85
_______________________________________________________________


LMagenta : Number
LMagenta : Number
LMagenta : Number
Light Magenta, Returns the number 13.

Category: Color

Ln (Real) : Real
Ln (Real) : Real
Ln (Real) : Real
Returns the Natural Logarithm of a real.

Category: Math, Float

Loc (Procedure)
Loc (Procedure)
Loc (Procedure)
This returns the location of a procedure for storing in a variable. The
variable is later executed using the Run command.

See Also: Run

Category: Misc

LockWord (word)
LockWord (word)
LockWord (word)
Sets a default word for the console activated keyboard lock. When the
screen goes blank, the user has to type the LockWord to unblank the
screen. This is a security feature so that if a user leaves the menu
unattended, it prevents others from tampering with the system.

See Also: LogoffTime, BlankTime

Category: Display

Logoff
Logoff
Logoff
Logoff logs you off the network the same way that LogoffTime does except
it does it immediately. See LogoffTime for details as to how.

See Also: LogoffTime

Category: Execution



Computer Tyme MarxMenu Users Manual Page 86
_______________________________________________________________


LogoffTime : Number
LogoffTime : Number
LogoffTime : Number
MarxMenu supports automatic logoff after a number of minutes of
inactivity set by LogoffTime. This only has effect while you are in the
menu and not while an application is running. It is set as follows:

LogoffTime = 5 ;sets time to 5 minutes

Setting LogoffTime to 0 disbles this feature.

When the time to logoff occurs, MarxMenu will first look for a batch
file in the \LOGIN directory called OFF.BAT. If it doesn't find it,
MarxMenu will look for OFF.BAT on the PATH. If this isn't found,
MarxMenu will look for LOGOFF.EXE. If this isn't found, then MarxMenu
will look for LOGOUT.COM.

LOGOFF.EXE and LOGOUT.COM are executed by stuffing the keyboard buffer.

The best way to use this feature is to create an OFF.BAT file in your
\LOGIN directory or on the PATH.

See Also: LockWord

Category: Execution

Loop
Loop
Loop
MarxMenu has a looping structure that lets you execute a piece of code a
specific number of times. It is used as follows:

Example:
Loop 8
Writeln 'Pass Number ' LoopIndex
EndLoop

You start with LOOP (Number) which specifies the number of times to
execute the code between LOOP and ENDLOOP. There are 2 variables
available here for loop control. LoopIndex starts at 1 and is
incremented at each EndLoop. When LoopIndex becomes greater than
LoopLimit, the loop exits. LoopIndex and LoopLimit refer to the
innermost loop.

As loops are nested LoopIndexes and LoopLimits are kept in two arrays;
LoopIndexStack and LoopLimitStack. There is also a variable called
LoopLevel which points to the current loop parameters.

Thus:
LoopIndex is the same as LoopIndexStack[LoopLevel]
LoopLimit is the same as LoopLimitStack[LoopLevel]

You may therefore access outer loop parameters through the loop stacks.
For instance LoopIndexStack[LoopLevel - 1] would refer to the second
innermost loop index. LoopIndexStack[1] refers to the outermost loop.



Computer Tyme MarxMenu Users Manual Page 87
_______________________________________________________________


The loop variables can be read and written to so you can adjust the
looping parameters while inside the loop. You can even adjust the
parameters of outer loops.

See Also: EndLoop LoopIndex LoopLimit

Category: Conditional

LoopIndex
LoopIndex
LoopIndex
Returns the loop you are in.

See Also: Loop EndLoop LoopLimit

Category: Conditional

LoopLimit
LoopLimit
LoopLimit
Returns the upper limit of the loop you are in.

See Also: Loop EndLoop LoopIndex

Category: Conditional

LRed : Number
LRed : Number
LRed : Number
Light Red returns the number 12.

Category: Color

MachineName : String
MachineName : String
MachineName : String
This reads or sets the MachineName for NetBios networks.

Example:
MachineName = IBM ;sets the MachineName
Writeln MachineName ;displays the MachineName

Category: Novell

Mag : Number
Mag : Number
Mag : Number
Magenta, Returns the number 5.

Category: Color

Magenta : Number
Magenta : Number
Magenta : Number
Magenta, Returns the number 5.

Category: Color

Mar : Number
Mar : Number
Mar : Number
March, Returns the number 3.

Category: Time



Computer Tyme MarxMenu Users Manual Page 88
_______________________________________________________________


MarxVersion : String
MarxVersion : String
MarxVersion : String
Returns the version number of the MarxMenu you are running.

Category: String

MasterEnvironment
MasterEnvironment
MasterEnvironment
MasterEnvironment selects the Master Environment for use with
environment access commands.

See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment

Category: Environment

Max (Num,Num) : Num
Max (Num,Num) : Num
Max (Num,Num) : Num
Returns the largest of two numbers or strings.

Category: Math, String, Float

May : Number
May : Number
May : Number
May, Returns the number 5.

Category: Time

MCGA : Number
MCGA : Number
MCGA : Number
MCGA returns the number 2. This is used with DisplayType to test for the
type of video card you are running.

Example:
if DisplayType = MCGA then .....

See Also: DisplayType

Category: Display

Mem (seg,ofs) : Number
Mem (seg,ofs) : Number
Mem (seg,ofs) : Number
Returns the byte at memory location seg:ofs or lets you write to the
byte at seg:ofs.

Example:
X = Mem(40,5) ;reads memory into X
Mem(40,5) = X ;writes X into memory

Category: Memory



Computer Tyme MarxMenu Users Manual Page 89
_______________________________________________________________


MemL (seg,ofs) : Number
MemL (seg,ofs) : Number
MemL (seg,ofs) : Number
Returns the long integer at memory location seg:ofs or lets you write to
the byte at seg:ofs.

Example:
X = MemL(40,5) ;reads memory into X
MemL(40,5) = X ;writes X into memory

Category: Memory

MemSize : Number
MemSize : Number
MemSize : Number
Returns total memory size in K. (640 = 640k)

Category: Memory

MemW (seg,ofs) : Number
MemW (seg,ofs) : Number
MemW (seg,ofs) : Number
Returns the word at memory location seg:ofs or lets you write to the
byte at seg:ofs.

Example:
X = MemW(40,5) ;reads memory into X
MemW(40,5) = X ;writes X into memory

Category: Memory

MenuKeyBuffer
MenuKeyBuffer
MenuKeyBuffer
This is an internal MarxMenu variable. It is where the environment
variable KSV= is read. Characters in this string variable are treated as
if someone had typed them from the keyboard.

This variable can be set to blank in order to override the effects of
SET KSV= or can be set to a different value in order to automatically
make selections as if they were typed in.

See Also: SavePosition, KeySave

Category: Keyboard

Mid (string,pos,count) : String
Mid (string,pos,count) : String
Mid (string,pos,count) : String
Returns a string starting at pos for count.

Example:
Mid('ABCDEFG',2,3) returns 'CDE'

Category: String

Min (Num,Num) : Num
Min (Num,Num) : Num
Min (Num,Num) : Num
Returns the smallest of two numbers or strings.

Category: Math, String, Float



Computer Tyme MarxMenu Users Manual Page 90
_______________________________________________________________


MinorDosVersion : Number
MinorDosVersion : Number
MinorDosVersion : Number
Returns the minor DOS version number.

See Also: DosVersion, DosVersionString

Category: System

Minute : Number
Minute : Number
Minute : Number
Returns the current minute.

Category: Time

MinuteOf (Date) : Number
MinuteOf (Date) : Number
MinuteOf (Date) : Number
Returns the minute of a date. If Date is passed as a string it is
converted automatically.

See Also: TimeOf, BadDate

Category: Time

Mod : Operator
Mod : Operator
Mod : Operator
Returns the remainder of the division of two numbers.

Category: Math

ModifyPath
ModifyPath
ModifyPath
The MarxMenu directory should be in the search path. This is because if
you change directories, MarxMenu may not be able to find the menu files.
MarxMenu will now test the PATH= environment variable before it writes
the batch file to execute a program. If the MarxMenu path is not
included, MarxMenu will add the path to the Master Environment if it
can.

If for some reason you don't want to allow MarxMenu to modify the master
environment, use the command:

ModifyPath Off

Category: Environment

Mon : Number
Mon : Number
Mon : Number
Monday, Returns the number 1.

Category: Time

Mono : Number
Mono : Number
Mono : Number
Returns the number 7. Relates to the DOS Mode MONO command.

Category: Video



Computer Tyme MarxMenu Users Manual Page 91
_______________________________________________________________


Month : Number
Month : Number
Month : Number
Returns current month.

Category: Time

MonthOf (Date) : Number
MonthOf (Date) : Number
MonthOf (Date) : Number
Returns the month of a date. If Date is passed as a string it is
converted automatically.

See Also: TimeOf, BadDate

Category: Time

Mouse
Mouse
Mouse
MarxMenu normally uses the mouse if present. If you don't want to use
the mouse you can use the command:

Mouse Off

To turn the mouse back on type:

Mouse On

The mouse is actually switched on and off at the point when MarxMenu
waits at the keyboard for a keypress.

Mouse Sensitivity can be set for individual workstations on a network by
setting environment variables MouseX and MouseY as follows:

Set MouseX=15
Set MouseY=25

See Also: MouseHorizontal, MouseVertical

Category: MouseControl

MouseHorizontal (Number)
MouseHorizontal (Number)
MouseHorizontal (Number)
Controls the horizontal sensitivity of the mouse. The larger the number,
the less sensitive the mouse. Default is 25.

See Also: MouseVertical, Mouse

Category: MouseControl



Computer Tyme MarxMenu Users Manual Page 92
_______________________________________________________________


MouseVertical (Number)
MouseVertical (Number)
MouseVertical (Number)
Controls the vertical sensitivity of the mouse. The larger the number,
the less sensitive the mouse. Default is 15.

See Also: MouseHorizontal, Mouse

Category: MouseControl

MoveWindow (Horizontal,Vertical)
MoveWindow (Horizontal,Vertical)
MoveWindow (Horizontal,Vertical)
Moves top window. If (Horizontal) is negative motion is left. If
is negative, motion is up.

Example:
MoveWindow -3 4 ;moves window 3 spaces left and 4 down

Category: Display

MxCmd : String
MxCmd : String
MxCmd : String
This is an internal string variable that it written to the environment
variable MXCMD. This variable can be written to control what MarxMenu
will write to the Shell Environment. If this variable is written to, it
overrides anything that MarxMenu automatically writes.

Example:
OnKey 'A'
|MxCmd = 'SHUTDOWN.BAT'
|ExitMenu

Category: Environment, String, Execution

NamePart (String) : String
NamePart (String) : String
NamePart (String) : String
Returns the name part of a file name.

Example:
NamePart ('C:\MARX\MARXMENU.EXE') ;returns MARXMENU

See Also: Extension, PathPart, FilePart

Category: String

NetworkVersion : Boolean
NetworkVersion : Boolean
NetworkVersion : Boolean
Returns true if you are running the network version of MarxMenu.

Category: Misc



Computer Tyme MarxMenu Users Manual Page 93
_______________________________________________________________


NextWord (String) : String
NextWord (String) : String
NextWord (String) : String
This command returns the next logical word of a string variable and
removes the string from the original string.

Example:
StringA = 'one two three'
StringB = NextWord(StringA)

StringB contains 'one'
StringA contains 'two three'

Category: String

No : Boolean
No : Boolean
No : Boolean
Returns the boolean false.

Category: Boolean

NoBoxBorder
NoBoxBorder
NoBoxBorder
Use this command if you don't want a border around the menus.

See Also: SingleLineBox, DoubleLineBox, BlockBox, CustomBox

Category: Display

NoExit
NoExit
NoExit
Prevents ESC key from allowing you to exit menu. To exit, you must
execute the ExitMenu command. This could be password protected.

See Also: ExitMenu

Category: Execution

Not : Operator
Not : Operator
Not : Operator
Returns logical Not if operators are boolean; or bitwise Not if
operators are numeric.

Category: Math, Boolean

NotesLeft : Num
NotesLeft : Num
NotesLeft : Num
NotesLeft returns the number of notes left in the music buffer to play.
The music buffer is self adjusting and can store days worth of music.

Category: Music

NotesPlayed : Num
NotesPlayed : Num
NotesPlayed : Num
Returns the number of notes played. If NotesLeft ever reaches 0,
NotesPlayed also is set to 0.

Category: Music



Computer Tyme MarxMenu Users Manual Page 94
_______________________________________________________________


Nov : Number
Nov : Number
Nov : Number
November, Returns the number 11.

Category: Time

NovAccountExpDate (UserName) : Date
NovAccountExpDate (UserName) : Date
NovAccountExpDate (UserName) : Date
Returns the Novell account expiration date. You must be logged in to be
able to read this.

Example:
DaysToExpire = NovAccountExpDate(UserName) - Today / SecondsInDay

Category: Novell, Time

NovAddUserToGroup (User,Group)
NovAddUserToGroup (User,Group)
NovAddUserToGroup (User,Group)
Adds a user to a group and updates GROUPS_I'M_IN, GROUP_MEMBERS, and
SECURITY_EQUALS properties.

See Also: NovRemoveUserFromGroup

Category: Novell

NovAttach (Server)
NovAttach (Server)
NovAttach (Server)
NovAttach is used to create a software link between you and a server,
usually a second server. It must be followed by a NovLogin command to
log you into the server.

See Also: NovDetach

Category: Novell

NovChangePassword (OldPassword,NewPassword)
NovChangePassword (OldPassword,NewPassword)
NovChangePassword (OldPassword,NewPassword)
Changes the novell users password from OldPassword to NewPassword.

Category: Novell

NovCloseSemaphore (Name)
NovCloseSemaphore (Name)
NovCloseSemaphore (Name)
This closes semaphore Name. If there are no other users using this
semaphore, it is deleted.

Category: Novell

NovConnection : Number
NovConnection : Number
NovConnection : Number
This returns the logical connection number to the network. A zero
indicates that you are not connected.

Category: Novell



Computer Tyme MarxMenu Users Manual Page 95
_______________________________________________________________


NovConsoleOperator : Boolean
NovConsoleOperator : Boolean
NovConsoleOperator : Boolean
This returns true if the user has Console Operator priviledges. This can
come in handy when you are trying to determine who gets access to the
command line.

Category: Novell

NovDefaultServer : String
NovDefaultServer : String
NovDefaultServer : String
Returns the name of the default file server.

Category: Novell

NovDetach (Server)
NovDetach (Server)
NovDetach (Server)
This is used to drop the connection to a server.

See Also: NovAttach

Category: Novell

NovGraceLoginReset (User) : Num
NovGraceLoginReset (User) : Num
NovGraceLoginReset (User) : Num

Returns the number of grace logins that Novell resets when the user
changes his password.

Example:
Writeln NovGraceLoginReset (NovMyLoginName)

If the User parameter is not included, MarxMenu will assume the current
user.

See Also: NovGraceLogins

Category: Novell

NovGraceLogins (User) : Num
NovGraceLogins (User) : Num
NovGraceLogins (User) : Num
Returns the number of grace logins the user has left.

Example:
Writeln 'You have ' NovGraceLogins (NovMyLoginName) ' left!'

If the User parameter is not included, MarxMenu will assume the current
user.

See Also: NovPasswordExpDate NovGraceLoginReset

Category: Novell



Computer Tyme MarxMenu Users Manual Page 96
_______________________________________________________________


NovGroupsMembers (Group,Array)
NovGroupsMembers (Group,Array)
NovGroupsMembers (Group,Array)
This reads all the members of Group and puts them into an array.

Category: Novell, Array

NovGroups (Array)
NovGroups (Array)
NovGroups (Array)
Fills array with list of all groups.

See Also: NovUsersLoggedIn, NovUsers, NovPrintQueues, NovServers

Category: Novell

NovInGroup (Group) : Boolean
NovInGroup (Group) : Boolean
NovInGroup (Group) : Boolean
Return true if you are in the group.

Category: Novell

NovLastLoginDate (User) : Date
NovLastLoginDate (User) : Date
NovLastLoginDate (User) : Date
Returns the date the user last logged in.

Example:
DaysSinceLogin = NovLastLoginDate(UserName) - Today / SecondsInDay

If the User parameter is not included, MarxMenu will assume the current
user.

Category: Novell, Time

NovLogin (Name,Password)
NovLogin (Name,Password)
NovLogin (Name,Password)
This logs you into a file server. It is different than the Novell's
login program in that it doesn't execute any login scripts. It merely
gets you in. You can include the preferred server with the name.

Example:
NovLogin ('MARC','PASSWORD')

The variable NovResult is set to 0 if sucessful.

Note: If you are using Netware 3.0 or 3.1 you will have to go to the
server console and type:

SET ALLOW UNENCRYPTED PASSWORDS = ON

Category: Novell

NovLoginName (Connection) : String
NovLoginName (Connection) : String
NovLoginName (Connection) : String
This returns the login name of the user at any specified connection.
This can also be used to see who else is on the network.

Category: Novell



Computer Tyme MarxMenu Users Manual Page 97
_______________________________________________________________


NovLogout
NovLogout
NovLogout
This logs you off the server. Warning! Make sure that you are running
MarxMenu from a local drive and not the server you are logging out of.
MarxMenu needs access to overlays within MARXMENU.EXE and a Logout can
cut off access. This command automatically runs FixPath.

See Also: FixPath, Logoff, LogoffTime

Category: Novell

NovMapDrive (Drive,Directory)
NovMapDrive (Drive,Directory)
NovMapDrive (Drive,Directory)
This will map a drive letter to a directory like the Novell MAP
command does. You may specify volume names and server names.

Example:
NovMapDrive ('J','TYME2/SYS:PUBLIC\DOS')

Mapping a drive to a nul string ('') deletes the drive map.

Category: Novell

NovMinPasswordLength (User) : Num
NovMinPasswordLength (User) : Num
NovMinPasswordLength (User) : Num
Returns the minimum length of the password that Novell will accept for a
new password.

Example:
Writeln NovGraceLoginReset (NovMyLoginName)

If the User parameter is not included, MarxMenu will assume the current
user.

Category: Novell

NovMyLoginName : String
NovMyLoginName : String
NovMyLoginName : String
This returns the login name of the user.

Category: Novell

NovMyPassword (Password) : Boolean
NovMyPassword (Password) : Boolean
NovMyPassword (Password) : Boolean
Novell won't let you read the password, but it will let you guess and
tell you if you're right. This routine returns true if the password
passed is the correct password.

Category: Novell

NovOpenSemaphore (Name,Value)
NovOpenSemaphore (Name,Value)
NovOpenSemaphore (Name,Value)
This opens semaphore Name and assigns it an initial value. If the
semaphore already exists, it does nothing.

Category: Novell



Computer Tyme MarxMenu Users Manual Page 98
_______________________________________________________________


NovPasswordExpDate (UserName) : Date
NovPasswordExpDate (UserName) : Date
NovPasswordExpDate (UserName) : Date
Returns the Novell password expiration date. You must be logged in to be
able to read this.

Example:
DaysToExpire = NovPasswordExpDate(UserName) - Today / SecondsInDay

See Also: NovGraceLogins

Category: Novell, Time

NovPreferredServer : String
NovPreferredServer : String
NovPreferredServer : String
Returns the name of the preferred file server. This is set with the
NovSetPreferredServer command.

Category: Novell

NovPrimaryServer : String
NovPrimaryServer : String
NovPrimaryServer : String
Returns the name of the primary file server. This is the one you first
logged into.

Category: Novell

NovPrintQueues (Array)
NovPrintQueues (Array)
NovPrintQueues (Array)
Fills array with list of all print Queues.

See Also: NovUsersLoggedIn, NovUsers, NovGroups, NovServers

Category: Novell, Array, Printer

NovReadGroups (Name,Array)
NovReadGroups (Name,Array)
NovReadGroups (Name,Array)
This reads all the groups that Name belongs to and puts them into an
array.

Category: Novell, Array

NovReadSecurityEquals (Name,Array)
NovReadSecurityEquals (Name,Array)
NovReadSecurityEquals (Name,Array)
This reads all the security equivalences that Name belongs to and puts
them into an array. (This includes groups).

Category: Novell, Array

NovRemoveUserFromGroup (User,Group)
NovRemoveUserFromGroup (User,Group)
NovRemoveUserFromGroup (User,Group)
Removes a user to a group and updates GROUPS_I'M_IN, GROUP_MEMBERS, and
SECURITY_EQUALS properties.

See Also: NovAddUserToGroup

Category: Novell



Computer Tyme MarxMenu Users Manual Page 99
_______________________________________________________________


NovResult : Number
NovResult : Number
NovResult : Number
NovResult is a variable like FileResult that returns the success status
of the previous Novell system call. A zero generally indicates success.

Category: Novell

NovSecurityEquals (Security) : Boolean
NovSecurityEquals (Security) : Boolean
NovSecurityEquals (Security) : Boolean

Returns True if user has the security equivelent of Security.

Example:
if NovSecurityEquals ('SUPERVISOR')
Execute ('SYSCON'
endif

Category: Novell

NovSemaphoreTimeOut
NovSemaphoreTimeOut
NovSemaphoreTimeOut
This variable controls the amount of time (in 1/18 seconds) that
MarxMenu will wait for the value of a semaphore to become not negative.
The initial value is 50.

Category: Novell

NovSemaphoreUsers (Name) : Number
NovSemaphoreUsers (Name) : Number
NovSemaphoreUsers (Name) : Number
This returns the number of users that have the semaphore open.

Category: Novell

NovSemaphoreValue (Name) : Number
NovSemaphoreValue (Name) : Number
NovSemaphoreValue (Name) : Number
This returns the value of a semaphore.

Category: Novell

NovServers (Array)
NovServers (Array)
NovServers (Array)
This command returns a string array of the file servers you are
connected to.

Category: Novell, Array



Computer Tyme MarxMenu Users Manual Page 100
_______________________________________________________________


NovScanProperties (Array, Object, ObjectType)
NovScanProperties (Array, Object, ObjectType)
NovScanProperties (Array, Object, ObjectType)
NovScanProperties reads the properties (not the values) into an array.
You also have to pass the object type.

Novell Object Types:
1 - User
2 - Group
3 - Print Queue
4 - File Server
5 - Job Server
6 - Gateway
7 - Print Server

Example:
var Properties
NovScanProperties (Properties,NovMyLoginName,1)

Loop NumberOfElements(Properties)
Writeln(Properties[LoopIndex])
EndLoop


Category: Novell, Array

NovSetPreferredServer (Server)
NovSetPreferredServer (Server)
NovSetPreferredServer (Server)
Sets the preferred file server. Passing a '' will switch you back to the
default or primary file server.

See Also: NovSetPrimaryServer

Category: Novell

NovSetPrimaryServer (Server)
NovSetPrimaryServer (Server)
NovSetPrimaryServer (Server)
The primary file server is the one that execures your login scripts. It
can also be set using the NovSetPrimaryServer command.

See Also: NovSetPreferredServer

Category: Novell

NovSignalSemaphore (Name)
NovSignalSemaphore (Name)
NovSignalSemaphore (Name)
This increments the value of a semaphore. It is used to indicate that
you are done with a resource and makes it available for the next user.

Category: Novell



Computer Tyme MarxMenu Users Manual Page 101
_______________________________________________________________


NovStationAddress (Connection) : String
NovStationAddress (Connection) : String
NovStationAddress (Connection) : String
This returns the stations internetwork address at connection.

Example:
NovStationAddress (NovConnection)
Returns the address of the users workstation.

NovStationAddress (1)
Returns the address of station 1.

254:41 where 254 is the network number and 41 is the node number.

The second parameter (Connection) is optional. If it is left out, the
current connection is assumed.

Example:
NovStationAddress ;Returns the address of the users workstation.

Category: Novell

NovUserInGroup (Name,Group) : Boolean
NovUserInGroup (Name,Group) : Boolean
NovUserInGroup (Name,Group) : Boolean
This is used to test if other users are in a group. Returns true is the
specified user is in the specified group.

Category: Novell

NovUsers (Array)
NovUsers (Array)
NovUsers (Array)
Fills array with list of all users.

See Also: NovUsersLoggedIn, NovGroups, NovPrintQueues, NovServers

Category: Novell, Array

NovUsersLoggedIn (Array)
NovUsersLoggedIn (Array)
NovUsersLoggedIn (Array)
Fills array with list of all users that are currently logged in.

See Also: NovUsers, NovGroups, NovPrintQueues, NovServers

Category: Novell, Array

NovWaitOnSemaphore (Name) : Boolean
NovWaitOnSemaphore (Name) : Boolean
NovWaitOnSemaphore (Name) : Boolean
This decrements the value of a semaphore and if the value is zero or
more, returns true. If the value of the semaphore is negative, it
returns false. This is used to indicate that you are out of whatever you
are testing for.

Category: Novell



Computer Tyme MarxMenu Users Manual Page 102
_______________________________________________________________


NumberOfElememts (array) : Number
NumberOfElememts (array) : Number
NumberOfElememts (array) : Number
This function returns the number of elements in the array. If the
variable is not an array, 0 is returned.

Category: Array

Now : Date
Now : Date
Now : Date
Returns the current moment as a date.

Category: Time

NumLock : Boolean
NumLock : Boolean
NumLock : Boolean
Returns true if Num Lock is on. This command can also set the Num Lock
on and off.

Example:
if NumLock then Write 'NumLock is On'

NumLock On ;Turns NumLock On
NumLock Off ;Turns NumLock Off

NumLock (by itself) turns NumLock On.

See Also: CapsLock, ScrollLock

Category: System

Oct : Number
Oct : Number
Oct : Number
October, Returns the number 10.

Category: Time

Off : Boolean
Off : Boolean
Off : Boolean
Returns False.

Category: Boolean

On : Boolean
On : Boolean
On : Boolean
Returns True.

Category: Boolean



Computer Tyme MarxMenu Users Manual Page 103
_______________________________________________________________


OnKey (char)
OnKey (char)
OnKey (char)
When char is selected, the line(s) following are executed up to the next
OnKey or end of file. This means that they are written to a BATCH file.

Example:
Onkey 'W'
cd\wordstar
ws
cd\menu

In the above example if 'W' is selected, MarxMenu will create a
temporary batch file containing all the lines under the OnKey command.
All the lines under an OnKey are written literally to the batch file
with few exceptions. All leading and trailing blanks are stripped.
String variables are evaluated and their value passed if the name of the
string variable starts with a '%'.

If a line begins with a '|' (vertical bar), the line is interpreted
rather than written to a batch file. If a '^Label' is used under an
OnKey, a jump is made to the 'Label' and interpretation is resumed. This
is commonly used to jump to a submenu.

Any OnKey statement that causes a batch file to be written to will cause
the menu to exit. MarxMenu normally will exit with ErrorLevel 0 unless
an ExitCode is set.

The first blank line under an OnKey ends what that OnKey command does.

Category: Conditional

OnScreenOnly (On/Off)
OnScreenOnly (On/Off)
OnScreenOnly (On/Off)
This allows you to restrict selections to only what is actually on the
screen. Hidden OnKey commands will not execute if this is set on. This
allows you to limit user selection to the choices on the screen.

See Also: OnKey

Category: Conditional



Computer Tyme MarxMenu Users Manual Page 104
_______________________________________________________________


OpenPrinter
OpenPrinter
OpenPrinter
This command opens the printer device. It is not necessary to use this
command in that it is done automatically whenever you print. But, if you
are running under a multitasking shell like Windows, it will reserve the
printer for your task.

If the printer is locked, or if you have specified a file name that
can't be created, the variable FileResult will contain the DOS error
code (usually 5 for access denied). A FileResult of 0 indicates success.

See Also: ClosePrinter, FileResult

Category: Printer

OptionSwitch (String1,String2) : Boolean
OptionSwitch (String1,String2) : Boolean
OptionSwitch (String1,String2) : Boolean
This command tests if String1 contains the option switch String2. If it
does, it will remove the switch from String1.

Example:
String1 = 'Test /A/B/C'
HasB = OptionSwitch(String1,'B')

HasB will be true.
String1 will contain 'Test /A/C'

Category: String

Or : Operator
Or : Operator
Or : Operator
Returns logical Or if operators are boolean; or bitwise Or if operators
are numeric.

Category: Math, Boolean

Ord (Char) : Number
Ord (Char) : Number
Ord (Char) : Number
Returns the numeric value of an ascii character.

Category: String

OverKey : String
OverKey : String
OverKey : String
When using UseArrows, OverKey returns the character that selects the
item that the inverse bar is over.

This can be used with IdelProgram to display context sensitive help as
you move the inverse bar over different selections.

Category: String



Computer Tyme MarxMenu Users Manual Page 105
_______________________________________________________________


OverLay (MenuName)
OverLay (MenuName)
OverLay (MenuName)
Overlay loads another menu as if that menu were a procedure of the
current menu. After the overlaid menu exits, control is returned to the
calling menu at the next line after the overlay command.

Like the Chain command, Overlay is very fast and doesn't require
MarxMenu to be reloaded.

Example:
Overlay 'SUBMENU'

When using overlays, all variables declared as shared are accessable to
the main program and all overlays. The shared variables have to be the
same for all overlays.

See Also: Shared, Chain

Category: Execution

ParallelPorts : Number
ParallelPorts : Number
ParallelPorts : Number
Returns number of parallel ports.

Category: System

ParamStr (Num) : String
ParamStr (Num) : String
ParamStr (Num) : String
Returns the DOS parameter string from the command line. The 0 parameter
is MARXMENU.EXE. The 1 parameter is the name of the menu file you are
using. This is like the %1 %2 %3 ... in batch file parameters.

Category: String

ParentEnvironment
ParentEnvironment
ParentEnvironment
ParentEnvironment selects the parent environment for use with
environment access commands.

See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment MasterEnvironment

Category: Environment



Computer Tyme MarxMenu Users Manual Page 106
_______________________________________________________________


Password (Pswd,column,row)
Password (Pswd,column,row)
Password (Pswd,column,row)
This command opens up a password box at row and column. The user must
type the password correctly before the command will execute. The
password is case sensitive.

Example:
OnKey 'X'
|PassWord('shell',4,3)
COMMAND.COM

Category: Conditional

Path : String
Path : String
Path : String
Returns the current path.

Category: String

PathPart (String) : String
PathPart (String) : String
PathPart (String) : String
Returns the path part of a file name.

Example:
PathPart ('C:\MARX\MARXMENU.EXE') ;returns C:\MARX

See Also: Extension, NamePart, FilePart

Category: String

PauseAfterExecute (On/Off)
PauseAfterExecute (On/Off)
PauseAfterExecute (On/Off)
If on, this command causes the message "Press any key to return to
MarxMenu..." to appear after an execute command is executed.

See Also: Execute:

Category: Execution

PGC : Number
PGC : Number
PGC : Number
PGC returns the number 2. This is used with DisplayType to test for the
type of video card you are running.

Example:
if DisplayType = PGC then .....

See Also: DisplayType

Category: Display

Pi : Real
Pi : Real
Pi : Real
Returns the value of Pi to 18 digits.

Category: Math, Float



Computer Tyme MarxMenu Users Manual Page 107
_______________________________________________________________


PickFile (FileSpec,column,row,height) : String
PickFile (FileSpec,column,row,height) : String
PickFile (FileSpec,column,row,height) : String
Allows you to display a directory of files on the screen from a menu.
Normally used to display a list of files for the user to choose from.
Could be used in a command to load a word processor or database. Allows
selection of the file to be loaded by the word processor or database
program. The filename can be passed to a percent variable placed in the
batch file executing the application. See example files on MarxMenu
distribution disk.

Example: %FileName = PickFile('C:\WORDSTAR\*.DOC',3,4,17)

Notice: The use of a variable with a name that starts with a '%' allows
the choice to be passed to a batch file for execution.

The three numbers represent the column and row of the upper left corner
of the box and the height of the box. All DrawBox commands can be used
here to control the looks of the PickFile window. This includes the
BoxHeader command.

Category: String

PickMany(SourceArray,DestinationArray)
PickMany(SourceArray,DestinationArray)
PickMany(SourceArray,DestinationArray)
PickMany displays a string array in the current window and allows you to
choose as many lines as you want. The chosen lines go into
DestinationArray.

When the window appears, the space bar toggles the marked status of the
line. The right arrow sets the marked status and the left arrow resets
the marked status. Ctrl-Right-Arrow marks all lines, Ctrl-Left-Arrow
unmarks all lines. The return key accepts the selection and exits. The
ESC key aborts.

If using a mouse, the left button toggles the mark on the current line.
The right button accepts and exits.

If no selections are made, the DestinationArray is empty. If ESC is
pressed, the DestinationArray is left unchanged. You can test LastKey to
see what was pressed.

Category: String, Array

PickOne (Array) : String
PickOne (Array) : String
PickOne (Array) : String
This command displays an array in the current window and lets you pick a
line and returns the chosen line.

Category: String, Array



Computer Tyme MarxMenu Users Manual Page 108
_______________________________________________________________


PickPosition : Number
PickPosition : Number
PickPosition : Number
The variable PickPosition works with the PickOne command. PickPosition
returns the number of which element in the array was picked.

Category: String, Array

Port (number) : Number
Port (number) : Number
Port (number) : Number
Returns the value at the port or writes a number to a port.

Example:
X = Port(20) ;Reads port 20 into X
Port(20 = X ;Writes X to Port 20

Category: Memory

Pos (substring,string) : Number
Pos (substring,string) : Number
Pos (substring,string) : Number
Finds position of substring in string. If substring isn't found, Pos
returns 0.

Example:
pos('CD','ABCDE') returns 2

Category: String

Power (Real,Real) : Real
Power (Real,Real) : Real
Power (Real,Real) : Real
Raises a real to a given power.

Category: Math, Float

Pred (number) : Number
Pred (number) : Number
Pred (number) : Number
Returns number minus 1.

Category: Math

Print (string)
Print (string)
Print (string)
Prints string to the printer with no CR or LF. If there is an error
printing, the error is returned in FileResult.

Category: Printer

PrinterName (string)
PrinterName (string)
PrinterName (string)
Sets the file name for the printer to use. The default name is PRN.
Other common printer names include: LPT1, LPT2, LPT3, and AUX. You can
also use filenames to direct printer output to a file.

See Also: ClosePrinter

Category: Printer



Computer Tyme MarxMenu Users Manual Page 109
_______________________________________________________________


Println (String)
Println (String)
Println (String)
Prints string to the printer with CR and LF.

See Also: Print

Category: Printer

PrintScreen (On/Off)
PrintScreen (On/Off)
PrintScreen (On/Off)
Turns the print screen function on and off. Turning the print screen off
disables the print screen key. This can be used to prevent a computer
from locking up when the user kits the Print Screen key with no printer
attached.

Category: Printer

Procedure (name)
Procedure (name)
Procedure (name)
This word begins the definition of a newly named procedure. A procedure
is like a subroutine. Once the procedure is defined, all you have to do
to call the procedure is use its name. The procedure definition is
terminated by the command EndProc.

Example:

Procedure SelectFile
BoxHeaderColor ForeColor BackColor
BoxBorderColor Cyan Mag
BoxInsideColor Yellow Mag
InverseColor Yellow Red
%ExecSt = PickFile FileType 4 5 17
EndProc

Whenever we use the word SelectFile in the menu, all the lines of the
procedure SelectFile will execute.

See Also: EndProc, Return

Category: Misc

PullMenu (on/off)
PullMenu (on/off)
PullMenu (on/off)
Controls the behavior of pull down menus. Set to on if using
them. Default is Off.

Category: Display

Qualifier
Qualifier
Qualifier
Used to create qualifiers.

See Also: Var, Constant, Shared

Category: Variable



Computer Tyme MarxMenu Users Manual Page 110
_______________________________________________________________


Random : Number
Random : Number
Random : Number
The Random command returns random numbers between 0 and +2,147,483,647.
(2^31). The algorithm has been checked for good uniformity and takes
advantage of re-seeding itself from random events like the timer
interrupt and keyboard input.

Category: Math

ReadEnv (string) : String
ReadEnv (string) : String
ReadEnv (string) : String
Returns the environment string specified.

Example: PathString = ReadEnv('PATH')

See Also: SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment

Category: Environment

ReadEnvironment (array)
ReadEnvironment (array)
ReadEnvironment (array)
Reads all environment variables into an array.

Example:
Var Env
ReadEnvironment( Env )
;Env[1] will be the first environment string and
;Env[NumberOfElememts(Env)] will be the last. A variable that is
;set is LongestLine. LongestLine contains the length of the
;longest string variable read.
Writeln( 'Your current environment variables are:' )
Loop( NumberOfElements( Env ) )
Writeln( Env[LoopIndex] )
EndLoop
Writeln
Writeln('Your Environment Size is :',Str(EnvSize))
Writeln('You are using :',Str(EnvSize-EnvFree),' bytes.')
Writeln('You have :,'Str(EnvFree),' bytes free.')

See Also: SetEnv ReadEnv ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment

Category: Environment, Array



Computer Tyme MarxMenu Users Manual Page 111
_______________________________________________________________


ReadKey : String
ReadKey : String
ReadKey : String
Returns the character that is input from the keyboard.

Example:
Var Key

Repeat
Writeln( 'Press the key to exit this program.' )
Key = ReadKey
Until Key = Esc

Category: Keyboard

Readln : String
Readln : String
Readln : String
Reads a string from the keyboard.

Example:
Customer.Name = Readln
Customer.Number = Value (Readln) ;Converts to an numerical value
Customer.State = UpperCase (ReadLn)

Category: Keyboard, String

ReadTextFile (FileName,Array)
ReadTextFile (FileName,Array)
ReadTextFile (FileName,Array)

This command reads a text file into a string array. It also sets the
variable LongestLine to the length of the longest line in the file.

Example:
Var Docs

ReadTextFile('MARXMENU.DOC',Docs)
;After the read, Docs[1] becomes the first line of the file.
;Docs[NumberOfElements(Docs)] becomes the last line.
Loop NumberOfElements(Docs)
; Convert each line to its uppercase equivalent
Docs[LoopIndex] = UpperCase Docs[LoopIndex]
EndLoop
;Save the newly formatted array
WriteTextFile ('NEWMM.DOC',Docs)

Do not use FileOpen with ReadTextFile.

The power of the ReadTextFile and WriteTextFile have expanded. You can
now load and save arrays of any variable types, multidimensional arrays,
and mixed array types. This includes strings, numbers, and booleans.
File variables are also stored. When a file variable is stored and
reloaded the FileAssign command is not necessary.

Category: File, Array



Computer Tyme MarxMenu Users Manual Page 112
_______________________________________________________________


Real (Integer) : Real
Real (Integer) : Real
Real (Integer) : Real
Returns the real equivalent of an integer.

Category: Math, Float

Reboot
Reboot
Reboot
Causes the computer to do a warm reboot.

Category: Execution

Red : Number
Red : Number
Red : Number
Returns the number 4.

Category: Color

ReleaseDate : String
ReleaseDate : String
ReleaseDate : String
Returns the MarxMenu Release Date.

Category: String

Repeat
Repeat
Repeat
Used for program control. Usage:

REPEAT
(statement)
(statement)
UNTIL (condition)

Example:
Var Key

Repeat
Key = ReadKey
If Key = 'A'
Bat( 'DOLIST.EXE' )
ExitMenu
EndIf
If Key = F1 Then Help
Until Key = Esc

Category: Conditional



Computer Tyme MarxMenu Users Manual Page 113
_______________________________________________________________


ResizeWindow (Horizontal Vertical)
ResizeWindow (Horizontal Vertical)
ResizeWindow (Horizontal Vertical)
Changes the size of the top window. The horizontal and vertical numbers
are added to the current size. Use negative numbers to shrink the
window. The top left corner stays in the same place.

Example:
DrawBox 15 5 30 15
ResizeWindow 15 5

See Also: MoveWindow

Category: Display

Return (param,param,...)
Return (param,param,...)
Return (param,param,...)
Exits a procedure and optionally returns parameters to the calling
procedure. It can return as many parameters as you want as long as the
calling program uses the same number of parameters. Otherwise, you will
get an "Invalid number of parameters" error.

Example:

Procedure SmallRandomNumber
{Returns a random number between 1 and 100}
var SmallRand
SmallRand = Random mod 100
Return (SmallRand + 1)
EndProc

See Also: Procedure, EndProc

Category: Misc

ReturnCode : Number
ReturnCode : Number
ReturnCode : Number
When you use the Execute function, a ReturnCode value is fed into this
variable when you return to the menu. The code returned is the same as
what the DOS ErrorLevel would be. This will not work if you use the
UseCommand On function because COMMAND.COM would have been loaded and
the returncode would be lost.

Category: Execution

Right (string,count) : String
Right (string,count) : String
Right (string,count) : String
Returns right characters of string for length count.

Example: Right('ABCDEF',3) returns 'DEF'

Category: String



Computer Tyme MarxMenu Users Manual Page 114
_______________________________________________________________


RollWindow (number)
RollWindow (number)
RollWindow (number)
Windows can be looked at as a stack. RollWindow will roll a previous
window to the top of the stack making the previous window the current
window.

Example:
;Make the Third window on the stack the active window
RollWindow 3
;Write out message
Writeln 'You have mail waiting!'
;Now put the windows back
PushBackWindow (3)

Procedure PushBackWindow (N)

;Will roll a window back to its original position on the stack
;The parameter should be the same as the parameter for the call
;to RollWindow. If you use RollWindow(3) then use PushBackWindow(3)

Loop N
RollWindow N
EndLoop
EndProc ;PushBackWindow

See Also: CurrentWindow, SetTopWindow

Category: Display

Run variable (parameters)
Run variable (parameters)
Run variable (parameters)
This runs a procedure that was stored in a variable.

var Y

Procedure WriteSquared (X)
Writeln (X * X)
EndProc

Example:
Y = Loc(WriteSquared)
Run Y(3) ; This will write a 9 on the screen

Warning! Don't put the variable you are running in parentheses.

Run (Y,3) ; this won't work

See Also: Loc

Category: Misc



Computer Tyme MarxMenu Users Manual Page 115
_______________________________________________________________


Sat : Number
Sat : Number
Sat : Number
Saturday, Returns the number 6.

Category: Time

SavePosition (On/Off)
SavePosition (On/Off)
SavePosition (On/Off)
If SavePosition is On, MarxMenu will return to the last menu selection
you made when MarxMenu is re-entered. As you select menu layers your
keystrokes are stored in an internal string variable called KeySave. On
exit, MarxMenu writes KeySave to an environment variable KSV. On return
to MarxMenu, this variable is retrieved. The return point may be altered
by using the command KeySave = (string).

Another thing this points out is that environment variables can be used
to store information and allow MarxMenu to remember things from one
selection to another. Since MarxMenu doesn't stay memory resident, this
is the only way I have found to store information.

Category: Keyboard, Environment

ScreenHeight : Number
ScreenHeight : Number
ScreenHeight : Number
Returns number of rows of character on your screen.

Category: Display

ScreenWidth : Number
ScreenWidth : Number
ScreenWidth : Number
Returns number of columns of character on your screen.

Category: Display

ScrollLock : Boolean
ScrollLock : Boolean
ScrollLock : Boolean
Returns true if Scroll Lock is on. This command can also set the Scroll
Lock on and off.

Example:
if ScrollLock then Write 'ScrollLock is On'

ScrollLock On ;Turns ScrollLock On
ScrollLock Off ;Turns ScrollLock Off

ScrollLock (by itself) turns ScrollLock On.

See Also: CapsLock, NumLock

Category: System



Computer Tyme MarxMenu Users Manual Page 116
_______________________________________________________________


ScrollMove (On/Off)
ScrollMove (On/Off)
ScrollMove (On/Off)
This allows you to control whether or not the ScrollLock will allow you
to move the top window. Default is On.

Category: Display

Second : Number
Second : Number
Second : Number
Returns the current second.

Category: Time

SecondOf (Date) : Number
SecondOf (Date) : Number
SecondOf (Date) : Number
Returns the second of a date. If Date is passed as a string it is
converted automatically.

See Also: TimeOf, BadDate

Category: Time

SecondsInDay : number
SecondsInDay : number
SecondsInDay : number
Returns 86400

Category: Time

SecondsInHour : Number
SecondsInHour : Number
SecondsInHour : Number
Returns 3600

Category: Time

Security (on/off)
Security (on/off)
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
than using the password command.

Category: String

SelectPath : String
SelectPath : String
SelectPath : String
This command uses another program in the Computer Tyme DOS TOOLBOX
called Pick Directory to read a text into a variable. You must have
Computer Tyme Pick Directory for this feature to work.

Example:
OnKey 'B'
|%BackPath = SelectPath
cd %BackPath
backup c: a:

Category: String



Computer Tyme MarxMenu Users Manual Page 117
_______________________________________________________________


Sep : Number
Sep : Number
Sep : Number
September, Returns the number 9.

Category: Time

SerialPorts : Number
SerialPorts : Number
SerialPorts : Number
Returns number of serial ports.

Category: System

SetArraySize (Array,Size)
SetArraySize (Array,Size)
SetArraySize (Array,Size)
If the array is larger than Size the array is truncated. If it is
smaller, memory is allocated for the array.

Category: Array

SetEnv (String)
SetEnv (String)
SetEnv (String)
This is used to set environment strings. It can be used on the Current,
Parent, Master or Shell environment.

Example:

SetEnv ('PATH=C:\')
SetEnv ('COMSPEC=X:COMMAND.COM')

MarxMenu also allows you to select which environment you are working
with. This is done with the following commands.

CurrentEnvironment
ParentEnvironment
MasterEnvironment
ShellEnvironment

See Also: ReadEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment

Category: Environment



Computer Tyme MarxMenu Users Manual Page 118
_______________________________________________________________


SetTopWindow (Number)
SetTopWindow (Number)
SetTopWindow (Number)
Selects a window by number making it the current window and moves it to
the top.

Example:
DrawBox ....
ThisWindow = CurrentWindow
DrawBox ....
DrawBox ....
SetTopWindow (ThisWindow)

See Also: CurrentWindow, RollWindow, SetWindowUnder

Category: Display

SetWindowUnder (Window1,Window2)
SetWindowUnder (Window1,Window2)
SetWindowUnder (Window1,Window2)
This command moves Window1 underneath Window2. This can be used to put a
window back in the stack after you use SetTopWindow.

See Also: CurrentWindow, SetTopWindow, RollWindow

Category: Display

Shadow (on/off)
Shadow (on/off)
Shadow (on/off)
Turn window shadows on/off.

Category: Display

ShadowColor (ForeColor,BackColor)
ShadowColor (ForeColor,BackColor)
ShadowColor (ForeColor,BackColor)
Sets the color of the shadow. There are actually two shadow colors.
MarxMenu stores different values for big shadows and small shadows.

See Also: BigShadow, SmallShadow, ShadowPosition, Shadow

Category: Color

ShadowPosition (number)
ShadowPosition (number)
ShadowPosition (number)
Selects the shadow position around the window. A zero (default) sets the
shadow position to the bottom right side. A one sets the shadow position
to the bottom left. Using ShadowPosition turns shadowing on so a Shadow
On command is not required.

See Also: Shadow, ShadowColor, BigShadow, SmallShadow

Category: Display



Computer Tyme MarxMenu Users Manual Page 119
_______________________________________________________________


Shared
Shared
Shared
The key word SHARED can be used to define variables just like VAR. Any
variable defined with SHARED is passed globally to and from overlays.

The important thing is that the Shared variables must be defined exactly
the same way between the overlays. There is also a pre-defined variable
called COMMON. Technically, Shared variables are qualifiers off of
COMMON.

See Also: Var, Constant, Qualifier

Category: Variable

ShellEnvironment
ShellEnvironment
ShellEnvironment
ShellEnvironment selects the environment of the last COMMAND.COM in
memory for use with environment access commands. This is usually the
same as the Master Environment.

More than one COMMAND.COM is loaded when you are running a shell under
WINDOWS or DESQVIEW. When using these programs, you will want to access
the Shell Envoronment instead of the Master Environment. The Shell
Environment is the one that will run batch files.

See Also: ReadEnv SetEnv ReadEnvironment MasterEnvironment
See Also: CurrentEnvironment ParentEnvironment

Category: Environment

Shl : Operator
Shl : Operator
Shl : Operator
Shift left, does a binary 32 bit shift left.

Category: Math

Shr : Operator
Shr : Operator
Shr : Operator
Shift right, does a binary 32 bit shift right.

Category: Math

Sin (Radians) : Real
Sin (Radians) : Real
Sin (Radians) : Real
Returns the Sine of a real.

Category: Math, Float

SingleLineBox
SingleLineBox
SingleLineBox
Selects single line box for menu borders.

See Also: DoubleLineBox, BlockBox, CustomBox, NoBoxBorder

Category: Display



Computer Tyme MarxMenu Users Manual Page 120
_______________________________________________________________


SmallShadow
SmallShadow
SmallShadow
Selects small shadow type.

See Also: BigShadow, ShadowPosition, ShadowColor

Category: Display

SortArray (Array)
SortArray (Array)
SortArray (Array)
SortArray will do an alphabetical sort on an array of strings.

Example: Sort a Text File

Usage: DIR|MARXMENU SORT|MORE
MARXMENU SORT INFILE OUTFILE

var SortBuf
ClearScreenOnExit Off
ReadTextFile (ParamStr(2),SortBuf)
SortArray(SortBuf)
WriteTextFile (ParamStr(3),SortBuf)

Category: Array

Sound (on/off)
Sound (on/off)
Sound (on/off)
Turn sound effects on/off.

Category: Display

Sqr (Real) : Real
Sqr (Real) : Real
Sqr (Real) : Real
Returns the Square Root of a real.

Category: Math, Float

StandardIO (on/off)
StandardIO (on/off)
StandardIO (on/off)
This tells MarxMenu to use standard Input and Output file handles for
reading the keyboard and writing to the screen when turned on. When
turned off, MarxMenu does direct screen writes. When StandardIO is on,
several MarxMenu commands will send ANSI escape sequences. The commands
that send ANSI sequences are as follows:

TextColor
TextBackground
ClearScreen
ClearLine
GotoXY

Category: Display, Ansi



Computer Tyme MarxMenu Users Manual Page 121
_______________________________________________________________


Str (number) : String
Str (number) : String
Str (number) : String
Turns a number into a string.

Category: String

StuffAKey (String or Number)
StuffAKey (String or Number)
StuffAKey (String or Number)
Stuffs a single key into the DOS keyboard buffer when MarxMenu exits.
The limit is 16 characters.

Example:
StuffAKey($3F00) ;stuff the F5 key
StuffAKey F5 ;same thing

Do not mix StuffAKey with StuffKBD. Use one or the other.

Category: Execution, Keyboard, String

StuffKBD (String)
StuffKBD (String)
StuffKBD (String)
Stuffs the string into the DOS keyboard buffer when MarxMenu exits. The
limit is 16 characters.

Example:
StuffKBD 'LOGOUT' + CR

Category: Execution, Keyboard, String

StuffKeyboardNow
StuffKeyboardNow
StuffKeyboardNow
Normally the keyboard stuffing is done as MarxMenu quits. This forces
the keyboard to be stuffed immediately.

Category: Keyboard

Succ (number) : Number
Succ (number) : Number
Succ (number) : Number
Returns number plus 1.

Category: Math

Suggest (Char)
Suggest (Char)
Suggest (Char)
Normally the UseArrows command will start in the upper left hand corner.
By using the Suggest command, you can set it to start on any menu
selection.

Example:
Suggest 'E'

Category: Display



Computer Tyme MarxMenu Users Manual Page 122
_______________________________________________________________


Sun : Number
Sun : Number
Sun : Number
Sunday, Returns the number 0.

Category: Time

TextBackground (color)
TextBackground (color)
TextBackground (color)
Sets text background color.

Category: Color, Ansi

TextColor (forecolor,backcolor)
TextColor (forecolor,backcolor)
TextColor (forecolor,backcolor)
Sets the color of text to be displayed on the screen. TextColor resets
the value of CapsColor.

Category: Color, Ansi

TextMode (num)
TextMode (num)
TextMode (num)
Sets the video text mode.

0 = 40 column BW
1 = 40 column COLOR
2 = 80 column BW
3 = 80 column COLOR
258 = 43/50 line EGA BW
259 = 43/50 line EGA COLOR

Example:
TextMode BW80

Category: Video

TextPos : Number
TextPos : Number
TextPos : Number
TextPos returns the current position in a text file. This can be saved
so that you can go to the same place using TextSeek.

See Also: TextSeek

Category: File

TextSeek (Number)
TextSeek (Number)
TextSeek (Number)
TextSeek moves to a specific byte in a text file.

See Also: TextPos

Category: File



Computer Tyme MarxMenu Users Manual Page 123
_______________________________________________________________


Then
Then
Then
Conditional control.

See Also: If

Category: Conditional

Thu : Number
Thu : Number
Thu : Number
Thursday, Returns the number 4.

Category: Time

TimeOf (String) : Number
TimeOf (String) : Number
TimeOf (String) : Number
Converts a string representing a date to a date number.

Examples:
'4-7-91' ;04-07-1991 00:00:00
'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
'12:35:23a' ;04-07-1991 00:35:23
'3:15' ;04-07-1991 03:15:00

If the string can't be converted, then BadDate is set to true.

Category: Time

Timer : Number
Timer : Number
Timer : Number
Returns the system timer.

Category: Time

TimeString : String
TimeString : String
TimeString : String
Returns the time in HH:MM:SS format. 24 hour.

Category: String, Time

Today : Date
Today : Date
Today : Date
Returns the current day as a date. The date returned has the time set to
midnight or 00:00:00.

Category: Time



Computer Tyme MarxMenu Users Manual Page 124
_______________________________________________________________


Tone (Frequency,Duration)
Tone (Frequency,Duration)
Tone (Frequency,Duration)
This command plays a note at Frequency cycles per second for a period of
Duration 1/18 of a second. The reason it is in 1/18 seconds is because
there is a standard interrupt that gives me that time period. The IBM
series computers are not music oriented machines so don't throw away
your Compact Disk player.

The maximum duration is 255 1/18 of a second. Normally, MarxMenu will
create a break in between notes equal to 1/8 of the duration of the
note. If you want to eliminate the break and create a 'slur' (music
term), add 256 to the duration. This tells MarxMenu to connect the notes
without a break.

Category: Music

TotalDiskSpace : Number
TotalDiskSpace : Number
TotalDiskSpace : Number
Returns total disk space in bytes.

Example:
Writeln (TotalDiskSpace 'C')

TotalDiskSpace only looks at the first character of the string for
the drive letter.

Category: System

TotalEMS : Number
TotalEMS : Number
TotalEMS : Number
Returns total EMS memory in bytes.

Category: Memory

Trim (string)
Trim (string)
Trim (string)
Trims white space from both ends of a string. White space is
blank characters and lower.

Category: String

True : Boolean
True : Boolean
True : Boolean
Returns boolean true.

Category: Boolean

Tue : Number
Tue : Number
Tue : Number
Tuesday, Returns the number 2.

Category: Time



Computer Tyme MarxMenu Users Manual Page 125
_______________________________________________________________


UniqueFileName : String
UniqueFileName : String
UniqueFileName : String
Uses the create new file call to get a filename that is different than
any other file name. It is tied to the DOS call that is used to create a
unique file name according to the rules of your operating system.

Category: File, String

Until
Until
Until
Conditional control.

See Also: Repeat.

Category: Conditional

UpperCase (String) : String
UpperCase (String) : String
UpperCase (String) : String
Return UpperCase of String

Category: String

UpperCaseOnly : Boolean
UpperCaseOnly : Boolean
UpperCaseOnly : Boolean
Setting UpperCaseOnly to on forces text entered with Readln or ReadKey
to upper case.

Category: String

UseArrows
UseArrows
UseArrows
UseArrows tells MarxMenu that the selection will be made by moving an
inverse video bar over the selections. No parameters are required for
this command to work. It will pick the first line with a capital letter
as the first menu selection. All text in the window must be indented at
least one space and there must be one space between the end of the line
and the right wall of the window. Multiple items on the same line must
be separated by two or more spaces.

The OnKey selection is triggered by either the first capital letter in
the selection or by a number from 0 - 9 or some punctuation characters.
This number or letter will be a different color if you use the CapsColor
command. (See Also: PULL.MNU for an example).

UseArrows Off will disable this feature.

See Also: ReadKey

Category: Display



Computer Tyme MarxMenu Users Manual Page 126
_______________________________________________________________


UseCommand (on/off)
UseCommand (on/off)
UseCommand (on/off)
Used with Execute. UseCommand will load COMMAND.COM before running the
specified program. Its not as fast, because the system has to find and
load COMMAND.COM, then the specified program. The advantage is if
COMMAND.COM is loaded, it will allow you to run batch files and internal
DOS commands. It also doesn't require you to specify the COM or EXE
extension.

Example:
OnKey 'D'
|UseCommand On
|Execute 'DM'

The default is OFF.

See Also: Execute

Category: Execution

UsedDiskSpace : Number
UsedDiskSpace : Number
UsedDiskSpace : Number
Returns used disk space in bytes.

Example:
Writeln (UsedDiskSpace 'C')

UsedDiskSpace only looks at the first character of the string for the
dirve letter.

Category: System

UseNovPassword : Boolean
UseNovPassword : Boolean
UseNovPassword : Boolean
If UseNovPassword is set to true then the screen blanker will require
that the user type his Novell password to unblank the screen. Full
Novell security and intruder detection is active here. If Novell's
intruder detection is active, then if an intruder fails to type in the
password after a number of attempts, then Netware will not accept the
correct password until intruder detection allows it.

If you don't know what intruder detection is, read the Netware manuals
on the subject. It is something you should use.

Category: Novell

Value (string) : Number
Value (string) : Number
Value (string) : Number
Converts String to Number. Leading $ indicates Hex.

Category: String, Math



Computer Tyme MarxMenu Users Manual Page 127
_______________________________________________________________


Var
Var
Var
Used to create variables.

See Also: Constant, Shared, Qualifier

Category: Variable

VGA : Number
VGA : Number
VGA : Number
VGA returns the number 2. This is used with DisplayType to test for the
type of video card you are running.

Example:
if DisplayType = VGA then .....

See Also: DisplayType

Category: Display

VideoMode : Number
VideoMode : Number
VideoMode : Number
Returns Current Video Mode.

Category: Video

VideoPage : Number
VideoPage : Number
VideoPage : Number
Returns Current Video Page.

Category: Video

ViewArray (Array)
ViewArray (Array)
ViewArray (Array)
Allows you to view an array of strings in the current window. Works just
like ViewTextFile.

See Also: ViewTextFile

Category: Display, Array

ViewTextFile (Name)
ViewTextFile (Name)
ViewTextFile (Name)
This command lets you view a text file in the current window.

See Also: ViewArrayFile

Category: Display, File

Volume (drive)
Volume (drive)
Volume (drive)
Returns the volume label of the specified drive.

Category: System



Computer Tyme MarxMenu Users Manual Page 128
_______________________________________________________________


Wait (number)
Wait (number)
Wait (number)
Delay for a number of 1/100 seconds. Wait 250 delays 2 1/2 seconds.

If you are running a multi-tasker like Windows 3 or DesqView, and the
delay is over 1/4 second, MarxMenu will release time slices back to DOS
and not bog down the CPU power on long waits. MarxMenu also releases CPU
cycles while idel at the keyboard.

See Also: WaitOrKbdReady

Category: Misc

WaitOrKbdReady (Number)
WaitOrKbdReady (Number)
WaitOrKbdReady (Number)
This command is just like the WAIT command except the wait is aborted by
pressing any key. Time to wait is in hundredths of a second. This
command is useful when using MarxMenu to write a running demo.

See Also: Wait

Category: Keyboard

Wed : Number
Wed : Number
Wed : Number
Wednesday, Returns the number 3.

Category: Time

WhereX : Number
WhereX : Number
WhereX : Number
Returns the horizontal position of the cursor within the current window.

Category: Display

WhereXAbs : Number
WhereXAbs : Number
WhereXAbs : Number
Returns the horizontal screen position of the cursor.

Category: Display

WhereY : Number
WhereY : Number
WhereY : Number
Returns the vertical position of the cursor within the current window.

WhereYAbs : Number
WhereYAbs : Number
WhereYAbs : Number
Returns the vertical screen position of the cursor.

Category: Display



Computer Tyme MarxMenu Users Manual Page 129
_______________________________________________________________


While
While
While
Used for program control. Usage:

WHILE (condition)
(statement)
(statement)
ENDWHILE

Execution stays in the while loop as long as the condition is true.

See Also: EndWhile

Category: Conditional

White : Number
White : Number
White : Number
Returns the number 15.

Category: Color

WindowHeight : Number
WindowHeight : Number
WindowHeight : Number
Returns number of rows in current window.

Category: Display

WindowWidth : Number
WindowWidth : Number
WindowWidth : Number
Returns number of columns in current window.

Category: Display

Write (string)
Write (string)
Write (string)
Writes (string) on the screen at the current cursor position.

Category: Display

WriteCenter (string)
WriteCenter (string)
WriteCenter (string)
Writes (string) centered in current window.

Category: Display

Writeln (string)
Writeln (string)
Writeln (string)
Writes (string) on the screen followed by a CR-LF (carriage
return-line feed).

Category: Display



Computer Tyme MarxMenu Users Manual Page 130
_______________________________________________________________


WriteTextFile (FileName,Array)
WriteTextFile (FileName,Array)
WriteTextFile (FileName,Array)
This command writes a string array to a text file. Do not use FileCreate
of any other file commands with this. This command does it all.

See Also: ReadTextFile

Category: File, Array

WriteVertical (string)
WriteVertical (string)
WriteVertical (string)
Writes (string) vertically on the screen from the current cursor
position.

Example:
WriteVertical( 'Hello' )

;This would display
H
e
l
l
o

Category: Display

Xor : Operator
Xor : Operator
Xor : Operator
Returns logical Xor if operators are boolean; or bitwise Xor if
operators are numeric.

Category: Math, Boolean

Year : Number
Year : Number
Year : Number
Returns current Year.

Category: Time

YearOf (Date) : Number
YearOf (Date) : Number
YearOf (Date) : Number
Returns the year of a date. If Date is passed as a string it is
converted automatically.

See Also: TimeOf, BadDate

Category: Time

Yellow : Number
Yellow : Number
Yellow : Number
Returns the number 14.

Category: Color

Yes : Boolean
Yes : Boolean
Yes : Boolean
Returns True.



Computer Tyme MarxMenu Users Manual Page 131
_______________________________________________________________


STRING AND CHARACTER CONSTANTS
STRING AND CHARACTER CONSTANTS
STRING AND CHARACTER CONSTANTS

BKSP = #8
CR = #13
CRLF = #13#10
ESC = #27
FF = #12
LF = #10

F1 = #0#59
F2 = #0#60
F3 = #0#61
F4 = #0#62
F5 = #0#63
F6 = #0#64
F7 = #0#65
F8 = #0#66
F9 = #0#67
F10 = #0#68
F11 = #0#133
F12 = #0#134

SF1 = #0#84
SF2 = #0#85
SF3 = #0#86
SF4 = #0#87
SF5 = #0#88
SF6 = #0#89
SF7 = #0#90
SF8 = #0#91
SF9 = #0#92
SF10 = #0#93
SF11 = #0#135
SF12 = #0#136

CF1 = #0#94
CF2 = #0#95
CF3 = #0#96
CF4 = #0#97
CF5 = #0#98
CF6 = #0#99
CF7 = #0#100
CF8 = #0#101
CF9 = #0#102
CF10 = #0#103
CF11 = #0#137
CF12 = #0#138



Computer Tyme MarxMenu Users Manual Page 132
_______________________________________________________________


AF1 = #0#104
AF2 = #0#105
AF3 = #0#106
AF4 = #0#107
AF5 = #0#108
AF6 = #0#109
AF7 = #0#110
AF8 = #0#111
AF9 = #0#112
AF10 = #0#113
AF11 = #0#139
AF12 = #0#140

ALT1 = #0#120
ALT2 = #0#121
ALT3 = #0#122
ALT4 = #0#123
ALT5 = #0#124
ALT6 = #0#125
ALT7 = #0#126
ALT8 = #0#127
ALT9 = #0#128
ALT0 = #0#129

CONDITIONAL STATEMENTS
CONDITIONAL STATEMENTS
CONDITIONAL STATEMENTS

MarxMenu has a full complement of conditional statements. They are as
follows:

IF->ELSE->ENDIF Where, IF [condition]
statement
statement
ELSE
statement
statement
ENDIF

IF->THEN Where, IF [condition] THEN statement

REPEAT->UNTIL Where, REPEAT
statement
statement
UNTIL [condition]

WHILE->ENDWHILE Where, WHILE [conditon]
statement
statement
ENDWHILE



Computer Tyme MarxMenu Users Manual Page 133
_______________________________________________________________


PROCEDURE->ENDPROC PROCEDURE (name)
statement
statement
ENDPROC


LOOP->ENDLOOP LOOP (number)
statement
statement
ENDLOOP

ENVIRONMENT VARIABLES USED BY MARXMENU
ENVIRONMENT VARIABLES USED BY MARXMENU
ENVIRONMENT VARIABLES USED BY MARXMENU

MarxMenu uses a variety of environment variables to control various
MarxMenu functions. Many of these variables are optional.

Set MouseX=(Number)

Sets the horizontal sensitivity of the mouse. Default is 15.

Set MouseY=(Number)

Sets the vertical sensitivity of the mouse. Default is 25.

Set MxEcho=(On/Off)

If you set the first line of MARX.BAT to @ECHO %MXECHO% then by setting
the environment variable MxEcho to ON or OFF, you can control the echo
in the MARX.BAT file without having to edit it. This allows you to do
diagnostics on a network without messing up other users.

Set Temp=(Directory)

Normally, MarxMenu creates temporary batch files in the same directory
as MARXMENU.EXE. If you set TEMP to a directory, MarxMenu will use this
directory instead. This complies with Windows / DOS 5.0 standards.

Set MxCmd=(Command)

MarxMenu uses MXCMD to control what the MARX.BAT file executes. You must
have enough environment space available for MarxMenu to use.

Set KSV=

MarxMenu stores a series of keystrokes in the KSV variable when
SavePosition is On.

Set STATION=(Number)

If you are on a network that is not Novell, then you should set this
variable to a unique number for each station between 0 and 255.



Computer Tyme MarxMenu Users Manual Page 134
_______________________________________________________________


Set TASK=(Number)

If you are running a multi-tasking operating system other than DesqView,
and MarxMenu is running more than one task, then set an environment
variable TASK to a unique number for each task.

MarxMenu also accesses your COMSPEC variable and your PATH variable when
executing programs.

COMMAND CATEGORIES
COMMAND CATEGORIES
COMMAND CATEGORIES

Here is a breakdown of MarxMenu commands by command category. Many
MarxMenu commands are in several categories. These are the same
categories as in the MarxHelp utility.

MISC COMMANDS
MISC COMMANDS
MISC COMMANDS

| | (Vertical Bar)
( ( : Operator
) ) : Operator
Alias Alias
AllowAbort AllowAbort (On/Off)
AllowEsc AllowEsc (On/Off)
Comment Comment
EndComment EndComment
EndProc EndProc
Include Include (MenuName)
Loc Loc (Procedure)
NetworkVersion NetworkVersion : Boolean
Procedure Procedure (name)
Return Return (param,param,...)
Run Run variable (parameters)
Wait Wait (number)



Computer Tyme MarxMenu Users Manual Page 135
_______________________________________________________________


MATH COMMANDS
MATH COMMANDS
MATH COMMANDS

* * : Operator
+ + : Operator
- - : Operator
/ / : Operator
< < : Operator
<= <= : Operator
<> <> : Operator
= = : Operator
> > : Operator
>= >= : Operator
Abs Abs : Number
And And : Operator
ArcTan ArcTan (Radians) : Real
Cos Cos (Radians) : Real
Exp Exp (Real) : Real
Fraction Fraction (Real) : Real
Int Int (Real) : Real
Integer Integer (Real) : Number
Ln Ln (Real) : Real
Max Max (Num,Num) : Num
Min Min (Num,Num) : Num
Mod Mod : Operator
Not Not : Operator
Or Or : Operator
Pi Pi : Real
Power Power (Real,Real) : Real
Pred Pred (number) : Number
Random Random : Number
Real Real (Integer) : Real
Shl Shl : Operator
Shr Shr : Operator
Sin Sin (Radians) : Real
Sqr Sqr (Real) : Real
Succ Succ (number) : Number
Value Value (string) : Number
Xor Xor : Operator



Computer Tyme MarxMenu Users Manual Page 136
_______________________________________________________________


FLOAT COMMANDS
FLOAT COMMANDS
FLOAT COMMANDS

* * : Operator
+ + : Operator
- - : Operator
/ / : Operator
< < : Operator
<= <= : Operator
<> <> : Operator
= = : Operator
> > : Operator
>= >= : Operator
Abs Abs : Number
ArcTan ArcTan (Radians) : Real
Cos Cos (Radians) : Real
Exp Exp (Real) : Real
Fraction Fraction (Real) : Real
Int Int (Real) : Real
Integer Integer (Real) : Number
Ln Ln (Real) : Real
Max Max (Num,Num) : Num
Min Min (Num,Num) : Num
Pi Pi : Real
Power Power (Real,Real) : Real
Real Real (Integer) : Real
Sin Sin (Radians) : Real
Sqr Sqr (Real) : Real

STRING COMMANDS
STRING COMMANDS
STRING COMMANDS

+ + : Operator
< < : Operator
<= <= : Operator
<> <> : Operator
= = : Operator
> > : Operator
>= >= : Operator
%MenuFileName %MenuFileName : String
BatFileName BatFileName : String
BlankMessage BlankMessage (string)
Char Char (number) : String
CleanFileName CleanFileName (string) : String
CmdLine CmdLine : String
DateString DateString : String
Delete Delete (string,pos,count)
DosVersionString DosVersionString : String
Extension Extension (String) : String
FilePart FilePart (String) : String
ForceExtension ForceExtension (String,Ext) : String
InputString InputString (String)
Insert Insert (InsString,OrigString,Pos)
KeySave KeySave : String



Computer Tyme MarxMenu Users Manual Page 137
_______________________________________________________________


LastKey LastKey : String
Left Left (string,count) : String
Length Length (string) : Number
MarxVersion MarxVersion : String
Max Max (Num,Num) : Num
Mid Mid (string,pos,count) : String
Min Min (Num,Num) : Num
MxCmd MxCmd : String
NamePart NamePart (String) : String
NextWord NextWord (String) : String
OptionSwitch OptionSwitch (String1,String2) : Boolean
Ord Ord (Char) : Number
OverKey OverKey : String
ParamStr ParamStr (Num) : String
Path Path : String
PathPart PathPart (String) : String
PickFile PickFile (FileSpec,column,row,height) : String
PickMany PickMany(SourceArray,DestinationArray)
PickOne PickOne (Array) : String
PickPosition PickPosition : Number
Pos Pos (substring,string) : Number
Readln Readln : String
ReleaseDate ReleaseDate : String
Right Right (string,count) : String
Security Security (on/off)
SelectPath SelectPath : String
Str Str (number) : String
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
TimeString TimeString : String
Trim Trim (string)
UniqueFileName UniqueFileName : String
UpperCase UpperCase (String) : String
UpperCaseOnly UpperCaseOnly : Boolean
Value Value (string) : Number

BOOLEAN COMMANDS
BOOLEAN COMMANDS
BOOLEAN COMMANDS

And And : Operator
False False : Boolean
No No : Boolean
Not Not : Operator
Off Off : Boolean
On On : Boolean
Or Or : Operator
True True : Boolean
Xor Xor : Operator



Computer Tyme MarxMenu Users Manual Page 138
_______________________________________________________________


ARRAY COMMANDS
ARRAY COMMANDS
ARRAY COMMANDS

AppendArray AppendArray (Array,Value)
Delete Delete (string,pos,count)
Dispose Dispose (Variable)
NovGroupMembers NovGroupsMembers (Group,Array)
NovPrintQueues NovPrintQueues (Array)
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovServers NovServers (Array)
NovScanProperties NovScanProperties (Array, Object, ObjectType)
NovUsers NovUsers (Array)
NovUsersLoggedIn NovUsersLoggedIn (Array)
NumberOfElements NumberOfElememts (array) : Number
PickMany PickMany(SourceArray,DestinationArray)
PickOne PickOne (Array) : String
PickPosition PickPosition : Number
ReadEnvironment ReadEnvironment (array)
ReadTextFile ReadTextFile (FileName,Array)
SetArraySize SetArraySize (Array,Size)
SortArray SortArray (Array)
ViewArray ViewArray (Array)
WriteTextFile WriteTextFile (FileName,Array)

MEMORY COMMANDS
MEMORY COMMANDS
MEMORY COMMANDS

ApplicationMemory ApplicationMemory : Number
Dispose Dispose (Variable)
FreeEms FreeEMS : Number
FreeMemory FreeMemory : Number
Mem Mem (seg,ofs) : Number
MemL MemL (seg,ofs) : Number
MemSize MemSize : Number
MemW MemW (seg,ofs) : Number
Port Port (number) : Number
TotalEms TotalEMS : Number



Computer Tyme MarxMenu Users Manual Page 139
_______________________________________________________________


TIME COMMANDS
TIME COMMANDS
TIME COMMANDS

Apr Apr : Number
Aug Aug : Number
BadDate BadDate : Boolean
DateString DateString : String
Day Day : Number
DayOf DayOf (Date) : Number
DayOfWeek DayOfWeek : Number
DayOfWeekOf DayOfWeekOf (Date) : Number
Dec Dec : Number
Feb Feb : Number
Fri Fri : Number
Hour Hour : Number
HourOf HourOf (Date) : Number
Hundredth Hundredth : Number
Jan Jan : Number
Jul Jul : Number
Jun Jun : Number
Mar Mar : Number
May May : Number
Minute Minute : Number
MinuteOf MinuteOf (Date) : Number
Mon Mon : Number
Month Month : Number
MonthOf MonthOf (Date) : Number
Nov Nov : Number
NovAccountExpDate NovAccountExpDate (UserName) : Date
NovLastLoginDate NovLastLoginDate (User) : Date
NovPasswordExpDate NovPasswordExpDate (UserName) : Date
Now Now : Date
Oct Oct : Number
Sat Sat : Number
Second Second : Number
SecondOf SecondOf (Date) : Number
SecondInDay SecondsInDay : number
SecondInHour SecondsInHour : Number
Sep Sep : Number
Sun Sun : Number
Thu Thu : Number
TimeOf TimeOf (String) : Number
Timer Timer : Number
TimeString TimeString : String
Today Today : Date
Tue Tue : Number
Wed Wed : Number
Year Year : Number
YearOf YearOf (Date) : Number



Computer Tyme MarxMenu Users Manual Page 140
_______________________________________________________________


EXECUTION COMMANDS
EXECUTION COMMANDS
EXECUTION COMMANDS

Bat Bat (string)
Chain Chain (MenuName)
ClearScreenFirst ClearScreenFirst (on/off)
DosWindow DosWindow (on/off)
Execute Execute (command string)
ExitCode ExitCode
ExitMenu ExitMenu
IdleProgram IdleProgram : Procedure
Jump Jump (menu)
KeySave KeySave : String
Logoff Logoff
LogoffTime LogoffTime : Number
MxCmd MxCmd : String
NoExit NoExit
Overlay OverLay (MenuName)
PauseAfterExecute PauseAfterExecute (On/Off)
Reboot Reboot
ReturnCode ReturnCode : Number
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
UseCommand UseCommand (on/off)

DISPLAY COMMANDS
DISPLAY COMMANDS
DISPLAY COMMANDS

BigShadow BigShadow
Blanked Blanked : Boolean
BlankTime BlankTime (minutes)
BlockBox BlockBox
BoxHeader BoxHeader (string)
BoxHeaderLeft BoxHeaderLeft (string)
BoxHeaderRight BoxHeaderRight (string)
BoxFooter BoxFooter (string)
BoxFooterLeft BoxFooterLeft (string)
BoxFooterRight BoxFooterRight (string)
BrightBackground BrightBackground (On/Off)
CGA CGA : Number
ClearLine ClearLine [char]
ClearScreen ClearScreen [char]
ClearScreenOnExit ClearScreenOnExit (on/off)
ClockMode ClockMode
ClockPos ClockPos (column,row)
Console Console (On/Off)
ConsolePos ConsolePos (column,row)
CurrentWindow CurrentWindow : Number
Cursor Cursor (On/Off)
CustomBox CustomBox (String)
DisplayType DisplayType : Number
DoubleLineBox DoubleLineBox
DrawBox DrawBox (column,row,width,height)
EGA EGA : Number



Computer Tyme MarxMenu Users Manual Page 141
_______________________________________________________________


EraseTopWindow EraseTopWindow
EraseWindow EraseWindow (Number)
Explode Explode (on/off)
ExplodeDelay ExplodeDelay (number)
ForceExplosion ForceExplosion (On/Off)
GotoXY GotoXY (column,row)
HercMono HercMono : Number
InactiveBox InactiveBox (BoxType)
LockWord LockWord (word)
MCGA MCGA : Number
MoveWindow MoveWindow (Horizontal,Vertical)
NoBoxBorder NoBoxBorder
PGC PGC : Number
PullMenu PullMenu (on/off)
ResizeWindow ResizeWindow (Horizontal Vertical)
RollWindow RollWindow (number)
ScreenHeight ScreenHeight : Number
ScreenWidth ScreenWidth : Number
ScrollMove ScrollMove (On/Off)
SetTopWindow SetTopWindow (Number)
SetWindowUnder SetWindowUnder (Window1,Window2)
Shadow Shadow (on/off)
ShadowPosition ShadowPosition (number)
SingleLineBox SingleLineBox
SmallShadow SmallShadow
Sound Sound (on/off)
StandardIO StandardIO (on/off)
Suggest Suggest (Char)
UseArrows UseArrows
VGA VGA : Number
ViewArray ViewArray (Array)
ViewTextFile ViewTextFile (Name)
WhereX WhereX : Number
WhereXAbs WhereXAbs : Number
WhereYAbs WhereYAbs : Number
WindowHeight WindowHeight : Number
WindowWidth WindowWidth : Number
Write Write (string)
WriteCenter WriteCenter (string)
Writeln Writeln (string)
WriteVertical WriteVertical (string)



Computer Tyme MarxMenu Users Manual Page 142
_______________________________________________________________


COLOR COMMANDS
COLOR COMMANDS
COLOR COMMANDS

Black Black : Number
Blink Blink : Boolean
Blue Blue : Number
BoxBorderColor BoxBorderColor (forecolor,backcolor)
BoxHeaderColor BoxHeaderColor (forecolor,backcolor)
BoxInsideColor BoxInsideColor (forecolor,backcolor)
Brown Brown : Number
CapsColor CapsColor (forecolor,backcolor)
ClockColor ClockColor (forecolor,backcolor)
ConsoleBorderColor ConsoleBorderColor (Color,Color)
ConsoleHeaderColor ConsoleHeaderColor (Color,Color)
ConsoleInsideColor ConsoleInsideColor (Color,Color)
Cyan Cyan : Number
DGrey DGrey : Number
Green Green : Number
Grey Grey : Number
InactiveBoxColor InactiveBoxColor (foreground,background)
InverseColor InverseColor (forecolor,backcolor)
LBlue LBlue : Number
LCyan LCyan : Number
LGreen LGreen : Number
LGrey LGrey : Number
LMag LMag : Number
LMagenta LMagenta : Number
LRed LRed : Number
Mag Mag : Number
Magenta Magenta : Number
Red Red : Number
ShadowColor ShadowColor (ForeColor,BackColor)
TextBackground TextBackground (color)
TextColor TextColor (forecolor,backcolor)
White White : Number
Yellow Yellow : Number

VIDEO COMMANDS
VIDEO COMMANDS
VIDEO COMMANDS

BW40 BW40 : Number
BW80 BW80 : Number
CO40 CO40 : Number
CO80 CO80 : Number
ColorScreen ColorScreen : Boolean
Mono Mono : Number
TextMode TextMode (num)
VideoMode VideoMode : Number
VideoPage VideoPage : Number



Computer Tyme MarxMenu Users Manual Page 143
_______________________________________________________________


SYSTEM COMMANDS
SYSTEM COMMANDS
SYSTEM COMMANDS

CapsLock CapsLock : Boolean
ClusterSize ClusterSize : Number
DosVersion DosVersion : Number
DosVersionString DosVersionString : String
Drives Drives : Number
Floppies Floppies : Number
FreeDiskSpace FreeDiskSpace : Number
MinorDosVersion MinorDosVersion : Number
NumLock NumLock : Boolean
ParallelPorts ParallelPorts : Number
ScrollLock ScrollLock : Boolean
SerialPorts SerialPorts : Number
TotalDiskSpace TotalDiskSpace : Number
UsedDiskSpace UsedDiskSpace : Number
Volume Volume (drive)

FILE COMMANDS
FILE COMMANDS
FILE COMMANDS

ChDir ChDir (string)
DelFile DelFile (Name)
EndOfFile EndOfFile (FileVar) : Boolean
ExistDir ExistDir (directory) : Boolean
ExistFile ExistFile : Boolean
ExistOnPath ExistOnPath (string) : String
FileAppend FileAppend (FileVar)
FileAssign FileAssign (FileVar,String)
FileAttr FileAttr (string) : Number
FileClose FileClose (FileVar)
FileCreate FileCreate (FileVar)
FileDate FileDate (string) : Number
FileFlush FileFlush (FileVar)
FileLog FileLog (FileName,String)
FileOpen FileOpen (FileVar)
FilePos FilePos (FileVar) : Number
FileReadln FileReadln (FileVar) : String
FileRename FileRename (Old,New)
FileResult FileResult : Number
FileSeek FileSeek (FileVar,Number)
FileSize FileSize (string) : Number
FileWrite FileWrite (FileVar,String)
FileWriteln FileWriteln (FileVar,String)
ReadTextFile ReadTextFile (FileName,Array)
TextPos TextPos : Number
TextSeek TextSeek (Number)
UniqueFileName UniqueFileName : String
ViewTextFile ViewTextFile (Name)
WriteTextFile WriteTextFile (FileName,Array)



Computer Tyme MarxMenu Users Manual Page 144
_______________________________________________________________


ANSI COMMANDS
ANSI COMMANDS
ANSI COMMANDS

ClearLine ClearLine [char]
ClearScreen ClearScreen [char]
GotoXY GotoXY (column,row)
StandardIO StandardIO (on/off)
TextBackground TextBackground (color)
TextColor TextColor (forecolor,backcolor)

PRINTER COMMANDS
PRINTER COMMANDS
PRINTER COMMANDS

ClosePrinter ClosePrinter
NovPrintQueues NovPrintQueues (Array)
OpenPrinter OpenPrinter
Print Print (string)
PrinterName PrinterName (string)
Println Println (String)
PrintScreen PrintScreen (On/Off)

ENVIRONMENT COMMANDS
ENVIRONMENT COMMANDS
ENVIRONMENT COMMANDS

CurrentEnvironment CurrentEnvironment
EnvFree EnvFree : Number
EnvSize EnvSize : Number
FixPath FixPath
KeySave KeySave : String
MasterEnvironment MasterEnvironment
ModifyPath ModifyPath
MxCmd MxCmd : String
ParentEnvironment ParentEnvironment
ReadEnv ReadEnv (string) : String
ReadEnvironment ReadEnvironment (array)
SavePosition SavePosition (On/Off)
SetEnv SetEnv (String)
ShellEnvironment ShellEnvironment



Computer Tyme MarxMenu Users Manual Page 145
_______________________________________________________________


DESQVIEW COMMANDS
DESQVIEW COMMANDS
DESQVIEW COMMANDS

DvAppNumber DvAppNumber : Number
DvFrame DvFrame (Handle,On/Off)
DvFreeze DvFreeze (Handle)
DvHide DvHide (Handle)
DvKillTask DvKillTask (Handle)
DvLastHandle DvLastHandle : Number
DvLoaded DvLoaded : Boolean
DvMoveWindow DvMoveWindow (Handle,X,Y)
DvMyHandle DvMyHandle : Number
DvPifExecute DvPifExecute (Pif File)
DvResizeWindow DvResizeWindow (Handle,Width,Height)
DvSetBottom DvSetBottom (Handle)
DvSetTop DvSetTop (Handle)
DvUnFreeze DvUnFreeze (Handle)
DvUnHide DvUnHide (Handle)

CONDITIONAL COMMANDS
CONDITIONAL COMMANDS
CONDITIONAL COMMANDS

Else Else
Endif EndIf
EndLoop EndLoop
EndWhile EndWhile
If If
Loop Loop
LoopIndex LoopIndex
LoopLimit LoopLimit
OnKey OnKey (char)
OnScreenOnly OnScreenOnly (On/Off)
Password Password (Pswd,column,row)
Repeat Repeat
Then Then
Until Until
While While

KEYBOARD COMMANDS
KEYBOARD COMMANDS
KEYBOARD COMMANDS

InputString InputString (String)
InsertMode InsertMode (On/Off)
KbdReady KbdReady : Boolean
MenuKeyBuffer MenuKeyBuffer
ReadKey ReadKey : String
Readln Readln : String
SavePosition SavePosition (On/Off)
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
StuffKeyboardNow StuffKeyboardNow
WaitOrKbdReady WaitOrKbdReady (Number)



Computer Tyme MarxMenu Users Manual Page 146
_______________________________________________________________


MOUSECONTROL COMMANDS
MOUSECONTROL COMMANDS
MOUSECONTROL COMMANDS

KeyFromMouse KeyFromMouse : Boolean
Mouse Mouse
MouseHorizontal MouseHorizontal (Number)
MouseVertical MouseVertical (Number)

MUSIC COMMANDS
MUSIC COMMANDS
MUSIC COMMANDS

KillMusic KillMusic
NotesLeft NotesLeft : Num
NotesPlayed NotesPlayed : Num
Tone Tone (Frequency,Duration)

NOVELL COMMANDS
NOVELL COMMANDS
NOVELL COMMANDS

MachineName MachineName : String
NovAccountExpDate NovAccountExpDate (UserName) : Date
NovAddUserToGroup NovAddUserToGroup (User,Group)
NovAttach NovAttach (Server)
NovChangePassword NovChangePassword (OldPassword,NewPassword)
NovCloseSemaphore NovCloseSemaphore (Name)
NovConnection NovConnection : Number
NovConsoleOperator NovConsoleOperator : Boolean
NovDefaultServer NovDefaultServer : String
NovDetach NovDetach (Server)
NovGraceLoginReset NovGraceLoginReset (User) : Num
NovGraceLogins NovGraceLogins (User) : Num
NovGroupMembers NovGroupsMembers (Group,Array)
NovGroups NovGroups (Array)
NovInGroup NovInGroup (Group) : Boolean
NovLastLoginDate NovLastLoginDate (User) : Date
NovLogin NovLogin (Name,Password)
NovLoginName NovLoginName (Connection) : String
NovLogout NovLogout
NovMapDrive NovMapDrive (Drive,Directory)
NovMinPasswordLength NovMinPasswordLength (User) : Num
NovMyLoginName NovMyLoginName : String
NovMyPassword NovMyPassword (Password) : Boolean
NovOpenSemaphore NovOpenSemaphore (Name,Value)
NovPasswordExpDate NovPasswordExpDate (UserName) : Date
NovPreferredServer NovPreferredServer : String
NovPrimaryServer NovPrimaryServer : String
NovPrintQueues NovPrintQueues (Array)
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovRemoveUserFromGroup NovRemoveUserFromGroup (User,Group)
NovResult NovResult : Number
NovSecurityEquals NovSecurityEquals (Security) : Boolean
NovSemaphoreTimeOut NovSemaphoreTimeOut
NovSemaphoreUsers NovSemaphoreUsers (Name) : Number
NovSemaphoreValue NovSemaphoreValue (Name) : Number



Computer Tyme MarxMenu Users Manual Page 147
_______________________________________________________________


NovServers NovServers (Array)
NovScanProperties NovScanProperties (Array, Object, ObjectType)
NovSetPreferredServer NovSetPreferredServer (Server)
NovSetPrimaryServer NovSetPrimaryServer (Server)
NovSignalSemaphore NovSignalSemaphore (Name)
NovStationAddress NovStationAddress (Connection) : String
NovUserInGroup NovUserInGroup (Name,Group) : Boolean
NovUsers NovUsers (Array)
NovUsersLoggedIn NovUsersLoggedIn (Array)
NovWaitOnSemaphore NovWaitOnSemaphore (Name) : Boolean
UseNovPassword UseNovPassword : Boolean

VARIABLE COMMANDS
VARIABLE COMMANDS
VARIABLE COMMANDS

Qualifier Qualifier
Shared Shared
Var Var



Other Computer Tyme Software:
======================================================

The Computer Tyme Dos ToolBox... Makes DOS easier for the novice,
more powerful for the professional.

DIRECTORY MASTER is a powerful hard disk managment utility. It
brings up your hard disk files and allows you to mark selected
files so you can copy them, delete them, or move them. It also
allows you to rename files, change dates, and change attributes.
You can also run programs or set up your function keys to run
programs on selected files.

DOLIST makes being at DOS easier. It gives you full line editing,
like a word processor, for your commands. It also stores commands
so that you can re-execute them. It remembers subdirectories and
allows you to go back to them by pressing the TAB key. It offers
programmable function keys, DOS extensions, multiple execution,
and many more features you have got to have.

PICK DIRECTORY allows you to move through the directory system by
displaying a graphic tree and letting you use your arrow keys to
move around. It also lets you create, delete, rename, and hide
directories.

TEDIT (from SemWare) is a powerful, easy to use full screen
editor.

MARXTSR is a set of memory and TSR management utilities that let
you load and unload TSRs (Terminate and stay resident programs)
from memory. Utilities to list menory allocation and turn TSR's
on and off.

And many more ... Also includes is D, a fancy directory listing
program; WHEREIS, for finding stuff on you hard disk, SORT, MOVE,
FIND, FREE, PIPEDIR, VERSION, and many more.

The Dos Toolbox sells for $59.95.

======================================================

We are also selling QEdit from Semware. QEdit is a professional
editor from Semware. TEdit is a mini version of QEdit. If you
like TEdit, You'll love QEdit.

1-800-548-5353 Order Line
1-417-866-1222 Voice Line
1-417-866-1665 BBS Data line * 1200/2400 * 8N1 * ANSI or VT100

MarxMenu comes with MarxEdit and MARXTSR manager and a few goodies out of
the DOS ToolBox. The Network Survival Kit is a network version of almost
every utility I've ever written. It's sold on a per fileserver basis.

_______
____|__ | (tm)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| APPROVED VENDOR

==========================================







Make Check Computer Tyme Order Form 2.29
Payable To: 411 North Sherman Suite 300
Springfield Mo. 65802
(417) 866-1222 (800) 548-5353

Please send me Computer Tyme Software.

=============================================================

Name: ________________________________________________

Address: ________________________________________________

City/St/Zip: ________________________________________________

Phone: ________________________________________________

Computer: ________________________________________________

Got From: ________________________________________________

Comments: ________________________________________________

________________________________________________


Single User Version:

___ Enclosed is $59.95 for MarxMenu.

___ Enclosed is $59.95 for the DOS ToolBox.

___ Enclosed is $99.95 for MarxMenu, the Dos ToolBox and DM3.


Network Version (1 per file server):

___ Enclosed is $495 for Network Survival Kit.

___ Add $3.00 for Shipping and Handling.

___ I need 3 1/2 Inch Media.


Credit Card Number: _______________ Expiration Date: ________

Signatyre: __________________________________________________

Master Card __ Visa __ Discover __

* We do not take American Express *

=============================================================


 December 28, 2017  Add comments

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)