Category : Alternate Operating Systems - Quarterdeck DesqView, CP/M, etc
Archive   : VMIX285.ZIP
Filename : TECHREF.DOC

Output of file : TECHREF.DOC contained in archive : VMIX285.ZIP

| |
| |
| |
| V M i X 3 8 6 |
| |
| for |
| |
| MSDOS Environments |
| |
| |
| |
| Multiuser Operating |
| Supervisor |
| |
| for the |
| |
| I B M PC / XT / AT |
| |
| |
| Version 2.7X |
| |
| Technical Reference |


J. Anthony Borras
Commercial Software Associates
Post Office Box 36
Corona del Mar, California 92625
(714) 720-1214

IBM PC/XT/AT are trademarks of the IBM Corp.

This manual was written by:

Commercial Software Associates
Post Office Box 36
Corona del Mar, California 92625


Copyright (c) 1991, 1992
by: J. Anthony Borras
All rights reserved

No part of this program or related
documentation may be copied, reproduced,
stored in a retrieval system, or
transmitted in any form or by any means
electronic, mechanical, photocopied,
recorded, or thereby translated into any
language, without the prior written
permission of the publisher. You may
only make a copy of the program for
backup purposes.


VMiX 386 may be copied for others to
tryout, subject to the following copying
restrictions specified by this time
limited license:

All copies distributed to others must
include a copy of the Copyright Notice,
the Limited Shareware License, Disclaimer
of All Warranties and Liabilities, and
Liabilities, and the Software License

Disclaimer of
All Warranties and Liabilities

Commercial Software (ComSoft) Associates
makes no warranties, either expressed or
implied, with respect to this manual or
to the software described there in, its
quality, performance, merchantability,
or fitness for any particular purpose.
VMiX 386 is sold or licensed `as is',
and is for use by the original
purchaser only, except as expanded by
the Limited Shareware License described
above. The entire risk, as to the
quality and performance, of the VMiX
experimental system is with the buyer.
In the event of loss or damage caused
or alleged to be caused by the VMiX 386
program, the buyer (and not ComSoft, its
distributors, or its retailers) assumes
the entire cost of all necessary
servicing, repair, or correction and
any incidental or consequential damages
resulting from any defect in the
software or its use, even if ComSoft has
been advised of the possibility of such


The party, agrees that they will use the
software entitled `VMiX 386' exclusively
for their private use in their own
personal system, not to exceed 3 CPU's.
The party agrees that all copies of the
VMiX 386 software package are the
property of Commercial Software
Associates, Westwood California and that
all copies will display the original

The party agrees that the location of all
copies will be reported to Commercial
Software Associates upon written demand.
The licensee agrees to fill out and mail
this registration form and license
within 30 days of the start of the try-
out period specified by the Limited
Shareware License shown above. Support
will be provided to registered licensees

The party agrees that unauthorized use
under this agreement will cause great
damage to the licensor, Commercial Soft-
ware Associates.



Copyright Notice ................... 3
Software License Agreement ......... 4
Table of Contents .................. 5
Quick Overview .................... 7

The Shell Commands ................. 1- 1
Command 1 - debug 1- 2
Command 2 - rshell 1- 3
Command 3 - remote 1- 4
Command 4 - swap 1- 6
Command 5 - chprio 1- 8
Command 6 - exec 1- 9
Command 7 - dosjob 1-11
Command 8 - spawn 1-13
Command 9 - kill 1-15
Command 10 - quit 1-16

The Debugger Commands .............. 2- 1
Command 1 - assign 2- 2
Command 2 - deassign 2- 6
Command 3 - init 2- 7
Command 4 - examine 2- 8
Command 5 - set 2- 9

The Utilities ...................... 3- 2
Utility 1 - ps 3- 3
Utility 2 - dstat 3- 4
Utility 3 - dpath 3- 5
Utility 4 - loadup 3- 6
Utility 5 - outside 3- 8
Utility 6 - monitor 3- 9
Utility 7 - vsetup (.ini) 3-11
Utility 8 - vt 3-14
Utility 9 - vw 3-16



Fig. 1 Default Channel Assignments 1- 4
2 Object type name definitions 2- 2
3 Valid Baud Rates 2-10
4 Terminal Emulations Supported 2-13
5 Color Keys 2-14
6 Color Codes 2-14
7 Window Sizing Coordinates 2-16


* VMiX provides the services of a multiuser operating system
supervisor. The VMiX kernel ties tightly between the host
operating system I/O services and the user applications.
The goal of the VMiX kernel is to arbitrate the use of system
resources by individual tasks, in an environment providing up
to 16 megabytes of physical memory and virtualized devices.

* The console screen can be automatically partitioned into up to
four windows, for a total of 4 tasks executing from the console.
The active task controls and responds to the console keyboard.
The active task can be switched, at any time, by pressing the
hot key, . In 386 mode, you can have fully
virtualized foregrounds, so each can be divided into up to four
windows or you can have full screen foregrounds ('dosjob -W')
independent from partitioned foregrounds.

* VMiX does not need to operate in protected mode to multitask.
Hence, it can be used in 8088 PCs. In 80286 mode, VMiX will
use protected mode only during task swapping. In 80386 mode,
VMiX operates in protected mode at all times. System services
are provided in SYSGATE.ASM to execute your own functions in
protected mode.

* REMOTE permits a user to call a remote PC running VMiX, and
teleoperate, as if he were at the console of the remote PC.
Useful for remote customer support of application programs,
offsite login and operations. VMiX terminal drivers provide
full CGA text mode emulation at a COMM port and will redirect
direct video writes when in 386 mode.

* Multiple BASIC or GWBASIC interpreter sessions are supported.
Programs that write directly to video memory will also operate
from a COMM port when using VMiX in 386 mode. In non-386
computers you need to use a remote host utility like 'Remote
Console'tm in conjunction with VMiX. 'Remote Console'tm is a
product of Louis Wheeler (805) 481-5687.

* Supports a maximum of five users (only because of COMM port
limitations), each with multiple processes up to a maximum of
8 total.

* SPAWN or '&' permits a script of VMiX shell commands to be
submitted to a background process executing the VMiX shell.
This allows for background jobs like compiling or printing by
a concurrent child process.

* DOSJOB permits keyboard interactive applications to be
partitioned and managed as concurrent video display tasks.
The -W option allows a new task to use virtualized video memory
for their own separate display screen. Their display screen
can be toggled to and from the foreground display.

* VMiX supports graphics in CGA, MCGA, EGA, or VGA video modes.
Loadable fonts and up to 80 line displays (with VMiX font
type 1).

* As explained in the manual, there are (5) five ways to execute
a DOS command, .BAT file, .COM file, or .EXE program:
with 'exec' (now optional),
with a command line trailing '&',
with 'spawn -c ???? ...',
with the 'dosjob [-W]' command,
or (the easiest way) by pressing Shift-Enter or
Shift-Shift-Enter to end your command line.

