ERROR: Cookies are diabled, site may not work without enabling cookies

The
B
oat
A
nchor
M
anual
A
rchive

Path: /hobbes/os2/info/tips/

This is the BAMA archive. These manuals are available for download and free of charge. Do not be tricked into paying for a manual that is available here for free.

I am now accepting new manuals for inclusion in this archive. Contact and submission information below

Updates

  • 2024-05-31
    • Well, Google's 'advertising optimization' has now become so distracting as to trick people into visiting other sites. So I have removed advertising until I can find a better solution. One option may be sponsorship, anyone interested?
  • Sponsorship!
    • We are very graitful to Neill, who supports BAMA in gratitute with his financial support
      • It's free to use, but every little amount helps keep it that way!
  • 2024-12-11
    • 24 new manuals added in agilent, b&k, fluke, hammarlu, military, north-atlantic, radioshack, rider_pa, and sylvania.

Directories:

bigdsk:

INTRODUCTION
------------

Like many of you, I own a large hard disk which, inconveniently, has
more than 1024 cylinders.  This disk, a middle-aged ESDI unit, is structured
with 1222 cylinders, 15 surfaces (heads), and 36 sectors per track.

Many folks (including some IBM guys) have said that OS/2 2.0 is compatible
with such disks, if some special care is taken during installation.  More
recent opinion has been that OS/2 is not yet compatible with these disks,
unless they are SCSI units.  Regardless, after much trial and many errors, 
I have successfully configured my disk.  

Before I relate the procedure which worked for me, I'd like to address
the question of "why?"  In many cases, the hard disk cannot be used to
its full capacity unless these "excess" cylinders are used.  In other
cases, such as mine, the disk controller supports "sector mapping" or
"sector translation" -- essentially hiding the physical configuration of
the disk from the operating system and "mimicing" a disk with fewer 
cylinders and more heads or sectors per track.

I could have used sector translation on my ESDI drive.  In fact, I _did_
use sector translation at first.  My motivation for using "native" format
was to increase the performance of OS/2.  ($OPINION ON)  HPFS and disk
caches depend in some ways on the physical layout of the underlying drive.
Caches know how to read one "track" (cylinder+surface) ahead to speed 
transfers.  My drive seemed to be doing an excessive amount of work, 
compared to what I was accustomed to under DOS.  I theorize that one
reason for this is because my drive is "lying" about its actual physical
layout, thereby defeating some of the "enhancements" of the operating
system.  Indeed, after eliminating sector translation, my drive seems to 
be "snappier" (technical term).  I do not have measured statistically 
significant data to back up this opinion.  I CAN'T SAY WITH CERTAINTY
THAT THE BENEFIT FROM THIS PROCEDURE IS WORTH THE TROUBLE. ($OPINION OFF)

PROCEDURE
---------

To implement this procedure, you will need the program SpeedStor by 
Storage Dimensions, or its equivalent.  (I first tried Norton Utilities 
alone, without success.) SpeedStor is a DOS program, and I doubt it will 
run in a VDM under OS/2.

1.  Start with a clean sandblasted disk.  Be sure any valuable data is
first backed up, because it will _definitely_ be lost during this 
procedure!

2.  Decide how many partitions you need.  You can't use the entire disk
as one partition, because the boot partition must be <1024 cylinders.
Since you are reading this document, you will have to partition your 
disk into at least two parts.

3.  If you want to use BootManager to implement multiple operating systems,
be sure to leave a "hole" of at least 1M byte at the front of the disk.
You must calculate how many cylinders this will occupy.  In my case, each 
cylinder holds 15 (heads) * 36 (sectors/trk) = 540 sectors.  Since each 
sector is 512 bytes, it requires 4 cylinders on my drive to store 
BootManager (540 * 512 = 1080K).  This "hole" is left implicitly.  
SpeedStor allows you to specify the beginning and ending cylinder for 
each partition.  I just started my first partition at cylinder 4, 
head 0, track 1.

4.  Define your chosen partitions as "DOS" partitions.  It may not be
significant, but my first attempt failed when I defined one of my partitions
as "SSTOR" readable instead of DOS.

5.  Exit SpeedStor and start the installation of OS/2 2.0.  Load the first
two disks (Installation followed by Disk 1), and hit ESC to exit the
installation process.

6.  Run FDISK from Disk 1 of the OS/2 2.0 distribution.  You should see
your partitions already defined.  Note for BootManager users: you must have
a "bootable" partition for each operating system you wish to install.  I
had to "delete" one of my middle partitions, then "create" the same 
partition to mark it as bootable.  Define one of your partitions as 
"installable", and the OS/2 installation will use it by default.

7.  If you want BootManager, install it at this time.  Define which 
partitions are bootable, and the default partition.

8.  Reset the machine and install OS/2.  From this point on, you can
install OS/2 normally.  Be sure to choose "format partition" when offered.

I successfully installed a multi-boot sustem with DOS 5.0 and OS/2 2.0.
For my system, I defined five partitions (four actual, one an "extended"
partition containing two logical drives).  The partitions are:

Boot Manager  1M     ****
DOS 5.0 Boot  10M    FAT
OS/2 2.0 Boot 65M    HPFS
DOS files     100M   FAT   | Extended partition
OS/2 files    145M   HPFS  |

After going through this, I'm not sure the benefit is worth the hassle.  If
I knew at the start how much trouble it would be to discover this stuff,
I probably would have abandoned the idea!

Thanks to John Bridges for his help.

-- Joe Barnhart 76174,1573

bootdisk:

 Creating a Boot disk for OS/2 GA version for FAT FILE SYSTEM.

 Morton F. Kaplon CompuServe ID 73457,437
 Voice Phone 215/758-9686

 The procedure has changed from the Beta Versions. The Installation disk has
 SYSINSTX.COM on it as well as  OS2KRNLI, OS2LDR, OS2LDR.MSG and a lot of
 other files which are not needed. Copy SYSINSTX.COM to your C: drive
 and from there give the command "SYSINSTX A:", where you have a formatted
 hi density disk in A:. All SYSINSTX does is copy the hidden file OS2BOOT
 to the A: drive. The other three OS2*.* files on the installation disk are
 not hidden and you can copy them to a: via C: or by whatever means you want.
 It is important to rename OS2KRNLI to OS2KRNL on the boot disk being created.

 The rest of the required files are all on Disk 1 of the Installation Set
 and they are listed below. There are a number of files with the numeral 1
 in their names. These files are for a CLONE. If you have a PS-2 machine
 there is a corresponding set, also on Disk 1 which have a 2 in place of the
 1. Use those. If you have a PS-2 you probably also need to copy the file
 ABIOS.SYS which is on Disk 1 also. On Disk 1 there is a file named OS2SCSI.DMD
 which is not listed below. That is presumably their generic driver for SCSI
 drives and is probably needed for those with that kind of hard drive, and
 for which there should be a corrsponding statement in config.sys.

 I am not sure that all of these are absolutely required but I tried to
 get it down to a size that would fit on a 5 1/4" floppy and when I got
 there, I called it a day.

 Directory of  a:\*.*  Wed  04-29-1992  Files on the Boot Disk

ansicall.dll    438  ___A_ Copied From Disk 1
bkscalls.dll    401  ___A_ Copied From Disk 1
bmscalls.dll    398  ___A_ Copied From Disk 1
bvhinit.dll    9203  ___A_ Copied From Disk 1
bvscalls.dll    454  ___A_ Copied From Disk 1
clock01.sys    3666  ___A_ Copied From Disk 1
cmd.exe       87552  ___A_ Copied From Disk 1
config.sys      439  ___A_ Copied From Disk 1 and amended as listed below
country.sys   24604  ___A_ Copied From Disk 1
dos.sys        1142  ___A_ Copied From Disk 1
doscall1.dll  87884  ___A_ Copied From Disk 1
ea data. sf    3584  RHSA_ Created when os2krnli copied from Installation disk
harderr.exe   14436  ___A_ Copied From Disk 1
ibm1flpy.add  24026  ___A_ Copied From Disk 1
ibm1s506.add  12908  ___A_ Copied From Disk 1
ibmint13.i13   9564  ___A_ Copied From Disk 1
kbd01.sys     29013  ___A_ Copied From Disk 1
kbdcalls.dll    858  ___A_ Copied From Disk 1
keyboard.dcp   5177  ___A_ Copied From Disk 1
moucalls.dll   1010  ___A_ Copied From Disk 1
msg.dll         477  ___A_ Copied From Disk 1
nampipes.dll    711  ___A_ Copied From Disk 1
nls.dll         465  ___A_ Copied From Disk 1
os2boot        1099  RHSA_ Created on boot disk by sysinstx
os2char.dll   56320  ___A_ Copied From Disk 1
os2dasd.dmd   31994  ___A_ Copied From Disk 1
os2krnl      716044  ___A_ Copy os2krnli from Installation Disk to os2krnl
os2ldr        32256  ___A_ Copied from Installation Disk
os2ldr.msg     8440  ___A_ Copied from Installation Disk
print01.sys    8934  ___A_ Copied From Disk 1 Needed Only if need to print
quecalls.dll  14994  ___A_ Copied From Disk 1
screen01.sys   1441  ___A_ Copied From Disk 1
sesmgr.dll    31256  ___A_ Copied From Disk 1
sysinst1.exe   4224  ___A_ Copied From Disk 1
syslevel.os2    169  ___A_ Copied From Disk 1
viocalls.dll   1825  ___A_ Copied From Disk 1
   1,227,406 bytes in 36 file(s)         1,234,944 bytes allocated
     222,720 bytes free

If print01.sys is not included, then the files could be encompassed on
a 1.2M 5 1/2" floppy.

On a 3 1/2" drive there is sufficient space for chkdsk.com, a modest size
editor (I use Qedit's Q.exe which is only about 48K) and there is still
quite a bit of space left over.

<-- Contents of CONFIG.SYS on boot disk -->
buffers=32
iopl=yes
memman=noswap
protshell=sysinst1.exe
set os2_shell=cmd.exe
diskcache=64,LW
protectonly=yes
libpath=.;\;
pauseonerror=no
codepage=850
devinfo=kbd,us,keyboard.dcp
rem devinfo=scr,ega,vtbl850.dcp
device=\dos.sys
rem device=\mouse.sys
set path=.;\
set dpath=\;
set keys=on
rem if you do not need to print from boot disk next below is not needed
basedev=print01.sys
basedev=ibm1flpy.add
basedev=ibm1s506.add
basedev=ibmint13.i13
basedev=os2dasd.dmd
rem device=\testcfg.sys

In case you haven't noticed it you can now include in config.sys a
command (for example)  call=c:\os2\xcopy.exe c:whatever d:whatever
or what have you. It is very useful to back up the \DESKTOP and
\os2\*.ini files on the fly. This is noted in the Manual.

comhack:

From: tedm@agora.rain.com (Ted Mittelstaedt)
Subject: How to modify cheap com port cards
Date: Sat, 3 Oct 1992 21:35:49 GMT

  Modifying a simple COM port is easy, I'll tell you how I modified an internal
modem card that I have to use IRQ2/9.  Keep in mind that I have not done this
with the COM card I was referring to previously.  I don't think it would be
difficult, however, as it appears to be the same setup as the internal modem.



           HARDWARE HACKING: MODIFYING A SIMPLE(CHEAP) COM PORT TO
                                 USE HIGHER IRQ's

   First of all, lets discuss the idea of what an IRQ is, and how it's 
implimented on an AT, just so we are all clear on the concept.

  As most people probably know, on a standard AT there are 4 I/O port memory
locations commonly associated with serial communication ports, and there are
only 2 commonly associated IRQ's that are used with these locations.  What 
does this mean?  Well, here goes:

  A COM port on an IBM AT class computer usually consists of what are known as
UARTS.  These are physical chips that translate the parallel data from the 
computer's bus to serial data that the modem needs.  These are usually stand-
alone chips that reside on a "serial port card", however in the case of 
the cheaper internal modems they can be a small section of the modem chip,
which typically would be a larger chip containing the UART, the modem, and so
forth.
  UARTS take up what is known as "I/O Port Memory" when they are plugged into
the computer.  The memory locations referred to by COM port card makers and
others are actually the starting I/O memory address of a number of I/O ports
"a block" that contain various UART programming registers for the chip.
  The memory locations on an AT that have come to be known as the "standard"
locations are:
   03F8  02F8  03E8  02E8  (these are hexadecimal numbers)
  Now, There are 2 ways to program UARTS, the first is "interrupt driven" and
the second is "polled"  With Polled operation, the subject of IRQ's has no
relavence, because the IRQ is not even active.  Instead, the Operating System
is supposed to periodically read some ports in the port block to see if a
character has arrived.  Needless to say, this makes for very crude operation
since many characters can come and go before the OS gets around to checking
the port.  Worse yet, if no characters are coming in at all, the OS is wasting
CPU cycles on useless instructions to get incoming characters when there 
aren't any to get!  Polled operation is the type of operation that the BIOS
sets up for the COM ports when the computer is started, it is what is going
on when you TYPE a file to the COM port from the DOS prompt.
  This is how the designers of the AT could get away with supplying only 2
IRQ's to the 4 com ports.  Since the BIOS programs the UART to go into polled
mode, there is never an IRQ conflict, at least when the machine starts, there
isin't.
  Of course, communication programs have loads of characters coming in that
can't wait for the OS to poll.  So, the concept of the IRQ comes into play.
  An IRQ is simply this: a wire that runs from a chip deep in the bowls of the
AT called an "Interrupt controller" and connects to one or more of the UARTS.
When a UART receives a character, it "triggers the IRQ" by dropping the 
voltage on the wire, this signals the Interrupt controller to wake up and
do something about the incoming character.  If the Interrupt controller is
properly programmed, and the UART is programmed to be in the "interrupt
driven" mode, what happens is the controller interrupts the CPU and the CPU
supposedly starts executing a routine to fetch the character from the port.
  This is where the fun and games start.  With the "standard" AT, if you plug
4 UARTS (com ports) into the 4 I/O memory locations, the default settings on
the serial cards (or internal modems) will connect the IRQ wires from COM1 &
COM3 together, and COM2 & COM4 together.  This pair of wires will then be
connected to the Interrupt Controller.  This is great for Polled Operation,
because the IRQ lines are not active, but less than desirable for Interrupt
Driven operation.  The reason is that software is generally not written to
expect this, the biggest problem is what if 2 ports connected together receive
a character at the same time?  Software to support IRQ sharing must check
each port connected to the same IRQ to make sure that no character came in when
the Interrupt controller is triggered.
  Because of this, various schemes have arisen to obtain more IRQ lines for
the COM ports/and or share the IRQ lines available.  The problem with them is
that there is no standardization, and worse a lot of programmers are
"unclear on the concept" so even if there were a standard half the software
would probably not impliment it correctly.
  Another problem is the difference between the XT and the AT.  With an XT,
you get only 1 Interrupt Controller chip which limits you to a grand total
of 8 IRQ lines.  Some of these are used for such essentials as the keyboard
and the clock, so you really only get 5 free.  Of the 5, one is IRQ2, that
goes to the video card for the Horizontal Retrace (which is hardly ever
used unless you like CGA cards) and 2 others go to the Printer Ports. (of
which there are 2 on XT & AT's). So, you really only get 2 good ones, unless you
like to lose one of your printers, or take a chance on conflicting with your
SoundBlaster/Midi card (which is usually connected to IRQ2).
  With an AT, you get 2 Interrupt Controllers, so you get 15 total.  Wait, I
hear you saying, 8 + * = 16.  Well, that is true, but the way that the AT
designers decided to implement the second Interrupt Controller is by hanging
it off IRQ2 on the first one.  They then ran the wire from IRQ9 on the second
to the same buss connector used for IRQ2, and did some fiddley-fancy with the
BIOS so that your cards that expected to see IRQ2 thought that they were.
  So, you can see that the problem of IRQ's on the AT is not just a hardware
one, it is software as well.  This article will attempt to tell you how to
configure separate IRQ's for the 4 com ports, but if your software is not
written to use anything other than the default connections, you won't get
anywhere.

  The first thing you need to know is where the physical contacts are for
the various IRQ's  Here is the pinout for the standard AT:

  B4 = IRQ9      }
  B21 = IRQ7     }
  B22 = IRQ6     }---- These are all on the "8-bit" buss connector
  B23 = IRQ5     }
  B24 = IRQ4     }
  B25 = IRQ3     }

  D3 = IRQ10     }
  D4 = IRQ11     }
  D5 = IRQ12     }---- These are all on the "16-bit" Buss connector
  D4 = IRQ15     }
  D5 = IRQ14     }


Standard AT Buss layout:

A1                      A31  C1         C18
---------------------------  --------------
|                         |  |            |      Front of Motherboard
|                         |  |            |
---------------------------  --------------
B1                      B31  D1         D18

To find out which pin is which, start counting from the back go forward

  Now, take a look at that port card that you are planning to modify.  Find
IRQ3 on it and trace the circuit trace.  It will usually go to a jumper block
that is configured something like this:

       IRQ3   UART#2
   -------------
   |       . . |
   |       . . |
   -------------
     UART#1   IRQ4

And the instructions with the card for configuring it will go something like
this:

  Uart1 (com1) to IRQ4  set jumper like this:

----------------
|          . . |
|          --- |
----------------

  Uart1 (com1) to IRQ3 set like this:
----------------
|          | . |
|          | . |
----------------

  Uart2 (com2) to IRQ4 set like this:

----------------
|          . | |
|          . | |
----------------

  Uart2 (com2) to IRQ3 set like this:

----------------
|          --- |
|          . . |
----------------

These instructions will usually be combined with other jumper settings,
so it may be difficult to see what the card maker is getting at.  Remember,
these cards are CHEAP you aren't getting the red carpet here! :-)  You might
be lucky to get docs at all!  It is usually best to trace it out.

Now, what you want to do is to decide what IRQ you want to connect to.  If
you are lucky enough to have a com card that is a full length card, you will
have access to the higher IRQ's, otherwise you may have to use IRQ5 which is
usually used for LPT2.  (of course, you can't have a LPT2 printer port in
your system, either).  If you have 2 printer ports, you may need to use IRQ2,
but use this as a last resort, since many card makers seem to have decided
that no one else uses it (ignoring the fact that all the video cards ever made
use it except for monochrome cards) and conflicts are most likely to result
with this IRQ line.

Now, take some tinfoil and wrap it around the fingers of the card, so that
ALL of them are connected.  Run a wire from that to a cold water pipe or
other ground(assuming you don't live in a house with plastic pipes)  Pick up
your soldering iron and wrap some wire around the barrel of it and run it 
to the same ground.

Carefully, solder 6 inches of small hook-up wire to the IRQ you have decided
to use.  Solder to a point at the very top of the contact on the card finger
that correcponds to the IRQ line you have selected.

Tin the other end of the wire, and let it cool.  Now, gently remove the
jumper from the jumper block that corresponds to the UART you want to change
the setting on.  Turn the jumper so that 1 side of it is positioned over the
connection to the UART, and the other side over empty air and push it down.
Take the other end of the wire and insert it into the jumper side that is
hanging over empty air, and tie bak any excess wire.  The end will look like
this:
             |---------
  -----------|--      |
  |        . | |      |
  |        . . |      |--Wire
  --------------      |
                      |
                      |
               IRQ Card finger


Now, plug in the card and fire up the computer, configure your software and
you are done! :-)


I AM OF COURSE NOT RESPONSIBLE FOR THE CONTENT OF THESE INSTRUCTIONS.  I USED
THEM TO CONNECT UP A MODEM TO COM3, BUT IF YOU BREAK YOUR MACHINE DON'T COME
CRYING TO ME.   CAVEAT EMPTOR!

This file released into the Public Domain on this second day of October, 1992
Any editorial remarks please send to me at:

  Ted Mittelstaedt
  tedm@agora.rain.com

dispinst:

Instructions on how to manually install display drivers.  Downloaded
from the OS/2 Shareware BBS, tel. 703-385-0931.

---------------

I beat the guys up and got the MANUAL way to change display type WITHOUT
needing to install, here tis....

      ----------------------------
In all cases below, you must have diskettes 6-15 (diskettes installed
under PM - may be different depending on driver level).  When the
instructions say: 'UNPACK A:filename targetdrive:', this implies that
this command is run against each of the diskettes as the file may reside
on any or all of the diskettes.

For CGA:
        1. UNPACK A:CGA targetdrive:
        2. copy (or rename) the file \OS2\DLL\CGA.DLL to \OS2\DLL\DISPLAY.DLL
        3. change the CONFIG.SYS
           SET VIDEO_DEVICES=VIO_CGA
           SET VIO_CGA=DEVICE(BVHCGA)
           remove any reference to DEVINFO=KDB,xxx,xxxxx

For EGA:
        1. UNPACK A:EGA targetdrive:
        2. copy (or rename) the file \OS2\DLL\EGA.DLL to \OS2\DLL\DISPLAY.DLL
        3. change the CONFIG.SYS
           SET VIDEO_DEVICES=VIO_EGA
           SET VIO_EGA=DEVICE(BVHEGA)
           DEVINFO=KDB,EGA,xxxxx

