home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Share Gallery 1
/
share_gal_1.zip
/
share_gal_1
/
UT
/
UT070.ZIP
/
MENUS.EXE
/
MARXMENU.DOC
< prev
next >
Wrap
Text File
|
1991-04-22
|
304KB
|
8,181 lines
===================================================================
<*> Computer Tyme MarxMenu <*>
Reference Manual
Copyright 1989 - 1991 by Marc Perkel
All Rights Reserved * Version 2.27 * Release Date: 04-22-91
Computer Tyme * 411 North Sherman Suite 300 * Springfield Mo. 65802
(417) 866-1222 voice * (417) 866-1665 bbs
Fax: (417) 866-0135
CompuServe 76505,1120
===================================================================
Computer Tyme MarxMenu * Table of Contents Page 1
_______________________________________________________________
Copyright ......................................... 1
License ........................................... 1
Warranty .......................................... 1
Acknowledgments ................................... 2
Trademarks ........................................ 2
The MarxMenu Name ................................. 2
Technical Support ................................. 3
Overview of the MarxMenu System ................... 3
-- What MarxMenu Does ............................. 5
-- For the POWER User ............................. 6
Installation ...................................... 7
Installing the Network Survival Kit ............... 7
The MARX.BAT File ................................. 8
-- DROPTO.BAT ..................................... 10
-- Support for early DOS versions ................. 11
-- About Environment Variables .................... 12
-- Dealing with Multiple DOS Shells ............... 13
-- MarxMenu and TSR Control ....................... 14
Network Users ..................................... 15
-- Novell Users ................................... 15
---- The Novell Menu Translator ................... 16
---- Logging out under Menu Control ............... 16
---- Logging in with MarxMenu ..................... 17
------ The CONFIG.SYS File ........................ 18
------ The AUTOEXEC.BAT File ...................... 18
------ The SHELL.CFG File ......................... 20
------ Using a Menu File to Log In ................ 20
---- Novell Semaphores ............................ 21
Running a MarxMenu ................................ 22
Customizing MarxMenu Sample Files ................. 22
Menu Analysis ..................................... 23
Onkey Statements .................................. 24
Popup Menus ....................................... 24
The Console ....................................... 26
Repositioning the Top Window ...................... 26
Mouse Support ..................................... 27
Starting off the Easy Way ......................... 27
About Variables ................................... 27
-- Dates .......................................... 29
-- Real Numbers ................................... 29
-- Local Variables ................................ 30
-- Passing Parameters to Procedures ............... 30
About Constants ................................... 32
About Arrays ...................................... 32
About Qualifiers .................................. 33
Comments in Menu Files ............................ 34
The MarxMenu Compiler ............................. 35
Compiler Compatibility ............................ 35
A word about DOS versions ......................... 36
A word about BUGS ................................. 36
Tips From the Master .............................. 37
Computer Tyme MarxMenu * Table of Contents Page 2
_______________________________________________________________
-- Computers do Simple Tasks ...................... 37
-- Complex Tasks are made of Simple Tasks ......... 38
-- Learning Good Programming Habits ............... 38
-- Use Long Names ................................. 39
-- Use Comments Liberally ......................... 40
-- Indent Your code ............................... 41
-- For Duplicate Tasks, Use Procedures ............ 42
-- Don't Program Yourself into a Corner ........... 42
A word to Writers and Reviewers ................... 43
Using MarxHelp .................................... 44
Printing the Example Files ........................ 44
Security Issues ................................... 44
MarxMenu Commands ................................. 45
-- | .............................................. 46
-- ( .............................................. 46
-- ) .............................................. 46
-- * .............................................. 46
-- + .............................................. 47
-- - .............................................. 47
-- / .............................................. 47
-- < .............................................. 47
-- <= ............................................. 47
-- <> ............................................. 47
-- = .............................................. 47
-- > .............................................. 47
-- >= ............................................. 47
-- %MenuFileName .................................. 48
-- Abs ............................................ 48
-- Alias .......................................... 48
-- And ............................................ 48
-- ApplicationMemory .............................. 49
-- Apr ............................................ 49
-- ArcTan ......................................... 49
-- Aug ............................................ 49
-- BadDate ........................................ 49
-- Bat ............................................ 49
-- BatFileName .................................... 50
-- BigShadow ...................................... 50
-- Black .......................................... 50
-- Blanked ........................................ 50
-- BlankMessage ................................... 50
-- BlankTime ...................................... 50
-- Blink .......................................... 51
-- BlockBox ....................................... 51
-- Blue ........................................... 51
-- BoxBorderColor ................................. 51
-- BoxHeader ...................................... 52
-- BoxHeaderColor ................................. 52
-- BoxHeaderLeft .................................. 52
-- BoxHeaderRight ................................. 52
-- BoxFooter ...................................... 53
-- BoxFooterLeft .................................. 53
Computer Tyme MarxMenu * Table of Contents Page 3
_______________________________________________________________
-- BoxFooterRight ................................. 53
-- BoxInsideColor ................................. 53
-- Brown .......................................... 53
-- BW40 ........................................... 54
-- BW80 ........................................... 54
-- CapsColor ...................................... 54
-- CapsLock ....................................... 54
-- Chain .......................................... 54
-- Char ........................................... 55
-- ChDir .......................................... 55
-- CleanFileName .................................. 55
-- ClearLine ...................................... 55
-- ClearScreen .................................... 55
-- ClearScreenFirst ............................... 56
-- ClearScreenOnExit .............................. 56
-- ClockColor ..................................... 56
-- ClockMode ...................................... 56
-- ClockPos ....................................... 57
-- ClosePrinter ................................... 57
-- ClusterSize .................................... 57
-- CmdLine ........................................ 57
-- CO40 ........................................... 58
-- CO80 ........................................... 58
-- ColorScreen .................................... 58
-- Comment ........................................ 58
-- Console ........................................ 58
-- ConsoleBorderColor ............................. 59
-- ConsoleHeaderColor ............................. 59
-- ConsoleInsideColor ............................. 59
-- ConsolePos ..................................... 59
-- Const .......................................... 59
-- Cos ............................................ 59
-- CurrentEnvironment ............................. 60
-- CurrentWindow .................................. 60
-- Cursor ......................................... 60
-- CustomBox ...................................... 60
-- Cyan ........................................... 60
-- DateString ..................................... 60
-- Day ............................................ 60
-- DayOf .......................................... 61
-- DayOfWeek ...................................... 61
-- DayOfWeekOf .................................... 61
-- Dec ............................................ 61
-- Delete ......................................... 62
-- DelFile ........................................ 62
-- Dispose ........................................ 63
-- DosVersion ..................................... 63
-- DosVersionString ............................... 63
-- DosWindow ...................................... 63
-- DoubleLineBox .................................. 64
-- DrawBox ........................................ 64
-- Drives ......................................... 64
Computer Tyme MarxMenu * Table of Contents Page 4
_______________________________________________________________
-- DvAppNumber .................................... 64
-- DvFrame ........................................ 64
-- DvFreeze ....................................... 65
-- DvHide ......................................... 65
-- DvKillTask ..................................... 65
-- DvLastHandle ................................... 65
-- DvLoaded ....................................... 65
-- DvMoveWindow ................................... 65
-- DvMyHandle ..................................... 65
-- DvPifExecute ................................... 66
-- DvResizeWindow ................................. 66
-- DvSetBottom .................................... 66
-- DvSetTop ....................................... 66
-- DvUnFreeze ..................................... 67
-- DvUnHide ....................................... 67
-- Else ........................................... 67
-- EndComment ..................................... 67
-- Endif .......................................... 67
-- EndLoop ........................................ 67
-- EndOfFile ...................................... 68
-- EndProc ........................................ 68
-- EndWhile ....................................... 68
-- EnvFree ........................................ 68
-- EnvSize ........................................ 68
-- EraseTopWindow ................................. 68
-- EraseWindow .................................... 69
-- Execute ........................................ 69
-- ExistDir ....................................... 70
-- ExistFile ...................................... 70
-- ExistOnPath .................................... 70
-- ExitCode ....................................... 70
-- ExitMenu ....................................... 70
-- Exp ............................................ 71
-- Explode ........................................ 71
-- ExplodeDelay ................................... 71
-- Extension ...................................... 71
-- False .......................................... 71
-- Feb ............................................ 71
-- FileAppend ..................................... 71
-- FileAssign ..................................... 72
-- FileAttr ....................................... 72
-- FileClose ...................................... 72
-- FileCreate ..................................... 72
-- FileDate ....................................... 72
-- FileFlush ...................................... 72
-- FileLog ........................................ 72
-- FileOpen ....................................... 73
-- FilePart ....................................... 73
-- FilePos ........................................ 73
-- FileReadln ..................................... 73
-- FileRename ..................................... 73
-- FileResult ..................................... 74
Computer Tyme MarxMenu * Table of Contents Page 5
_______________________________________________________________
-- FileSeek ....................................... 74
-- FileSize ....................................... 74
-- FileWrite ...................................... 74
-- FileWriteln .................................... 74
-- FixPath ........................................ 74
-- Floppies ....................................... 74
-- ForceExplosion ................................. 74
-- ForceExtension ................................. 75
-- Fraction ....................................... 75
-- FreeDiskSpace .................................. 75
-- FreeEms ........................................ 75
-- FreeMemory ..................................... 75
-- Fri ............................................ 75
-- GotoXY ......................................... 75
-- Green .......................................... 76
-- Grey ........................................... 76
-- Hour ........................................... 76
-- HourOf ......................................... 76
-- Hundredth ...................................... 76
-- IdelProgram .................................... 76
-- If ............................................. 77
-- InactiveBox .................................... 78
-- InactiveBoxColor ............................... 78
-- Include ........................................ 78
-- InputString .................................... 79
-- Insert ......................................... 79
-- InsertMode ..................................... 79
-- Int ............................................ 79
-- Integer ........................................ 79
-- InverseColor ................................... 80
-- Jan ............................................ 80
-- Jul ............................................ 80
-- Jun ............................................ 80
-- Jump ........................................... 80
-- KbdReady ....................................... 80
-- KeySave ........................................ 80
-- KeyFromMouse ................................... 80
-- KillMusic ...................................... 81
-- LastKey ........................................ 81
-- LBlue .......................................... 81
-- LCyan .......................................... 81
-- Left ........................................... 81
-- Length ......................................... 81
-- LGreen ......................................... 81
-- LGrey .......................................... 82
-- LMag ........................................... 82
-- LMagenta ....................................... 82
-- Ln ............................................. 82
-- Loc ............................................ 82
-- LockWord ....................................... 82
-- Logoff ......................................... 82
-- LogoffTime ..................................... 83
Computer Tyme MarxMenu * Table of Contents Page 6
_______________________________________________________________
-- Loop ........................................... 83
-- LoopIndex ...................................... 84
-- LoopLimit ...................................... 84
-- LRed ........................................... 84
-- MachineName .................................... 84
-- Mag ............................................ 84
-- Magenta ........................................ 84
-- Mar ............................................ 84
-- MarxVersion .................................... 85
-- MasterEnvironment .............................. 85
-- Max ............................................ 85
-- May ............................................ 85
-- Mem ............................................ 85
-- MemL ........................................... 85
-- MemSize ........................................ 85
-- MemW ........................................... 86
-- MenuKeyBuffer .................................. 86
-- Mid ............................................ 86
-- Min ............................................ 86
-- MinorDosVersion ................................ 86
-- Minute ......................................... 86
-- MinuteOf ....................................... 87
-- Mod ............................................ 87
-- ModifyPath ..................................... 87
-- Mon ............................................ 87
-- Mono ........................................... 87
-- Month .......................................... 87
-- MonthOf ........................................ 87
-- Mouse .......................................... 88
-- MouseHorizontal ................................ 88
-- MouseVertical .................................. 88
-- MoveWindow ..................................... 88
-- MxCmd .......................................... 89
-- NamePart ....................................... 89
-- NetworkVersion ................................. 89
-- NextWord ....................................... 89
-- No ............................................. 89
-- NoBoxBorder .................................... 90
-- NoExit ......................................... 90
-- Not ............................................ 90
-- NotesLeft ...................................... 90
-- NotesPlayed .................................... 90
-- Nov ............................................ 90
-- NovAccountExpDate .............................. 90
-- NovAttach ...................................... 91
-- NovChangePassword .............................. 91
-- NovCloseSemaphore .............................. 91
-- NovConnection .................................. 91
-- NovConsoleOperator ............................. 91
-- NovDefaultServer ............................... 91
-- NovDetach ...................................... 91
-- NovGroupMembers ................................ 91
Computer Tyme MarxMenu * Table of Contents Page 7
_______________________________________________________________
-- NovGroups ...................................... 92
-- NovInGroup ..................................... 92
-- NovLogin ....................................... 92
-- NovLoginName ................................... 92
-- NovLogout ...................................... 92
-- NovMapDrive .................................... 93
-- NovMyLoginName ................................. 93
-- NovMyPassword .................................. 93
-- NovOpenSemaphore ............................... 93
-- NovPasswordExpDate ............................. 93
-- NovPreferredServer ............................. 93
-- NovPrimaryServer ............................... 93
-- NovPrintQueues ................................. 94
-- NovReadGroups .................................. 94
-- NovReadSecurityEquals .......................... 94
-- NovResult ...................................... 94
-- NovSemaphoreTimeOut ............................ 94
-- NovSemaphoreUsers .............................. 94
-- NovSemaphoreValue .............................. 94
-- NovServers ..................................... 94
-- NovScanProperties .............................. 95
-- NovSetPreferredServer .......................... 95
-- NovSetPrimaryServer ............................ 95
-- NovSignalSemaphore ............................. 95
-- NovStationAddress .............................. 96
-- NovUserInGroup ................................. 96
-- NovUsers ....................................... 96
-- NovUsersLoggedIn ............................... 96
-- NovWaitOnSemaphore ............................. 96
-- NumberOfElements ............................... 96
-- Now ............................................ 97
-- NumLock ........................................ 97
-- Oct ............................................ 97
-- Off ............................................ 97
-- On ............................................. 97
-- OnKey .......................................... 98
-- OnScreenOnly ................................... 98
-- OpenPrinter .................................... 99
-- OptionSwitch ................................... 99
-- Or ............................................. 99
-- Ord ............................................ 99
-- OverKey ........................................ 99
-- Overlay ........................................ 100
-- ParallelPorts .................................. 100
-- ParamStr ....................................... 100
-- ParentEnvironment .............................. 100
-- Password ....................................... 101
-- Path ........................................... 101
-- PathPart ....................................... 101
-- PauseAfterExecute .............................. 101
-- Pi ............................................. 101
-- PickFile ....................................... 102
Computer Tyme MarxMenu * Table of Contents Page 8
_______________________________________________________________
-- PickMany ....................................... 102
-- PickOne ........................................ 102
-- PickPosition ................................... 103
-- Port ........................................... 103
-- Pos ............................................ 103
-- Power .......................................... 103
-- Pred ........................................... 103
-- Print .......................................... 103
-- PrinterName .................................... 103
-- Println ........................................ 104
-- PrintScreen .................................... 104
-- Procedure ...................................... 104
-- PullMenu ....................................... 104
-- Qualifier ...................................... 104
-- Random ......................................... 105
-- ReadEnv ........................................ 105
-- ReadEnvironment ................................ 105
-- ReadKey ........................................ 106
-- Readln ......................................... 106
-- ReadTextFile ................................... 106
-- Real ........................................... 107
-- Reboot ......................................... 107
-- Red ............................................ 107
-- ReleaseDate .................................... 107
-- Repeat ......................................... 107
-- ResizeWindow ................................... 108
-- Return ......................................... 108
-- ReturnCode ..................................... 108
-- Right .......................................... 108
-- RollWindow ..................................... 109
-- Run ............................................ 109
-- Sat ............................................ 110
-- SavePosition ................................... 110
-- ScreenHeight ................................... 110
-- ScreenWidth .................................... 110
-- ScrollLock ..................................... 110
-- ScrollMove ..................................... 111
-- Second ......................................... 111
-- SecondOf ....................................... 111
-- SecondInDay .................................... 111
-- SecondInHour ................................... 111
-- Security ....................................... 111
-- SelectPath ..................................... 111
-- Sep ............................................ 112
-- SerialPorts .................................... 112
-- SetArraySize ................................... 112
-- SetEnv ......................................... 112
-- SetTopWindow ................................... 113
-- SetWindowUnder ................................. 113
-- Shadow ......................................... 113
-- ShadowColor .................................... 113
-- ShadowPosition ................................. 113
Computer Tyme MarxMenu * Table of Contents Page 9
_______________________________________________________________
-- Shared ......................................... 114
-- ShellEnvironment ............................... 114
-- Shl ............................................ 114
-- Shr ............................................ 114
-- Sin ............................................ 114
-- SingleLineBox .................................. 114
-- SmallShadow .................................... 115
-- SortArray ...................................... 115
-- Sound .......................................... 115
-- Sqr ............................................ 115
-- StandardIO ..................................... 115
-- Str ............................................ 115
-- StuffAKey ...................................... 116
-- StuffKBD ....................................... 116
-- StuffKeyboardNow ............................... 116
-- Succ ........................................... 116
-- Suggest ........................................ 116
-- Sun ............................................ 116
-- TextBackground ................................. 116
-- TextColor ...................................... 117
-- TextMode ....................................... 117
-- TextPos ........................................ 117
-- TextSeek ....................................... 117
-- Then ........................................... 117
-- Thu ............................................ 117
-- TimeOf ......................................... 118
-- Timer .......................................... 118
-- TimeString ..................................... 118
-- Today .......................................... 118
-- Tone ........................................... 118
-- TotalDiskSpace ................................. 119
-- TotalEms ....................................... 119
-- Trim ........................................... 119
-- True ........................................... 119
-- Tue ............................................ 119
-- UniqueFileName ................................. 119
-- Until .......................................... 119
-- UpperCase ...................................... 119
-- UpperCaseOnly .................................. 120
-- UseArrows ...................................... 120
-- UseCommand ..................................... 120
-- UsedDiskSpace .................................. 121
-- UseNovPassword ................................. 121
-- Value .......................................... 121
-- Var ............................................ 121
-- VideoMode ...................................... 121
-- VideoPage ...................................... 121
-- ViewArray ...................................... 122
-- ViewTextFile ................................... 122
-- Volume ......................................... 122
-- Wait ........................................... 122
-- WaitOrKbdReady ................................. 122
Computer Tyme MarxMenu * Table of Contents Page 10
_______________________________________________________________
-- Wed ............................................ 122
-- WhereX ......................................... 122
-- WhereXAbs ...................................... 123
-- WhereY ......................................... 123
-- WhereYAbs ...................................... 123
-- While .......................................... 123
-- White .......................................... 123
-- WindowHeight ................................... 123
-- WindowWidth .................................... 123
-- Write .......................................... 123
-- WriteCenter .................................... 124
-- Writeln ........................................ 124
-- WriteTextFile .................................. 124
-- WriteVertical .................................. 124
-- Xor ............................................ 124
-- Year ........................................... 124
-- YearOf ......................................... 125
-- Yellow ......................................... 125
-- Yes ............................................ 125
String and Character Constants .................... 125
Conditional Statements ............................ 127
Environment Variables used by MarxMenu ............ 128
Command Categories ................................ 129
-- Misc Commands .................................. 129
-- Math Commands .................................. 129
-- Float Commands ................................. 130
-- String Commands ................................ 131
-- Boolean Commands ............................... 132
-- Memory Commands ................................ 132
-- Time Commands .................................. 133
-- Execution Commands ............................. 134
-- Display Commands ............................... 134
-- Color Commands ................................. 136
-- Video Commands ................................. 136
-- System Commands ................................ 137
-- File Commands .................................. 137
-- Printer Commands ............................... 138
-- Environment Commands ........................... 138
-- Array Commands ................................. 138
-- DesqView Commands .............................. 139
-- Conditional Commands ........................... 139
-- Keyboard Commands .............................. 139
-- MouseControl Commands .......................... 140
-- Music Commands ................................. 140
-- Novell Commands ................................ 140
-- Variable Commands .............................. 141
Computer Tyme MarxMenu Users Manual Page 1
_______________________________________________________________
COPYRIGHT COPYRIGHT COPYRIGHT
This manual is copyrighted material and all rights are reserved.
MarxMenu is a programming language which describes to the computer what
it is supposed to do. Even though some of the individual words in
MarxMenu are used in other programming languages, I claim a copyright on
the collection of words which make up the MarxMenu language. I therefore
consider it an infringement of my CopyRight to create a software product
which uses the MarxMenu language, or translates MarxMenu source code,
without purchasing a license to do so.
The combinations of definitions of commands in this manual constitute a
copyrighted work. Any publication which describes a computer language
for which the MarxMenu command set is a subset is a violation of the
copyright of this software and this written manual.
In other words, don't try to clone MarxMenu.
LICENSE AGREEMENT: LICENSE AGREEMENT: LICENSE AGREEMENT:
You are licensed to use this program on a single CPU or workstation. If
you are running on a network, you are required to license a separate
copy for each workstation or a file server license for each file server.
If you are running on a multiuser operating system such as Concurrent
DOS, you are required to license a copy for each workstation. Everyone
who uses this menu, must license a copy unless several people share the
same workstation.
This software is licensed and not sold. The license begins when Computer
Tyme recieves payment in full. You may not transfer, sell, sublease or
rent this software without the written consent of Computer Tyme. You are
not allowed to distribute MarxMenu in runtime form with software you
developed unless it is in combination with a paid for copy of MarxMenu,
or you have made special arrangements in writing with Computer Tyme to
do so.
Use of this product constitutes your acceptance of the terms and
conditions of this license and of my copyright and your agreement to
abide by these terms and conditions.
WARRANTY: WARRANTY: WARRANTY:
The warranty is limited to the diskettes to be machine readable for a
period of 30 days after purchase. Although we try hard to write perfect
software that has no bugs, we do not guarantee that. We also do not
guarantee that this product is fit for every purpose and we are not
liable for any damages that might occur from use of this product. This
agreement is governed by the laws of the State of Missouri.
Computer Tyme MarxMenu Users Manual Page 2
_______________________________________________________________
ACKNOWLEDGMENTS: ACKNOWLEDGMENTS: ACKNOWLEDGMENTS:
I would like to thank the following people for making this product
possible:
Joe Smith and Kevin Moore for helping write this manual. My wife Vicki
for being good to me and helping with revisions and editing.
The Computer Tyme staff for being the best employees in the world.
Borland International for writing Turbo Pascal and keeping it bug free
and well supported.
TurboPower Software for their very powerful extensions to Turbo Pascal
and their well written, well supported product.
Semware for TEdit and QEdit, their full screen editors.
All users who actually paid for this product so that we may continue to
eat.
Those of you who have pointed out bugs and made suggestions to improve
our product.
TRADEMARKS TRADEMARKS TRADEMARKS
MarxMenu, DOS ToolBox, Directory Master, and The Network Survival Kit
are trademarks of Computer Tyme.
QEdit and TEdit are trademarks of SemWare.
Lotus is a registered trademark of Lotus Development.
Wordstar is a registered trademark of MicroPro International.
Smart Software is a trademark of Informix.
MS-DOS is a trademark of Microsoft.
Concurrent DOS and DR-DOS are trademarks of Digital Research.
Turbo Pascal is a trademark of Borland International.
OPRO and TPRO are trademarks of TurboPower Software
Netware and Novell are trademarks of Novell
DesqView and QEMM are trademarks of Quarterdeck
IBM is a trademark of International Business Machines
Created using Turbo Pascal
Copyright 1983-90 by Borland International
THE MARXMENU NAME THE MARXMENU NAME THE MARXMENU NAME
When I first wrote this program my friends referred to it as Marc's
Menu. That's where the name MarxMenu came from. It has nothing to do
with either Carl or Groucho Marx.
Computer Tyme MarxMenu Users Manual Page 3
_______________________________________________________________
TECHNICAL SUPPORT TECHNICAL SUPPORT TECHNICAL SUPPORT
Technical support for MarxMenu is provided several ways. The first is by
calling our voice line 1-417-866-1222. We would ask that you not call
the 800 number as that is for orders and ordering information only.
We have several support staff and will try to answer your questions as
quickly and efficiently as possible. We at Computer Tyme look at
technical support as an opportunity to improve our product.
We also have a 24 hour BBS system. This allows users with modems to
leave messages about support issues. There are several user uploaded
menus here and it serves as a forum for MarxMenu users to share ideas
and techniques.
Our BBS number is 1-417-866-1665. Supports 2400 baud but is 1200 baud
compatible. Use 8 bits, no parity, 1 stop bit (8N1). You will also need
to set your terminal emulation mode to ANSI or VT100.
On our BBS are additional sample menu files that other MarxMenu users
like yourself have uploaded. We encourage you to share your work with
others so that yet more MarxMenu users can benefit.
We are also available on Compuserve ID 76505,1120.
We also offer a Fast Update Service which includes regular upgrades sent
to you automatically as we come out with them. This doesn't mean every
version of MarxMenu, but every so often after making several
improvements and the product is at a stable point. The Fast Update
Service includes special access to our support BBS.
This service is for the very fierce MarxMenu user who has to have the
"Latest and Greatest" all the time.
OVERVIEW OF THE MARXMENU SYSTEM OVERVIEW OF THE MARXMENU SYSTEM OVERVIEW OF THE MARXMENU SYSTEM
MarxMenu is not just another fill-in-the-blank menu system. It is a menu
programming language and job control language. It gives you total
freedom to do whatever you want, but total freedom has a price. You will
need to know and understand how to use a text editor. This isn't
difficult if you are familiar with using a word processor. And you will
need to have a basic understanding of DOS and how batch files work.
With a text editor you can create a menu file which is a text file with
an MNU extension. Or, you can copy and then modify the text file
SAMPLE2.MNU which displays the menus you see when MarxMenu is executed.
This text file contains a set of instructions for MarxMenu to follow.
MarxMenu will then read your menu file and run the instructions.
A menu file might look as follows:
Computer Tyme MarxMenu Users Manual Page 4
_______________________________________________________________
DrawBox 31 5 18 4
UseArrows
Writeln ' W - WordStar'
Write ' L - Lotus'
OnKey 'W'
CD\WORDSTAR
WS
OnKey 'L'
CD\LOTUS
LOTUS
The above example is a fully working MarxMenu program. Just because
MarxMenu has 500 commands doesn't mean you have to use them all. The
reason there are so many commands is that people keep calling me up and
asking if I can add such and such. Most of the time I do. That's why the
manual gets behind sometimes.
The instructions must be from the vocabulary of words that MarxMenu
understands. These words make up the command list included in this
manual. They must be used precisely as the instructions in this manual
tell you to use them. This process is called programming.
I know that for many of you the word programming is a scary word. Put
your fears at ease, MarxMenu is one of the easiest programming languages
there is. It is a little harder than writing batch files and a lot
easier than Basic. It requires a working knowledge of DOS and an
understanding of writing batch files as explained in your DOS manual.
The point that I want to make is, do not let the fear of learning and
the fear of programming prevent you from learning to write your own
menus. If you have never touched a computer before and are sitting down
with your first PC, read the manuals first. Become familiar with the
MS-DOS operating system. Learn how to write batch files, make
subdirectories, copy files, format floppies, etc. If you don't
understand something, ask a friend. All of us had to learn sometime, and
there is no such thing as a stupid question.
After you have mastered some of the basic concepts of the operating
system, then learn either TEDIT or MarxEdit. These are text editors
included with your MarxMenu program. Use it to write your own batch
files. Then attempt to write your own menus by modifying the sample
menus (files with a MNU extension) which come with MarxMenu. Print these
menus and study them, referring to this manual for help on command
definitions. You do not have to completely understand them to start
making changes. Programming is a trial and error process.
Computer Tyme MarxMenu Users Manual Page 5
_______________________________________________________________
A computer, like a musical instrument, is only as good as the player.
The more you learn about it the more you'll find it can do. In fact, a
computer can help raise your effective IQ as you learn the disciplines
of logic and reason. As a hammer is a tool of the hand, enhancing your
physical strength, a computer is a tool of the mind, enhancing your
mental strength. You will learn that as you develop a relationship with
your computer, that you will be able to process information in ways you
never dreamed.
MarxMenu is an excellent learning tool. By the time you become
proficient with the menu language, you will have learned the fundamental
concepts behind the MS-DOS operating system. You will find yourself
going back and forth between this manual and the DOS manual that came
with your computer. When you master the language, you will have enough
computing skills to be a real resource in your office environment. In
this day and age, knowing how to "make the damn things work" is a key in
moving up the corporate ladder.
If you have sufficient excess income to afford a personal computer, or
are in a job that provides you with a workstation, you are smart enough
to learn this program. All it requires is that you take the time. You
can do it. It is worth your time, and you will make up the time spent in
the results you'll get. Good luck and enjoy.
WHAT MARXMENU DOES WHAT MARXMENU DOES WHAT MARXMENU DOES
So with hundreds of menus on the market, what makes this one so great.
Well, let me tell you about it. MarxMenu is a menu language rather than
a fill in the blank kind of menu. MarxMenu gives you total control of
your computer system.
It is also a job control language allowing you to program processes too
difficult to do with batch files. MarxMenu can be used to do anything
from overnight batch job processing to generating control scripts for
mainframes.
Because of it's simple syntax, MarxMenu makes an excellent teaching
language putting more programming power in the hands of the student
programmer than any other programming language.
As a menu, MarxMenu can be as simple or as complex as you want. If you
want simple, nothing is easier. If you want POWER, nothing is more
powerful. If you want to get really weird, MarxMenu can do really wierd.
So if you want the menu to remind you to go vote, MarxMenu knows when
the first Teusday after the first Monday in November on even years is.
If you are into Astrology, and you want certain menu items to appear
only if Mars is in the right place in the sky, MarxMenu can calculate
the orbit of Mars for you.
Computer Tyme MarxMenu Users Manual Page 6
_______________________________________________________________
MarxMenu can be used to program games, write running software demos and
online tutorial programs. It can be used to write testing programs. It
can be used to write custom software installation programs. It can be
used to assist other applications to make other software more network
friendly.
MarxMenu has a compiler for high speed execution. Even very large menus
come up in under 4 seconds on a 4.77mhz IBM XT on an ArcNet lan. The
compiler also provides security in that you can keep your source files
separate so no one can alter the menu files.
FOR THE POWER USER: FOR THE POWER USER: FOR THE POWER USER:
I originally wrote MarxMenu on a dare. I said that in one afternoon I
could write a better menu system than one of the most popular menu
systems. I met the challenge and then found that there is a lot of
demand for power in a menu system. Friends started asking for this and
that feature and this program has gone far beyond what I ever intended.
The demand for more features has outpaced my ability to keep up with the
documentation standards that I expect from other software packages that
I buy. Please bear with me. If you find any errors in the manual, or
bugs in the program, please let me know and I'll try to correct any
problems.
I also appreciate your suggestions for improvements. Many of the
features included are a result of requests you have made. Many of you
are using this program in ways I never dreamed.
The main design philosophy behind this product is POWER and Flexibility.
I am also committed to keeping the source code as readable as possible.
I am loyal to the concept of using NO RAM. None of MarxMenu stays
resident. Because of this I can claim that if you are having some kind
of problem, it's not the fault of MarxMenu being resident, because
MarxMenu is not resident. Also, using NO RAM allows loading of TSR's
(memory resident programs) from the menu.
For computer consultants, MarxMenu is an excellent way to make money.
You can provide your clients with professional looking menu systems
customized (by you) to fit their needs. You can provide complex menu
structures not possible with any other menu system. And, because
MarxMenu uses NO RAM, you don't have to worry about conflicts between
MarxMenu and any other software product.
Although MarxMenu is copyrighted, the program is not copy protected.
There is nothing to prevent you from making hot copies and giving them
away to all your clients. I would like to point out that when you give
away something you should be selling you lose respect from your clients
and attract those who expect you to work for free. You will make more
money if you play by the rules. My best and most profitable clients use
no hot software whatsoever. Think about it.
Computer Tyme MarxMenu Users Manual Page 7
_______________________________________________________________
INSTALLATION INSTALLATION INSTALLATION
You may wish to copy the MarxMenu system into it's own subdirectory
called MARX to keep the files better organized. However, this is not
necessary. Copy all the disks that come with MarxMenu into a directory
on your hard disk or network.
If you do put the menu system in a subdirectory, it must be path
accessible. That is, you must have a path statement in your autoexec.bat
file that includes the directory where the menu system resides. A
typical path statement might look like this:
PATH=C:\;C:\DOS;C:\MARX;
Copy all your Computer Tyme disks to the hard disk or network and type
MARXINST. When it gets done, you can run some of the sample menus by
typing MARX <menu>.
-------------------- V E R Y * I M P O R T A N T ----------------------
MarxMenu requires up to 100 bytes of free environment space. It won't
run properly without it. The way you get more environment space is to
add a SHELL command to your CONFIG.SYS file.
SHELL=COMMAND.COM /P /E:nnn
Where NNN is the number of bytes for the environment to reserve. Note
that if you are running DOS that is earlier than 3.3 then NNN is the
number of 16 byte blocks to allocate for the environment.
For DOS 3.3 or later:
SHELL=COMMAND.COM /P /E:400
For DOS earlier than 3.3:
SHELL=COMMAND.COM /P /E:25
If MarxMenu gives you an environment space error, this is where you go
to fix it.
INSTALLING THE NETWORK SURVIVAL KIT INSTALLING THE NETWORK SURVIVAL KIT INSTALLING THE NETWORK SURVIVAL KIT
The Network Survival Kit is installed by copying the distribution disk
into a directory on your server and typing INSTALL. It will unpack into
about 2.5 megs of programs and documentation. Be sure to print out the
DOC files on any programs you are interested in and print out the
MARXREAD.ME and MARXREAD.ME2 files.
Make sure you do not run the install from the floppy disk.
Computer Tyme MarxMenu Users Manual Page 8
_______________________________________________________________
THE MARX.BAT FILE THE MARX.BAT FILE THE MARX.BAT FILE
In order for MarxMenu to work, a MARX.BAT file must be created. This is
done by typing MARXINST. The first thing that MARXINST does is unpack
the compressed menu files and documentation files. Then it will bring up
the installation menu.
The MARX.BAT file looks like this:
@ECHO OFF
C:\MARX\MARXMENU.EXE %1
%MXCMD%
%0 %1
The first line of MARX.BAT turns the echo off. This may be changed to
ECHO ON for debugging purposes. PAUSE commands can be inserted to debug
a menu. This allows you to see what's going on.
The second line of MARX.BAT runs MARXMENU.EXE. The second parameter %1
is the name of the menu file to run. A third parameter can be added to
tell MarxMenu to use a specific directory for creating temporary batch
files. Otherwise MarxMenu will create temporary batch files in the same
directory as MARXMENU.EXE.
When the user selects a program to run, MarxMenu writes a temporary
batch file which contains within it the commands to run the program.
Then MarxMenu writes a command to the environment variable MXCMD to
execute the temporary batch file and exits.
What it writes depends on the version of DOS you are running. If you are
running DOS 3.3 or later, MXCMD is set to CALL <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.
MARX.BAT
-------- +--MarxMenu Creates--+
+----> @ECHO OFF | |
| MARXMENU.EXE %1 |
| %MXCMD% >--+ +-> $MX00000.BAT
| +--> %0 %1 --+ | ------------
| | | +----------------------> CD\WORDSTAR
+-|------<-----+ WS --+
| |
+-------------------------------------------<-+
Computer Tyme MarxMenu Users Manual Page 9
_______________________________________________________________
Note: MarxMenu sets MXCMD = CALL $MX00000.BAT
You can also tell MarxMenu where to put it's temporary batch files by
setting an environment variable TEMP to point to a temporary file
directory.
Example: SET TEMP=F:\TMPFILES
This is compatible with the way DOS 5 and Windows uses temp files.
When you exit the menu system. MarxMenu sets MXCMD to MXSTOP. This jumps
to a batch file called MXSTOP which gets you out of MARX.BAT. MXSTOP.BAT
can be modified to control what happens when MarxMenu is exited.
The default MXSTOP.BAT file is as follows.
SET MXCMD=
SET KSV=
REM You can control menu exiting with this file!
Note that by adding your own commands to MXSTOP that you can control
what happens when you exit. You could loop right back to the menu if you
want. Or, you could force a controlled network logoff.
I strongly recommend upgrading to DOS 3.3 or later whenever it is
possible to do so.
The name of the temporary batch file is as follows:
$MX00000.BAT
||||
Shells--------+|++--------Network Station (Hex)
Task Number
The 5 zeros are used for single user versions of MarxMenu. On a network
they change as follows:
The last 2 zeros is the station number on the network. This is either
read directly from the shell, if you are using Novell, or from the
environment variable STATION if you are on another network. The third
zero is the task number if you are running DesqView, or from an
environment variable TASK if you are running some other multitasker.
The second zero is replaced by one less than the number of COMMAND.COM
shells you are running. This way if you run COMMAND.COM under MarxMenu
and then run MarxMenu again under that, it doesn't get lost when you
exit.
The first zero is for future expansion. In case something comes along
that I haven't thought of.
Computer Tyme MarxMenu Users Manual Page 10
_______________________________________________________________
If you want to do custom tricks, MarxMenu has an internal variable
called MxCmd. Setting this to your own command overrides the way
MarxMenu would normally use it.
But now you ask, does MarxMenu leave a trail of batch files that will
clutter up my drive or network? Not at all. MarxMenu keeps using the
same names over and over again. If a user crashed his system, it might
leave a batch file but it would be overwritten the next time he used the
menu. Not only that, all batch files can be kept in the same directory
so cleaning up is as simple as typing DEL $MX*.BAT!
By writing to the MxCmd variable you can run an EXE or COM file directly
without having to create another batch file.
Example:
OnKey 'M'
|MxCmd = 'RAMMAP'
This runs RamMap directly from the MARX.BAT file.
Another trick is to run another batch file without the CALL statement.
This creates a one way jump to another batch file.
Another debugging feature. You can change the first line of the MARX.BAT
file as follows:
@ECHO %MXECHO%
This allows you to turn the echo on for debugging purposes by typing:
SET MXECHO=ON
This way you don't have to change the MARX.BAT file to debug. If you use
this, make sure that MXECHO is set to either ON or OFF.
DROPTO.BAT DROPTO.BAT DROPTO.BAT
If you are going to run a shell like COMMAND.COM under MarxMenu it is
sometimes better to use DROPTO.BAT which is created during the install
process. DropTo allows you to jump from the temporary batch file that
MarxMenu creates to DropTo, which deletes the temporary batch file and
executes the rest of the command line.
Usage: DROPTO %0 COMMAND.COM
If you are using DropTo inside a MarxMenu, the %0 is automatically added
for you.
Example:
OnKey 'C'
DropTo COMMAND.COM
Computer Tyme MarxMenu Users Manual Page 11
_______________________________________________________________
DROPTO.BAT
----------
DEL %1
SET KSV=
SET MXCMD=
%2 %3 %4 %5 %6 %7 %8 %9
Here's how it works:
$MX00000.BAT <------deletes this file--------+
------------ |
DROPTO %0 COMMAND.COM ------------> DEL %1 >-+
SET KSV=
SET MXCMD=
%2 executes COMMAND.COM--> %2 %3 %4 %5 %6 %7 %8 %9
The advantages are that the temporary batch file is eliminated so if the
user never returns to the menu, it leaves no temporary file to clutter
up the drive. Also, DROPTO.BAT becomes the pending batch file that is
running rather than the temporary file.
SUPPORT FOR EARLY DOS VERSIONS SUPPORT FOR EARLY DOS VERSIONS SUPPORT FOR EARLY DOS VERSIONS
There are two main differences between DOS versions earlier than 3.3 and
versions 3.3 and above. One is the CALL command for batch files and the
other is the way you specify environment space when using COMMAND.COM.
I have enhanced the support for early DOS versions (3.0, 3.1, 3.2).
MarxMenu executes COMMAND /C /E:nn (batchfile) >NUL to have one batch
file call another. The first two lines of the batch files created are as
follows:
ECHO OFF
CTTY CON
....
This eliminates the ECHO OFF from being seen.
Also whenever possible, when MarxMenu loads up a copy of COMMAND.COM, it
adds the /E:nnn command to set the environment space to the same as that
of the Master Environment. In versions earlier then 3.3 it is translated
to paragraphs instead of bytes.
One thing to note in early versions of DOS. If you run a batch file
under COMMAND /C and your batch file has SET commands to set environment
variables, the changes you make will disappear as soon as you get back
to MARX.BAT. Why? Because you loaded another COMMAND.COM and the SET
commands set its environment. When this COMMAND.COM ends, it takes its
environment with it. Under DOS 3.3 or later, which uses CALL instead of
another shell, the SET commands live. (Yet another reason to upgrade).
Computer Tyme MarxMenu Users Manual Page 12
_______________________________________________________________
ABOUT ENVIRONMENT VARIABLES ABOUT ENVIRONMENT VARIABLES ABOUT ENVIRONMENT VARIABLES
I've been talking a lot about environment variables. Some of you out
there in novice land don't know what an environment variable is. Many
others don't know the intricate secrets handed down from the Great DOS
Masters who know all the intricate undocumented features of DOS.
Your DOS shell, COMMAND.COM owns an area of memory called the Master
Environment. It contains strings in the form Name=Value. Included among
those strings are your COMSPEC and your PATH. Your COMSPEC tells DOS and
other programs where to find COMMAND.COM. Your PATH tells DOS and other
programs what directories to search when loading programs. Another
common environment variable is your PROMPT. This controls what your DOS
prompt will look like.
Environment variables are commonly set using the SET command. This is
done by typing SET NAME=VALUE.
Example:
SET COLOR=BLUE
So what does this actually do? Actually nothing, unless you have a
program that reads the environment variables that is looking for one
called COLOR. This way, environment variables can be used to leave
messages to other programs and control how they behave.
Besides leaving messages, environment variables can be accessed by batch
files. If you use %NAME% in a batch file, DOS will substitute the VALUE
of the variable for the %NAME% expression. And this feature is important
to MarxMenu's operation.
MarxMenu uses an environment variable called MXCMD. In the MARX.BAT file
the third line is %MXCMD%. So MarxMenu controls MARX.BAT by writing
values to MXCMD.
In order to do this, there must be enough room in the environment for
the command to fit. That is why you need to make sure that you have a
SHELL command in your CONFIG.SYS to set space for MarxMenu to use.
Now so far I've only talked about the Master Environment. That's the one
that the first COMMAND.COM owns. Each program that is loaded, including
TSRs, gets a copy of the Master Environment in its own environment. This
is called the CURRENT Environment.
One interesting feature of the Current Environment is that it is smaller
than the Master Environment. DOS only creates enough space to hold a
copy of the space used in the Master Environment and a little more to
store the name of the program that is running.
Computer Tyme MarxMenu Users Manual Page 13
_______________________________________________________________
If one program executes another program, the environment of the parent
program is called the Parent Environment. You will probable never need
to deal with the Parent Environment but MarxMenu can access it in case
you do.
Another environment is the SHELL ENVIRONMENT. This is the one that THEY
never talk about. The one you'll never read about in any books. The one
you'll never learn about in any DOS classes. This is the one your
parents never mentioned.
The Shell Environment is normally the same as the Master Environment.
But, if you are running more that one level of COMMAND.COM, the Shell
Environment is the environment of the last COMMAND.COM in memory. This
environment is the most important environment to MarxMenu.
So why load up two or more COMMAND.COMs? There are several cases where
this could occur. One case is when you want to run COMMAND.COM as a
program under MarxMenu. This way you can type EXIT to get back to the
menu. If you do this and then run MarxMenu again, you have two levels of
COMMAND.COM. In this case, the first COMMAND.COM is the Master
Environment and the second COMMAND.COM is the Shell Environment.
Another place where more than one COMMAND.COM is used is if you are
running Microsoft Windows 3 or DesqView. Both of these programs are able
to run a DOS shell. When you do, this is a second level of COMMAND.COM.
What is important is that SET commands and %NAME% commands in batch
files deal only with the Shell Environment and not the Master
Environment.
DEALING WITH MULTIPLE DOS SHELLS DEALING WITH MULTIPLE DOS SHELLS DEALING WITH MULTIPLE DOS SHELLS
If you are running more than one level of COMMAND.COM (Shelling from
Windows, DesqView, Word Perfect Office) and having environment space
problems here's a trick. Before you load up your fancy shells, put this
in a batch file like your AUTOEXEC.BAT.
SET MXCMD=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This variable will be trashed by MarxMenu thus freeing up the
environment space it occupied. This will not only allow MarxMenu to run
but may solve problems with other programs you are running that need
environment space as well.
Computer Tyme MarxMenu Users Manual Page 14
_______________________________________________________________
MARXMENU AND TSR CONTROL MARXMENU AND TSR CONTROL MARXMENU AND TSR CONTROL
MarxMenu along with the TSR utilities that come with MarxMenu, can load
and unload TSRs under menu control. This is handy when you want to run a
big application and need to free up some memory to do it. Since MarxMenu
is a 0k menu system, unloading TSRs is possible but it has it's tricks.
The problem you run into is that when one batch file calls another batch
file, the way MarxMenu normally runs, DOS creates a small batch file
control block in memory. This control block stays in memory after the
TSR is released creating a region of trapped memory. Although this
memory is freed, it isn't usable.
The way around it is to jump to the batch file that releases memory
instead of calling it. This is done by setting MXCMD to the name of the
batch file you want to run. The only problem is that when you jump to
the other batch file, it won't automatically return to MARX.BAT. You
must therefore end your batch file with a command bringing you back to
MARX.BAT.
MEMHOG.BAT
-----------
Rem UnLoad SideKick
RELEASE SK
CD\MEMHOG
MEMHOG
MARK SK
SK
MARX MAIN
In your MAIN menu:
OnKey 'H'
|MxCmd = MEMHOG
See the documentation file on the TSR utilities disk for more
information on how to use MARK and RELEASE.
Computer Tyme MarxMenu Users Manual Page 15
_______________________________________________________________
NETWORK USERS: NETWORK USERS: NETWORK USERS:
The main thing you have to worry about on a network is to make sure that
when MarxMenu creates a temporary batch file, that it is a different one
for each user on the network.
This is handled several ways. If you are on a Novell network, MarxMenu
uses your station number as part of the name for the temporary batch
file. If you are not using Novell, then you will need to set an
environment variable STATION for each workstation on your net. Each one
has to be a different number.
Example:
SET STATION=5
You must ensure that the user has enough access rights to create
temporary batch files in the directory selected for temporary batch
files. One solution is to create a batch file directory and give all the
users full access rights to it.
MarxMenu has been run on about every DOS based network that exists. If
the network runs at all it will generally run MarxMenu. Among the
networks that come to mind are Novell, Lantastic, Banyan, 3COM, Lan
Manager, IBM, DECNET, ConCurrent DOS, and SCO VPIX. MarxMenu is running
on networks as small as two users to as large as 20,000 users. In fact,
the bigger your network, the more you need MarxMenu.
NOVELL USERS: NOVELL USERS: NOVELL USERS:
Novell is the most popular network on the market. We have added many
enhancements for Novell networks to support things like logging in and
logging out, drive mapping, group support, software metering, and status
information.
Although Novell is a high quality solid product it has its own
"Personality" and many undocumented features otherwise known as bugs.
Most people who are having trouble with MarxMenu under Novell are really
having trouble with Novell. Quite frankly, we do more Novell support
than we do MarxMenu support.
Having said that, I own two Novell networks. One at the lab and one at
home and I love my networks. But, I have spent hundreds of hours
learning all the tricks. And to save you a phone call, and me a lot of
time, I've decided to share these tricks here in my manual.
Some of these tricks are from the Great Network Gurus themselves who are
so advanced that they no longer exist in physical form. These people
live in another dimension of total mental existence and can only be
reached my modem. Some of them hang out on Compuserve.
Computer Tyme MarxMenu Users Manual Page 16
_______________________________________________________________
I therefore strongly recommend that if you are a serious Novell user
that you join Compuserve and hang out in the Novell section. And just
because not everyone on Compuserve is a real person doesn't mean that
you should feel uncomfortable asking them any question about your
network that you need to ask.
THE NOVELL MENU TRANSLATOR THE NOVELL MENU TRANSLATOR THE NOVELL MENU TRANSLATOR
One nice bonus with Novell networks is that MarxMenu can translate your
Novell menus to MarxMenu. This saves you the time of having to recode
your system. What you do is type:
MARXMENU NOVTRANS <menu>
This translates your Novell MNU file to a MarxMenu MRX file. Your MNU
file is unchanged. MarxMenu creates a TMP file containing the source
code for the MRX file. Once you are satisfied with the MarxMenu file,
you just delete the MNU file and rename the TMP file to MNU and forget
that you ever had a Novell menu.
Once the menu is translated you run it by typing MARX <menu> instead of
MENU <menu>. MarxMenu can run Novell's menu better than Novell runs
their own.
LOGGING OUT UNDER MENU CONTROL LOGGING OUT UNDER MENU CONTROL LOGGING OUT UNDER MENU CONTROL
Logging out under menu control is one of the trickiest things to do. The
problem is that as soon as LOGOUT executes, you no longer have access to
the network. This means that if you are in a batch file, you are going
to get a "Missing Batch File" error, unless the batch file is in the
\LOGIN directory.
Another problem with logging out is making sure that your COMSPEC is
pointing to a COMMAND.COM that is either on the local drive or in the
\LOGIN directory. Otherwise you will get a "Cannot load COMMAND.COM"
error.
Another problem that you need to deal with is that your PATH command
needs to be changed so that it doesn't refer to mapped drives that are
no longer accessable.
What you need to do is create a batch file in the \LOGIN directory
called OFF.BAT.
Example: F:\LOGIN\OFF.BAT
CD\LOGIN
SET COMSPEC=C:\COMMAND.COM
LOGOUT
C:
PATH=C:\DOS
Computer Tyme MarxMenu Users Manual Page 17
_______________________________________________________________
Setting up an OFF.BAT file is compatible with MarxMenu's automatic
network logoff feature. This is where you can set the amount of time to
wait at a menu before it automatically logs you off the network.
Another way to logout under MarxMenu is to stuff the LOGOUT command into
the keyboard buffer and exit MarxMenu.
Example:
OnKey ESC
|StuffKBD 'LOGOUT' + CR
|ExitMenu
This is the cleanest way when possible.
Another logout trick is to use the LOGOFF utility from the Computer Tyme
Network Survival Kit. This program automatically fixes your PATH and
COMSPEC after the logoff occurs.
LOGGING IN WITH MARXMENU LOGGING IN WITH MARXMENU LOGGING IN WITH MARXMENU
If there is any one thing that's trickier than logging out of a Novell
network, is logging in. I have spent MANY hours struggling with Novell
trying to get it right and I have finally figured it out. Much of this
comes from the Novell gurus who hang out on Compuserve and know
everything there is to know about Novell.
The first thing you need to do is make up your mind that you are going
to do it right. The technique here might seem somewhat cumbersome, but
it works well and will keep you out of trouble.
MarxMenu has the ability to log you into a network, map your drives, and
set your environment strings without having to touch a Novell utility to
do so. MarxMenu can completely eliminate the need for Novell login
scripts. The advantage to using MarxMenu in the login is that you have
the power of 500 commands to work with instead of just 25 or so.
Computer Tyme MarxMenu Users Manual Page 18
_______________________________________________________________
THE CONFIG.SYS FILE THE CONFIG.SYS FILE THE CONFIG.SYS FILE
The place to start is the place where DOS start when DOS boots. You MUST
create a CONFIG.SYS file on your boot disk. The CONFIG.SYS tells DOS how
many files and buffers to create, what device drivers to load, and the
size of the Master Environment.
Unless you are using special drivers, BUFFERS=40 and FILES=40 is a good
place to start. STACKS 0,0 will gain you an extra 3k of ram. But the
most important command is the shell statement. A CONFIG.SYS file might
look like this:
SHELL=COMMAND.COM /P /E:400
BUFFERS=40
FILES=40
DEVICE=ANSI.SYS
This sets up enough environment space to allow MarxMenu and DOS SET
commands to work properly. You will also want to load any other device
drivers like QEMM386.SYS or 386MAX.SYS to take advantage of other
features of your computer. If you don't know about CONFIG.SYS files,
read the DOS manual.
Note: If you don't have a local hard disk and are booting from a floppy
drive, set BUFFERS=4. If you are booting from a diskless workstation,
set BUFFERS=1. BUFFERS are used for local drives only and have no effect
on network drives. You save 1k of memory for every 2 buffers you don't
use.
THE AUTOEXEC.BAT FILE THE AUTOEXEC.BAT FILE THE AUTOEXEC.BAT FILE
After the CONFIG.SYS is loaded the AUTOEXEC.BAT runs next. Here you load
up your TSRs and network drivers. There are some important tricks to be
used here as well.
First of all, never load your network shell from your AUTOEXEC.BAT file.
Always have it branch to another batch file called LOADNET to load the
network shell. Use the autoexec.bat only to load special TSRs and the
IPX. An autoexec.bat might look like this:
@Echo Off
Cls
IPX
SET NET=NET4.COM
SET COMSPEC=X:COMMAND.COM
LOADNET
Computer Tyme MarxMenu Users Manual Page 19
_______________________________________________________________
The two SET commands are very important. The first sets a variable
called NET to NET4.COM. This will be used later in LOADNET.BAT. By using
this variable, you can have users running many different versions of DOS
and still use the same LOADNET.BAT file. You could also use a command
SET NET=LOADHI EMSNET4.EXE to take advantage of advanced memory manager
software.
Another trick is to run BESTNET from the Network Survival Kit. BestNet
will automatically pick the best network shell and set the NET
environment variable for you. You would use the command BESTNET instead
of SET NET=NET4.COM in the AUTOEXEC.BAT file.
The SET COMSPEC=X:COMMAND.COM is important if you are booting off of
either a floppy drive or a diskless workstation. This assumes that X:
will eventually be mapped to a directory on the network that has a valid
COMMAND.COM in it.
It is important to set the comspec BEFORE loading your NET shell. This
prevents a problem where Netware wants to go back to the boot disk even
after you change the comspec. I don't know why this works but it does.
Trust Me. If you are going to use COMMAND.COM on drive C:, ignore this
paragraph.
Now we go to the LOADNET.BAT file.
@Echo Off
%NET%
SET NET=
F:
STARTUP
The big concept behind LOADNET is that this file is NEVER CHANGED. You
put in on all your workstations and in the LOGIN directory and it is
EXACTLY THE SAME for every computer in your network. Any changes to
individual computers are made in the AUTOEXEC.BAT file.
So why is this important. Because if you are running diskless
workstations what happens is that while you are booting you have a
mythical drive A:. As soon as your NET shell loads this drive
dissappears out from under you and you end up in F:\LOGIN. If you are
running LOADNET.BAT when this happens you drop out of A:LOADNET.BAT and
land in the middle of F:\LOADNET.BAT. And if your LOADNET.BAT is exactly
the same file as the LOADNET.BAT in the \LOGIN directory, you take off
running like the transition never occured.
Even if you are not running on diskless workstations now, you might go
to it someday. It also creates good programming habits and helps you
boot up cleanly.
Computer Tyme MarxMenu Users Manual Page 20
_______________________________________________________________
Lets see what LOADNET does. The first line is @ECHO OFF, that's easy.
The second line %NET% executes the network shell that you specified with
the SET NET=NET4 command. This actually loads the network shell. The
third line clears the NET variable freeing up space for other
environment variables. F: switches you to drive F if you aren't there
already. And finally STARTUP is the name of yet another batch file you
jump to.
The STARTUP.BAT file controls what happens AFTER LOADNET runs. This file
can be freely changed so that LOADNET.BAT can stay the same. This lets
you modify what happens AFTER the network shell is loaded.
If you are using Novell's login program STARTUP.BAT might look like
this:
@Echo Off
LOGIN
THE SHELL.CFG FILE THE SHELL.CFG FILE THE SHELL.CFG FILE
The SHELL.CFG file is used by Netware to configure the Netware shell.
You should read the manuals on this to see if you need any of the many
option available. I suggest you at least have the following commands in
your SHELL.CFG file.
cache buffers=4
show dots=on
The master network gurus tell me that cache buffers are just a waste of
memory and do not provide any better performance. Every 2 cache buffers
not used saves you 1k of memory. Show dots makes your network compatible
with more software utilities and should be set on unless you have some
other reason not to.
USING A MENU FILE TO LOG IN USING A MENU FILE TO LOG IN USING A MENU FILE TO LOG IN
If you are going to use MarxMenu to log in instead of Novell's
utilities, you will want to print out the sample file LOGIN.MNU on your
MarxMenu disk and study it. Your STARTUP.BAT file might look like this:
@Echo Off
SET BOOTUP=LOGIN
MarxMenu Login
%BOOTUP%
If MarxMenu works correctly, it will change the environment variable
%BOOTUP% to point to a file that it creates. If for some reason it fails
(you make a mistake in the login), it will execute Novell's login and
let you get in and fix it.
Computer Tyme MarxMenu Users Manual Page 21
_______________________________________________________________
One word of caution. After modifing this menu, always run MARXCOMP LOGIN
to compile it. Otherwise, if you boot up into it you won't have enough
access rights to recompile automatically.
NOVELL SEMAPHORES NOVELL SEMAPHORES NOVELL SEMAPHORES
For a detailed explanation of Novell Semaphores, read the Novell
manuals. What I've done is to export these functions to MarxMenu. I have
implemented them slightly different than Novell did and have hidden all
the nasties from you such as semaphore handles. All semaphores are
accessed by name only.
Here's a brief overview of semaphores. Semaphores are names of shared
resources that the server keeps track of. Semaphores have three
properties. They have a name, value and number of users. The name can be
anything up to 48 characters long. The value is a number from -128 to
127. If the value is less than 0, the resource the semaphore represents
is considered used up.
By opening a semaphore, you increase the number of users by one. By
closing it, you decrease the number by one. If a single user opens a
semaphore many times, it is only counted as one. When you log out, your
semaphores are closed. This is also true if you turn your computer off,
but it takes 15 minutes for the server to give up on you.
The first user to open a semaphore creates it. The last user to close a
semaphore deletes it. When a semaphore is created, a value can be
assigned. If a semaphore is opened that already exists, the initial
value is ignored.
When NovWaitOnSemaphore is called by any user, the value is decremented.
If the value is not below zero, NovWaitOnSemaphore returns true.
Otherwise it returns false and the value is unchanged. The amount of
time that NovWaitOnSemaphore will wait is controlled by the variable
NovSemaphoreTimeOut.
When NovSignalSemaphore is called by any user, the value is incremented.
This allows other users to call NovWaitOnSemaphore and get a True value.
NovSemaphoreUsers and NovSemaphoreValue are used to read the status of a
semaphore without changing it's value.
One of the major differences between how MarxMenu uses semaphores and
the way Novell uses them is that normally a semaphore dies when the
application finishes. This would normally prevent a 0k menu system from
being able to use them. MarxMenu uses an interesting trick where it
fools Netware into thinking that the semaphore belongs to another task.
This allows the semaphore to live.
Computer Tyme MarxMenu Users Manual Page 22
_______________________________________________________________
Semaphores can be tracked using FCONSOLE. Some versions of Netware have
a bug in FCONSOLE that reports an open count that is 256 times the real
count. Just divide by 256 for the right number.
Semaphores can be used for software metering. This allows MarxMenu to be
aware of what other users on the network are doing. Here are the basic
tools, what you do with them is only limited by your imagination.
RUNNING A MARXMENU RUNNING A MARXMENU RUNNING A MARXMENU
MarxMenus are run by typing MARX and the name of a menu file such as
SAMPLE.MNU. As discussed earlier, the menu file is a text file created
with a text editor such as TEDIT.
Usage: MARX <Menu Filename>
Example:
MARX SAMPLE
In the above example, if SAMPLE.MRX doesn't exist, or is older than
SAMPLE.MNU then MarxMenu will automatically load the complier,
MARXCOMP.EXE to create a new SAMPLE.MRX file.
In the never ending quest for more speed, MarxMenu is somewhat faster to
load if you include the MRX extension.
Example:
MARX SAMPLE2.MRX
By specifying the MRX extension, no test is made to compare the file
date with the source file. Thus if you have changed the MNU file, you
will still be running the old version. In order to force a recompile,
type MARXCOMP SAMPLE.
CUSTOMIZING MARXMENU SAMPLE FILES CUSTOMIZING MARXMENU SAMPLE FILES CUSTOMIZING MARXMENU SAMPLE FILES
Included in the MarxMenu package are menu files which you can easily
modify to execute your programs and perform other functions you desire.
Using TEdit, the text editor included in this package, you can modify
and customize these menu files.
Also included to demonstrate the power and versatility of the menu
system is a menu labeled NIM.MNU. This is a game written in the menu
system that demonstrates some of the logic functions and programmability
of the system. Use it for reference.
Computer Tyme MarxMenu Users Manual Page 23
_______________________________________________________________
Here's a simple example of a menu file:
===================================
ClearScreen
DrawBox 30 9 25 8
Writeln ' 1) Lotus'
Writeln ' 2) dBase'
Writeln ' 3) Wordstar'
Writeln
Write 'Select: '
OnKey '1'
cd\lotus
123
OnKey '2'
cd\db3
db3
OnKey '3'
cd\wordstar
ws
====================================
Notice in looking at the "OnKey" statements that all I have to do is
tell MarxMenu how to get to the program. Although, MarxMenu takes care
of reloading itself after exiting a selected program, its does not
return to its own subdirectory as many other menu programs do.
That means that if you execute a program in another subdirectory, when
you come back to the menu, you remain in that subdirectory. If you
normally run your applications with a batch file, consider having
MarxMenu change directories and execute the program for you. This will
eliminate debugging problems caused by the actions of your batch files.
MENU ANALYSIS MENU ANALYSIS MENU ANALYSIS
Let's start a simple analysis of the example menu file shown
above. The ClearScreen statement simply clears the screen to
give us a fresh workspace for the menu. DrawBox is the command to
draw a box on the screen to contain some menu text. The Writeln
command writes a line of text to the screen within the box, then
positions the cursor on the next line. The menu text shows the
available selection keys that the user has access to.
Computer Tyme MarxMenu Users Manual Page 24
_______________________________________________________________
ONKEY STATEMENTS ONKEY STATEMENTS ONKEY STATEMENTS
The OnKey statements control what is actually executed. OnKey
statements also allow you to execute hidden commands when you do
not want them to appear on the menu screen. One trick I use is to
have an OnKey statement define a key that runs TEDIT on my
personal menu file. I don't show this key on the menu to keep
others from poking around in the file. For additional security
a password can also be set up on this key.
Normally you enter a line of text as if you were creating a BAT
file to run your application. Like batch files, if one of your
commands is a batch file, all the statements after it will not
execute. To prevent this you can use the CALL command to call a
batch file in DOS 3.3 or later, or COMMAND /C in DOS 3.0, 3.1 and
3.2.
Normally, text displayed under an OnKey statement is the same
text as the batch file created by MarxMenu. There are some
exceptions. If a line starts with a "|" (vertical bar), the line
will be interpreted by MarxMenu instead of being written to a
batch file. This allows commands such as "PASSWORD" to be used.
String variables can be passed as part of a batch command if the
name of the string variable starts with a "%" symbol.
The spaces preceding the commands under the OnKey statement are
for clarity only. They are not necessary for MarxMenu to function
properly.
POPUP MENUS POPUP MENUS POPUP MENUS
If you want to create a popup menu within a menu you can do so by
using a "label". A label is a keyword preceded by a colon. To
call the popup menu, place the keyword on a line by itself
preceded by a carat (Shift 6). The label will precede the popup
menu definition.
For example if you have a popup menu to load Smart Software, you could
name the PopUpMenu Smart. To bring up the Smart PopUpMenu, define a key
in your main menu for Smart like this:
OnKey 'S'
^Smart
The Smart menu itself might look something like this:
Computer Tyme MarxMenu Users Manual Page 25
_______________________________________________________________
:Smart
BoxHeaderColor ForeColor BackColor
BoxBorderColor Yellow Green
BoxInsideColor LCyan Green
InverseColor Yellow Red
BoxHeader = ' Smart Menu '
DrawBox 45 16 20 6
UseArrows 2 2 16 3
ClearLine 205
Writeln
Writeln ' Data Base'
Writeln ' Spread Sheet'
Write ' Word Processor'
OnKey 'D'
SM D
OnKey 'S'
|BoxHeaderColor ForeColor BackColor
|BoxBorderColor Yellow Green
|BoxInsideColor White Green
|%1 = PickFile('C:\SMART\SPREAD\*.WS',4,5,17)
SM S -ALOAD %1
OnKey 'W'
|BoxHeaderColor ForeColor BackColor
|BoxBorderColor Yellow Green
|BoxInsideColor White Green
|%1 = PickFile('C:\SMART\WORD\*.DOC',4,5,17)
SM W -ALOAD %1
While developing the menu, program one of the keys to run your favorite
editor on the menu file that you are creating. This way, as soon as the
change is made, the results will show when you exit your editor. Since
MarxMenu allows versatility in creating the look of your menus, a little
trial and error will be required to make things look right.
Computer Tyme MarxMenu Users Manual Page 26
_______________________________________________________________
THE CONSOLE THE CONSOLE THE CONSOLE
+---| Console Functions |---+
| 1 - Blank Screen |
| 2 - Set Blank Message |
| 3 - Lock Keyboard |
| 4 - Set Blank Time |
+---------------------------+
The Console is a popup menu of built-in functions. To activate the
console, press the TAB key. A menu will pop-up in the upper left hand
corner of the screen. You can change the position of this popup menu
with the ConsolePos function.
The first command on the Console screen is Blank Screen. Enter 1 and the
screen will blank immediately. It will remain blanked until a key is
pressed. Enter 2 on the Console menu and you can change the message
displayed on the Blank Screen display.
Enter 3 and you will be prompted for a word to lock the keyboard. After
you enter the lock word the screen will blank and the keyboard will be
locked until the exact lock word is typed. Enter 4 to set the number of
minutes to wait before blanking the screen.
The lock word feature is handy for times when you must leave the
keyboard but don't want menu commands displayed for all to see. It also
effectively locks the keyboard so someone can't escape to DOS and test
the format command on your hard disk. We run this menu on a Novell
Network and don't want to let everyone have access to the Supervisors'
power at the touch of the escape key should we leave the keyboard.
REPOSITIONING THE TOP WINDOW REPOSITIONING THE TOP WINDOW REPOSITIONING THE TOP WINDOW
One nice feature you can use to get the windows right is to turn on the
scroll lock. This lets you move the top window around the screen using
the arrow keys so you can see how it looks. Then you can go into your
menu code and set it permanently.
Set Scroll Lock to "on". On most keyboards, a scroll lock LED will light
up. Now use the arrow keys to move the top window to any position on the
screen. Neat Huh?
Computer Tyme MarxMenu Users Manual Page 27
_______________________________________________________________
MOUSE SUPPORT MOUSE SUPPORT MOUSE SUPPORT
If you have a standard mouse driver, MarxMenu will detect it and use it
automatically. The left button on the mouse is the same as pressing
return. The right button on the mouse is the same as pressing escape.
Pressing both buttons on the mouse is the same as pressing the tab key.
As of now, I'm not yet using the center button on the mouse for
anything.
The sensitivity of the mouse can be controlled using the MouseHorizontal
and MouseVertical commands.
STARTING OFF THE EASY WAY STARTING OFF THE EASY WAY STARTING OFF THE EASY WAY
For those of you who want to just get a menu going and don't want
anything complicated we have included a menu called the LEVEL1 menu.
This menu is a fill in the blank type of menu that will get you going
quickly and easilly.
This menu requires no programming and explains itself. You run it by
typing the command:
MARX LEVEL1
The first thing it does is scan your drive to find the directories. Then
you just answer the questions and fill in the menu. This isn't as
powerful as programming your own menu, but if you want something quick
and dirty, this may be the answer for you.
ABOUT VARIABLES ABOUT VARIABLES ABOUT VARIABLES
One of the most unusual things about MarxMenu is its variables. MarxMenu
handles variables differently than any other programming language. For
the experienced programmer, this may require some adjustment since it's
like getting used to driving a Cadillac after driving a VW Beetle.
All variables in MarxMenu are like an empty box that can contain
anything. A variable can be a number, boolean, string, file, array, etc.
The type of variable is controlled internally and the user need not
declare variable types.
Variables are created with the VAR command:
Var X Y Z
If the word VAR is on a line by itself, the following lines, up to a
blank line, are considered variable names.
Computer Tyme MarxMenu Users Manual Page 28
_______________________________________________________________
Var
MyAge
YourAge
HisAge
HerAge
Variables are initialized to null values; 0 for Numbers, False for
Booleans, and '' for strings. Initial values can be set when the
variable is created.
Var
X = 6
MyName = 'Marc'
Programmer = True
Variables can change variable types. If you write a number to a string
variable, the variable changes to a number.
X = '234'
X = Value(X)
This is valid in MarxMenu. X now is a number and contains the value 234.
Number variables are 32-bit integers ranging between plus or minus
2,147,483,647.
Boolean variables are True or False.
String variables are limited to 255 characters.
In MarxMenu, string literals are delimited by either single or double
quotes.
"This can't be yogurt!"
'Lincoln said "Four score and seven years ago ..." '
Numbers beginning with a '$' indicate base 16 or hex numbers.
When choosing variable names, it is good programming practice to choose
long meaningful names. This allows yourself and others to be able to
read menus and follow the logic more easily.
Computer Tyme MarxMenu Users Manual Page 29
_______________________________________________________________
DATES DATES DATES
Dates in MarxMenu are stored as the number of seconds since Junuary 1st
1980. This gives MarxMenu a Date range of 68 years. By subtracting two
dates, you get the number of seconds between two peroids of time.
MarxMenu has several commands that convert text strings to dates. Here
are some examples of how MarxMenu sees text dates.
Examples:
'4-7-91' ;04-07-1991 00:00:00
'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
'12:35:23a' ;04-07-1991 00:35:23
'3:15' ;04-07-1991 03:15:00
If the string can't be converted, then BadDate is set to true.
REAL NUMBERS REAL NUMBERS REAL NUMBERS
So what's the difference between ordinary numbers and real numbers?
Ordinary numbers in MarxMenu are 32 bit integers. These are numbers
whose range is about plus or minus two billion. Integers are whole
numbers and do not include any fractions.
This is why MarxMenu has included REAL numbers (also known as Floating
Point numbers). Real numbers in MarxMenu use BCD (Binary Coded Decimal)
with 18 digits of accuracy. They have a range of 10 to the plus or minus
63rd power, which means up to 63 zeros either side of the decimal point.
This lets you work with very big and very small numbers. MarxMenu has
smart rounding algorithms so that 1.0 / 3 * 3 = 1.0 and not
0.999999999999999999 like in most languages.
Real numbers are specified by using a decimal point. Thus 5.0 specifies
a real number. Most normal MarxMenu functions still require the standard
32 bit integers. If you get the error: 'REAL found where INTEGER
expected.' You need to use an integer.
If an integer is passed where a real is expected, the integer is
automatically converted to a real. Thus:
6.0 * 3 = 18.0
The Value function returns real numbers if a decimal point is used in
the string. All the relevant math functions will work with reals as well
as comparison operators.
MarxMenu supports a variety of functions for real numbers. It has trig
functions, log functions, and exponential functions. So why do you need
real numbers in a menu program? I don't know. I had a library and
threw them in. I figure someone will need them someday.
Computer Tyme MarxMenu Users Manual Page 30
_______________________________________________________________
With real numbers you can do trigonometry calculations like those
discovered by the ancient Indian chief Pythagoras who discovered what is
now know as Pythagoras's triangle.
Now I know that a lot of you were taught in Math class that Pythagoras
was Greek. Well, it's just not so. Let me tell you the real story:
Pythagoras was an Indian chief that had three wives. Two of the wives
were twins and weighed 120 pounds each. And they sat next to Pythagoras
on a pair of twin deer hides.
But Pythagoras also had a third wife who was a large fat woman who sat
across from Pythagoras on a hypopotamus hide. This wife weighed 240
pounds.
What Pythagoras discovered was that the squaw on the hypopotamus was
equal to the sum of the squaws on the other two hides!
LOCAL VARIABLES LOCAL VARIABLES LOCAL VARIABLES
MarxMenu also supports local variables. Variables declared within
procedures become local variables. Local variables are just like global
variables in that you can use them as multidimensional arrays. When the
procedure finishes, all local variables are disposed.
If a local variable has the same name as a global variable, the local
variable will be used.
PASSING PARAMETERS TO PROCEDURES PASSING PARAMETERS TO PROCEDURES PASSING PARAMETERS TO PROCEDURES
Procedures can accept parameters by declaring variable names on the same
line as the name of the procedure.
Procedures can return variables by using the Return command. Return
exits the procedure returning the parameters on the same line as the
Return statement.
Example:
Procedure Factorial (X)
var Y Z
Y = 1
Z = 1
while Y <= X
Z = Y * Z
Y = Y + 1
endwhile
Writeln X ' factorial is ' Z
endproc
In this example, if you were to use Factorial (5) you would get:
Computer Tyme MarxMenu Users Manual Page 31
_______________________________________________________________
5 factorial is 120
Another Example:
Procedure AskYesNo (Question)
var YesNo
DrawBox (34 - (Length(Question) / 2)) 21 Length(Question) + 14 3
TextColor LCyan Blue
UseArrows Off
Write ' ',Question,' (Y/N) '
YesNo = UpperCase(ReadKey)
YesNo = YesNo = 'Y'
if YesNo
Write 'Yes'
else
Write 'No'
endif
Wait 50
EraseTopWindow
Return (YesNo)
EndProc
if AskYesNo 'Do you want to continue? ' then Continue
In this example, MarxMenu draws a box and asks a question and waits for
a Yes or No answer.
Arrays can be passed as parameters. Parameters are passed by value not
by reference. This means that any changes to the passed parameter do not
affect the original value.
You can copy an array by assigning it equal to another array.
Example:
Array1 = Array2
This creates Array1 with a copy of all the elements of Array2. The
previous contents of Array1 are overwritten.
Computer Tyme MarxMenu Users Manual Page 32
_______________________________________________________________
ABOUT CONSTANTS ABOUT CONSTANTS ABOUT CONSTANTS
Constants are used to give values meaningful names. By using constants a
value can be assigned once and the constant name used throughout the
menu program. This way, if you change the value of the constant, all the
places where that constant is used automatically change.
This is good programming practice.
Examples:
Const States = 50 CPU = '80386 SX' WeekEnd = True
or
Const
States = 50
CPU = '80386 SX'
WeekEnd = True
Using the word STATES is just like using 50. Using CPU is just like
using '80386 SX'. But if throughout my menu I use CPU, and then I get a
new computer with a 80486, I can just change one line:
Const CPU = '80486'
And all the places I used CPU changes to '80486'. This is the correct
way to program.
ABOUT ARRAYS ABOUT ARRAYS ABOUT ARRAYS
MarxMenu supports multidimensional arrays up to 31 dimensions. Unlike
other programming languages, arrays need not be declared. MarxMenu
creates arrays "on the fly" and automatically takes care of the array
size and number of dimensions.
Another unusual feature of MarxMenu arrays is that they are an array of
MarxMenu variables. This means that elements of MarxMenu arrays need not
be of the same type. Element 1 can be a number, element 2 can be a
string and element 3 can be another array.
This type of variable management leads to the easy creation of very
powerful data structures as you will see.
Var X
X[1] = 'Element 1'
X[2] = 3
X[3] = True
X[4,6] = 9
X[4,7] = 'Ten'
Computer Tyme MarxMenu Users Manual Page 33
_______________________________________________________________
These are all valid statements. MarxMenu creates a two dimensional array
here. If we now execute the following statement:
X[4] = X[4,6] + X[2]
X[4] becomes equal to 12 but variables X[4,6] and X[4,7] are lost. This
is because we have changed an array into a number. MarxMenu
automatically handles the deallocation of memory used by this array and
its elements and returns the space the used to the memory pool.
ABOUT QUALIFIERS ABOUT QUALIFIERS ABOUT QUALIFIERS
Qualifiers are named indexes into arrays. They are used to make the
source menu file more readable and more organized.
Suppose we are creating a data structure to deal with places in the
United States. First we will need an array for States.
Var States
We want to store some facts about the states.
Qualifier
Population
Bird
Motto
County
State[3].Population = 10000000
State[3].Bird = 'Chicken'
State[3].Motto = 'Best politicians money can buy!'
Now states have counties and counties have county seats, sheriffs, and
cities.
Qualifer
Sheriff
Seat
City
State[3].County[7].Sheriff = 'Buck InBred'
State[3].County[7].Seat = 'Possum Trot'
Now counties have cities and cities have schools, mayors, churches, and
taxes.
Qualifier
Schools
Mayor
Churches
Taxes
Computer Tyme MarxMenu Users Manual Page 34
_______________________________________________________________
State[3].County[7].City[9].Schools = 8
State[3].County[7].City[9].Mayor = 'Virgil Collins'
State[3].County[7].City[9].Churches = 120
State[3].County[7].City[9].Taxes = '$100,000,000'
The above line is the same as:
State[3,4,7,3,9,4] = '$100,000,000'
As you can see with qualifiers, it is easy to create multidimensional
arrays in a way that is organized and readable.
In this example, the qualifier Population became equal to 1. Bird became
equal to 2. The variable references, State[3].Bird and State[3,2] are
the same. It's just that one is more readable than the other. Qualifiers
normally begin by assigning 1 to the first name and 2 to the second
etc. This can be modified.
Qualifier
Color = 7
Size
Shape
In this case Color becomes the number 7; Size becomes the number 8; and
Shape becomes the number 9.
COMMENTS IN MENU FILES COMMENTS IN MENU FILES COMMENTS IN MENU FILES
MarxMenu has three ways to add comments to a menu file. The first way is
with the Comment command.
Comment
========================
This is a comment block.
========================
EndComment
All lines up to EndComment are ignored.
The second way is with a ';'. All text to the right of the ';'
(semicolon) is ignored.
BlankTime = 20 ;this is where we set the blank time.
The third way is using {} or curly braces. Anything inside the curly
braces is ignored. Curly braces can be nested.
{All of {this} is a comment.}
Computer Tyme MarxMenu Users Manual Page 35
_______________________________________________________________
Comments are ignored by the compiler and cost you nothing in execution
speed. Comments can save you a lot of time if you have to come back
later and work on your menu, or if someone else has to work on it.
Therefore, I encourage you to use comments as much as possible.
THE MARXMENU COMPILER THE MARXMENU COMPILER THE MARXMENU COMPILER
MarxMenu reads your MNU files and creates MRX files. These MRX files are
a highly digested form of the MNU file that you created. MRX files are
the compiled files.
When you run MarxMenu, the interpreter MARXMENU.EXE looks for the menu
file with the MRX extension. If it doesn't find it, MARXMENU.EXE will
automatically load MARXCOMP.EXE and compile the menu. MARXMENU.EXE also
compares the file dates of the MNU and the MRX files. If the MNU file is
newer than the MRX file, the complier will be loaded.
MarxMenu will also force a compile if the MRX file was not complied by
the same version and release date of the MarxMenu you are using. MRX
files are not compatible from one version of MarxMenu to the next.
You can also force a compile from the command line by typing MARXCOMP
<menu>. If you are on a network and using MarxMenu to log you in, make
sure you run the complier if you change your login menu file.
Once your menus are written, you can remove the MNU file and
MARXCOMP.EXE from the system. This prevents anyone from modifying your
menus. The MRX files are scrambled for security. This prevents probing
eyes from reading strings in the MRX files.
COMPILER COMPATIBILITY COMPILER COMPATIBILITY COMPILER COMPATIBILITY
The MarxMenu compiler is fully compatible with earlier versions of
MarxMenu with a few exceptions. The new compiler does a lot more error
checking than earlier versions of MarxMenu and will catch errors that
you used to get away with. Other than that, the only difference you
should notice will be a speed increase.
Earlier versions of MarxMenu had separate names for variable types. The
names $VAR, BVAR, #VAR, and FILEVAR act the same as typing VAR.
Very early versions of MarxMenu had a different form of the USEARROWS
command that required 4 to 5 numbers after it. If you run into this
error, just get rid of the numbers after USEARROWS and it will work
fine.
Computer Tyme MarxMenu Users Manual Page 36
_______________________________________________________________
A WORD ABOUT DOS VERSIONS ..... A WORD ABOUT DOS VERSIONS ..... A WORD ABOUT DOS VERSIONS .....
Versions of DOS below 3.3 will cause MarxMenu to use 3.5k of ram where
3.3 DOS and above use no memory. 3.2 DOS is very buggy and should be
replaced. 3.1 DOS isn't too bad for bugs but if you're using the BACKUP
and RESTORE programs that came with it, you're in trouble. They don't
work on large files. You'll find that out if you try to restore one of
them.
MS-DOS 4.01 seems to be pretty clean provided you have the April-89
release or later. To determine if you do, check the file date on
COMMAND.COM. Earlier versions of DOS 4.01 have SERIOUS BUGS. If you are
running any DOS 4 earlier than April-89 you should upgrade immediately.
We are happy to announce that MarxMenu runs under DOS 5.0 with no
problems and requiring no modifications. We are in the process of adding
hooks to take advantage of new features of DOS 5. One feature
implemented is the Idle Loop call which allows MarxMenu to conserve CPU
power when it's not doing anything. This makes it work better under
DesqView and Windows.
DR-DOS or EZ-DOS are pretty good also. It is very compatible as long as
you don't get too strange with it. I recommend version 3.4 or later.
4DOS is also pretty good but sometimes some of the advanced features in
this product can cause it to behave differently than DOS. This requires
extra care when writing your menus.
MarxMenu should work correctly on 386 type multiuser operating systems
such as Digital Research's Concurrent DOS 386 or SCO VPIX DOS emulators.
MarxMenu will not run correctly under DesqView 2.26. It will run under
2.25 or 3.21. So if you are running 2.26, it needs to be upgraded.
MarxMenu contains several support functions for DesqView.
If you are running under some weird DOS and are having problems, try it
under "regular" DOS and see if it goes away. If it does, try to find out
what it is about your weird DOS that makes it not work right. I am
interested in being compatible with as many systems as I can. Let me
know if you are having problems. But also, try to get your wierd DOS
vendors to clean up their act.
A WORD ABOUT BUGS ..... A WORD ABOUT BUGS ..... A WORD ABOUT BUGS .....
Although I try to create perfect bug free software, every now and then
even I make a mistak. If you find one, let me know and I'll fix it.
Computer Tyme MarxMenu Users Manual Page 37
_______________________________________________________________
TIPS FROM THE MASTER TIPS FROM THE MASTER TIPS FROM THE MASTER
Since MarxMenu is a programing language, I want to talk about what
programing is and how it is accomplished. I want to dispel some myths
and fears relating to it and introduce you to techniques that will help
you write code neatly, quickly, and efficiently. From the outside,
programming looks like magic; but once you know a few of the tricks, its
really not too hard.
Many of us who were raised on 50s and 60s science fiction television
learned that it is the brainy types who deal with computers. It almost
gives you the impression that the computer is smart and you are dumb. As
you use the computer, it is evaluating you, and if it figures out that
its smarter than you, it can get your job and replace you.
COMPUTERS DO SIMPLE TASKS COMPUTERS DO SIMPLE TASKS COMPUTERS DO SIMPLE TASKS
A computer is a simple device. It does simple tasks. It just does them
very fast and accurately. Computers don't even know basic things like
how to write letters on the screen or how to read the keyboard. These
are programs that the computer runs. Someone had to program your
computer to do even the simplest of tasks.
As you learn to use MarxMenu start with the simple menus. The SAMPLE.MNU
is a very easy program. Study it and understand how it works. Make a
copy of it and change one selection to run one of your programs.
Once you have changed one selection, change several more. Now MarxMenu
is running your programs, and you have made it work. Then try something
new. Add more selections. Change the size and position of the box to fit
your needs.
Take the time to play with it. Try new commands. Build up your menu. Be
artistic. The more you work with it, the more you will learn.
Computer Tyme MarxMenu Users Manual Page 38
_______________________________________________________________
COMPLEX TASKS ARE MADE OF SIMPLE TASKS COMPLEX TASKS ARE MADE OF SIMPLE TASKS COMPLEX TASKS ARE MADE OF SIMPLE TASKS
As you learn more about MarxMenu, move on to SAMPLE2.MNU. Here we use
more of the power of the MarxMenu language. As you study this menu, you
will notice something. Even though it looks complex, it is really a
collection of simple tasks. Understand how the moving windows work.
Understand that the pop-up menus are just like the main menu. You will
see that it is really not a complex menu at all. It is a lot of simple
processes hooked together.
That is one of the main concepts behind programming. Complex tasks are
built out of simple tasks. As you learn the simple tasks, you will
quickly understand how to connect them to accomplish complex tasks.
When one sees a castle, one can't help but to be impressed. But castles
are made of stones. And you can't build castles until you understand how
stones work. Then you realize that a castle is just a bunch of stones
hooked together. Programming is just like that.
To successfully understand MarxMenu, start at the bottom and work your
way up. Each little trick you learn becomes another building block for
the next trick. What you start with becomes the foundation for the work
that you will eventually produce.
LEARNING GOOD PROGRAMMING HABITS LEARNING GOOD PROGRAMMING HABITS LEARNING GOOD PROGRAMMING HABITS
Programming has its pitfalls, here I hope to give you some tips that
will help you avoid common mistakes. This, I hope will give you a head
start on the road to MarxMenu being done right.
The first concept is patience. Rome wasn't built in a day. You may not
be able to write grand and glorious menus the first try. In fact, you
may have trouble getting the damn thing to work at all. As you have
probably already noticed, no program is perfect. Sometimes there are
errorrs in the manual. Sometimes it just doesn't work like you expected,
or does not work the same way as other programs that are familiar to
you.
But, once you complete the installation, give it some time and realize
that there is a lot of potential here. Approach all challenges with a
good attitude.
Computer Tyme MarxMenu Users Manual Page 39
_______________________________________________________________
USE LONG NAMES USE LONG NAMES USE LONG NAMES
I learned computers the hard way. Out on the streets. Hanging around
with other computer nerds in the late 70s who never went to college
either. I was known as a Bit Wit. My first real computer was an IMSAI
kit. Actually, it wasn't all IMSAI, it was a combination of several kits
where no two boards came from the same supplier. It was in an IMSAI box,
so I call it an IMSAI.
It was all supposed to work together the salesman told me the day before
they went out of business. And it all did after some redesigning. I was
tired of fixing CB radios for a living and decided that computers were
here to stay and that I was going to learn about them.
With that in mind, everything that went wrong became an opportunity for
growth. Not that I looked forward to things not working. I programmed
the thing from scratch, loading binary codes into memory from an array
of switches on the front panel.
The first program I wrote ran the EPROM burner, which was the only
storage device I had. After I saved this program on a chip, I used it to
load the second program onto the chip.
Eventually I wrote enough software to talk to the screen and keyboard.
Now I could type hex codes on the screen and save them to a chip.
Eventually I wrote a tape driver and could save stuff on tape. Later, I
traded for a North Star disk drive and had a disk system. One 90k
floppy. I thought I was in heaven.
I was intimately familiar with my computer. All my programs were in
object code with no documentation whatsoever. At that point, a friend of
mine, Rufus, turned me on to a language called FORTH.
Being an interesting language and very powerful, I typed in the whole
compiler in hex and adapted it to work on my system. Once I got Forth
up, I wrote a line editor in it. I then used the line editor to write a
screen editor. With the screen editor, I rewrote Forth in Forth. The
language compiled itself.
From working with Forth (which is as much a religion as a programming
language) I learned both good and bad habits. Forth is a write only
language and is almost impossible to read even with the best of
documentation. On the other hand, it is as close to the machine as you
can get in a high level language.
Computer Tyme MarxMenu Users Manual Page 40
_______________________________________________________________
After opening up a computer store in 1984, it became time to make the
jump from CP/M to the DOS world. Turbo Pascal offered an interesting
solution. They had both a CP/M and DOS compiler. This meant that
programs I wrote would run on both machines. The thing that struck me
about Pascal was that I could read it better than Forth, and I didn't
even know the language. Not only that, but I could follow the programs
that other people wrote and incorporate their code into my programs.
The more programs I wrote, the more I came to appreciate a language that
was reader friendly. I could manage my programs much easier without
having to remember so much. Other people could follow what I was doing
easier.
The important thing I learned was that readability is very important in
a program. The more complex the program, the more important readability
becomes.
One of the main design factors in the MarxMenu language is readability.
I could have used short names for my commands and it's not like I like
to type. I'm still on just two fingers here. Its just that descriptive
names are so much more meaningful when putting simple processes together
to create complex processes.
The point (finally) is, when creating variable names, or procedure
names, use long meaningful names. It may take more typing, but it takes
a lot less thinking and remembering later on. Consider the following
example in choosing variable names.
Var KlingonsDestroyedInBattle
Var K
In the above example, it is obvious which one tells you more about what
information is stored in the variable.
USE COMMENTS LIBERALLY USE COMMENTS LIBERALLY USE COMMENTS LIBERALLY
Even though MarxMenu is easy to read, it still should be commented. The
examples that come with this disk do not have as many comments as they
should. Don't do as I do, do as I say. I'm lazy and a bad example.
Comments are not compiled in your MRX files and cost you nothing at
execution time. In order to make commenting easy, I have provided three
separate comment commands. Learn these commands first.
Every menu should include a title comment. This should include the name
and phone number of the person who wrote it. If you have a problem with
a menu and you send it to me, I expect a title comment. That way I can
call you about it.
Comment
====================================================================
Computer Tyme MarxMenu Users Manual Page 41
_______________________________________________________________
This comment was created by Marc Perkel 1-417-866-1222
Last Updated: 01-28-90
This form of comment block is better than using ';' because not using ;
allows you to turn your word wrap feature on and do some professional
looking editing in the comment block. This kind of comment block should
be at the beginning of each and every menu you create.
The top and bottom bars are for looks only and are not necessary to the
comment. I strongly encourage you to use bars and do things for looks
in source code. Looks are very important and you should put as much
care into your comments as you do in writing a business letter.
If you learn MarxMenu well, your source code may be part of your next
job interview as you move up the corporate ladder. So you want it to
look good.
By the way, if you upload your menus to my bulleten board, I expect a
comment block at the top of your menu with your phone number so I can
get back to you.
====================================================================
EndComment
INDENT YOUR CODE INDENT YOUR CODE INDENT YOUR CODE
As programs get more complex, it gets harder to match the IFs with the
ELSEs and the ENDIFs. This is where indenting comes in. It creates a
logical grouping of statements and you can easily see what goes with
what.
Procedure IfDemo
IF <condition>
<statement>
<statement>
ELSE
<statement>
<statement>
WHILE <condition>
<statement>
<statement>
ENDWHILE
<statement>
ENDIF
<statement>
EndProc
Computer Tyme MarxMenu Users Manual Page 42
_______________________________________________________________
You can easily see how this helps you follow what you are writing. Now
here's a new trick. If you are using an IF, and plan to use an ELSE and
an ENDIF, on the line under the IF statement, type in your ELSE and
ENDIF lines. Then go back and insert your statements in between these
lines. This will help you avoid forgetting the ENDIF or getting mixed up
as to which IF matches which ELSE.
A similar trick can be done with parens and brackets. When typing a left
paren, type the matching right paren with it. Then fill in the code you
want to put inside the parens or brackets.
FOR DUPLICATE TASKS, USE PROCEDURES FOR DUPLICATE TASKS, USE PROCEDURES FOR DUPLICATE TASKS, USE PROCEDURES
As menus become longer and more complex, many times you are duplicating
a process that you already have written. Although it is easy to copy a
block of code, it is better to create a procedure.
With procedures, the process is put in one place and is given a name.
Preferably a long meaningful name. Once this procedure is defined and
named, it can be used as if it were part of the MarxMenu language. This
makes menus smaller and easier to read. It is also a way for you to
combine small processes into large processes. Procedures can be built
using other procedures.
Once you have a process figured out and working in a procedure, the
whole process becomes a black box with a name that you can use
elsewhere. The whole process is reduced down to a name that just works!
Another advantage of procedures is that if circumstances change and the
procedure needs to be modified, you only make a change one place in your
menus, and everything that uses that procedure is automatically changed.
This makes menu maintenance easier.
DON'T PROGRAM YOURSELF INTO A CORNER DON'T PROGRAM YOURSELF INTO A CORNER DON'T PROGRAM YOURSELF INTO A CORNER
Using the above techniques will allow you to write very complex menu
systems. Failing to use these techniques can limit what you can
accomplish. There is a term called "programming yourself into a corner"
which refers to a program that is so poorly written, that it can't be
modified to accommodate changes and improvements.
The height of your programming abilities depends on the foundation on
which they are built. You must avoid rushing to the top without first
creating a firm foundation on which to build. Good technique is the
foundation for good programming. You will have to learn it eventually,
it is more efficient to do it right than it is to do it over.
Adopting good programming habits reminds me of my favorite light bulb
joke:
Q. How many psychologists does it take to change a light bulb?
Computer Tyme MarxMenu Users Manual Page 43
_______________________________________________________________
A. Only one, but the light bulb has to want to change.
A WORD TO WRITERS AND REVIEWERS A WORD TO WRITERS AND REVIEWERS A WORD TO WRITERS AND REVIEWERS
MarxMenu is a multi-level product fulfilling the needs of a large
variety of computer users. It is difficult to compare this product on a
feature to feature basis. This is because MarxMenu has about 10 times as
many features as any other menu system. These features allow this
product to target a very broad variety of computer users, from the
novice user, who will only use the LEVEL1 menu, to large companies with
hundreds of file servers controlled through the MarxMenu language.
One common mistake that writers make when evaluating MarxMenu, is in the
area of ease of use. If you are looking for ease of use, stick with the
simple menus and the self-configuring menus such as the LEVEL1 example.
By looking at it this way, MarxMenu will be as easy to use as any other
menus system out there and can be compared for similar features. Even
though MarxMenu supports complex commands, it is not necessary to use
them in simple menus.
If you are doing a comparative review, please let me know on what basis
you are making comparisons. This way I can assist you by providing you
accurate information in the area of your interest. If you are looking
for simple, I can show you simple; if you are looking for power, I can
show you power.
On the other hand, if you are reviewing power tools and network
utilities, you might want to look at the Network Survival Kit and not
just MarxMenu. So if you have a copy of only this program, give me a
call and I'll get you the latest and greatest.
In addition to our software, we also have color prints and color slides
available as well as product literature and sample reviews. These are
available to make your job easier and help you make those deadlines.
MarxMenu tends to be best reviewed as a long article rather than a short
one. It is very good if you have a lot of space to fill. With a long
article, you can get really in depth with what MarxMenu is able to do.
Any publication which reviews any of my products gets a site license to
that product whether I like the review or not. Our position is that if
you are using MarxMenu yourself, you will get to know it better.
So far, as of the date I write this, no writer has written an article
about MarxMenu that I feel covered what this product is really capable
of doing. Consider this a challenge.
Any questions you have about any of my products, feel free to call. The
main thing I ask is that you get the product name, price, our address,
and our phone number right.
Computer Tyme MarxMenu Users Manual Page 44
_______________________________________________________________
USING MARXHELP USING MARXHELP USING MARXHELP
MarxHelp is a TSR pop-up help program for MarxMenu. It acts as an online
reference guide to all of the MarxMenu commands. MarxHelp only takes 8k
of ram and is very useful while writing your MarxMenu applications.
To load MarxHelp type MARXHELP at the command line. Then if you want to
pop-up an index press Shift-F3. The Shift-F2 key will repeat your last
help topic and Shift-F1 will look up the word your cursor is on.
To get more help on MarxMenu type MarxHelp /?. If you need to unload
MarxHelp from memory, type MarxHelp /U.
MarxHelp comes with the Computer Tyme Network Survival Kit. It can also
be downloaded from our support BBS. It does not come bundled with the
single user version.
PRINTING THE EXAMPLE FILES PRINTING THE EXAMPLE FILES PRINTING THE EXAMPLE FILES
MarxMenu comes with several example programs from simple to complex. The
first thing to do is print the sample menus and study them. Start with
the easy ones. You may never need to use any of the more complex ones,
but if you do, a large variety of advanced techniques are demonstrated.
By studying the sample menus, and comparing them to this manual, it
should be fairly easy to become productive writing your own menus.
SECURITY ISSUES SECURITY ISSUES SECURITY ISSUES
Different users have different security need that range from none to
extreme. If you are in the nine category, then you can skip this
chapter. But if you need all the security you can get, then read on.
First of all, DOS is not a secure operating system. There are various
third party programs out there but what I'm going to cover here is how
to make DOS secure as possible working with what you get with DOS.
The first thing to do is add the command BREAK=OFF to your CONFIG.SYS
file. This prevents programs from breaking out of batch files. Avoid
using commands that are internal DOS commands like DIR from inside a
menu or inside batch files. Use the D.EXE program instead.
Use the LockWord option in the screen blanker so that if a menu is left
unattended, it will not be accessable to just anyone walking up to a
machine. The LockWord command requires the user type a password to
release the screen blanker. If you are on a Novell network, you can use
the UseNovPassword command. This forces the user to type their Novell
password to unblank the screen.
Computer Tyme MarxMenu Users Manual Page 45
_______________________________________________________________
If a menu choice access sensitive materials, then put a password on it.
Also, make sure the SUPERVISOR user has a password. There are many times
I've walked up to a server and logged in as supervisor and got right in.
Make sure that intruder detection is set on. If you don't know what
intruder detection is, read the Novell manuals.
You can also use the LogoffTime command to log users off the network
after a given amount of inactivity. This also helps kick people off so
that you can upgrade MarxMenu from time to time. (MARXMENU.EXE can't be
copied over on a network unless all users are out of the menu.)
If you have applications that allow you to shell to DOS, you can prevent
them from getting to DOS by changing your COMSPEC to point to something
other than COMMAND.COM. You could also rename COMMAND.COM in case a
program is looking for this file by name.
Another defense is to lock the door to the computer room at night and
teach employees security policies and make sure they use them.
If you are on a network, buy diskless workstations. People can't copy
files on or off a network that doesn't have a disk drive. It helps keep
viruses off your server and lets the network administrators control what
is and isn't on the network.
MARXMENU COMMANDS MARXMENU COMMANDS MARXMENU COMMANDS
MarxMenu contains a rich set of commands. They are listed here
alphabetically and by command category. You don't have to learn them all
so don't let the size of the list scare you.
In the following command list, words contained within ( ) are command
parameters that must be included after the menu command. If the
parameter is not required, it will be contained in [ ]. The numeric
range for the <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.
Computer Tyme MarxMenu Users Manual Page 46
_______________________________________________________________
| (Vertical Bar) | (Vertical Bar) | (Vertical Bar)
Forces MarxMenu interpretation under an OnKey Command. If not for the |
(Vertical Bar), the command under an OnKey would be written to a batch
file. The | is only used under OnKey commands.
Example:
OnKey 'S'
|password 'hello' 3 4
ECHO Type EXIT to return to menu
COMMAND.COM
OnKey 'X'
|if UpperCase(ReadEnv('USERNAME')) = 'SUPERVISOR'
SYSCON
|else
| SecurityBreach('You do not have access to this function!')
|endIf
Category: Misc
( : Operator ( : Operator ( : Operator
Starts logical interpreter grouping.
Used to force evalution of an expression.
Example:
2 * 3 + 2 evaluates to 8
2 * ( 3 + 2 ) evaluates to 10
Category: Misc
) : Operator ) : Operator ) : Operator
Ends logical interpreter grouping.
See Also: (
Category: Misc
* : Operator * : Operator * : Operator
Multiplies two numbers.
Category: Math, Float
Computer Tyme MarxMenu Users Manual Page 47
_______________________________________________________________
+ : Operator + : Operator + : Operator
Adds two numbers or two strings.
Example:
"Hello" + " " + "World" = "Hello World"
2 + 2 = 4
Category: Math, String, Float
- : Operator - : Operator - : Operator
Subtracts two numbers.
Category: Math, Float
/ : Operator / : Operator / : Operator
Divides two numbers.
Category: Math, Float
< : Operator < : Operator < : Operator
Less Than - Compares two numbers or strings.
Category: Math, String, Float
<= : Operator <= : Operator <= : Operator
Less Than or Equal - Compares two numbers or strings.
Category: Math, String, Float
<> : Operator <> : Operator <> : Operator
Not Equal - Compares two numbers or strings.
Category: Math, String, Float
= : Operator = : Operator = : Operator
Equal - Compares two numbers or strings.
Category: Math, String, Float
> : Operator > : Operator > : Operator
Greater Than - Compares two numbers or strings.
Category: Math, String, Float
>= : Operator >= : Operator >= : Operator
Greater Than or Equal - Compares two numbers or strings.
Category: Math, String, Float
Computer Tyme MarxMenu Users Manual Page 48
_______________________________________________________________
%MenuFileName : String %MenuFileName : String %MenuFileName : String
This returns the name of the current menu file including the complete
path. It can be used under an OnKey statement to edit the current menu
as follows:
Example:
OnKey 'E'
EDIT %MenuFileName
Category: String
Abs : Number Abs : Number Abs : Number
Returns the absolute value of a number. The absolute value is the value
of the number without the sign.
Example:
Abs(-6) returns 6
Category: Math, Float
Alias Alias Alias
Alias <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
And : Operator And : Operator And : Operator
Returns logical And if operators are boolean; or bitwise And if
operators are numeric.
Category: Math, Boolean
Computer Tyme MarxMenu Users Manual Page 49
_______________________________________________________________
ApplicationMemory : Number ApplicationMemory : Number ApplicationMemory : Number
Returns the number of bytes of memory available to an application when
MarxMenu exits out to the MARX.BAT file. This is the actual amount of
ram available to your application.
See Also: FreeMemory
Category: Memory
Apr : Number Apr : Number Apr : Number
April, returns the number 4.
Category: Time
ArcTan (Radians) : Real ArcTan (Radians) : Real ArcTan (Radians) : Real
Returns the ArcTangent of a real.
Category: Math, Float
Aug : Number Aug : Number Aug : Number
August, returns the number 8.
Category: Time
BadDate : Boolean BadDate : Boolean BadDate : Boolean
Set to true if you try to convert a string to a date and the date is
invalid.
See Also: TimeOf
Category: Time
Bat (string) Bat (string) Bat (string)
Used to write a line to the batch file the same way OnKey does. All the
same rules apply. The batch file is created when the menu exits.
MarxMenu exits with ErrorLevel 0 unless some other value has been
specified using the ExitCode command.
Example:
OnKey 'D'
|BAT "command /c dir a:"
|ExitMenu
See Also: OnKey
Category: Execution
Computer Tyme MarxMenu Users Manual Page 50
_______________________________________________________________
BatFileName : String BatFileName : String BatFileName : String
Returns the name of the batch file that MarxMenu would create if
MarxMenu were to create a batch file automatically.
Category: String
BigShadow BigShadow BigShadow
Selects big shadow type. This is the default shadow.
See Also: SmallShadow, ShadowPosition, ShadowColor
Category: Display
Black : Number Black : Number Black : Number
Returns the number 0.
Category: Color
Blanked : Boolean Blanked : Boolean Blanked : Boolean
Returns true if the screen blanker has kicked it. This lets you alter
your idel program based on if the screen blanker is active.
Category: Display
BlankMessage (string) BlankMessage (string) BlankMessage (string)
When the screen blanks out, this one line message is displayed. If
BlankMessage is not set, the date and time will be displayed.
See Also: ConsolePos
Category: String
BlankTime (minutes) BlankTime (minutes) BlankTime (minutes)
Sets the number of minutes before the screen blanks out to prevent
screen burn. Since this is not a resident program, screen blanking is
only active while the menu system is active. Setting BlankTime to 0
prevents screen blanking.
Example:
Set ConsolePos
Category: Display
Computer Tyme MarxMenu Users Manual Page 51
_______________________________________________________________
Blink : Boolean Blink : Boolean Blink : Boolean
Blink is a boolean variable that when set to true allows you to specify
colors that will blink. To make a color that blinks, set the background
color to a bright color. A bright color is a color from 8 to 15.
Normally, when Blink is off, MarxMenu strips the high bit of the colors.
When Blink is on, high bit stripping is disabled.
Example:
Blink
TextColor Green LRed
Because the background color is light red, the text will blink.
Warning: Blinking characters can cause headaches and eye strain. I
resisted adding this feature for a long time because I personally hate
excessive blinking characters on the screen. I now recognize that
blinking can be very effective when used correctly. Please use blinking
sparingly.
Category: Color
BlockBox BlockBox BlockBox
Selects block type box for menu borders.
See Also: SingleLineBox, DoubleLineBox, CustomBox, NoBoxBorder
Category: Display
Blue : Number Blue : Number Blue : Number
Returns the number 1.
Category: Color
BoxBorderColor (forecolor,backcolor) BoxBorderColor (forecolor,backcolor) BoxBorderColor (forecolor,backcolor)
Sets colors for box border.
Category: Color
Computer Tyme MarxMenu Users Manual Page 52
_______________________________________________________________
BoxHeader (string) BoxHeader (string) BoxHeader (string)
Sets the center header message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxHeader ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
Category: Display
BoxHeaderColor (forecolor,backcolor) BoxHeaderColor (forecolor,backcolor) BoxHeaderColor (forecolor,backcolor)
Sets colors for the box headers and box footers.
Category: Color
BoxHeaderLeft (string) BoxHeaderLeft (string) BoxHeaderLeft (string)
Sets the left header message for the next box displayed. This command is
used before the DrawBox command.
Example:
BoxHeaderLeft ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
Category: Display
BoxHeaderRight (string) BoxHeaderRight (string) BoxHeaderRight (string)
Sets the right header message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxHeaderRight ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
Category: Display
Computer Tyme MarxMenu Users Manual Page 53
_______________________________________________________________
BoxFooter (string) BoxFooter (string) BoxFooter (string)
Sets the center footer message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxFooter ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooterLeft, BoxFooterRight
Category: Display
BoxFooterLeft (string) BoxFooterLeft (string) BoxFooterLeft (string)
Sets the left footer message for the next box displayed. This command is
used before the DrawBox command.
Example:
BoxFooterLeft ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterRight
Category: Display
BoxFooterRight (string) BoxFooterRight (string) BoxFooterRight (string)
Sets the right footer message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxFooterRight ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft
Category: Display
BoxInsideColor (forecolor,backcolor) BoxInsideColor (forecolor,backcolor) BoxInsideColor (forecolor,backcolor)
Sets colors for box interior.
Category: Color
Brown : Number Brown : Number Brown : Number
Returns the number 7.
Category: Color
Computer Tyme MarxMenu Users Manual Page 54
_______________________________________________________________
BW40 : Number BW40 : Number BW40 : Number
Returns the number 0. Relates to the DOS Mode BW40 command.
Category: Video
BW80 : Number BW80 : Number BW80 : Number
Returns the number 2. Relates to the DOS Mode BW80 command.
Category: Video
CapsColor (forecolor,backcolor) CapsColor (forecolor,backcolor) CapsColor (forecolor,backcolor)
Setting CapsColor allows capital letters and numbers to be a different
color than the rest of the text. This is used with the UseArrows command
to show which character is the one that selects the options in the
window. CapsColor is reset after any TextColor command, so be sure to
use CapsColor AFTER TextColor commands.
For this option the numbers 0 - 9 and some punctuation characters are
considered capitals.
See Also: DrawBox
Category: Color
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 55
_______________________________________________________________
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. Thus the command: String =
CleanFileName('a:\' + '\main.mnu') sets String to 'A:\MAIN.MNU'.
CleanFileName also removes extra ending '\' and capitalizes the path.
Category: String
ClearLine [char] ClearLine [char] ClearLine [char]
Clears the current line in the current window. The optional parameter is
for the decimal number of the IBM graphics character. If [char] is
present, the line will be filled with the character.
Examples:
ClearLine ;Clears screen with blanks
ClearLine 205 ;Clears screen with char 205
Category: Display
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
Computer Tyme MarxMenu Users Manual Page 56
_______________________________________________________________
ClearScreenFirst (on/off) ClearScreenFirst (on/off) ClearScreenFirst (on/off)
Used in conjunction with Execute. If on, will clear the screen before
running the program.
Example:
OnKey 'D'
|ClearScreenFirst On
|Execute 'C:\DM.COM'
The default is ON.
Category: Execution
ClearScreenOnExit (on/off) ClearScreenOnExit (on/off) ClearScreenOnExit (on/off)
Controls whether or not the screen is cleared on menu exit. Default on.
Category: Display
ClockColor (forecolor,backcolor) ClockColor (forecolor,backcolor) ClockColor (forecolor,backcolor)
Sets colors for the on screen clock.
Category: Color
ClockMode ClockMode ClockMode
ClockMode is a variable whose bits control the format of the on screen
clock when it is used.
ClockMode Bits:
---------------
0 24 hour mode
1 AmPm On
2 Show Seconds
3 UpperCase
4 3 char month
5 3 char Day of Week
6 Show Day of Week
7 Dash = 0 Slash = 1 MM-DD-YY or MM/DD/YY
8 Long Date
Bit 0 on sets hours display to 24 hour mode.
Bit 1 turns on the Am/Pm display.
Bit 2 on controls if time is shown as HH:MM:SS or just HH:MM.
Bit 3 shows date in only upper case.
Bit 4 on shows month in 3 characters.
Bit 5 shows Day of week as 3 characters.
Bit 6 controls if Day of week is displayed.
Bit 7 controls if date is shown as MM-DD-YY or MM/DD/YY.
Bit 8 shows date in text. (October 3, 1990).
The default ClockMode is 326.
Computer Tyme MarxMenu Users Manual Page 57
_______________________________________________________________
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
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.
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 58
_______________________________________________________________
CO40 : Number CO40 : Number CO40 : Number
Returns the number 1. Relates to the DOS Mode CO40 command.
Category: Video
CO80 : Number CO80 : Number CO80 : Number
Returns the number 3. Relates to the DOS Mode CO80 command.
Category: Video
ColorScreen : Boolean ColorScreen : Boolean ColorScreen : Boolean
Returns true if screen is a color screen. Note: Running MODE BW80 will
cause ColorScreen to return false.
Example:
If ColorScreen
;Color
TextColor( White, Blue )
Else
;Monochrome
TextColor( White, Black )
EndIf
Category: Video
Comment Comment Comment
Starts a Comment Block. All text is ignored until EndComment is
encountered.
Example:
Comment
=======================================
Everything between Comment and EndComment is ignored.
=======================================
EndComment
See Also: EndComment
Category: Misc
Console (On/Off) Console (On/Off) Console (On/Off)
The command Console Off will disable access to the console.
Category: Display
Computer Tyme MarxMenu Users Manual Page 59
_______________________________________________________________
ConsoleBorderColor (Color,Color) ConsoleBorderColor (Color,Color) ConsoleBorderColor (Color,Color)
Sets the color of the console border.
Example:
See Also: ConsolePos
Category: Color
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
Computer Tyme MarxMenu Users Manual Page 60
_______________________________________________________________
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
Cyan : Number Cyan : Number Cyan : Number
Returns the number 3.
Category: Color
DateString : String DateString : String DateString : String
Returns the current date in MM-DD-YY format.
Category: Time, String
Day : Number Day : Number Day : Number
Returns the day of the month.
Category: Time
Computer Tyme MarxMenu Users Manual Page 61
_______________________________________________________________
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
Dec : Number Dec : Number Dec : Number
December, Returns the number 12.
Category: Time
Computer Tyme MarxMenu Users Manual Page 62
_______________________________________________________________
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 63
_______________________________________________________________
Dispose (Variable) Dispose (Variable) Dispose (Variable)
This command reclaims memory used by a string variable, file variable,
or an array. If you are doing a lot of data manipulation, you might want
to reclaim memory space used by arrays you are done with. The disposed
variable becomes an untyped variable.
Example:
Loop( 20 )
MyArray[LoopIndex] = LoopIndex
;Check to See Also: if number is odd or even
If (MyArray[LoopIndex] Mod 2) = 0
Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
Else
Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
EndIf
EndLoop
;We're finished with the array so reclaim its memory space.
Dispose(MyArray)
Category: Memory, Array
DosVersion : Number DosVersion : Number DosVersion : Number
Returns the major DOS version number.
See Also: DosVersionString, MinorDosVersion
Category: System
DosVersionString : String DosVersionString : String DosVersionString : String
Returns the DOS version number as a 4 character string. This function
always returns 2 places past the decimal point. The form of the string
is: #.##
Example
Writeln DosVersionString ;prints 4.01
See Also: DosVersion, MinorDosVersion
Category: System, String
DosWindow (on/off) DosWindow (on/off) DosWindow (on/off)
When you set DosWindow on, MarxMenu will not drop out of the menu system
when you use the Execute command. It will give you a display of the DOS
screen within the current window. The program you execute must be a
well-behaved program like DIR or COPY or some of the other DOS commands
that talk to the screen through standard file handles.
Category: Execution
Computer Tyme MarxMenu Users Manual Page 64
_______________________________________________________________
DoubleLineBox DoubleLineBox DoubleLineBox
Selects double line box.
See Also: SingleLineBox, BlockBox, CustomBox, NoBoxBorder
Category: Display
DrawBox (column,row,width,height) DrawBox (column,row,width,height) DrawBox (column,row,width,height)
Draws a box on the screen. The (column) and (row) are the upper left
corner, (width) and (height) is the box size.
Example:
Explode On
Shadow On
DoubleLineBox
BoxHeaderColor( Yellow,Red )
BoxBorderColor( White, Red )
BoxInsideColor( Yellow,Red )
InverseColor( Black, Gray )
CapsColor( Black, Red )
BoxHeader = ' << Main Menu >> '
DrawBox( 30,10,40,8 )
DrawBox also creates a logical layer for several display variables.
These variable include TextColor, InverseColor, CapsColor. It is
important to use these color control commands AFTER the DrawBox command
in order to properly restore the colors of the previous DrawBox.
If you call up a box and when it finishes it messes up the colors of the
previous box, you probably used color control commands BEFORE the
DrawBox instead of AFTER.
Category: Display
Drives : Number Drives : Number Drives : Number
Returns the number of drives. This includes drive names that can be
substituted. Most of the time the answer is 5. This relates to your
LastDrive = command in your CONFIG.SYS file.
Category: System
DvAppNumber : Number DvAppNumber : Number DvAppNumber : Number
Returns the DesqView application number or window number.
Category: DesqView
DvFrame (Handle,On/Off) DvFrame (Handle,On/Off) DvFrame (Handle,On/Off)
Turns the DesqView border frame on or off.
Category: DesqView
Computer Tyme MarxMenu Users Manual Page 65
_______________________________________________________________
DvFreeze (Handle) DvFreeze (Handle) DvFreeze (Handle)
Freezes a program. The program stops executing.
See Also: DvUnFreeze, DvPifExecute, DvLastHandle
Category: DesqView
DvHide (Handle) DvHide (Handle) DvHide (Handle)
Hides all output from program making it invisible. The program still
continues to run.
See Also: DvUnHide
Category: DesqView
DvKillTask (Handle) DvKillTask (Handle) DvKillTask (Handle)
Kills a program running under DesqView. The handle is the one returned
be DvPifExecute in DvLastHandle.
See Also: DvPifExecute
Category: DesqView
DvLastHandle : Number DvLastHandle : Number DvLastHandle : Number
Returns a number that is associated with a program running under
DesqView. This number is used to control other programs running under
DesqView. It is set by DvPifExecute.
See Also: DvPifExecute
Category: DesqView
DvLoaded : Boolean DvLoaded : Boolean DvLoaded : Boolean
Returns true if DesqView is loaded.
Category: DesqView
DvMoveWindow (Handle,X,Y) DvMoveWindow (Handle,X,Y) DvMoveWindow (Handle,X,Y)
Moves DesqView window upper left corner to position X,Y.
Category: DesqView
DvMyHandle : Number DvMyHandle : Number DvMyHandle : Number
Returns the DesqView handle of the current process.
See Also: DvLastHandle
Category: DesqView
Computer Tyme MarxMenu Users Manual Page 66
_______________________________________________________________
DvPifExecute (Pif File) DvPifExecute (Pif File) DvPifExecute (Pif File)
Executes another program under DesqView in another window. MarxMenu
stays resident in its original window. The window executes according to
the contents of the DesqView PIF file. The PIF file can be specified by
using the full name. If you leave of the extension, MarxMenu assumes the
extension DVP. If you pass a two character name, like the two characters
in the DesqView menus, then MarxMenu will add -PIF.DVP to the name. If
the PIF file is on the path, MarxMenu will find it.
Warning! DesqView must be loaded to run this command.
Example:
DvPifExecute 'BD'
DvPifExecute 'BD-PIF' ;These all execute Big DOS
DVPifExecute 'BD-PIF.DVP'
The task handle is loaded into a variable named DvLastHandle. When the
program starts, it becomes the current top program.
See Also: DvLoaded, DvLastHandle
Category: DesqView
DvResizeWindow (Handle,Width,Height) DvResizeWindow (Handle,Width,Height) DvResizeWindow (Handle,Width,Height)
Changes the size of a DesqView window.
Category: DesqView
DvSetBottom (Handle) DvSetBottom (Handle) DvSetBottom (Handle)
Sets the program associated with the handle to the bottom of the task
stack.
See Also: DvSetTop
Category: DesqView
DvSetTop (Handle) DvSetTop (Handle) DvSetTop (Handle)
Sets the program associated with the handle to be the top running task.
Using DvMyHandle allows MarxMenu to regain control after starting
another task.
Example:
DvSetTop (DvMyHandle)
See Also: DvSetBottom, DvLastHandle
Category: DesqView
Computer Tyme MarxMenu Users Manual Page 67
_______________________________________________________________
DvUnFreeze (Handle) DvUnFreeze (Handle) DvUnFreeze (Handle)
UnFreezes a program. The program starts executing again.
See Also: DvFreeze, DvPifExecute, DvLastHandle
Category: DesqView
DvUnHide (Handle) DvUnHide (Handle) DvUnHide (Handle)
Reverses the effect of DvHide making program output visable again.
See Also: DvHide
Category: DesqView
Else Else Else
Starts lines executed if a condition is not true.
See Also: If Then Endif
Category: Conditional
EndComment EndComment EndComment
Ends a comment block.
See Also: Comment
Category: Misc
EndIf EndIf EndIf
Ends an if statement.
See Also: If Else Then
Category: Conditional
EndLoop EndLoop EndLoop
Ends a loop statement.
See Also: Loop LoopIndex LoopLimit
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 68
_______________________________________________________________
EndOfFile (FileVar) : Boolean EndOfFile (FileVar) : Boolean EndOfFile (FileVar) : Boolean
Returns True if you are at the end of the file.
Example:
Var In
FileAssign (In,'C:\NOTES\READ.ME')
FileOpen (In)
While not EndOfFile (In)
Writeln (FileReadLn (In))
EndWhile
FileClose (In)
Category: File
EndProc EndProc EndProc
Ends a Procedure.
See Also: Procedure Return
Category: Misc
EndWhile EndWhile EndWhile
Ends a While statement.
See Also: While
Category: Conditional
EnvFree : Number EnvFree : Number EnvFree : Number
Returns the free space in the selected environment.
Category: Environment
EnvSize : Number EnvSize : Number EnvSize : Number
Returns the size of the selected environment.
Example:
if EnvSize < 20
Writeln ('Your envrionment size is less than 20 bytes!!')
endif
Category: Environment
EraseTopWindow EraseTopWindow EraseTopWindow
Erases the last window created with DrawBox.
See Also: EraseWindow
Category: Display
Computer Tyme MarxMenu Users Manual Page 69
_______________________________________________________________
EraseWindow (Number) EraseWindow (Number) EraseWindow (Number)
Erases a window by number. This allows you to erase a window that is not
the top window.
See Also: CurrentWindow, SetTopWindow, EraseTopWindow
Category: Display
Execute (command string) Execute (command string) Execute (command string)
This allows you to execute a program without dropping out of MarxMenu.
MarxMenu remains resident in memory and takes up approximately 50k. No
batch file will be created by MarxMenu.
This is handy if you have a small program you want to run from the menu
but don't want to allow for the time required by MarxMenu to create and
run a batch file. You can also execute some programs in a MarxMenu
window (See Also: DosWindow). You can also execute a program and examine
the return code.
This command can be placed in a progression of menu commands without any
special handling. Under an OnKey statement, you will need to enclose the
command between a begin and end statement.
Example:
OnKey 'D'
|UseCommand Off
|Execute 'C:\DM.COM' ;Note the COM extension is required here.
Note: If UseCommand is True or On, MarxMenu will load COMMAND.COM to
execute your command. If UseCommand is False, MarxMenu will execute your
file directly without COMMAND.COM. Using COMMAND.COM will execute
slightly slower, use 3.5k more ram, and allow you to use command lines
just like you would from the DOS prompt.
If you set UseCommand to off, you will have to include the COM or EXE
extension in the name. If you don't include the extension, MarxMenu will
automatically override UseCommand and load the command processor.
COMMAND.COM is required when running internal DOS commands like COPY or
DIR. It is also required to run batch files.
When UseCommand is off, MarxMenu will search the PATH for the executable
file if it isn't in the current directory.
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.
Computer Tyme MarxMenu Users Manual Page 70
_______________________________________________________________
The PauseAfterExecute (On/Off) allows you to have a pause like the Pause
command in batch files. That way you can read the screen before it
restores the MarxMenu screen. MarxMenu will display "Press any key to
return to MarxMenu."
Category: Execution
ExistDir (directory) : Boolean ExistDir (directory) : Boolean ExistDir (directory) : Boolean
Used to test whether or not a DIRECTORY exists.
See Also: UseCommand, DosWindow, PauseAfterExecute, ClearScreenFirst
Category: File
ExistFile : Boolean ExistFile : Boolean ExistFile : Boolean
Used to test whether or not a FILE exists.
Category: File
ExistOnPath (string) : String ExistOnPath (string) : String ExistOnPath (string) : String
Used to search the existing paths for the command to be executed by
Execute or other function. The program variable must include the full
filename.
Example:
OnKey 'D'
|Execute(ExistOnPath('DM.COM'))
If the file is not found, a null string is returned.
Category: File
ExitCode ExitCode ExitCode
This can be set so MarxMenu will return an ErrorLevel that can be used
in a batch file.
Example:
ExitCode = 100
When MarxMenu exits it will use ErrorLevel 100.
Category: Execution
ExitMenu ExitMenu ExitMenu
Causes MarxMenu to exit.
Category: Execution
Computer Tyme MarxMenu Users Manual Page 71
_______________________________________________________________
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.
Example:
Extension('MARXMENU.EXE') ;returns EXE
See Also: NamePart, PathPart, FilePart
Category: String
False : Boolean False : Boolean False : Boolean
Returns boolean False.
Category: Boolean
Feb : Number Feb : Number Feb : Number
February, Returns the number 2.
Category: Time
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 72
_______________________________________________________________
FileAssign (FileVar,String) FileAssign (FileVar,String) FileAssign (FileVar,String)
Assigns a file variable to a file name. Files must be given a name
before they can be accessed.
Example: FileAssign(BatFile,'MARX.BAT')
BatFile is a variable and after the FileAssign, it becomes a file
variable. All access to the file is done using the file variable.
If an empty string is passed as the file name, MarxMenu will use the
standard console file handles.
Category: File
FileAttr (string) : Number FileAttr (string) : Number FileAttr (string) : Number
Returns file attribute. Can be used on directories also.
Category: File
FileClose (FileVar) FileClose (FileVar) FileClose (FileVar)
Closes a file and deallocates the memory space used by the file
variable.
See Also: FileOpen
Category: File
FileCreate (FileVar) FileCreate (FileVar) FileCreate (FileVar)
Creates a new file. If the file exists, it overwrites the old one.
FileCreate opens the file for output. Do not use FileOpen with
FileCreate.
Category: File
FileDate (string) : Number FileDate (string) : Number FileDate (string) : Number
Returns file date as 32 bit integer. See Also: DOS manual for date
structure.
Category: File
FileFlush (FileVar) FileFlush (FileVar) FileFlush (FileVar)
Writes any information that is in the file buffers to disk.
Category: File
FileLog (FileVar,String) FileLog (FileVar,String) FileLog (FileVar,String)
This is like FileWriteln except that it always seeks the end of the file
and flushes its buffers after each write. Used for usage tracking.
Category: File
Computer Tyme MarxMenu Users Manual Page 73
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 74
_______________________________________________________________
FileResult : Number FileResult : Number FileResult : Number
Returns result code from last file IO. Result codes are the same as
Turbo Pascal IOResult codes. These codes usually match the errors
returned in the AX register of DOS commands. 0 indicates no problem.
Category: File
FileSeek (FileVar,Number) FileSeek (FileVar,Number) FileSeek (FileVar,Number)
Moves the file pointer to a specified place in the file.
Category: File
FileSize (string) : Number FileSize (string) : Number FileSize (string) : Number
Returns size of file in bytes.
Category: File
FileWrite (FileVar,String) FileWrite (FileVar,String) FileWrite (FileVar,String)
Writes text to a file.
Category: File
FileWriteln (FileVar,String) FileWriteln (FileVar,String) FileWriteln (FileVar,String)
Writes text to a file with a carriage return and a line feed.
See Also: FileOpen
Category: File
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
Computer Tyme MarxMenu Users Manual Page 75
_______________________________________________________________
ForceExtension (String,Ext) : String ForceExtension (String,Ext) : String ForceExtension (String,Ext) : String
This command forces a file extension on a string.
Example:
St = ForceExtension('MAIN.MNU','MRX')
This sets St equal to MAIN.MRX
Category: String
Fraction (Real) : Real Fraction (Real) : Real Fraction (Real) : Real
Returns the fractional part of a real.
Category: Math, Float
FreeDiskSpace <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
Fri : Number Fri : Number Fri : Number
Friday, Returns the number 5.
Category: Time
GotoXY (column,row) GotoXY (column,row) GotoXY (column,row)
Move cursor to location column,row in current box.
Category: Display
Computer Tyme MarxMenu Users Manual Page 76
_______________________________________________________________
Green : Number Green : Number Green : Number
Returns the number 2.
Category: Color
Grey : Number Grey : Number Grey : Number
Returns the number 7.
Category: Color
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
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
IdelProgram : Procedure IdelProgram : Procedure IdelProgram : Procedure
IdelProgram 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 IdelProgram to
the Loc of the procedure you want to run as follows:
Example:
IdelProgram = Loc MyProcedure
Note: Do not use parentheses around MyProcedure.
When writing MyProcedure make it as short and quick as possible. As of
now, MyProcedure is called continously while there is no keyboard input.
You can also use a loop in it as follows.
Computer Tyme MarxMenu Users Manual Page 77
_______________________________________________________________
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
See Also: Run, Loc
Category: Execution
If If If
Used for program control.
Usage:
IF (condition) THEN (statement)
IF (condition)
(statement)
(statement)
ELSE
(statement)
(statement)
ENDIF
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 78
_______________________________________________________________
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
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.
Computer Tyme MarxMenu Users Manual Page 79
_______________________________________________________________
Changing an include file does not cause MarxMenu to recompile
automatically like changing the MNU does. You will have to force it to
compile your menus.
This can be done several ways. You can type MARXCOMP (menu) or you can
just type DEL *.MRX which will cause all the menus to recompile the next
time they are run.
Category: Misc
InputString (String) InputString (String) InputString (String)
Preloads a string for the Readln command. The next Readln will have the
InputString on the screen for you to edit or accept. Once Readln
executes, InputString is cleared to a blank string.
Example:
InputString = ReadEnv('USERNAME')
YourName = Readln
Category: Keyboard, String
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
Computer Tyme MarxMenu Users Manual Page 80
_______________________________________________________________
InverseColor (forecolor,backcolor) InverseColor (forecolor,backcolor) InverseColor (forecolor,backcolor)
Sets colors for inverse bar used with UseArrows command.
Category: Color
Jan : Number Jan : Number Jan : Number
January, Returns the number 1.
Category: Time
Jul : Number Jul : Number Jul : Number
July, Returns the number 7.
Category: Time
Jun : Number Jun : Number Jun : Number
June, Returns the number 6.
Category: Time
Jump (menu) Jump (menu) Jump (menu)
Jumps to another menu and does not return to original menu.
Category: Execution
KbdReady : Boolean KbdReady : Boolean KbdReady : Boolean
Returns true if Key is pressed.
Category: Keyboard
KeySave : String KeySave : String KeySave : String
Stores your keystrokes that you pressed to get to the menu level where
you are at. KeySave is passed to DOS using the SET KSV= command to store
your position in the menu system. To make this work, you must execute
SavePosition On.
This variable can be set by you to force MarxMenu to return to a place
in the menu other than where you are. This allows MarxMenu to suggest a
next step.
See Also: SavePosition
Category: String, Environment, Execution
KeyFromMouse : Boolean KeyFromMouse : Boolean KeyFromMouse : Boolean
Normally mouse activity is translated into keystrokes. This variable is
set to true if the keystroke came from the mouse.
Category: MouseControl
Computer Tyme MarxMenu Users Manual Page 81
_______________________________________________________________
KillMusic KillMusic KillMusic
This command stops the music and de-allocates the memory used by the
music buffer.
Category: Music
LastKey : String LastKey : String LastKey : String
LastKey returns the last key that was typed at the keyboard. This can be
used after a Readln to determine if the ESC key was pressed or perhaps
the up or down arrow keys.
Sometimes after the press of an ESC key, MarxMenu wants to exit more
levels than you want it to. This can be controlled by setting LastKey =
' ' to stop the abort process.
See Also: Readln
Category: String
LBlue : Number LBlue : Number LBlue : Number
Light Blue, Returns the number 9.
Category: Color
LCyan : Number LCyan : Number LCyan : Number
Light Cyan, Returns the number 11.
Category: Color
Left (string,count) : String Left (string,count) : String Left (string,count) : String
Returns string starting at the beginning for count characters.
Example: Left('ABCDEF',3) returns 'ABC'
Category: String
Length (string) : Number Length (string) : Number Length (string) : Number
Returns the length of the string.
Example: Length('ABCD') returns 4.
Category: String
LGreen : Number LGreen : Number LGreen : Number
Light Green, Returns the number 10.
Category: Color
Computer Tyme MarxMenu Users Manual Page 82
_______________________________________________________________
LGrey : Number LGrey : Number LGrey : Number
Light Grey, Returns the number 8.
Category: Color
LMag : Number LMag : Number LMag : Number
Light Magenta, Returns the number 13.
Category: Color
LMagenta : Number LMagenta : Number LMagenta : Number
Light Magenta, Returns the number 13.
Category: Color
Ln (Real) : Real Ln (Real) : Real Ln (Real) : Real
Returns the Natural Logarithm of a real.
Category: Math, Float
Loc (Procedure) Loc (Procedure) Loc (Procedure)
This returns the location of a procedure for storing in a variable. The
variable is later executed using the Run command.
See Also: Run
Category: Misc
LockWord (word) LockWord (word) LockWord (word)
Sets a default word for the console activated keyboard lock. When the
screen goes blank, the user has to type the LockWord to unblank the
screen. This is a security feature so that if a user leaves the menu
unattended, it prevents others from tampering with the system.
See Also: LogoffTime, BlankTime
Category: Display
Logoff Logoff Logoff
Logoff logs you off the network the same way that LogoffTime does except
it does it immediately. See LogoffTime for details as to how.
See Also: LogoffTime
Category: Execution
Computer Tyme MarxMenu Users Manual Page 83
_______________________________________________________________
LogoffTime : Number LogoffTime : Number LogoffTime : Number
MarxMenu supports automatic logoff after a number of minutes of
inactivity set by LogoffTime. This only has effect while you are in the
menu and not while an application is running. It is set as follows:
LogoffTime = 5 ;sets time to 5 minutes
Setting LogoffTime to 0 disbles this feature.
When the time to logoff occurs, MarxMenu will first look for a batch
file in the \LOGIN directory called OFF.BAT. If it doesn't find it,
MarxMenu will look for OFF.BAT on the PATH. If this isn't found,
MarxMenu will look for LOGOFF.EXE. If this isn't found, then MarxMenu
will look for LOGOUT.COM.
LOGOFF.EXE and LOGOUT.COM are executed by stuffing the keyboard buffer.
The best way to use this feature is to create an OFF.BAT file in your
\LOGIN directory or on the PATH.
See Also: LockWord
Category: Execution
Loop Loop Loop
MarxMenu has a looping structure that lets you execute a piece of code a
specific number of times. It is used as follows:
Example:
Loop 8
Writeln 'Pass Number ' LoopIndex
EndLoop
You start with LOOP (Number) which specifies the number of times to
execute the code between LOOP and ENDLOOP. There are 2 variables
available here for loop control. LoopIndex starts at 1 and is
incremented at each EndLoop. When LoopIndex becomes greater than
LoopLimit, the loop exits. LoopIndex and LoopLimit refer to the
innermost loop.
As loops are nested LoopIndexes and LoopLimits are kept in two arrays;
LoopIndexStack and LoopLimitStack. There is also a variable called
LoopLevel which points to the current loop parameters.
Thus:
LoopIndex is the same as LoopIndexStack[LoopLevel]
LoopLimit is the same as LoopLimitStack[LoopLevel]
You may therefore access outer loop parameters through the loop stacks.
For instance LoopIndexStack[LoopLevel - 1] would refer to the second
innermost loop index. LoopIndexStack[1] refers to the outermost loop.
Computer Tyme MarxMenu Users Manual Page 84
_______________________________________________________________
The loop variables can be read and written to so you can adjust the
looping parameters while inside the loop. You can even adjust the
parameters of outer loops.
See Also: EndLoop LoopIndex LoopLimit
Category: Conditional
LoopIndex LoopIndex LoopIndex
Returns the loop you are in.
See Also: Loop EndLoop LoopLimit
Category: Conditional
LoopLimit LoopLimit LoopLimit
Returns the upper limit of the loop you are in.
See Also: Loop EndLoop LoopIndex
Category: Conditional
LRed : Number LRed : Number LRed : Number
Light Red returns the number 12.
Category: Color
MachineName : String MachineName : String MachineName : String
This reads or sets the MachineName for NetBios networks.
Example:
MachineName = IBM ;sets the MachineName
Writeln MachineName ;displays the MachineName
Category: Novell
Mag : Number Mag : Number Mag : Number
Magenta, Returns the number 5.
Category: Color
Magenta : Number Magenta : Number Magenta : Number
Magenta, Returns the number 5.
Category: Color
Mar : Number Mar : Number Mar : Number
March, Returns the number 3.
Category: Time
Computer Tyme MarxMenu Users Manual Page 85
_______________________________________________________________
MarxVersion : String MarxVersion : String MarxVersion : String
Returns the version number of the MarxMenu you are running.
Category: String
MasterEnvironment MasterEnvironment MasterEnvironment
MasterEnvironment selects the Master Environment for use with
environment access commands.
See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment
Category: Environment
Max (Num,Num) : Num Max (Num,Num) : Num Max (Num,Num) : Num
Returns the largest of two numbers or strings.
Category: Math, String, Float
May : Number May : Number May : Number
May, Returns the number 5.
Category: Time
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
Computer Tyme MarxMenu Users Manual Page 86
_______________________________________________________________
MemW (seg,ofs) : Number MemW (seg,ofs) : Number MemW (seg,ofs) : Number
Returns the word at memory location seg:ofs or lets you write to the
byte at seg:ofs.
Example:
X = MemW(40,5) ;reads memory into X
MemW(40,5) = X ;writes X into memory
Category: Memory
MenuKeyBuffer MenuKeyBuffer MenuKeyBuffer
This is an internal MarxMenu variable. It is where the environment
variable KSV= is read. Characters in this string variable are treated as
if someone had typed them from the keyboard.
This variable can be set to blank in order to override the effects of
SET KSV= or can be set to a different value in order to automatically
make selections as if they were typed in.
See Also: SavePosition, KeySave
Category: Keyboard
Mid (string,pos,count) : String Mid (string,pos,count) : String Mid (string,pos,count) : String
Returns a string starting at pos for count.
Example:
Mid('ABCDEFG',2,3) returns 'CDE'
Category: String
Min (Num,Num) : Num Min (Num,Num) : Num Min (Num,Num) : Num
Returns the smallest of two numbers or strings.
Category: Math, String, Float
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
Computer Tyme MarxMenu Users Manual Page 87
_______________________________________________________________
MinuteOf (Date) : Number MinuteOf (Date) : Number MinuteOf (Date) : Number
Returns the minute of a date. If Date is passed as a string it is
converted automatically.
See Also: TimeOf, BadDate
Category: Time
Mod : Operator Mod : Operator Mod : Operator
Returns the remainder of the division of two numbers.
Category: Math
ModifyPath ModifyPath ModifyPath
The MarxMenu directory should be in the search path. This is because if
you change directories, MarxMenu may not be able to find the menu files.
MarxMenu will now test the PATH= environment variable before it writes
the batch file to execute a program. If the MarxMenu path is not
included, MarxMenu will add the path to the Master Environment if it
can.
If for some reason you don't want to allow MarxMenu to modify the master
environment, use the command:
ModifyPath Off
Category: Environment
Mon : Number Mon : Number Mon : Number
Monday, Returns the number 1.
Category: Time
Mono : Number Mono : Number Mono : Number
Returns the number 7. Relates to the DOS Mode MONO command.
Category: Video
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
Computer Tyme MarxMenu Users Manual Page 88
_______________________________________________________________
Mouse Mouse Mouse
MarxMenu normally uses the mouse if present. If you don't want to use
the mouse you can use the command:
Mouse Off
To turn the mouse back on type:
Mouse On
The mouse is actually switched on and off at the point when MarxMenu
waits at the keyboard for a keypress.
Mouse Sensitivity can be set for individual workstations on a network by
setting environment variables MouseX and MouseY as follows:
Set MouseX=15
Set MouseY=25
See Also: MouseHorizontal, MouseVertical
Category: MouseControl
MouseHorizontal (Number) MouseHorizontal (Number) MouseHorizontal (Number)
Controls the horizontal sensitivity of the mouse. The larger the number,
the less sensitive the mouse. Default is 25.
See Also: MouseVertical, Mouse
Category: MouseControl
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
Computer Tyme MarxMenu Users Manual Page 89
_______________________________________________________________
MxCmd : String MxCmd : String MxCmd : String
This is an internal string variable that it written to the environment
variable MXCMD. This variable can be written to control what MarxMenu
will write to the Shell Environment. If this variable is written to, it
overrides anything that MarxMenu automatically writes.
Example:
OnKey 'A'
|MxCmd = 'SHUTDOWN.BAT'
|ExitMenu
Category: Environment, String, Execution
NamePart (String) : String NamePart (String) : String NamePart (String) : String
Returns the name part of a file name.
Example:
NamePart ('C:\MARX\MARXMENU.EXE') ;returns MARXMENU
See Also: Extension, PathPart, FilePart
Category: String
NetworkVersion : Boolean NetworkVersion : Boolean NetworkVersion : Boolean
Returns true if you are running the network version of MarxMenu.
Category: Misc
NextWord (String) : String NextWord (String) : String NextWord (String) : String
This command returns the next logical word of a string variable and
removes the string from the original string.
Example:
StringA = 'one two three'
StringB = NextWord(StringA)
StringB contains 'one'
StringA contains 'two three'
Category: String
No : Boolean No : Boolean No : Boolean
Returns the boolean false.
Category: Boolean
Computer Tyme MarxMenu Users Manual Page 90
_______________________________________________________________
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
Nov : Number Nov : Number Nov : Number
November, Returns the number 11.
Category: Time
NovAccountExpDate (UserName) : Date NovAccountExpDate (UserName) : Date NovAccountExpDate (UserName) : Date
Returns the Novell account expiration date. You must be logged in to be
able to read this.
Example:
DaysToExpire = NovAccountExpDate(UserName) - Today / SecondsInDay
Category: Novell, Time
Computer Tyme MarxMenu Users Manual Page 91
_______________________________________________________________
NovAttach (Server) NovAttach (Server) NovAttach (Server)
NovAttach is used to create a software link between you and a server,
usually a second server. It must be followed by a NovLogin command to
log you into the server.
See Also: NovDetach
Category: Novell
NovChangePassword (OldPassword,NewPassword) NovChangePassword (OldPassword,NewPassword) NovChangePassword (OldPassword,NewPassword)
Changes the novell users password from OldPassword to NewPassword.
Category: Novell
NovCloseSemaphore (Name) NovCloseSemaphore (Name) NovCloseSemaphore (Name)
This closes semaphore Name. If there are no other users using this
semaphore, it is deleted.
Category: Novell
NovConnection : Number NovConnection : Number NovConnection : Number
This returns the logical connection number to the network. A zero
indicates that you are not connected.
Category: Novell
NovConsoleOperator : Boolean NovConsoleOperator : Boolean NovConsoleOperator : Boolean
This returns true if the user has Console Operator priviledges. This can
come in handy when you are trying to determine who gets access to the
command line.
Category: Novell
NovDefaultServer : String NovDefaultServer : String NovDefaultServer : String
Returns the name of the default file server.
Category: Novell
NovDetach (Server) NovDetach (Server) NovDetach (Server)
This is used to drop the connection to a server.
See Also: NovAttach
Category: Novell
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
Computer Tyme MarxMenu Users Manual Page 92
_______________________________________________________________
NovGroups (Array) NovGroups (Array) NovGroups (Array)
Fills array with list of all groups.
See Also: NovUsersLoggedIn, NovUsers, NovPrintQueues, NovServers
Category: Novell
NovInGroup (Group) : Boolean NovInGroup (Group) : Boolean NovInGroup (Group) : Boolean
Return true if you are in the group.
Category: Novell
NovLogin (Name,Password) NovLogin (Name,Password) NovLogin (Name,Password)
This logs you into a file server. It is different than the Novell's
login program in that it doesn't execute any login scripts. It merely
gets you in. You can include the preferred server with the name.
Example:
NovLogin ('MARC','PASSWORD')
The variable NovResult is set to 0 if sucessful.
Note: If you are using Netware 3.0 or 3.1 you will have to go to the
server console and type:
SET ALLOW UNENCRYPTED PASSWORDS = ON
Category: Novell
NovLoginName (Connection) : String NovLoginName (Connection) : String NovLoginName (Connection) : String
This returns the login name of the user at any specified connection.
This can also be used to see who else is on the network.
Category: Novell
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
Computer Tyme MarxMenu Users Manual Page 93
_______________________________________________________________
NovMapDrive (Drive,Directory) NovMapDrive (Drive,Directory) NovMapDrive (Drive,Directory)
This will map a drive letter to a directory like the Novell MAP
command does. You may specify volume names and server names.
Example:
NovMapDrive ('J','TYME2/SYS:PUBLIC\DOS')
Mapping a drive to a nul string ('') deletes the drive map.
Category: Novell
NovMyLoginName : String NovMyLoginName : String NovMyLoginName : String
This returns the login name of the user.
Category: Novell
NovMyPassword (Password) : Boolean NovMyPassword (Password) : Boolean NovMyPassword (Password) : Boolean
Novell won't let you read the password, but it will let you guess and
tell you if you're right. This routine returns true if the password
passed is the correct password.
Category: Novell
NovOpenSemaphore (Name,Value) NovOpenSemaphore (Name,Value) NovOpenSemaphore (Name,Value)
This opens semaphore Name and assigns it an initial value. If the
semaphore already exists, it does nothing.
Category: Novell
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
Category: Novell, Time
NovPreferredServer : String NovPreferredServer : String NovPreferredServer : String
Returns the name of the preferred file server. This is set with the
NovSetPreferredServer command.
Category: Novell
NovPrimaryServer : String NovPrimaryServer : String NovPrimaryServer : String
Returns the name of the primary file server. This is the one you first
logged into.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 94
_______________________________________________________________
NovPrintQueues (Array) NovPrintQueues (Array) NovPrintQueues (Array)
Fills array with list of all print Queues.
See Also: NovUsersLoggedIn, NovUsers, NovGroups, NovServers
Category: Novell, Array, Printer
NovReadGroups (Name,Array) NovReadGroups (Name,Array) NovReadGroups (Name,Array)
This reads all the groups that Name belongs to and puts them into an
array.
Category: Novell, Array
NovReadSecurityEquals (Name,Array) NovReadSecurityEquals (Name,Array) NovReadSecurityEquals (Name,Array)
This reads all the security equivalences that Name belongs to and puts
them into an array. (This includes groups).
Category: Novell, Array
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
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 95
_______________________________________________________________
NovScanProperties (Array, Object, ObjectType) NovScanProperties (Array, Object, ObjectType) NovScanProperties (Array, Object, ObjectType)
NovScanProperties reads the properties (not the values) into an array.
You also have to pass the object type.
Novell Object Types:
1 - User
2 - Group
3 - Print Queue
4 - File Server
5 - Job Server
6 - Gateway
7 - Print Server
Example:
var Properties
NovScanProperties (Properties,NovMyLoginName,1)
Loop NumberOfElements(Properties)
Writeln(Properties[LoopIndex])
EndLoop
Category: Novell, Array
NovSetPreferredServer (Server) NovSetPreferredServer (Server) NovSetPreferredServer (Server)
Sets the preferred file server. Passing a '' will switch you back to the
default or primary file server.
See Also: NovSetPrimaryServer
Category: Novell
NovSetPrimaryServer (Server) NovSetPrimaryServer (Server) NovSetPrimaryServer (Server)
The primary file server is the one that execures your login scripts. It
can also be set using the NovSetPrimaryServer command.
See Also: NovSetPreferredServer
Category: Novell
NovSignalSemaphore (Name) NovSignalSemaphore (Name) NovSignalSemaphore (Name)
This increments the value of a semaphore. It is used to indicate that
you are done with a resource and makes it available for the next user.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 96
_______________________________________________________________
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.
Category: Novell
NovUserInGroup (Name,Group) : Boolean NovUserInGroup (Name,Group) : Boolean NovUserInGroup (Name,Group) : Boolean
This is used to test if other users are in a group. Returns true is the
specified user is in the specified group.
Category: Novell
NovUsers (Array) NovUsers (Array) NovUsers (Array)
Fills array with list of all users.
See Also: NovUsersLoggedIn, NovGroups, NovPrintQueues, NovServers
Category: Novell, Array
NovUsersLoggedIn (Array) NovUsersLoggedIn (Array) NovUsersLoggedIn (Array)
Fills array with list of all users that are currently logged in.
See Also: NovUsers, NovGroups, NovPrintQueues, NovServers
Category: Novell, Array
NovWaitOnSemaphore (Name) : Boolean NovWaitOnSemaphore (Name) : Boolean NovWaitOnSemaphore (Name) : Boolean
This decrements the value of a semaphore and if the value is zero or
more, returns true. If the value of the semaphore is negative, it
returns false. This is used to indicate that you are out of whatever you
are testing for.
Category: Novell
NumberOfElememts (array) : Number NumberOfElememts (array) : Number NumberOfElememts (array) : Number
This function returns the number of elements in the array.
Category: Array
Computer Tyme MarxMenu Users Manual Page 97
_______________________________________________________________
Now : Date Now : Date Now : Date
Returns the current moment as a date.
Category: Time
NumLock : Boolean NumLock : Boolean NumLock : Boolean
Returns true if Num Lock is on. This command can also set the Num Lock
on and off.
Example:
if NumLock then Write 'NumLock is On'
NumLock On ;Turns NumLock On
NumLock Off ;Turns NumLock Off
NumLock (by itself) turns NumLock On.
See Also: CapsLock, ScrollLock
Category: System
Oct : Number Oct : Number Oct : Number
October, Returns the number 10.
Category: Time
Off : Boolean Off : Boolean Off : Boolean
Returns False.
Category: Boolean
On : Boolean On : Boolean On : Boolean
Returns True.
Category: Boolean
Computer Tyme MarxMenu Users Manual Page 98
_______________________________________________________________
OnKey (char) OnKey (char) OnKey (char)
When char is selected, the line(s) following are executed up to the next
OnKey or end of file. This means that they are written to a BATCH file.
Example:
Onkey 'W'
cd\wordstar
ws
cd\menu
In the above example if 'W' is selected, MarxMenu will create a
temporary batch file containing all the lines under the OnKey command.
All the lines under an OnKey are written literally to the batch file
with few exceptions. All leading and trailing blanks are stripped.
String variables are evaluated and their value passed if the name of the
string variable starts with a '%'.
If a line begins with a '|' (vertical bar), the line is interpreted
rather than written to a batch file. If a '^Label' is used under an
OnKey, a jump is made to the 'Label' and interpretation is resumed. This
is commonly used to jump to a submenu.
Any OnKey statement that causes a batch file to be written to will cause
the menu to exit. MarxMenu normally will exit with ErrorLevel 0 unless
an ExitCode is set.
The first blank line under an OnKey ends what that OnKey command does.
Category: Conditional
OnScreenOnly (On/Off) OnScreenOnly (On/Off) OnScreenOnly (On/Off)
This allows you to restrict selections to only what is actually on the
screen. Hidden OnKey commands will not execute if this is set on. This
allows you to limit user selection to the choices on the screen.
See Also: OnKey
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 99
_______________________________________________________________
OpenPrinter OpenPrinter OpenPrinter
This command opens the printer device. It is not necessary to use this
command in that it is done automatically whenever you print. But, if you
are running under a multitasking shell like Windows, it will reserve the
printer for your task.
If the printer is locked, or if you have specified a file name that
can't be created, the variable FileResult will contain the DOS error
code (usually 5 for access denied). A FileResult of 0 indicates success.
See Also: ClosePrinter, FileResult
Category: Printer
OptionSwitch (String1,String2) : Boolean OptionSwitch (String1,String2) : Boolean OptionSwitch (String1,String2) : Boolean
This command tests if String1 contains the option switch String2. If it
does, it will remove the switch from String1.
Example:
String1 = 'Test /A/B/C'
HasB = OptionSwitch(String1,'B')
HasB will be true.
String1 will contain 'Test /A/C'
Category: String
Or : Operator Or : Operator Or : Operator
Returns logical Or if operators are boolean; or bitwise Or if operators
are numeric.
Category: Math, Boolean
Ord (Char) : Number Ord (Char) : Number Ord (Char) : Number
Returns the numeric value of an ascii character.
Category: String
OverKey : String OverKey : String OverKey : String
When using UseArrows, OverKey returns the character that selects the
item that the inverse bar is over.
This can be used with IdelProgram to display context sensitive help as
you move the inverse bar over different selections.
Category: String
Computer Tyme MarxMenu Users Manual Page 100
_______________________________________________________________
OverLay (MenuName) OverLay (MenuName) OverLay (MenuName)
Overlay loads another menu as if that menu were a procedure of the
current menu. After the overlaid menu exits, control is returned to the
calling menu at the next line after the overlay command.
Like the Chain command, Overlay is very fast and doesn't require
MarxMenu to be reloaded.
Example:
Overlay 'SUBMENU'
When using overlays, all variables declared as shared are accessable to
the main program and all overlays. The shared variables have to be the
same for all overlays.
See Also: Shared, Chain
Category: Execution
ParallelPorts : Number ParallelPorts : Number ParallelPorts : Number
Returns number of parallel ports.
Category: System
ParamStr (Num) : String ParamStr (Num) : String ParamStr (Num) : String
Returns the DOS parameter string from the command line. The 0 parameter
is MARXMENU.EXE. The 1 parameter is the name of the menu file you are
using. This is like the %1 %2 %3 ... in batch file parameters.
Category: String
ParentEnvironment ParentEnvironment ParentEnvironment
ParentEnvironment selects the parent environment for use with
environment access commands.
See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment MasterEnvironment
Category: Environment
Computer Tyme MarxMenu Users Manual Page 101
_______________________________________________________________
Password (Pswd,column,row) Password (Pswd,column,row) Password (Pswd,column,row)
This command opens up a password box at row and column. The user must
type the password correctly before the command will execute. The
password is case sensitive.
Example:
OnKey 'X'
|PassWord('shell',4,3)
COMMAND.COM
Category: Conditional
Path : String Path : String Path : String
Returns the current path.
Category: String
PathPart (String) : String PathPart (String) : String PathPart (String) : String
Returns the path part of a file name.
Example:
PathPart ('C:\MARX\MARXMENU.EXE') ;returns C:\MARX
See Also: Extension, NamePart, FilePart
Category: String
PauseAfterExecute (On/Off) PauseAfterExecute (On/Off) PauseAfterExecute (On/Off)
If on, this command causes the message "Press any key to return to
MarxMenu..." to appear after an execute command is executed.
See Also: Execute:
Category: Execution
Pi : Real Pi : Real Pi : Real
Returns the value of Pi to 18 digits.
Category: Math, Float
Computer Tyme MarxMenu Users Manual Page 102
_______________________________________________________________
PickFile (FileSpec,column,row,height) : String PickFile (FileSpec,column,row,height) : String PickFile (FileSpec,column,row,height) : String
Allows you to display a directory of files on the screen from a menu.
Normally used to display a list of files for the user to choose from.
Could be used in a command to load a word processor or database. Allows
selection of the file to be loaded by the word processor or database
program. The filename can be passed to a percent variable placed in the
batch file executing the application. See example files on MarxMenu
distribution disk.
Example: %FileName = PickFile('C:\WORDSTAR\*.DOC',3,4,17)
Notice: The use of a variable with a name that starts with a '%' allows
the choice to be passed to a batch file for execution.
The three numbers represent the column and row of the upper left corner
of the box and the height of the box. All DrawBox commands can be used
here to control the looks of the PickFile window. This includes the
BoxHeader command.
Category: String
PickMany(SourceArray,DestinationArray) PickMany(SourceArray,DestinationArray) PickMany(SourceArray,DestinationArray)
PickMany displays a string array in the current window and allows you to
choose as many lines as you want. The chosen lines go into
DestinationArray.
When the window appears, the space bar toggles the marked status of the
line. The right arrow sets the marked status and the left arrow resets
the marked status. Ctrl-Right-Arrow marks all lines, Ctrl-Left-Arrow
unmarks all lines. The return key accepts the selection and exits. The
ESC key aborts.
If using a mouse, the left button toggles the mark on the current line.
The right button accepts and exits.
If no selections are made, the DestinationArray is empty. If ESC is
pressed, the DestinationArray is left unchanged. You can test LastKey to
see what was pressed.
Category: String, Array
PickOne (Array) : String PickOne (Array) : String PickOne (Array) : String
This command displays an array in the current window and lets you pick a
line and returns the chosen line.
Category: String, Array
Computer Tyme MarxMenu Users Manual Page 103
_______________________________________________________________
PickPosition : Number PickPosition : Number PickPosition : Number
The variable PickPosition works with the PickOne command. PickPosition
returns the number of which element in the array was picked.
Category: String, Array
Port (number) : Number Port (number) : Number Port (number) : Number
Returns the value at the port or writes a number to a port.
Example:
X = Port(20) ;Reads port 20 into X
Port(20 = X ;Writes X to Port 20
Category: Memory
Pos (substring,string) : Number Pos (substring,string) : Number Pos (substring,string) : Number
Finds position of substring in string. If substring isn't found, Pos
returns 0.
Example:
pos('CD','ABCDE') returns 2
Category: String
Power (Real,Real) : Real Power (Real,Real) : Real Power (Real,Real) : Real
Raises a real to a given power.
Category: Math, Float
Pred (number) : Number Pred (number) : Number Pred (number) : Number
Returns number minus 1.
Category: Math
Print (string) Print (string) Print (string)
Prints string to the printer with no CR or LF. If there is an error
printing, the error is returned in FileResult.
Category: Printer
PrinterName (string) PrinterName (string) PrinterName (string)
Sets the file name for the printer to use. The default name is PRN.
Other common printer names include: LPT1, LPT2, LPT3, and AUX. You can
also use filenames to direct printer output to a file.
See Also: ClosePrinter
Category: Printer
Computer Tyme MarxMenu Users Manual Page 104
_______________________________________________________________
Println (String) Println (String) Println (String)
Prints string to the printer with CR and LF.
See Also: Print
Category: Printer
PrintScreen (On/Off) PrintScreen (On/Off) PrintScreen (On/Off)
Turns the print screen function on and off. Turning the print screen off
disables the print screen key. This can be used to prevent a computer
from locking up when the user kits the Print Screen key with no printer
attached.
Category: Printer
Procedure (name) Procedure (name) Procedure (name)
This word begins the definition of a newly named procedure. A procedure
is like a subroutine. Once the procedure is defined, all you have to do
to call the procedure is use its name. The procedure definition is
terminated by the command EndProc.
Example:
Procedure SelectFile
BoxHeaderColor ForeColor BackColor
BoxBorderColor Cyan Mag
BoxInsideColor Yellow Mag
InverseColor Yellow Red
%ExecSt = PickFile FileType 4 5 17
EndProc
Whenever we use the word SelectFile in the menu, all the lines of the
procedure SelectFile will execute.
See Also: EndProc, Return
Category: Misc
PullMenu (on/off) PullMenu (on/off) PullMenu (on/off)
Controls the behavior of pull down menus. Set to on if using
them. Default is Off.
Category: Display
Qualifier Qualifier Qualifier
Used to create qualifiers.
See Also: Var, Constant, Shared
Category: Variable
Computer Tyme MarxMenu Users Manual Page 105
_______________________________________________________________
Random : Number Random : Number Random : Number
The Random command returns random numbers between 0 and +2,147,483,647.
(2^31). The algorithm has been checked for good uniformity and takes
advantage of re-seeding itself from random events like the timer
interrupt and keyboard input.
Category: Math
ReadEnv (string) : String ReadEnv (string) : String ReadEnv (string) : String
Returns the environment string specified.
Example: PathString = ReadEnv('PATH')
See Also: SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
Category: Environment
ReadEnvironment (array) ReadEnvironment (array) ReadEnvironment (array)
Reads all environment variables into an array.
Example:
Var Env
ReadEnvironment( Env )
;Env[1] will be the first environment string and
;Env[NumberOfElememts(Env)] will be the last. A variable that is
;set is LongestLine. LongestLine contains the length of the
;longest string variable read.
Writeln( 'Your current environment variables are:' )
Loop( NumberOfElements( Env ) )
Writeln( Env[LoopIndex] )
EndLoop
Writeln
Writeln('Your Environment Size is :',Str(EnvSize))
Writeln('You are using :',Str(EnvSize-EnvFree),' bytes.')
Writeln('You have :,'Str(EnvFree),' bytes free.')
See Also: SetEnv ReadEnv ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
Category: Environment, Array
Computer Tyme MarxMenu Users Manual Page 106
_______________________________________________________________
ReadKey : String ReadKey : String ReadKey : String
Returns the character that is input from the keyboard.
Example:
Var Key
Repeat
Writeln( 'Press the <ESC> key to exit this program.' )
Key = ReadKey
Until Key = Esc
Category: Keyboard
Readln : String Readln : String Readln : String
Reads a string from the keyboard.
Example:
Customer.Name = Readln
Customer.Number = Value (Readln) ;Converts to an numerical value
Customer.State = UpperCase (ReadLn)
Category: Keyboard, String
ReadTextFile (FileName,Array) ReadTextFile (FileName,Array) ReadTextFile (FileName,Array)
This command reads a text file into a string array. It also sets the
variable LongestLine to the length of the longest line in the file.
Example:
Var Docs
ReadTextFile('MARXMENU.DOC',Docs)
;After the read, Docs[1] becomes the first line of the file.
;Docs[NumberOfElements(Docs)] becomes the last line.
Loop NumberOfElements(Docs)
; Convert each line to its uppercase equivalent
Docs[LoopIndex] = UpperCase Docs[LoopIndex]
EndLoop
;Save the newly formatted array
WriteTextFile ('NEWMM.DOC',Docs)
Do not use FileOpen with ReadTextFile.
The power of the ReadTextFile and WriteTextFile have expanded. You can
now load and save arrays of any variable types, multidimensional arrays,
and mixed array types. This includes strings, numbers, and booleans.
File variables are also stored. When a file variable is stored and
reloaded the FileAssign command is not necessary.
Category: File, Array
Computer Tyme MarxMenu Users Manual Page 107
_______________________________________________________________
Real (Integer) : Real Real (Integer) : Real Real (Integer) : Real
Returns the real equivalent of an integer.
Category: Math, Float
Reboot Reboot Reboot
Causes the computer to do a warm reboot.
Category: Execution
Red : Number Red : Number Red : Number
Returns the number 4.
Category: Color
ReleaseDate : String ReleaseDate : String ReleaseDate : String
Returns the MarxMenu Release Date.
Category: String
Repeat Repeat Repeat
Used for program control. Usage:
REPEAT
(statement)
(statement)
UNTIL (condition)
Example:
Var Key
Repeat
Key = ReadKey
If Key = 'A'
Bat( 'DOLIST.EXE' )
ExitMenu
EndIf
If Key = F1 Then Help
Until Key = Esc
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 108
_______________________________________________________________
ResizeWindow (Horizontal Vertical) ResizeWindow (Horizontal Vertical) ResizeWindow (Horizontal Vertical)
Changes the size of the top window. The horizontal and vertical numbers
are added to the current size. Use negative numbers to shrink the
window. The top left corner stays in the same place.
Example:
DrawBox 15 5 30 15
ResizeWindow 15 5
See Also: MoveWindow
Category: Display
Return (param,param,...) Return (param,param,...) Return (param,param,...)
Exits a procedure and optionally returns parameters to the calling
procedure. It can return as many parameters as you want as long as the
calling program uses the same number of parameters. Otherwise, you will
get an "Invalid number of parameters" error.
Example:
Procedure SmallRandomNumber
{Returns a random number between 1 and 100}
var SmallRand
SmallRand = Random mod 100
Return (SmallRand + 1)
EndProc
See Also: Procedure, EndProc
Category: Misc
ReturnCode : Number ReturnCode : Number ReturnCode : Number
When you use the Execute function, a ReturnCode value is fed into this
variable when you return to the menu. The code returned is the same as
what the DOS ErrorLevel would be. This will not work if you use the
UseCommand On function because COMMAND.COM would have been loaded and
the returncode would be lost.
Category: Execution
Right (string,count) : String Right (string,count) : String Right (string,count) : String
Returns right characters of string for length count.
Example: Right('ABCDEF',3) returns 'DEF'
Category: String
Computer Tyme MarxMenu Users Manual Page 109
_______________________________________________________________
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 110
_______________________________________________________________
Sat : Number Sat : Number Sat : Number
Saturday, Returns the number 6.
Category: Time
SavePosition (On/Off) SavePosition (On/Off) SavePosition (On/Off)
If SavePosition is On, MarxMenu will return to the last menu selection
you made when MarxMenu is re-entered. As you select menu layers your
keystrokes are stored in an internal string variable called KeySave. On
exit, MarxMenu writes KeySave to an environment variable KSV. On return
to MarxMenu, this variable is retrieved. The return point may be altered
by using the command KeySave = (string).
Another thing this points out is that environment variables can be used
to store information and allow MarxMenu to remember things from one
selection to another. Since MarxMenu doesn't stay memory resident, this
is the only way I have found to store information.
Category: Keyboard, Environment
ScreenHeight : Number ScreenHeight : Number ScreenHeight : Number
Returns number of rows of character on your screen.
Category: Display
ScreenWidth : Number ScreenWidth : Number ScreenWidth : Number
Returns number of columns of character on your screen.
Category: Display
ScrollLock : Boolean ScrollLock : Boolean ScrollLock : Boolean
Returns true if Scroll Lock is on. This command can also set the Scroll
Lock on and off.
Example:
if ScrollLock then Write 'ScrollLock is On'
ScrollLock On ;Turns ScrollLock On
ScrollLock Off ;Turns ScrollLock Off
ScrollLock (by itself) turns ScrollLock On.
See Also: CapsLock, NumLock
Category: System
Computer Tyme MarxMenu Users Manual Page 111
_______________________________________________________________
ScrollMove (On/Off) ScrollMove (On/Off) ScrollMove (On/Off)
This allows you to control whether or not the ScrollLock will allow you
to move the top window. Default is On.
Category: Display
Second : Number Second : Number Second : Number
Returns the current second.
Category: Time
SecondOf (Date) : Number SecondOf (Date) : Number SecondOf (Date) : Number
Returns the second of a date. If Date is passed as a string it is
converted automatically.
See Also: TimeOf, BadDate
Category: Time
SecondsInDay : number SecondsInDay : number SecondsInDay : number
Returns 86400
Category: Time
SecondsInHour : Number SecondsInHour : Number SecondsInHour : Number
Returns 3600
Category: Time
Security (on/off) Security (on/off) Security (on/off)
When security is on, Readln echos '*' instead of the letters that are
being typed. This is used for such things as entering passwords other
than using the password command.
Category: String
SelectPath : String SelectPath : String SelectPath : String
This command uses another program in the Computer Tyme DOS TOOLBOX
called Pick Directory to read a text into a variable. You must have
Computer Tyme Pick Directory for this feature to work.
Example:
OnKey 'B'
|%BackPath = SelectPath
cd %BackPath
backup c: a:
Category: String
Computer Tyme MarxMenu Users Manual Page 112
_______________________________________________________________
Sep : Number Sep : Number Sep : Number
September, Returns the number 9.
Category: Time
SerialPorts : Number SerialPorts : Number SerialPorts : Number
Returns number of serial ports.
Category: System
SetArraySize (Array,Size) SetArraySize (Array,Size) SetArraySize (Array,Size)
If the array is larger than Size the array is truncated. If it is
smaller, memory is allocated for the array.
Category: Array
SetEnv (String) SetEnv (String) SetEnv (String)
This is used to set environment strings. It can be used on the Current,
Parent, Master or Shell environment.
Example:
SetEnv ('PATH=C:\')
SetEnv ('COMSPEC=X:COMMAND.COM')
MarxMenu also allows you to select which environment you are working
with. This is done with the following commands.
CurrentEnvironment
ParentEnvironment
MasterEnvironment
ShellEnvironment
See Also: ReadEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
Category: Environment
Computer Tyme MarxMenu Users Manual Page 113
_______________________________________________________________
SetTopWindow (Number) SetTopWindow (Number) SetTopWindow (Number)
Selects a window by number making it the current window and moves it to
the top.
Example:
DrawBox ....
ThisWindow = CurrentWindow
DrawBox ....
DrawBox ....
SetTopWindow (ThisWindow)
See Also: CurrentWindow, RollWindow, SetWindowUnder
Category: Display
SetWindowUnder (Window1,Window2) SetWindowUnder (Window1,Window2) SetWindowUnder (Window1,Window2)
This command moves Window1 underneath Window2. This can be used to put a
window back in the stack after you use SetTopWindow.
See Also: CurrentWindow, SetTopWindow, RollWindow
Category: Display
Shadow (on/off) Shadow (on/off) Shadow (on/off)
Turn window shadows on/off.
Category: Display
ShadowColor (ForeColor,BackColor) ShadowColor (ForeColor,BackColor) ShadowColor (ForeColor,BackColor)
Sets the color of the shadow. There are actually two shadow colors.
MarxMenu stores different values for big shadows and small shadows.
See Also: BigShadow, SmallShadow, ShadowPosition, Shadow
Category: Color
ShadowPosition (number) ShadowPosition (number) ShadowPosition (number)
Selects the shadow position around the window. A zero (default) sets the
shadow position to the bottom right side. A one sets the shadow position
to the bottom left. Using ShadowPosition turns shadowing on so a Shadow
On command is not required.
See Also: Shadow, ShadowColor, BigShadow, SmallShadow
Category: Display
Computer Tyme MarxMenu Users Manual Page 114
_______________________________________________________________
Shared Shared Shared
The key word SHARED can be used to define variables just like VAR. Any
variable defined with SHARED is passed globally to and from overlays.
The important thing is that the Shared variables must be defined exactly
the same way between the overlays. There is also a pre-defined variable
called COMMON. Technically, Shared variables are qualifiers off of
COMMON.
See Also: Var, Constant, Qualifier
Category: Variable
ShellEnvironment ShellEnvironment ShellEnvironment
ShellEnvironment selects the environment of the last COMMAND.COM in
memory for use with environment access commands. This is usually the
same as the Master Environment.
More than one COMMAND.COM is loaded when you are running a shell under
WINDOWS or DESQVIEW. When using these programs, you will want to access
the Shell Envoronment instead of the Master Environment. The Shell
Environment is the one that will run batch files.
See Also: ReadEnv SetEnv ReadEnvironment MasterEnvironment
See Also: CurrentEnvironment ParentEnvironment
Category: Environment
Shl : Operator Shl : Operator Shl : Operator
Shift left, does a binary 32 bit shift left.
Category: Math
Shr : Operator Shr : Operator Shr : Operator
Shift right, does a binary 32 bit shift right.
Category: Math
Sin (Radians) : Real Sin (Radians) : Real Sin (Radians) : Real
Returns the Sine of a real.
Category: Math, Float
SingleLineBox SingleLineBox SingleLineBox
Selects single line box for menu borders.
See Also: DoubleLineBox, BlockBox, CustomBox, NoBoxBorder
Category: Display
Computer Tyme MarxMenu Users Manual Page 115
_______________________________________________________________
SmallShadow SmallShadow SmallShadow
Selects small shadow type.
See Also: BigShadow, ShadowPosition, ShadowColor
Category: Display
SortArray (Array) SortArray (Array) SortArray (Array)
SortArray will do an alphabetical sort on an array of strings.
Example: Sort a Text File
Usage: DIR|MARXMENU SORT|MORE
MARXMENU SORT INFILE OUTFILE
var SortBuf
ClearScreenOnExit Off
ReadTextFile (ParamStr(2),SortBuf)
SortArray(SortBuf)
WriteTextFile (ParamStr(3),SortBuf)
Category: Array
Sound (on/off) Sound (on/off) Sound (on/off)
Turn sound effects on/off.
Category: Display
Sqr (Real) : Real Sqr (Real) : Real Sqr (Real) : Real
Returns the Square Root of a real.
Category: Math, Float
StandardIO StandardIO StandardIO
This tells MarxMenu to use standard Input and Output file handles for
reading the keyboard and writing to the screen.
Category: Display
Str (number) : String Str (number) : String Str (number) : String
Turns a number into a string.
Category: String
Computer Tyme MarxMenu Users Manual Page 116
_______________________________________________________________
StuffAKey (String or Number) StuffAKey (String or Number) StuffAKey (String or Number)
Stuffs a single key into the DOS keyboard buffer when MarxMenu exits.
The limit is 16 characters.
Example:
StuffAKey($3F00) ;stuff the F5 key
StuffAKey F5 ;same thing
Do not mix StuffAKey with StuffKBD. Use one or the other.
Category: Execution, Keyboard, String
StuffKBD (String) StuffKBD (String) StuffKBD (String)
Stuffs the string into the DOS keyboard buffer when MarxMenu exits. The
limit is 16 characters.
Example:
StuffKBD 'LOGOUT' + CR
Category: Execution, Keyboard, String
StuffKeyboardNow StuffKeyboardNow StuffKeyboardNow
Normally the keyboard stuffing is done as MarxMenu quits. This forces
the keyboard to be stuffed immediately.
Category: Keyboard
Succ (number) : Number Succ (number) : Number Succ (number) : Number
Returns number plus 1.
Category: Math
Suggest (Char) Suggest (Char) Suggest (Char)
Normally the UseArrows command will start in the upper left hand corner.
By using the Suggest command, you can set it to start on any menu
selection.
Example:
Suggest 'E'
Category: Display
Sun : Number Sun : Number Sun : Number
Sunday, Returns the number 0.
Category: Time
TextBackground (color) TextBackground (color) TextBackground (color)
Sets text background color.
Category: Color
Computer Tyme MarxMenu Users Manual Page 117
_______________________________________________________________
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
TextMode (num) TextMode (num) TextMode (num)
Sets the video text mode.
0 = 40 column BW
1 = 40 column COLOR
2 = 80 column BW
3 = 80 column COLOR
258 = 43/50 line EGA BW
259 = 43/50 line EGA COLOR
Example:
TextMode BW80
Category: Video
TextPos : Number TextPos : Number TextPos : Number
TextPos returns the current position in a text file. This can be saved
so that you can go to the same place using TextSeek.
See Also: TextSeek
Category: File
TextSeek (Number) TextSeek (Number) TextSeek (Number)
TextSeek moves to a specific byte in a text file.
See Also: TextPos
Category: File
Then Then Then
Conditional control.
See Also: If
Category: Conditional
Thu : Number Thu : Number Thu : Number
Thursday, Returns the number 4.
Category: Time
Computer Tyme MarxMenu Users Manual Page 118
_______________________________________________________________
TimeOf (String) : Number TimeOf (String) : Number TimeOf (String) : Number
Converts a string representing a date to a date number.
Examples:
'4-7-91' ;04-07-1991 00:00:00
'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
'12:35:23a' ;04-07-1991 00:35:23
'3:15' ;04-07-1991 03:15:00
If the string can't be converted, then BadDate is set to true.
Category: Time
Timer : Number Timer : Number Timer : Number
Returns the system timer.
Category: Time
TimeString : String TimeString : String TimeString : String
Returns the time in HH:MM:SS format. 24 hour.
Category: String, Time
Today : Date Today : Date Today : Date
Returns the current day as a date. The date returned has the time set to
midnight or 00:00:00.
Category: Time
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 119
_______________________________________________________________
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
True : Boolean True : Boolean True : Boolean
Returns boolean true.
Category: Boolean
Tue : Number Tue : Number Tue : Number
Tuesday, Returns the number 2.
Category: Time
UniqueFileName : String UniqueFileName : String UniqueFileName : String
Uses the create new file call to get a filename that is different than
any other file name. It is tied to the DOS call that is used to create a
unique file name according to the rules of your operating system.
Category: File, String
Until Until Until
Conditional control.
See Also: Repeat.
Category: Conditional
UpperCase (String) : String UpperCase (String) : String UpperCase (String) : String
Return UpperCase of String
Category: String
Computer Tyme MarxMenu Users Manual Page 120
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 121
_______________________________________________________________
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
dirve letter.
Category: System
UseNovPassword : Boolean UseNovPassword : Boolean UseNovPassword : Boolean
If UseNovPassword is set to true then the screen blanker will require
that the user type his Novell password to unblank the screen. Full
Novell security and intruder detection is active here. If Novell's
intruder detection is active, then if an intruder fails to type in the
password after a number of attempts, then Netware will not accept the
correct password until intruder detection allows it.
If you don't know what intruder detection is, read the Netware manuals
on the subject. It is something you should use.
Category: Novell
Value (string) : Number Value (string) : Number Value (string) : Number
Converts String to Number. Leading $ indicates Hex.
Category: String, Math
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: Video
VideoPage : Number VideoPage : Number VideoPage : Number
Returns Current Video Page.
Category: Video
Computer Tyme MarxMenu Users Manual Page 122
_______________________________________________________________
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
WaitOrKbdReady (Number) WaitOrKbdReady (Number) WaitOrKbdReady (Number)
This command is just like the WAIT command except the wait is aborted by
pressing any key. Time to wait is in hundredths of a second. This
command is useful when using MarxMenu to write a running demo.
See Also: Wait
Category: Keyboard
Wed : Number Wed : Number Wed : Number
Wednesday, Returns the number 3.
Category: Time
WhereX : Number WhereX : Number WhereX : Number
Returns the horizontal position of the cursor within the current window.
Category: Display
Computer Tyme MarxMenu Users Manual Page 123
_______________________________________________________________
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
White : Number White : Number White : Number
Returns the number 15.
Category: Color
WindowHeight : Number WindowHeight : Number WindowHeight : Number
Returns number of rows in current window.
Category: Display
WindowWidth : Number WindowWidth : Number WindowWidth : Number
Returns number of columns in current window.
Category: Display
Write (string) Write (string) Write (string)
Writes (string) on the screen at the current cursor position.
Category: Display
Computer Tyme MarxMenu Users Manual Page 124
_______________________________________________________________
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
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
Computer Tyme MarxMenu Users Manual Page 125
_______________________________________________________________
YearOf (Date) : Number YearOf (Date) : Number YearOf (Date) : Number
Returns the year of a date. If Date is passed as a string it is
converted automatically.
See Also: TimeOf, BadDate
Category: Time
Yellow : Number Yellow : Number Yellow : Number
Returns the number 14.
Category: Color
Yes : Boolean Yes : Boolean Yes : Boolean
Returns True.
STRING AND CHARACTER CONSTANTS STRING AND CHARACTER CONSTANTS STRING AND CHARACTER CONSTANTS
BKSP = #8
CR = #13
CRLF = #13#10
ESC = #27
FF = #12
LF = #10
F1 = #0#59
F2 = #0#60
F3 = #0#61
F4 = #0#62
F5 = #0#63
F6 = #0#64
F7 = #0#65
F8 = #0#66
F9 = #0#67
F10 = #0#68
F11 = #0#133
F12 = #0#134
SF1 = #0#84
SF2 = #0#85
SF3 = #0#86
SF4 = #0#87
SF5 = #0#88
SF6 = #0#89
SF7 = #0#90
SF8 = #0#91
SF9 = #0#92
SF10 = #0#93
SF11 = #0#135
SF12 = #0#136
Computer Tyme MarxMenu Users Manual Page 126
_______________________________________________________________
CF1 = #0#94
CF2 = #0#95
CF3 = #0#96
CF4 = #0#97
CF5 = #0#98
CF6 = #0#99
CF7 = #0#100
CF8 = #0#101
CF9 = #0#102
CF10 = #0#103
CF11 = #0#137
CF12 = #0#138
AF1 = #0#104
AF2 = #0#105
AF3 = #0#106
AF4 = #0#107
AF5 = #0#108
AF6 = #0#109
AF7 = #0#110
AF8 = #0#111
AF9 = #0#112
AF10 = #0#113
AF11 = #0#139
AF12 = #0#140
ALT1 = #0#120
ALT2 = #0#121
ALT3 = #0#122
ALT4 = #0#123
ALT5 = #0#124
ALT6 = #0#125
ALT7 = #0#126
ALT8 = #0#127
ALT9 = #0#128
ALT0 = #0#129
Computer Tyme MarxMenu Users Manual Page 127
_______________________________________________________________
CONDITIONAL STATEMENTS CONDITIONAL STATEMENTS CONDITIONAL STATEMENTS
MarxMenu has a full complement of conditional statements. They are as
follows:
IF->ELSE->ENDIF Where, IF [condition]
statement
statement
ELSE
statement
statement
ENDIF
IF->THEN Where, IF [condition] THEN statement
REPEAT->UNTIL Where, REPEAT
statement
statement
UNTIL [condition]
WHILE->ENDWHILE Where, WHILE [conditon]
statement
statement
ENDWHILE
PROCEDURE->ENDPROC PROCEDURE (name)
statement
statement
ENDPROC
LOOP->ENDLOOP LOOP (number)
statement
statement
ENDLOOP
Computer Tyme MarxMenu Users Manual Page 128
_______________________________________________________________
ENVIRONMENT VARIABLES USED BY MARXMENU ENVIRONMENT VARIABLES USED BY MARXMENU ENVIRONMENT VARIABLES USED BY MARXMENU
MarxMenu uses a variety of environment variables to control various
MarxMenu functions. Many of these variables are optional.
Set MouseX=(Number)
Sets the horizontal sensitivity of the mouse. Default is 15.
Set MouseY=(Number)
Sets the vertical sensitivity of the mouse. Default is 25.
Set MxEcho=(On/Off)
If you set the first line of MARX.BAT to @ECHO %MXECHO% then by setting
the environment variable MxEcho to ON or OFF, you can control the echo
in the MARX.BAT file without having to edit it. This allows you to do
diagnostics on a network without messing up other users.
Set Temp=(Directory)
Normally, MarxMenu creates temporary batch files in the same directory
as MARXMENU.EXE. If you set TEMP to a directory, MarxMenu will use this
directory instead. This complies with Windows / DOS 5.0 standards.
Set MxCmd=(Command)
MarxMenu uses MXCMD to control what the MARX.BAT file executes. You must
have enough environment space available for MarxMenu to use.
Set KSV=
MarxMenu stores a series of keystrokes in the KSV variable when
SavePosition is On.
Set STATION=(Number)
If you are on a network that is not Novell, then you should set this
variable to a unique number for each station between 0 and 255.
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.
Computer Tyme MarxMenu Users Manual Page 129
_______________________________________________________________
COMMAND CATEGORIES COMMAND CATEGORIES COMMAND CATEGORIES
Here is a breakdown of MarxMenu commands by command category. Many
MarxMenu commands are in several categories. These are the same
categories as in the MarxHelp utility.
MISC COMMANDS MISC COMMANDS MISC COMMANDS
| | (Vertical Bar)
( ( : Operator
) ) : Operator
Alias Alias
Comment Comment
EndComment EndComment
EndProc EndProc
Include Include (MenuName)
Loc Loc (Procedure)
NetworkVersion NetworkVersion : Boolean
Procedure Procedure (name)
Return Return (param,param,...)
Run Run variable (parameters)
Wait Wait (number)
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
Computer Tyme MarxMenu Users Manual Page 130
_______________________________________________________________
Random Random : Number
Real Real (Integer) : Real
Shl Shl : Operator
Shr Shr : Operator
Sin Sin (Radians) : Real
Sqr Sqr (Real) : Real
Succ Succ (number) : Number
Value Value (string) : Number
Xor Xor : Operator
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 131
_______________________________________________________________
STRING COMMANDS STRING COMMANDS STRING COMMANDS
+ + : Operator
< < : Operator
<= <= : Operator
<> <> : Operator
= = : Operator
> > : Operator
>= >= : Operator
%MenuFileName %MenuFileName : String
BatFileName BatFileName : String
BlankMessage BlankMessage (string)
Char Char (number) : String
CleanFileName CleanFileName (string) : String
CmdLine CmdLine : String
DateString DateString : String
Delete Delete (string,pos,count)
DosVersionString DosVersionString : String
Extension Extension (String) : String
FilePart FilePart (String) : String
ForceExtension ForceExtension (String,Ext) : String
InputString InputString (String)
Insert Insert (InsString,OrigString,Pos)
KeySave KeySave : String
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 132
_______________________________________________________________
StuffKBD StuffKBD (String)
TimeString TimeString : String
Trim Trim (string)
UniqueFileName UniqueFileName : String
UpperCase UpperCase (String) : String
UpperCaseOnly UpperCaseOnly : Boolean
Value Value (string) : Number
BOOLEAN COMMANDS BOOLEAN COMMANDS BOOLEAN COMMANDS
And And : Operator
False False : Boolean
No No : Boolean
Not Not : Operator
Off Off : Boolean
On On : Boolean
Or Or : Operator
True True : Boolean
Xor Xor : Operator
MEMORY COMMANDS MEMORY COMMANDS MEMORY COMMANDS
ApplicationMemory ApplicationMemory : Number
Dispose Dispose (Variable)
FreeEms FreeEMS : Number
FreeMemory FreeMemory : Number
Mem Mem (seg,ofs) : Number
MemL MemL (seg,ofs) : Number
MemSize MemSize : Number
MemW MemW (seg,ofs) : Number
Port Port (number) : Number
TotalEms TotalEMS : Number
Computer Tyme MarxMenu Users Manual Page 133
_______________________________________________________________
TIME COMMANDS TIME COMMANDS TIME COMMANDS
Apr Apr : Number
Aug Aug : Number
BadDate BadDate : Boolean
DateString DateString : String
Day Day : Number
DayOf DayOf (Date) : Number
DayOfWeek DayOfWeek : Number
DayOfWeekOf DayOfWeekOf (Date) : Number
Dec Dec : Number
Feb Feb : Number
Fri Fri : Number
Hour Hour : Number
HourOf HourOf (Date) : Number
Hundredth Hundredth : Number
Jan Jan : Number
Jul Jul : Number
Jun Jun : Number
Mar Mar : Number
May May : Number
Minute Minute : Number
MinuteOf MinuteOf (Date) : Number
Mon Mon : Number
Month Month : Number
MonthOf MonthOf (Date) : Number
Nov Nov : Number
NovAccountExpDate NovAccountExpDate (UserName) : Date
NovPasswordExpDate NovPasswordExpDate (UserName) : Date
Now Now : Date
Oct Oct : Number
Sat Sat : Number
Second Second : Number
SecondOf SecondOf (Date) : Number
SecondInDay SecondsInDay : number
SecondInHour SecondsInHour : Number
Sep Sep : Number
Sun Sun : Number
Thu Thu : Number
TimeOf TimeOf (String) : Number
Timer Timer : Number
TimeString TimeString : String
Today Today : Date
Tue Tue : Number
Wed Wed : Number
Year Year : Number
YearOf YearOf (Date) : Number
Computer Tyme MarxMenu Users Manual Page 134
_______________________________________________________________
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
IdelProgram IdelProgram : Procedure
Jump Jump (menu)
KeySave KeySave : String
Logoff Logoff
LogoffTime LogoffTime : Number
MxCmd MxCmd : String
NoExit NoExit
Overlay OverLay (MenuName)
PauseAfterExecute PauseAfterExecute (On/Off)
Reboot Reboot
ReturnCode ReturnCode : Number
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
UseCommand UseCommand (on/off)
DISPLAY COMMANDS DISPLAY COMMANDS DISPLAY COMMANDS
BigShadow BigShadow
Blanked Blanked : Boolean
BlankTime BlankTime (minutes)
BlockBox BlockBox
BoxHeader BoxHeader (string)
BoxHeaderLeft BoxHeaderLeft (string)
BoxHeaderRight BoxHeaderRight (string)
BoxFooter BoxFooter (string)
BoxFooterLeft BoxFooterLeft (string)
BoxFooterRight BoxFooterRight (string)
ClearLine ClearLine [char]
ClearScreen ClearScreen [char]
ClearScreenOnExit ClearScreenOnExit (on/off)
ClockMode ClockMode
ClockPos ClockPos (column,row)
Console Console (On/Off)
ConsolePos ConsolePos (column,row)
CurrentWindow CurrentWindow : Number
Cursor Cursor (On/Off)
CustomBox CustomBox (String)
DoubleLineBox DoubleLineBox
DrawBox DrawBox (column,row,width,height)
EraseTopWindow EraseTopWindow
EraseWindow EraseWindow (Number)
Explode Explode (on/off)
ExplodeDelay ExplodeDelay (number)
Computer Tyme MarxMenu Users Manual Page 135
_______________________________________________________________
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
Suggest Suggest (Char)
UseArrows UseArrows
ViewArray ViewArray (Array)
ViewTextFile ViewTextFile (Name)
WhereX WhereX : Number
WhereXAbs WhereXAbs : Number
WhereYAbs WhereYAbs : Number
WindowHeight WindowHeight : Number
WindowWidth WindowWidth : Number
Write Write (string)
WriteCenter WriteCenter (string)
Writeln Writeln (string)
WriteVertical WriteVertical (string)
Computer Tyme MarxMenu Users Manual Page 136
_______________________________________________________________
COLOR COMMANDS COLOR COMMANDS COLOR COMMANDS
Black Black : Number
Blink Blink : Boolean
Blue Blue : Number
BoxBorderColor BoxBorderColor (forecolor,backcolor)
BoxHeaderColor BoxHeaderColor (forecolor,backcolor)
BoxInsideColor BoxInsideColor (forecolor,backcolor)
Brown Brown : Number
CapsColor CapsColor (forecolor,backcolor)
ClockColor ClockColor (forecolor,backcolor)
ConsoleBorderColor ConsoleBorderColor (Color,Color)
ConsoleHeaderColor ConsoleHeaderColor (Color,Color)
ConsoleInsideColor ConsoleInsideColor (Color,Color)
Cyan Cyan : Number
Green Green : Number
Grey Grey : Number
InactiveBoxColor InactiveBoxColor (foreground,background)
InverseColor InverseColor (forecolor,backcolor)
LBlue LBlue : Number
LCyan LCyan : Number
LGreen LGreen : Number
LGrey LGrey : Number
LMag LMag : Number
LMagenta LMagenta : Number
LRed LRed : Number
Mag Mag : Number
Magenta Magenta : Number
Red Red : Number
ShadowColor ShadowColor (ForeColor,BackColor)
TextBackground TextBackground (color)
TextColor TextColor (forecolor,backcolor)
White White : Number
Yellow Yellow : Number
VIDEO COMMANDS VIDEO COMMANDS VIDEO COMMANDS
BW40 BW40 : Number
BW80 BW80 : Number
CO40 CO40 : Number
CO80 CO80 : Number
ColorScreen ColorScreen : Boolean
Mono Mono : Number
TextMode TextMode (num)
VideoMode VideoMode : Number
VideoPage VideoPage : Number
Computer Tyme MarxMenu Users Manual Page 137
_______________________________________________________________
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
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)
FILE COMMANDS FILE COMMANDS FILE COMMANDS
ChDir ChDir (string)
DelFile DelFile (Name)
EndOfFile EndOfFile (FileVar) : Boolean
ExistDir ExistDir (directory) : Boolean
ExistFile ExistFile : Boolean
ExistOnPath ExistOnPath (string) : String
FileAppend FileAppend (FileVar)
FileAssign FileAssign (FileVar,String)
FileAttr FileAttr (string) : Number
FileClose FileClose (FileVar)
FileCreate FileCreate (FileVar)
FileDate FileDate (string) : Number
FileFlush FileFlush (FileVar)
FileLog FileLog (FileVar,String)
FileOpen FileOpen (FileVar)
FilePos FilePos (FileVar) : Number
FileReadln FileReadln (FileVar) : String
FileRename FileRename (Old,New)
FileResult FileResult : Number
FileSeek FileSeek (FileVar,Number)
FileSize FileSize (string) : Number
FileWrite FileWrite (FileVar,String)
FileWriteln FileWriteln (FileVar,String)
ReadTextFile ReadTextFile (FileName,Array)
TextPos TextPos : Number
TextSeek TextSeek (Number)
UniqueFileName UniqueFileName : String
ViewTextFile ViewTextFile (Name)
WriteTextFile WriteTextFile (FileName,Array)
Computer Tyme MarxMenu Users Manual Page 138
_______________________________________________________________
PRINTER COMMANDS PRINTER COMMANDS PRINTER COMMANDS
ClosePrinter ClosePrinter
NovPrintQueues NovPrintQueues (Array)
OpenPrinter OpenPrinter
Print Print (string)
PrinterName PrinterName (string)
Println Println (String)
PrintScreen PrintScreen (On/Off)
ENVIRONMENT COMMANDS ENVIRONMENT COMMANDS ENVIRONMENT COMMANDS
CurrentEnvironment CurrentEnvironment
EnvFree EnvFree : Number
EnvSize EnvSize : Number
FixPath FixPath
KeySave KeySave : String
MasterEnvironment MasterEnvironment
ModifyPath ModifyPath
MxCmd MxCmd : String
ParentEnvironment ParentEnvironment
ReadEnv ReadEnv (string) : String
ReadEnvironment ReadEnvironment (array)
SavePosition SavePosition (On/Off)
SetEnv SetEnv (String)
ShellEnvironment ShellEnvironment
ARRAY COMMANDS ARRAY COMMANDS ARRAY COMMANDS
Delete Delete (string,pos,count)
Dispose Dispose (Variable)
NovGroupMembers NovGroupsMembers (Group,Array)
NovPrintQueues NovPrintQueues (Array)
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovServers NovServers (Array)
NovScanProperties NovScanProperties (Array, Object, ObjectType)
NovUsers NovUsers (Array)
NovUsersLoggedIn NovUsersLoggedIn (Array)
NumberOfElements NumberOfElememts (array) : Number
PickMany PickMany(SourceArray,DestinationArray)
PickOne PickOne (Array) : String
PickPosition PickPosition : Number
ReadEnvironment ReadEnvironment (array)
ReadTextFile ReadTextFile (FileName,Array)
SetArraySize SetArraySize (Array,Size)
SortArray SortArray (Array)
ViewArray ViewArray (Array)
WriteTextFile WriteTextFile (FileName,Array)
Computer Tyme MarxMenu Users Manual Page 139
_______________________________________________________________
DESQVIEW COMMANDS DESQVIEW COMMANDS DESQVIEW COMMANDS
DvAppNumber DvAppNumber : Number
DvFrame DvFrame (Handle,On/Off)
DvFreeze DvFreeze (Handle)
DvHide DvHide (Handle)
DvKillTask DvKillTask (Handle)
DvLastHandle DvLastHandle : Number
DvLoaded DvLoaded : Boolean
DvMoveWindow DvMoveWindow (Handle,X,Y)
DvMyHandle DvMyHandle : Number
DvPifExecute DvPifExecute (Pif File)
DvResizeWindow DvResizeWindow (Handle,Width,Height)
DvSetBottom DvSetBottom (Handle)
DvSetTop DvSetTop (Handle)
DvUnFreeze DvUnFreeze (Handle)
DvUnHide DvUnHide (Handle)
CONDITIONAL COMMANDS CONDITIONAL COMMANDS CONDITIONAL COMMANDS
Else Else
Endif EndIf
EndLoop EndLoop
EndWhile EndWhile
If If
Loop Loop
LoopIndex LoopIndex
LoopLimit LoopLimit
OnKey OnKey (char)
OnScreenOnly OnScreenOnly (On/Off)
Password Password (Pswd,column,row)
Repeat Repeat
Then Then
Until Until
While While
KEYBOARD COMMANDS KEYBOARD COMMANDS KEYBOARD COMMANDS
InputString InputString (String)
InsertMode InsertMode (On/Off)
KbdReady KbdReady : Boolean
MenuKeyBuffer MenuKeyBuffer
ReadKey ReadKey : String
Readln Readln : String
SavePosition SavePosition (On/Off)
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
StuffKeyboardNow StuffKeyboardNow
WaitOrKbdReady WaitOrKbdReady (Number)
Computer Tyme MarxMenu Users Manual Page 140
_______________________________________________________________
MOUSECONTROL COMMANDS MOUSECONTROL COMMANDS MOUSECONTROL COMMANDS
KeyFromMouse KeyFromMouse : Boolean
Mouse Mouse
MouseHorizontal MouseHorizontal (Number)
MouseVertical MouseVertical (Number)
MUSIC COMMANDS MUSIC COMMANDS MUSIC COMMANDS
KillMusic KillMusic
NotesLeft NotesLeft : Num
NotesPlayed NotesPlayed : Num
Tone Tone (Frequency,Duration)
NOVELL COMMANDS NOVELL COMMANDS NOVELL COMMANDS
MachineName MachineName : String
NovAccountExpDate NovAccountExpDate (UserName) : Date
NovAttach NovAttach (Server)
NovChangePassword NovChangePassword (OldPassword,NewPassword)
NovCloseSemaphore NovCloseSemaphore (Name)
NovConnection NovConnection : Number
NovConsoleOperator NovConsoleOperator : Boolean
NovDefaultServer NovDefaultServer : String
NovDetach NovDetach (Server)
NovGroupMembers NovGroupsMembers (Group,Array)
NovGroups NovGroups (Array)
NovInGroup NovInGroup (Group) : Boolean
NovLogin NovLogin (Name,Password)
NovLoginName NovLoginName (Connection) : String
NovLogout NovLogout
NovMapDrive NovMapDrive (Drive,Directory)
NovMyLoginName NovMyLoginName : String
NovMyPassword NovMyPassword (Password) : Boolean
NovOpenSemaphore NovOpenSemaphore (Name,Value)
NovPasswordExpDate NovPasswordExpDate (UserName) : Date
NovPreferredServer NovPreferredServer : String
NovPrimaryServer NovPrimaryServer : String
NovPrintQueues NovPrintQueues (Array)
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovResult NovResult : Number
NovSemaphoreTimeOut NovSemaphoreTimeOut
NovSemaphoreUsers NovSemaphoreUsers (Name) : Number
NovSemaphoreValue NovSemaphoreValue (Name) : Number
NovServers NovServers (Array)
NovScanProperties NovScanProperties (Array, Object, ObjectType)
NovSetPreferredServer NovSetPreferredServer (Server)
NovSetPrimaryServer NovSetPrimaryServer (Server)
NovSignalSemaphore NovSignalSemaphore (Name)
NovStationAddress NovStationAddress (Connection) : String
NovUserInGroup NovUserInGroup (Name,Group) : Boolean
Computer Tyme MarxMenu Users Manual Page 141
_______________________________________________________________
NovUsers NovUsers (Array)
NovUsersLoggedIn NovUsersLoggedIn (Array)
NovWaitOnSemaphore NovWaitOnSemaphore (Name) : Boolean
UseNovPassword UseNovPassword : Boolean
VARIABLE COMMANDS VARIABLE COMMANDS VARIABLE COMMANDS
Qualifier Qualifier
Shared Shared
Var Var
Other Computer Tyme Software:
======================================================
The Computer Tyme Dos ToolBox... Makes DOS easier for the novice,
more powerful for the professional.
DIRECTORY MASTER is a powerful hard disk managment utility. It
brings up your hard disk files and allows you to mark selected
files so you can copy them, delete them, or move them. It also
allows you to rename files, change dates, and change attributes.
You can also run programs or set up your function keys to run
programs on selected files.
DOLIST makes being at DOS easier. It gives you full line editing,
like a word processor, for your commands. It also stores commands
so that you can re-execute them. It remembers subdirectories and
allows you to go back to them by pressing the TAB key. It offers
programmable function keys, DOS extensions, multiple execution,
and many more features you have got to have.
PICK DIRECTORY allows you to move through the directory system by
displaying a graphic tree and letting you use your arrow keys to
move around. It also lets you create, delete, rename, and hide
directories.
TEDIT (from SemWare) is a powerful, easy to use full screen
editor.
MARXTSR is a set of memory and TSR management utilities that let
you load and unload TSRs (Terminate and stay resident programs)
from memory. Utilities to list menory allocation and turn TSR's
on and off.
And many more ... Also includes is D, a fancy directory listing
program; WHEREIS, for finding stuff on you hard disk, SORT, MOVE,
FIND, FREE, PIPEDIR, VERSION, and many more.
The Dos Toolbox sells for $59.95.
======================================================
We are also selling QEdit from Semware. QEdit is a professional
editor from Semware. TEdit is a mini version of QEdit. If you
like TEdit, You'll love QEdit.
1-800-548-5353 Order Line
1-417-866-1222 Voice Line
1-417-866-1665 BBS Data line * 1200/2400 * 8N1 * ANSI or VT100
MarxMenu comes with MarxEdit and MARXTSR manager and a few goodies out of
the DOS ToolBox. The Network Survival Kit is a network version of almost
every utility I've ever written. It's sold on a per fileserver basis.
_______
____|__ | (tm)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| APPROVED VENDOR
==========================================
Make Check Computer Tyme Order Form 2.26
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 *
=============================================================