When VMiX starts, unless you issued an 'exec -m'

at the command line, VMiX will use memory partitions of 224Kb
for (8088/80286) programs or partitions of 600Kb in 386/486

* Command line driven multitasking (default).
Optional pull-down menus user shell.
Optional VMiX.INI configuration file.

* A remote session facility for linking two or more VMiX hosts.
Remote user access passwords.
Remote user program scripts.

* Console operator status line 'set video -s'

* Built-in debugger
'monitor -f'
'monitor -r'

* Memory manager and memory mapper
'monitor -m'
'monitor -p'
'examine mcb'
'examine memory'

* A TSR load-hi utility for 386 mode.
VMiX relocation to upper memory.

* User specified windows at either the console or ANSI COMM
terminal, with direct video write support.

* Assembly and High Level Language interface.
Interrupt 15h VMiX System Services.

C O M S O F T VMiX 386


VMiX 386



The Shell Commands page 1-1

C O M S O F T VMiX 386

NAME: debug


Purpose: To invoke the VMiX debugger shell.
_______ This token is now obsolete, since all the debug
commands can be invoked without the 'debug' prefix
(from the Root Shell).


debug is a root shell token. This command has 6 sub-tokens:

set, init, examine, assign, deassign, and quit.

'debug', by itself, invokes the VMiX debugger shell. The
debugger shell prompt is '- __________'. Once in the debugger
shell, all the debug sub-tokens become first level tokens and
you do not have to preceed them with the token 'debug'.

VMiX accepts numeric input in two forms, decimal or hexadecimal.
To enter hexadecimal numbers, preceede the number with the
characters '0x'.

To return to the root shell, from the debugger use the token

NOTE: All six debugger sub-tokens can be used from the root
shell level, whether you precede them with the token 'debug',
or not. If used with the prefix 'debug', you will moved to the
debugger shell when the current command completes. Without the
prefix, you will remain at the root shell level.

The Shell Commands page 1-2

C O M S O F T VMiX 386

NAME: rshell


Purpose: To start a new VMiX/DOS command shell.


'rshell' is intended for use with the 'dosjob' command. When
used with 'dosjob', a new process will be started and an rshell
will be used as the command interpreter, in other words a new
VMiX shell will be started (See 'dosjob'). The 'quit' command
will close the shell and terminate the process.

When 'rshell' is used as a command, by itself, a new nested
shell will be started under the current VMiX shell. The 'quit'
command will cause a return to the previous shell.

You would use this command in VMiX.INI under the [remote
startup] Section, if you wished to have passwords checked
during a remote login (See VSETUP.EXE).

The Shell Commands page 1-3

C O M S O F T VMiX 386

NAME: remote


-a " toggles global polling ON/OFF"
-c " sets remote console channel"
-i " toggles fast RS232 ON/OFF"
-l " sets terminal login channel"
-x " toggles remote logins ON/OFF"

Purpose: To control your PC's remote serial capabilities via a
_______ modem or terminal connection.


The 'remote -a' command is equivalent to the 'set remote -a'
command it tells VMiX to listen on all ports. This slows the
scheduler, so it is not the default.

The root shell command 'remote -c' will terminate VMiX, but
it first assigns STDIO to the channel specified after the -c
switch. Therefore, MS-DOS resumes at the device associated
with the channel. This command is different from the command
'set remote -c', which relocates the console but does not
terminate VMiX.

Pressing F from the terminal, followed by a Z,
will effect an emergency return to the console video and
keyboard. The correct way to return is to use the 'assign' to
PROCESS command and assign the process channel 0.

The 'remote -i' command is used to toggle RS-232 communications
between polled or interrupt driven I/O. When you 'set baud' for
a COMM channel above 9600 Baud, the serial port associated with
the channel will be automatically programmed for interrupt
driven I/O. However, you must toggle interrupts TRUE, with
this command, if you want a baud rate below 19200 to use
interrupts. You must use this command to toggle interrupt
processing FALSE or TRUE, BEFORE you 'set baud'. Typying
'remote', by itself, will display the status of all commands.

The 'remote -l' command is equivalent to the 'set remote -l'
command. Both set the currently polled channel for new logins.
Use 'examine status' to display the current assignment.

Normally, VMiX only polls the channel specified with the
'remote -l' command or the 'set remote -l' command for new
user logins. The default channel is 1, equivalent to COM1.
Other tasks can be currently using other channels, this command
only affects which channel is currently being listened to for
new user logins.

The Shell Commands page 1-4

C O M S O F T VMiX 386

The 'remote -x' command is equivalent to the 'set remote -x'
command. They act as a toggle to disable or enable all logins.
The default state is logins enabled. Use 'examine status' to
display the current state.


1 COM1 serial port
2 COM2 serial port
3 COM3 serial port
4 COM4 serial port
5 LPT1 printer device

Example batch file to start VMiX and go remote to COM1. If the
terminal type is to be a VT-100, then the batch file would
contain the command line:

vm_boot set terminal -t4 / remote -c1

While in REMOTE mode, FUNCTION KEY emulation can be toggled by
pressing the F keys (one beep) from the terminal's

Note that the digit (numbers) keys on the terminal's keyboard
will now act as [F0] through [F9] keys. The [Ins], [Del], and
[End] keys can now be invoked by pressing ^I, ^D, and ^E
respectively. The terminal's arrow keys and [Home] key will
simulate these keys and the terminal's key will act as
the IBM PC's key (See Figure 3).

Press ^F a second time (two beeps) to return to numeric keys.

When you use our terminal emulation program, VT.EXE, function
key emulation is not necessary and the keyboard keys will
perform normally, all the time.

Refer to the 'set baud' command for information about setting
the baud rate for remote channels.

The Shell Commands page 1-5

C O M S O F T VMiX 386

NAME: swap


Purpose: To swap a task to/from extended memory.


This is the VMiX task switcher function for 286 computers,
eventhough it will also work in 386/486 systems. It will
move a task to and from extended memory. When a task is in
extended memory it will be inactive until swapped back by the

If you have toggled the swapper ON, with the 'set system -s'
command, then the VMiX scheduler will regularly move the task
down to conventional memory for a timeslice of the computer
and swap it back to let other tasks execute.

The command syntax is:

swap [ process id ]

If a process is in low memory, it will be swapped to extended
memory. If the process is already swapped, then it will be
moved back to low memory and resume execution.

Swapped processes will not normally execute, and will stay
suspended until they are swapped again to low memory.

To allow swapped tasks to also execute, (less frequently than
in-memory tasks) use the command 'set system -s' to inform the
scheduler to include swapped tasks. The default is no
time-slice scheduling for swapped tasks.


Swapping is more reliable when you set the partition size to
all available conventional memory with 'exec -m640',before
the first task to be swapped is started. The command needs
only be issued once, during startup. After the task is
started with the 'dosjob' command, it can be swapped from the
'swap' command menu at the root shell, which should not be
running anything, so it can act as a control shell.

