DTMFAQ

From VistApedia
Jump to: navigation, search
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.
 
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=