For VGA:
        1. UNPACK A:VGA targetdrive:
        2. copy (or rename) the file \OS2\DLL\VGA.DLL to \OS2\DLL\DISPLAY.DLL
        3. change the CONFIG.SYS
           SET VIDEO_DEVICES=VIO_VGA
           SET VIO_VGA=DEVICE(BVHVGA)
           DEVINFO=KDB,VGA,xxxxx

For 8514:
        1. UNPACK A:8514 targetdrive:
        2. copy (or rename) the file \OS2\DLL\8514.DLL to \OS2\DLL\DISPLAY.DLL
        3. change the CONFIG.SYS
           SET VIDEO_DEVICES=VIO_8514
           SET VIO_8514=DEVICE(BVHVGA,BVH8514)
           DEVINFO=KDB,BGA,xxxxx

For XGA:
        1. UNPACK A:XGA targetdrive:
        2. copy (or rename) the file \OS2\DLL\XGA.DLL to \OS2\DLL\DISPLAY.DLL
        3. change the CONFIG.SYS
           SET VIDEO_DEVICES=VIO_XGA
           SET VIO_XGA=DEVICE(BVHVGA,BVHXGA)
           DEVICE=targetdrive:\OS2\XGARING0.SYS
           DEVINFO=KDB,VGA,xxxxx

Where xxxxx = targetdrive:\OS2\VIOTBL.DCP

This does not cover dual display systems, those get somewhat more involved.

This also does not cover changing the OS2.INI file, but since these are
changes to colors and must be done programmatically, it is not usually
worth the effort.
     ---------------

Irv Spalten  BPC Technical Interface Group, Boca Raton FL

epmkeys:

OS/2 EPM (Enhanced Editor)                                      08/16/92

    If you have any additions, changes, comments, or suggestions, please send
    them via CompuServe mail to Robert Simpson, CompuServe ID 71520,737.

EPM (Enhanced Editor) Tasks:
        These keys are documented in C:\OS2\APPS\EPMHELP.QHL.

        Tab                     Insert spaces up to next tab location
        F1                      Help
        F2                      Save and continue
        F3                      Quit without saving changes
        F4                      Save changes and quit
        F5 or Ctrl+O            Open another file
        F6                      Show draw options
        F7                      Change filename
        F9 or Alt+backspace     Undo changes to current line
        PageUp                  Scroll up one page
        PageDown                Scroll down one page
        Shift+F1                Scroll left (doesn't work for me)
        Shift+F2                Scroll right
        Shift+F3                Scroll up
        Shift+F4                Scroll down
        Shift+F5                Scroll current line to center of screen
        Shift+Tab               Move cursor back to previous tab location
        Ctrl+F1                 Change word to all upper case
        Ctrl+F2                 Change word to all lower case
        Ctrl+F3                 Change marked text to all upper case
        Ctrl+F4                 Change marked text to all lower case
        Ctrl+F5                 Move cursor to first character of current word
        Ctrl+F6                 Move cursor to last character of current word
        Ctrl+F7                 Shift marked text to right
                                (doesn't work for me)
        Ctrl+F8                 Shift marked text to left
                                (doesn't work for me)
        Alt+F1                  Insert box drawing characters
                                (then use cut/copy and paste)
        Alt+E                   Move cursor to end of marked area
        Alt+F                   Fill marked area with specified character
        Alt+J                   Join following line with current line
        Alt+L                   Mark the current line
        Alt+N                   Insert file name
        Alt+P                   Reformat paragraph
        Alt+S                   Split line at cursor
        Alt+U                   Unmark marked block
        Alt+W                   Mark word
        Alt+Y                   Move cursor to beginning of marked area
        Alt+-(twice)            Briefly circle cursor location
        Alt+= or Alt+0          Execute EPM commands on current line
        Ctrl+B                  Display list of bookmarks
        Ctrl+C                  Change next
        Ctrl+D                  Delete word
        Ctrl+E or Ctrl+Del[ete] Delete to end of line
        Ctrl+F                  Find next
        Ctrl+I                  Enter EPM command
        Ctrl+K                  Repeat current line
        Ctrl+L                  Copy current line to EPM command line
        Ctrl+M                  Insert blank line following current line
        Ctrl+Q                  Switch between ALL result file and original
                                searched file
                                (Enter "ALL /string/" at the EPM command 
                                prompt to create the ALL result file.)
        Ctrl+R                  Begin or end recording of keys
        Ctrl+S                  Search
        Ctrl+T                  Play back recorded keys
        Ctrl+X                  Expand abbreviation to full command syntax
                                (for languages supporting syntax expansion)
        Ctrl+Y                  Use Style (to change the color or font of
                                the marked text)
        Ctrl+2                  Insert NULL (x'00') character into text
        Ctrl+6                  Insert "*" (x'AA') character into text
        Ctrl+9                  Insert "{" (x'7B') character into text
        Ctrl+0                  Insert "}" (x'7D') character into text
        Ctrl+backspace          Delete current line
        Ctrl+Tab                Insert a tab character into text

    when Options/Preferences/Advanced_marking is NOT checked:

        Del[ete] or Alt+D       Delete marked block
        Alt+T                   Center text within margins
        Alt+Z                   Mark character at cursor

        Mouse actions:

        Button 1 click          Move cursor to location of mouse pointer
                                and unmark text
        Button 1 double click   Mark word
        Button 1 drag           Mark characters
        Button 2 + Ctrl drag    Mark lines or copy text in marked area

    when Options/Preferences/Advanced_marking is checked:

        Del[ete]                Delete character at cursor
        Shift+Del[ete]          Delete marked block
        Alt+A                   Move marked text to cursor location,
                                blanking marked area
        Alt+B ... Alt+B         Mark a block of text
        Alt+C                   Copy marked text to cursor location,
                                inserting before text at cursor.
        Alt+M                   Move marked text to cursor location,
                                deleting marked area
        Alt+O                   Copy marked text to cursor location,
                                overlaying text at cursor.
        Alt+R                   Reformat marked text
        Alt+T                   Center text within marked block
        Alt+Z                   Expand/contract marked area to character
                                at cursor

        Mouse actions:

        Button 1 click          Move cursor to location of mouse pointer
        Button 1 double click   Unmark marked area
        Button 1 drag           Mark block
        Button 1 + Ctrl drag    Mark characters
        Button 2 double click   Mark word
        Button 2 drag           Mark lines or move text in marked area
        Button 2 + Ctrl drag    Copy text in marked area

    when Options/Preferences/Stream_editing is NOT checked:

        Enter or Alt+Enter      Insert a new line at the cursor location
            or Ctrl+Enter

    when Options/Preferences/Stream_editing is checked:

        The action of the following keys may be changed on the
        Options/Preferences/Settings/Keys page of the notebook.
        The default actions are listed below.

        Enter or Alt+Enter      Insert a new line following the current line
        Ctrl+Enter              Move cursor to beginning of next line

    when Options/Preferences/Ring_enabled is checked:

        F8                      Add another file to the current window's ring
        F11 or Ctrl+P           Show previous file in ring
        F12 or Ctrl+N           Show next file in ring
        Alt+1                   Add file specified on current line of text to
        Ctrl+G                  List files in ring

    Cursor movement keys:

        Ctrl+PageUp             Move cursor to beginning of first line in window
        Ctrl+PageDown           Move cursor to beginning of last line in window

        The Shift keys can be used with any of the following keys to mark
        the text while the cursor is being moved.

        up arrow                Move cursor up one line
        down arrow              Move cursor down one line
        left arrow              Move cursor left one character (or from
                                beginning of line to end of previous line if
                                Options/Preferences/Stream_editing is checked.)
        right arrow             Move cursor right one character (or from
                                end of line to beginning of next line if
                                Options/Preferences/Stream_editing is checked.)
        Home                    Move cursor to beginning of current line
        End                     Move cursor to end of current line
        Ctrl+Home               Move cursor to beginning of file
        Ctrl+End                Move cursor to end of file

        When Options/Preferences/Advanced_marking is NOT checked, the Shift
        keys may be used with any of the following keys to mark the text
        while the cursor is being moved.

        Ctrl+left arrow         Move cursor back to first character of a word
        Ctrl+right arrow        Move cursor to first character of next word

excel:

 For users of Excel for OS/2 and ATI Graphics Ultra video drivers:

 I have had the Excel for OS/2 session (3.0) crash with SYS3175 trap 2
 access violations at 1055d when creating macros. The situation which
 seems to cause the problem is whenever an invalid cell reference is
 generated by the macro (a common situation until you've debugged). My
 only recourse at this point is to run the macro in single step mode and
 evaluate each expression before execution, then halt whenever I see
 that a bad cell reference is being generated, just before the command
 that will use the reference is executed. Once the reference is being
 generated correctly by the macro code, I can let it run in normal mode.

 Sample macro code which causes this error:
      =FORMULA.GOTO("TestName")
      =RETURN()
where TestName has not been defined on the current worksheet

After re-installing OS/2 and Excel and re-doing my system customizations
for device drivers, CONFIG.SYS settings, OS/2 System Set-up, etc. I have
narrowed the problem down to some interaction between Excel and the ATI
Graphics Accelerator PM video driver (version 1.3) for my Graphics Ultra
card.  When I installed the ATI PM driver in 1024x768 mode, I started
experiencung the Excel macro problem.  The IBM drivers supplied with
OS/2 for both VGA and 8514A video modes do not result in the Excel
problem; the macro stops with a message box but the Excel session does
not go down. I have tried installing the Graphics Accelerator in all 3
resolutions - 1024x768,800x600 and 640x480, and Excel exhibits the
problem described above in all cases. I have not experienced problems
with any other applications using the ATI driver.

I contacted ATI Technologies and they informed me that the ATI driver I
am using was designed for OS/2 1.3, but can be used with 2.0; there are
some limitations, one of which causes my problem with Excel macros. They
are aware of the problem, and will be providing a fully OS/2 2.0
compliant driver for the Graphics Ultra in 1024x7868 mode, to be ready
for early October/92.

In the meantime, a reasonable compromise is to use the IBM 8514A driver
supplied with OS/2 2.0, which will provide the benefit of 1024x768
resolution, although not attaining the full video performance of the card
which the ATI driver provides.

                                           Ken Findlay

laplink:


June 19, 1992

The following is information regarding the use of LapLink Pro
with OS/2 version 2.  If you have questions regarding any of this
information please feel free to contact Technical Support at
206-483-8088 or post a message here.
                                                
                                         Traveling Software,
                                         TECHNICAL SUPPORT
                             

SERIAL:

Versions of LapLink Pro prior to 4.0c are not compatible with
OS/2 version 2. LapLink Pro version 4.0c is compatible if you set
the serial port to "Polled" in the Port/Modem setup dialog.
Please contact us if you need this version.
                
Copying from a floppy drive to the hard drive, whether the drive
is HPFS (high performance file structure) or DOS, or copying
between two hard drives will work.  Going between two floppy
drives does not work in the serial mode.  
                                               
LapLink Pro will read and copy to and from the HPFS drive as long
as the file names are using the DOS limitation of eight
characters with a three character extension.  File names longer
than the DOS limitation will not be seen by LapLink Pro. 

PARALLEL:

All versions of LapLink Pro will work in the parallel mode with
all versions of OS/2.

Copying from a floppy drive to the hard drive, whether the drive
is HPFS (high performance file structure) or DOS, or copying
between two hard drives will work.  For parallel transfers,
copying between two floppy drives should be fine.  The same DOS
file name limitations of serial communications apply to parallel.

CLONING:

Because LapLink Pro doesn't copy hidden system files at the root
level, and the way OS/2 stores it's system files, LapLink Pro can
NOT be used to clone an OS/2 drive to another drive in order to
avoid the installation of OS/2 on the target machine.  

MODEMS:

LapLink Pro's modem feature will not work with OS/2 at this time
because modem ports cannot be set to polled.



mousepat:

Here is a patch that will allow you to move the MOUSE port to some
IRQ other than 3/4, and have it work on ISA machines with
Serial mouse..

----- Cut Here -----
FILE C:\MYMOUSE.SYS
VER 1813   891E890181E3000FFEC7
CHA 1813   891E890181E3000FB7xx
;                            __ change this to IRQ number required
;
;  This patch changes the IRQ for a serial mouse
;
;  The standard calculation is as follows
;
;  Port addresses = 03F8, 02F8, 3220, etc...
;
;  use .x.. nibble of port address +1 as IRQ number
;
;  the code above is
;
;
;  Mov BX,port_address
;  AND BX,0h0F00
;  INC BH               < we are replacing this instruction with
;                         MOV BH,xx to force a SPECIFIC IRQ number
;                         For example below to IRQ 5
;
;
;  CHA 1813   891E890181E3000FB705
;
;
;  Note: this does NOT change the PORT ADDRESS, so these are expected
;        at their STANDARD location....(whatever bios say at 40:0)
;
;  To apply this patch, copy \OS2\MOUSE.SYS to \MYMOUSE.SYS (or whatever)
;  edit the FILE name above to point to MYMOUSE.SYS (if different)
;
;  from an OS/2 command prompt type PATCH MOUSE.PAT /A
;
;  Edit config.sys, change the DEVICE=\OS2\MOUSE.SYS SERIAL=1
;                           to DEVICE=\OS2\MYMOUSE.SYS SERIAL=1
;
;  REBOOT

os2cdrom:


Instructions for installing non-Toshiba CD-ROM Drives under 0S/2 2.0
********************************************************************

1)  Check the \OS2 directory for the files CDROM.SYS and CDFS.IFS.
    If they are not present, run Selective Install and select ALL CD-ROM 
    options.

2)  Make a backup copy of the file CDROM.SYS

3)  Edit the file CDROM.SYS with DEBUG, either from MS-DOS or a DOS Session
    under 0S/2. Make sure to setup the version of MS-DOS reported to DEBUG 
    if you are running a DOS session under 0S/2 2.0.

4)  Change to the \0S2 directory of your boot drive.

5)  Type DEBUG CDROM.SYS

6)  Type D 56A. You should see the string Toshiba starting at this location. 
    If it is NOT there then type D 0 and repeatedly enter D to find the offset.

7)  You must now change the "Toshiba" to match the manufacturers identification 
    string. For example if you have an NEC drive you must enter NEC and pad the 
    rest of the 8 characters with blanks (20H).

    The editing is done as follows:

       NEC CD-ROM  --- E 56A 4E 45 43 20 20 20 20 20 
       SONY CD-ROM --- E 56A 53 4F 4E 59 20 20 20 20

8)  Type D 56A and verify that the string matches the one for your 
    manufacturer. It must be 8 characters long (including blanks) and then 
    be followed by (00H).

9)  If it is correct type W and the file will be saved in CDROMSYS

10) Make sure the following lines are in your CONFIG.SYS

      BASEDEV= OS2SCSI.DMD
      DEVICE=C:\OS2\CDROM.SYS /N:4
      IFS=C:\OS2\CDFS.IFS

11) Reboot your machine and 0S/2 should now be able to access your CD-ROM. 
    Open the "Drives" folder and verify that a new icon is there. You should 
    be able to read all data from the disk but AUDIO commands will NOT work. 
    IBM is working on upgrading CD-ROM support but in the meantime 
    non-Toshiba drives are limited to non-audio commands.


os2traps:

From: voyager@eng.umd.edu (Gebran Krikor)
Subject: Trap # reference
Date: 13 May 92 21:10:41 GMT
Organization: University of Maryland, College Park, College of Engineering

The information found here is taken in part from the Intel i386 or i486
								manual(s)

==============================================================================
Trap #	Function	OS/2 HELP MSG (SYSxxxx)	Likely cause under OS/2:
==============================================================================
0000	Divide error			3184	division by zero by OS/2
0001	Debug exception				shouldn't occur
0002	NMI Interrupt				memory parity or 387 error
0003	One Byte Interrupt			shouldn't occur
0004	Interrupt on Overflow		3185	from INTO instruction
0005	Array Bounds Check		3191	from BOUND instruction
0006	Invalid OP-Code			3176	usually a corrupted .EXE
0007	Device not Available			from ESC or WAIT instruction
0008	Double Fault				shouldn't happen
0009	Reserved by Intel			
000A	Invalid TSS (Task State Segment)	OS/2 bug - not a common bug
000B	Segment not Present			Can be a program or OS/2 bug
000C	Stack Fault				stack was ruined (not common)
000D	General Protection Fault		invalid pointer (most common)
000E	Page Fault				OS/2 bug, error in virtual mem
000F	Reserved by Intel			
==============================================================================
(C)1992 Gebran Krikor  * Freely distributable 

tcpstart:

=============================================================================

Document: ftp-os2.cdrom.com:pub/os2/2_x/network/tcpstart.txt
      or: ftp-os2.nmsu.edu:os2/2_x/network/tcpstart.txt

Guide to getting started with OS/2 networking using IBM's TCP/IP software

=============================================================================
Recent Changes

Aug 03 1993 Added 3c503 Netware+TCP/IP sample files from Roger de Reus.
            Added Appendix III on LaMail (thanks R. Walker!).
            Changed directories for CSDs, made fixes to unpacking hints.
            Added section on useful software to download.
Feb 28 1993 Fixed advice for routed, FTP security (thanks, Andre Asselin!).
            Added some tuning ideas.  Added lprmon BUFSIZE caution.
Feb 22 1993 Fixed phone numbers, added SLIP appendix.  Fixed year to 1993!
Feb 02 1993 Added Netware appendix, tuning hints, other hints and insertions.

=============================================================================
Table of Contents (find sections by searching for the parenthesized number)

(0) Purpose and introduction 
(1) Request for more information
(2) Some terminology
(3) Selecting parts of the IBM TCP/IP packages
(4) Preparing to hook up to a TCP/IP network
(5) Installing IBM's TCP/IP Package
(6) Installing the driver for the network adapter
(7) Initial tryout
(8) Downloading CSDs (bug fixes)
(9) A few reminders
(10) Security concerns
(11) Tuning your setup
(12) Interesting TCP/IP software you can download
(13) Good luck
(A1) Appendix I: Coexistence of TCP/IP with Netware
(A2) Appendix II: Supplementary information on SLIP
(A3) Appendix III: Setting up LaMail

=============================================================================

----------------------------
(0) Purpose and introduction
----------------------------

The purpose of this document is to: 

1) Orient someone who has heard a bit about networking on OS/2, but
can't yet hold an entire conversation in three to five letter
networking acronyms ("So, Bob, how's TCP/IP coming along today?" "Well,
Jane, NFS if fine, but I'm having trouble with FTP."  "Have you
installed the CSDs?"  "Yes, but can you ping over SLIP before sending a
job to LPD?"....).

2) Help a new networker install the IBM TCP/IP networking package and
some of its more popular additional modules.


I'm no networking pro, but I've managed to start a working network
system using OS/2 and IBM's TCP/IP offerings.  It took me long enough
to sort it all out.  I hope I can save someone else the trouble.

I make no guarantees that the following is entirely correct!  It's
based on my experiences.  PLEASE correct me by mailing me your comments
if you find anything misleading or wrong.  Please send me additional
hints based on your own experiences that you feel would be helpful to
put into this document.

-Dean
--
N. Dean Pentcheff 
Biological Sciences, Univ. of South Carolina, Columbia SC 29208 (803-777-8998)
Internet addresses: pentcheff@pascal.acm.org or dean2@tbone.biol.scarolina.edu


--------------------------------
(1) Request for more information
--------------------------------

Please let me know of improvements I can make to this document!
Notable gaping holes that I notice (hint, hint) are:

1) Performance tuning - success stories and failure stories are
both equally welcome.

2) Other useful network software - surely some net.geeks have some
nifty utilities and addons that make a networked OS/2 system more of a
joy.

3) Tricks and tips that you've discovered.


--------------------
(2) Some terminology
--------------------

TCP/IP is the name of a communications protocol - it defines a way for
computers to chat with each other.

(PC)TCP is a family of products from several vendors that use TCP/IP on
a PC, generally under the DOS operating system.  Note that PC/TCP is a
specific product marketed by SunSoft (the (PC)TCP name has been adopted
as a generic name for that type of product).  (PC)TCP is not addressed
in this document - you may have heard about it from DOS systems.  The
programs described here do what PC/TCP on DOS does (and more).

Ethernet is a specific hardware protocol for computer communications.
For example, a 3Com 3C503 card is a (very cheap and popular, if not
screamingly fast) Ethernet board for PCs.  Using it (and appropriate
software) you can connect a PC to an Ethernet TCP/IP network.  TCP/IP
is just one of many communication protocols that can run atop
Ethernet.  For example, a Novell Netware network running the IPX
protocol could run on the same Ethernet - same hardware, just different
protocols.

Token-Ring is another hardware protocol in common use.  IBM's TCP/IP
package supports both Ethernet and Token-Ring network adapters.

FTP is a "file transfer protocol" that runs on top of TCP/IP (there are
implementations of FTP for pretty much any computer that can talk
TCP/IP, making it a lingua franca for file exchange - it's not pretty
but it works).

Telnet is a defined way for TCP/IP-speaking computers to set up
terminal sessions between each other so that you can actually log onto
a remote computer and interact with your account there.