Not directly related to swapping, but some if not most modern
programs will create a DOS environment that is specific to
that task. In the 286 computer, which does not provide a
virtual DOS environment, this can cause havoc with other task

The Shell Commands page 1-6

C O M S O F T VMiX 386

using the same environment, which they also have tryed to
modify. It is safer to start all 286 tasks using the '$$'
prefix when you type their startup filespec. This will provide
protection for that task's environment, even in a 286.

C:\VMiX> do -W $$D:\Path\myprog.exe


C:\VMiX> $$myprog (Press )

You do not need to 'swap' a task out before you can 'swap'
another in. The 'swap' command will move the current low memory
resident task out of the way, if necessary.

The Shell Commands page 1-7

C O M S O F T VMiX 386

NAME: chprio


Purpose: To change the executing priority of a VMiX process.


All VMiX processes are assigned a default base priority of 7,
at start-up. Priorities are adjusted constantly by the scheduler.
They dynamically change within the range 2 through the assigned
base maximum for the process. When you use the command 'chprio',
you set the base maximum priority a process is allowed to reach.
VMiX uses this float, for example, to 'up' the priority of a process,
when the keyboard is used.

Task switching adjusts the current priority within the float limit.
A process with a base priority of 14 will execute twice as fast as
another at priority 7, all other things being equal.

A process with priority 1 will not execute at all. It will sleep
until you 'up' the priority above 1, with 'chprio'.

VMiX priorities range from a high of 31 to a low of 0. The
scheduler always chooses the process with the highest current
priority. The scheduler round robin's processes with the same
priority. After a task executes for its timeslice duration,
its current priority is dropped by 1, to allow other lower
priority tasks to execute. When the priority drops to 2, the
priority of the process is reset to the base maximum.

The token 'chprio' is used to change the base and current
priority of any process to a new value. The effect of the
command is to set the base maximum priority for the process
and at the same time make the current priority equal to the
specified base.

The command syntax is:

chprio [ pid [ / priority ] ]

where, pid is the process id of the target process, and
priority is a value between 0 - 31. If only chprio is entered,
then the shell will prompt for the two arguments. The default
pid, if you only press , is the current process id
The default priority is the base priority of the target process.

Refer to the 'set process -q' command for information on
queue contention management, when interrupts are frequent.

The Shell Commands page 1-8

C O M S O F T VMiX 386

NAME: exec


-m " sets transient program memory partition size:
(0 - 1024K)"

Purpose: To execute a valid MS-DOS file or command or to set
_______ the program partition size in kilobytes.


This command provides a direct but limited interface to MS-DOS.
The 'exec' token can be used (with no switches) to execute any
MS-DOS command string from within a VMiX root shell. The main
purpose of exec is to execute an MS-DOS file. It can be invoked
by itself or in conjunction with the spawn token.

'exec' is normally not explicitly used from a VMiX shell, since
VMiX passes commands it does not recognize to MS-DOS. However,
in case of a name conflict between a VMiX comand and an MS-DOS
command, you would need to use 'exec' explicitly. Example:
'exec set' or 'exec'.

The command syntax is:

exec [ MS-DOS command ]

The utility of 'exec' for invoking executable images from within
a VMiX process is limited because 'exec' uses the MS-DOS loader. The MS-DOS loader makes assumptions about
memory allocation, which do not conform to a multiuser
environment like VMiX.

In non-386 mode, two or more VMiX processes can use the 'exec'
command to access MS-DOS provided that:

a) All transient program memory has not been previously
grabbed by a program (.COM programs will do this, as well
as some .EXE program).

The -m switch is used with the 'exec' command to control the
amount of memory that .COM or .EXE programs will be allowed
to grab. The amount of memory made available to individual
programs, is refered to as the partition size.

The command syntax is:

exec -m [ max. Kbytes ]

where, the number of Kbytes specified sets the partition size
and limits the amount of memory that a program can allocate.

The Shell Commands page 1-9

C O M S O F T VMiX 386

Example: 'exec -m128', will limit programs to a
maximum of 128 kilobytes.

b) MS-DOS is not busy with a nested function call beyond the
initial 'exec' call from VMiX. If another VMiX process has
also invoked MS-DOS services that have not completed, then
VMiX will wait for MS-DOS to say that it can handle another

When VMiX encounters this situation, it will print a message:

" "

It is usually safe to press and continue, but the user
can also be cautious and decide to Escape.

The Shell Commands page 1-10

C O M S O F T VMiX 386

NAME: dosjob


-W " gives process the full screen"

Purpose: To execute an MS-DOS command, and/or a series of VMiX
_______ shell commands, in full screen or automatic window.


'dosjob' spawns a child process that executes a string of
commands, input immediately following, and on the same line as
the 'dosjob' token.

This command provides the main interface to multitasking and
MS-DOS. The main purpose of 'dosjob' is to execute an MS-DOS
file or command. It can also be invoked in conjunction with
other VMiX shell commands. For example, a 'dosjob', can include
another 'dosjob' command in its job string.

The difference between 'dosjob' and 'exec', is twofold.
'dosjob' will start a new process to execute the job string,
while 'exec' will use the current process. Second, 'dosjob',
(without the -W option) will open a new window for the process,
while 'exec' will use the bounds of the current shell process.

The command syntax is:

dosjob [-W] [ MS-DOS command ]
[ / [ command ] /... ]

NOTE: 'dosjob' essentially performs an 'assign' of a new
SRCSINK channel to the console, followed by a 'set
video -W' and a 'spawn' of a new child process, to
execute the input command string.

NOTE: There is a direct keyboard combination to invoke a
'dosjob'. Pressing from the keyboard or
, will start a new task, just as
if you had typed 'dosjob'. The is used,
instead of just the key, after typing a command.
If both toggles are pressed when the Enter key is
hit, the new task will use the full screen. If only one
is held down, the task will start in a new window.

dosjob /rshell The easiest way to operate in the VMiX
environment is to create a new virtual DOS machine every
time you wish to start a new task. Anytime you use the

The Shell Commands page 1-11

C O M S O F T VMiX 386

'dosjob' command you are creating a new virtual DOS
machine, however, it is more flexible to start it as a
new shell from which to launch DOS commands than just to
have it start a program. To clone the startup (root)
command shell into a 2nd shell, you would type:

do /rshell or do -W /rshell

The '/' tells VMiX this is not a command for DOS, but
for VMiX. VMiX will ask you for a login name. This is
the name that the VMiX status line will display when this
task is at the foreground for kbd input, type:


This is a reserved name for a VMiX operator with 'kill'
and 'swap' process priviledges.

The Shell Commands page 1-12

C O M S O F T VMiX 386

NAME: spawn


-c " sets spawn I/O channel and shell script"

Purpose: To dispatch a background task to be performed
_______ independently and concurrently with everything else.


