home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
batch
/
mxmnu233.zip
/
MARXREAD.ME
< prev
next >
Wrap
Text File
|
1991-09-30
|
8KB
|
272 lines
Version 2.32
09-05-91
New Feature
Here's what you real programmers have been waiting for. I now have
included indirect addressing modes that allow you to pass variables be
referrence as well as value.
The command Loc returns the location of a variable rather than it's
contents. Thus B = Loc A sets B to point to A.
Example:
Var A B
B = Loc A
B = 9
Writeln A ;returns 9
Example:
Var A
TestLoc (Loc A)
Writeln A ;returns 9
Procedure TestLoc (B)
B = 9
EndProc
The rule is that all indirect location references are resolved in the
process of evaluating an expression.
Example:
Var A B C D
B = Loc A
C = Loc B
D = Loc C
D = 9
Writeln A ; Returns 9
As you would expect, qualifiers and multidimentional array addressing
works with indirect addressing.
Example:
var A B C D E
A[3] = 12
C = 3
B = Loc C
D = Loc E
D[7] = 8
TestLoc (Loc A[B])
Writeln A[B,9,E[7]]
Procedure TestLoc (X)
Writeln X
X[9,D[7]] = 6
Writeln X[9,E[7]]
EndProc
If you want to read or write to a variable directly that is referrencing
another variable I have provided the command Actual.
Example:
Dispose Actual B
Actual B = 5
09-10-91
I got OS/2 version 2.0 in and am working on making it compatible with
the dos box. OS/2 claims to be dos version 20 so I had to make a few
changes to support this.
This OS/2 is looking good and it looks like I'll be able to control both
DOS and OS/2 apps from MarxMenu in the DOS box. So for all practical
purposes it looks like MarxMenu will be quite usable in an OS/2
environment.
Politics:
One of the things I'm worried about is that IBM will try to restrict
communication between the DOS box and OS/2 under the theory that they
want to force developers away from dos and into OS/2.
My position is that I want as much access to the OS/2 kernal from the
DOS box as possible. The reason is that it will take time for software
development tools to be wtitten for OS/2 and the DOS box is all we have
for now.
If DOS programs could make OS/2 calls then by the time OS/2 for Turbo
Pascal comes out much software will be already half converted. It would
also be good for IBM in the developers would create DOS programs that
required OS/2 to run. It would also set a standard that other DOS
vendors such as Microsoft and Novell will follow.
Therefore, if you have any friends or influance at IBM please lobby for
me to allow OS/2 calls from the DOS box. This will ensure a smooth port
of MarxMenu to the OS/2 world.
I'm also collecting undocumented OS/2 calls and back doors. Any
information on OS/2 tricks will be greatly appreciated.
09-14-91
New Features:
WinX : Number
Returns the horizontal location of the left hand corner of the window.
WinY : Number
Returns the vertical location of the left hand corner of the window.
PosInList (String,Array) : Number
Scans a string array looking for a match on string and returns the array
index of the first matched string if found or a zero if not found.
Example:
X[1] = 'JOE'
X[2] = 'KEVIN'
X[3] = 'MARC'
Writeln PosInList('KEVIN',X) ;returns 2
PosInSortedList (String,Array) : Number
Scans a string array looking for a match on string in a sorted array and
returns the array index of the first matched string if found or a zero
if not found. The array must be in sorted order. A binary search is used
to make this command very fast.
Example:
X[1] = 'JOE'
X[2] = 'KEVIN'
X[3] = 'MARC'
SortArray (X)
Writeln PosInList('KEVIN',X) ;returns 2
New Novell Goodies:
NovFullName (User)
Returns the Full Name of the user as set by syscon. If NovFullName is
used without a parameter then MyLoginName is assumed.
NovObjects (2D Array)
NovObjects reads all objects from the bindary returning a 2 dimensional
array containing all object names and object types.
Example:
NovObjects (X)
Loop X
Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
EndLoop
NovScanProperties (Array, Object, Type)
Reads all the properties of Object into Array.
NovPropertyValues (Array, Object, Property, Type)
Reads property values of object into and array.
NovDeleteObject (Object,Type)
Deletes an object from the bindary.
NovBroadcastMode (Mode)
This reads or sets the message broadcast mode.
Example:
Writeln NovBroadcastMode
BroadcastMode = 3
Modes:
0 - All Messages, same as running CastOn
1 - Server messages only, same as running CastOff
2 - Same as 0 but user has to poll server for messages
3 - Same as 1 but user has to poll server for messages
NovSendMessage (Message,Connection)
Sends a message to the specified connection number just like the novell
SEND command.
NovGetMessage : String
When in broadcast mode 2 or 3 this polls the server for stored messages
and returns them if found.
NovMaxConnections : Number
Returns the maximum number of connections that your netware will allow.
NovConnectionsInUse : Number
Returns the number of connections in use.
NovVersionNumber : Number
Returns the novell netware version number.
Example:
215 - Version 2.15
311 - Version 3.11
I started out to write a case statement but came up with something
better. ELSEIF
Example:
if X = 1
Writeln 'One'
elseif X = 2
Writeln 'Two'
elseif X = 3
Writeln 'Three'
elseif X = 4
Writeln 'Four'
else
Writeln 'Other'
endif
09-19-91
LastDrive : String
Returns the drive letter of the last local drive in the system as set by
CONFIG.SYS. By default, this is drive letter E. On a Novell network the
drive after LastDrive is the first network drive.
The Logoff command has been modified to change drives to the first
network drive (usually F:) and remove any map root setting on this
drive.
09-22-91
For those of you who have been bugging me about customizing the screen
blanker, this is your day! I've added the ability to support your own
external screen blanker written in MarxMenu.
The IdleProgram could have been used for this but by adding
BlankScreenProgram, MarxMenu determines when to blank and unblank the
screen taking the bulk of the nasty work away.
BlankScreenProgram = Loc (Procedure Name)
This sets the blank screen program to use and overrides MarxMenu's
internal screen blanker. It also overrides the IdleProgram so if you are
running something in you idle program that you want to continue to run
when the screen goes blank, call your idle procedure from the screen
blanker procedure.
If you exit your screen blanker and MarxMenu thinks the screen should
still be blank it will call it again.
UnBlank : Boolean
Unblank returns true if MarxMenu has determined that the screen blanker
should finish. Your screen blanker needs to call UnBlank to determine
when to unblank the screen.
Example:
while not UnBlank
<your screen blanker>
endwhile
See the file WORM.INC for a sample external screen blanker. This program
is like the worm blankers on Novell file servers.
===============================================================
Version 2.33
09-30-91
Vicki says, "Quit adding features, Networld is comming up!". So I got
everything working (I hope) and I'm printing new manuals so I went back
and added a lot of new examples to the manual and added several new
sections. I also did some work on the sample menu files included on the
disk cleaning up old code, adding new features and better comments.
MarxMenu is easier to install than ever now.