SLIP stands for serial line IP.  It defines a way that you can
connect to a TCP/IP network over a serial line (via a phone modem,
for example).  Serial communications is slower than a direct network
connection, but can sometimes be useful.  IBM's TCP/IP packages does
support SLIP.  

CSD is IBM's word for a publicly distributed bug fix package.  Note
that CSDs obsolete prior CSDs.  That is, application of any later CSD
will take care of everything that was done by earlier CSDs.  You don't
have to apply the whole chronological string of CSDs, just the most
recent one.  God help you if you install an earlier CSD over a later
one (IBM sure won't help you).


----------------------------------------------
(3) Selecting parts of the IBM TCP/IP packages
----------------------------------------------

IBM sells a bunch of pieces, many of which are optional, for TCP/IP
networking.  Following is a brief summary of them.  Note that all of
the following come with both 1.2 Mb 5-1/4" and 1.44 Mb 3-1/2" disks in
the same package (you don't need to specify medium).

-- TCP/IP Base Program (Part #02G6968).  Price: US$131.  You need this
in order to use any of the other following parts.  It gives you the
software to connect your Ethernet or Token Ring card to a network, plus
a few character-oriented programs (Telnet, FTP, ping, etc.).  It's sort
of equivalent to the public domain NCSA Telnet package for DOS.

-- NFS Kit (Part #02G6970).  Price: US$95.  This gives your OS/2 system
the ability to serve as both a client and a server for sharing disk
space using Sun's NFS (Network File System) protocol.  In other words,
you can mount disks over the network that are physically attached to
other minicomputers or OS/2 systems as though they were attached to
your computer.  Conversely, you can make parts of your OS/2 computer's
disks available for sharing by others.  With this package (along with
the Base Program), you've got the makings of a small local area network
that can share disk space and printers.

-- X-Windows System (Part #02G6980).  Price: US$95.  This gives your
OS/2 system the ability to display output (and relay input) to X
programs running on other computers.  X-Windows is a standardized way
for programs (mostly on Unix-based systems) to put graphics on the
screen and interact with the user.  X terminology is a bit peculiar:
the program doing the work is called the "client"; the program doing
the display is called the "server".  This package allows your OS/2
system to be an "X server", but not an "X client": you can display and
interact with X programs running elsewhere, but you can't run an X
program on your OS/2 system and have its results displayed elsewhere.

-- X.25 Networking (Part #?).  Enables X.25 communications from your
OS/2 system.  I have no exposure to this product, so I won't comment.
I assume you'll know if you need it.

-- Source code and programming packages.  If you're ordering these you
sure as hell don't need me giving you hints on what to do.

And finally, where to order.  Peculiarly, IBM often seems unaware
that they sell this product.  So far, people have had the best
luck with calling: 1-800-IBM-2-YOU (1-800-436-2968).  Another IBM
order line (1-800-IBM-CALL) apparently knows about the product
but likes to charge you more money (?!).  


--------------------------------------------
(4) Preparing to hook up to a TCP/IP network
--------------------------------------------

Once you have the TCP/IP base package, you can be a full-blown node on
the Internet.  To do that, you _must_ contact a local system
adminstrator on the network to which you will physically connect your
OS/2 machine.  He or she must give you an Internet number.  Choosing
one at random is unlikely to work and is exceedingly antisocial (since
it may well disrupt others' use of the network).

You can probably select your own cute name for your machine, unless
there is an iron-fisted net administrator who enforces a naming
convention.  As examples, our lab works on crab behavior, so our PCs
are called "fiddler" and "cancer".  The last place I worked had a lot
of people working on marine larvae, so they had "cypris", "zoea",
"actinula", etc.

When you decide on a name and send it to your Local Network Guru, also
ask the following questions:

        What will my machine's full Internet name be (e.g.
        fiddler.biol.scarolina.edu for the machine at which I'm
        sitting)?

        What is my IP address (e.g. 123.234.221.112 as a totally
        fictitious example)?

        Is this network subnetted?  If so, what's the subnet mask
        (e.g.  255.255.255.0)?

        Is there a non-default broadcast address?  If so, what is it?

        What is the IP address of a default router for me to use?

        What are the IP addresses of three domain nameservers?

And, before you start the software installation, do yourself a favor.
Open up your machine and take a good look at the network adapter card.
Write down any strap or switch options that are set.  You'll probably
need them later when you do the software configuration of the driver
for TCP/IP.


-----------------------------------
(5) Installing IBM's TCP/IP Package
-----------------------------------

All the documentation comes with the Base Program.  The other packages
just consist of a folder with disks.

It is not initially clear how to proceed, so here's enough to get you
going:

Begin with the manual "TCP/IP Version 1.2.1 for OS/2 (Refresh):
Installation and Maintenance".  You install the TCP/IP software first,
then the specific driver software for your Ethernet or Token Ring board.

There's a nice little configuration program called ICAT (Installation
and Configuration Automation Tool).  As per instructions, stick in disk
1 and run ICAT from an OS/2 command line.

Push the "Install" button first.  It will give you the opportunity to
install any/all of the options you've ordered (base package, NFS,
X-Windows, X.25, and source packages).  Check off whatever boxes you
want and feed disks as requested.  Go ahead and install everything
you've got.

Once everything has been copied to disk, push the "Configure" button of
ICAT.  Now comes the fun stuff.  I'm assuming you have the
documentation, so I'll just give you some hints based on what I did.
There's a numbered list of 6 configuration things to do.  We'll run
down the list.

1.  Configure Network Interface Parameters.  You probably only have one
Ethernet or Token Ring board in your computer, so you only have to fill
in half this screen (the other half is for another board - and up to
two more on a "Next Screen").  Your IP address is whatever was issued
to you by your Friendly Local Network Adminstrator.  If he/she told you
anything about a "Subnet Mask", enter it appropriately.  Leave
"Broadast" and "Destination Address" blank (unless you've been
explicitly instructed otherwise).  For that matter, leave the rest of
the screen untouched unless told otherwise.  Don't forget to check the
little "Enabled" box in the top left corner.  When done, press the
"Menu" button to return to the main Configure menu.

2.  X.25 Parameters.  You're on your own here (I haven't done this),
but it looks straightforward - stick in your IP address.

3.  SLIP Parameters.  This is if you're going to use a serial port for
access, instead of a network adapter (SLIP = Serial Line Internet
Protocol).  Fill in the IP address, and the rest is like setting up the
dialer in a communications program.

4.  Automatic Starting of Services.  Again, the following are
reasonable defaults if (a) you haven't been told otherwise; and (b) you
have the software involved.

        DO enable the inetd super server - this is one program which
        runs all the time and spawns off some of the other network
        service programs on an as-needed basis.  This way they don't
        all have to be started at once.

        If you want yourself or others to be able to Telnet into this
        machine, enable the Telnet server (BUT SEE NOTES BELOW - THIS
        CAN BE A REAL SECURITY RISK).  This does not influence your
        ability to telnet out of this machine to other machines.

        If you want to be able to access files on this machine from
        other machines using the FTP protocol, enable the FTP server.
        This does not influence your ability to use FTP on your machine
        to access other machines.  (SEE NOTES BELOW - THIS IS A
        POTENTIAL SECURITY RISK).

        Unless you know otherwise, DO NOT enable TFTP.

        I lean towards not enabling rexec and rsh unless there's a
        compelling reason to do so.  THESE ARE A REAL SECURITY RISK.
        Again, this does not affect your ability to rexec or rsh from
        your OS/2 machine to other machines.

        If you are going to make a printer attached to your computer
        available to other computers (i.e. your machine will be a
        network print server), enable the lpd server.  NOTE: To prevent
        lpd from printing a banner and control file before each
        document, set lpd to run in the "Foreground" (not via inetd),
        and type in "-b -c" (without the quotes) in the blank for
        arguments.  This is particularly important if you have a
        Postscript printer (since the banner and control files are in
        ASCII, not Postscript, they will mysteriously stuff the
        printer).

        If you've got the X-Windows stuff, enable it (leave the
        "Parameters" as it is).

        If you're into online typing to people, enable Talk, but
        honestly, why not just use the phone?

        Enable the NFS Server if you want other people to access your
        hard disk (SEE SECURITY NOTES BELOW).

        Enable NFSCTL if you want to be able to mount other machines'
        disks (but note that they must allow you to do so).

        If you have the IP address of a default router on your network,
        you can skip enabling the automatic routing server "routed".
        If you couldn't get such an address from the Local NetNerd, go
        ahead and enable the automatic routing server "routed".  (See
        some further remarks on this below in the "Tuning" section.)

        FINALLY, if you're going to receive mail directly onto your
        machine, enable "sendmail".  If you're already receiving mail
        on another machine, this is FAR more trouble than it's worth
        (in my opinion).  With the other software you've got, you'll
        easily be able to read your mail on another machine, so why
        bother with all the sendmail setup stuff (which is relatively
        fierce)?

5.  Configure Services.  I'm going to give hints based on my slightly
net.paranoid approach.  See the security notes below for some details.

        Put one and only one entry in the FTP Access Protection:
        anonymous.  (But see further notes in the "Security concerns"
        section below.)

        If you're doing X-Windows, X Host Authorization gets the name
        of the machine(s) on which your X "clients" (e.g. main
        programs) will run.

        In the X Client Display Variable, enter your OS/2 machine's IP
        address (or Internet name, whichever).  Not the name of the
        host to which you will be connecting, but this very OS/2
        machine's address.  Follow the IP address or machine name with
        ":0" (without the quotes of course).  For example, I entered:
        fiddler.biol.scarolina.edu:0

        Fill in the timezone in standard Unixoid format.  See page 95
        of the manual for some of the more popular timezones.

        If you will use another machine's printer, enter that machine's
        name and its printer's name.

        If you took my advice on rexec, enter nothing in the rexec
        username and password.

        Enter nothing in the password field for telnet (BUT SEE THE
        SECURITY NOTES BELOW).

        Enter your machine's name in the Hostname field (just the very
        first part of the name: "fiddler" in the case of
        "fiddler.biol.scarolina.edu").  Enter the rest of the name in
        the Domain Name field ("biol.scarolina.edu").

        Type in (correctly!) the IP numbers of the (up to) three local
        nameserver machines your Always Cheerful Network Adminstrator
        gave you.

6.  Routing Information.  If you have the IP address of a default
router, enter it here.  Follow the keypress instructions to insert an
entry.  Toggle the "Route Type" field using space, leave "Route
Destination" blank, type in the IP address into "Router", and leave
"Metric count" at 1.  If you do _not_ have the IP address of a default
router, make sure you enabled the "routed" daemon.  Then check below in
the "Tuning" section to see how you can find out your default router's
address later, insert it here, and dispense with "routed."

When this is done, go ahead and "Exit" all the way out of the ICAT
program, reassuring it that you really do want it to write this stuff
to disk as it quits.


-------------------------------------------------
(6) Installing the driver for the network adapter
-------------------------------------------------

Once you finish with all that nonsense, you will realize that you
haven't told the software anything about the network adapter you've got.
Time to turn to the "LAN Adapter and Protocol Support Introduction and
Configuration Guide".  Cram in the LAPS disk, and, from an OS/2 command
prompt, start up the "LAPS" program from the floppy.

The following discussion assumes you will be using a network adapter
card (either Ethernet or Token-Ring).  If you will be using SLIP (IP
over a serial line with a modem), I suspect things may be a bit
different, but I don't know, I've never tried (as in: "Can you play the
violin?"  "I don't know, I've never tried").  See Appendix A2 below for
some supplementary information on SLIP.  I don't use it, so I haven't
tested this, but give it a whirl.  For now, we'll continue to assume
that you're using a network adapter card...

First do the "install" to copy in the software.  Next, go to the
configuration part.

What you do is simple: pick one from column A and one from column B.  In
fact, IBM has made it simpler still - there's only one choice in column
B (but you still have to explicitly pick it).  Choose your network
adapter from the Network Adapters list (select and "Add" it).  (If your
network adapter isn't on the list, see the remarks a few paragraphs
below here.)  Then choose the only choice (IBM TCP/IP) from column B.
You've now declared that your network adapter number 0 (the first one)
is of a particular type, and it will run TCP/IP.

Now highlight the adapter name in the Current Configuration window and
press "Edit".  Now's your chance to make sure that the hardware options
on your adapter match up with the software's idea of them.  Change
anything that needs changing.  When in doubt, leave it as it was.
Notably, you should probably leave the "Network Adapter Address"
blank.  That number is supplied by the board hardware unless you enter
an overriding number here.

Once you're done with the configuration, press "OK" and the proper
configuration will be copied in.


What if your network adapter isn't "supported"?  That is, you didn't see
it on the LAPS list.  Odds are good that it really is supported.  First
of all, check the documentation - your adapter may emulate an adapter
that is in the LAPS list.  If so, you're home free.  If not, you need to
get hold of an "NDIS driver" for your adapter.  There may be one on a
disk that came with the card.  Alternatively, you may be able to find
one on the ftp-os2.nmsu.edu archive (see the section on downloading CSDs
in this document to see how to access the archive).

Once you've got the NDIS driver, you'll need to do a little hand editing
of some configuration information.  The following description is edited
from some advice posted to the Usenet group comp.os.os2.networking by
Kai-Uwe Rommel (rommel@Informatik.TU-Muenchen.DE) regarding the popular
3Com Etherlink III card (a very fast, excellent Ethernet card, by the
way).  I haven't done this myself, so I don't know how easy it will be
to adapt these instructions to other cards, but take a look at this and
see how it goes...

        NDIS drivers for DOS and OS/2 come included with the Etherlink
        III card. I'm not sure if the LAPS install program of the TCP/IP
        package allows "other cards" to be installed, but otherwise
        simply install the Etherlink II drivers first. Then, before
        rebooting, copy ELNK3.OS2 from the Etherlink III driver floppy
        to the same location where ELNKII.OS2 is and replace ELNKII.OS2
        in config.sys by ELNK3.OS2. In the protocol.ini in \IBMCOM, add

                [ELNK3_nif]
                DriverName = ELNK3$

        right below the [ELNKII_nif] section and replace

                Bindings = ELNKII_nif

        in the [TCPIP_nif] section by

                Bindings = ELNK3_nif

        and it should work after rebooting. You may want to boot DOS and
        run the 3C509 program from the Etherlink III driver disk to set
        up the card to use an IRQ > 8 (i.e. IRQ 10, for example) and set
        the "client type" to a better suited one (you can choose DOS
        client, Windows or OS/2 client or server). If you install the
        Etherlink III in EISA machines, run the 3C509 program to switch
        the card into EISA mode (yes it has one although it is an ISA
        card) and use the EISA setup program and the config files on the
        Etherlink III driver disk to configure it. See Appendix E in the
        Etherlink III manual.


------------------
(7) Initial tryout
------------------

Are ya feelin' lucky?  Hope so.  Quit out of LAPS.  Do the standard
OS/2 Shutdown.  Make sure your network adapter is actually plugged into
a network.  Cross fingers and toes.  Start up OS/2.

It will take much longer to boot as five zillion networking programs
crank up.  Lots of them will put screens up as they come on.  Once
things are up, you can minimize these screens.  Meanwhile, they will
tell you of your progress.

If things really choke and you don't get a boot, well, you knew the job
was dangerous when you took it.  Get an OS/2 guru to boot from a floppy
for you and REM out the line in "startup.cmd" that says "CALL
C:\TCPIP\BIN\TCPSTART.CMD".

Assuming things more-or-less come up, try things out.  First, from an
OS/2 command line, try a ping to yourself.  In my case, that's "ping
fiddler.biol.scarolina.edu".  You should get a series of one-liners
once a second informing you that you've sent 64 bytes to yourself and
received it.  Press Control-C to quit that.  If, after you enter your
ping command, you get nothing (the command just hangs there), you've
got a problem: you're unable to find yourself.  Check your machine name
and Internet number using ICAT, and make sure your network adapter
board is properly set up, and the correct parameters are set using
LAPS.

One thing you'll want to try (but DON'T) is to double-click on the cute
little INETD icon.  Don't do it.  You'll get a textmode screen with
Inetd's potential clients listed.  That's it.  No menus.  No nothing.
It makes you feel like DOS is back.  Press Alt-Tab or Alt-Esc to get
the hell out of there.  Memorize this, because one day you'll do it
accidentally anyway.  

Try telnetting to your local host.  Try an FTP file transfer.  Once FTP
file transfers work, I advise you to take the following step next,
before doing much more playing.

Note: unless you've started telnetd and/or ftpd (or have them set
to start from inetd), don't try to telnet and/or ftp to yourself!


--------------------------------
(8) Downloading CSDs (bug fixes)
--------------------------------

My system almost-kinda-sorta worked (flakey is the word that comes to
mind).  Following application of the bug fixes, it works very
smoothly.  So, to avoid wasting time, apply the bug fixes early.
Following is the scoop on how to do this.

DON'T BE INTIMIDATED BY THE LENGTH OF THIS SECTION!  Because the CSDs
change with time, this section is verbose to cover different
contingencies.  It's really quite straightforward in practice.  Install
the bug fixes - you'll be very happy you did.

1.  For neatness' sake, make a subdirectory called "csd" (well, don't
listen to me about it, call it "rosebud" if you want).  Do a "cd" to
that directory (all this is done from an OS/2 command line).

2.  Give the command:  ftp ftp-os2.nmsu.edu

3.  If that doesn't work ("host unknown" or "network unknown") you've
got a problem with domain name resolution.  MAybe routed.exe isn't
running or you have a bad DNS nameserver entry?  Ignore that for now,
but fix it later.  Try giving the command:  ftp 128.123.35.151

4.  Log in as user anonymous, with your full login (joe@ace.b.c.edu) as
password.  Yeah, you don't really have a user name ("joe") since you're
on a single-user machine.  Make one up.  For my machine, for example,
I might enter "dean@fiddler.biol.scarolina.edu" (without the quotes).