'spawn' creates a new child process, owned by the invoking
shell. The channel specified immediately after the -c switch
becomes the STDIO channel for the new process. After the
channel number, a script of VMiX shell commands can be entered.
Multiple commands are input, separated by a valid VMiX delimiter
('/' ',' tab or space).

The command syntax is:

spawn -c???? [ [ command ] /... ]

A way to implement EMAIL in your system, is to have a user spawn
an exec job to somebody else's channel, where the 'exec' merely
types a newly created text message file:

spawn -c1 type b:\news\myfile.txt

A more elegant way is to assign a new channel to the device COM1
or COM?, so that we can create a window without disturbing the
user. If a window is created on the user's own channel, then we
have modified his environment from our side.

By using 'dstat -a', we can determine the port # to use to talk
with our target user. In VMiX, ports refers to physical
devices, and channels are logical connections to those devices.
Assume we determined that he is using COM1. From the debugger
shell, we first enable system messages, to see what channel
number VMiX will allocate during our 'assign' command:

set system -m (enables manager msgs.)

then we grab a channel,

assign srcsink 1 (the 1 requests COM1, if you prefer to be
prompted, just type 'assign')

assume that we were informed that channel 6 was assigned, then:

The Shell Commands page 1-13

C O M S O F T VMiX 386

now we 'spawn' to channel 6,

spawn -c6 / set video -w1 40 10 79 / type b:\news\myfile.txt

This created a 10 x 40 window (via channel 6) at the top right
corner of his display. In the example above, the command
'set video -W' could have been used, in place of our manual
'set video -w....' .

Still, a better EMAIL system could be written using the VMiX
API System Services listed in SYSGATE.ASM.

The Shell Commands page 1-14

C O M S O F T VMiX 386

NAME: kill


Purpose: To terminate the execution of an image (.EXE or .COM)
_______ from a process other than the owner. If the target
process shell is not executing an image, then the
process is killed.


'kill' allows a hard terminate of a process or image to be
commanded from another process. This command has two levels
of action. If the target process shell is executing an image
started by a previous exec call, then that image is terminated
via an MS-DOS INT 20h system call. If no image is being
executed then 'kill' will terminate the target process.

The command syntax is:

kill [ process id ]

The utility 'PS.EXE', will list all active (pid's) process id's.

SECURITY: The kill command will normally not allow a user to
________ terminate another user's process. Only root or the
'su' superuser has the access priviledge to terminate
all/any. A regular user can only terminate his own
spawned processes.

The Shell Commands page 1-15

C O M S O F T VMiX 386

NAME: quit


Purpose: To terminate the shell and exit.


'quit' decrements a process's shell level (number of nested
shells) by one and returns to the previous shell, if any.
The root shell is VMiX's top shell for any given user process
If this command is invoked at the root shell level, the user
process is ended.

Normally, the first process started at the console has root
privilege. If the process has privilege and is also the root
VMiX process, then VMiX is also terminated.

In other words, if you are at the first VMiX shell you type
'quit' to end VMiX and return to DOS, otherwise 'quit' will just
terminate the current shell or process.

The Shell Commands page 1-16

C O M S O F T VMiX 386


VMiX 386



The Debugger Commands page 2-1

C O M S O F T VMiX 386

NAME: assign


'assign' allocates a VMiX channel to an owner UID (universal id)
and assigns a VMiX object to the channel.

'assign' allocates extended memory.

'assign gdt' allocates a VMiX 386 global descriptor table entry,
returning a new segment selector for either code or data.



The function of the channel manager is usually transparent to
the user, but experienced users can make use of the low level
interface and manipulate channels directly.

The VMiX input/output system consists of I/O objects and I/O
channels. All VMiX objects are assigned an universal identifier
or UID, including processes. The 'assign' command is provided
to establish connections between objects by assigning channels
that link the connection, usually to an external port number.
These assigned channels can then be referenced by other VMiX

The basic VMiX objects consist of the following:


PROCESS type is a process
SRCSINK type is a tty terminal
CHRSINK...type is a printer
DSKFILE type is a file
MEMORY type is a memory block
BLKSINK type is a disk drive
MANAGER type is an obj manager or driver
MAILBOX type is a mailbox
DATLINK type is a data link

PORTS these are external resources like serial COMM ports
or LPT printer ports (they are sequentially numbered
starting at 0).

The Debugger Commands page 2-2

C O M S O F T VMiX 386

Internally, objects are assigned a numeric identifier or UID.
These can be listed by the utility 'DSTAT.EXE'. Channel numbers
are assigned sequentially on a first use basis. Deassigned or
free channel numbers are reused. 'assign' can be used to
allocate extended memory, to establish channels to external
ports, and to assign channels to processes.

The general syntax for the 'assign' command is:

assign [ client UID / process id ] [ object type ]
[ target port / channel id ]


UID is the identification of the new owner for the channel.
Note: if the owner is to be a process, the PID is equivalent to
the UID of the process.

If client process id is omitted, it defaults to the current

The object type is one of the 9 type names described above.
The complete name must be typed, in upper or lower case.

Ports available for use with SRCSINK type objects (terminals):

0 The Root Console
1 COM1:
2 COM2:
3 COM3:
4 COM4:

Ports available for use with CHRSINK type objects (printers):

1 LPT1:
2 LPT2:

This command syntax creates a channel by linking it to a port:

If object type is SCRSINK, then the third argument is a COMM
port (0-4), where 0 refers to the console and 1 - 4 are serial

If object type is CHRSINK, then the third argument is an LPT
port (1-2).

This command syntax assigns a previously created channel to a
running process:

If object type is PROCESS, then the third argument is a
previously assigned channel id.

The Debugger Commands page 2-3

C O M S O F T VMiX 386

You can use the 'assign process' syntax to assign a new STDIO
channel to your executing process. The original STDIO channel
of the process will remain available for restoring the process
back to its original state. You must repeat the 'assign', and
give the process its old channel id.

The general syntax for the 'assign process' command is:

assign [ client process id ] PROCESS
[ channel id to assign ]

If client process id is omitted, it defaults to the current
process. The new channel you assign must already exist.

