DTMFAQ
From VistApedia
GENERAL INFORMATION
about InterSystems'
DTM-PC, DT-MAX and Open M
FAQ Version 1.1.2 25 April 1996
-=-=-=-=-=-=-=-=-=-=-=-=-
Worldwide Support Center
From U.S. and most countries
Tel: +1 (617) 621 0700
Fax: +1 (617) 494 1631
Internet: support@intersys.com
BBS: +1 (617) 494 0867
+1 (617) 225 0475
From Europe
Tel: +44 (0)1753 830 077
Fax: +1 (617) 494 1631
BBS: +44 (0)1753 853 534
InterSystems US: InterSystems Corporation
1 Memorial Drive
Cambridge, MA 02142
Tel: +1 (617) 621 0600
Fax: +1 (617) 494 1631
InterSystems Australia 247 Bouverie Street
Carlton, Victoria 3053
Australia
Tel: +61 3 342 2464
Fax: +61 3 242 2420
InterSystems Brazil Rua Haddock Lobo, 369 Sala 802
Tijuca - Rio de Janeiro - RJ
CEP 20260-131
Brasil
Tel: +55 21 567 3174
Fax: +55 21 567 3137
InterSystems France Tour Suisse
1 Bld Vivier Merle
69543 Lyon Cedex 03
France
Tel: +33 72 11 40 33
Fax: +33 72 11 40 16
InterSystems Germany: InterSystems Deutschland GmbH
Rheinstrasse 16a
D-64283 Darmstadt
Germany
Tel: +49 (0)1651 1747 0
Fax: +49 (0)1651 1747 11
InterSystems Thailand 30th floor, CTI tower
191 Rachadapisek Road
KlongToey, Prakanong
Bangkok 10110
Thailand
Tel: +66 2 261 5012
Fax: +66 2 261 5213
InterSystems UK InterSystems House, Tangier Lane
Eton, Windsor, Berkshire
SL4 6BB, England
Tel: +44 (0)1753 855 450
Fax: +44 (0)1753 855 290
INTRODUCTION: This document lists some of the Frequently Asked Questions
(FAQ) concerning the DTM-PC, DT-MAX and Open M for Windows
products. The answers supplied within are designed to give
the most direct and probable solutions to the associated
queries. However, the answers are not meant to stand as the
only possible resolutions, just as the most likely solution
to the proposed question. Also, this file is not designed
to take the place of the documentation supplied with the DTM
product line. Reading the appropriate manuals at all stages
of the operation of these products will lead to both fewer
problems and to good solutions if difficulties do arise. The
purpose of this file is to supplement the documentation; that
is, if the resolution of the problem is not available in the
the manuals, the DTMFAQ.TXT file and the text file of the latest
patch should be referenced. If a viable solution is still
unobtainable, the DTM support team should be contacted for
further assistance.
As supporters of this particular Open M product line, time
limitations make it difficult to explore all the aspects and
characteristics of the product. Therefore, we ask for your
assistance. If you discover a work-around for a problem, un-
cover a tip to improve performance or have a hint about any
other DTM issue, please contact us by e-mail or fax so that
your ideas may be included in this file. Also, upon the
discovery of any error in the DTMFAQ.TXT document, inform us
of the mistake and we will correct it as soon as possible.
The DTMFAQ.TXT document is available on the InterSystems
bulletin board and is also accessible via the Internet.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
TABLE OF CONTENTS
0. List of new and updated questions
1. Patch, Licensing, BBS, and Internet Information
2. Networking Questions
3. Windows, Visual M, and Visual Basic Problems
4. Memory Issues and Errors
5. Routines, Datasets, and Other System Management Hints
6. Printer, Com Port, and Other Device Problems
Appendix 1. Building Protocol Stacks
Appendix 2. Eliminating General Protection Faults in Windows
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
0. List of new and updated questions since the last FAQ.
Since version 1.1.0 22 January 1996
Part 1: no changes
Part 2: Updated Q21
Added Q50, Q51
Part 3: Added Q22, Q23
Part 4: no changes
Part 5: no changes
Part 6: Added Q19
Since version 1.0.5 21 October 1995
Part 1: no changes
Part 2: Updated Q9, Q14
Added Q38, Q39, Q40, Q41, Q42, Q43, Q44, Q45, Q46, Q47, Q48, Q49
Part 3: Added Q17, Q18, Q19, Q20, Q21
Part 4: Added Q19, Q20
Part 5: Updated Q1, Q10
Added Q18, Q19, Q20, Q21, Q22
Part 6: Added Q18
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
1. Patch, Licensing, BBS, and Internet Information
Q1: How do I install a patch?
DTM patches come in the form of a self-extracting EXE file which
can be found in the PATCH SIG in the ISC BBS. The PATCH .EXE
file must be executed in the directory where DTM is installed.
When asked to overwrite existing files, you must answer "YES".
Then, you need to use the %rload utility to load the whole ob-
ject code into the DTM systems datasets. The SYS-BASE dataset
is by default read only, so you need to modify the .DBD file
(in DTM 4.x), or the .INI file (in DTM 6.x), to be able to %rload
the object code of %m* routines. In DTM 4.x you need to add
the following lines in the .DBD file:
DATASET SYS-BASE
DATASET SYS-RTN
In DTM 6.x you need to remove the /RO flag from the SYSBASE
line in the .INI file:
SYSBASE = SYS-BASE
Then you start DTM using these configuration files and type
"d ^%rload", select the name of the object file (for example,
60ptch15.obj for DTM 6.0 patch 15) and choose the "File Only",
"Object Only" and select "Always" for the overwrite option.
Q2: Do I need to have previous patches?
You don't need to have any patch loaded before installing each
patch. For example, patch 15 contains all the updated routines
to transform DTM 6.0 into DTM 6.0 patch level 15.
Q3: Can I go backwards in patches?
Trying to load patch level X on a system that already has a
higher patch level (X+1 or X+2, for example) will lead to un-
predictable results and could make the system unstable. If
you want to go backwards from patch level X+1 to patch level
X, you would need to reinstall DTM 6.0 before applying patch
level X to it.
Q4: How do I check the version and the Patch level
"w $zver" returns the DTM version number of the DTM image
file (MUMPS.EXE, MAX.EXE, MAXC.EXE or MAXS.EXE). If a patch is
installed, the patch level is the number following a dash ("-").
"d ^%zpatch" will return the same information once the object
code for the patch has been uploaded in DTM. The patch level
should be the same as the one of the DTM image file. Note that
since the %zpatch routine has been created after DT-MAX 4.8
patch level 04 and DT-MAX 6.0 patch level 09, it is possible that
d ^%zpatch returns "undefined routine" though you have correctly
installed the patch. In this event, you should install the latest
patch or upgrade to the next DTM version.
Q5: How do I use the BBS?
To use the BBS, you need to have an account for the Bul-
letin Board Service. To get an account, speak with one of the
BBS Systems Operators. They may be reached at (617) 621-0700.
Then, dial into the BBS (see phone number in this file header)
and once you have logged in, type "S" for <SIGS> and "I" for
<PATCHES> to go directly to the <PATCHES> directory.
Q6: How do I use the Internet?
InterSystems' Domain name is intersys.com (198.133.74.*).
There are a number of ways you can access services.
E-mail: [username]@intersys.com
Support E-mail: support@intersys.com
anonymous FTP: ftp.intersys.com
World Wide Web: http://www.intersys.com
Q7: How can I check that my paper key is what I need?
d report^%mchecklicense gives you all the information about
you currently installed paperkey.
Some elements of the paperkey have a special meaning:
Ux x is the maximum number of users
Jx x is the maximum number of jobs
Px if this is a client-Pak, x is the maximum number
of clients that can use it at the same time.
if this is a server key, x is the maximum number
of clients that can connect at the same time; if this
is a DTM-PC license, you can have up to x*4 network
users (users logged in the clients that are connected
to this server). for a DT-MAX license, you can
have up to x*6 network users.
There are a number of options:
WINDOWS needed for DT-WINDOWS and Visual M
LAT-x DT-LAT support for x LAT devices
ARNET-x ARNET support for x ARNET devices (this
option is available on request for NO CHARGE)
GRAPHICS for DT-GRAPHICS
Some options are only relevant in DTM version 4.x:
DDP for a DDP Client
DDPSERVER for a DDP Server
NETWORK for network support in earlier DTM versions
If your Paperkey is not sufficient for your needs, please
contact your sales representative.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
2. Networking Questions
Q1: Why does DDP set fractional numbers to 0?
DDP sets all fractional numbers to 0 in DTM version 6.0.
This bug is fixed in version 6.2.
Q2: When should I use ISUDP, DDP or Raw Ethernet?
The ISNET protocols are intended for connecting to non-DTM
servers. You can only access globals (not routines) through these
protocols. If your server is a DTM machine, it can only run
1 server job, and a maximum of 16 clients can connect to it.
DDP: this can be used to connect to DSM and MSM systems.
Because it does no buffering, it is therefore more network
intensive and should be avoided when possible.
ISUDP: this can only be used to connect to ISM systems using
the UDP/IP protocol. (the UDP protocol is a connectionless
Datagram protocol encapsulated in IP packets. It is part
of the TCP/IP protocol family). This protocol should be used
where routability is an issue (Wide Area Network) or Raw
Ethernet is not available. The use of this protocol requires
TCP/IP support on the PC. Currently DT-MAX 6.x only supports
TCP/IP from FTP software for ISNET. (Note that DT-MAX 6.3
also supports Wollongong's TCP/IP but only for the relational
server, GBI devices or DT-Networking).
Raw Ethernet: This is the fastest protocol and should be used
whenever possible. Note however, that by default most routers
will filter raw Ethernet packets.
Q3: With 3C509 Network Adapter and ODINSUP, LAT and DDP disconnect.
ODINSUP has been designed to provide an NDIS API on top of
an ODI protocol stack. This is typically needed to have
DDP or DT-LAT running on top of DISKPKTDT (InterSystems' NDIS
packet driver) on a machine that is a Netware client.
The ODINSUP is not designed for the heavy loads that DDP or
DT-LAT networking generate. Used with some adapters that do
not have shared memory (3C509 for example), this causes the
whole NDIS part of the protocol stack to 'crash'. The DDP and
DT-LAT connection would be lost, but the Netware connection
would be intact.
To solve this problem, you can replace the Network adapter
with one that will use shared memory (we use successfully
SMC adapters), or use the ODI packet driver (ODIPKTDT) provided
in DTM 6.3 and available on our BBS.
Q4: My network job (%mnetsql, %mnetbiosa or %mnetspxa) exits
after 10 seconds.
This bug has been observed when the Network section is not at
the end of the DTM.INI file. If you experience other similar
problems, you should add the line "LOG=DISPLAY, GLOBAL".
This logs critical Network Information on the bottom line
of the console and in a global. You can display the network log
with the utility %mnetlog to check what errors have occurred.
This bug has been fixed in DTM 6.2.
Q5: Is IPX faster than NetBIOS?
In DTM 4.x (previous to 4.8 patch level 6) and DT-MAX 6.x
(previous to 6.0 and 6.1 patch level 15) the IPX networking
implemented in DTM is 40% slower than NetBIOS.
DTM 4.8 patch 6 and DTM 6.2 contain a new IPX implementation
of DTM Networking which is approximately as fast as the DTM
NetBIOS implementation. The new DTM IPX code uses more
conventional memory and configuring it is an arduous task.
Note that NetBEUI from Microsoft is usually faster than other
NetBIOS implementations.
Q6: What Novell Driver versions should I have?
The current Novell drivers are IPXODI 3.01, LSL 2.14, VLM 1.20,
and NetBIOS 3.16.
The latest Novell Netware drivers are available from Novell
(via NOVLIB on CompuServe or on the Internet; Anonymous FTP
ftp.novell.com or WWW http://www.novell.com). The latest
drivers are in the following self extracting ZIP archives:
VLMUP2.EXE ODI and VLM drivers
NWDLL2.EXE Netware DLL's for Windows
DRVUP2.EXE Netware Drivers for Windows
NetBIOS 3.16 is the latest version of Novell NetBIOS.
If you encounter problems with this version (for example
DTM clients that disconnect), InterSystems recommends that
version 3.01 be used. We have found problems when using DTM with
NetBIOS versions 3.10-3.15 from Novell:
DTM uses NetBIOS to manage large transfers of data through the
network, consequentially we have found that problems in Novell
NetBIOS version 3.10-3.15 can show up in DTM but not in other
software.
Q7: What's wrong if I have a "no connection to server" message
using IPX?
Check the frame types in NET.CFG; the order of the frame types
in this file is important. The default frame type must appear
first, followed by the other frame types that are supported.
DTM uses only the first frame type specified in the NET.CFG.
Also, prior to DTM version 6.3, if your DTM nodes are on separate
network segments you will need to use the /NET and /ID switches
which are described in the DTM 6.x Network Configuration Guide.
Check that the server is running MAXS.EXE.
Q8: The IPX keywords /NET and /ID do not work.
The "DT-MAX Network Configuration Guide" instructs you
to enter the ID as 6 pairs of hexadecimal digits separated by
hyphens. This is incorrect; eliminate the hyphens
to make this option work. Using the utility %mspxid on the
server will allow you to view the correct form of the ID and
network address to use.
Q9: The Network Monitor (/MONITOR option) does not work,
but the client can connect to the server.
The monitor job uses multicasts to poll other machines on the
network. Bridges, routers, or intelligent hubs may filter those
packets and prevent the monitor from operating correctly. There
is no workaround but to configure the routing devices so that
they do not filter broadcasts.
In DTM 6.2 and 6.3, the SPX network monitor does not work. A
patch is located in NETMGR.RSA in the USER SIG.
Q10: Using zn "user" from the "user/shadow" namespace does not
work, or I cannot change namespaces.
If you use namespaces like "user" and "user/shadow", zn "user"
will put you in the "user/shadow" namespace. You need to type
zn "/user" to go in the "user" namespace.
Q11: The shadow does not start because it thinks it's already run-
ning.
If you use %mhalt to stop a shadow machine, the shadow process
may not have time to terminate properly. Thus, it may not clear
the global that indicates if it is already running or not.
In DTM 6.x, the recommended way to stop a shadow server is
to use %mhaltsys.
Q12: Can I mix different versions of NetBIOS?
The server and all the clients connected to it should run
the same NetBIOS (same Vendor and same version). Because NetBIOS
is not a standard, different vendors may implement it
differently, and the packets may have a different structure.
Furthermore, a single vendor may change some default values
between two versions, and this could cause problems when using
both versions together.
Q13: How do I set up protocol stacks?
Please refer to the document "DTM Configuration Addendum"
or to Appendix 1 of this FAQ file.
Q14: Does DTM support TCP/IP and what version should I use?
Up to version 6.2, DTM supports only FTP Software's TCP/IP
protocol stack. TCP/IP can be used for OMI networking or for
network devices in versions prior 6.3.
DTM Network devices require the use of version 2.22 or higher;
OMI requires version 2.05 or later. ISUDP (UDP/IP) requires
version 2.2. To order the appropriate TCP/IP product, please
contact FTP Software at the address below.
FTP Software
2 High Street
North Andover, MA 01845
(508) 685-4000
DT-MAX version 6.3 also supports Wollongong's TCP/IP for OMI,
Network Devices and DT Networking (DCP). Wollongong's TCP/IP
is not supported for ISUDP Networking in DTM 6.3. Tests have
shown that DCP networking is much faster with Wollongong's
protocol stack than with FTP software's.
The Wollongong Group, Inc.
1129 San Antonio Road
Palo Alto, CA 94303-4374
(415) 962-7200
On the server side, VisualM uses the TCP/IP network devices, so
both stacks can be used.
Q15: With which terminal servers does DT-LAT work?
DTM formally supports terminal servers from DEC, XYPLEX, and Ar-
net. If you are interested in information about compatibility
with specific model numbers, please call DTM support.
When using DT-LAT servers to replace an existing VAX, you need
to be aware of the following facts:
- The DEC terminal servers (series 200 to 700) may need a VAX to
download the firmware from it. DEC also offers some terminal
servers that can operate without a VAX, like the DEC Server
900TX or DEC Server 90TL+, and sometimes there is an option
available to have the firmware on a ROM in the Terminal server.
- Some terminal servers do not have a service responder, so you
cannot do forward LAT to them from DT-LAT because DT-LAT does
not keep a table of all the services available on the Network.
Q16: DT-LAT looses characters since I upgraded to DT-MAX 4.8 patch 06,
DT-MAX 6.0 patch 13 or later
In the LAT devices definition of the MUMPS.DEV file, remove the
"BUFSIZE" parameter (and recompile the .DEV file if version 4.8).
Q17: I'm having DT-LAT problems
Upgrade to the latest DT-MAX version and patch level before
calling InterSystems Support. A lot of problems were
discovered in previous versions of DT-LAT, and all problems
we know about have been fixed in the latest patch level of
the current release. You should also make sure that you use the
packet drivers provided by InterSystems (ODIPKTDT or DISPKTDT).
If you need InterSystems to diagnose a problem, this can only
be done with a trace. You need to type "d trace^%lat" to start
a trace. The trace gets saved in ^%trace, by default in the
SYS-GBL dataset, and this may create a vast amount of data
(10MB traces are not unusual) so you may want to MAP ^%trace to
a scratch dataset. We need a complete trace to be able to
analyze it. Incomplete traces are usually of very little help.
Best is, when all the "start CIRCUIT" commands is in the trace,
i.e. the trace is started before any terminal is connected to
the DT-LAT server.
Q18: My DTM server recently became slow.
When a server becomes slow, it is usually caused by one of three
reasons. The first of these reasons is that the file access mode
has defaulted to access mode 1, which is the slowest of the file
access modes (for a further explanation of file access mode, see
Section 5, Question 11). To discover which file access mode the
system is currently using, run the %ftabdisp utility, choosing
"summary". If for any file the access mode is 1, you need to
run %ftabdisp again and choose "detail". This will give a "Reason
Code", indicating the nature of the problem. (The RC might be
wrong, see Section 5 Question 11). File access mode 2 or 3
indicate a fast file access mode.
The second reason for a slow server is the misuse of the buffer
pool. When the system is running with a heavy load, run the
%buffer utility on the server and choose the summary option. If
the number of buffers in use for a particular sized buffer is
high relative to the others, the number of that particular sized
buffer must be increased in the DTM.INI file or by running the
%mconfig utility. Also, if the number of buffers that need writ-
ing is high, more buffers of that size are needed. The limit for
the total number of buffers is 1600 for the 4.x series and 1800
for the 6.x series. Be sure not to exceed this limit or DTM may
crash at a later time (this DTM 6.0 bug is solved in DTM 6.3).
To check for the third possibility, the %dstest utility needs
to be run. Perform the first %dstest on the largest dataset on
the server while the load is low, and check the number in the
random field. If it is greater than 0.020 (20 milliseconds),
then the dataset has become too fragmented. You need to use a
commercial defragmentation utility to solve the problem.
If the number reported in random field is acceptable, attempt
running a %dstest on the dataset from a client. If the random
number is greater than 0.070 (70 milliseconds), then check the
buffers defined on the client. If the buffer numbers are correct,
there may be a underlying network problem (which you may diagnose
with a Network analyzer). You can also confirm that the problem
is related to the Network if you perform a nettest (you just need
2 machines to run %mnettest) and compare the results with
reference values from another network.
Q19: Can I use different versions of DTM on the same network?
InterSystems technical support will not support Networks that
combine different versions of the product (or different patch
levels). We strongly recommend against any production system
running in this manner.
You can combine DTM-PC clients and DT-MAX clients if the server
is DT-MAX. It is impossible to have DT-MAX 4.x and DT-MAX 6.x
versions on the same Network, because the dataset formats are
different.
There have been some major changes in the DTM 6.3 SPX code that
prevent any combination of DTM 6.2 and DTM 6.3 or later.
Q20: What do I do if I want to run my clients under Windows for
Workgroups and my server under DOS?
One solution is to use the IPX protocol. You need to build
an ODI protocol stack for IPX support on the client and the
server.
Another solution is to use Novell NetBIOS on the DOS server
and to Configure the WFW client to run "IPX/SPX transport
compatible with NetBIOS" as the default protocol, keeping
NetBEUI as a secondary protocol (use the "Network Setup" icon
to change the WFW network configuration).
If you absolutely want to keep NetBEUI as the default protocol
in WFW, you need to install NETBEUI.DOS on the DOS server. To
do this, configure an NDIS 2 protocol stack on the DOS server.
The file NETBEUI.DOS is available in the "NETWORK" "SIG" of our
BBS.
Q21: Why do the clients disconnect in a DTM Network?
To find the cause, you need to check for errors in the errlog
of both the clients and the server (d ^%errdump),
and check the network log of the clients and the server:
To do that, add "LOG= DISPLAY, GLOBAL" in their INI files, and
d ^%errlog to find problems.
If you run the IPX/SPX DTM Networking , you may have following
errors on the DTM server when your network grows:
- "No send buffer available"
- "No answer from target or communication failed -rcv"
- "Unable to hangup connection 58301"
All these problems can have the same cause: the server processes
are too busy to respond fast enough to network requests.
Solutions (valid for IPX/SPX and for NetBIOS):
* Add more server jobs. 2 is a strict minimum. It seems that
for lookup intensive applications, you need approximately 1 job
per 8 IPX clients.
* Set DT-MAX on the clients. DTM-PC on a client will not do
any Network buffering and will create much more network traffic.
* Check the buffers on the client as well as on the server.
* Look for underlying Network problems: High number of
retries, high number of collisions, broadcast storms, or any
abnormal network traffic.
If you still experience occasional network disconnections, you may
want to change some IPX parameters in the NET.CFG of the clients.
It seems that the DTM NetBIOS networking is less affected by
Network problems than the DTM IPX/SPX networking. Thus, changing
from IPX/SPX to NetBIOS may solve the problem.
We are currently investigating a severe problem that causes SPX
clients to disconnect from the server, in both DTM 4.8 patch 06
and DTM 6.2 and later. The temporary solution is to use NetBIOS.
DTM 6.4 should solve this problem.
Q22: What does "Network connection table full" indicate in my
SPX or Novell NetBIOS network?
The IPX/SPX protocol creates a connection table at startup,
using the parameters defined in the NET.CFG. As a default,
IPX allows for 20 sockets and 15 sessions. If you need more
clients to connect to the DTM server, you can add following lines
in the DTM server's NET.CFG:
PROTOCOL IPX
IPX SOCKETS = 40
SPX CONNECTIONS = 35
This will allow 35 clients to connect at the same time to the
DTM server. Note that the keyword "PROTOCOL" must begin in the
first row, and the other lines are indented.
If you use NetBIOS, the lines to add to the NET.CFG are:
PROTOCOL NETBIOS
NETBIOS SESSIONS = 35
NETBIOS COMMANDS = 20
When the IPX protocol stack loads, it will "ignore" those
parameters (an error message appears on the screen), but the
NETBIOS.EXE program will reset the number of sessions and
commands to the right values.
You should verify with "d ^%mnetbios" that the maximum number of
sessions and commands has increased to the correct value.
Q23: How can I force a NetBIOS session to terminate ?
Some NetBIOS errors (as for example "session table full") may
leave some connections in an intermediate state, preventing a
station to log in again (the server believes the client is still
connected, and sends a "duplicate license" message to the
client).
Following command allows you to hang-up a connection from the
server:
w $$hangup^%mnetbios(ses_num,adap_num)
where "ses_num" is the session number, which you can find by
running "d ^%mnetbios" on the server. "adap_num" is the
network adapter number, usually 0.
Q24: %mspxtest does not work across routers.
This is because the %mspxtest does not allow you to specify
the /NET and /ID arguments to reach the DTM server.
There is a modified routine in the "NETWORK" SIG of out BBS that
solves this problem. The file to download is "MSPXT.RSA". This
fix has been put into DTM 6.3.
Q25: My Netware 4 File server shows messages "Router configuration
error detected" "NODE AA0004003E1C() claims network 952AEF01
should be 952AEF01"
This is due to a bug in the SPX Networking of DTM. DTM sends
SAP (Service Advertisement Packets) in a wrong format. Because
these are not required for DTM Networking, you can comment out
following line:
DTM 4.x: "wait-1^%mnetspx" (this line contains "g sap")
DTM 6.x: "wait+3^%mnetspxs" (this line contains
"g sap^%mnetspxs2").
This problem is fixed in DTM 6.3.
Q26: The shadow process does not start, although the status is
"caught up", or "running".
The shadow process uses the global
^%jshadow("SHADOWNAME","status") to hold information about the
status. If the shadow system crashes, or if it brought down
without running "d ^%mhaltsys", it is possible for the ^%jshadow
global not to get updated.
If this happens, you need to kill the SUBSCRIPT
^%jshadow("SHADOWNAME","status") before starting the shadow
process.
Q27: How can I setup 1 server with 2 network adapters ?
You cannot use Novell NetBIOS to address 2 network interface
cards. This should work with other NetBIOS implementations,
using the /ADAPTER parameter in the MUMPS.DBD (version 4.x) or
DTM.INI file (version 6.x).
Q28: How can I setup a DTM 6.x server with both IPX/SPX and NetBIOS ?
In DTM 6.x the IPX/SPX networking uses adapter 0 by default.
Thus, on a DTM server that has both IPX/SPX and NetBIOS enabled,
the server processes will collide with each other unless you use
/ADAPTER=1 for the NetBIOS protocol. You need to set this
parameter in the [NETWORK] section of you DTM.INI file on the
server.
Q29: How are line terminators working on the TCP/IP devices?
When you use a TCP/IP device, the default behavior is following:
Data may be buffered, writing a '!' will flush the buffer and
send the data. '!' signs are always interpreted and stripped. If
you want to send a <CR><LF> sequence, you need to use
"w $c(10)_$c(13),!". You can configure the port so that '!' do
not get stripped, with the open parameter VARIABLE=1. By default,
the TCP/IP device is configured with no character interpretation.
This can be changed the same way as for other devices.
Q30: How should I configure Networking to run DTM under Windows95?
Under Windows95, you should avoid loading any real-mode drivers,
because they are less stable and less performant that the 32bit
protected-mode drivers provided by Microsoft. Furthermore, the
real-mode drivers use conventional memory, leaving less memory
available to run DTM.
- If you want to use NetBIOS networking, we recommend using the
NetBEUI protocol provided with Windows95. For DTM to detect it
correctly, you need to check the checkbox "set this protocol to
be the default protocol" in the Advanced properties of NetBEUI,
using the network icon of the control panel.
- If you want to use the IPX/SPX protocol, we recommend using
the IPX/SPX compatible protocol provided with Windows95. You can
enable the NetBIOS over IPX/SPX and use "set this protocol to
be the default protocol" if you need a Novell compatible NetBIOS,
which gets propagated across routers.
- If you use other networking (DDP, ISNET, TCP/IP), you will
need to load the real-mode drivers (NDIS version 2 or ODI) in
the config.sys and autoexec.bat of Windows95.
- DT-LAT is not supported under Windows 95.
Q31: Is there a way to Telnet to DTM ?
DTM does not include any Telnet, and there are no plans to
implement Telnet in DTM. Instead, DTM includes LAT. You can use
LAT to connect to DTM from a LAT terminal server, or to print
from DTM to a printer attached to a VAX or a LAT terminal server.
InterSystems next generation of products, Open M for Windows95
and Open M for Windows NT will include LAT as well as Telnet.
John Godfrey from Cornell University has developed a Telnet
implementation for DTM, available in the USER SIG of InterSystems
BBS (file QTELN1-1.ZIP). InterSystems provides no support for
this product.
Q32: How can I check from the server if the shadow is running ?
w $$mcheckdj^%mjserver is 1 if the shadow process has been asking
the server for journal file entries in the last 30 seconds,
0 otherwise.
Q33: I get the errors "session timed out" and
"network: malformed buffer -rcv", on client startup, the client
does not connect to the server.
In DTM 6.x, you need to use MAXS.EXE for the server. If you
use MAXC.EXE for the DTM server, the DTM client connects and
immediately disconnects with these error messages.
Q34: Why is DTM so slow over Token-Ring NetBIOS ?
Why does the %mnettest show that the throughput for packets over
4096 bytes is 3 times higher than for smaller packets ?
As a connection oriented transport protocol, NetBIOS uses
Acknowledgment packets (for each data packet sent, the receiver
sends an ACK packet). Since this can generate a lot of traffic,
an enhancement allows the receiver to send the ACK embedded in
its response packet (piggyback acknowledgment). If no response is
being sent within the next 20 ms (T2 timer), an ACK packet is
sent at that time.
The %mnettest utility generates a one-way network traffic
(it sends packets from one client station to a server station).
The %mnettest server is not sending packets back, an therefore
will only send the ACK after a 20 ms delay if piggyback
acknowledgments are enabled; The client waits for the ACK before
sending the next packet.
The "/PBA=0" parameter on the "DEVICE=DXMT0C0.SYS /PBA=0" command
line of the CONFIG.SYS allows you to disable piggyback
acknowledgments, restoring the performance for both %mnettest
and normal DTM networking.
Q35: What is local routing ?
In DTM 6.3, the SPX routing occurs automatically (without
specifying /NET and /ID). Thus, if a DTM client and a DTM server
are located on the same physical segment and use different frame
types (the first frame type specified in the NET.CFG file will be
used for DTM), it is possible to generate "local routing": the
Netware server attached to that segment will act as a router and
translate each packet between the frame types. Each packet will
travel on the same physical network twice: from the DTM client to
the Netware server using the client's frame type, and then from
the Netware server to the DTM server using the DTM server's
frame type.
Q36: Can I use LAT on a WAN ?
Digital Corporation's LAT protocol (Local Area Transport) should
never be used across a Wide Area Network of any type. Some
routers will do transparent bridging and allow you to connect
across a WAN (frame relay, T1, etc.), but the LAT protocol has
not been designed to do so. Doing this will result in dropped
connections due to the network latency (amount of time a packet
needs to travel from the terminal server to the DT-LAT server and
back): The LAT protocol uses a default keepalive of 85
milliseconds. If you need remote terminal capabilities on a WAN,
you have to use the Telnet protocol (implemented in M for
UNIX only).
Q37: Why does "^%gd", "^%g", "^%glist" in an ISNET returns "error in
gwalk+3^%gwalk: function not implemented" ?
This is because these utilities use a DTM extension, $order on
non-subscripted global names, as for example $o(^A).
Q38: At ISNET startup, I get "not enough room for this configuration".
This error appears frequently in DTM 6.3: The ISNET.EXE GCALL
reserves some memory to store DDP structures. The more volumes
you want to access, the more space is needed in the GCALL.
You can successively replace the ISNET.EXE GCALL of DTM 6.3 with
the files ISNET26.EXE and ISNET28.EXE located in the NETWORK SIG
of our BBS, and check if this solves the problem.
Q39: Is the DDP GROUPS option implemented in DTM version 6.x ?
It is implemented in DTM 6.2 and 6.3, but undocumented.
If the computer needs to belong to the GROUPS 1,2 and 4, you
need to add following line in the [NETWORK] section of your
DTM.INI file:
ISNETDDPGROUPS 1,2,4
Q40: How can I prevent a routine running on a network client from
being suspended when the server is down ?
In DTM 6.x, when a client looses the connection to its server,
all the routines get suspended until the connection is restored:
this is called "network hardening" and prevents your application
from exiting with an error "no connection to server or router".
If your routine is stored locally and is not performing any
global access, you can issue the command "zzswitch +1024" so
that is will not get suspended.
Q41: what are "dynamic connections" ?
In DTM 6.x, clients do not need to establish a permanent
connection to all the servers they need to access. Dynamic
connections work with all DCP protocols (NetBIOS, IPX and
TCP/IP), and cannot be used to access the Master server.
If a client wants to access server 102 and 103 with a dynamic
connection, simply replace the "USE 102" and "USE 103" statements
if the client's INI [NETWORK] section with:
ROUTE 102-103
And in the MAP file, add a timeout value in seconds:
SERVER 102: ARCHIVE1 /TIMEOUT=90
SERVER 103: ARCHIVE2 /TIMEOUT=90
When a process needs to access data located on "ARCHIVE1", a
network agent will be started. It will exit after TIMEOUT seconds
of idle time. This can be useful to save memory on clients that
have to connect alternatively to different servers, or to
connect to a server across an ISDN line. Since the master server
needs to be unique for the whole network, please contact
InterSystems Support if you need to setup such a configuration.
Q43: I have 2 distant sites connected through phone lines, Can I use
2 master servers and 2 MAP files ?
The role of the master server is to read the MAP file and
compile it into the ^nspace global. The master server assigns
unique numbers (XDSIDs) that reference all the datasets through
the network. these XDSIDs are then used by clients to access
and update the different datasets.
If you use 2 masters, they may assign different XDSID's for the
same dataset, and clients may write data to the wrong dataset on
the wrong server, creating data corruption on a large scale.
Since the master servers keep some history information when
compiling the MAP file, using the same MAP file on both master
servers is not a solution that guarantees unique XDSIDs.
Q44: Do TCP/IP dynamic connections work ?
There is a bug in the TCP/IP dynamic connections of DTM 6.3. The
patch is in the file DYNATCP.EXE in the USER SIG of the BBS.
DTM 6.4 solves the problem.
Q45: My TCP/IP clients and server cannot connect. The server hangs
or generates an exception when the client connects.
These seem to be a problem between DTM and the TCP/IP name
resolution of certain versions of FTP Software's kernel.
This problem is being investigated.
In the meantime, we recommend that you use only the TCP/IP
addresses to connect, as in:
CLIENT 191.9.200.1
USE 191.9.200.2
Q46: In DTM 6.x, why does the SPX client never go back to MS-DOS when
it does not find the server ?
This problem has been fixed in the file 63PTCH1.EXE located in
the NETWORK SIG of the BBS.
DTM 6.4 solves the problem.
Q47: In DTM 6.2 and 6.3, the SPX network manager and does not work,
and the broadcast utility fails with an "undefined variable"
error.
This problem has been fixed in the file NETMGR.RSA located in
the USER SIG of the BBS.
DTM 6.4 solves the problem.
Q48: Why does "Reverse LAT" loose characters ?
Reverse LAT is intended for an interactive session (when a user
types at a slow pace), and includes a typeahead limit: if the
typeahead limit is set to 32, the system will never buffer more
than 32 incoming characters, and discard the rest.
In DTM 6.x, use the command:
d settypeahead^%mlat1(1024)
to increase the typeahead count.
Q49: If I try to create a server that is both SPX and TCP/IP server,
the SPX server process fails after a minute.
This problem has been fixed. Download the file MSTARTN1.RSA from
the NETWORK SIG of the BBS.
DTM 6.4 solves the problem.
Q50: Some DT-Network NetBIOS clients disconnect, stop working, or the
client shutdown does not work properly.
This problem may occur if you use Lantastic Networking or
Windows for Workgroups (WFW) peer to peer Networking. These
peer to peer networking need a unique NetBIOS name per computer.
DTM Networking also needs a unique NetBIOS name for each of the
client and server machines. The names used for the peer to peer
networking (WFW machine name or Lantastic machine name)
cannot be the same as the names used for DT-Networking.
You could, for example, name John's PC "JOHN" within Lantastic,
but in DTM.INI (or MUMPS.DBD) you should use a different name,
e.g. "DTJOHN":
[NETWORK]
NETBIOS /NORESET
CLIENT DTJOHN
USE DTSERVER
Q51: Why is ISNET (UDP or Raw Ethernet) Networking very slow between
DTM and ISM 6.1 ?
In ISM 6.1, a NEW ANSI collation type (number 1) has been
created. This is not supported by DTM. DTM will not use bloc
mode networking for any global that uses collation type 1. If
you need to access your ISM globals from a DTM machine, use
collation the OLD ANSI collation type 0 for them. 8
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
3. Windows, Visual M and Visual Basic Problems
Q1: The DDE exchange does not work under DT-WINDOWS, is it an er-
ror?
Verify that the DT-MAX Windows name is correct; the name in the
title bar of the DTM DOS box must be DT-MAX in order for the
DDE exchange to function properly. In version 6.2, you can
change the name of this box by adding /WDTMNAME("window name")
to your startup line.
Q2: I have bad performance when using DDP with Visual M?
Networking performance via DDP has been improved in both ver-
sion 6.2 and patch level 15 for version 6.0; DDP Networking is
now faster. Also, it may improve performance if you include
following lines in your %ustart routine:
zzswitch 4096
v 1:^#windowsversion:$zwc(0)
Q3: I cannot start my VB Server from Visual M.
You may have this problem if you use a paperkey that
InterSystems supplied with DT-WINDOWS.
Modify the VISUALM.INI file or the .INI file used to start
DTM by adding BACK = 16k, 32k, 128k or get a new license
for 8 background jobs, which will contain J8 on the paperkey
instead of J4 as supplied with DT-WINDOWS.
Q4: Does DTM run on Windows NT?
DT-MAX does not run under Windows NT. The difficulties stem
from the fact that Windows NT provides only 6 EMS handles, but
DT-MAX requires the use of 10 EMS handles. DT-MAX should run
under Windows 95. Also, DTM-PC may run under Windows NT, but
the performance may be unpredictable.
Q5: Does DTM run on WARP or OS2?
DTM will run under both WARP and OS2, but problems may arise
because DTM accesses hardware directly, whereas WARP and OS2
do not allow this: You probably won't be able to use COM ports
or SmartPorts in OS/2, and InterSystems does not support these
Operating Systems.
Q6: I am having difficulty eliminating GPF (General Protection
Faults) in Windows. What should I do?
See the document contained in Appendix 2.
Remember that the fact that a GPF occurs while Visual M is
running does not mean the bug is necessarily in Visual M. Some
faulty graphic, sound or keyboard drivers may also cause the GPFs
to occur within Visual M.
Some of the GPFs or "system freezes" may be caused by bugs
in the M/Desktop. A few problems have been reported:
- If you have a large event routine, and de-select the
"event view" checkbox of the M/Desktop, a GPF may occur. A
patch for this will be available on the BBS shortly.
- in DTM 6.2, if you edit a line longer that 511 characters,
a GPF occurs.
Q7: How large can the source code in the M/Desktop be?
In DTM 6.2 and DTM 6.3, the maximum size of a routine in the
M/Desktop is 16K. This limit has been hardcoded in the M/Desktop
and will be increased to 32K in future versions. If you reach
the 16K limit in DTM 6.1 and 6.2, your system may truncate the
routine, or you may get an "out of memory" error and loose the
routine.
When you create a form in Visual M, all the M code for all the
objects of the form will be stored in only one M routine.
An M routine can use a maximum of 5 dataset pages for the
source code and 4 dataset pages for the object code; On each
dataset page, approximately 128 bytes (this varies with
the size of the index pages) are reserved for the system and
can't be used to store the routine. The maximum routine size
is 32K for the code as well as for the object. This limit can
be reached only by using 8K data pages.
Q8: Can I use Visual M with Delphi?
Delphi does not recognize some properties of the DTM 6.2 and 6.3
MVB (although the MVB fully complies with the Visual Basic
3.0 VBX standard), so it is not possible to use the MVB inside
Delphi to access DTM. It is possible to use DLL calls from Delphi
to access DTM. This is described in appendix B18 of the "Open M
for Windows 6.2 release notes".
Q9: Are any special configuration parameters suggested for the
Windows95 ?
In the [GENERAL] section of your DTM.INI file, you must use the
options:
DISKMODE = DOS
SCHEDIO = NO
DTM 6.3 does this automatically.
For DTM 4.x, you need to use the "/FM=1" startup parameter, and
you may add following line in the %ustart routine:
v 0:$v(1,276,-3):0
Q10: DTM error 49803 (EMS error 139) under Windows95.
Remove all real-mode drivers and memory managers (EMM386) from
the config.sys and autoexec.bat. They may conflict with Win95 and
they are less stable. Win95 will autodetect the hardware
(plug and play) and load the adequate protected mode drivers.
Q11: Visual M event code is not executed.
This symptom can have one of the following causes:
- You may be using an incorrect Visual Basic version. DTM 6.2
and 6.3 are designed to run exclusively with Visual Basic 3.0
and do not run with Visual Basic 4.
- The DTM installation may have failed. The VB setup kit has a
Bug that causes the DTM installation to install the wrong
options when you do not select the full installation.
- The last upgrade of DTM may be incorrect. You may for example
have installed a DOS version of DTM 6.3 on top of an existing
Open M for Windows 6.2, or chosen not to overwrite a existing
file that needed to be replaced.
- Your existing Visual M applications need to be saved as "Text"
(see Visual Basic menu "Options", "Environment", "Default save
as format") before any upgrade. You also need to recompile
existing applications after an upgrade.
Q12: When installing Visual M, I get an error trying to copy
THREED.VB_ or any other VBX.
There is already an existing VBX of that name in the directory
C:\WINDOWS\SYSTEM.
Rename the existing VBX, proceed with the installation.
If you have already installed some Visual Basic programs that
use this VBX and do not work with the new version of the VBX,
you may need to replace the VBX that DTM installed with the old
version that you previously renamed.
Q13: Some VisualM operations start an M routine that does a very long
processing. It seems to freeze Windows. How can I avoid that?
When a long processing has to be done for an event, a Modal
dialog box containing a single "cancel" button needs to be
started first. This prevents the user from clicking on any
other button of the application while the long processing
takes place. The Modal dialog box allows the use to cancel
the operation. If the long operation is done handled by
Visual Basic code, there must be a call to "Doevents" from
time to time. This releases the control to windows to process
events (like the clicking on another application to put it in
the foreground). This will also allow Windows to process a
possible click on the "cancel" button. If the event code is
written in M, you need to call "d DoEvents^%mvb" regularly.
(This call has been implemented in DTM 6.3).
Q14: Why can't I copy a picture box from VisualM using M code ?
VisualM only recognizes a limited number of Visual Basic data
types: numbers, currency and strings.
Pictures, sounds, etc. are not recognized and cannot be
manipulated from M. This is not a planned enhancement, since the
VB data types need to be converted to M strings in order to
manipulate them, and the DTM string stack is limited to 32K,
which would not allow the system to handle large pictures or sounds.
M code like "_picture1.picture=_picture2.picture" has no effect.
Q15: I get the error "invalid control name" when I use dynamic
controls.
This may happen when you load and unload controls using Visual
Basic. The MVB server accesses Visual Basic controls using a
Handle. If you unload and reload a control using Visual Basic
code, the MVB server will still use the old handle which has been
invalidated. After unloading a control in Visual Basic, you
should issue "d ResetCtl^%mvb" to force the MVB server to refresh
its list of all valid controls. The next time you will load this
control, the MVB server will not have the control in its list of
valid controls, and query Visual Basic to get the new handle to
access the control.
Q16: How can I check from the VisualM lostfocus event routine, what
the next active object will be.
You need to "look ahead" in the event buffer to find out which
object will receive the next setfocus event. To do this, you must
force VisualM to process all the unprocessed events:
d DoEvents^%mvb
; now check the value of "Form.ActiveControl.Caption"
Note that the call is only available in DTM 6.3 and later.
Q17: Can I use Visual Basic version 4.0 for Visual M programming ?
Visual Basic version 4 is available in both 16- and 32-bit
versions. The DTM 6.3 MVB control works with Visual Basic
version 4/16-bit. The M/Desktop control does not work with that
version of Visual Basic. Neither control work with the 32-bit
version for VB4.
InterSystems is working on OCX versions of both of these controls
for use with VB4. When this is completed (no release date has
been published yet), both of the VisualM controls will be
available for the 16- and the 32-bit versions of VB4.
Q18: Why do I get errors when trying to build an integrated setup
kit in DTM 6.3 ?
The "getting started with Open M" manual asks you to define
"IS_RUNTIME" for the Tag property. This is not a defined file
set of DTM 6.3. The READ63.ME file distributed with DTM 6.3
contains a list of the new pre-defined file sets that you can
use instead.
Q19: What Is the Thin-Client? Do I need to install FTP Software's
TCP/IP on each machine?
In DTM 6.3, VAX DSM 6.4 and ISM 6.1, the VisualM .EXE file can
directly connect to a remote server using TCP/IP. On the client,
you only need to install the compiled VisualM .EXE file and some
DLLs (the installation kit installs them automatically), as well
as a WINSOCK compliant TCP/IP support. Winsock is the most
widely used TCP/IP API for Windows, and Microsoft provides it for
free, on WFW 3.11 and Windows 95.
There seems to be a problem when using the Winsock of FTP
Software on the VisualM client side. This problem is being
investigated.
On the VisualM server side, the proper TCP/IP support needs to be
loaded:
DTM supports only TCP/IP from FTP Software or Wollongong, and can
only accept up to 32 concurrent connections.
Q20: Why can DTM not use the WINSOCK interface like the VisualM
thin client ?
The Winsock API (Application Programming Interface) is a Windows
API. DTM running under DOS could not use it. When running under
Windows, DTM runs in a DOS box, and cannot make calls to
Windows DLLs. DTM would require a custom written VxD to be able
to take advantage of the Winsock DLL.
The VisualM thin client is a true Windows program and can make
calls to DLLs so it can use Winsock.
Q21: What files are required on a VisualM thin client ?
You can use the DTM installation to automatically perform a
thin client installation. Simply copying the necessary files,
although not recommended, may be faster:
- The WINSOCK interface needs to be installed and configured.
- The DLL's and VBX that are used for your VisualM .EXE file, as
for example THREED.VBX if you use Three dimensional buttons
in your VisualM application.
- In DTM 6.3, Following VisualM files need to be copied to:
C:\WINDOWS\SYSTEM\CMVISM.DLL
C:\WINDOWS\SYSTEM\DWSPYDLL.DLL
C:\WINDOWS\SYSTEM\NTI16.DLL
C:\WINDOWS\SYSTEM\SSDOCKTB.VBX
C:\WINDOWS\SYSTEM\SSIDXTAB.VBX
C:\WINDOWS\SYSTEM\VISUALM.VBX
C:\WINDOWS\SYSTEM\WINSTUB.DLL
C:\WINDOWS\SYSTEM\TRUEGRID.VBX
C:\WINDOWS\SYSTEM\VBRUN300.DLL
C:\WINDOWS\SYSTEM\DTWX.386
- The File C:\WINDOWS\SYSTEM.INI needs to be edited:
Add the line
DEVICE=C:\WINDOWS\SYSTEM\DTWX.386
in the [386Enh] section.
Q22: How can the code for a VisualM event execute the wrong label?
All the code for all the events and objects of a form is stored
in a single M routine. Thus, if you use the same label twice
for the event code of different objects of a VB form, the
behavior will be unpredictable.
Q23: How can I re-install a previous version of VisualM?
The setup program only replaces .VBX and .DLL files in the
Windows directory if the version currently installed is older
than the one being installed. Thus, if you attempt to install
VisualM 6.2 over a VisualM 6.3 installation, your new VisualM 6.2
won't work properly.
Before proceeding with the installation, you need to delete the
files manually.
You can identify all the VisualM 6.3 files from the
WINDOWS\SYSTEM directory through the time of the file: they all
have 6.03AM as the last edition time. (VisualM 6.2 files have
the time 6.02AM).
To de-install VisualM 6.3 before installing a previous version,
delete following files:
C:\WINDOWS\SYSTEM\VISUALM.DLL (if it exists)
C:\WINDOWS\SYSTEM\MCTEXT.VBX
C:\WINDOWS\SYSTEM\TRUEGRID.VBX
C:\WINDOWS\SYSTEM\VISUALM.VBX
C:\WINDOWS\SYSTEM\WINSTUB.DLL
C:\WINDOWS\SYSTEM\SSIDXTAB.VBX
C:\WINDOWS\SYSTEM\SSDOCKTAB.VBX
C:\WINDOWS\SYSTEM\NTI16.DLL
C:\WINDOWS\SYSTEM\CMVISM.DLL
Q24: I get the error "Invalid MServer Value in OPENM.INI: M Server
error" when running the VisualM application in the Visual Basic
Environment.
This is due to a bug in one of the DLL that are part of the
VisualM 6.3 client. This is fixed in DTM 6.4.
Q25: My %mvbserver process exists. No error is logged in the DTM
error log.
The MVB server does not log errors in the DTM error log. You
will find the errors in the %mvberror global.
Q26: The VisualM timeout does not work.
In DTM 6.3, there was a bug that prevented the VisualM timeout
from working. This is solved in further versions.
In DTM 6.4 and later, in 16 bits mode, the VisualM timeout
is limited to the default TCP/IP timeout (50 seconds) when using
the thin client. This is not a DTM bug, but a limitation of
the 16 bits Winsocks 1.1 interface.
The 32 bits thin client allows you to specify a timeout of more than
50 seconds.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
4. Memory Issues and Errors
Q1: I get an LVMEM overflow when loading large routines.
In the [General] section of your .INI file, add the following:
APPMEMORY= 160K
FOREGROUNDMEM = 16k, 32k, 144k
This creates a large partition. Alternatively, you may try adding the
following statement in the [GENERAL] section:
RESERVEDMEM = 64k (or less if this is too large).
Q2: When starting DTM 6.x under Windows, I get EMS error 128 or my
system freezes.
In the \WINDOWS\SYSTEM.INI file, you should add in the [386Enh]
section:
OVERLAPPEDIO = OFF
In your .INI file (DTM.INI or VISUALM.INI), you should add in
the [GENERAL] section:
SCHEDIO = NO
If you system uses the DTM Networking features, you can also add
NETHEAPSIZE = 24
in [386Enh] section of the \WINDOWS\SYSTEM.INI file.
Q3: What is Virtual DMA Services (VDS)?
VDS stands for Virtual DMA Services, where DMA is the acronym
for Direct Memory Access.
DMA allows peripherals to transfer information to the computer
RAM while the CPU does something else. DMA are mostly used by
SCSI disk controllers.
VDS is a specification that avoids memory conflicts between a
peripheral that would transfer information to an EMS page,
and the EMS handler that could swap this page out at the same
time.
If your computer uses a SCSI disk controller that uses DMA (most
of them do), you need to load a VDS compliant driver provided
by your disk controller manufacturer. The Adaptec drivers are of
the form "ASPIxDOS" (the most common is ASPI4DOS) and must be
loaded at the very beginning of the CONFIG.SYS. The routine
VDSTEST.RSA located in the USER SIG of our BBS lets you check for
any VDS problem on your system.
Some interesting insider information is provided in:
file PW0519.EXE on ftp.microsoft.com directory /Softlib. Extract:
VDS are provided through Interrupt 4BH. The VDS provider software
sets a bit in the BIOS data area to indicate the availability of
the VDS. Before using VDS, an application or driver must load the
byte at address 0040:007Bh. If bit 5 of this byte is set, VDS
provider software is present. If bit 5 is clear, the VDS are not
available. The whole DMA Application Programming Interface is
described in:
file VDS.EXE on ftp.microsoft.com directory /Softlib.
Q4: How is memory managed in DTM 6.0, in DTM 6.3?
DT-MAX 6.0 requires at least 2.0MB of expanded memory for opera-
tion. The file 60PTCH15.TXT included in patch level 15 for
DTM 6.0 contains valuable information on how memory is managed
in DTM 6.0 and higher.
Because the %config utility of DTM 6.0 patch 15 only reports the
memory status as it was at startup time, it is sometimes
insufficient to diagnose problems.
The %job utility dynamically shows the amount of free memory. The
upper left part of the display "Mem Segs:" shows 2 or 3 numbers.
The first value is the amount of free EMS, the next values
represent the different segment(s) of free conventional memory
(below 640K). This can allow you to diagnose why a job does not
start (not enough EMS to hold the job's LVMEM, STRSTK, SYSSTK),
or why a system job exits or crashes (not enough free
conventional memory). Many system jobs use conventional memory
while running: It is wise to have 16K of conventional memory
free just after startup; compiling, journaling, login process
all use some conventional memory.
Q5: I get the error "no EMS manager" when I install DTM 6.1.
When DTM 6.1 is installed over Windows for Workgroups, the 32-
bit file access mode must be disabled, otherwise, DTM will not
recognize the EMS that is present. This problem is caused by a
WFW bug. Once DTM is installed, you can set back the 32 bit file
access mode.
Q6: How do I get the meaning of a DTM error number?
When running M, you can obtain the error text from an error
code number by typing "w $zename($zerr)", where $zerr is the
error code number that was received. Information concerning
errors may be also found in the appendices of the appropriate
"Programmer's Guide" and some network error code information
can be found in the appendices of the appropriate "Network Con-
figuration Guide".
Q7: What is a "name table overflow"?
This means that the part of the local variable segment which
stores names has been filled. The simplest fix is to increase
the size of the local variable memory segment (also LVMEM):
by default, the name table uses 1/8 of the LVMEM, up to maximum
8700 bytes. To make the name table use 1/4 of the LVMEM, issue
following command in the %ustart routine:
v 1:296:$c(2)
To increase the maximum name table size to approximately 16K,
issue following command in the %ustart routine:
v 1:294:16300
To increase the actual name table size to over 8K, you need to
issue both commands and possibly increase the LVMEM size.
You can check the size of the name table for you job by using the
"examine" option of the %job utility.
Q8: What is a "new stack overflow"?
The LVMEM (local variable memory) is divided into the name table,
the heap, and the New stack. The heap and the New stack grow in
the opposite direction to fill up the LVMEM.
The new stack size can be increased in size only by increasing
the size of the LVMEM.
Q9: My system is hanging or rebooting, I get QEMM Exception 6 or 12,
what should I check?
System hangs are usually caused by one of five things: memory
conflicts, IRQ conflicts, VDS conflicts (see VDS), DTM bugs, or
I/O port conflicts.
First check for memory conflicts. You need to use MSD.EXE
(Microsoft diagnostic, provided with MS-DOS 6.0 and with Windows).
You need to start the computer without EMM manager (EMM386.EXE or
QEMM386.EXE) to run MSD. Every segment marked as "ROM" or
"possibly available" in the MSD memory map needs to be excluded
in the EMM command line. To exclude the area B800 through BFFF,
and F000 to FFFF you would modify the CONFIG.SYS like this:
device=c:\MDDOS\EMM386.EXE RAM X=B800-BFFF X=F000-FFFF
If you run DTM under Windows, you MUST use the same exclude in
the \WINDOWS\SYSTEM.INI file; This is done with the keyword
"EMMExclude" in the [386Enh] section:
EMMExclude=B800-BFFF
EMMExclude=F000-FFFF
Second, check that all IRQ's used on your system are unique.
Third, make sure that you are using a VDS compliant
driver to ensure that your SCSI controller isn't creating a
memory conflict (see Q3 of this section).
Fourth, check that the I/O addresses being used on your system
unique.
If you suspect this is caused by a DTM bug, try to isolate the
cause: is there a specific action that causes the system to
hang? You will find in this document a few major DTM bugs that
cause the system to hang.
Q10: Why do I get a message indicating insufficient memory when I
file a routine or run %dscompress?
The reason for this error is the compiling process and some
dataset utilities cannot use any EMS segment; they require
conventional memory instead. Often, a 16k segment of conventional
memory must be free to perform these functions.
Use the %job utility to check the memory segment sizes. The first
segment shown is the LIM 4.0 EMM memory that is available. Sub-
sequent segments are for non-LIM 4.0 EMM memory, and it is one
of these segments that needs to be 16k or larger in order to
perform compilations and some dataset utilities.
In DTM 6.0, the keyword "RESERVEDMEMORY" in the .INI file allows
you to specify the amount of conventional memory that must
remain free for such operations.
Q11: What is an "FDB Table full" error?
The table that DTM uses to track dataset file extents is full.
You either have very many datasets or your datasets are very
fragmented. More recent versions of DTM (4.8 and 6.0) have a
larger FDB table. You can also lower your FDB table utilization
by defragmenting your disk. The utility %ftabdisp shows the
fraction of FDB table utilization in the upper right corner of
the dataset file display. For each file, nFAB-1 is the number of
fragments: if this is over 20 or a file, you should consider
defragmenting. Note that the FDB is only used for file access
mode 2 or 3.
In DTM 6.0 and later, MAXC.EXE only has 3,000 blocks in the FDB
table, while MAXS.EXE has 12,000 blocks in the FDB table. On a
system that opens a large number of datasets, we recommend
using MAXS.EXE.
Q12: What does the message "Bad index structure" indicate?
Your dataset is corrupt. Recovery can be done with:
%dscompress - be sure to use "Repair" mode
%dsbackup & %dsrestore - be sure to use "Repair" mode
%dscompact - not available in all DTM versions
and could cause further problems;
You *NEED* to do a backup first!
Q13: My system is performing slowly. What can I do about this?
If your system suddenly got slower then a large dataset probably
dropped into file access mode 1 due to dataset fragmentation.
Use %ftabdisp to confirm this. Defragment your disk to fix this
problem.
The second most likely cause of slow performance is the exis-
tence of too few buffers. The utility, %mbdt (summary) or
%buffer (summary) in version 6.x, reports on buffer counts.
Make sure you are running with sufficient buffering. See also
question 18 in the networking section.
Q14: How do I shut down DTM automatically?
To shut down DTM automatically, use the %mhaltsys utility. This
utility has two entry points, "warn" and "nowarn". With the
first entry point, warnings will be broadcast on the system that
a shut down will occur. With the "nowarn" entry point, the sys-
tem will simply come down. Either way, this Automatic Shutdown
utility will end DTM background jobs, terminate all other pro-
cesses and return the node to the DOS prompt.
zzswitch +8
d nowarn^%mhaltsys
h
Q15: "Error 53297: undefined variable while setting up DTM memory
layout."
This DTM 6.x error occurs if you try to start DTM on a machine
that has no EMS support loaded. Check in the CONFIG.SYS if
HIMEM.SYS and EMM386.EXE are loaded. You should also remove the
"NOEMS" parameter if it is present on the EMM386.EXE command
line.
If you have:
DEVICE=C:\DOS\EMM386.EXE NOEMS
Change it to:
DEVICE=C:\DOS\EMM386.EXE RAM
Q16: DT-MAX exits back to MS-DOS when "No free job" error occurs .
This bug may occur if you have defined a login with %setlogin.
When the job limit is reached, if a user attempts to login with
a username that has been defined with %setlogin, the system may
exit back to the MS-DOS prompt or hang. The workaround is to
avoid defining a system stack in %setlogin for this username.
This bug will be fixed in a coming version.
Q17: DTM error "no free job" when I create more than 32 jobs.
My license should allow more than 32 jobs.
The MAXC.EXE executable only allows you to create 32 jobs. To be
able to create more jobs, you need to use MAXS.EXE.
Q18: I get "string stack overflow" or "local variable memory overflow"
when using $$files^%dos() to list the content of a large
directory.
This function will create a string with a listing of all the
files in the directory. When used within a small partition, or in
a directory with many files, the string gets too large for the
partition. the file "DIR.RSA" located in the developer SIG of our
BBS provides a routine that puts the result of the "dir" command
into a global instead.
Q19: I get a "mismatched procedure return" error when running
^%journal in DTM 6.3
This bug if fixed in the file 63PTCH01.EXE located in the PATCH
SIG of the BBS.
Q20: What are the hardware requirements for DTM 6.3 ?
For a single user DOS client: 2 MB of RAM minimum.
8 MB recommended for performance.
CPU 80386 minimum.
For a VisualM client: 4 MB of RAM minimum.
8 MB strongly recommended.
CPU 80486 DX 66 MHz minimum.
For a Server: 16 MB. The performance is better
if the server does not run in
Windows.
CPU 80486 DX 66 MHz minimum.
A full installation of DTM 6.3 fits into 30MB of hard disk.
The VisualM thin client requires at least 1MB of free hard
disk space.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
5. Routine, Dataset, and Other System Management Hints
Q1: I have a lock on a server that hangs for 60 seconds the first
time that I issue it.
In DTM 6.0, the server keeps track of all the locks set by
clients in a lock table. You can check its content with the
utility %lockexam. If the lock manager is enabled (LOCK=YES in
DTM.INI), the clients will be able to restore their locks on
the server after a server crash. When a server is started (after
a normal or abnormal shutdown) it will not be able to set any
locks during 60 seconds. The client's lock managers can use this
time to reconnect to the server and repopulate the server's
lock table. This 60 seconds period is hardcoded in the routine
%mlockman at the tag lockwait.
If you are not planning to run the lock manager on your network
(in case of a server crash, the locks owned by clients will be
lost) and you want to be able to start an application that sets
locks on the server just after startup, you can add the following
line at the beginning of your routine:
v 3:20:$zwc($zh*18.2)
Or if this does not fix the problem, you may want to insert a
"q" just after the tag "lockwait^%mlockman".
Q2: If I type "d ^%mjob" or "d ^%job", DTM hangs.
At the beginning of these routines, the call to cpucal^%mapi
could cause busy systems to hang. This error is fixed in patch
level 15 for version 6.0 and in version 6.2. If you run another
DTM version, you can comment out the first line of the %mjob
routine, "d cpucal^%mapi".
Q3: How can I enable and disable logins ?
The command "v 1:0:2" will disable logins on your system.
Use "v 1:0:-2" to enable logins again.
Q4: Can I use multiple MAP files with DTM 6.x in a networked environ-
ment?
The answer is no. The master server is unique on the Network,
and it is the only machine that reads the MAP file from disk
and compiles it to a global, generating an XDSID (Extended
Dataset ID) for each dataset accessible over the network. All
the servers and clients over the Network will use the XDSID to
access datasets: if the MASTER were not unique, clients could
be writing and reading from the wrong datasets. Only DTM
Networking uses the XDSIDs: if you use ONLY the ISNET protocols,
serial networking or OMI, each DTM machine needs to be a "master"
and have a local MAP file. A machine is a master only when
the INI file keywords "MASTER=" and "ID=" have the same value.
Q5: I get a "record too long" error at startup, when the system tries
to compile the MAP file in DTM 6.x.
The MAP file is compiled into the ^nspace global located in the
syscnf (as defined in the DT-MAX .INI file) dataset. The default
syscnf dataset, SYS-GBL, has a data page size of 2048 bytes. For
large MAP files that contain a high number of "MAP" statements,
this data page size should be increased to 4096 or 8192. The
easiest way to do this is to create a new dataset with larger
data pages and use the syscnf option to point to it on the Master
server.
Q6: Is there an equivalent of the /BIG option in DTM 6.0?
In the DTM.INI file, add the lines
APPMEMORY= 160K
FOREGROUNDMEM= 16K, 32K, 144K
This will increase the size of the foreground process to the
maximum. If you still get "stack overflow" messages, you can
increase the first parameter to 32K.
Q7: I can't start a job in DTM 6.0.
If you set passwords on namespaces (using %setlogin), you
will have to specify the password each time you start a job,
even if it is in the same namespace:
job ^routine:nspace="namespacename:password"
This problem is corrected in DTM 6.2, where you only need to
specify the password when you start a job in a different
namespace.
Q8: I get a password lookup failure when trying to login after
startup.
There are two noteworthy causes for a password lookup failure.
The first is that the system datasets are corrupted. To test for
this symptom, re-install DTM into a new directory and run a
%dsverify on the system datasets. To do this, rename the
possibly corrupted system dataset and reference them in the
DTM.MAP (or MUMPS.DBD) file of the newly installed version,
before starting and running the %dsverify.
The other possibility is that a patch could have been installed
incorrectly. See section 1 for the correct patch installation
procedure.
Q9: Is there international character support with the DTM product?
DTM currently supports ISO LATIN I international characters.
Kanji is also supported and is available in a separate product.
Q10: My international characters do not work.
MAXC does not support the use of international characters in
version 6.0. Use MAXS instead.
This problem has been fixed in DTM 6.3.
Q11: One of my system jobs does not get started.
Check in the error log (d ^%errdump) for any error message
from the job. If this is a network job, the network log should
contain the error message.
Most of the system jobs (NetBIOS or IPX/SPX server or agent
process, M/Desktop ...) need to reserve some conventional
memory, and will exit if there is not enough conventional
memory available.
You can check the amount of conventional memory available with
%job (Q10 in section 4).
Q12: What are disk access modes and their values?
There are three disk access modes: NORMAL, BIOS, and DOS. DOS
disk access mode (also file access mode 1), uses the DOS
"File Handle" mode. This is the standard method by which most
DOS applications read and write files. It can be quite slow,
especially for large files. The BIOS disk access mode (also
file access mode 2), uses the BIOS read/write calls that
bypass DOS and use the ROM BIOS routines directly to perform
disk I/O. Finally, the NORMAL disk access mode, (file access
mode 3), uses DOS "Absolute Sector" read/write functions to
access the disk. This requires that the disk volume be formatted
with 512-byte sectors and needs DOS 4.0 or later for volumes
larger than 32Mb.
DT-MAX attempts to open files in "Absolute Sector" mode first,
then tries "ROM BIOS" mode and uses "File Handle" mode last. Be-
cause file handle I/O is usually much slower than the other meth-
ods, it is DT-MAX's last choice.
Since DT-MAX usually makes the best choice for the method of
performing disk I/O automatically, specify DISKMODE in your
DTM.INI file only if you need to (if the current disk access mode
is "DOS", setting DISKMODE to "BIOS" won't have any effect).
On a client, you may want to use DISKMODE=DOS to save some
conventional memory. Also, if you are running WFW and 32bit file
access mode, performance may be better with DISKMODE=DOS than
without 32 bit file access mode and with DISKMODE=BIOS.
Q13: Once DTM is running, how can I check the startup parameters ?
After DTM has been started, this information is available in
the PSP (Program Segment Prefixe) of the DT-MAX .EXE file:
w $v(12,128,-5)
will display the command line parameters.
Q14: I have the error "attempt to write on read-only dataset" when I
try to install M/SQL or a patch.
By default, the SYS-BASE dataset is read-only. All %m* routines
are stored in SYS-BASE. M/SQL, patches or other object code
may fail to load properly if they contain %m* routines.
To allow writes on the system datasets, see Q1 section 1.
Q15: Using DOS variables like %MYNODE% or DTMNODE and DTMID for the
DTM.INI file causes the error:
"Invalid name - must be 1-15 characters alpha".
MS-DOS does not strip the spaces that you use in the "SET"
command:
SET MYNODE =SERVER1
will create a DOS variable that has the name "MYNODE " (MYNODE
with a trailing space).
SET MYNODE= SERVER1
will create the correct DOS variable "MYNODE", but the content
will be incorrect. Be aware that MS-DOS even counts the trailing
spaces, for example: " SERVER1 " is 9 characters long.
Q16: What are the maximum dataset sizes in DTM 6.0 ?
In DTM 6.0, the maximum dataset sizes are related to the page
size that you choose:
Page size =P
Max size in bytes = 127*P*P
512 -> 256MB
1024 -> 1GB
2048 -> 4GB
4096 -> 16GB
8192 -> 256GB
We recommend using datasets with 4K data and index page
sizes for optimum performance.
Q17: Why do I get EMS error return code 139 when running DTM in
a compressed disk under Windows95 ?
This problem comes from the fact that the DTM datasets are
compressed. The compression scheme used by Windows95 seems
to be incompatible with DTM. You must mark the datasets as
"no compression", but you can still compress other files on
your disk.
Q18: How can I debug a %m routine ?
You need to type "zzswitch +32768" before you can step through
a %m routine.
Q19: How can I get the value of a DOS environment variable ?
w $zzenv shows you a list of DOS variables and their values.
Q20: Some users may need a very large partition for some tasks and
a much smaller one for other tasks. How can I configure the
system to optimize the memory without the user logging in and out?
Here's a trick that should allow you to configure the
partition size "dynamically". This solution is transparent to the
user so that he does not need to log out and back in under
a different user name.
This example works for a user running the M shell at the PC
console:
zzswitch +8
j ^%mshell:(pdev=1:lvmem="131k":strstk="31k":sysstk="16k") h
This stops the current job, and immediately restarts a new one
with a larger partition size.
Q21: International characters do not display correctly with mode VT=1.
In mode VT=1, DTM uses the translation table 31 (ixxlate=31), and
will display the international characters incorrectly on the
console if they do not follow the ISO Latin 1 representation.
On the console, VT=2 enables VT220 escape sequences emulation
but turns of the character interpretation, so that you can
specify the value for ixxlate (the default of 2 should work fine)
Q22: How can I use International characters in the "ze" editor ?
Create a ^%sys("editor","xcept") global that contains a list
of all extended characters that you want to allow in the "ze"
editor. For example:
s ^%sys("editor","xcept")=$c(164)
allows you to use the "¤" character in the "ze" editor.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6. Printer and Com Port Problems
Q1: I appear to be having flow control problems on my SmartPort
device. Some of the symptoms are $c(17) or $c(19) appearing in
the input stream and print jobs losing data after 4-10 pages.
This is a common problem with SmartPorts which is the result of
incorrectly loaded SmartPort drivers. You can check if your
drivers are loaded correctly by running the %smartdata utility.
You should contact ARNET Technical Support to get the latest
version of the SmartPort drivers.
Q2: My printer tries to login, or I get a "no free user slot"
message.
If you set the /TERM option at startup, DTM will interpret any
incoming characters on serial lines as login attempts (a serial
printer sending an XOFF can be interpreted as a login attempt).
DTM will try to spawn a login job for those devices. This often
results in the message "no free user slot" appearing on the
console. To solve the problem, you need to add the parameter
"nologin=1" in the device definition of the MUMPS.DEV file. For
DTM 4.x, don't forget to compile the DEV file after this
modification (/CCF startup option).
Q3: I want to be able to test if the printer is on-line, off-line
or out of paper.
See the routine PPTR.RSA in the "USER" SIG of our BBS.
Q4: I want to use COM1, COM2, COM3 and COM4.
Usually, COM1 and COM3 are configured to use the same IRQ (4),
and COM2 and COM4 share IRQ 3. In standard configurations, DTM
does not support IRQ sharing. The only conditions that allow
IRQ sharing are:
- the use of a PC with and EISA or MCA bus.
- the use of an I/O card that is specifically designed for
IRQ sharing. This last solution has not been proven to work.
We would appreciate any feedback from customers having used
this second configuration successfully.
If you need to use more than 2 COM ports on a PC, we strongly
recommend the use of an Arnet extender. Arnet SmartPorts or
ClusterPorts provide much more reliable solutions for DTM and
avoid loosing characters at high speeds.
Q5: What does a "device not ready" error indicate?
This indicates that the i/o address specified for the particu-
lar serial port, which isn't an intelligent port, is incorrect.
Typically, this will happen if the device is defined in the
MUMPS.DEV, but there is no corresponding definition in the
MUMPS.HDW file.
Q6: Why doesn't my new modem answer when I dial into a DTM system?
Why does my modem answer and hang-up less than a second later?
Check that the modem has "auto-answer" mode turned on. If your
modem is Hayes compatible and connected to device 100, you can
try from the DTM prompt:
o 100 u 100 w "~~~+++~~~ATS0=1"_$c(13),!
Note the "~" signs that send a "wait" for 1/2 second, and the
"+++" that switch any Hayes modem in command mode. These have
proven to be necessary on some systems. After this command,
the modem should pick up the phone after the first ring.
If the modem picks up but no login prompt appears, the modem
ha probably "quiet mode" turned off. The "Hayes" command to
turn on "quiet mode" is ATQ1:
o 100 u 100 w "~~~+++~~~ATQ1"_$c(13),! c 100
Q7: Why doesn't any data get to a serial port when I write to it?
Also, when I then try to close the port, the close will wait
indefinitely.
If the device opens correctly, then the IRQ is probably specie-
fed incorrectly in the MUMPS.HDW file. The close will then
wait because there is unwritten data in the output queue. This
can happen if the interrupts are not serviced for the port's
IRQ.
Q8: Why does my modem keep disconnecting when I use the "MODEM ="
option of DTM?
The "MODEM =" option is designed to provide for modem security,
not to facilitate modem use. This option actually makes it
harder to use a modem. The option may be set to disconnect if
either a CD or DSR signal is dropped. Try running without the
"MODEM =" option. Then, if you need the option, add it again
and monitor the serial line signals with a break-out box.
Q9: How can I use %setlogin to configure tied terminals differently
on each client?
The %setlogin utility saves the login information in the SYS-GBL
dataset located on the master server (in the global ^login), and
if you try to configure a tied terminal (device 200 for example)
on differently on two clients, the second definition will
overwrite the first one.
The solution is to set SYSVAR 3,3 to have unique $IO across the
network. You will then use CLIENT1_200 and CLIENT2_200 to
differentiate between the 2 terminals when defining a tied
terminal.
Q10: Error in Arnet startup: No error text available for error code
6402.
The File MDOS.OBJ in the USER SIG of the BBS should solve this
problem. DTM 6.3 also solves this DTM 6.2 Bug.
Q11: I receive an <Interrupt> when reading characters from a COM
port.
To prevent DTM from interpreting CTRL+C characters coming from
the device you need to do following:
u 100:(ixxlate=0:ixinterp=0:editmode=0:modem=0)
BREAK -1
Q12: Error in Arnet startup: BIOS failed to execute.
This may happen if there is a problem while accessing the
adapter memory located on the ClusterPort. This can be caused by
faulty hardware or by a memory conflict, possibly with the
EMS page frame.
Before trying to use an ARNET adapter with DTM, you MUST run the
Arnet diagnostic program, and it must succeed entirely.
Q13: "undefined variable, entry point:" while trying to login from a
tied terminal.
This error occurs with DTM 6.0 when you try to login on a
terminal from a network client. This is solved in DTM 6.0
patch 15 and DTM 6.2.
Q14: When I startup MAXC.EXE with a SmartPort or a ClusterPort, the
system hangs, or the port initialization fails.
The MAXC.EXE is a smaller image of DTM that does NOT contain the
code for SmartPorts nor ClusterPorts and it cannot be a network
server (only a client or a standalone machine).
For machines that have SmartPorts or ClusterPorts, you need to
use MAXS.EXE.
Q15: I have a routine that writes to a principal device, and I need
to run it in the background. Each time it does "u 0" it errors
out with "bad device number".
There may be a solution that allows you to run this routine
without modifying all the places that have "u 0" or "u $p".
You can issue some commands that will open a device, and then
declare this device to be your principal device:
zzswitch 4096
v 2:^#pPrincipalDevice:$v(2,^#pCurrentDevice,4)
Q16: I get the message "logins are disabled, please try later" when
trying to login in DTM 6.x.
This can be because logins have been disabled, either manually,
or through a utility like %mhalt. You can usually use "EMERGENCY"
on the console to force a login o Please note that there is no
echo while you type this in. You can then re-enable logins with a
view command (see DTMFAQ.TXT).
You may get the message "logins are disabled, network server is
down";
In this case, an "EMERGENCY" login is not possible, because some
critical information (namespace mappings) is located on the
master server that is not reachable. Instead of rebooting the
client, you can force a shutdown by typing "DOWNHARD" on the
console (not echoed).
Q17: How can I prevent broadcast messages from appearing on printers ?
Define the printer ports in the MUMPS.DEV files with the
"P" parameter as for example:
200: SMART= P:MYPRINTER /wrcr=1; (add other parameters here)
Q18: The line editor does not allow me to edit a DOS file from a
terminal in DTM 6.2 or 4.8
This problem is solved in DTM 6.3.
For DTM 6.2 or 4.8, you can download the file EDITORS.RSA from
the PATCH SIG of our BBS.
Q19: Why does my serial Printer suddenly stop working ?
It is possible that DTM has changed the baud rate of the port.
To make sure this does not happen, replace the "autobaud=1"
parameter from the device definition in the MUMPS.DEV with
"autobaud=0". If you use DTM 4.x, you must recompile the
MUMPS.DEV file when starting up DTM the next time (use
the "/CCF" command line option).
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Appendix 1. Building Protocol Stacks
This appendix describes how protocol stacks work and how to configure
them for different network setups.
NDIS BINDING
The NDIS specification, developed by Microsoft and 3Com allows multi-
ple protocols to co-exist with one or more network adapters. All of
the drivers are loaded in the CONFIG.SYS (unless you are using the
32-bit NDIS3, in which case Windows loads the driver itself), starting
with the protocol manager, then the MAC drivers, followed by the actu-
al protocols themselves. The function of protocol manager PROTMAN.SYS
is to provide the drivers with configuration information (from the
PROTOCOL.INI file) and to link the protocols to the MAC drivers.
When a MAC driver loads, it calls the protocol manager through a well-
defined interface (by opening the file PROTMAN$ and using the DOS
IOCTL calls) and asks for its configuration information. This infor-
mation is read from the section in the PROTOCOL.INI file that matches
the driver name. The MAC drivers can then initialize and report any
errors.
When a protocol driver loads, it makes calls to the protocol manager
to load its configuration information and to find out to which MAC
drivers it is supposed to be binding. When the NETBIND.EXE utility is
run in the AUTOEXEC.BAT file, it calls each of the drivers that have
successfully "connected" to the protocol manager and the binding pro-
cess takes place. Any final errors are reported at this point.
CONFIGURING ODINSUP
More often than not, a single protocol stack is enough, usually ei-
ther ODI or NDIS. Occasionally, both stacks will need to be loaded,
for example, if an NDIS packet driver is needed as well as a NetWare
connection using ODI. The utility ODINSUP.COM allows both protocol
stacks to co-exist using the same network interface card. The use of
ODINSUP incurs no performance penalty compared with using the native
NDIS MAC drivers. ODINSUP currently supports only Ethernet and Token
Ring network topologies.
We are assuming that an SMC Ethernet adapter is present and the ODI
drivers have been installed into the C:\NWCLIENT directory on the PC's
hard disk. Any NDIS drivers are assumed to be in C:\ETHER. The nec-
essary entries in the significant configuration files are as follows.
CONFIG.SYS
DEVICE=C:\ETHER\PROTMAN.SYS /I:C:\NWCLIENT ;Protocol Manager (1)
DEVICE=C:\ETHER\DISPKTDT.DOS ;Packet Driver
AUTOEXEC.BAT
C:\NWCLIENT\LSL ;Link Support Layer
C:\NWCLIENT\SMC8000 ;MAC Driver (for SMC)
C:\NWCLIENT\ODINSUP ;Links ODI MAC Drivers
;to NDIS
C:\ETHER\NETBIND ;Now bind NDIS Stack
C:\NWCLIENT\IPXODI ;IPX Protocol (ODI)
The ODINSUP driver should be loaded after LSL and the ODI MAC drivers,
but before NETBIND is called. Any ODI protocol drivers, such as IPX-
ODI, should be loaded after NETBIND.
PROTOCOL.INI
[PROTOCOL MANAGER]
DriverName = PROTMAN$ ;Protocol Manager Sec-
;tion
[PKTDRV]
DriverName = PKTDRV$ ;Driver Name
Bindings = SMC8000 ;MAC Driver to bind to
IntVec = 0x62 ;Interrupt to use
NET.CFG
PROTOCOL ODINSUP ;ODINSUP Protocol
BIND SMC8000 ;SMC8000->ODINSUP->NDIS
LINK DRIVER SMC8000 ;MAC Driver (for SMC)
FRAME Ethernet_802.2 ;Default frame type
;first
FRAME Ethernet_802.3 ;This supports old
;Netware
FRAME Ethernet_II ;Other frame types to
FRAME Ethernet_SNAP ;support
Both protocol stacks can now run, accessing the same network adapter
through a single MAC driver (the ODI SMC8000 MAC driver). The BIND
statement of the PROTOCOL ODINSUP section in NET.CFG controls to which
ODI MAC drivers that NDIS protocols can bind. The BIND statement has
an optional second argument that specifies the instance number of a
particular adapter type (if more than one of a type is present).
For example, if you wish to create a gateway between two dissimilar
network topologies, such as Token Ring running NetBEUI (NetBEUI - Net-
BIOS Extended User Interface) and an Ethernet running IPX/SPX, but you
had no ODI driver for NetBEUI, then the following configuration using
ODINSUP could be used.
CONFIG.SYS
DEVICE=C:\ETHER\PROTMAN.SYS /I:C:\NWCLIENT ;Protocol Manager (1)
DEVICE=C:\ETHER\NETBEUI.DOS ;NetBEUI for Token Ring
AUTOEXEC.BAT
C:\NWCLIENT\LSL ;Link Support Layer
C:\NWCLIENT\SMC8000 ;Ethernet MAC Driver
C:\NWCLIENT\TOKRING ;Links ODI MAC Driver
;to NDIS
C:\ETHER\NETBIND ;Now bind NDIS stack
C:\NWCLIENT\IPXODI ;IPX Protocol (ODI)
PROTOCOL.INI
[PROTOCOL MANAGER]
DriverName = PROTMAN$ ;Protocol Manager Sec-
;tion
[NETBEUI]
DriverName = NETBEUI$ ;Driver Name
Bindings = TOKEN ;MAC Driver to bind to
Commands = 16 ;other parameters
Sessions = 12
NET.CFG
PROTOCOL ODINSUP ;ODINSUP Protocol
BIND TOKEN ;TOKEN->ODINSUP->NDIS
LINK DRIVER SMC8000 ;MAC Driver (for SMC)
FRAME Ethernet_802.2 ;Default frame type
;first
FRAME Ethernet_802.3 ;This supports old
;Netware
FRAME Ethernet_II ;Other frame types to
;support
LINK DRIVER TOKEN ;Token Ring MAC Driver
FRAME Token-Ring ;Default Token Ring
;Driver
FRAME Token-Ring_SNAP ;Necessary
This configuration would only allow the NetBEUI driver access to the
Token Ring adapter, not the SMC Ethernet adapter. This kind of config-
uration could be used to set up a firewalled gateway between a public
TCP/IP network, such as the Internet and a secure Novell Network.
(1)-Don't load this into high memory
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Appendix 2. Eliminating General Protection Faults in Windows
The following list can be expected to eliminate 95% of all General
Protection Faults (GPFs) in Windows 3.1. If it is possible, try each
item serially rather than simultaneously.
1. Add MaxBPs=768 to the [386enh] section of SYSTEM.INI.
2. Use SCANDISK or CHKDSK before starting Windows. Fix all reported
errors.
3. Check that the TEMP directory exists and that there is spare disk
space. To find out where this directory resides, check the DOS
SET TEMP = environment variable. In the Windows startup batch
file, WIN.BAT, delete all *.TMP files in the TEMP directory.
4. Try loading SMARTDRV into conventional memory with the /L switch.
5. Remove screen-saver TSRs, like AfterDark.
6. Set the system to VGA mode rather than a higher resolution mode.
Make sure the latest drivers are installed. The Windows VGA dri-
ver is known to be very reliable.
7. Turn off 32-bit disk access.
8. Turn off 32-bit file access if you are using Windows for Work-
groups.
9. Clean up the CONFIG.SYS and AUTOEXEC.BAT files. Eliminate ANSI.
SYS, MOUSE.COM and other unused drivers.
10. Upgrade to Windows 3.11 (for stand-alone Windows).
11. Make sure the correct version of DOS is running on your machine.
12. Make sure that the Windows SETUP has the correct machine type.
CD \WINDOWS and run SETUP.
13. Get application maintenance releases.
14. Test for and remove any viruses on your system
We recommend using suggestions 1, 2, 3, 9, 10, 11, 12, 13 and 14 under
any circumstances. Suggestions 4, 5, 6, 7 and 8 should be tried, but
if they don't participate in the resolution, they can be returned to
their original settings.
Most of the suggestions from this list came from "Mastering Computers,
Inc.", publishers of the Graunke Report.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=