home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
batch
/
mxmnu233.zip
/
MARXMENU.DOC
< prev
next >
Wrap
Text File
|
1991-09-30
|
350KB
|
9,408 lines
===================================================================
<*> Computer Tyme MarxMenu <*>
Reference Manual
Copyright 1989 - 1991 by Marc Perkel
All Rights Reserved * Version 2.33 * Release Date: 09-30-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
Installation ...................................... 3
Installing the Network Survival Kit ............... 4
Overview of the MarxMenu System ................... 4
-- What MarxMenu Does ............................. 6
The MARX.BAT File ................................. 7
-- DROPTO.BAT ..................................... 10
-- Support for early DOS versions ................. 11
-- About Environment Variables .................... 11
-- Dealing with Multiple DOS Shells ............... 13
-- MarxMenu and TSR Control ....................... 13
Sample Menus on Disk .............................. 14
Network Users ..................................... 15
-- Network Menu Strategy .......................... 15
-- Novell Users ................................... 16
---- The Novell Menu Translator ................... 16
---- Logging out under Menu Control ............... 17
---- Logging in with MarxMenu ..................... 18
---- Using Novell's Login ......................... 18
------ The CONFIG.SYS File ........................ 19
------ The AUTOEXEC.BAT File ...................... 20
------ The SHELL.CFG File ......................... 21
------ Using a Menu File to Log In ................ 22
------ Novell Search Drives ....................... 22
---- Setting File Attributes ...................... 23
---- Novell Semaphores ............................ 24
Running a MarxMenu ................................ 25
Upgrading MarxMenu ................................ 25
Customizing MarxMenu Sample Files ................. 26
Menu Analysis ..................................... 27
Onkey Statements .................................. 27
Popup Menus ....................................... 28
The Console ....................................... 29
Repositioning the Top Window ...................... 29
Mouse Support ..................................... 30
Starting off the Easy Way ......................... 30
About Variables ................................... 30
-- Numeric Variables .............................. 31
-- Boolean Variables .............................. 32
-- String Variables ............................... 32
-- Real Numbers ................................... 32
-- Local Variables ................................ 33
-- Dates .......................................... 34
-- Passing Parameters to Procedures ............... 34
About Constants ................................... 35
Computer Tyme MarxMenu * Table of Contents Page 2
_______________________________________________________________
About Arrays ...................................... 36
About Qualifiers .................................. 37
Pointer Variables ................................. 38
Comments in Menu Files ............................ 39
The MarxMenu Compiler ............................. 39
MarxMenu Language Rules ........................... 40
Compiler Compatibility ............................ 40
A word about DOS versions ......................... 41
A word about BUGS ................................. 42
Tips From the Master .............................. 42
-- Computers do Simple Tasks ...................... 42
-- Complex Tasks are made of Simple Tasks ......... 43
-- Learning Good Programming Habits ............... 43
-- Use Long Names ................................. 44
-- Use Comments Liberally ......................... 45
-- Indent Your code ............................... 46
-- For Duplicate Tasks, Use Procedures ............ 47
-- Don't Program Yourself into a Corner ........... 47
-- For the POWER User ............................. 48
Where MarxMenu is Heading ......................... 49
A word to Writers and Reviewers ................... 49
Using MarxHelp .................................... 50
Printing the Example Files ........................ 51
Security Issues ................................... 51
MarxMenu Commands ................................. 52
-- | .............................................. 52
-- ( .............................................. 53
-- ) .............................................. 53
-- * .............................................. 53
-- + .............................................. 53
-- - .............................................. 53
-- / .............................................. 53
-- < .............................................. 53
-- <= ............................................. 54
-- <> ............................................. 54
-- = .............................................. 54
-- > .............................................. 54
-- >= ............................................. 54
-- %MenuFileName .................................. 54
-- Abs ............................................ 54
-- Actual ......................................... 55
-- Alias .......................................... 55
-- AllowAbort ..................................... 55
-- AllowEsc ....................................... 56
-- And ............................................ 56
-- AppendArray .................................... 56
-- ApplicationMemory .............................. 56
-- ArcTan ......................................... 56
-- BadDate ........................................ 57
-- Bat ............................................ 57
-- BatFileName .................................... 57
-- BigShadow ...................................... 57
Computer Tyme MarxMenu * Table of Contents Page 3
_______________________________________________________________
-- Blanked ........................................ 57
-- BlankMessage ................................... 58
-- BlankScreenProgram ............................. 58
-- BlankTime ...................................... 58
-- Blink .......................................... 59
-- BlockBox ....................................... 59
-- BoxBorderColor ................................. 59
-- BoxHeader ...................................... 59
-- BoxHeaderColor ................................. 60
-- BoxHeaderLeft .................................. 60
-- BoxHeaderRight ................................. 60
-- BoxFooter ...................................... 60
-- BoxFooterLeft .................................. 61
-- BoxFooterRight ................................. 61
-- BoxInsideColor ................................. 61
-- BrightBackground ............................... 61
-- CapsColor ...................................... 62
-- CapsLock ....................................... 62
-- Chain .......................................... 62
-- Char ........................................... 63
-- ChDir .......................................... 63
-- CleanFileName .................................. 63
-- ClearLine ...................................... 63
-- ClearScreen .................................... 64
-- ClearScreenFirst ............................... 64
-- ClearScreenOnExit .............................. 64
-- ClockColor ..................................... 64
-- ClockMode ...................................... 65
-- ClockPos ....................................... 65
-- ClosePrinter ................................... 66
-- ClusterSize .................................... 66
-- CmdLine ........................................ 66
-- ColorScreen .................................... 67
-- Comment ........................................ 67
-- Console ........................................ 67
-- ConsoleBorderColor ............................. 67
-- ConsoleHeaderColor ............................. 68
-- ConsoleInsideColor ............................. 68
-- ConsolePos ..................................... 68
-- Const .......................................... 68
-- Cos ............................................ 68
-- CountryCode .................................... 68
-- CurrentEnvironment ............................. 69
-- CurrentWindow .................................. 69
-- Cursor ......................................... 69
-- CustomBox ...................................... 69
-- DateSeparator .................................. 69
-- DateString ..................................... 70
-- Day ............................................ 70
-- DayOf .......................................... 70
-- DayOfWeek ...................................... 70
-- DayOfWeekOf .................................... 70
Computer Tyme MarxMenu * Table of Contents Page 4
_______________________________________________________________
-- DecimalSeparator ............................... 70
-- Delete ......................................... 71
-- DelFile ........................................ 71
-- DisplayType .................................... 72
-- DirectoriesOnly ................................ 72
-- Dispose ........................................ 72
-- DosVersion ..................................... 73
-- DosVersionString ............................... 73
-- DosWindow ...................................... 73
-- DoubleLineBox .................................. 73
-- DrawBox ........................................ 74
-- Drives ......................................... 74
-- DvAppNumber .................................... 74
-- DvFrame ........................................ 74
-- DvFreeze ....................................... 74
-- DvHide ......................................... 75
-- DvKillTask ..................................... 75
-- DvLastHandle ................................... 75
-- DvLoaded ....................................... 75
-- DvMoveWindow ................................... 75
-- DvMyHandle ..................................... 75
-- DvPifExecute ................................... 76
-- DvResizeWindow ................................. 76
-- DvSetBottom .................................... 76
-- DvSetTop ....................................... 76
-- DvUnFreeze ..................................... 77
-- DvUnHide ....................................... 77
-- Else ........................................... 77
-- ElseIf ......................................... 77
-- EndComment ..................................... 78
-- Endif .......................................... 78
-- EndLoop ........................................ 78
-- EndOfFile ...................................... 78
-- EndProc ........................................ 78
-- EndWhile ....................................... 79
-- EnvFree ........................................ 79
-- EnvSize ........................................ 79
-- EraseTopWindow ................................. 79
-- EraseWindow .................................... 79
-- Execute ........................................ 80
-- ExistDir ....................................... 81
-- ExistFile ...................................... 81
-- ExistOnPath .................................... 81
-- ExitCode ....................................... 81
-- ExitMenu ....................................... 82
-- Exp ............................................ 82
-- Explode ........................................ 82
-- ExplodeDelay ................................... 82
-- Extension ...................................... 82
-- FileAppend ..................................... 82
-- FileAssign ..................................... 83
-- FileAttr ....................................... 83
Computer Tyme MarxMenu * Table of Contents Page 5
_______________________________________________________________
-- FileClose ...................................... 83
-- FileCreate ..................................... 83
-- FileDate ....................................... 83
-- FileFlush ...................................... 83
-- FileLog ........................................ 84
-- FileOpen ....................................... 84
-- FilePart ....................................... 84
-- FilePos ........................................ 84
-- FileReadln ..................................... 85
-- FileRename ..................................... 85
-- FileResult ..................................... 85
-- FileSeek ....................................... 85
-- FileSize ....................................... 85
-- FileTime ....................................... 85
-- FileWrite ...................................... 85
-- FileWriteln .................................... 86
-- FixPath ........................................ 86
-- Floppies ....................................... 86
-- ForceExplosion ................................. 86
-- ForceExtension ................................. 86
-- Fraction ....................................... 86
-- FreeDiskSpace .................................. 87
-- FreeEms ........................................ 87
-- FreeMemory ..................................... 87
-- GotoXY ......................................... 87
-- HiddenAndSystem ................................ 87
-- Hour ........................................... 87
-- HourOf ......................................... 87
-- Hundredth ...................................... 88
-- IdleProgram .................................... 88
-- If ............................................. 89
-- InactiveBox .................................... 89
-- InactiveBoxColor ............................... 90
-- Include ........................................ 90
-- IncludeDirectories ............................. 90
-- InputString .................................... 91
-- Insert ......................................... 91
-- InsertMode ..................................... 91
-- Int ............................................ 91
-- Integer ........................................ 91
-- InverseColor ................................... 91
-- Jump ........................................... 91
-- KbdReady ....................................... 92
-- KeySave ........................................ 92
-- KeyFromMouse ................................... 92
-- KillMusic ...................................... 92
-- LastDrive ...................................... 92
-- LastKey ........................................ 92
-- Left ........................................... 93
-- Length ......................................... 93
-- Ln ............................................. 93
-- Loc ............................................ 93
Computer Tyme MarxMenu * Table of Contents Page 6
_______________________________________________________________
-- LockWord ....................................... 94
-- Logoff ......................................... 95
-- LogoffTime ..................................... 95
-- Loop ........................................... 96
-- LoopIndex ...................................... 97
-- LoopLevel ...................................... 97
-- LoopLimit ...................................... 97
-- MachineName .................................... 97
-- MarxVersion .................................... 97
-- MasterEnvironment .............................. 97
-- Max ............................................ 97
-- Mem ............................................ 98
-- MemL ........................................... 98
-- MemSize ........................................ 98
-- MemW ........................................... 98
-- MenuKeyBuffer .................................. 98
-- Mid ............................................ 99
-- Min ............................................ 99
-- MinorDosVersion ................................ 99
-- Minute ......................................... 99
-- MinuteOf ....................................... 99
-- MkDir .......................................... 99
-- Mod ............................................ 99
-- ModifyPath ..................................... 100
-- Month .......................................... 100
-- MonthOf ........................................ 100
-- Mouse .......................................... 100
-- MouseHorizontal ................................ 101
-- MouseVertical .................................. 101
-- MoveWindow ..................................... 101
-- MxCmd .......................................... 101
-- NamePart ....................................... 101
-- NetworkVersion ................................. 102
-- NextWord ....................................... 102
-- NoBoxBorder .................................... 102
-- NoExit ......................................... 102
-- Not ............................................ 102
-- NotesLeft ...................................... 102
-- NotesPlayed .................................... 102
-- NovAccountExpDate .............................. 103
-- NovAddUserToGroup .............................. 103
-- NovAttach ...................................... 103
-- NovAttachedServers ............................. 103
-- NovBroadcastMode ............................... 103
-- NovChangePassword .............................. 104
-- NovCleanVolumeName ............................. 104
-- NovCloseSemaphore .............................. 104
-- NovConnection .................................. 104
-- NovConnectionsInUse ............................ 104
-- NovConsoleOperator ............................. 104
-- NovDefaultServer ............................... 104
-- NovDeleteObject ................................ 104
Computer Tyme MarxMenu * Table of Contents Page 7
_______________________________________________________________
-- NovDetach ...................................... 105
-- NovFullName .................................... 105
-- NovGetMessage .................................. 105
-- NovGraceLoginReset ............................. 105
-- NovGraceLogins ................................. 105
-- NovGroupMembers ................................ 106
-- NovGroups ...................................... 106
-- NovInGroup ..................................... 106
-- NovLastLoginDate ............................... 106
-- NovLogin ....................................... 106
-- NovLoginName ................................... 107
-- NovLogout ...................................... 107
-- NovMapDrive .................................... 107
-- NovMapRoot ..................................... 107
-- NovMaxConnections .............................. 108
-- NovMinPasswordLength ........................... 108
-- NovMyLoginName ................................. 108
-- NovMyPassword .................................. 108
-- NovObjectID .................................... 108
-- NovObjects ..................................... 109
-- NovOpenSemaphore ............................... 109
-- NovPasswordExpDate ............................. 109
-- NovPreferredServer ............................. 109
-- NovPrimaryServer ............................... 110
-- NovPrintQueues ................................. 110
-- NovPropertyValues .............................. 110
-- NovReadGroups .................................. 110
-- NovReadSecurityEquals .......................... 111
-- NovRemoveUserFromGroup ......................... 111
-- NovResult ...................................... 111
-- NovScanProperties .............................. 111
-- NovSecurityEquals .............................. 112
-- NovServerTime .................................. 112
-- NovSemaphoreTimeOut ............................ 112
-- NovSemaphoreUsers .............................. 112
-- NovSemaphoreValue .............................. 112
-- NovServers ..................................... 112
-- NovSendMessage ................................. 113
-- NovSetPreferredServer .......................... 113
-- NovSetPrimaryServer ............................ 113
-- NovSignalSemaphore ............................. 113
-- NovStationAddress .............................. 114
-- NovUserInGroup ................................. 114
-- NovUsers ....................................... 114
-- NovUsersLoggedIn ............................... 114
-- NovVersionNumber ............................... 114
-- NovVolumes ..................................... 115
-- NovWaitOnSemaphore ............................. 115
-- NumberOfElements ............................... 115
-- Now ............................................ 115
-- NumLock ........................................ 116
-- OnKey .......................................... 116
Computer Tyme MarxMenu * Table of Contents Page 8
_______________________________________________________________
-- OnScreenOnly ................................... 117
-- OpenPrinter .................................... 117
-- OptionSwitch ................................... 117
-- Or ............................................. 117
-- Ord ............................................ 118
-- OverKey ........................................ 118
-- Overlay ........................................ 118
-- ParallelPorts .................................. 118
-- ParamStr ....................................... 119
-- ParentEnvironment .............................. 119
-- Password ....................................... 119
-- Path ........................................... 119
-- PathPart ....................................... 119
-- PauseAfterExecute .............................. 120
-- Pi ............................................. 120
-- PickFile ....................................... 120
-- PickMany ....................................... 121
-- PickOne ........................................ 121
-- PickPosition ................................... 121
-- Port ........................................... 121
-- Pos ............................................ 122
-- PosInList ...................................... 122
-- PosInSortedList ................................ 122
-- Power .......................................... 122
-- Pred ........................................... 123
-- Print .......................................... 123
-- PrinterName .................................... 123
-- Println ........................................ 123
-- PrintScreen .................................... 123
-- Procedure ...................................... 124
-- PullMenu ....................................... 125
-- Qualifier ...................................... 125
-- Random ......................................... 125
-- ReadDirectory .................................. 126
-- ReadEnv ........................................ 126
-- ReadEnvironment ................................ 126
-- ReadKey ........................................ 127
-- Readln ......................................... 127
-- ReadTextFile ................................... 128
-- Real ........................................... 128
-- Reboot ......................................... 128
-- ReleaseDate .................................... 128
-- Repeat ......................................... 129
-- ResizeWindow ................................... 129
-- Return ......................................... 130
-- ReturnCode ..................................... 130
-- Right .......................................... 130
-- RmDir .......................................... 130
-- RollWindow ..................................... 131
-- Run ............................................ 131
-- SavePosition ................................... 132
-- ScreenHeight ................................... 132
Computer Tyme MarxMenu * Table of Contents Page 9
_______________________________________________________________
-- ScreenWidth .................................... 132
-- ScrollLock ..................................... 132
-- ScrollMove ..................................... 132
-- Second ......................................... 133
-- SecondOf ....................................... 133
-- Security ....................................... 133
-- SelectPath ..................................... 133
-- SerialPorts .................................... 133
-- SetArraySize ................................... 133
-- SetEnv ......................................... 134
-- SetTopWindow ................................... 134
-- SetWindowUnder ................................. 134
-- Shadow ......................................... 134
-- ShadowColor .................................... 135
-- ShadowPosition ................................. 135
-- Shared ......................................... 135
-- ShellEnvironment ............................... 135
-- Shl ............................................ 135
-- Shr ............................................ 136
-- Sin ............................................ 136
-- SingleLineBox .................................. 136
-- SmallShadow .................................... 136
-- SortArray ...................................... 136
-- Sound .......................................... 136
-- Sqr ............................................ 136
-- StandardIO ..................................... 137
-- Str ............................................ 137
-- StuffAKey ...................................... 137
-- StuffKBD ....................................... 137
-- StuffKeyboardNow ............................... 137
-- Succ ........................................... 138
-- Suggest ........................................ 138
-- TextBackground ................................. 138
-- TextColor ...................................... 138
-- TextMode ....................................... 138
-- TextPos ........................................ 139
-- TextSeek ....................................... 139
-- Then ........................................... 139
-- TimeOf ......................................... 139
-- Timer .......................................... 139
-- TimeSeparator .................................. 139
-- TimeString ..................................... 140
-- Today .......................................... 140
-- Tomorrow ....................................... 140
-- Tone ........................................... 140
-- TotalDiskSpace ................................. 141
-- TotalEms ....................................... 141
-- Trim ........................................... 141
-- TrueName ....................................... 141
-- UnBlank ........................................ 141
-- UniqueFileName ................................. 142
-- Until .......................................... 142
Computer Tyme MarxMenu * Table of Contents Page 10
_______________________________________________________________
-- UpperCase ...................................... 142
-- UpperCaseOnly .................................. 142
-- UseArrows ...................................... 142
-- UseCommand ..................................... 143
-- UsedDiskSpace .................................. 143
-- UseNovPassword ................................. 143
-- Value .......................................... 143
-- Var ............................................ 144
-- VideoMode ...................................... 144
-- VideoPage ...................................... 144
-- ViewArray ...................................... 144
-- ViewTextFile ................................... 144
-- Volume ......................................... 144
-- Wait ........................................... 144
-- WaitOrKbdReady ................................. 145
-- WhereX ......................................... 145
-- WhereXAbs ...................................... 145
-- WhereY ......................................... 145
-- WhereYAbs ...................................... 145
-- While .......................................... 145
-- WholeFileNames ................................. 145
-- WindowHeight ................................... 146
-- WindowWidth .................................... 146
-- WinX ........................................... 146
-- WinY ........................................... 146
-- Write .......................................... 146
-- WriteCenter .................................... 146
-- Writeln ........................................ 146
-- WriteTextFile .................................. 146
-- WriteVertical .................................. 147
-- Xor ............................................ 147
-- Year ........................................... 147
-- YearOf ......................................... 147
String Constants .................................. 148
Time and Date Constants ........................... 148
Video Constants ................................... 149
Color Constants ................................... 149
Boolean Constants ................................. 149
Conditional Statements ............................ 149
Environment Variables used by MarxMenu ............ 150
Command Categories ................................ 151
-- Misc Commands .................................. 152
-- Math Commands .................................. 152
-- Float Commands ................................. 153
-- String Commands ................................ 154
-- Variable Commands .............................. 155
-- Boolean Commands ............................... 155
-- Array Commands ................................. 155
-- Memory Commands ................................ 156
-- Time Commands .................................. 156
-- Execution Commands ............................. 157
-- Display Commands ............................... 157
Computer Tyme MarxMenu * Table of Contents Page 11
_______________________________________________________________
-- Color Commands ................................. 159
-- System Commands ................................ 159
-- File Commands .................................. 160
-- Ansi Commands .................................. 160
-- Printer Commands ............................... 161
-- International Commands ......................... 161
-- Environment Commands ........................... 161
-- DesqView Commands .............................. 162
-- Conditional Commands ........................... 162
-- Keyboard Commands .............................. 163
-- MouseControl Commands .......................... 163
-- Music Commands ................................. 163
-- Novell Commands ................................ 164
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 receives 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 and OS/2 are trademarks 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. It 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. Do not try to call
my BBS with 7 bits or even parity. It won't work.
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.
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
INSTALL. When it gets done, you can run some of the sample menus by
typing MARX <menu>.
Computer Tyme MarxMenu Users Manual Page 4
_______________________________________________________________
-------- 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 3.1 then NNN is the number of 16 byte blocks
to allocate for the environment.
For DOS 3.2 or later:
SHELL=COMMAND.COM /P /E:400
For DOS 3.1:
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 file.
Make sure you do not run the install from the floppy disk.
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
QUICK.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 5
_______________________________________________________________
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 600 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 MarxEdit. This is the text editor 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 6
_______________________________________________________________
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 7
_______________________________________________________________
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.
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 INSTALL. The first thing that INSTALL 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 <batch>. If you are
running an earlier version of DOS then MXCMD is set to COMMAND /C
<batch>.
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.
Computer Tyme MarxMenu Users Manual Page 8
_______________________________________________________________
MARX.BAT
-------- +--MarxMenu Creates--+
+----> @ECHO OFF | |
| MARXMENU.EXE %1 |
| %MXCMD% >--+ +-> $MX00000.BAT
| +--> MARX %1 + | ------------
| | | +----------------------> CD\WORDSTAR
+-|------<-----+ WS --+
| |
+-------------------------------------------<-+
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:
Computer Tyme MarxMenu Users Manual Page 9
_______________________________________________________________
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.
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.
Computer Tyme MarxMenu Users Manual Page 10
_______________________________________________________________
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
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.
Computer Tyme MarxMenu Users Manual Page 11
_______________________________________________________________
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.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 version 3.1 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).
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
Computer Tyme MarxMenu Users Manual Page 12
_______________________________________________________________
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.
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 than 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.
Computer Tyme MarxMenu Users Manual Page 13
_______________________________________________________________
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.
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
Computer Tyme MarxMenu Users Manual Page 14
_______________________________________________________________
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.
SAMPLE MENUS ON DISK SAMPLE MENUS ON DISK SAMPLE MENUS ON DISK
The MarxMenu disk contains many sample menus for you to start with.
Which one depends on what your needs are. Typically on a single user
system you might start with QUICK or LEVEL1 menus.
To start with the QUICK menu, copy it to a different name such as MY.MNU
as follows:
COPY QUICK.MNU MY.MNU
Then edit MY.MNU with your favorite editor. You will quickly see how
this menu works and will be able to substitute your programs for the
ones it is set up for. You can then test and run your menu by typing
MARX MY.
If you want more of a self configuring menu you might try the LEVEL1
menu. This menu requires no text editor coding and lets you set up menus
interactively.
On a Novell network you might start with the QUICKNOV menu or translate
your existing Novell menus with NOVTRANS. The LOGIN menu requires a lot
of customization for your system. I wouldn't start on this menu until
your regular menus are written.
The examples on disk show a variety of uses for MarxMenu. They can be
used like libraries of routines to cut code from and paste into your
application. A good way to learn MarxMenu is to print out the example
menus and study the code.
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, PCMOS, 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.
If you are running LANTASTIC and get a "sharing violation" error when
two people try running the menu at the same time, try setting
MARXMENU.OVR to READ ONLY.
NETWORK MENU STRATEGY NETWORK MENU STRATEGY NETWORK MENU STRATEGY
One of the main features of MarxMenu is the ability to create "smart"
menus. This allows you to have a single menu that everybody runs but
each user sees different selections based on what their access rights
are, what groups they are in, what kind of hardware is available, or
what workstation they are on.
The group access feature is a very good example of using the power of
MarxMenu. The idea here is that for instance under Novell you would put
users in groups and have menu selections appear based on group
membership. Thus only the accounting department sees the payroll
selection.
On non Novell networks you can group users by having them in a text file
list of members. Then you can read the list and test if they are in the
list. You can also read environment variables and control choices based
on the result.
Computer Tyme MarxMenu Users Manual Page 16
_______________________________________________________________
The rule with networks is to keep things as consistent and simple as
possible. A simple well documented network is a happy network, and it
can make the difference whether you go home on the weekends or stay at
the office.
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 by modem. Some of them hang out on Compuserve.
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 <menu> <- Right Way
MARX NOVTRANS <menu> <- Wrong Way
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.
Computer Tyme MarxMenu Users Manual Page 17
_______________________________________________________________
Once the menu is translated you run it by typing MARX <menu> instead of
MENU <menu>. MarxMenu can run Novell's menu better than Novell runs
their own.
Sometimes the translator isn't perfect and it takes a little tweaking of
the original menu file for the translator to work properly.
After you are satisfied with the translation you can then start
enhancing your menus by editing the new translated menus. You might want
to run QUICKNOV and look at it's features. If you like what you see you
can use your editor to cut and paste code from QUICKNOV.MNU into your
menus. You can also start adding NovInGroup commands to create
conditional menus. Under MarxMenu you can have one single smart menu for
everybody instead of a lot of individual menus.
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.
If you are logging off with a batch file, the batch file must be in the
login directory or a local drive. If it is in the login directory your
current drive must be the first network drive (usually F:) and this
drive must not be map rooted to any directory.
What you need to do is create a batch file in the \LOGIN directory
called OFF.BAT.
Example: F:\LOGIN\OFF.BAT
SET COMSPEC=C:\COMMAND.COM
LOGOUT
C:
PATH=C:\DOS
To run this file the current directory must be F:\LOGIN. When using the
MarxMenu command Logoff, MarxMenu changes to the \LOGIN directory of the
first network drive, removes any map roots on this drive, and runs
OFF.BAT.
Computer Tyme MarxMenu Users Manual Page 18
_______________________________________________________________
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
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, its 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 600 commands to work with instead of just 25 or so.
USING NOVELL'S LOGIN USING NOVELL'S LOGIN USING NOVELL'S LOGIN
For those of you who want to stay with Novell's login program here's
some tips to keep you out of trouble (And my tech support lines open).
The last command in your system login script needs to be EXIT "batch
name". This batch file will be the continuation of your login logic and
end up jumping to the menu system. This is where TSR's can be loaded.
Never load a TSR or run the menu from within a login script. Until the
login script finishes, LOGIN.EXE is in memory and it uses over 100k.
The first rule is don't use personal login scripts unless you have to.
The simpler the login, the easier it is to maintain. Try to do as much
as possible in the batch file you exit to.
Computer Tyme MarxMenu Users Manual Page 19
_______________________________________________________________
MarxMenu can be run from this batch file as a post login processor. In
this case MarxMenu isn't being used as a menu but as a programming
language that is capable of very powerful login logic. The batch file
might look as follows:
MARXMENU POST.MNU
<load TSR's>
MARX MAIN
In POST.MNU you can set environment variables, test for directories,
write batch files, read user lists, map drives, or any number of things
that are useful to the login process.
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.
Network 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.
Computer Tyme MarxMenu Users Manual Page 20
_______________________________________________________________
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=NETX.COM
SET COMSPEC=O:COMMAND.COM
LOADNET
The two SET commands are very important. The first sets a variable
called NET to NETX.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 EMSNETX.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=NETX.COM in the AUTOEXEC.BAT file.
The SET COMSPEC=O:COMMAND.COM is important if you are booting off of
either a floppy drive or a diskless workstation. This assumes that O:
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
Computer Tyme MarxMenu Users Manual Page 21
_______________________________________________________________
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.
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=NETX 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
options 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.
Computer Tyme MarxMenu Users Manual Page 22
_______________________________________________________________
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.
You will have to modify the LOGIN.MNU for your system. The one that I
supply will not work on your system. It is to be used as a sample only
and provide ideas for your login menu.
One word of caution. After modifying 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 SEARCH DRIVES NOVELL SEARCH DRIVES NOVELL SEARCH DRIVES
MarxMenu and Network Survival Kit files need to be in the search path.
You can copy the files into a directory that is already in the search
path or create a new directory and add it to the search path. Here is a
suggested setup.
---+--- SYSTEM
|
+--- MAIL
|
+--- LOGIN
|
+--- HOME -----+--- FRED
| |
| +--- BARNEY
|
+--- PUBLIC ---+--- DOS
|
+--- UTIL
|
+--- NSK
I would use MAP ROOT and set up the following mapped drives:
Computer Tyme MarxMenu Users Manual Page 23
_______________________________________________________________
MAP ROOT H: = \HOME\BARNEY
MAP ROOT U: = \PUBLIC\UTIL
MAP ROOT N: = \PUBLIC\NSK ;Network Survival Kit
MAP ROOT O: = \PUBLIC\DOS
MAP ROOT P: = \PUBLIC
Set PATH=H:\;U:\;N:\;O:\;P:\;
The idea here is that the users home directory is searched first. Then
the util directory where various network goodies and batch files are
kept. Then the NSK directory where only NSK and menu file are. Then the
DOS directory where only your original DOS files are. And finally PUBLIC
which contains only Novell utilities.
Traditionally, with Novell networks, searches have been set up using the
current directories of paths such as:
Set PATH=H:.;U:.;N:.;O:.;P:.;
I have found that since the addition of the MAP ROOT enhancement that
this traditional method is not as flexible.
SETTING FILE ATTRIBUTES SETTING FILE ATTRIBUTES SETTING FILE ATTRIBUTES
Historically Novell has recommended setting file attributes to Shareable
and Read Only. This was to deal with DOS 3.0 and earlier and network
dumb programs. This is now an obsolete process and if you are in the
habit of doing this it's time to quit (Unless you are still running DOS
version 2 on your workstations).
I personally flag all my network files Normal as a way of catching
network dumb programs.
MarxMenu is a network smart product. It therefore isn't recommended that
any file flagging be done on Computer Tyme software.
Computer Tyme MarxMenu Users Manual Page 24
_______________________________________________________________
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.
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.
Computer Tyme MarxMenu Users Manual Page 25
_______________________________________________________________
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
QUICK.MNU. As discussed earlier, the menu file is a text file created
with a text editor such as TEDIT.
Usage: MARX <Menu Filename>
Example:
MARX QUICK
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 QUICK.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 QUICK.
UPGRADING MARXMENU UPGRADING MARXMENU UPGRADING MARXMENU
When installing an upgraded version of MarxMenu be sure to copy the
MARXMENU.EXE, MARXMENU.OVR and MARXCOMP.EXE files into your MarxMenu
directory. A very common mistake is not copying the MARXMENU.OVR file.
If you forget this file MarxMenu will lock up when you try to run it.
If you are on a network and anyone on the network is using the menu you
won't be able to copy over MARXMENU.OVR. You will have to wait to after
hours or chase everyone off the network to install the upgrade.
A common mistake occurs when you copy the MarxMenu file into a working
directory and someone else has the MARXMENU.OVR file open and you fail
to notice that it failed to copy. If MarxMenu starts locking up after an
upgrade this is probably why. Make sure the file dates on MARXMENU.EXE
and MARXMENU.OVR are the same.
After installing the new MarxMenu, all your menu files will have to be
recompiled. This should happen automatically, but if you are on a
network and the users don't have enough access rights the compile will
fail. You can recompile all your network menus as follows:
Computer Tyme MarxMenu Users Manual Page 26
_______________________________________________________________
WHEREIS *.MNU|DOLIST MARXCOMP @L
If you are using MarxMenu to log into the network then be sure to copy
the new MarxMenu files into your LOGIN directory and recompile your
LOGIN menu.
If you install MarxMenu in one directory and then move it to another you
will have to run MARXMENU INST to recreate the batch files for that
directory. Make sure that the MarxMenu files are on your PATH.
Any time you upgrade MarxMenu should work as well or better that the
previous version. Occasionally I make a mistak so you might want to
copy your present NSK directory to another temporary directory until the
upgrade is complete and tested. This gives you the ability to go back to
the old one should the need arise. This procedure should be followed on
software upgrades from other vendors as well.
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.
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
Computer Tyme MarxMenu Users Manual Page 27
_______________________________________________________________
====================================
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.
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.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.
Computer Tyme MarxMenu Users Manual Page 28
_______________________________________________________________
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:
: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
Computer Tyme MarxMenu Users Manual Page 29
_______________________________________________________________
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.
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 30
_______________________________________________________________
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 or bY setting environment variables MOUSEX
and MOUSEY.
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 31
_______________________________________________________________
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.
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.
NUMERIC VARIABLES NUMERIC VARIABLES NUMERIC VARIABLES
MarxMenu supports two kinds of numbers, 32 bit integers and real
(floating point) numbers. Integers are whole numbers in the range of
plus or minus 2,147,483,647. This gives you a wide range of numbers but
no fractions.
With integers the answers to division are always rounded down thus:
7 / 3 = 2
Numbers beginning with a '$' indicate base 16 or hex numbers.
Example: $20 is the same as 32
Computer Tyme MarxMenu Users Manual Page 32
_______________________________________________________________
BOOLEAN VARIABLES BOOLEAN VARIABLES BOOLEAN VARIABLES
Boolean variables are True or False. For example:
var Adult
Adult = True
if not Adult then Write 'You must be 21 to enter.'
Boolean values can be set by computation:
Example:
Adult = Age >= 21
In this example the result of Age >= 21 is stored in the variable Adult.
If you use a boolean variable by itself, MarxMenu assumes you are
setting it to on. Thus:
ClearScreenOnExit
is the same as:
ClearScreenOnExit On
STRING VARIABLES STRING VARIABLES STRING VARIABLES
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 ..." '
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.
Computer Tyme MarxMenu Users Manual Page 33
_______________________________________________________________
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.
With real numbers you can do trigonometry calculations like those
discovered by the ancient Indian chief Pythagoras who discovered what is
now known 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 hippopotamus 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.
Computer Tyme MarxMenu Users Manual Page 34
_______________________________________________________________
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 the variable BadDate is set to
true.
MarxMenu can also convert dates to strings by using the DateString and
TimeString commands.
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:
5 factorial is 120
Another Example:
Computer Tyme MarxMenu Users Manual Page 35
_______________________________________________________________
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.
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
Computer Tyme MarxMenu Users Manual Page 36
_______________________________________________________________
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'
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.
Computer Tyme MarxMenu Users Manual Page 37
_______________________________________________________________
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
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'
Computer Tyme MarxMenu Users Manual Page 38
_______________________________________________________________
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.
POINTER VARIABLES POINTER VARIABLES POINTER VARIABLES
In MarxMenu variables can point to other variables allowing parameters
to be passed to procedures by referrence as well as by value. A pointer
variable stores the location of another variable. Any time a pointer
variable is accessed, MarxMenu acts upon the variable that the pointer
variable is pointing too. Pointer variables are set using the Loc
(location) command.
Example:
Var A B C
A = Loc B
MarxMenu supports complex location pointers and pointers to other
pointers. MarxMenu will resolve all referrences till real data is found.
Example:
B = Loc A
C = Loc B
C[5] = 20
Writeln A[5] ;returns 20
Pointers can also be passed as parameters to procedures. Thus if A is an
array of strings we can sort A as follows:
Procedure SortTest (TestArray)
SortArray(TestArray)
EndProc
SortTest (Loc A) ;sorts array A
Computer Tyme MarxMenu Users Manual Page 39
_______________________________________________________________
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.}
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 compiler will be loaded.
MarxMenu will also force a compile if the MRX file was not compiled 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
<menu>. If you are on a network and using MarxMenu to log you in, make
sure you run the compiler if you change your login menu file.
Computer Tyme MarxMenu Users Manual Page 40
_______________________________________________________________
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.
MARXMENU LANGUAGE RULES MARXMENU LANGUAGE RULES MARXMENU LANGUAGE RULES
MarxMenu interpretation is left to right and doesn't have any operator
precidence. You can control the order of evaluation by using
parentheses.
Examples:
2 + 3 * 4 ;returns 20
2 + (3 * 4) ;returns 14
if A > 4 or B < 6 then ... ;error
if (A > 4) or (B < 6) then ... ;correct
Statements are limited to one line and lines are limited to 200
characters.
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 41
_______________________________________________________________
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. 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.
Speaking of Windows, MarxMenu is not a Windows program. It can however
be used to start Windows programs and is can be run under Windows.
Windows however is an extremely unstable environment. If for some reason
you're having trouble with MarxMenu and Windows, it's Windows fault. In
spite of glowing reviews that magazine writers seem compelled to write,
I reccommend avoiding Windows unless you have a program that requires
Windows to run.
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.
DR-DOS has a nasty COMSPEC bug in versions 5 and 6 when running a second
command.com shell started from a network drive.
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
and PCMOS. Under these systems you will have to set the TASK environment
variable if you are running MarxMenu in multiple tasks.
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 including
DesqView API calls to control the DesqView environment.
Although I haven't tested MarxMenu in the OS/2 1.3 compatibility box, I
have had good success with MarxMenu under OS/2 2.0. I have been able not
only to run DOS programs but OS/2 programs as well. If set up right
MarxMenu can spawn multiple tasks of both DOS and OS/2 applications.
Computer Tyme MarxMenu Users Manual Page 42
_______________________________________________________________
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 weird 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. My
standard is to not only have all the functions of MarxMenu work
correctly, but to be as intuitive and full featured as possible.
TIPS FROM THE MASTER TIPS FROM THE MASTER TIPS FROM THE MASTER
Since MarxMenu is a programming language, I want to talk about what
programming 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 43
_______________________________________________________________
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 QUICK.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 44
_______________________________________________________________
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 45
_______________________________________________________________
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 46
_______________________________________________________________
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 <condition>
<statement>
<statement>
ELSEIF
<statement>
ELSE
<statement>
<statement>
WHILE <condition>
<statement>
<statement>
ENDWHILE
<statement>
ENDIF
<statement>
EndProc
Computer Tyme MarxMenu Users Manual Page 47
_______________________________________________________________
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 48
_______________________________________________________________
A. Only one, but the light bulb has to want to change.
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 49
_______________________________________________________________
WHERE MARXMENU IS HEADING WHERE MARXMENU IS HEADING WHERE MARXMENU IS HEADING
MarxMenu will continue to grow and develope. Because MarxMenu is an
overlaid program I have the ability to add as many features as I want
without slowing down load or processing speed. In fact MarxMenu is 10
times as fast today as it was in 1989 and its vocabulary of commands has
grown 10 times as well.
I'm often asked the question, what other operating systems will I
support? Will there be a Windows version? An OS/2 version? Unix?
Let me say first that my primary commitment is to the OS that most
people actually use, and that is DOS. I am not moved by the industry
politics. I focus on the systems that make computers and networks
actually work.
So for those of you who are asking the question "Will there be a Windows
version of MarxMenu?" The answer is no. The reason is in my view,
windows is too unstable a platform in which to develop code for. As I
see it, Windows is a programmer angry environment and is fatally flawed
by design. I consider this path a mistake and a mistake that I am not
going to make.
Will there be an OS/2 version? Likely. This OS seems to be going in the
right direction. I have been able to control both DOS and OS/2 tasks
from the VDM. Although the two major OS players are equally arrogant on
what OS they are going to force down our throats, at least the one from
IBM actually works.
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.
Computer Tyme MarxMenu Users Manual Page 50
_______________________________________________________________
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.
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.
Computer Tyme MarxMenu Users Manual Page 51
_______________________________________________________________
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 needs 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.
If a menu choice accesses 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.
Computer Tyme MarxMenu Users Manual Page 52
_______________________________________________________________
Another defense is to lock the door to the computer room at night and
teach employees security policies and make sure they use them. Security
policies include such rules as not having your password written on a
stick-em note stuck on the side of your monitor.
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 <column> parameter is 1 - 80 decimal, and for the <row>
parameter the range is 1 - 25, 43, or 50 decimal depending on how many
lines your monitor displays.
| (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
Computer Tyme MarxMenu Users Manual Page 53
_______________________________________________________________
( : Operator ( : Operator ( : Operator
Starts logical interpreter grouping.
Used to force evalution of an expression other than the normal left to
right order.
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
+ : 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
Computer Tyme MarxMenu Users Manual Page 54
_______________________________________________________________
<= : 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
%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
Computer Tyme MarxMenu Users Manual Page 55
_______________________________________________________________
Actual Actual Actual
If you want to read or write to a variable directly that is referrencing
another variable I have provided the command Actual. Actual overrides
any pointers set by the command Loc.
Example:
Dispose Actual B
Actual B = 5
See Also: Loc
Category: Variable
Alias Alias Alias
Alias <name> = <string>
This is a compiler level text substitution command. When <name> is
defined as <string> whenever you use <name> its the same to the compiler
as if <string> were typed there.
Example:
Alias TwoPlusThree = "(2 + 3)"
.
.
.
2 * TwoPlusThree = 10
.
Writeln TwoPlusThree
Writeln TwoPlusThree is the same as Writeln (2 + 3)
Category: Misc
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 in 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
Computer Tyme MarxMenu Users Manual Page 56
_______________________________________________________________
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.
Example:
if (Month = Dec) and (Day = 25) then Writeln 'Merry Christmas!'
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 X
Writeln X[LoopIndex]
EndLoop
This Prints:
TEST1
TEST2
Category: Array
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
ArcTan (Radians) : Real ArcTan (Radians) : Real ArcTan (Radians) : Real
Returns the ArcTangent of a real.
Category: Math, Float
Computer Tyme MarxMenu Users Manual Page 57
_______________________________________________________________
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.
When using Bat under an OnKey statement, be sure to use the vertical bar
in front of it. Bat gives you more control over what is sent to the
batch file that MARX.BAT executes.
Example:
OnKey 'D'
CLS
|BAT "DIR " + HomeDirectory + '\' + UserName
PAUSE
See Also: OnKey
Category: Execution
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
Blanked : Boolean Blanked : Boolean Blanked : Boolean
Returns true if the screen blanker has kicked it. This lets you alter
your idle program based on whether the screen blanker is active.
See Also: IdleProgram
Category: Display
Computer Tyme MarxMenu Users Manual Page 58
_______________________________________________________________
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
BlankScreenProgram : Procedure BlankScreenProgram : Procedure BlankScreenProgram : Procedure
This sets the blank screen program to use and overrides MarxMenu's
internal screen blanker. It also overrides the IdleProgram so if you are
running something in your idle program that you want to continue to run
when the screen goes blank, call your idle procedure from the screen
blanker procedure.
If you exit your screen blanker and MarxMenu thinks the screen should
still be blank it will call it again.
When MarxMenu decides to blank the screen it calls BlankScreenProgram.
When MarxMenu decides it's ready to unblank the screen it sets UnBlank
to true.
Thus commands like UseNovPassword, LockWord, and BlankTime will work
with your screen blanker.
To set up a blank screen program:
BlankScreenProgram = Loc (Procedure Name)
To switch back to normal screen blanking run:
Dispose(ScreenBlankProgram)
See Also: IdleProgram, UnBlank
Category: Display
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 59
_______________________________________________________________
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
BoxBorderColor (forecolor,backcolor) BoxBorderColor (forecolor,backcolor) BoxBorderColor (forecolor,backcolor)
Sets colors for box border.
Category: Color
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
Computer Tyme MarxMenu Users Manual Page 60
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 61
_______________________________________________________________
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
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 background colors instead. The
solution is to set BrightBackground Off right before you run a program
that requires blinking.
Example:
OnKey 'X'
|BrightBackground Off
PROCOMM
Computer Tyme MarxMenu Users Manual Page 62
_______________________________________________________________
Warning! This program uses a trick that may not be compatible with some
TSR programs. If you can get away with it, fine. But, if you have
problems where TSR's cause your screen to blink, then don't use this
command.
Category: Display
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
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
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
Computer Tyme MarxMenu Users Manual Page 63
_______________________________________________________________
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
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 if they aren't at the
beginning of the string.
Thus the command:
CleanFileName('a:\' + '\main.mnu') returns 'A:\MAIN.MNU'.
CleanFileName also removes extra ending '\' and capitalizes the path.
See Also: TrueName
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
Computer Tyme MarxMenu Users Manual Page 64
_______________________________________________________________
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
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.
See Also: Execute
Category: Execution
ClearScreenOnExit (on/off) ClearScreenOnExit (on/off) ClearScreenOnExit (on/off)
Controls whether or not the screen is cleared on menu exit. Default on.
See Also: Execute
Category: Display
ClockColor (forecolor,backcolor) ClockColor (forecolor,backcolor) ClockColor (forecolor,backcolor)
Sets colors for the on screen clock.
Category: Color
Computer Tyme MarxMenu Users Manual Page 65
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 66
_______________________________________________________________
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 <drive> : Number ClusterSize <drive> : Number ClusterSize <drive> : Number
Returns cluster size in bytes.
Example:
Writeln (ClusterSize 'C')
ClusterSize only looks at the first character of the string for the
drive letter.
Example:
ClusterSize (Path) ;returns clustersize of current drive.
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
Computer Tyme MarxMenu Users Manual Page 67
_______________________________________________________________
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: Display
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 68
_______________________________________________________________
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
CountryCode : Number CountryCode : Number CountryCode : Number
Returns the international country code from DOS. The country code is the
same number as the international telephone dialing code prefix.
Category: International
Computer Tyme MarxMenu Users Manual Page 69
_______________________________________________________________
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
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
DateSeparator : String DateSeparator : String DateSeparator : String
Returns the date separator character from the country information.
See Also: TimeSeparator, DecimalSeparator, CountryCode
Category: International, Time
Computer Tyme MarxMenu Users Manual Page 70
_______________________________________________________________
DateString (Time) : String DateString (Time) : String DateString (Time) : String
Returns the date of a time value as text. If no parameter is passed then
Now is assumed. Uses international date format rules.
Example:
Writeln DateString ;returns the date of Now as text
Writeln DateString (Tomorrow) ;returns the date of Tomorrow as text
Category: Time, String, International
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
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
DecimalSeparator : String DecimalSeparator : String DecimalSeparator : String
Returns the decimal separator character from the country information.
See Also: TimeSeparator, DateSeparator, CountryCode
Category: International
Computer Tyme MarxMenu Users Manual Page 71
_______________________________________________________________
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 )
;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
Computer Tyme MarxMenu Users Manual Page 72
_______________________________________________________________
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
DirectoriesOnly (On/Off) DirectoriesOnly (On/Off) DirectoriesOnly (On/Off)
Forces ReadDirectory to read directories instead of file names.
See Also: ReadDirectory
Category: File
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
Computer Tyme MarxMenu Users Manual Page 73
_______________________________________________________________
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
DoubleLineBox DoubleLineBox DoubleLineBox
Selects double line box.
See Also: SingleLineBox, BlockBox, CustomBox, NoBoxBorder
Category: Display
Computer Tyme MarxMenu Users Manual Page 74
_______________________________________________________________
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
DvFreeze (Handle) DvFreeze (Handle) DvFreeze (Handle)
Freezes a program. The program stops executing.
See Also: DvUnFreeze, DvPifExecute, DvLastHandle
Category: DesqView
Computer Tyme MarxMenu Users Manual Page 75
_______________________________________________________________
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 76
_______________________________________________________________
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 off 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 77
_______________________________________________________________
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 visible again.
See Also: DvHide
Category: DesqView
Else Else Else
Starts lines executed if a condition is not true.
Example:
if X = 1
Writeln 'One'
else
Writeln 'Not One'
endif
See Also: If Then Endif ElseIf
Category: Conditional
ElseIf ElseIf ElseIf
Used with IF, ELSE, and ENDIF in conditional statements. After one
ElseIf is true, execution continues after the endif statement.
Example:
if X = 1
Writeln 'One'
elseif X = 2
Writeln 'Two'
elseif X = 3
Writeln 'Three'
elseif X = 4
Writeln 'Four'
else
Writeln 'Other'
endif
See Also: If Then Endif Else
Computer Tyme MarxMenu Users Manual Page 78
_______________________________________________________________
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 ElseIf Then
Category: Conditional
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
Computer Tyme MarxMenu Users Manual Page 79
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 80
_______________________________________________________________
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 use a vertical
bar in front of the command.
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.
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."
Be sure not to load any TSR programs using the Execute command or
MarxMenu will lock up.
Computer Tyme MarxMenu Users Manual Page 81
_______________________________________________________________
See Also: UseCommand, DosWindow, PauseAfterExecute, ClearScreenFirst
Category: Execution
ExistDir (directory) : Boolean ExistDir (directory) : Boolean ExistDir (directory) : Boolean
Used to test whether or not a DIRECTORY exists. It can also test to see
if a disk is inserted in a floppy drive.
Example:
if not ExistDir 'A:' then Writeln 'Insert disk in drive A:'
See Also: ExistFile
Category: File
ExistFile : Boolean ExistFile : Boolean ExistFile : Boolean
Used to test whether or not a FILE exists.
See Also: ExistDir
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.
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 82
_______________________________________________________________
ExitMenu ExitMenu ExitMenu
Causes MarxMenu to exit. If the Bat command is used or batch commands
are used onder an OnKey statement then MarxMenu will create a batch file
and set the environment variable MXCMD to point to it. If no batch file
is to be created, and MXCMD hasn't been set to any value then the menu
system will exit by setting MXCMD to MXSTOP.
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
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
Computer Tyme MarxMenu Users Manual Page 83
_______________________________________________________________
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.
See Also: FileTime
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 84
_______________________________________________________________
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 85
_______________________________________________________________
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
FileTime (File) : Time FileTime (File) : Time FileTime (File) : Time
Returns the time of a file in MarxMenu format.
See Also: FileDate
Category: File, Time
FileWrite (FileVar,String) FileWrite (FileVar,String) FileWrite (FileVar,String)
Writes text to a file.
Category: File
Computer Tyme MarxMenu Users Manual Page 86
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 87
_______________________________________________________________
FreeDiskSpace <drive> : Number FreeDiskSpace <drive> : Number FreeDiskSpace <drive> : 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
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
GotoXY (column,row) GotoXY (column,row) GotoXY (column,row)
Move cursor to location column,row in current box.
Category: Display, Ansi
HiddenAndSystem (On/Off) HiddenAndSystem (On/Off) HiddenAndSystem (On/Off)
Controls if ReadDirectory will read hidden and system files.
See Also: ReadDirectory
Category: File
Hour : Number Hour : Number Hour : Number
Return the current hour. 24 hour format.
Category: Time
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
Computer Tyme MarxMenu Users Manual Page 88
_______________________________________________________________
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 continuosly 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:
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
To disable IdleProgram run:
Computer Tyme MarxMenu Users Manual Page 89
_______________________________________________________________
Dispose(IdleProgram)
See Also: Run, Loc, BlankScreenProgram
Category: Execution
If If If
Used for conditional program control.
Usage:
IF (condition) THEN (statement)
IF (condition)
(statement)
(statement)
ELSE
(statement)
(statement)
ENDIF
Category: Conditional
See Also: Else, ElseIf, Then, EndIf
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 90
_______________________________________________________________
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
IncludeDirectories (On/Off) IncludeDirectories (On/Off) IncludeDirectories (On/Off)
Controls if ReadDirectory will read directories along with file names.
See Also: ReadDirectory
Category: File
Computer Tyme MarxMenu Users Manual Page 91
_______________________________________________________________
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
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
Jump (menu) Jump (menu) Jump (menu)
Jumps to another menu and does not return to original menu.
Category: Execution
Computer Tyme MarxMenu Users Manual Page 92
_______________________________________________________________
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
LastDrive : String LastDrive : String LastDrive : String
Returns the drive letter of the last local drive in the system as set by
CONFIG.SYS. By default, this is drive letter E. On a Novell network the
drive after LastDrive is the first network drive.
Category: Novell, System
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 93
_______________________________________________________________
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
Ln (Real) : Real Ln (Real) : Real Ln (Real) : Real
Returns the Natural Logarithm of a real.
Category: Math, Float
Loc (Procedure or Variable) Loc (Procedure or Variable) Loc (Procedure or Variable)
When used with a procedure, Loc returns the location of a procedure for
storing in a variable. The variable is later executed using the Run
command.
When used with a variable, Loc returns the location of a variable rather
than it's contents. Thus B = Loc A sets B to point to A.
Example:
Var A B
B = Loc A
B = 9
Writeln A ;returns 9
Example:
Var A
TestLoc (Loc A)
Writeln A ;returns 9
Computer Tyme MarxMenu Users Manual Page 94
_______________________________________________________________
Procedure TestLoc (B)
B = 9
EndProc
The rule is that all indirect location references are resolved in the
process of evaluating an expression.
Example:
Var A B C D
B = Loc A
C = Loc B
D = Loc C
D = 9
Writeln A ; Returns 9
As you would expect, qualifiers and multidimensional array addressing
works with indirect addressing.
Example:
var A B C D E
A[3] = 12
C = 3
B = Loc C
D = Loc E
D[7] = 8
TestLoc (Loc A[B])
Writeln A[B,9,E[7]]
Procedure TestLoc (X)
Writeln X
X[9,D[7]] = 6
Writeln X[9,E[7]]
EndProc
See Also: Run, Actual
Category: Variable
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
Computer Tyme MarxMenu Users Manual Page 95
_______________________________________________________________
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
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.
On a Novell network the current drive is changed to the first network
drive letter. Any map roots on this drive are removed. Then it changes
to the \LOGIN directory. Typically the current directory will be set to
F:\LOGIN.
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.
Logging off is a tricky process and requires that everything is done
right in order for it to work. If strange things happen use ECHO ON and
PAUSE in you batch files in order to watch what is happening.
See Also: LockWord, Logoff
Category: Execution
Computer Tyme MarxMenu Users Manual Page 96
_______________________________________________________________
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.
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.
You can also pass an array to a loop instead of a number. If an array is
passed MarxMenu will loop for the number of elements in that array.
Example:
Var X
ReadTextFile('MARXREAD.ME',X)
OpenPrinter
;Loop X is the same as Loop NumberOfElements X
Loop X
PrintLn X[LoopIndex]
EndLoop
ClosePrinter
See Also: EndLoop, LoopIndex, LoopLimit, LoopLevel
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 97
_______________________________________________________________
LoopIndex : Number LoopIndex : Number LoopIndex : Number
Returns the index of the loop you are in.
See Also: Loop, EndLoop, LoopLimit, LoopLevel
Category: Conditional
LoopLevel : Number LoopLevel : Number LoopLevel : Number
Returns the number of nested loops currently running. This includes all
nested loops not just the current procedure.
See Also: Loop, EndLoop, LoopLimit, LoopIndex
Category: Conditional
LoopLimit : Number LoopLimit : Number LoopLimit : Number
Returns the upper limit of the loop you are in.
See Also: Loop, EndLoop, LoopIndex, LoopLevel
Category: Conditional
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
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
Computer Tyme MarxMenu Users Manual Page 98
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 99
_______________________________________________________________
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
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
MkDir (String) MkDir (String) MkDir (String)
Makes a new directory. The FileResult variable returns the dos result
error code. A zero in FileResult indicates success.
Example:
MkDir 'C:\MARX'
See Also: ChDir, RmDir
Category: File
Mod : Operator Mod : Operator Mod : Operator
Returns the remainder of the division of two numbers.
Category: Math
Computer Tyme MarxMenu Users Manual Page 100
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 101
_______________________________________________________________
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
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
<Vertical> 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 is 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
Computer Tyme MarxMenu Users Manual Page 102
_______________________________________________________________
NetworkVersion : Boolean NetworkVersion : Boolean NetworkVersion : Boolean
Returns true if you are running the network version of MarxMenu.
Category: Misc
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
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 103
_______________________________________________________________
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 if you want to do anything useful there.
See Also: NovDetach
Category: Novell
NovAttahedServers (Array) NovAttahedServers (Array) NovAttahedServers (Array)
Returns a list of servers you are already attached to.
See Also: NovServers
Category: Novell, Array
NovBroadcastMode (Mode) NovBroadcastMode (Mode) NovBroadcastMode (Mode)
This reads or sets the message broadcast mode.
Example:
Writeln NovBroadcastMode
BroadcastMode = 3
Modes:
0 - All Messages, same as running CastOn
1 - Server messages only, same as running CastOff
2 - Same as 0 but user has to poll server for messages
3 - Same as 1 but user has to poll server for messages
See Also: NovSendMessage, NovGetMessage
Category: Novell
Computer Tyme MarxMenu Users Manual Page 104
_______________________________________________________________
NovChangePassword (OldPassword,NewPassword) NovChangePassword (OldPassword,NewPassword) NovChangePassword (OldPassword,NewPassword)
Changes the novell users password from OldPassword to NewPassword.
Category: Novell
NovCleanVolumeName (String) : String NovCleanVolumeName (String) : String NovCleanVolumeName (String) : String
Returns a string containing the server and volume name of a file name or
directory.
Example:
Writeln NovCleanVolumeName('G:') ;Returns 'MARX/SYS:LOGIN'
See Also: CleanFileName
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
NovConnectionsInUse : Number NovConnectionsInUse : Number NovConnectionsInUse : Number
Returns the number of connections in use.
Category: Novell
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
NovDeleteObject (Object,Type) NovDeleteObject (Object,Type) NovDeleteObject (Object,Type)
Deletes an object from the bindary.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 105
_______________________________________________________________
NovDetach (Server) NovDetach (Server) NovDetach (Server)
This is used to drop the connection to a server. It also logs you off.
See Also: NovAttach
Category: Novell
NovFullName (User) NovFullName (User) NovFullName (User)
Returns the Full Name of the user as set by syscon. If NovFullName is
used without a parameter then MyLoginName is assumed.
See Also: NovLoginName
Category: Novell
NovGetMessage : String NovGetMessage : String NovGetMessage : String
When in broadcast mode 2 or 3 this polls the server for stored messages
and returns them if found.
See Also: NovSendMessage, NovBroadcastMode
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 106
_______________________________________________________________
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
Returns true if you are in the group.
Example:
If NovInGroup ('PAYROLL') then Writeln 'Accounting'
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')
NovLogin ('TYME/MARC','PASSWORD')
NovLogin will automatically attach to the file server for you and
preserve all default and preferred server settings.
The variable NovResult is set to 0 or 223 if successful. The 223 result
indicated a grace login.
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
Computer Tyme MarxMenu Users Manual Page 107
_______________________________________________________________
See Also: NovDetach
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.
See Also: NovFullName
Category: Novell
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.
See Also: NovMapRoot
Category: Novell
NovMapRoot (Drive,Path) NovMapRoot (Drive,Path) NovMapRoot (Drive,Path)
NovMapRoot works like Novell's MAP ROOT command. It allows you to map a
drive letter to a subdirectory and make it look like the root directory
of that drive. You may specify volume names and server names.
Example:
NovMapRoot('P','TYME/SYS:PUBLIC')
; P:\ is the same as the TYME/SYS:PUBLIC directory
See Also: NovMapDrive
Category: Novell
Computer Tyme MarxMenu Users Manual Page 108
_______________________________________________________________
NovMaxConnections : Number NovMaxConnections : Number NovMaxConnections : Number
Returns the maximum number of connections that your netware will allow.
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
NovObjectID (User) : String NovObjectID (User) : String NovObjectID (User) : String
NovObjectID returns the users novell object identification code. This is
the same as the name of the users mail directory.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 109
_______________________________________________________________
NovObjects (2D Array) NovObjects (2D Array) NovObjects (2D Array)
NovObjects reads all objects from the bindary returning a 2 dimensional
array containing all object names and object types.
Example:
NovObjects (X)
Loop X
Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
EndLoop
Common Object Types:
1 - User
2 - Group
3 - Print Queue
4 - File Server
5 - Job Server
6 - Gateway
7 - Print Server
See Also: NovScanProperties, NovPropertyValues
Category: Novell, Array
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
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
Computer Tyme MarxMenu Users Manual Page 110
_______________________________________________________________
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
NovPropertyValues (Array, Object, Property, Type) NovPropertyValues (Array, Object, Property, Type) NovPropertyValues (Array, Object, Property, Type)
Reads property values of object into and array. Note: Some property
values are not text.
Example: ;shows contents of bindary
StandardIO
Var Objects, Obj, Prop, Ty, Values
Qualifier ObjName ObjType
NovObjects (Objects)
Loop Objects
Obj = Objects[LoopIndex].ObjName
Ty = Objects[LoopIndex].ObjType
Writeln Obj ' --------- ' Ty
NovScanProperties (Prop,Obj,Ty)
Loop Prop
Writeln ' ' Prop[LoopIndex]
NovPropertyValues(Values,Obj,Prop[LoopIndex],Ty)
Loop Values
Writeln ' ' Values[LoopIndex]
EndLoop
EndLoop
EndLoop
See Also: NovObjects, NovScanProperties
Category: Novell, Array
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
Computer Tyme MarxMenu Users Manual Page 111
_______________________________________________________________
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
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
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
See Also: NovObjects, NovPropertyValues
Category: Novell, Array
Computer Tyme MarxMenu Users Manual Page 112
_______________________________________________________________
NovSecurityEquals (Security) : Boolean NovSecurityEquals (Security) : Boolean NovSecurityEquals (Security) : Boolean
Returns True if user has the security equivalent of Security.
Example:
if NovSecurityEquals ('SUPERVISOR')
Execute ('SYSCON'
endif
Category: Novell
NovServerTime : Time NovServerTime : Time NovServerTime : Time
NovServerTime can read or set the date and time of a Novell file server.
To read the server time:
X = ServerTime
To set the server time:
ServerTime = X
Category: Novell, Time
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 113
_______________________________________________________________
NovSendMessage (Message,Connection) NovSendMessage (Message,Connection) NovSendMessage (Message,Connection)
Sends a message to the specified connection number just like the novell
SEND command.
NovResults
0 - Successful
252 - Buffer Full
253 - Invalid Connection Number
255 - Blocked (running CastOff)
See Also: NovGetMessage, NovBroadcastMode
Category: Novell
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 executes 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 114
_______________________________________________________________
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
NovVersionNumber : Number NovVersionNumber : Number NovVersionNumber : Number
Returns the novell netware version number.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 115
_______________________________________________________________
NovVolumes (Array) NovVolumes (Array) NovVolumes (Array)
Reads volumes on the default server into an array.
Example:
var X
NovVolumes(X)
Loop NumberOfElements(X)
Writeln X[LoopIndex]
EndLoop
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
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 : Time Now : Time Now : Time
Returns the current moment or sets the system clock.
Read the current moment:
X = Now
Set the system clock:
Now = X
See Also: Today, Tomorrow
Category: Time
Computer Tyme MarxMenu Users Manual Page 116
_______________________________________________________________
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
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 name 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.
See Also: MxCmd
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 117
_______________________________________________________________
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
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.
Example:
if (B < 9) or (C > 5) then ..... ;boolean or
X or $0F ;bitwise or
Category: Math, Boolean
Computer Tyme MarxMenu Users Manual Page 118
_______________________________________________________________
Ord (Char) : Number Ord (Char) : Number Ord (Char) : Number
Returns the numeric value of an ascii character.
Example:
Ord('A') ;returns 65
Char(Ord('A') + 1) ;returns 'C'
See Also: Char
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.
See Also: IdleProgram
Category: String
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
Computer Tyme MarxMenu Users Manual Page 119
_______________________________________________________________
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
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.
Example:
Writeln Path ;returns 'C:\MARX'
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
Computer Tyme MarxMenu Users Manual Page 120
_______________________________________________________________
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
Pi : Real Pi : Real Pi : Real
Returns the value of Pi to 18 digits.
Category: Math, Float
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
Computer Tyme MarxMenu Users Manual Page 121
_______________________________________________________________
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
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.
See Also: PickOne
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
Computer Tyme MarxMenu Users Manual Page 122
_______________________________________________________________
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
PosInList (String,Array) : Number PosInList (String,Array) : Number PosInList (String,Array) : Number
Scans a string array looking for a match on string and returns the array
index of the first matched string if found or a zero if not found.
Example:
X[1] = 'JOE'
X[2] = 'KEVIN'
X[3] = 'MARC'
Writeln PosInList('KEVIN',X) ;returns 2
See Also: PosInSortedList
Category: Array
PosInSortedList (String,Array) : Number PosInSortedList (String,Array) : Number PosInSortedList (String,Array) : Number
Scans a string array looking for a match on string in a sorted array and
returns the array index of the first matched string if found or a zero
if not found. The array must be in sorted order. A binary search is used
to make this command very fast.
Example:
X[1] = 'JOE'
X[2] = 'KEVIN'
X[3] = 'MARC'
SortArray (X)
Writeln PosInList('KEVIN',X) ;returns 2
See Also: PosInList
Category: Array
Power (Real,Real) : Real Power (Real,Real) : Real Power (Real,Real) : Real
Raises a real to a given power.
Example: Power(3,4) ;returns 81.0
Category: Math, Float
Computer Tyme MarxMenu Users Manual Page 123
_______________________________________________________________
Pred (number) : Number Pred (number) : Number Pred (number) : Number
Returns number minus 1.
Example:
Pred(5) ;returns 4
See Also: Succ
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
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 hits the Print Screen key with no printer
attached.
Category: Printer
Computer Tyme MarxMenu Users Manual Page 124
_______________________________________________________________
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
Return PickFile (FileType,4,5,17)
EndProc
Whenever we use the word SelectFile in the menu, all the lines of the
procedure SelectFile will execute.
Parameters can be passed to procedures. When a parameter is passed it is
normally bassed by value. This mean that a copy of the original is
passed. Whatever you do to the copy doesn't affect the original value.
Example:
var A
Procedure Square (X)
X = X * X
Writeln X
EndProc
A = 6
Square (A) ;prints 36
Writeln A ;prints 6
In the above example Square (A) will write 36 but Writeln A will write
6. The reason is that Square passes a copy of A to X but the value of X
is not returned to A. If you want the original A to be affected you
would use the Loc command.
A = 6
Square (Loc A) ;prints 36
Writeln A ;prints 36
In this example we pas Loc A to the Square procedure. Thus, instead of X
being set to 6, X is set to point to A. As a pointer, any operation
performed on X is performed on A instead.
See Also: EndProc, Return, Loc
Category: Misc
Computer Tyme MarxMenu Users Manual Page 125
_______________________________________________________________
PullMenu (on/off) PullMenu (on/off) PullMenu (on/off)
Controls the behavior of the left and right arrow keys when using pull
down menus. Default is Off. See PULL.MNU for example.
Category: Display
Qualifier Qualifier Qualifier
Used to create qualifiers which are named elements of an array.
Example:
Var Presidents
Qualifier FirstName, LastName
Presidents[1].FirstName = 'George'
Presidents[1].LastName = 'Washington'
See Also: Var, Constant, Shared
Category: Variable
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.
To get a random number in a specific range, use the Mod command.
Example:
Write 'Pick a Number from 1 to 10 '
Writeln (Random mod 10 + 1)
Category: Math
Computer Tyme MarxMenu Users Manual Page 126
_______________________________________________________________
ReadDirectory (Path,Array) ReadDirectory (Path,Array) ReadDirectory (Path,Array)
Reads a directory into and array. This command is controlled be several
variables that control its behavior.
If WholeFileNames is set to true, the names that are returned contain
the whole path. If HiddenAndSystem is set to True, then Hidden and
System files are also read. If IncludeDirectories is set to true, then
directories are also read.
If DirectoriesOnly is set to true, then only directory names are read.
Example:
Var X
WholeFileNames Off
ReadDirectory('*.MNU',X)
Loop X
Execute ('COPY ' + X[LoopIndex] + ' A:')
EndLoop
See Also: WholeFileNames, HiddenAndSystem, IncludeDirectories
See Also: DirectoriesOnly
Category: Array, File
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.
Computer Tyme MarxMenu Users Manual Page 127
_______________________________________________________________
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 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
ReadKey : String ReadKey : String ReadKey : String
Returns the character that is input from the keyboard. If UseArrows is
on then the inverse bar will appear in the current window for selecting
a choice.
Example:
Var Key
Repeat
Writeln( 'Press the <ESC> key to exit this program.' )
Key = ReadKey
Until Key = Esc
See Also: UseArrows
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
Computer Tyme MarxMenu Users Manual Page 128
_______________________________________________________________
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
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
ReleaseDate : String ReleaseDate : String ReleaseDate : String
Returns the MarxMenu Release Date.
Category: String
Computer Tyme MarxMenu Users Manual Page 129
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 130
_______________________________________________________________
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.
See Also: ExitCode
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
RmDir (String) RmDir (String) RmDir (String)
Removes a directory. The FileResult variable returns the dos result
error code. A zero in FileResult indicates success. You can't remove a
directory that contains files.
Example:
RmDir 'C:\SABER'
See Also: ChDir, MkDir
Category: File
Computer Tyme MarxMenu Users Manual Page 131
_______________________________________________________________
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 132
_______________________________________________________________
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. Normally this is 25.
Category: Display
ScreenWidth : Number ScreenWidth : Number ScreenWidth : Number
Returns number of columns of character on your screen. Normally this is
80.
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
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
Computer Tyme MarxMenu Users Manual Page 133
_______________________________________________________________
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
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
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
Computer Tyme MarxMenu Users Manual Page 134
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 135
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 136
_______________________________________________________________
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
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
SORT.MNU
var SortBuf
StandardIO
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
Computer Tyme MarxMenu Users Manual Page 137
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 138
_______________________________________________________________
Succ (number) : Number Succ (number) : Number Succ (number) : Number
Returns number plus 1.
Example:
Succ(4) ;returns 5
See Also: Pred
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
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
7 = Mono
258 = 43/50 line EGA BW
259 = 43/50 line EGA COLOR
Example:
TextMode BW80
Category: Display
Computer Tyme MarxMenu Users Manual Page 139
_______________________________________________________________
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
Then Then Then
Conditional control.
See Also: If, Else, Endif, ElseIf
Category: Conditional
TimeOf (String) : Number TimeOf (String) : Number TimeOf (String) : Number
Converts a string representing a date to a time number. The number is
the number of seconds since 01-01-80. Conversion follows international
rules based on the country code.
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: International, Time
Timer : Number Timer : Number Timer : Number
Returns the system timer.
Category: Time
TimeSeparator : String TimeSeparator : String TimeSeparator : String
Returns the time separator character from the country information.
See Also: DecimalSeparator, DateSeparator, CountryCode
Category: International, Time
Computer Tyme MarxMenu Users Manual Page 140
_______________________________________________________________
TimeString (Time) : String TimeString (Time) : String TimeString (Time) : String
Returns the time as a string in HH:MM:SS format. 24 hour. If no
parameter is passed, Now is assumed.
Example:
Writeln TimeString
;returns the time of Now as text
Writeln TimeString (Now + (5 * SecondsInHour))
;returns the time of 5 hours from now as text
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. It can also be used to set the system date.
Read the current day;
X = Today
Set the system clock:
Today = TimeOf '08-19-91'
See Also: Tomorrow, Now
Category: Time
Tomorrow : Time Tomorrow : Time Tomorrow : Time
Returns the time of the day after today at midnight.
See Also: Today, Now
Category: Time
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
Computer Tyme MarxMenu Users Manual Page 141
_______________________________________________________________
TotalDiskSpace <drive> : Number TotalDiskSpace <drive> : Number TotalDiskSpace <drive> : 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
TrueName (String) : String TrueName (String) : String TrueName (String) : String
There is an undocumented feature of DOS called TRUENAME. It returns the
real name of a file or directory looking past such things as drive
mappings and Assigned or Substituted drives. On local drives you get the
drive and path where the file really is. On networks you get server and
volume information where the server name starts with a '\\'.
Example:
TrueName ('H:') ;returns \\TYME\SYS\HOME\MARC
See Also: CleanFileName
Category: String, File
UnBlank : Boolean UnBlank : Boolean UnBlank : Boolean
Unblank returns true if MarxMenu has determined that the screen blanker
should finish. Your screen blanker needs to call UnBlank to determine
when to unblank the screen.
Example:
while not UnBlank
<your screen blanker>
endwhile
See Also: BlankScreenProgram
Category: Display
Computer Tyme MarxMenu Users Manual Page 142
_______________________________________________________________
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.
Example:
Repeat
<statement>
<statement>
Until <condition>
See Also: Repeat.
Category: Conditional
UpperCase (String) : String UpperCase (String) : String UpperCase (String) : String
Return UpperCase of String including support for international
characters.
Category: String, International
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 143
_______________________________________________________________
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 <drive> : Number UsedDiskSpace <drive> : Number UsedDiskSpace <drive> : Number
Returns used disk space in bytes.
Example:
Writeln (UsedDiskSpace 'C')
UsedDiskSpace only looks at the first character of the string for the
drive 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 144
_______________________________________________________________
Var Var Var
Used to create variables.
See Also: Constant, Shared, Qualifier
Category: Variable
VideoMode : Number VideoMode : Number VideoMode : Number
Returns Current Video Mode.
Category: Display
VideoPage : Number VideoPage : Number VideoPage : Number
Returns Current Video Page.
Category: Display
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
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
Computer Tyme MarxMenu Users Manual Page 145
_______________________________________________________________
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
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
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
WholeFileNames (On/Off) WholeFileNames (On/Off) WholeFileNames (On/Off)
Controls if ReadDirectory will return the whole name and path or just
the filename part.
See Also: ReadDirectory
Category: File
Computer Tyme MarxMenu Users Manual Page 146
_______________________________________________________________
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
WinX : Number WinX : Number WinX : Number
Returns the horizontal location of the left hand corner of the window.
See Also: WinY
Category: Display
WinY : Number WinY : Number WinY : Number
Returns the vertical location of the left hand corner of the window.
See Also: WinX
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
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
Computer Tyme MarxMenu Users Manual Page 147
_______________________________________________________________
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
Computer Tyme MarxMenu Users Manual Page 148
_______________________________________________________________
STRING CONSTANTS STRING CONSTANTS STRING CONSTANTS
F1 = #0#59 SF1 = #0#84 CF1 = #0#94 AF1 = #0#104
F2 = #0#60 SF2 = #0#85 CF2 = #0#95 AF2 = #0#105
F3 = #0#61 SF3 = #0#86 CF3 = #0#96 AF3 = #0#106
F4 = #0#62 SF4 = #0#87 CF4 = #0#97 AF4 = #0#107
F5 = #0#63 SF5 = #0#88 CF5 = #0#98 AF5 = #0#108
F6 = #0#64 SF6 = #0#89 CF6 = #0#99 AF6 = #0#109
F7 = #0#65 SF7 = #0#90 CF7 = #0#100 AF7 = #0#110
F8 = #0#66 SF8 = #0#91 CF8 = #0#101 AF8 = #0#111
F9 = #0#67 SF9 = #0#92 CF9 = #0#102 AF9 = #0#112
F10 = #0#68 SF10 = #0#93 CF10 = #0#103 AF10 = #0#113
F11 = #0#133 SF11 = #0#135 CF11 = #0#137 AF11 = #0#139
F12 = #0#134 SF12 = #0#136 CF12 = #0#138 AF12 = #0#140
ALT1 = #0#120 BKSP = #8
ALT2 = #0#121 CR = #13
ALT3 = #0#122 CRLF = #13#10
ALT4 = #0#123 ESC = #27
ALT5 = #0#124 FF = #12
ALT6 = #0#125 LF = #10
ALT7 = #0#126
ALT8 = #0#127
ALT9 = #0#128
ALT0 = #0#129
Category: Constants
TIME AND DATE CONSTANTS TIME AND DATE CONSTANTS TIME AND DATE CONSTANTS
Jan = 1 Sun = 0
Feb = 2 Mon = 1
Mar = 3 Tue = 2
Apr = 4 Wed = 3
May = 5 Thu = 4
Jun = 6 Fri = 5
Jul = 7 Sat = 6
Aug = 8
Sep = 9 SecondsInHour = 3600
Oct = 10 SecondsInDay = 86400
Nov = 11
Dec = 12
Category: Constants
Computer Tyme MarxMenu Users Manual Page 149
_______________________________________________________________
VIDEO CONSTANTS VIDEO CONSTANTS VIDEO CONSTANTS
Video Modes: Display Types:
BW40 = 0 0 = HercMono
CO40 = 1 1 = CGA
BW80 = 2 2 = MCGA
CO50 = 3 3 = EGA
MONO = 7 4 = VGA
Category: Constants
COLOR CONSTANTS COLOR CONSTANTS COLOR CONSTANTS
Black = 0 DGrey = 8
Blue = 1 LBlue = 9
Green = 2 LGreen = 10
Cyan = 3 LCyan = 11
Red = 4 LRed = 12
Magenta = 5 LMagenta = 13
Brown = 6 Yellow = 14
Grey = 7 White = 15
Category: Constants
BOOLEAN CONSTANTS BOOLEAN CONSTANTS BOOLEAN CONSTANTS
True Yes On
False No Off
Category: Constants
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
Computer Tyme MarxMenu Users Manual Page 150
_______________________________________________________________
IF->ELSE->ELSEIF->ENDIF Where, IF [condition]
statement
statement
ELSEIF [condition]
statement
statement
ELSEIF [condition]
statement
statement
ELSE
statement
statement
ENDIF
REPEAT->UNTIL Where, REPEAT
statement
statement
UNTIL [condition]
WHILE->ENDWHILE Where, WHILE [conditon]
statement
statement
ENDWHILE
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)
Computer Tyme MarxMenu Users Manual Page 151
_______________________________________________________________
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.
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.
Computer Tyme MarxMenu Users Manual Page 152
_______________________________________________________________
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)
NetworkVersion NetworkVersion : Boolean
Procedure Procedure (name)
Return Return (param,param,...)
Run Run variable (parameters)
Wait Wait (number)
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
Computer Tyme MarxMenu Users Manual Page 153
_______________________________________________________________
Sqr Sqr (Real) : Real
Succ Succ (number) : Number
Value Value (string) : Number
Xor Xor : Operator
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
Computer Tyme MarxMenu Users Manual Page 154
_______________________________________________________________
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 (Time) : 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
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)
Computer Tyme MarxMenu Users Manual Page 155
_______________________________________________________________
StuffKBD StuffKBD (String)
TimeString TimeString (Time) : String
Trim Trim (string)
TrueName TrueName (String) : String
UniqueFileName UniqueFileName : String
UpperCase UpperCase (String) : String
UpperCaseOnly UpperCaseOnly : Boolean
Value Value (string) : Number
VARIABLE COMMANDS VARIABLE COMMANDS VARIABLE COMMANDS
Actual Actual
Loc Loc (Procedure or Variable)
Qualifier Qualifier
Shared Shared
Var Var
BOOLEAN COMMANDS BOOLEAN COMMANDS BOOLEAN COMMANDS
And And : Operator
Not Not : Operator
Or Or : Operator
Xor Xor : Operator
ARRAY COMMANDS ARRAY COMMANDS ARRAY COMMANDS
AppendArray AppendArray (Array,Value)
Delete Delete (string,pos,count)
Dispose Dispose (Variable)
NovAttachedServers NovAttahedServers (Array)
NovGroupMembers NovGroupsMembers (Group,Array)
NovObjects NovObjects (2D Array)
NovPrintQueues NovPrintQueues (Array)
NovPropertyValues NovPropertyValues (Array, Object, Property, Type)
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovScanProperties NovScanProperties (Array, Object, ObjectType)
NovServers NovServers (Array)
NovUsers NovUsers (Array)
NovUsersLoggedIn NovUsersLoggedIn (Array)
NovVolumes NovVolumes (Array)
NumberOfElements NumberOfElememts (array) : Number
PickMany PickMany(SourceArray,DestinationArray)
PickOne PickOne (Array) : String
PickPosition PickPosition : Number
PosInList PosInList (String,Array) : Number
PosInSortedList PosInSortedList (String,Array) : Number
ReadDirectory ReadDirectory (Path,Array)
ReadEnvironment ReadEnvironment (Array)
ReadTextFile ReadTextFile (FileName,Array)
SetArraySize SetArraySize (Array,Size)
SortArray SortArray (Array)
Computer Tyme MarxMenu Users Manual Page 156
_______________________________________________________________
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
TIME COMMANDS TIME COMMANDS TIME COMMANDS
BadDate BadDate : Boolean
DateSeparator DateSeparator : String
DateString DateString (Time) : String
Day Day : Number
DayOf DayOf (Date) : Number
DayOfWeek DayOfWeek : Number
DayOfWeekOf DayOfWeekOf (Date) : Number
FileTime FileTime (File) : Time
Hour Hour : Number
HourOf HourOf (Date) : Number
Hundredth Hundredth : Number
Minute Minute : Number
MinuteOf MinuteOf (Date) : Number
Month Month : Number
MonthOf MonthOf (Date) : Number
NovAccountExpDate NovAccountExpDate (UserName) : Date
NovLastLoginDate NovLastLoginDate (User) : Date
NovPasswordExpDate NovPasswordExpDate (UserName) : Date
NovServerTime NovServerTime : Time
Now Now : Time
Second Second : Number
SecondOf SecondOf (Date) : Number
TimeOf TimeOf (String) : Number
Timer Timer : Number
TimeSeparator TimeSeparator : String
TimeString TimeString (Time) : String
Today Today : Date
Tomorrow Tomorrow : Time
Year Year : Number
YearOf YearOf (Date) : Number
Computer Tyme MarxMenu Users Manual Page 157
_______________________________________________________________
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
BlankScreenProgram BlankScreenProgram : Procedure
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)
ClearLine ClearLine [char]
ClearScreen ClearScreen [char]
ClearScreenOnExit ClearScreenOnExit (on/off)
ClockMode ClockMode
ClockPos ClockPos (column,row)
ColorScreen ColorScreen : Boolean
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)
Computer Tyme MarxMenu Users Manual Page 158
_______________________________________________________________
EraseTopWindow EraseTopWindow
EraseWindow EraseWindow (Number)
Explode Explode (on/off)
ExplodeDelay ExplodeDelay (number)
ForceExplosion ForceExplosion (On/Off)
GotoXY GotoXY (column,row)
InactiveBox InactiveBox (BoxType)
LockWord LockWord (word)
MoveWindow MoveWindow (Horizontal,Vertical)
NoBoxBorder NoBoxBorder
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)
TextMode TextMode (num)
UnBlank UnBlank : Boolean
UseArrows UseArrows
VideoMode VideoMode : Number
VideoPage VideoPage : Number
ViewArray ViewArray (Array)
ViewTextFile ViewTextFile (Name)
WhereX WhereX : Number
WhereXAbs WhereXAbs : Number
WhereYAbs WhereYAbs : Number
WindowHeight WindowHeight : Number
WindowWidth WindowWidth : Number
WinX WinX : Number
WinY WinY : Number
Write Write (string)
WriteCenter WriteCenter (string)
Writeln Writeln (string)
WriteVertical WriteVertical (string)
Computer Tyme MarxMenu Users Manual Page 159
_______________________________________________________________
COLOR COMMANDS COLOR COMMANDS COLOR COMMANDS
Blink Blink : Boolean
BoxBorderColor BoxBorderColor (forecolor,backcolor)
BoxHeaderColor BoxHeaderColor (forecolor,backcolor)
BoxInsideColor BoxInsideColor (forecolor,backcolor)
CapsColor CapsColor (forecolor,backcolor)
ClockColor ClockColor (forecolor,backcolor)
ConsoleBorderColor ConsoleBorderColor (Color,Color)
ConsoleHeaderColor ConsoleHeaderColor (Color,Color)
ConsoleInsideColor ConsoleInsideColor (Color,Color)
InactiveBoxColor InactiveBoxColor (foreground,background)
InverseColor InverseColor (forecolor,backcolor)
ShadowColor ShadowColor (ForeColor,BackColor)
TextBackground TextBackground (color)
TextColor TextColor (forecolor,backcolor)
SYSTEM COMMANDS SYSTEM COMMANDS SYSTEM COMMANDS
CapsLock CapsLock : Boolean
ClusterSize ClusterSize <drive> : Number
DosVersion DosVersion : Number
DosVersionString DosVersionString : String
Drives Drives : Number
Floppies Floppies : Number
FreeDiskSpace FreeDiskSpace <drive> : Number
LastDrive LastDrive : String
MinorDosVersion MinorDosVersion : Number
NumLock NumLock : Boolean
ParallelPorts ParallelPorts : Number
ScrollLock ScrollLock : Boolean
SerialPorts SerialPorts : Number
TotalDiskSpace TotalDiskSpace <drive> : Number
UsedDiskSpace UsedDiskSpace <drive> : Number
Volume Volume (drive)
Computer Tyme MarxMenu Users Manual Page 160
_______________________________________________________________
FILE COMMANDS FILE COMMANDS FILE COMMANDS
ChDir ChDir (string)
DelFile DelFile (Name)
DirectoriesOnly DirectoriesOnly (On/Off)
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
FileTime FileTime (File) : Time
FileWrite FileWrite (FileVar,String)
FileWriteln FileWriteln (FileVar,String)
HiddenAndSystem HiddenAndSystem (On/Off)
IncludeDirectories IncludeDirectories (On/Off)
MkDir MkDir (String)
ReadDirectory ReadDirectory (Path,Array)
ReadTextFile ReadTextFile (FileName,Array)
RmDir RmDir (String)
TextPos TextPos : Number
TextSeek TextSeek (Number)
TrueName TrueName (String) : String
UniqueFileName UniqueFileName : String
ViewTextFile ViewTextFile (Name)
WholeFileNames WholeFileNames (On/Off)
WriteTextFile WriteTextFile (FileName,Array)
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)
Computer Tyme MarxMenu Users Manual Page 161
_______________________________________________________________
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)
INTERNATIONAL COMMANDS INTERNATIONAL COMMANDS INTERNATIONAL COMMANDS
CountryCode CountryCode : Number
DateSeparator DateSeparator : String
DateString DateString (Time) : String
DecimalSeparator DecimalSeparator : String
TimeOf TimeOf (String) : Number
TimeSeparator TimeSeparator : String
UpperCase UpperCase (String) : String
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 162
_______________________________________________________________
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
ElseIf ElseIf
Endif EndIf
EndLoop EndLoop
EndWhile EndWhile
If If
Loop Loop
LoopIndex LoopIndex : Number
LoopLevel LoopLevel : Number
LoopLimit LoopLimit : Number
OnKey OnKey (char)
OnScreenOnly OnScreenOnly (On/Off)
Password Password (Pswd,column,row)
Repeat Repeat
Then Then
Until Until
While While
Computer Tyme MarxMenu Users Manual Page 163
_______________________________________________________________
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)
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)
Computer Tyme MarxMenu Users Manual Page 164
_______________________________________________________________
NOVELL COMMANDS NOVELL COMMANDS NOVELL COMMANDS
LastDrive LastDrive : String
MachineName MachineName : String
NovAccountExpDate NovAccountExpDate (UserName) : Date
NovAddUserToGroup NovAddUserToGroup (User,Group)
NovAttach NovAttach (Server)
NovAttachedServers NovAttahedServers (Array)
NovBroadcastMode NovBroadcastMode (Mode)
NovChangePassword NovChangePassword (OldPassword,NewPassword)
NovCleanVolumeName NovCleanVolumeName (String) : String
NovCloseSemaphore NovCloseSemaphore (Name)
NovConnection NovConnection : Number
NovConnectionsInUse NovConnectionsInUse : Number
NovConsoleOperator NovConsoleOperator : Boolean
NovDefaultServer NovDefaultServer : String
NovDeleteObject NovDeleteObject (Object,Type)
NovDetach NovDetach (Server)
NovFullName NovFullName (User)
NovGetMessage NovGetMessage : String
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)
NovMapRoot NovMapRoot (Drive,Path)
NovMaxConnections NovMaxConnections : Number
NovMinPasswordLength NovMinPasswordLength (User) : Num
NovMyLoginName NovMyLoginName : String
NovMyPassword NovMyPassword (Password) : Boolean
NovObjectID NovObjectID (User) : String
NovObjects NovObjects (2D Array)
NovOpenSemaphore NovOpenSemaphore (Name,Value)
NovPasswordExpDate NovPasswordExpDate (UserName) : Date
NovPreferredServer NovPreferredServer : String
NovPrimaryServer NovPrimaryServer : String
NovPrintQueues NovPrintQueues (Array)
NovPropertyValues NovPropertyValues (Array, Object, Property, Type)
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovRemoveUserFromGroup NovRemoveUserFromGroup (User,Group)
NovResult NovResult : Number
NovScanProperties NovScanProperties (Array, Object, ObjectType)
NovSecurityEquals NovSecurityEquals (Security) : Boolean
NovServerTime NovServerTime : Time
NovSemaphoreTimeOut NovSemaphoreTimeOut
NovSemaphoreUsers NovSemaphoreUsers (Name) : Number
Computer Tyme MarxMenu Users Manual Page 165
_______________________________________________________________
NovSemaphoreValue NovSemaphoreValue (Name) : Number
NovServers NovServers (Array)
NovSendMessage NovSendMessage (Message,Connection)
NovSetPreferredServer NovSetPreferredServer (Server)
NovSetPrimaryServer NovSetPrimaryServer (Server)
NovSignalSemaphore NovSignalSemaphore (Name)
NovStationAddress NovStationAddress (Connection) : String
NovUserInGroup NovUserInGroup (Name,Group) : Boolean
NovUsers NovUsers (Array)
NovUsersLoggedIn NovUsersLoggedIn (Array)
NovVersionNumber NovVersionNumber : Number
NovVolumes NovVolumes (Array)
NovWaitOnSemaphore NovWaitOnSemaphore (Name) : Boolean
UseNovPassword UseNovPassword : Boolean
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.
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.
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.32
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: ________
Signature: __________________________________________________
Master Card __ Visa __ Discover __
* We do not take American Express *
=============================================================