You can reassign a process standard I/O (keyboard and video) to
the console, to a COMM port, or to a printer type channel. For
example, to redirect process #1 (use PS.EXE to get the process
id) to COM2 (channel #2), you would type:

assign 1 PROCESS 2

Again, VMiX will prompt you for any arguments missing after the
'assign' command, except for the first argument which is an
optional argument.

This command syntax assigns an extended memory block:

If object type is MEMORY, then the third argument is a block
size in bytes, to assign to the channel. The size will be
rounded-up to the nearest 64k block. Only extended memory can
be allocated by this command.

The extended memory pool can be listed with the utility

NOTE: To be informed, on the screen, of the channel assigned by
this command, use the debugger command 'set system -m' to enable
channel manager messages, before the assign.

NOTE: When assigning a channel to a SRCSINK that is going to be
used for logins, the UID identifing the new owner of the channel
must be set to 0, to indicate the UID of the scheduler,
(example, 'assign 0 srcsink 1').

The Debugger Commands page 2-4

C O M S O F T VMiX 386

Assigning 386 Global Descriptors:

The command syntax is:

assign gdt [ access [ / size ] [ / segment ] ]


access is usually entered as the word 'code', if the segment is
a code segment or as the word 'data', if the access byte of the
gdt descriptor is to be set to data segment access rights. The
user can also enter a decimal or hexadecimal value, if he wishes
to override the default access rights value that VMiX uses for
its segments.

The parameters can be entered in hexadecimal, using the format
0x???? (example, 'assign gdt 0x9B 10 0xF000'
or 'assign gdt code 10 0xF000').
size is the size that the segment is to have, specified as the
number of 512 Byte pages.

segment is the segment address in physical memory that the
selector is to translate to, when loaded onto a segment

If mamager messages are enabled, this command will return a new
selector id.

The Debugger Commands page 2-5

C O M S O F T VMiX 386

NAME: deassign


'deassign' deallocates a VMiX channel.

'deassign gdt' deallocates a VMiX gdt selector.

'deassign mem' deallocates a VMiX extended memory block.


The command syntax is:

deassign [ channel ]


channel specifies the channel number to deassign. This can be a
dangerous command to execute, since STDIO to the root console
(channel 0) could be deassigned, freezing the console. If no
other shell is running, there is no way to assign the STDIO to
the root console again.

NOTE: To be informed, on the screen, of the channel and
IO Request Packets (IRP) deassigned by this command, use the
debugger shell command 'set system -m' to enable channel manager
messages, before the 'deassign'.

The command syntax is:

deassign gdt [ selector ]


selector is the gdt selector returned by an 'assign gdt'.

The command syntax is:

deassign mem [ page ]

where, page is the extended memory page to return to the free
memory pool. The memory was previously assigned with the
'assign' command.

The extended memory pages can be listed with the utility

The Debugger Commands page 2-6

C O M S O F T VMiX 386

NAME: init


" resets the VMiX system timer 11msec clock"

-c " sets communications:
chan, baud, parity, word, stop"

-p " inits parallel port: chan"


(See 'set baud'.)

The Debugger Commands page 2-7

C O M S O F T VMiX 386

NAME: examine


mcb " displays information on the MS-DOS memory control

memory " displays or modifies memory"

status " displays system configuration"


The Debugger Commands page 2-8

C O M S O F T VMiX 386

NAME: set


This is the basic configuration function. There are several
keywords that can be given after the 'set' token to further
specify the area for configuration.

-c " sets communications:
chan, baud, parity, word, stop"

-e " toggles DOS environment protection ON/OFF"
-f " toggles DOS process file inherit ON/OFF"
-n " sets DOS INT21 function maximum nesting level"
-p " sets DOS current process PSP: nuPSP(seg)"
-s " sets DOS virtual size: nusize (4Kb blocks)"

-t " sets font type (0 - 3)"

-a " adjusts program memory: MCB(seg), nusize(para)"
-m " sets program partition size (0 - 1024K)"
-o " sets program memory owner: MCB(seg), nuPSP(seg)"

-b " sets process shell buffer size (0 - 127)"
-d " sets process wait: seconds"
-h " toggles hardware priviledge ON/OFF"
-q " sets queued process contention timer (0 - 255)"
-s " toggles system priviledge ON/OFF"
-t " sets duration of process time slice: ticks - 1"
-w " sets I/O wait before preemption: count"

-a " toggles polling of all channels ON/OFF"
-c " sets remote console channel"
-i " toggles fast RS232 ON/OFF"
-l " sets terminal login channel"
-x " toggles terminal logins ON/OFF"

-c " toggles cursor emulation ON/OFF"
-d " sets frequency of scheduler time slice: ticks - 1"
-m " toggles operator messages ON/OFF"
-s " toggles swapper ON/OFF"
-t " toggles scheduler ON/OFF"
-v " toggles 736Kb DOS space ON/OFF"
-w " sets shutdown wait delay: seconds"

-t " sets terminal type (0 - 9)"

The Debugger Commands page 2-9

C O M S O F T VMiX 386

-c " sets video background/foreground colors"
-C " sets window background/foreground colors"
-m " sets video mode (0 - 18)"
-p " sets video page (0 - 3)"
-s " toggles status display ON/OFF"
-w " sets window size: row0, col0, row1, col1"
-W " auto partitions task windows (Shift-Tab toggles kbd)"



set baud

A valid channel (normally equivalent to a COMM port 1 to 4) must
be given after the -c switch.

The command syntax is:

set baud -c [ channel id ] [ baud rate ] [,] [ parity ] [,]
[ word size ] [,] [ stop bits ]


300 [ same as 30 ]
1200 [ same as 12, 120 ]
2400 [ same as 24, 240 ]
4800 [ same as 48, 480 ]
9600 [ same as 96, 960 ] (Default Baud Rate)
19200 [ same as 192, 1920 ] (Always interrupt driven)
38400 [ same as 384, 3840 ] (Always interrupt driven)
115200 [ same as 115, 1152 ] (Always interrupt driven)

All parameters, except the channel number and the Baud Rate
are optional.

There can only be one channel at a baud rate above 9600, at any
one time. To set a different channel to a high baud rate, you
must first close (reset) the current interrupt driven channel
by using the command 'set baud -c????' (where ???? is the
channel id). Note that no new baud rate is specified. After
this command completes, you may set baud, specifying a new

VMiX INT 14h - Driver Note:

When programming to the BIOS INT 14h Serial Service, VMiX uses
the BIOS codes for:
110 Baud as the code for 19200 Baud
150 Baud as the code for 38400 Baud
600 Baud as the code for 115200 Baud

The Debugger Commands page 2-10

C O M S O F T VMiX 386


set pool

The -m switch can be used to control the amount of memory .COM
or .EXE programs can grab. This command is equivalent to 'exec

The command syntax is:

set pool -m [ max. K bytes ]

The -a switch is provided with the 'set pool' command, to
allow for the release of memory previously allocated by MS-DOS
or to change the size of an MS-DOS memory control block. This
option can also be used to increase or decrease a VMiX memory
control block, and hence the number of pages of memory in the
conventional memory pool. The function depends on whether the
segement address passed is for an MS-DOS MCB, or a VMiX MCB. In
the later case, the paged memory pool is affected. This can be
a dangerous option. To help in determining the arguments for
this switch, use the command 'examine mcb'. It will list the
memory control block chain, in low memory.

The command syntax is:

set pool -a [ MCB address [ / nusize ] ]


the segment address of the MCB and nusize must be specified only
in hexadecimal format. (example, 'set pool -a 26F0 / AF8).

The -o switch is provided to allow for the change of ownership
of memory previously allocated by MS-DOS.

The command syntax is:

set pool -o [ MCB address [ / nuPSP ] ]

The Debugger Commands page 2-11

C O M S O F T VMiX 386


Managing process contention is necessary because of the preemptive
nature of interrupt processing in the VMiX scheduler. The command
below will adjust the sensitivity of the contention timer. A high
argument, in the range 0 - 255, will allow interrupt intensive
to dominate the system for a longer time slice. A low setting will
cause the contention timer to intervene more frequently on behalf
of other tasks in the system that are waiting to execute.

This capability keeps tasks running interrupt intensive programs
(like communications programs) from totally blocking other tasks.

The command syntax is:

'set process -q????' - where ???? is the time (count - 1) before
a blocked task is given a big priority boost.
(default = 175 or 1.9 sec.)

NOTE: ???? is a number 0 and 255 representing the number of timer
tick counts MINUS ONE that a task can block other tasks in
the READY queue because its priority is constantly been
increased by the VMiX preemptive scheduling mechanisms.
The default setting is 175, resulting in a maximum blocked
delay for other tasks wanting a time slice of (176 * 11msec.)
1.9 seconds.

A 2400 baud program will receive interrupts about every
3msec., causing each time an increase of its priority by 2.
The scheduler runs every 11msec., thus finding the priority
of that task higher by 6 and usually higher than other tasks,
so without the contention timer described above, the current
task would hog the system and not give other tasks a time

For optimization purposes, it is possible to control the length
of time an active process will own the CPU, before it has to give
it up to the next process in the READY queue.

The command syntax is:

'set process -t????' - where ???? is the time (count - 1) a task
will continiusly own the CPU in hundreds of
a second. (default = 0 or 1/100 sec.)

The Debugger Commands page 2-12

C O M S O F T VMiX 386

For optimization purposes, it is possible to control the frequency
with which the scheduler task runs, to dispatch waiting processes
(normally 100 times per second).

The command syntax is:

'set system -t????' - where ???? is the time (count - 1) before
the scheduler will run again in hundreds of
a second. (default = 0 or 1/100 sec.)


The 'set remote' command is identical to the 'remote' command
discussed in Section 1.

The 'set terminal -t' command is used to specify one of 7
terminal emulations available at the VMiX serial ports.
Depending what you have connected as a user station to one of
the host ports, you might need to select a different emulation
than the default ANSI.


-t0 = TELEVIDEO 910/920
-t1 = ADM3A
-t2 = VT-52
-t3 = ZENITH H19
-t4 = VT-100
-t5 = Ansi (Default terminal emulation)
-t9 = tty

The Debugger Commands page 2-13

C O M S O F T VMiX 386


Alphanumeric Text Modes:

The command syntax is:

set video -c [ color code ]
set video -C [ color code ]

The color code is a 2 digit hexadecimal number of the form:



B is the background color key and F is the foreground color key,
selected fron the table below. To use this method, the color
code argument must be entered in hexadecimal format. Because
the argument is in hexadecimal, it must be preceeded by an '0x'.



0 black 0 black 8 gray
1 blue 1 blue 9 lt. blue
2 green 2 green A lt. green
3 cyan 3 cyan B lt. cyan
4 red 4 red C lt. red
5 magenta 5 magenta D lt. mag
6 brown 6 brown E yellow
7 white 7 white F brt white

Graphics Modes:

The command syntax is:

set video -c [ color code ]
set video -C [ color code ]

The color code is a decimal or hexadecimal number which
represents the pixels on(1) or off(0) binary patterns on the
screen. See the color code table given below.



0 0x00 00000000 black
85 0x55 01010101 gray
170 0xAA 10101010 gray
255 0xFF 11111111 white

The Debugger Commands page 2-14

C O M S O F T VMiX 386


set video

-s " toggles status display ON/OFF"

The VMiX status line displays at the bottom of the console
display, when enabled with the command 'set video -s' from the
Root Shell. You should enable the status line BEFORE other
tasks are started. If the status line is enabled after other
windows are running, the screen for those tasks might not
display the correct number of program lines.

The status line displays:

the time
the current console VIO channel and task name
the current console video mode
the keyboard toggle keys
[Num Lock]
[Caps Lock]
[Scroll Lock]

The Debugger Commands page 2-15

C O M S O F T VMiX 386


set video

-w " sets root window size: y0, x0, y1, x1"

The -w switch is used to specify the bounds of a new root
window. A root window is where all user dialog with the
operating system takes place.

| VMiX.386 2.6X Copyright ComSoft, Inc.1991|
| |
| |
r | TOP left corner |
| *---------------------------- |
Y o | |y,x | |
| | WINDOW | |
w | | | |
| | y,x| |
| ----------------------------* |
| BOTTOM right corner |
| |
| |
24 --------------------------------------------------------
0 column 79

The command syntax is:

set video -w [ [ top row ]
[ , top col ]
[ , bot row ]
[ , bot col ] ]


set video

-W, " auto partitions task windows
(Shift-Tab moves kbd between windows)"

Supports multitasking from the console (up to 4 windows).
Note that the 'W' must be typed in upper-case, to distinguish
it from the manual Size Window command, described above.

The Debugger Commands page 2-16

C O M S O F T VMiX 386

The command syntax is:

set video -W

This command is sensitive to the number of channels that have
been assigned to COM0, the console. It uses this count to
determine the number of windows to divide the screen.

The 'set video -W' command, is intended to work in cunjunction
with the 'assign' command. The purpose is to split the screen
to accomodate a new channel assigned for a console task, yet to
be spawned.

The nominal set of commands needed to manually start a
background/windowed task at the console is:

'set system -m' will enable operator messages

'assign srcsink 0' will grab a new console (device 0)
channel and display its id # ????

'spawn -c???? set video -W / exec .....' will spawn a new
background task to
channel ?? assigned
and partition the

(press to move the keyboard to the new task

The above sequence can be replaced by the simpler to use,
single command:

'dosjob .....'

where ..... is the same user job string input with spawn, above.

'dosjob set video -W / exec .....'

The Debugger Commands page 2-17

C O M S O F T VMiX 386


VMiX 386



The Utilities page 3-1

C O M S O F T VMiX 386

VMiX includes 8 utility programs:


These programs assist VMiX users and are described below.

Note that you do not need to be in a VMiX shell to execute one
of the utilities. VMiX only needs to be resident. You may
shell out of a word processing program running under VMiX and
execute a utility from DOS.

The Utilities page 3-2

C O M S O F T VMiX 386

NAME: ps.exe


ps " displays all processes status"


This utility displays a list of all currently active processes.
Information on the job being executed, the current priority and
assigned STDIO channel are listed.

The Utilities page 3-3

C O M S O F T VMiX 386

NAME: dstat.exe


dstat " displays all VMiX objects and channel information"

-a " selects only assigned objects"
-r " selects only free objects"


This utility display the object id's of VMiX objects, the type
of object and assigned channels. If no channel is assigned,
then -1 is displayed. The scheduler (process id 0) owns free
objects and channels.

If a channel is associated with a COMM port, dstat will
also display the current baud rate setting for the channel.

The Utilities page 3-4

C O M S O F T VMiX 386

NAME: dpath.exe


dpath " sets directory search PATH for data files"

-v " sets verbose mode (default)"
-q " sets quiet mode"
-r " allows data read only"
-w " allows data read/write (default)"
-h " displays help"


DPATH is a public domain utility, modified to work with VMiX.
This utility is similar to the MS-DOS command 'append' and lets
you specify a path for DOS to use when searching for program
data files (See DPATH.DOC).

VMiX allows independent default disk drives for separate tasks
(or shells) but only one default directory per drive. You will
need to use DPATH when running multiple applications on the same
drive which require different default directories. You use
DPATH the same way you use the MS-DOS command PATH to specify
the search path for executables.

The Utilities page 3-5

C O M S O F T VMiX 386

NAME: loadup.exe


loadup " VMiX loadhi utility to place TSRs above 640Kb"


This utility can be executed from inside VMiX to load a TSR or
VMiX itself to upper memory above segment C000h (386 Mode Only!).

The loaded TSR will be visible only to the process that started
it, since each VMiX task is virtually mapped to a separate
virtual first megabyte. This means that you can have different
(or the same) TSRs active for each partition.

LOADUP will NOT load TSR's on 8086 or 286 computers, unless upper
memory is already provided by EMS hardware or other EMS software.

VMiX is compatible with XMS drivers, like HIMEM.SYS and HIDOS.SYS.
However, VMiX will not work with other 80386 virtual memory managers,
like QEMM.SYS, WIN.COM, 386MAX.SYS, or EMM386.SYS and defaults to
8086 Mode when it detects them.

Since you can not use another extended memory manager when using
VMiX, the LOADUP utility has been provided to move TSRs or VMiX
to upper memory.

The command syntax is:

LOADUP [/help] [/segment=] [/size=] filespec

TO LOAD TSRs (except VMiX)

We recommend that you do the first TSR load with /size=128
(number of 1Kb blocks) and reduce the size if LOADUP reports
memory unavailable.

For subsequent TSR loads, invoke LOADUP again, this time with
/size=0, since the upper memory block has already being assigned,
but not necessarily all used. New TSRs will look for unused
memory within the upper memory block assigned in the first

When LOADUP is first invoked, you want to specify a size equal
to the largest contiguous space available above your video ROM
area (depending on your HDisk controller and other installed
adapters, this area size is usually between 64 and 160 kilobytes).

The Utilities page 3-6

C O M S O F T VMiX 386

If no size is given, LOADUP looks for 64 Kbytes in upper memory
to load the TSR. The second, third, etc. time a TSR is loaded,
you should specify a size of 0 (or, if known, the actual size
required by the TSR).

If you know what you are doing, you may also specify the load
segment location (i.e., /segment=D000).

If your TSRs requires less than 64 Kbytes, then 'LOADUP filespec'
will work fine without any arguments.


in 386 computers. If your system has between 130 and 160 Kbytes
unused space between the Video ROM and the System ROM, VMiX might
fit there (depending on the Version, Shareware vs Reg'd).

Relocating the system reduces the DOS footprint of VMiX to only
38Kb, which will allow larger programs to fit in virtual memory.

To load VMiX high you must first have started a copy of VM_BOOT
in your 386 computer with the startup parameter EMS=FFFF, so that
the first copy of VMiX will not try to initialize EMS memory in
the target upper memory area. To relocate VMiX requires 130 to
160 Kbytes of unused upper memory, usually from segment address
C800 (or CC00) thru EFFF.

Sample command line to load VMiX to upper memory:

VM_BOOT ems=ffff/loadup vm_boot ...

Wait until the first copy of VMiX has shutdown and the new upper
memory copy has started. The entire process is automatic.

The Utilities page 3-7

C O M S O F T VMiX 386

NAME: outside.exe


outside " MS-DOS shelling utility for bulletin board
software executing under VMiX"

-c " selects the COMM port channel for the remote outside


Bulletin Board software usually allows you to install a program
to execute when the SysOp desires to shell out to DOS to perform
some maintenance.

This utility allows you to shell to DOS, when running the BBS
software under VMiX. 'Outside' will spawn a new task for the
DOS shell, independent of the BBS task.

-c1 shell to DOS on COM1 (default)
-c2 shell to DOS on COM2
-c3 shell to DOS on COM3
-c4 shell to DOS on COM4

The Utilities page 3-8

C O M S O F T VMiX 386

NAME: monitor.exe


monitor " utility monitors process or system"

-f " displays information on any open files on the system"
-m " displays a memory map of the first megabyte of
address space"
-p " displays information on the VMiX paged memory pools
in conventional and extended memory"
-r " monitors process registers continuously: process id"


The command syntax is:

monitor [ -f ] [ -m ] [ -p ] [ -r ] [ process id ]

If all switches are omitted, the process block of any specified
process will be displayed. If no process id is given, you will
be asked to supply one; if none is supplied, the default is the
current process.

When the '-r' switch is included before the process id, the
process registers will be continuously monitored until the
'Esc' or the Break key is pressed.

While in the register viewing mode, pressing S will put the
process being viewed to sleep. Pressing Q will wake the

While in the register viewing mode, pressing the 'M' key will
allow you to examine and/or modify memory locations.

The address format is:

segment [ : offset ] [ = byte ]


the '= byte' is optional, for example:

hex address? 550A displays segment 550A:0
hex address? 550A:100 displays segment 550A:100
hex address? 550A:100 = FF sets byte at 550A:100 to FF

The 'examine memory' command does the equivalent from the VMiX

The Utilities page 3-9

C O M S O F T VMiX 386

'monitor -f' allows all open files on a VMiX system to be
globally monitored. Open files will be listed and revised until
the 'Esc' key is pressed.

'monitor -m' displays a map of the first one megabyte of memory
space. The screen displays memory in 1Kbyte (1024) blocks. If
the block is in use by the system, then it is marked by a '$' or
a solid black block, in graphics mode. If the block is in use
by VMiX, then it is marked by a 'V' or a gray shaded block.

Memory control blocks are distinguished by an '=' or a small
solid black block with border, in graphics mode. Memory not in
use is indicated by an '.' or a small solid white block with

The Utilities page 3-10

C O M S O F T VMiX 386

NAME: vsetup.exe


vsetup "Utility executed at startup to process the VMiX
configuration file, VMiX.INI


VMiX.INI is a text autoconfigure file that allows startup
scripts, remote login passwords, and remote login scripts
to be specified by the VMiX system administrator.

This flexible configuration file assists you in:

A) configuring VMiX startup - VMiX or DOS commands that
get executed automatically, after you start the
VM_BOOT.EXE program.

B) entering passwords - up to 8 character long passwords
used to provide controlled access to a VMiX system
that has been configured to accept remote callers
with the 'set remote -l' command.

C) specifying user programs to autostart after a remote
caller has logged-in via a COMM port.

The configuration file is optional and it works in cunjunction
with the VSETUP.EXE utility. This utility is normally invoked
in two ways:

1. in the VMiX startup command line

To ensure that VSETUP.EXE can always find VMiX.INI,
the best way to start VMiX is with a full filespec and
path for VM_BOOT.EXE,

ie., C:\VMiX\VM_BOOT VSETUP (from the VMiX directory)

then, you can change directories, and reset paths and
VSETUP will always find VMiX.INI (during remote logins).

2. appended to the end of a 'set remote -l' command
(for example: set remote -l2 vsetup).

'set remote -l????' by itself, without VSETUP.EXE
restores the default VMiX shell (where access passwords
are not checked).

The Utilities page 3-11

C O M S O F T VMiX 386

VMiX.INI Configuration File Format

File type: ASCII text

Comment Symbol: ;

(everything after an ';' anywhere in a line
is a comment)

Sections: Three Labled Sections

[access passwords]
. ;Multiple text passwords that will be
. ;encrypted the first time VSETUP processes
. ;this file.

[remote startup]
. ;A single line that can include multiple
;commands, executed only at remote loggin.

. ;Multiple lines that can include multiple
. ;commands per line, executed only at VMiX
. ;startup.
. ;It is better to use a single line per
. ;'dosjob' command. For other commands,
. ;concatenate as many as possible on a single
. ;(each line is sequentially processed by
. ;a new VMiX process).

A self-documented sample VMiX.INI file is included as a
template for you to make your own configuration file.

VMiX.INI Configuration File Processing

VSETUP.EXE is the only utility that reads the .INI file.
This utility currently performs 3 functions:

1) If it finds an [access passwords] Section in VMiX.INI,
it backups the file to VMiX.BAK and encrypts the text
passwords, changing the Section name to [encrpt passwords].