5.  Give something like the following FTP commands [things in square
brackets are my comments, not parts of the commands]:

        binary 
        cd os2/ibm/tcpip                [get to the directory with fixes]
        get tcpcsd1.exe                 [Base TCP/IP package patches] 
        get tcpcsd2.exe 
        get basecsd.doc                 [how to install Base CSDs]
        get nfscsd1.exe                 [if you've got NFS] 
        get nfscsd.doc                  [how to install NFS CSDs]
        get pmxcsd1.exe                 [if you've got X-Windows] 
        get pmxcsd.doc                  [how to install X-Windows CSDs]

You may find that some of the CSDs have filenames ending in ".zip"
instead of ".exe".  If so, do the following as well:

        cd /os2/2_x/archiver
        get unz50x32.exe                [Info-ZIP unzipper for unpacking] 

Quit from FTP with the following command:

        bye

Of course, this will be out of date soon.  Just look for the most
recent CSD packages in the directory and snarf them.  Likewise for the
Info-Zip unzipper.  You should also check the directories "/os2/new"
and "/uploads": new uploads go there first and may not have made it to
the patches directory yet.  If there are several different CSDs for
products you have, download them all.  Unpack them (see below) each
separately on your machine and check the comments in the installation
scripts for the latest date.

6.  Unpack the suckers.  If you got the unzipper program, just just run
unz50x32.  It will unpack itself into the unzip program.  Each CSD
release seems to be slightly differently packaged, so I'll just give
some general guidelines here.  You can probably install them from your
hard disk, without having to copy them onto floppies (though they are
usually designed to be installed from floppies).  Make a subdirectory
for each type of CSD (for example, I made subdirectories "base", "nfs",
and "pmx") under the directory where you have the zip files.  Then
unpack each bundle into its appropriate subdirectory.

If the CSD filename ends in ".exe", things are easy: it will unpack
itself into its component files.  For example, to unpack the Base
packages, I'd do the following:

        mkdir base
        cd base
        ..\tcpcsd1
        ..\tcpcsd2

If the CSD filename ends in ".zip", you have to explicitly use the
unzip program to unpack the file.  For example (if the CSD files were
called "tcpcsd.base1.zip" and "tcpcsd.base2.zip"):

        mkdir base
        cd base
        ..\unzip  ..\tcpcsd.base1
        ..\unzip  ..\tcpcsd.base2

Normally, the unzipping leads to the creation of 5-50 updated programs
and files, one of which is an installation script (ending in ".cmd").
In some cases, the zip files will unzip into one or two monolithic
".exe" programs.  These aren't really standalone programs, but are
self-unpacking zip files.  If, when you're done unpacking the first
level of zip files, you only have one or two huge ".exe" files and you
DO NOT HAVE ANY FILES THAT END IN ".CMD" (i.e. you don't have an
installation script yet), check to see if the couple of huge programs
are actually zip files in disguise.  To do that, run the listing
function of unzip.exe.  For example, to check a hypothetical file
"basecsd.exe", try running:

        ..\unzip  -v  basecsd.exe

If the unzip program barfs, it's not a zip file.  If you get a nice
listing of lots of filenames, you can unzip the archive by simply
running the program.  For example:

        basecsd

Don't do any of this fussing if there's a ".cmd" file in the directory
from your inital unzipping - that's probably the installation script
which will take care of the next level of unzipping for you.

7.  Check the installation scripts.  I've found two types.  One is a
pretty elaborate script that quite neatly checks your system out and
installs the CSDs from the hard drive directory.  These longer scripts
are over 100 lines long.  If there are just a few files that need
copying, there may be a short script instead.  In some cases, these
short scripts are "hardwired" to copy from the A: drive (tacky!).  A
quick edit of any offending lines takes care of the problem.  For
example, changing the line:

        copy 'A:nfsctl.exe' BASE'\bin\nfsctl.exe'

to read:

        copy 'nfsctl.exe' BASE'\bin\nfsctl.exe'

converts the command so that it will run from the hard drive instead of
needing to be put on a floppy.

8.  Now you've got your CSDs (bug fixes) on disk, ready to install.  You
have to first REM out a couple of lines in your startup scripts, then
reboot.  Otherwise, OS/2 will refuse to let you update programs that are
currently running.  Using your favorite editor, edit your c:\config.sys.
Find the line that runs CNTRL.EXE.  Insert REM (followed by a space)
before it.  Save the file (as Plain Text, if you're asked).  I found
that I also had to edit the file c:\startup.cmd and REM out the line
that reads "CALL C:\TCPIP\BIN\TCPSTART.CMD".

Now reboot.

Why not do all this before even rebooting once?  Because applying the
CSD depends on a lot of networking environment that is set up in the
main config.sys file, so you've got to have booted with the networking
stuff installed but REMed out for the CSD to apply properly.

9.  If you're lucky, IBM will have included a "*.doc" file that will
give you some hints on how to install each CSD.  If so, read the file,
and read the hints in the next paragraph.  Between them all, decide how
to install the CSDs.

In the absence of an official "*.doc" file, you're on your own.  Each
CSD has its own handy install script.  Go to each CSD's subdirectory
and run the something-or-other.CMD file.  For example, for the Base
Package it might be basecsd.cmd; for NFS it might be nfscsd.cmd; for
X-Windows it might be installx.cmd (thanks for the consistency, guys).
Or it may be called something new and exciting.  Basically all that
these do is copy over a bunch of new versions of programs on top of the
old ones.  As far as I can tell, they don't meddle with initialization
setups.  [Late note on that - one of the newer CSDs does install a new
xinit.cmd, but quite politely informs you that it is moving your old
one to "xinitbak.cmd".]

10. With your trusty editor, remove the REMs from config.sys and
startup.cmd.

11. Reboot OS/2 to a far less bugfull networking setup.

12. Periodically check in at ftp-os2 for new CSDs.  Apply as above and
they will overwrite whatever is needed to bring you up to date.  Note
that later CSDs make earlier CSDs obsolete: each CSD is complete.  You
do NOT need to install the whole chronological string of CSDs to get up
to date.  The latest CSD will do everything that any earlier CSDs did.


-------------------
(9) A few reminders
-------------------

If you want to mount part of a Unix box's disk, the Unix machine will
need an entry in its /etc/exports file describing what you're allowed
to mount.  Similarly, your OS/2 system's \tcpip\etc\exports file will
have to list systems you allow to mount your disks (SEE SECURITY NOTES
BELOW).

If you want to redirect printer output from your machine to an LPD
program on some other machine, you'll have to start up an lprmon process
for each of the printer ports you wish to redirect.  See the manual for
the syntax.  The trick is where to put the startup commands.  If you
don't mind seeing the lprmon windows appear at boot time, edit the file
\startup.cmd and insert the command(s) there.  That's a better solution
than putting them in \tcpip\bin\tcpstart.cmd, since tcpstart.cmd gets
clobbered if you rerun ICAT to reconfigure your setup.  If you are going
to edit your tcpstart.cmd file anyway (see the section below on tuning
for reasons you might do that), go ahead and stick them into
tcpstart.cmd.

Note that there's a weirdness associated with lprmon: it apparently
cannot monitor a port that has a larger-than-default buffer size.  So
make sure that you check the PRINTMONBUFSIZE in your \config.sys.  For
any port(s) on which you will run lprmon make sure that the buffer size
is left on the default setting (134).  For example, a vanilla version
should be: PRINTMONBUFSIZE=134,134,134


----------------------
(10) Security concerns
----------------------

You are now a node on the Internet (assuming you've hooked up to an
Internet-worked network).  That means you have to be security conscious.
You don't have to be an international bank to be chosen as a victim.
There really are people out there trying to break into whatever
computers they can.  You don't want to leave yourself open to that.

Furthermore, if your computer is ever broken into, you stand a far
better chance of getting sympathetic help if you didn't leave it wide
open in the first place.  If I leave my door open and someone walks in
and takes things, they are still doing wrong, but I'd be more likely to
get sympathetic help had I locked the door.

I will outline the approach I've taken to setting up our OS/2 systems.
I AM NOT A UNIX OR NETWORK SECURITY EXPERT.  Just for good measure, I'll
say that again:  I AM NOT A UNIX OR NETWORK SECURITY EXPERT.  I've done
enough reading to know that (a) it matters; and (b) security holes can
be very subtle.  So don't necessarily believe what I'm recommending.  I
welcome comments (but I will not open a debate on the morality of
computer breakins).

1.  Enable Telnet but only with the real password option.  The default
password option offered is very weak.  It requires a single password
that is readable by anyone who has access to the system.  VERY WEAK.
But, buried deep is a better solution.  On page 72-73 of the
Installation and Maintenance Manual is the description of how to set up
telnet to require a Unix-style password file.  Now, Unix-style passwords
are far from hyper-secure, but they're better than a clear-text
"password"!  Perversely, IBM doesn't provide you with a program to make
the passwd file: you'll need to copy an /etc/passwd file from a Unix
host.  But you've probably got a login on a Unix machine - you can use
its password file.

Follow the directions to install the passwd file and shuffle in a
different version of the login.exe program on OS/2.

In general, don't depend on any of the so-called "passwords" that appear
in environmental varibles.  World-visible passwords are a (bad) joke.

2.  Disable incoming FTP except for the very restricted "anonymous"
account.  Your TRUSERS file should look like this:

        user:  anonymous
        rd:    c:\anonymous
        wr:    c:\anonymous

Make sure to create the directory c:\anonymous.  Someone can stuff your
system by filling disk's c:\anonymous directory with garbage, but that's
relatively benign.  If that's a problem, remove "c:\anonymous" from the
"wr:" field.  How can anyone FTP a file into your machine if you don't
even let them have ftp write access to "\anonymous"?  With this setup, a
really trusted user can have an entry in the Unix-style passwd file.
Then she or he can telnet into your machine and run FTP on your machine
to suck the file in.

Don't have anything else in the TRUSERS file.  The idea of unencoded
passwords is ludicrous.

[Supplementary note added later:] Perhaps the above approach is a
little harsh.  It turns out that FTP will not allow reading or writing
of the TRUSERS file.  Hence, you _could_ put other entries into the
TRUSERS file and an FTP-logged-in person couldn't pilfer the TRUSERS
file itself.  NOTE however, that TRUSERS will be accessible to any NFS
or Telnet users, so passwords there are still available.  You decide.
Personally, it makes me too nervous.

3.  Don't enable the rexecd server.  It depends on clear-text passwords
in the environment or in the NETRC file.  People can Telnet in through
the passwd-protected telnet, then execute the command.  Same goes for
the rshd server.

Come on.  Do you really want Joe Unwashed-behind-the-ears to be able to
do "rexec yourmachine del c:\*"?  And then giggle a bit.  Yup, that
could happen.

4.  Don't enable the TFTP daemon "tftpd" unless you really need it for
some obscure reason.  FTP does the job.

5.  Vanilla NFS is well known to be full of security holes.  You'll
notice the tight security demanded by the Unix host: give it a UID and
GID number and that's who you are.  Cute.  I'd be very wary about giving
write permission to my disk.

REMEMBER: THERE ARE NO ACCESS CONTROLS ONCE SOMEONE HAS ACCESS TO YOUR
OS/2 SYSTEM.  No files are protected from reading or deletion.  Once
someone is into your system, they can happily read any of your setup
files in \tcpip\etc (which could [if you're naive] contain real live
readable passwords).  They can also read your \config.sys and
tcpstart.cmd files, in case they missed a password or two.

The only people I want to have write access to my system are people
who've passed the (really minimal!) test of having logged in past the
Telnet-with-Unix-style-passwords.


----------------------
(11) Tuning your setup
----------------------

Following are a few hints and suggestions that may help your networking
system work better.  Where I remembered, I've attributed suggestions to
the people who suggested them.  In most cases, these suggestions
appeared on the Usenet newsgroup comp.os.os2.networking.  I have edited
many/most of these for conciseness and format, so I'm to blame if I've
screwed them up (sorry).  My apologies to those whom I forgot!


1. If you edit any of the installation scripts yourself, note that IBM
uses an undocumented syntax.  They use "attrib file parameters" instead
of "attrib parameters file".  This works fine unless you use 4OS2 (a
command-line enhancer).  If you do, start up an unenhanced cmd shell
first.  (mathelmr@nuscc.nus.sg (Helmer Aslaksen))


2. After the initial thrill wears off, you'll wish there was some way to
get OS/2 to stick all the networking windows into the Minimized Window
Folder automatically at boot time.  Following is a scheme for doing so.
The basic idea is to stop tcpstart.cmd from being run in the
\startup.cmd script (running it as a "Startup" folder object instead)
and get all the programs started minimized, instead of as normal
windows.  (sip1@midway.uchicago.edu (Timothy F. Sipples),
mathelmr@nuscc.nus.sg (Helmer Aslaksen), others)

        A) Edit \startup.cmd and put a REM in front of the line that
        runs the tcpstart.cmd script.  Add an "exit" to the end of the
        \startup.cmd file (if you want its window to vanish, too).  In
        fact (if nothing else is started in that file) instead of
        editing it, you can just move it to \startup.old and forget
        about it.

        B) From the desktop, open the "OS/2 System" object, then the
        "Startup" object within that.

        C) From the "Drives" object, open up directories until you have
        an icon view of the \tcpip\bin directory.  Click the right mouse
        button once on the \tcpstart.cmd script.  Using the resulting
        popup menu, create a shadow of the object, selecting the
        "Startup" window to be its location.  The reason for doing A-C
        is that things in the "Startup" folder start up late enough in
        the boot process that they start after the Minimized Window
        Viewer is in place.  Otherwise, you get icons across the bottom
        of the desktop (eeeeww!).

        D) Now edit the file \tcpip\bin\tcpstart.cmd.  Wherever you see
        a "start ..." line, change it to "start /min ...".  That will
        cause the programs to start minimized.  NOTE: Check this file
        again any time you run ICAT: your changes may get blown away
        so that you'll have to reinsert the "/min"s.

        E) For any line in tcpstart.cmd that starts "call ...", edit the
        script that gets called.  In those scripts, again change "start
        ..." lines to "start /min ...".  Check this also after running
        ICAT.

3. Some of the networking software doesn't actually need to be run as a
subprocess of a "cmd" process.  For these cases, rather than issuing a
"start ..." or a "start /min ..." to kick them off, you can issue a
"detach ...".  For some processes (ones that have certain requirements
for interaction with keyboard and display), this won't work.
Experiment with it, though, you can save some memory that way.  I've
found that it works with lprmon, lpd (run standalone, not via inetd),
portmap, and nfsd.  It does not work with telnetd.  I think it works
with inetd itself, but if inetd starts telnetd for you, then telnetd is
stuffed.  Hence, I gave up on inetd.  Others, you're on your own...

4. If you have already put a default router's IP address into your
configuration, you're probably not running routed.  If you are running
routed, however, you may be able to discover what your default router
is, insert its address, and stop running routed.  After you've been
doing network things for a while (including pinging or ftping some
remote sites), give the following command from an OS/2 command window:

        netstat -r

Look for an entry that begins with "default".  You guessed it: use that
IP address as your default router address.  Use ICAT to edit your
network configuration: turn off "routed" and configure the default
router's IP address into the Routing Information section.  (Routed
information: assela@rpi.edu (Andre Asselin))

5. The networking software sucks memory.  If you have 8 Mb or less of
memory, your performance will go down noticeably (but far from fatally)
as OS/2 swaps things in and out more often.  Don't need the TELNET
server?  Close it.  Don't need the FTP server?  Shut it down.  Don't
need the TALK daemon?  Get rid of it.  Mailer unnecessary?  Leave it
aside.  Only use X Windows occasionally?  Start up the PMX daemon "by
hand" when you need it.  That said, we find that full blown TCP/IP does
quite well in (true) 9 MB.  The extra megabyte appears to make all the
difference in the world.  If you don't run with everything but the
kitchen sink, 8 MB is viable.  The 2.1 release should improve on that
even more [since IBM is making efforts to make the OS/2 base use up
less memory].  Pay attention to cache sizes, by the way: a disk cache
that is too large will actually decrease performance.
(sip1@midway.uchicago.edu (Timothy F. Sipples))  Our experience is that
beefing up our systems to 16 Mb made things run _far_ more nimbly: the
near-continual disk grinding stopped and the agonizing pauses went
away.


--------------------------------
(12) Interesting TCP/IP software
--------------------------------

There is a plethora of free software available on the Internet.  One of
the largest repositories of OS/2 software is the machine:
ftp-os2.nmsu.edu.  Access it using anonymous FTP.  That is, connect to
it using ftp (give the command: ftp ftp-os2.nmsu.edu) and give the user
name "anonymous" (without the quotes) when prompted for a user ID.
When prompted for a password, give your email address.  See the manual
entries on the FTP program for more details.  Also see part (8) of this
document for an example of downloading some files using FTP.

Following are some pointers to useful TCP/IP-oriented programs (and
some other "indispensables") that can be downloaded from ftp-os2 or
other archive sites.  The filenames are indented under the names of the
directories under which they are found on ftp-os2 - locations may vary
on other archives.  A "*" for the filename indicates that there are
several files in that directory that are relevant.

os2/all/info/faq/
        *             The OS/2 Frequently Asked Questions (with answers!)
os2/ibm/ews/
        gopher.zip    PM client for the Internet Gopher Client
        goserv.zip    A Gopher Server protocol for OS/2 2.x
os2/2_x/network/
        nistime.zip   Update time/date from NIST Internet server
        os2gofer.zip  Gopher client for OS/2 PM (requires VREXX & TCP/IP)
        os2nosv4.zip  TCP/IP for OS/2 (via SLIP) - text-based
        passwd.zip    IBM TCP/IP passwd file maintenance utilities
        slip20b1.zip  Better performing SLIP for IBM TCP/IP 1.2.1
        tcpstart.txt  This document you're reading now!
        tn_enh11.zip  Enhancement for IBM OS/2 2.0 telnet daemon
        wsos21.zip    Novell Netware Requester 2.01 for OS/2, Disk 1 of 3
        wsos22.zip    Novell Netware Requester 2.01 for OS/2, Disk 2 of 3
        wsos2d.zip    Novell Netware Requester 2.01 for OS/2, Disk 3 of 3
        nsd202.zip    Novell Service Diskette (NSD #2) for WorkStation Kit
os2/2_x/network/ndis/
        *             NDIS drivers for many Ethernet cards
os2/all/network/ndis/
        *             NDIS drivers for many Ethernet cards
os2/ibm/tcpip/
        *             Home of "official" IBM bug fixes to TCP/IP
os2/2_x/patches/
        *             Home of more CSDs and bug fixes
os2/2_x/unix/unixutil/
        elvis172.zip  Elvis 1.7, a vi clone (for Unix devotees)
        xfeel11.zip   A utility to make PM behave like X-Windows


--------------
(13) Good luck
--------------

That's about it for now, folks.  Read the IBM manuals - they're actually
not too bad.  Not hold-your-handish, but most of what you need is
(somewhere) in there.  

Best of luck with networking.  Maybe we'll ping each other one day...


---------------------------------------------------
(A1) Appendix I: Coexistence of TCP/IP with Netware
---------------------------------------------------

Personally, it's hard for me to believe, but apparently there's this
other networking scheme out there by this little startup called
Novell...  I haven't needed to interact with a Novell network, but lots
of people do.  I've collected some of the postings from the Usenet
newsgroup comp.os.os2.networking that address this issue.  I hope that
they will help you get things working if you need to access TCP/IP and
Novell.

I have edited the text for brevity and consistency, so please pardon any
errors I may have introduced in the process.  Thanks go entirely to the
original posters of these messages - I've done nothing but copy their
work.


********************************************************************
From: ccherry@vnet.ibm.com
Organization: IBM Boca Programming Center
Date: Wed, 27 Jan 93 23:53:32 GMT

Install the NetWare requester. Then install LAN Adapter Protocol Support
(LAPS). This came with your TCP/IP disks. Choose NetWare Requester
support if it is available. Next install TCP/IP Support.

If your version of LAPS offered NetWare requester support, double click
on the NetWare line and a dialog will appear. The first line will be for
the universal address of your Ethernet card.  Enter that number and exit
LAPS.  Alternately, you can edit the LANADDRESS = line in
\IBMCOM\PROTOCOL.INI

If LAPS did not have NetWare support, you must follow the directions in
Chapter 6 of the NetWare Requester for OS/2 manual.

Good luck!


********************************************************************
From: davbur@joyner.lib.ecu.edu (David L. Burke)
Organization: UNC Educational Computing Service
Date: Mon, 25 Jan 1993 23:54:56 GMT

Hope this stuff helps, guys.  It was a bitch, but I got Requester to
work with TCP/IP for OS/2 1.2.1.  Below are The Big Three:  CONFIG.SYS,
NET.CFG, and PROTOCOL.INI.

Before I say anything else, I hope to hell that after making these
changes that your machine doesn't boot up with a register dump or some
stupid message like "unable to locate Country.sys," or anything else
which stops you in your tracks.  Please make sure you have a floppy boot
disk handy (I prefer makeboot.cmd myself.)  Good luck.

General points:  Don't let ICAT or LAPS alter your config.sys.  Add the
appropriate lines and include \TCPIP... and \IBMCOM...  in the necessary
path statements.

Setup:  I'm using an NE2000 NIC (there's a NE2000.NIF on hobbes for
LAPS).  This setup works with 2.1b (as long as OS/2 is not loaded on
Drive E: for some wierd reason).  I'm superstitious about the INET.SYS
and IFNDIS.SYS files, making sure I use the same ones with each new
install.  Don't have any idea why that is though.

* * * * * *
* CONFIG.SYS  (Notice that all the TCPIP and IBMCOM stuff is at the end of 
*             the file, after the requester stuff.)
* * * * * *
IFS=D:\OS2\HPFS.IFS  /CACHE:512 /CRECL:4 /AUTOCHECK:D
PROTSHELL=D:\OS2\PMSHELL.EXE
SET USER_INI=D:\OS2\OS2.INI
SET SYSTEM_INI=D:\OS2\OS2SYS.INI
SET OS2_SHELL=D:\OS2\CMD.EXE
SET AUTOSTART=PROGRAMS,TASKLIST,FOLDERS,CONNECTIONS
SET RUNWORKPLACE=D:\OS2\PMSHELL.EXE
SET COMSPEC=D:\OS2\CMD.EXE
LIBPATH=.;D:\OS2\DLL;D:\OS2\MDOS;D:\;D:\OS2\APPS\DLL;D:\NETWARE;
D:\TCPIP\DLL;D:\IBMCOM\DLL;D:\TALKTHRU\PROGRAMS;
SET PATH=D:\OS2;D:\OS2\SYSTEM;D:\OS2\MDOS\WINOS2;D:\OS2\INSTALL;
D:\;D:\OS2\MDOS;D:\OS2\APPS;L:\OS2;P:\OS2;D:\NETWARE;D:\TCPIP\BIN;
D:\IBMCOM;d:\tools\utilities;D:\TALKTHRU\PROGRAMS;
SET DPATH=D:\OS2;D:\OS2\SYSTEM;D:\OS2\MDOS\WINOS2;D:\OS2\INSTALL;
D:\;D:\OS2\BITMAP;D:\OS2\MDOS;D:\OS2\APPS;D:\NETWARE;D:\IBMCOM;
SET PROMPT=$i[$p]
SET HELP=D:\OS2\HELP;D:\OS2\HELP\TUTORIAL;D:\TCPIP\HELP;
SET GLOSSARY=D:\OS2\HELP\GLOSS;
SET IPF_KEYS=SBCS
PRIORITY_DISK_IO=YES
FILES=20
SET DIRCMD=/O:GN
DEVICE=D:\OS2\TESTCFG.SYS
DEVICE=D:\OS2\DOS.SYS
DEVICE=D:\OS2\PMDD.SYS
BUFFERS=30
IOPL=YES
DISKCACHE=512,LW
MAXWAIT=3
MEMMAN=SWAP,PROTECT
SWAPPATH=D:\OS2\SYSTEM 2048 2048
BREAK=OFF
THREADS=256
PRINTMONBUFSIZE=134,134,134
COUNTRY=001,D:\OS2\SYSTEM\COUNTRY.SYS
SET KEYS=ON
REM SET DELDIR=C:\DELETE,512;D:\DELETE,512;
BASEDEV=PRINT01.SYS
BASEDEV=IBM1FLPY.ADD
BASEDEV=IBM1S506.ADD
BASEDEV=OS2DASD.DMD
SET BOOKSHELF=D:\OS2\BOOK
SET EPMPATH=D:\OS2\APPS
SET FAXPM=D:\OS2\APPS
REM DEVICE=D:\OS2\APPS\SASYNCDA.SYS 
PROTECTONLY=NO
SHELL=D:\OS2\MDOS\COMMAND.COM D:\OS2\MDOS /P /E:1024
FCBS=16,8
RMSIZE=640
DEVICE=D:\OS2\MDOS\VEMM.SYS    
DOS=LOW,NOUMB
DEVICE=D:\OS2\MDOS\VDPX.SYS    
DEVICE=D:\OS2\MDOS\VXMS.SYS /UMB
DEVICE=D:\OS2\MDOS\VDPMI.SYS    
DEVICE=D:\OS2\MDOS\VWIN.SYS    
DEVICE=D:\OS2\MDOS\VCDROM.SYS    
REM DEVICE=D:\OS2\PCMCIA.SYS 
REM DEVICE=D:\OS2\MDOS\VPCMCIA.SYS 
DEVICE=D:\OS2\MDOS\VMOUSE.SYS    
DEVICE=D:\OS2\POINTDD.SYS 
DEVICE=D:\OS2\MOUSE.SYS SERIAL=COM1 
DEVICE=D:\OS2\COM.SYS                                
DEVICE=D:\OS2\MDOS\VCOM.SYS                                
CODEPAGE=437,850
DEVINFO=KBD,US,D:\OS2\KEYBOARD.DCP
SET VIDEO_DEVICES=VIO_SVGA
DEVICE=D:\OS2\MDOS\VSVGA.SYS

REM --- NetWare Requester statements BEGIN ---
DEVICE=D:\NETWARE\LSL.SYS
RUN=D:\NETWARE\DDAEMON.EXE
DEVICE=D:\NETWARE\NE2000.SYS
DEVICE=D:\NETWARE\IPX.SYS
DEVICE=D:\NETWARE\SPX.SYS
RUN=D:\NETWARE\SPDAEMON.EXE
rem DEVICE=D:\NETWARE\NMPIPE.SYS
rem DEVICE=D:\NETWARE\NPSERVER.SYS
rem RUN=D:\NETWARE\NPDAEMON.EXE NP_COMPUTERNAME
DEVICE=D:\NETWARE\NWREQ.SYS
IFS=D:\NETWARE\NWIFS.IFS
RUN=D:\NETWARE\NWDAEMON.EXE
DEVICE=D:\NETWARE\NETBIOS.SYS
RUN=D:\NETWARE\NBDAEMON.EXE
DEVICE=D:\NETWARE\VIPX.SYS
DEVICE=D:\NETWARE\VSHELL.SYS
REM --- NetWare Requester statements END ---

REM  Below is all the TCPIP and IBMCOM stuff (not before!)
DEVICE=D:\IBMCOM\LANMSGDD.OS2 /I:D:\IBMCOM
DEVICE=D:\IBMCOM\PROTMAN.OS2 /I:D:\IBMCOM
rem  DEVICE=D:\IBMCOM\MACS\NE2000.OS2 /I:D:\IBMCOM

DEVICE=D:\NETWARE\ODINSUP.SYS
RUN=D:\IBMCOM\PROTOCOL\NETBIND.EXE
RUN=D:\IBMCOM\LANMSGEX.EXE

SET ETC=D:\TCPIP\ETC
SET TMP=D:\TCPIP\TMP
DEVICE=D:\IBMCOM\PROTOCOL\IFNDIS.SYS
DEVICE=D:\IBMCOM\PROTOCOL\INET.SYS
RUN=D:\TCPIP\BIN\CNTRL.EXE

SET VIO_SVGA=DEVICE(BVHVGA,BVHSVGA)
DEVINFO=SCR,VGA,D:\OS2\VIOTBL.DCP


* * * * * *
* NET.CFG  (nothing special here)
* * * * * *
Link driver ne2000
   protocol ipx 8137 ethernet_ii
   frame ethernet_ii
   int 5
   port 360
   node address 1B198826
  
netware requester
    preferred ecu_joyner_library

protocol odinsup
    bind ne2000

link support 
    buffers 16 1514


* * * * * *
* PROTOCOL.INI (Don't worry about the LAPS settings during install.  They 
*               only write to the PROTOCOL.INI as far as I know.)
* * * * * *
[PROT_MAN]
 DriverName = PROTMAN$

[IBMLXCFG]
 NE2000_nif = NE2000.nif
 TCPIP_nif = TCPIP.nif

;*----------------------------------------------*
;*------------- PROTOCOL SECTION ---------------*
;*----------------------------------------------*

[TCPIP_nif]
 DriverName = TCPIP$
; Bindings = NE2000_nif
 Bindings = NE2000

;*----------------------------------------------*
;*--------------- MAC SECTION ------------------*
;*----------------------------------------------*

[NE2000]

[NE2000_nif]
 DriverName = MS2000$
 IOBASE = 0x360
 INTERRUPT = 5


********************************************************************
From: loflin@emx.cc.utexas.edu (Don Loflin)
Organization: The University of Texas at Austin, Austin, Texas
Date: 28 Jan 1993 08:55:21 -0600

I found the following settings to be the most crucial, especially the
"protocol odinsup / bind ne2000" part, which the ODINSUP readme claimed
was optional if you only had 1 ODI driver loaded (e.g. it would bind to
the only driver found).  

* * * * *
* NET.CFG
* * * * *
protocol odinsup
    bind ne2000

* * * * *
* PROTOCOL.INI
* * * * *
[TCPIP_nif]
 Bindings = NE2000


********************************************************************
From: RZHM@rz.uni-osnabrueck.DE (Helmut Meyhoefer)
Organization: Computing Center
Date: Thu, 28 Jan 1993 13:38:27 GMT

This is my configuration for CM, TCPIP and NW Requester with NSD201.  No
problems.

* * * * *
* CONFIG.SYS
* * * * *

IFS=C:\OS2\HPFS.IFS /CACHE:384 /CRECL:4 /AUTOCHECK:CDE

REM ******* LAPS:
RUN=C:\OS2\INSTALL\IBMLANLK.EXE C:\OS2\INSTALL\IBMLANLK.LST

RUN=C:\OS2\XCOPY.EXE C:\OS2\OS2*.INI E:\OS2\IniSave
PROTSHELL=C:\OS2\PMSHELL.EXE
SET RESTARTOBJECTS=STARTUPFOLDERSONLY
SET USER_INI=C:\OS2\OS2.INI
SET SYSTEM_INI=C:\OS2\OS2SYS.INI
SET OS2_SHELL=C:\OS2\CMD.EXE
SET AUTOSTART=PROGRAMS,TASKLIST,FOLDERS
SET RUNWORKPLACE=C:\OS2\PMSHELL.EXE
SET COMSPEC=C:\OS2\CMD.EXE
LIBPATH=.;C:\OS2\DLL;C:\MUGLIB\DLL;C:\OS2\MDOS;E:\CMLIB\DLL;C:\;C:\OS2\APPS\DLL;C:\IBMCOM\DLL;E:\NETWARE;E:\TCPIP\DLL;
SET PATH=C:\OS2;C:\OS2\CMD;C:\MUGLIB;C:\OS2\SYSTEM;D:\SYSTEM;C:\OS2\MDOS\WINOS2;E:\CMLIB;E:\CMLIB\APPN;C:\OS2\INSTALL;C:\;C:\OS2\MDOS;C:\OS2\APPS;L:\OS2;P:\OS2;E:\NETWARE;E:\TCPIP\BIN;
SET DPATH=C:\OS2;C:\MUGLIB\DLL;E:\CMLIB;E:\CMLIB\APPN;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;C:\;C:\OS2\BITMAP;C:\OS2\MDOS;C:\OS2\APPS;C:\IBMCOM;E:\NETWARE;L:\OS2;
SET PROMPT=$e[32;40m$e[1mrc=$r [$p] $i$e[0m
SET HELP=E:\CMLIB\APPN;C:\OS2\HELP;C:\OS2\HELP\TUTORIAL;E:\TCPIP\HELP;
SET GLOSSARY=C:\OS2\HELP\GLOSS;
SET THE_HELP=D:\OS2\UTILS\THE\OS2.HLP
SET THE=D:\OS2\UTILS\THE\PROFILE.THE
SET DIRCMD=/O:GN
PRIORITY_DISK_IO=YES
FILES=20
DEVICE=C:\OS2\R0CSDD.SYS

REM ******* LAPS:
DEVICE=C:\OS2\INSTALL\IBMLANLK.SYS C:\OS2\INSTALL\IBMLANLK.LST
DEVICE=C:\IBMCOM\LANMSGDD.OS2 /I:C:\IBMCOM
DEVICE=C:\ibmcom\protman.os2 /I:C:\ibmcom

DEVICE=C:\OS2\TESTCFG.SYS
DEVICE=C:\OS2\DOS.SYS
DEVICE=C:\OS2\PMDD.SYS
BUFFERS=30
IOPL=YES
DISKCACHE=64,LW
MAXWAIT=3
MEMMAN=SWAP,PROTECT
SWAPPATH=E:\SWAPSPACE 2048 4096
BREAK=OFF
THREADS=256
PRINTMONBUFSIZE=134,134,134
COUNTRY=049,C:\OS2\SYSTEM\COUNTRY.SYS
SET KEYS=ON
SET DELDIR=C:\DELETE,512 D:\DELETE,1024 E:\DELETE,1024
BASEDEV=PRINT02.SYS
BASEDEV=IBM2FLPY.ADD
BASEDEV=IBM2ADSK.ADD
BASEDEV=OS2DASD.DMD
SET BOOKSHELF=C:\OS2\BOOK;
SET EPATH=C:\OS2\APPS
DEVICE=C:\OS2\APPS\SASYNCDB.SYS
PROTECTONLY=NO
SHELL=C:\OS2\MDOS\COMMAND.COM C:\OS2\MDOS /E:1000/P
FCBS=16,8
RMSIZE=640
DEVICE=C:\OS2\MDOS\VEMM.SYS
DEVICE=C:\OS2\MDOS\VMOUSE.SYS
DOS=LOW,NOUMB
DEVICE=C:\OS2\MDOS\VDPX.SYS
DEVICE=C:\OS2\MDOS\VXMS.SYS /UMB
DEVICE=C:\OS2\MDOS\VDPMI.SYS
DEVICE=C:\OS2\MDOS\VWIN.SYS
DEVICE=C:\OS2\MDOS\VCDROM.SYS
DEVINFO=SCR,VGA,C:\OS2\VIOTBL.DCP
SET VIDEO_DEVICES=VIO_VGA
SET VIO_VGA=DEVICE(BVHVGA)
DEVICE=C:\OS2\MDOS\VVGA.SYS
CODEPAGE=850,437
DEVINFO=KBD,GR,C:\OS2\KEYBOARD.DCP
DEVICE=C:\OS2\POINTDD.SYS
DEVICE=C:\OS2\MOUSE.SYS
DEVICE=C:\OS2\COM.SYS
DEVICE=C:\OS2\MDOS\VCOM.SYS
DEVICE=C:\OS2\MDOS\ANSI.SYS

REM Protokollierung einschalten:
DEVICE=C:\OS2\LOG.SYS
RUN=C:\OS2\SYSTEM\LOGDAEM.EXE

REM ********* Netware Requester ***************
REM --- NETWARE REQUESTER STATEMENTS BEGIN ---
DEVICE=E:\NETWARE\LSL.SYS
RUN=E:\NETWARE\DDAEMON.EXE
DEVICE=E:\NETWARE\TOKEN.SYS
DEVICE=E:\NETWARE\ROUTE.SYS
DEVICE=E:\NETWARE\IPX.SYS
DEVICE=E:\NETWARE\SPX.SYS
RUN=E:\NETWARE\SPDAEMON.EXE
DEVICE=E:\NETWARE\NWREQ.SYS
IFS=E:\NETWARE\NWIFS.IFS
RUN=E:\NETWARE\NWDAEMON.EXE
DEVICE=E:\NETWARE\VIPX.SYS
DEVICE=E:\NETWARE\VSHELL.SYS
DEVICE=E:\NETWARE\ODINSUP.SYS
REM --- NETWARE REQUESTER STATEMENTS END ---

REM ********* Communications Manager ***************
DEVICE=C:\ibmcom\protocol\LANDD.OS2
DEVICE=C:\ibmcom\protocol\LANDLLDD.OS2
DEVICE=E:\CMLIB\ACSLDLAN.SYS
RUN=C:\OS2\EPW.EXE
RUN=C:\ibmcom\protocol\landll.exe
DEVICE=E:\CMLIB\APPN\CMKFMDE.SYS
DEVICE=C:\IBMCOM\PROTOCOL\IFNDIS.SYS
DEVICE=C:\IBMCOM\PROTOCOL\INET.SYS

REM ******* TCPIP
SET ETC=E:\TCPIP\ETC
SET TMP=E:\TCPIP\TMP
RUN=E:\TCPIP\BIN\CNTRL.EXE

REM ******* LAPS:
RUN=C:\ibmcom\protocol\netbind.exe
RUN=C:\ibmcom\lanmsgex.exe

REM ******* TCPIP
SET XFILES=E:\TCPIP\X11
SET USERNAME=
SET HOSTNAME=
SET TELNET.PASSWORD.ID=

CALL=CMD.EXE


* * * * *
* NET.CFG
* * * * *

Link Driver token
   frame token-ring
   frame token-ring_snap
   node address 400031741015

Link Support
   buffers 14 4210

protocol odinsup
   bind token

protocol stack ipx
   sessions 50
   Sockets 64

PROTOCOL STACK SPX
   Abort Timeout 30000
   Verify Timeout 3000
   Listen Timeout 6000
   Send Timeout 6000
   Retry Count 20
   Sessions 50

Netware Requester
   cache buffers 20
   sessions 8
   request retries 20
   preferred server server_name  

Netware Spooler
   copies 1
   keep
   size 8
   banner
   form feed


* * * * *
* PROTOCOL.INI
* * * * *

[PROT_MAN]
 DriverName = PROTMAN$

[IBMLXCFG]
 TCPIP_nif = TCPIP.nif
 LANDD_nif = LANDD.NIF

[TCPIP_nif]
 DriverName = TCPIP$
 Bindings = TOKEN

[LANDD_nif]
 DriverName = LANDD$
 Bindings = TOKEN


********************************************************************
From: reus@mic.dth.dk (Roger de Reus)
Organization: Mikroelektronik Centret, DTH, Denmark
Date: Thu, 10 Jun 93 12:11:44 METDST

One suggestion for your document: Since you refer to ftp.nmsu.edu to
get the CSD's for TCP/IP, you may as well refer to the same place to
get the latest Netware release (/pub/os2/2_x/network/novell) and
documentation.

Here the (excerpts) of the configuration files. I have TCP/IP (with
X11) and Netware (finally) running simultaneously over one single 3COM
3C503 card. I did not use the configuration programs (ICAT and LAPS)
but manually edited the files. Note that all the ELINKII stuff is
commented out. I was happy when things  finally worked out, and did not
try more. Probably  lots  of  extraneous code lying around. Did not get
things running  by  automatically routing, so explicitly added a
default gateway in  the  routing command (last line of this file).

Hope this will get some people getting ahead quicker  than  I did.
Credits   should   go   to   the   Hobbes   ftp    server
(ftp-os2.nmsu.edu) which made the latest changes to both  TCP/IP and
Netware software available (and now supplies  all  the  OS/2 goodies on
CD-ROM for $25,-, I believe---grab  it  you  American guys), Kerry
Sesker (cmdses@pmvax.weeg.uiowa.edu)  who  supplied me with some
configuration files I could start with,  and  Prof.  Mike Thompson
(Cornell University), who pointed  me  to  ftp-os2 for the Novell
software update.
________________________________________________________________/\_____
Roger de Reus (REUS@MIC.DTH.DK)                                 \/
                                 Mikroelektronik Centret  /\ /\ /\  /--
Ph. (+45) 45 93 12 22--5764          DTH, bldg. 345-east  -- -- -- ----
Ph. (+45) 45 93 46 10                    DK--2800 Lyngby  -- -- -- ----
Fax (+45) 42 88 77 62                            Denmark  -- -- --  `--
_______________________________________________________________________

* * * * *
* CONFIG.SYS (relevant parts)
* * * * *

LIBPATH=...;C:\TCPIP\DLL;C:\USR\NETWARE;C:\IBMCOM\DLL;
SET PATH=...;C:\TCPIP\BIN;...;C:\USR\NETWARE;C:\IBMCOM;
SET DPATH=...;C:\USR\NETWARE;C:\IBMCOM;
SET HELP=...;C:\TCPIP\HELP;

REM --- TCP/IP and NetWare Requester statements BEGIN ---
DEVICE=C:\IBMCOM\PROTMAN.OS2 /I:C:\IBMCOM
DEVICE=C:\IBMCOM\LANMSGDD.OS2 /I:C:\IBMCOM
SET ETC=C:\TCPIP\ETC
RUN=C:\TCPIP\BIN\CNTRL.EXE
SET XFILES=C:\TCPIP\X11
SET DISPLAY=reus026.mic.dth.dk:0
SET TZ=CET
SET LPR_SERVER=mic.dth.dk
SET LPR_PRINTER=ps
SET HOSTNAME=reus026
SET LANG=Da_DK
SET NWLANGUAGE=ENGLISH
DEVICE=C:\USR\NETWARE\LSL.SYS
RUN=C:\USR\NETWARE\DDAEMON.EXE
DEVICE=C:\USR\NETWARE\3C503.SYS
DEVICE=C:\USR\NETWARE\ODINSUP.SYS
DEVICE=C:\USR\NETWARE\IPX.SYS
DEVICE=C:\USR\NETWARE\NWREQ.SYS
IFS=C:\USR\NETWARE\NWIFS.IFS
RUN=C:\USR\NETWARE\NWDAEMON.EXE
RUN=C:\IBMCOM\PROTOCOL\NETBIND.EXE
RUN=C:\IBMCOM\LANMSGEX.EXE
DEVICE=C:\USR\NETWARE\VIPX.SYS
DEVICE=C:\USR\NETWARE\VSHELL.SYS
DEVICE=C:\IBMCOM\PROTOCOL\INET.SYS
DEVICE=C:\IBMCOM\PROTOCOL\IFNDIS.SYS
rem DEVICE=C:\IBMCOM\PROTOCOL\ELINKII.OS2
REM --- TCP/IP and NetWare Requester statements END ---


* * * * *
* NET.CFG
* * * * *

cache buffers = 40
file handles = 120
max tasks = 60
pb buffers = 10
preferred server = mic
show dots on

link driver 3C503
   frame ethernet_802.3
   frame ethernet_ii
   frame ethernet_802.2
   frame ethernet_snap
   node address 02608c8c04eb
   protocol ipx 0 ethernet_802.3

link support
   buffers 15 4210
   mempool 4096

protocol odinsup
   bind 3c503

protocol stack IPX
   bind 3c503

protocol tcpip
   ip_address 129.142.64.205
   ip_router  129.142.6.16
   ip_netmask 255.255.0.0
   tcp_sockets 8
   udp_sockets 8
   raw_sockets 1
   nb_sessions 4
   nb_commands 8
   nb_adapter  0
   nb_domain

netware requestor
   cache buffers 20
   displayharderrors no
   preferred server mic

netware spooler
   no banner
   no form feed


* * * * *
* PROTOCOL.INI
* * * * *

[PROT_MAN]
 DriverName = PROTMAN$

[IBMLXCFG]
; ELNKII_nif = ELNKII.nif
 TCPIP_nif = TCPIP.nif

;*----------------------------------------------*
;*------------- PROTOCOL SECTION ---------------*
;*----------------------------------------------*

[TCPIP_nif]
 DriverName = TCPIP$
 Bindings = X3C503


;*----------------------------------------------*
;*--------------- MAC SECTION ------------------*
;*----------------------------------------------*

[X3C503]

;[ELNKII_nif]
; DriverName = ELNKII$
; netaddress = "02608C8C04EB"
; interrupt = 3
; ioaddress = 0x300
; transceiver = "ONBOARD"
; maxtransmits = 8
; xmitbufs = 2


* * * * *
* TCPSTART.CMD (initializes also X11)
* * * * *

@echo off
echo CONFIGURING TCP/IP .....
CALL C:\TCPIP\BIN\SETUP.CMD
echo ..... FINISHED CONFIGURING TCP/IP
echo STARTING THE TCP/IP PROCESSES .....
rem start pmx -nocopyright -staticcolor -k 102
CALL C:\TCPIP\BIN\XINIT.CMD -staticcolor -k 102
echo     ..... X System Server Started
rem call nfsstart
rem echo     ..... Network File System Client Started
echo ..... FINISHED STARTING THE TCP/IP PROCESSES
echo .....  EXITING TCPSTART.CMD  .....


* * * * *
* SETUP.CMD (called by TCPSTART)
* * * * *

route -fh
arp -f
ifconfig lan0 129.142.64.205 netmask 255.255.0.0
route add default 129.142.6.16 1



---------------------------------------------------
(A2) Appendix II: Supplementary information on SLIP
---------------------------------------------------

Rather than editing matter that I don't fully understand, I've included
this dialog essentially verbatim.  It is Dave Bolen, author of a SLIP
driver (alternative to IBM's own) replying to SLIP configuration
questions from Don Lindbergh.  Dave Bolen's SLIP driver is presently
still in the testing stage, but users reporting in the
comp.os.os2.networking newsgroup are uniformly glowing in their reviews
of it.

At the time of writing, Bolen's slip driver can be had via anonymous
FTP from ftp.ans.net in file /pub/misc/slip20a3.zoo.

In any case, the following notes should give you a _lot_ of information
about SLIP connections in general, as well as information that may be
specific to Dave's drivers.


>From: dabl2@nlm.nih.gov (Don A.B. Lindbergh)
Date: Wed, 17 Feb 93 14:04:06 EST
Message-Id: <9302171904.AA09472@nlm.nih.gov>
To: dean2@bigbird.csd.scarolina.edu
Subject: Re: TCP/IP, SLIP, Beat 2.1 Setup Questions (LONG)

Ok, I'm sending you what Bolen sent me.  He has sent me two replies.
The first is pretty much *it* as far as what you're probably interested
in.  It is long and has diagrams :)  The second piece is an attempt at
further clarification.  I also included the first piece of mail from a
gentlemen trying to help me put the final piece in place, using
ROUTED.  I basically haven't been able to get it to work (I think)
because of:

1. not much time
2. incorrect syntax

There will undoubtably be some more email from him, after which I
predict the light will shine on me, the angles will sing, and I will
actually have a full blow slip home system going......

Oh, near the end of Bolen's first note is an 'off the cuff' 'untested'
method of using 'arp -s' to 'publish' a network card to do routing.  I
wasen't able to get this to work for me, it may be I'm doing something
wrong.  I intend to at least confirm with him that this method *does*
in fact work.  It seems I will be using either this method or ROUTED as
getting a static route added for my SLIP subnet may be a hassle (Bolen
talks about all this).

So, truthfully, I'm not quite out of the woods yet, but I wanted to
send you what he sent me, because it seems he has told me pretty much
everything.  I figured it's better to send you more than you need
rather than edit it down myself.  If you like, I'll forward what I get
and wrap it up when I get it really working.  Your stuff was invaluable
to me when I was trying to get tcp/ip going.

--Don Lindbergh
dabl2@lhc.nlm.nih.gov

_______________________________________________________________________
>From db3l@ans.net Mon Feb 15 16:41:48 1993
To: dabl2@nlm.nih.gov (Don A.B. Lindbergh)

>REQUEST FOR HELP, somewhat lengthy.....

Well, let's see what we can do...

Warning - your request may have been lengthy, but these answers get
real long sometimes :-)

>I'm really unclear on how to setup at home for SLIP.  I've read over
>EVERY occurance of 'slip' in the TCPINFO doc's, I don't get it....

Part of the difficulty explaining this sort of stuff is that if you get
generic enough in your explanation to cover anyone's case, the
explanation becomes vague enough to be less than helpful :-)

For example - you don't give any actual IP addresses in your supplied
office and home configurations, and yet it is likely the actual IP
addresses (and routing between them) that is the problem.

So - for these examples, I'll use some explicit IP addresses that we
use here at ANS - hopefully, it will not be difficult to translate
their use into your own addresses.

Let's take the office machine.  In my case, it has two interfaces - an
ethernet (lan0) and com1 (sl).  The important elements for packet flows
are the addresses of the interfaces, and the routes that the machine
has to specific hosts or networks.

Let's say the office LAN is 147.225.10.x, and my machine has the
address 147.225.10.18.  Thus, subnet 10 of network 147.225 (a class B
network) is dedicated to the office ethernet.  There is a default
router on the office lan, 147.225.10.1, that I should send packets to
when I don't know where to send them.  The subnet mask for my LAN is
255.255.255.0.  Also, I have a nameserver at 147.225.10.1.

Now let's say that I choose subnet 11 for my SLIP connection.  You
can't give hosts at the far end of the SLIP link an address in subnet
10 since the rest of your LAN all think that subnet 10 hosts are
directly connected to the ethernet itself.  (This isn't completely
true, but it's tricky to work around, so let's say it is true for
now).  It is possible, as your example showed, to have your office
machine be 147.225.10.18 on both interfaces, but is often clearer if
you give it an address in the same subnet as the far end of the link.
Let's say in my case, I've made the office machine 147.225.11.1 on the
sl interface, and my home machine is going to be 147.225.11.2.

Thus, you end up with the following configuration:

              -+-
               |
               |      +----------------+              +--------------+
     LAN       |      | Office Machine |              | Home Machine |
               |      | -- -- -- -- -- |  Phone Line  | -- -- -- --  |
               |      |                | 147.225.11.x |              |
147.225.10.x   +------| lan0        sl |--------------| sl           |
               |  .18 |                | .1        .2 |              |
               |      +----------------+              +--------------+
               |
              -+-

Now I don't think you've had a problem getting to this stage of
everything, even though your addresses may be different.  The next big
problem is getting packets to flow where you want.

In this example, hosts on the 147.225.10 network don't have a problem
talking to one another.  They all know that anything in 147.225.10
should be on the LAN wire.  They also know a default router at
147.225.10.1.  If I did a "netstat -r" on your office machine, I would
find an entry like:

   Office with LAN:

        destination     router          intrf (interface)

        default         147.225.10.1    lan0
        147.225.10.0    147.225.10.18   lan0

or in other words - packets heading to anything on 147.225.10 would go
through my local interface to the LAN, lan0, while anything else also
goes out over lan0, but it gets sent to the 147.225.10.1 host, which
should know what to do with it.

That's just the LAN.  Once you start SLIO and create the "sl"
interface, and ifconfig the appropriate addresses, your routing table
will look like the following:

   Office with LAN and SLIP:

        destination     router          intrf (interface)

        default         147.225.10.1    lan0
        147.225.10.0    147.225.10.18   lan0
        147.225.11.2    147.225.11.1    sl

which is the same as before except that traffic for host 147.225.11.2
will go over the serial interface.  If you use the same address for
your office machine on lan0 as on sl, the above would be the same
except the router field would show 10.18 in both the lan0 and sl cases.

Now, to finish off the scenario, on your home machine all you did is
configure the sl interface - nothing else is running.  That gives you
a routing table like the following:

   Home with SLIP:

        destination     router          intrf (interface)

        147.225.11.1    147.225.11.2    sl


Now, given the differences in IP address, I think that's the state
you've been able to get to in your experiments.  Or, to add this
routing information to my original picture, my hosts would look
configured something like the following:

              -+-
               |
               |      +----------------+              +--------------+
     LAN       |      | Office Machine |              | Home Machine |
               |      | -- -- -- -- -- |  Phone Line  | -- -- -- --  |
               |      |                | 147.225.11.x |              |
147.225.10.x   +------| lan0        sl |--------------| sl           |
               |  .18 |                | .1        .2 |              |
               |      +----------------+              +--------------+
               |  <-- 147.225.10
               |  <-- default
               |            147.225.11.2 -->      <-- 147.225.11.1
              -+-


Ok.  Presuming you're still with me :-)  Here's where you begin to run
into problems.  As long as you are on your office machine, you'll be
fine.  If you try to send packets to someone on the LAN, the route for
147.225.10 will work and you'll find them.  If you try to send packets
to your home machine, it will go out over the serial interface and find
it.  If you send packets somewhere else, they'll go to the default
router, which will get them there.  And, since your office machine is
part of your LAN, packets will find their way back to you since the
rest of the LAN (and outside networks) know how to reach your
147.225.10 addresses.  Nameserver stuff will work fine too, since the
nameservers are presumably on your LAN, so queries are just like other
LAN traffic.

The home machine has some problems however.  Once you get SLIP running
there, you should be able to ping your office machine's address over
the SLIP link.  In other words, in my example, a "ping 147.225.11.1"
would work, and I could do things like FTP to the office machine.  But
that's the only communication that works.

The problem with other hosts is routing related.  For example, let's
say that your home host tried to talk to the default router,
147.225.10.1.  On your home machine you only know how to reach
147.225.11.1, so when you use the 10.1 address, your home machine
doesn't know how to get there.  That's where you get the "no route to
host message".  It is telling you it doesn't know where to send
packets for hosts other than 147.225.11.1.

Now that's an easy one to fix.  Add a default route on your home box
pointing to your office box.  Then, if you try to use an address that
the home machine doesn't know about, it will still send it to the
office machine.  The office machine will then either know about it (if
it's part of 147.225.10, such as your nameserver), or it will forward
it on to *its* default router, 147.225.10.1.

This is only part of the problem, however.  That solves the outgoing
packets from your home machine, but it doesn't fix the case of packets
coming back in to your home machine.  For example, your home machine
will now know how to send a packet to the nameserver that you use in
your office, but the nameserver won't know how to send the packet back
to the home machine.  The nameserver will know that 147.225.10
addresses are on the LAN, but it won't know what to do with a
147.225.11 address.

There are a few ways to fix this.  What you really need to do is to
get all the other hosts on your LAN to know that subnet 147.225.11 is
routed through you, and that they should send packets to you for those
addresses.  This is not normally practical, however, since a number of
owners of hosts are involved.

Another alternative is for everyone to run a routing daemon (such as
the ROUTED that came with the TCP/IP package), which lets your
machine announce to the other machines that it has the SLIP route, and
then they know where to send the packages.  Again, this may not be
reasonable as everyone may not want to or be able to run a routing daemon.

Probably the easiest thing for you to do is to get whoever administers
the default router to add a static route for your SLIP subnet to that
router.  Then, since everyone else on the LAN defaults to that router,
when it gets packets for your SLIP host it will forward them back to
you.  Often, it will also issue a redirect to the hosts telling them
where they should have really sent the packets.

So to summarize - your problems are likely twofold.  One, that your
home host doesn't know to default to the office host for stuff that it
doesn't have an explicit route to.  And two, that the hosts on the LAN
(or the outside world for that matter) don't know to use you to reach
your home host.  You need to solve both of those routing problems
before you can see packets flowing between your home host and any
other IP attached host.

In terms of the configurations you posted:

>OFFICE MACHINE SETUP.CMD:
>route -fh
>arp -f
>ifconfig lan0 myipaddress netmask 255.255.255.0
>REM ifconfig lan1 
>REM ifconfig lan2 
>REM ifconfig lan3 
>start slio.exe
>sliowait
>ifconfig sl myipaddress otherpcaddress
>route add default myrouter 1

This should be fine.  In general, I don't expect your office machine
would have any problems.  It's the one machine in this whole
configuration that knows just what is going on, and how to reach
everyone it needs to reach.

>HOME MACHINE SETUP.CMD:
>route -fh
>arp -f
>REM ifconfig lan0 myipaddress officeipaddress netmask 255.255.255.0
>REM ifconfig lan1
>REM ifconfig lan2
>REM ifconfig lan3
>start slio.exe
>sliowait
>ifconfig sl myipaddress officeipaddress

This is fine.

>route add host officeipaddress officerouter

You don't need this.  ifconfig'ing sl will automatically add this
route to your routing tables.  What you do need is a statement:

        route add default officeipaddress 1

to let the home host pass all other packets through to the office as
well.

And you need the office machines (or default router) to know about
your home address too.

If this sounds convoluted, it's because it's a lot harder to write
about and explain than just to do - at least I find it that way.

If you've stuck with me this far, I'll also throw in a way you can
cheat with your SLIP address and make the rest of your office LAN
think your home machine is right on the LAN - thus avoiding the need
to tell them about routing or get your default router to change.

Some of this is off the cuff - I don't think I've done this explicitly
myself yet, although it should work fine.

What you do first is get another LAN address for your home SLIP machine
- in my case, let's say it was 147.225.10.19.  You then configure
everyone just as before, including the default route on your home SLIP
machine.  You end up with the following:


   Office with LAN and SLIP:

        destination     router          intrf (interface)

        default         147.225.10.1    lan0
        147.225.10.0    147.225.10.18   lan0
        147.225.10.19   147.225.10.18   sl


   Home with SLIP:

        destination     router          intrf (interface)

        default         147.225.10.18   sl
        147.225.10.18   147.225.10.19   sl


For your office machine, any packets to host 147.225.10.19 (your home
host) will go over the serial line.  All other packets for 147.225.10
hosts will go over the LAN interface.  And anything else will be put
over the LAN interface to the default router also on the LAN.

For your home machine, packets to your office machine will go over the
serial interface, and packets to anything else will first be passed to
your office machine (over the serial interface) for handling.

Now the only rub is getting machines on the LAN to talk back to your
home machine.  The problem is that those machines will think (since it
has a 147.225.10 address) that your home machine is directly connected
to the LAN.

What happens on the LAN is that other machines issue ARP (Address
Resolution Protocol) requests to translate an address (147.225.10.19
in this case) into a hardware level address (such as a token ring or
ethernet adapter address).  Packets are then sent over the LAN to that
hardware address.  For most machines, they answer for their own
address, and give their hardware address.  Obviously, your home
machine can't do that in this case since it isn't attached directly to
the LAN.

So what you do is tell your office machine to answer for your home
machine.  You use the "arp" command to "publish" a permanent arp entry
for your home machine.  The entry will use your office machine's
hardware address as the arp answer.  Then, other machines in the
office will use your office machine's hardware address on the LAN when
sending packets to your home machine - so the packets will end up on
the office machine.  The office machine will look at the actual IP
address and recognize that it should go down the serial link to the
home machine.  This entire process is called "Proxy ARPing", and is
often supplied as an automatic process in SLIP servers or routers -
we'd just be doing it in a more manual fashion.

To set up the arp entry, you need to figure out your hardware address.
You can either do this by looking at the LANTRAN.LOG file in your LAPS
directory (normally C:\IBMCOM).  It should have a line like:
        "Adapter 0 is using node address 10005A82501A    (...)"

Or, check someone else's machine that has recently exchanged traffic
with you and do an "arp -a" and look for your address as in:

        hardware address        IP address
        10005A82501A            147.225.10.18

In either event, you want to know your 12-digit hexadecimal hardware
address.  Once you know that, you can stuff an entry for your home
machine in your arp table with the command:

        arp -s 147.225.10.19 10:00:5A:82:50:1A pub

which will permanently "publish" an arp entry for your home machine.
>From now on, other machines on the LAN will think that your home
machine is right on the ethernet (or token ring) itself, although your
office machine will actually be routing packets through the serial
link to the home machine.

Note that if you are on a token ring, you need to use a bitwise
reversed address (shown in the LANTRAN.LOG file as the token ring
format on the same line as the adapter node address).

I think that's about it.  Like I said - it's more complicated to
explain than it really is.  I hope this helps more than it confuses.
I'd suggest also trying to find a local support person at your site
that may be able to help out with the routing issues.  Or, if you have
some sort of central SLIP server facility, it will probably be easier
to make use of that, as the routing issues will most likely have
already been addressed for that server.

-- David

/-----------------------------------------------------------------------\
 \              David Bolen             \  Internet: db3l@ans.net      /
  |   Advanced Network & Services, Inc.   \   Phone: (914) 789-5327   |
 / 100 Clearbrook Road, Elmsford, NY 10523  \   Fax: (914) 789-5310    \
\-----------------------------------------------------------------------/

>From db3l@ans.net Tue Feb 16 18:37:53 1993
To: dabl2@nlm.nih.gov (Don A.B. Lindbergh)
Subject: Re: TCP/IP, SLIP, Beat 2.1 Setup Questions (LONG)

Don,

>                                        I had no idea that the slip
> connection ip addresses should have a different subnet than the 'real'
> lan ip addresses.

Yeah - the problem is that while you can get it partially working
without using a different subnet, you really need the separate subnet
for proper operation (barring proxy arp solutions).  The reasons for
this are rooted in the fundamentals of how IP routing is handled,
which can be daunting topic for those new to IP networking (or even
old hands :-)).  Couple this with the fact that most IP office users
don't necessarily know the subnetting and routing scheme in place at
their site, and it becomes even more fun.

(At the risk of repeating info from my previous message)

I think it starts to become more understandable - and explainable - if
you make believe you are a machine on your LAN.  Let's say I'm on your
LAN as address 138.68.31.50.  My machine has a routing table telling
me where to send packets for particular destinations, as:

   destination 134.68.31.0 gateway 134.68.31.50
        (anything on 134.68.31 goes out onto my local LAN
         via my LAN interface, and gets my LAN address on it
         as the source address)
   destination default gateway 134.68.31.103
        (anything else goes to the specified gateway.  To reach
         that gateway, I use my previous route to reach the LAN)

Now I'm in good shape - I know how to reach machines on the LAN, and
those off your LAN.  Now say that friendly Don - you - down the hall
(with his machine 134.68.31.25) add a SLIP link, and gives your home
machine address 134.68.31.26.  You sets things up so that if you type
"ping 134.68.31.50" from home, the packets reach my machine in the
office.  So far so good - the problem is where do I send the answer?
I need to reach 134.68.31.26, which according to my routing table is
right on my LAN.  I therefore try to send it right over the LAN, but
there's no machine there with that address.

Now I personally can fix that problem by adding a specific (static)
route to my machine that says:
        destination 134.68.31.26 gateway 134.68.31.25
which says that if I need to reach the specific machine 31.26, I send
it to your office machine.  Anything else in 134.68.31 follows the old
rule and goes directly to the LAN.  Now I can communicate with
everyone including your home machine.  Of course, this solution
doesn't scale well, and it doesn't help you from home since you have
to get everyone else (or at least the default gateway) to add the
route.  Thus the rest of my previous note :-)

>                                   He says getting something like a
> static route added to our subnet requires calling someone else, which
> is not a huge problem, but if we did this, hopefully we could add this
> slip subnet ONCE and that one addition would work for all our group
> who want to use slip.  I would like to try your suggestions about
> permanently publishing an arp entry first I think.....

Having a dedicated SLIP subnet and a primary SLIP router is in fact
the way many sites (including ours) handles the issue.  For single
SLIP connections into individual office machines a proxy arp solution
may be the simplest and most effective - although it does require
manual configuration - and you still have to get yourself allocated an
extra address in the LAN subnet.

> Some further comments and questions....

Ok.

> I know, I questioned the wisdom of publicly posting all my ip
> addresses, on the other hand, who really cares and what if they did
> right?  I've at least got password entry's for telnet and ftp....

Actually, that's a pretty prudent idea, and not so strange, especially
when posting to such a large list.  I don't have much of a problem
myself as the addresses I've used are protected by a security
firewall, so external hosts can't reach those subnets of 147.225 anyway.

Since your address is in fact exposed to the outside world, it's not
unreasonable to avoid publishing it in such a wide forum.

> I tried this briefly last night, but apparently it's a whole other
> lesson to get this damned thing to work.  I don't really understand
> *who* these manuals are written for.....

You'd be surprised - the IBM stuff really isn't all that bad when you
see what else is out there.  Of course, routing daemons are in fact
another whole world of information, of which ROUTED is one of the
simplest daemons.  I could start another whole book on handling
routing daemon issues, but since it's unlikely your entire LAN will
start listening to RIP broadcasts, I think I'd just bypass this option
for now.  Even if you do run ROUTED and config everything right, it
only fixes things for people who are also listening for the
information that you are then broadcasting.

> As per my comments earlier, is this something we can do once and will
> then work for a number of people? ie if we pick subnet 41 for slip,
> then programmers using slip will be
> 
> 134.68.41.1
>          .2 
>          .3 etc?

It depends on how you are servicing the SLIP connections.  As long as
there is a single host that is responsible for all of the SLIP users,
then yes - this will work fine.  For example, here at ANS, we use
subnet 2 for SLIP - all SLIP users get 147.225.2.x addresses.  Our
primary machines have a static route for 147.225.2.0 into our Annex
terminal server (that handles the SLIP users) at 147.225.10.40.

If however, each user is going to handle his or her own SLIP
connection into an office machine, it gets a little tricker.  Given
that changing a centrally administered host is probably harder, what I
would suggest is telling those responsible for the site router to send
all SLIP (134.68.41.x) traffic to one particular host - pick someone's
office machine, or some central machine that you manage.  Then, as
individual programmers set up SLIP links to a new machine, add a
static route to the machine you manage for that SLIP link.  Then,
traffic from LAN or external hosts heading for SLIP home users will
first go to the central machine you manage, which will then forward it
on to the appropriate office machine handling the link.  This will
represent an additional hop, but for the amount of traffic generated
by SLIP it won't be much.

Also depending on the central machine of yours, it can send a redirect
message to the site router, telling it the real machine to send the
SLIP traffic to.  So it can "learn" to avoid the extra hop.  I'm
pretty sure that OS/2 (and most Unix platforms) send a redirect by
default, but don't hold me to that.

> Ah, here's where it gets fun, this would be a good hack......
> I'll try this and let you know.  By the way, I keep hearing about your
> super nifty alternate slip drivers, should I try those?  Dave are you
> holdin' out on me?  :)  One guy said I could find them at ftp.ans.net

Well, yes, I do have "super nifty alternate slip drivers" :-) I wasn't
really holding out on you - getting my drivers wouldn't have solved
your problem as it was routing and addressing related.  Also, my
driver is technically alpha code so I don't generally recommend it to
just anyone yet.  Of course, it's alpha mostly because I'm too
backlogged to do the final cleanup and call it beta, so it's actually
quite stable at this point.

If you're interested - you can anonymously ftp the driver from
ftp.ans.net in the file /pub/misc/slip20a3.zoo.  This has the driver,
several utilities, and a readme that should get you up and running.
My driver both performs better than the standard IBM driver (better
performance while using less CPU) as well as including support for
header compression and priority queueing.  This yields better
interactive performance over a SLIP link.

The driver does require OS/2 2.0, and TCP/IP 1.2.1 at least at CSD
level 2252.  (You can always get the latest CSD from ftp-os2 if you
have an earlier version of TCP/IP - check SYSLEVEL)

=====================================
the below is today's first installment from a gent attempting to help me put
the final piece in place.... ROUTED
======================================

>From jardined@qucis.queensu.ca Wed Feb 17 13:12:00 1993
To: dabl2@nlm.nih.gov
Subject: Re: TCP/IP, SLIP, Beat 2.1 Setup Questions (LONG)

I was going to suggest Bolen's stuff.  He is _most_ knowledgeable.

The secret appears to be as follows:

The ifconfig statement _must_ have your home ip address and the office
(slip) machine ip address.  Use a netmask of 255.255.255.0 make sure
you set the mtu in ifconfig (and in slip.cfg if you use Bolen's
driver).

Now: in order to get at any other machine on your office net, you must
tell your home machine where on the office LAN is the nameserver.  You
use the OS2 ROUTE command to do this.  What you do in it is to a) clear
the previous entiries (-fh flag), then b) set up as 'default' the ip
address of the name server on your office LAN  This means that when at
the OS2 end you mention a machine on your office lan athat is other
than the machine to which you are directly connected via slip, the
request will be routed by your office PC to that name server, which
will do the address resolution.  The test for connection is to use the
'ping' command at your home end.

If you default route to the nameserver, you should be able to ping any
machine on the internet.  I tested it by pinging local machines here,
and then finally hobbes.  It replied!

I'm at the office so I don;t have access to my rexx scripts.  If you
are still having problemsa, I'll send them to you.

I agree the manuals are ghastly.  Luckily I have a bunch of Unix TCPIP
experts here to help me, (we have 4 dept. lans with about 100 Sun
workstations, 4 file servers, 3 compute servers etc. etc. here)  but
even they took a while to figure it out.  I asked, but there is no good
book on TCPIP or X11.  You learn it by recursively reading assorted
ill-written documents, and asking someone who knows. I've been around
long enough to have used IBM manuals back in the '50s and '60s, so I'm
resigned to this situation :-)

Prof. Donald Jardine, Software Technology Laboratory, Comp. Sci. Dept.,
Queen's Univ. Kingston Ont. Ph (613) 545 6070 Fax (613) 545 6513


------------------------------------
(A3) Appendix III: Setting up LaMail
------------------------------------

This is a product that I don't use, but rwalker@rwalker.doa.lastat.gov
kindly sent me a document that he prepared for his users there.  I've
excerpted and edited from that.  Hence I am definitely to blame for
errors of omission and comission in the following suggestions...

1.   Installation:  You will want to check off "Sendmail" and "LaMail"
in the ICAT "Automatic Starting of Services" setup section (see (5)
section 4. above).

2.  Customize your LaMail configuration: In the LaMail screen, select
Options/Set Note Options, then:

    Personal Options
        1. Your login or userid (e.g. dean)
        2. Your hostname (e.g. fiddler.biol.scarolina.edu)
    Note Header
        1. Check "Add Subject Line"
        2. Recommend checking "Long Address Format"
    Note Options
        1. Signature file: You can create a plain-text file that
           contains some address information about yourself.  It will
           be automatically appended to your outgoing mail.  For an
           example, see the three lines at the end of section (0) of
           this document (that's my .signature file contents).  At this
           point, enter the name of the plain-text file that holds your
           signature information.

3.  Send some test mail: Send some mail to someone who's email address
you are sure will work.  Ask them to send you a reply.  It may be
helpful if you are in adjoining offices so you can ask each other if it
worked...

4.  Delivery notification: There's no such thing as registered mail
with SMTP (the mail services that Internet mail uses).  But sometimes
if mail cannot be sent to the recipient, LaMail will pop-up with the
rejected mail item.

5.  Note editor:  The LaMail editor is built upon the OS/2 Enhanced
Editor (EPM).  Most users would be more familiar with the OS/2 System
Editor.  To configure the LaMail editor to resemble the System Editor
more closely do the following while editing a note:

    Select: Options/Preferences:
        Deselect: Advanced Marking
        Select:   Stream Editing
    Select: Options/Save
        
6.  How to forward a note:  While you are reading/editing a note (i.e.
the box title begins "Note") hit Ctrl-I.  In the command dialog box,
either click on an existing command in the top half (if there are any
shown) or type a forward command in the lower half (e.g.  FORWARD
dean2@tbone.biol.scarolina.edu).  Edit the command in the bottom half
and then select OK.  This will bring up a standard LaMail Create Note
menu with the forwarded note included.  Edit the subject and other
header lines as usual and select Send to actually forward the mail.
LaMail will keep a copy of the command in its history file for the next
time you select the command option.

7.  Spelling check:  To check the spelling of an outgoing note, select
the Options/Proof menu item.  Note that the spelling checker appears to
have some bugs.  Sometimes it gets confused and flags even common words
(e.g. "is").  At other times, it appears to just hang.  You may want to
verify the location of the following LaMail files by choosing the
Options/Preferences/Settings/Paths menu:

    US dictionary (normally \tcpip\bin\us.dct) 
    Personal dictionary

8.  Folders:  At installation, the ALL folder is the default folder for
notes.  A copy of your outgoing mail is automatically stored in the
default folder.  You can create multiple folders (e.g., and OUT folder
or organize folders by subject).  You can also associate folders with
individuals in your NICKNAME.NAM file.  Within each folder, the
appearance of mail items can be customized (color and order of fields,
etc.).  Each folder can have a distinct icon associated with it.
Create the icons using the OS/2 icon editor and save them in
\tcpip\lamail as xxxxxx.ICO where xxxxxx is the name of the folder that
you want associated with the icon.

9.  Sendmail:  Sendmail is the background process to LaMail that
actually sends and receives SMTP messages.  This normally should be
running all the time, although it can (and probably should) be
minimized on the screen.  In general, there is nothing you can do in
this session.  If you need to shut sendmail down, you can terminate it
by switching to that session and hitting Ctrl-C.  This will bring you
back to the OS/2 command prompt where you  can type EXIT to close the
session.

10. Join some mailing lists:  The Internet has hundreds of mailing
lists on every conceivable topic.  Good ones include ietf-announce (for
Internet Task Force announcements), the OS/2 mailing lists, new-list (a
mailing list that announces new mailing lists!), and many other
computer and non-computer-specific lists.  The Internet master list of
mailing lists can be retrieved via anonymous FTP from ftp.nisc.sri.com
as netinfo/interest-groups.  Because this is such a large file (over
one million bytes uncompressed), it should be retrieved only on an
exception basis.  Do NOT print the mailing list index.

11. Be sure to include your Internet mailing address on your
correspondence and business cards.  Because may recipients may not be
entirely familiar with internetwork addressing, and may have accounts
on alternate services (MCI, Genie, etc.), make sure to be explicit.
Tell them that it is an Internet address and be sure to give your
entire address.  For example, I'd give the following information:

    Internet: dean2@tbone.biol.scarolina.edu




umailtip:

 ULTIMEDIA MAIL/2 LITE - REMOVAL AND REINSTALLATION
_______________________________________________________________

     Mail that you want to keep should be copied to another
     directory then recopied to the appropriate directory once
     UltiMail/2 is reinstalled.

     X = The drive where Ultimedia Mail/2 Lite is installed.

     1. Edit the CONFIG.SYS file and remove all references to
        UMAIL from the following commands:

          LIBPATH
          SET PATH
          SET HELP

     2. Save the CONFIG.SYS file and exit.

     3. Select the IBM Internet Connection for OS/2 folder and
        drag the Ultimedia Mail/2 Lite folder to the Shredder.
        When prompted by OS/2 to reverify the delete option, click
        on "Yes to All."
                                                                                
     4. Perform shutdown, then restart the system.
                                                                                
     5. During restart a white box with OS/2 next to it will
        appear in the upper left corner.  When this box appears
        press, Alt+F1 to display the Recovery Choices Screen.
                                                                                
     6. On the Recovery Choices Screen select C for Command
        Prompt.
                                                                                
     7. At the Command Prompt type:
           CD TCPIP\UMAIL, then press Enter
                                                                                
     8. At the X:\TCPIP\UMAIL prompt type:
           DEL UMAILWPS.DLL
                                                                                
        to delete the UMAILWPS.DLL file.

     9. Type:
           EXIT, then press Enter
                                                                             
        to restart the system.

    10. After the system restarts, double click on the OS/2
        System icon.
                                                                                
    11. In the OS/2 System Icon View, double click on the Drives
        icon.
                                                                                
    12. In the Drives Icon View, double click on the drive that
        contains the TCPIP directory.
                                                                                
    13. Find the folder labeled TCPIP and click on the plus (+)
        sign to see all the sub-directories.
                                                                                
    14. Find the UMAIL folder and drag it to the Shredder to
        delete it. When prompted by OS/2 to reverify the delete
        option, click on "Yes to All."  Ultimedia Mail/2 Lite is
        now deleted from the system.

    15. To reinstall Ultimedia Mail/2 Lite connect to the Internet
        and perform a Retrieve Software Updates to get the most
        recent version.  This copy installs automatically for you.

        [RECCOMENDED]
        Or you can perform FTP with IBM Web Explorer with the
        following URL:

           ftp://ftp01.ny.us.ibm.net/pub/ultimail

        and download UMF21001.ZIP and README.UML.  After the files
        download, unzip UMF21001.ZIP into a temp directory and type:

           INSTALL

        to re-install Ultimedia Mail/2 Lite. When the installation
        completes, perform shutdown then restart the system.

    16. When restart completes, open an OS/2 Window, type:
           CD TCPIP\UMAIL, and press Enter.

        At the X:\TCPIP\UMAIL prompt, type:
           E UMAIL.PRO

        Go to the end of the file and add the following lines:

        :USER    name             = 'bbbbbb bbbbbb'
                 reply_domain     = 'mail.server.provider'
                 reply_id         = 'bbbbbb'
                 other_id         = 'Internet'
                 id               = 'bbbbbb'
                 .         <------NOTE: Please include the period.

                 bbbbbb = Your Internet Information
                                             
        [Example]
        :USER    name             = 'Firstname Lastname'
                 reply_domain     = 'mail.server.provider'
                 reply_id         = 'userid'
                 other_id         = 'Internet'
                 id               = 'userid'
                 .         <------NOTE: Please include the period.


    17. After you add the lines, save the file as a Plain Text
        File.  When you start UltiMail for the first time, a
        prompt asks you to enter additional information that you
        received from your provider and request you to set up a
        password.

warpboot:

Morton F. Kaplon    CIS:73457,437     Thu  12-22-94

CREATE a Single BOOT Floppy for WARP 3.0

One Disk Boot for WARP 3.0 for system Using FAT and Non-Micro Bus
The example below uses 4OS2 as the Command Processor. If Use
CMD.EXE uses even less space.

Options given for Micro Channel and HPFS system.

 Volume in drive A is unlabeled      Serial number is E24D:2414
 Directory of  a:\*.*
                                     <-------------- Comment -------------->
 <DIR>     0   ____D  4os2
 <DIR>     0   ____D  os2
   1,330   0   ___A_  config.sys
  25,610   0   ___A_  country.sys
   1,074   0   ___A_  dev002.msg
   1,099   0   _HSA_  os2boot
 555,972   0   _HSA_  os2krnl
  30,208   0   _HSA_  os2ldr
   8,366   0   _HSA_  os2ldr.msg
  19,358   0   _HSA_  os2logo
      89   0   _HSA_  os2ver
  39,472   0   _HSA_  sysinstx.com   Optional Use to Create bootable disks
     268   0   _HSA_  wp root. sf
   682,846 bytes in 11 files and 2 dirs    687,104 bytes allocated
   46,080 bytes free

 Volume in drive A is unlabeled      Serial number is E24D:2414
 Directory of  a:\os2\*.*
                                     <-------------- Comment -------------->
 <DIR>     0   ____D  .
 <DIR>     0   ____D  ..
 <DIR>     0   ____D  dll
  17,820   0   ___A_  aha174x.add    MY SCSI-replace with yours if needed
  41,795   0   ___A_  cdfs.ifs       Optional For CD ROM
  68,656   0   ___A_  chkdsk.com
   3,735   0   ___A_  clock01.sys    If Micro Channel use clock02.sys
     459   0   ___A_  config.sys
  28,435   0   ___A_  ftdvr.sys      Optional Driver for TAPE System
  30,994   0   ___A_  ibm1flpy.add
   9,860   0   ___A_  ibmint13.i13
   5,548   0   ___A_  ibmkbd.sys
  27,989   0   ___A_  kbdbase.sys
  16,436   0   ___A_  optical.sys    Optional M-O driver
  24,236   0   ___A_  os2cdrom.dmd   Optional CD ROM  driver
  33,562   0   ___A_  os2dasd.dmd
   9,692   0   ___A_  os2scsi.dmd    If Micro Channel use ibm2scsi.add
  10,910   0   ___A_  print01.sys    If Micro Channel use print02.sys
  27,084   0   ___A_  resource.sys
   9,461   0   ___A_  screen01.sys   If Micro Channel use screen02.sys
  10,820   0   ___A_  tedit.exe      Optional tiny Editor
  14,596   0   ___A_  tedit.hlp      Optional tiny Editor
                                     IF use HPFS need to have
                                     135,746   0   ___A_  hpfs.ifs
   392,088 bytes in 19 files and 3 dirs    398,336 bytes allocated
   46,080 bytes free


 Volume in drive A is unlabeled      Serial number is E24D:2414
 Directory of  a:\os2\dll\*.*
                                    <-------------- Comment --------------->
 <DIR>     0   ____D  .
 <DIR>     0   ____D  ..
     512   0   ___A_  bkscalls.dll
   6,176   0   ___A_  bmcompr.dll   Optional - Used for Tape  Drive
     512   0   ___A_  bmscalls.dll
   7,999   0   ___A_  bvhinit.dll
     512   0   ___A_  bvscalls.dll
 137,084   0   ___A_  doscall1.dll
   1,024   0   ___A_  kbdcalls.dll
   1,024   0   ___A_  moucalls.dll
     512   0   ___A_  msg.dll
   1,024   0   ___A_  nampipes.dll
     512   0   ___A_  nls.dll
  25,504   0   ___A_  npxemltr.dll
     512   0   ___A_  os2char.dll
   1,024   0   ___A_  quecalls.dll
   1,536   0   ___A_  sesmgr.dll
   2,048   0   ___A_  viocalls.dll
   187,515 bytes in 16 files and 2 dirs    189,440 bytes allocated
   46,080 bytes free


 Volume in drive A is unlabeled      Serial number is E24D:2414
 Directory of  a:\4os2\*.*
                                 <--------------- Comment ---------------->
 <DIR>     0   ____D  .          Optional no 4os2 subdirectory
 <DIR>     0   ____D  ..         Optional no 4os2 subdirectory
 134,880   0   ___A_  4os2.exe   Optional use:  90,624 0   ___A_ cmd.exe
     431   0   ___A_  4os2.ini   Optional                   0
      30   0   ___A_  4start.cmd Optional                   0
   1,434   0   ___A_  alias.lst  Optional                   0
   136,775 bytes in 4 files and 2 dirs    138,752 bytes allocated

   If use cmd.exe 136,775 -> 90,624 Bytes, Gain of  46,151 bytes
   46,080 bytes free

<<<<<<<<<<<<< Below is contents of config.sys on A: floppy >>>>>>>>>>>>>>>
REM STart of config.sys
BUFFERS=30
IOPL=YES
MEMMAN=NOSWAP
PAUSEONERROR=YES
DISKCACHE=64,LW
PROTECTONLY=YES

REM *** OS/2 Command Processor
REM SET OS2_SHELL=CMD.EXE
REM PROTSHELL=CMD.EXE
REM *** OS/2 Command Processor

REM *** 4OS2 16 bit Command Processor
SET OS2_SHELL=A:\4OS2\4OS2.EXE
PROTSHELL=A:4OS2\4OS2.EXE
SET COMSPEC=A:\4OS2\4OS2.EXE
SET PROMPT=[4OS2$p]
REM *** 4OS2 16 bit Command Processor

LIBPATH=.;A\:;A:\OS2\DLL
SET PATH=A:\;A:\OS2;A:\4OS2
SET DPATH=A:\;A:\OS2;A:\4OS2
SET KEYS=ON

Rem *** Driver for Parallel Port for Optical
REM BASEDEV=EPSA.ADD /T
Rem *** Driver for Parallel Port for Optical

BASEDEV=AHA174X.ADD /V     REM may need to change for your system
BASEDEV=OS2SCSI.DMD
BASEDEV=OS2DASD.DMD
BASEDEV=IBM1FLPY.ADD
BASEDEV=PRINT01.SYS        REM change to  PRINT01.SYS for Micro Channel
BASEDEV=IBMKBD.SYS

REM *** Driver for Optical Off SCSI  Optional for Optical drive
DEVICE=A:\OS2\OPTICAL.SYS
REM *** Driver for Optical Off SCSI

rem  *** Files for use of CDROM and Hard Disk via Adaptec  Optional
DEVICE=A:\OS2\OS2CDROM.DMD /Q
IFS=A:\OS2\CDFS.IFS /Q
rem  *** Files for use of CDROM and Hard Disk via Adaptec

Rem *** driver for Tape Drive       Optional
DEVICE=A:\OS2\FTDVR.SYS
Rem *** driver for Tape Drive

REM OPTIONAL: If use HPFS need to have statement
IFS=A:\OS2\HPFS.IFS   /whatever options you use

REM End of Config.sys
 There are 203,816 bytes listed as Optional (including using  cmd.exe)
 so there is readily sufficient space to install the HPFS by deleting
 some of those. There would still be room to add back in the Tiny
 Editor plus some more.


TO CREATE the BOOTABLE Floppy

SYSINSTX,COM can be found on the WARP Install Diskette
Copy it to your existing WARP \OS2 directory and with a formatted
floppy in A: give the command

sysinstx A:

This will make the floppy a bootable disk - it transfers system files.
You can then use attrib -sh *.* on your C:   root directory to make
the other files available and copy those (as listed above) to the
A: root drive. Then use attrib +sh on each of those files to make it
hidden again.

*****
I originally used the Create Utility option ti create the 3 floppy disks
that it does. I noted that only disk 1 and 2 are required for the boot
process. I also noted that this procedure did not allow the inclusion of
the additional drivers I needed (tape,optical,CD ROM) so using the
files included on these 2 drives and eliminating the superfluous ones
I arrived at the above combinations.

windos:

        July 25, 1992; Revised August 05, 1992

  The following is copyright 1992 Jesse F. Knecht, RN.
  All rights reserved.

  Information provided is without warranty.

  This information is not free, but may be distributed freely if
not packaged with any other product.  This document must be
distributed in unmodified form.  The procedure(s) are to be
considered Shareware.
  If it works for you and you use it for 10 days, a $1.25 per
PC/Workstation registration fee is required.
  You are simply being allowed to read/try/test the below
described procedure(s) before paying for them.

Mail fee(s), name, address to:
QHS, Inc.
P.O. Box 8692
Metairie, LA 70011

The author may be reached at the above address and also via email.
CompuServe: 70400,600
America Online: JFK RN
Prodigy: MRSV81A

All trademarks of products referenced belong to their
respective owners.

       "Shell to DOS from Windows running under OS/2 2.0"

  The following is quoted from the OS/2 2.0 README file.

"o   Windows programs cannot start DOS sessions or
    DOS programs."

  IBM says you can't run Windows apps. in OS/2 2.0 that shell to DOS.

  I say you can!

  Do you NEED to shell to DOS from Windows under OS/2???
There is a little Windows zip file utility and some WinBatch stuff
I like to use, but sometimes they shell to DOS.  Now I (and you)
can use these and many other programs that shell to DOS from
Windows when in OS/2. NO REBOOTING TO USE THEM!

  What do you end up with?  Windows 3.0 in Real Mode (Large Frame
EMS) that can shell to DOS.  I end up with 540k+ (550k+ using DRDOS)
free conventional memory after after starting a DOS session
from Windows 3.0 under OS/2.

  It's a fairly easy 6 part procedure.

  1) Backup your files
  2) Create a DOS *.IMG file (can use a boot floppy instead)
  3) Model the IMG config.sys & autoexec.bat files after the
     below examples. Use your particular directory/drive names.
  4) Adjust settings for the IMG file
  5) Edit the Windows 3.0 system.ini file
  6) Run it (WIN /R)

  I have not patched any of the OS/2, Windows, or DOS files; I use
the 3-30-92 OS/2 kernel, but have downloaded a couple of other
fixes (REXX, com & floppy, VEMM, and Trident video drivers).

  What do you need?

  You need Microsoft Windows 3.0 and Win3 needs to be started from
a DOS *.IMG file (MS DOS 5 and DR DOS 6 both work) or Drive A:
DOS.  It also helps to have 4DOS.COM (shareware) replace COMMAND.COM
as 4DOS can load conventional, XMS, EMS or swap to disk if needed.
4DOS gives me almost 10k more of 1st 640k than COMMAND.COM.

  I have both MSDOS.IMG and DRDOS.IMG files I use. The only
difference seems to be that DEVICEHIGH= (HIDEVICE) doesn't
seem to work on the DRDOS.IMG; the files load low with every
combination I've tried.

  The following refers to a MSDOS.IMG file but can be used for
DRDOS as well.

  Create your IMG file as per OS/2 online instructions.
To save hard drive space use the smallest floppy available to create
your IMG file.  I dusted off an old single-side 1D floppy (160k) for
my IMG files.  Do they still make 160k floppies?

  Sample IMG config.sys:

DEVICE=FSFILTER.SYS
DEVICE=F:\OS2\MDOS\HIMEM.SYS
DEVICE=F:\OS2\MDOS\EMM386.SYS
REM Next line for DRDOS IMG
REM DEVICE=C:\DOS\HIDOS.SYS /B=FFFF
DOS=HIGH,UMB
REM Do not use \os2\mdos\COMMAND.COM supplied with OS/2
REM SHELL=C:\COMMAND.COM C:\ /P /E:1024
SHELL=F:\4D\4DOS.COM F:\4D @F:\4D\MSDOSIMG.INI /P
REM May use fewer files
FILES=99
REM Use HIBUFFERS for DRDOS
BUFFERS=25
DEVICEHIGH=F:\OS2\MDOS\ANSI.SYS

  Sample IMG autoexec.bat:
(If you mention WINOS2 in your PATH, place your Windows 3.0
directory before it; your true DOS should be before \os2\mdos)

@ECHO OFF
SET PCTOOLS=D:\PCT\DATA
SET TEMP=E:\TEMP
SET TMP=E:\TEMP
REM Next line I use for WinBatch
SET IMGFIL=YES
REM Next line is for 4DOS
SET _CDPATH=D:\QHS;D:\;D:\WIN;E:\;F:\;C:\;D:\OV;D:\WS;F:\OS2;D:\;F:\OS2\MDOS;
PATH F:\4D;C:\DD;D:\WIN;C:\DOS;D:\WP;D:\XL;D:\OV;D:\WS;D:\CC;D:\CC\CAM;D:\PCT;
REM Next 2 lines activate my numlock and capslock that OS/2 turns off
NUMLOCK
CAPSLOCK
PROMPT $i$E[1;32mTime $T$_Date $D$E[1;31m [MSDOS IMG] $P$G$E[0;1m
F:\OS2\MDOS\MOUSE
REM Next 2 lines are for 4DOS
ALIAS /P /R F:\4D\ALIASMSD.TXT
HISTORY /R F:\4D\HISTQHS.TXT
F:
ECHO Edit IMG files now if needed.
ECHO   Enter FSACCESS A: for "normal" A: drive access.

  My "settings" for MSDOS.IMG include DOS full screen DOS_RMSIZE 640,
KBD_CRTL_BYPASS CTRL_ESC, EMS_FRAME_LOCATION AUTO,
EMS_MEMORY_LIMIT 2048, XMS_MEMORY_LIMIT 2048,
DOS_STARTUP_DRIVE F:\OS2\MSDOS.IMG, DOS_UMB ON, DOS_HIGH ON.

  Lastly, you need to make a slight change to the Windows 3.0
system.ini file if you want to use your mouse.  In the [BOOT]
section there is the line: mouse.drv=mouse.drv

  REM the line by placing a semicolon ";" in front of it.

;mouse.drv=mouse.drv

  Add the line:

mouse.drv=<your drive>:\os2\mdos\winos2\system\mouse.drv

  Use the full path as above.  DO NOT overwrite your "normal"
Windows mouse.drv by copying the file from OS/2 (read on).

  Doing the above system.ini editing substitutes the winos2 driver
for the the Windows 3.0 mouse driver.  The above assumes a standard
Microsoft compatable mouse.  Note, if you later decide to boot
DOS and want to run Windows 3.0, REM out ";" the winos2 driver
and unREM the regular Windows 3.0 driver.  Windows 3.0 may not start
under DOS if the winos2 driver is used.
                         Addendum (revised 08-05-92)

  DR DOS USERS: Include both HIDOS=ON and DOS=LOW,UMB in your
                IMG config.sys.  You'll add almost 8k to your
                available 1st 640k in the session.

                ***Potential problem areas & solutions.***

  ALL USERS:    The mouse command in the IMG autoexec.bat is
                required for mouse use.  This is in addition
                to editing Windows 3.0 system.ini.

                In the IMG file autoexec.bat, set your TEMP
                (TMP) environment to some drive and/or
                directory other than where your OS/2 swappath
                is.  Check your OS/2 config.sys.  You'll find
                a line similar to:
                             SWAPPATH=E:\ 2048 2048
                In the above example OS/2 is swapping to the
                root directory on E drive.  For this example you'd
                set your IMG file TEMP environment somewhere other
                than the root directory of E.
                SET TEMP=E:\TEMP works in my IMG file autoexec.bat.

                If you have 2048k or less free on the SWAPPATH drive
                (referring to above example), set the IMG's TEMP to
                a different drive.

                In Windows 3.0 SYSTEM.INI there is a section: [NonWindowsApp]
                You may or may not have any entries in the section.  If,
                however, there is an entry that begins
                swapdisk=
                be sure it does not point to the SWAPPATH directory.
                Swapdisk= tells windows where to swap non-windows apps.
                when in standard and REAL modes.  The Windows default
                (no entry) is the TEMP environment or the Windows directory
                if there is no TEMP environment.  You may need to REM
                the line (use a semicolon ";" as instructed earlier).
                See sysini.txt.

                In Windows 3.0 WIN.INI the [windows] section may
                contain the line: swapdisk=
                This is in addition to the SYSTEM.INI entry.
                This entry should indicate the same path as the
                SYSTEM.INI notation.  If there is no SYSTEM.INI
                entry or you used the REM ";" suggestion, then the
                WIN.INI should be:
                swapdisk=
                (nothing after "=")

                OS/2 config.sys should include DOS=HIGH,UMB;
                RMSIZE=640; along with all the v*.sys statements OS/2 adds.
                Be sure your OS/2 config.sys loads vemm.sys & vxms.sys.

                You might also add the line: 
                         SET COMSPEC=<your command processor>
                to your IMG autoexec.bat.  Refer to your MSDOS or
                DRDOS user's guides for more info on SET, SHELL,
                and COMSPEC.

                         Files & Dates

  The procedure works without using any "fixes" that have been released
(OS/2 2.0 with all files dated 3-30-92).  This is sometimes
called the GA version.  Below are some IBM "fixes" that the author
has downloaded and tried/uses.  The procedure also works with the
following replacing the initial GA version files.  Others may be added
to the list as they are downloaded and tried.

IBM1FLPY.ADD    5-14-92
IBM1S506.ADD    4-6-92
COM.SYS         4-23-92
MOUSE.SYS       6-8-92   (Double speed version)
BVHSVGA..DLL    4-22-92
DISPLAY.DLL     3-30-92  (Trident version 800x600 seamless)
REXX.DLL        7-8-92
REXXAPI.DLL     7-1-92
REXXUTIL.DLL    7-1-92
VSVGA.SYM       4-20-92
VCOM.SYS        4-24-92
VEMM.SYS        4-21-92
VSVGA.SYS       4-20-92

Windows 3.0 files are all 5-1-90 with the exception of Trident
video support:   386grabber=tvga.gr3    6-18-90
                 display.drv=t640.drv   3-11-91    (256 color VGA)


This zip file was created by a Windows program that starts PKZIP.EXE
version 1.1 (a DOS program) to do the zipping.  It was done using
the procedure as described above.

This zip was uploaded to CompuServe using CIM.EXE
(CompuServe Information Manager), a DOS program started
from Windows 3.0 under OS/2 2.0 using this procedure.

  If you'd like a 160k IMG file for OS/2 and can't make one
yourself, mail a bootable floppy (msdos.sys, io.sys, & command.com
for MS DOS; ibmbio.com, ibmdos.com, & command.com for DR DOS) up to
1.44meg to the below address.  Also include the file fsfilter.sys.
There is a $5.50 fee (check or money order) per IMG for this
service which includes return by US mail of your floppy with the
160k IMG file on it.  I'll include NUMLOCK.COM & CAPSLOCK.COM.

Mail fees (check or money order), floppies, name, address to:

QHS, Inc.
P.O. Box 8692
Metairie, LA 70011


Your Name: ______________________________

Company: ________________________________

Address: ________________________________

         ________________________________

         ________________________________

         ________________________________

Procedure Use @$1.25 ea. x ____ PC/Workstation(s): _________

160k IMG Files @$5.50 ea.: ________
(Includes US mail shipping, procedure use on
one PC/Workstation, and NUMLOCK & CAPSLOCK)
**You may order only up to the number of DOS
(MS/DR) or OS/2 you have currently licensed,
whichever is less.

Outside US shipping @$1.00 per floppy: _______

Louisiana Residents 4% tax: _______

Total: ___________

Please allow approx. 3 weeks for US delivery of IMG files.

wpskeys:

OS/2 Workplace Shell Keys                                       08/16/92

    If you have any additions, changes, comments, or suggestions, please send
    them via CompuServe mail to Robert Simpson, CompuServe ID 71520,737.

Startup Tasks:

        Alt+F1                  Restore default desktop
        Ctrl+Shift+F1           Inhibit auto-start features

OS/2 Command Line Tasks (with KEYS ON):

        Esc                     Clear command line
        Home                    Move cursor to first character in command line
        End                     Move cursor to last character in command line
        Ins[ert]                Turn on insert mode
        Del[ete]                Delete character above cursor
        left arrow              Move cursor one character to left
        right arrow             Move cursor one character to right
        up arrow                Display previous command in queue
        down arrow              Display next command in queue
        Ctrl+left arrow         Move cursor back to first character of a word
        Ctrl+right arrow        Move cursor to first character of next word
        Ctrl+Home               Deletes all characters to the left of cursor
        Ctrl+End                Deletes all characters from cursor to the end
                                of the command line
        Enter                   Executes the command on the command line

DOS Command Line Tasks (with DOSKEY):

        up arrow                Recalls the previous command in the queue
        down arrow              Recalls the next command in the queue
        Page Up                 Recalls the first command in the queue
        Page Down               Recalls the most recent command
        left arrow              Move cursor one character to left
        right arrow             Move cursor one character to right
        Ctrl+left arrow         Move cursor back to first character of a word
        Ctrl+right arrow        Move cursor to first character of next word
        Home                    Move cursor to first character in command line
        End                     Move cursor to last character in command line
        Esc                     Clear command line
        F7                      Displays commands in queue
        Alt+F7                  Deletes all commands from queue
        chars F8                Display previous command in queue which starts
                                with "chars"
        F9 cmd#                 Displays the command specified by "cmd#"
        Alt+F10                 Deletes all macro definitions

DOSKEY parameters:

        /M                      Display macros which are currently defined
        /H                      Display recently used commands

Special characters for DOSKEY macros:

        $G or $g                >
        $G$G or $g$g            >>
        $L or $l                <
        $B or $b                |
        $T or $t                Terminates the command (like Enter)
        $$                      $
        $1 through $9           parameters
        $*                      all parameters on the command line

DOS Command Line Tasks:

        F1                      Copies one character from the template to the
                                command line
        F2 char                 Copies characters prior to the next occurrence
                                of "char"
                                from the template to the command line
        F3                      Copies the remaining characters from the
                                template to the command line
        F4 char                 Skips characters prior to the next occurrence
                                of "char" in the template
        F5                      Copies the current command line to the template
                                without executing it and clears the command line
        F6                      Places and end-of-file character (Ctrl+Z) at
                                the cursor position in the current command line

System Tasks:

        Alt+Tab                 Switch to next window on desktop
        Alt+Esc                 Switch to next window or full screen session
        Ctrl+Esc                Display the Window List
        F1                      Get help
        Alt+Shift+Tab           Switch to desktop
        Ctrl+Alt+Del            Restart the system
        Ctrl+Alt+NumLock(twice) Dump system to diskette in A: drive
                                (need diskettes created with CREATEDD command)

Desktop Tasks:

        arrow keys              Move among objects on desktop
        Ctrl+Alt+Shift+O        Display beach scene with credits

    when the desktop is active and no objects are selected:

        Shift+F10               Display the pop-up menu for the desktop
        Print Screen            Print the screen

Window Tasks:

        Tab                     Move to next area in window
        Shift+Tab               Move to previous area in window
        F10 or Alt              Activate menu bar
        Shift+F10               Display the pop-up menu for the window
        Alt+Space               Display cacaded menu for window functions
          or Shift+Esc          in pop-up menu for window
        Alt+F4                  Close window
        Alt+F5                  Restore window to normal size
        Alt+F7                  Move window
                                Use arrow keys to move window
                                Press Enter when it is in the desired position
        Alt+F8                  Size window
                                - Press left or right arrow key to indicate
                                  which side to adjust
                                - Adjust width with left and right arrow keys
                                - Press up or down arrow key to indicate
                                  whether to adjust top or bottom
                                - Adjust height with up and down arrow keys
                                - Press Enter when it is the desired size
        Alt+F9                  Minimize window
        Alt+F10                 Maximize window
        Alt+F11                 Hide window
        Alt+Home                Switch between DOS full screen and window mode
        Alt+Ins[ert]            Create a new object and place it in the
                                clipboard

    when no objects are selected:

        Shift+F10               Display help about using help

Icon View Window Tasks:

        arrow keys              Move among objects in the window

Text Window Tasks:

        Tab                     Insert tab character and move cursor to next
                                tab location
        Alt+Backspace           Undo
        Shift+Del[ete]          Cut
        Ctrl+Ins[ert]           Copy
        Shift+Ins[ert]          Paste
        Del[ete]                Clear
        Ctrl+F                  Find
        Ctrl+right arrow        Move cursor to beginning of next word
        Ctrl+left arrow         Move cursor to beginning of previous word

        see also Text Field Tasks

Help Window Tasks:

        Esc                     Return to the previous help window or remove
                                the initial help window
        Tab                     Move the cursor to the next highlighted word
                                or phrase
        Shift+Tab               Move the cursor to the previous highlight word
                                or phrase
        F1                      Display help for the help window
        F2                      Display help for the object or window for
                                which help was initially displayed
        F6                      Move the cursor to and from buttons in the
                                same window
        F7                      Move the cursor to and from buttons in a
                                different window
        F9                      Display keys help
        Shift+F10               Display help about using help
        F11 or Shift+F1         Display the help index
        F12 or Shift+F2         Display the tutorial
        Alt+F6                  Switch between the help window and the object
                                or window for which help was displayed
        Ctrl+A                  Copy the topic and add it to the end of a
                                temporary file
        Ctrl+C                  Display the help table of contents
        Ctrl+F                  Copy the topic to a temporary file
        Ctrl+L                  Display a list of libraries that contain help
                                topics
        Ctrl+N                  Open a new help window
        Ctrl+S                  Search for a word or phrase
        Ctrl+Ins[ert]           Copy the topic to the clipboard

Information Presentation Facility (IPF) Window Tasks:
        Ctrl+F4                 Close pane
        Ctrl+F5                 Restore pane to normal size
        Ctrl+F7                 Move pane
                                - Use arrow keys to move pane
                                - Press Enter when it is in the desired
                                  position
        Ctrl+F8                 Size pane
                                - Press left or right arrow key to indicate
                                  which side to adjust
                                - Adjust width with left and right arrow keys
                                - Press up or down arrow key to indicate
                                  whether to adjust top or bottom
                                - Adjust height with up and down arrow keys
                                - Press Enter when it is the desired size
        Ctrl+F9                 Minimize pane
        Ctrl+F10                Maximize pane

IPF Contents Window Tasks:

        +                       Expand one level
        *                       Expand branch
        Ctrl+*                  Expand all branches
        -                       Collapse branch
        Ctrl+-                  Collapse all branches
        Ctrl+C                  Contents
        Ctrl+I                  Index
        Ctrl+H                  Viewed pages
        Ctrl+L                  Libraries

Object Tasks:

        Space Bar               Select or deselect the object
        Ctrl+/                  Select all objects
        Ctrl+\                  Deselect all objects
        letter keys             Select next object starting with given letter
        Shift+F8                Begin and end selecting multiple objects
        Shift+F10               Display pop-up menu for a selected object
        Enter                   Open a selected object

Menu Tasks:

        Home                    Select first choice
        End                     Select last choice
        up arrow                Move to previous choice
        down arrow              Move to next choice
        right arrow             Show cascaded menu (when there is an arrow
                                button on the selected choice)
        left arrow              Hide cascaded menu
        letter keys             Select choice with that letter underlined
        F10 or Alt              Close menu and return to window

Button Tasks:

        Space Bar               Push the button with the cursor box
        Enter                   Push the highlighted button

Text Field Tasks:

        Home                    Go to beginning of current line
        End                     Go to end of current line
        Del[ete]                Delete character to right of cursor
        Backspace               Delete character to left of cursor
        Ctrl+Home               Go to beginning of first line
        Ctrl+End                Go to end of last line
        Page Up                 Scroll up one page
        Page Down               Scroll down one page
        Ctrl+Page Up            Scroll left one page
        Ctrl+Page Down          Scroll right one page
        Shift+(any)             Select text

Numeric Field Tasks:

        Page Up                 Increase value
        Page Down               Decrease value

Hidden List Field Tasks:

        Alt+down arrow          Display hidden list

Scrollable List Tasks:

        Home                    Select first item in list
        End                     Select last item in list
        F7 or Page Up           Scroll up one page
        F8 or Page Down         Scroll down one page
        Ctrl+Page Up            Scroll left one page
        Ctrl+Page Down          Scroll right one page

Notebook Tasks:

        Alt+up arrow            Move to notebook tab
        Alt+down arrow          Move to notebook page

    when selected field is not an input field:

        Alt+Page Up             Go to previous page in notebook
        Alt+Page Down           Go to next page in notebook

    when selected field is not an input field or scrollable list:

        Home                    Go to first page in notebook
        End                     Go to last page in notebook
        Page up                 Go to previous page in notebook
        Page down               Go to next page in notebook

Notebook Tab Tasks:

        Space Bar               Display the selected page

DOS Session Tasks:

        Ctrl+Alt+PrtSc          Release parallel port
                                This can be used to avoid a SYS1799 error when
                                attempting to run multiple copies of a DOS
                                application which uses a dongle (hardware
                                security key) on the parallel port.

Files:

BootDisk_2-1_1993-07-30.zip
(8 KB)
caosw108.zip
(120 KB)
cfgs_11.zip
(4.9 KB)
cip.zip
(480 KB)
cnfgsort.zip
(2.6 KB)
CompuServePPP_1995-04-23.zip
(1.6 KB)
Describe5_Tips_2002-09-08.zip
(13 KB)
DualStor_Tips_2.zip
(6.5 KB)
except.zip
(42 KB)
FAQ_Elm_1-02.zip
(2.6 KB)
HowPatchFreeelance_OS2_2-0_1992-05-20.zip
(912 Bytes)
hpfs.zip
(64 KB)
iguide.zip
(63 KB)
iguideps.zip
(150 KB)
iguidetx.zip
(160 KB)
jmos2_10.zip
(59 KB)
joestips.zip
(210 KB)
MacarloWarp4Tips_1998-02-24_pt.zip
(1.1 MB)
MasterOS2WarpUpdateList_1997-05-09.zip
(30 KB)
netgear.zip
(3.9 KB)
OS2_2-0_InstallFix_1992-04-21.zip
(1.4 KB)
os2_com.zip
(52 KB)
os2_mou.zip
(56 KB)
os2looks.zip
(86 KB)
os2pdp.zip
(2.6 MB)
os2pro.zip
(31 KB)
ppphang.zip
(10 KB)
pppinfo.zip
(13 KB)
rcd_1000.zip
(2 KB)
revsc4r3.zip
(1.3 KB)
settings.zip
(4.1 KB)
ShareCD_1993-02-24.zip
(1.4 KB)
t_3401.zip
(1.9 KB)
tcpbtdsk.zip
(5.5 KB)
trapinf.zip
(28 KB)
unixcdr.zip
(1.8 KB)
untiecom.zip
(1.2 KB)
VoiceTypeTips_de.zip
(6.7 KB)
warpslip.zip
(1.8 MB)
win32s.zip
(9.9 KB)
wpsguide.zip
(64 KB)
wsonw4.zip
(910 KB)