Remove the unencrypted file VMiX.BAK from your hard disk,
so that the original passwords remain secret to all other
users. You can copy VMiX.BAK back to VMiX.INI when you
need to change the text password list.

The Utilities page 3-12

C O M S O F T VMiX 386

2) If invoked during startup, it will execute multiple command
lines given in the [startup] Section. This is an alternative
to typing all startup commands in the VM_BOOT command line.
(System Startup Options, however, can ONLY be given at the
command line, since VSETUP runs after VM_BOOT is started.

3) If invoked during a COMM port access, (you must have issued
a 'set remote -l???? vsetup' command) it will prompt for
an access password and match it against the encrypted list
in VMiX.INI. After verifying access, it will dispatch the
single command line listed under the [remote startup]
Section. (The single line can have multiple commands,
separated by a '/').

The Utilities page 3-13

C O M S O F T VMiX 386

NAME: vt.exe


vt " utility to login to a remote VMiX host"


VT can be used to connect to other VMiX hosts from a local
shell. Essentially VT is a remote utility to serially link
together two different VMiX hosts (115.2 Kbaud maximum).
This utility form the basis for a VMiX distributed system in
a network of two or more VMiX systems.

VT will start a remote session with the second computer via the
COMM port currently specified by 'set remote -l ????' (you can
determine the current setting with the 'examine status'
command). You can then execute from host-1 any program on

To set up a single remote session from host-1 connected to
host-2 use the following:

host-1 host-2

set remote -l1 set remote -l1 (COM1 for both)
do vt.exe - (Request host-2 session)
login -(host-2 asks for session name)
(you are in)

To set up dual links (one VT session on host-1 running on
host-2, and another VT session on host-2 running on host-1
use the following:

host-1 host-2

set remote -l1 set remote -l1 (COM1 for both)
do vt.exe - (host-2 session)
login - (session name)
press - (switch to Root)
set remote -l2 set remote -l2 (COM2 for both)
- do vt.exe (host-1 session)
- login (enter name)
press - (return to VT)

NOTE: VT will automatically transmit to the remote host the IBM
function key equivalents (like Alt-X, PgUp, up-arrow, F3, etc.)
you do not need to toggle VMiX's IBM function key emulation by
pressing F.

The Utilities page 3-14

C O M S O F T VMiX 386

NOTE: If you have started a VT session and type 'set baud -c1
2400', you will be setting the remote computer send baud rate,
you will need to press and switch to a local session
to perform the same command for your local computer, so that
both sides synchronize at the new baud rate.

To quit VT.EXE press Z. This will terminate the VT program,
but will not quit the remote session. You should 'quit' the
remote session first (by typing 'quit'), before pressing Z.

The Utilities page 3-15

C O M S O F T VMiX 386

NAME: vw.exe


vw " VMiX pull-down menus utility"

-i " interactive keyboard mode (VW will not be swapped out)"
-m " configure for monochrome display"


VW can be used to start other programs or to set VMiX options.
VW is an easy to use multiple thread environment.

The menu bar displays five user menus:

'Advanced' is a simulation of the tokens normally available
from the VMiX shell.

'Memory' allows you to partition memory and configure memory

'Programs' provides new task start-up and process maintenance.

'Status' displays system information and resource utilization

'Options' is where most configuration choices reside.

Move to the desired menu by pressing the right or left arrow
keys. Select a menu by pressing the down arrow key, by pressing
ENTER, or by typing the CAPITALIZED letter of the menu name.

Select a pull-down menu option by first moving to the desired
item with the down or up arrow keys and press ENTER to execute
the option. Pull-down options that display a '->' indicate an
additional pull-down menu, reachable by pressing ENTER or the
right-arrow key. To exit from the VE utility or a pull-down
menu press the key.

When using VW from a remote PC, while running a remote console
software product, you must tell VW to run in interactive mode
with the command line option: 'VW.EXE -i'. In this mode, VW
will not allow the scheduler to set it to sleep, when there is
no input/output activity.

VW asks for a video page or video mode when starting a new VMiX
shell or MS-DOS shell with FULL screen (use only page 0, when in
386 mode).

The Utilities page 3-16

C O M S O F T VMiX 386

VW will respond to the [Home] key by repainting the menu bar.
On non-386 computers, switching to tasks in different video
pages or modes will sometimes not restore the VW menu bar on
return to VW, so press [Home] to redisplay.

Windows are usually displayed automatically, when a new process
is started. With VW you can size a custom window from the
Options Menu. The 'Resize window' command will ask for the
top-left and bottom-right coordinates, as shown above (Row and
Column), for the new window.

The Utilities page 3-17

  3 Responses to “Category : Alternate Operating Systems - Quarterdeck DesqView, CP/M, etc
Archive   : VMIX285.ZIP
Filename : TECHREF.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: